@decaf-ts/ui-decorators 0.20.7 → 0.20.8

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 (469) hide show
  1. package/dist/ui-decorators.cjs +2 -1059
  2. package/dist/ui-decorators.cjs.map +1 -0
  3. package/dist/ui-decorators.js +2 -1090
  4. package/dist/ui-decorators.js.map +1 -0
  5. package/lib/cjs/dashboard/constants.cjs +2 -2
  6. package/lib/cjs/dashboard/constants.cjs.map +1 -0
  7. package/lib/cjs/dashboard/decorators.cjs +2 -2
  8. package/lib/cjs/dashboard/decorators.cjs.map +1 -0
  9. package/lib/cjs/dashboard/index.cjs +2 -2
  10. package/lib/cjs/dashboard/index.cjs.map +1 -0
  11. package/lib/cjs/dashboard/reader.cjs +2 -2
  12. package/lib/cjs/dashboard/reader.cjs.map +1 -0
  13. package/lib/cjs/dashboard/registry.cjs +2 -2
  14. package/lib/cjs/dashboard/registry.cjs.map +1 -0
  15. package/lib/cjs/dashboard/types.cjs +2 -2
  16. package/lib/cjs/dashboard/types.cjs.map +1 -0
  17. package/lib/cjs/graph/GraphExecutionStateMapper.cjs +2 -2
  18. package/lib/cjs/graph/GraphExecutionStateMapper.cjs.map +1 -0
  19. package/lib/cjs/graph/GraphResolution.cjs +2 -2
  20. package/lib/cjs/graph/GraphResolution.cjs.map +1 -0
  21. package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs +2 -2
  22. package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs.map +1 -0
  23. package/lib/cjs/graph/catalog/GraphCredentialReference.cjs +2 -2
  24. package/lib/cjs/graph/catalog/GraphCredentialReference.cjs.map +1 -0
  25. package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs +2 -2
  26. package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs.map +1 -0
  27. package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs +2 -2
  28. package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs.map +1 -0
  29. package/lib/cjs/graph/catalog/GraphIconReference.cjs +2 -2
  30. package/lib/cjs/graph/catalog/GraphIconReference.cjs.map +1 -0
  31. package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs +11 -2
  32. package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs.map +1 -0
  33. package/lib/cjs/graph/catalog/GraphNodeCapability.cjs +2 -2
  34. package/lib/cjs/graph/catalog/GraphNodeCapability.cjs.map +1 -0
  35. package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs +2 -2
  36. package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs.map +1 -0
  37. package/lib/cjs/graph/catalog/GraphNodeManifest.cjs +2 -2
  38. package/lib/cjs/graph/catalog/GraphNodeManifest.cjs.map +1 -0
  39. package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs +2 -2
  40. package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs.map +1 -0
  41. package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs +2 -2
  42. package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs.map +1 -0
  43. package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs +2 -2
  44. package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs.map +1 -0
  45. package/lib/cjs/graph/catalog/GraphParameterBase.cjs +2 -2
  46. package/lib/cjs/graph/catalog/GraphParameterBase.cjs.map +1 -0
  47. package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs +2 -2
  48. package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs.map +1 -0
  49. package/lib/cjs/graph/catalog/GraphParameterOption.cjs +2 -2
  50. package/lib/cjs/graph/catalog/GraphParameterOption.cjs.map +1 -0
  51. package/lib/cjs/graph/catalog/GraphParameterValidation.cjs +2 -2
  52. package/lib/cjs/graph/catalog/GraphParameterValidation.cjs.map +1 -0
  53. package/lib/cjs/graph/catalog/GraphPortManifest.cjs +2 -2
  54. package/lib/cjs/graph/catalog/GraphPortManifest.cjs.map +1 -0
  55. package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs +2 -2
  56. package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs.map +1 -0
  57. package/lib/cjs/graph/catalog/GraphValueSchema.cjs +2 -2
  58. package/lib/cjs/graph/catalog/GraphValueSchema.cjs.map +1 -0
  59. package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs +2 -2
  60. package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs.map +1 -0
  61. package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs +2 -2
  62. package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs.map +1 -0
  63. package/lib/cjs/graph/catalog/index.cjs +2 -2
  64. package/lib/cjs/graph/catalog/index.cjs.map +1 -0
  65. package/lib/cjs/graph/constants.cjs +76 -11
  66. package/lib/cjs/graph/constants.cjs.map +1 -0
  67. package/lib/cjs/graph/decorators.cjs +2 -2
  68. package/lib/cjs/graph/decorators.cjs.map +1 -0
  69. package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs +2 -2
  70. package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs.map +1 -0
  71. package/lib/cjs/graph/document/GraphEdgeInstance.cjs +2 -2
  72. package/lib/cjs/graph/document/GraphEdgeInstance.cjs.map +1 -0
  73. package/lib/cjs/graph/document/GraphEndpoint.cjs +2 -2
  74. package/lib/cjs/graph/document/GraphEndpoint.cjs.map +1 -0
  75. package/lib/cjs/graph/document/GraphJsonValue.cjs +2 -2
  76. package/lib/cjs/graph/document/GraphJsonValue.cjs.map +1 -0
  77. package/lib/cjs/graph/document/GraphLoopConfiguration.cjs +2 -2
  78. package/lib/cjs/graph/document/GraphLoopConfiguration.cjs.map +1 -0
  79. package/lib/cjs/graph/document/GraphNodeBinding.cjs +2 -2
  80. package/lib/cjs/graph/document/GraphNodeBinding.cjs.map +1 -0
  81. package/lib/cjs/graph/document/GraphNodeInstance.cjs +2 -2
  82. package/lib/cjs/graph/document/GraphNodeInstance.cjs.map +1 -0
  83. package/lib/cjs/graph/document/GraphWorkflowDocument.cjs +2 -2
  84. package/lib/cjs/graph/document/GraphWorkflowDocument.cjs.map +1 -0
  85. package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs +2 -2
  86. package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs.map +1 -0
  87. package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs +2 -2
  88. package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs.map +1 -0
  89. package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs +2 -2
  90. package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs.map +1 -0
  91. package/lib/cjs/graph/document/GraphWorkflowUiState.cjs +2 -2
  92. package/lib/cjs/graph/document/GraphWorkflowUiState.cjs.map +1 -0
  93. package/lib/cjs/graph/document/index.cjs +2 -2
  94. package/lib/cjs/graph/document/index.cjs.map +1 -0
  95. package/lib/cjs/graph/index.cjs +2 -2
  96. package/lib/cjs/graph/index.cjs.map +1 -0
  97. package/lib/cjs/graph/nodes/agents/agent.cjs +2 -2
  98. package/lib/cjs/graph/nodes/agents/agent.cjs.map +1 -0
  99. package/lib/cjs/graph/nodes/base.cjs +2 -2
  100. package/lib/cjs/graph/nodes/base.cjs.map +1 -0
  101. package/lib/cjs/graph/nodes/boundary/input-value.cjs +2 -2
  102. package/lib/cjs/graph/nodes/boundary/input-value.cjs.map +1 -0
  103. package/lib/cjs/graph/nodes/category-styles.cjs +2 -2
  104. package/lib/cjs/graph/nodes/category-styles.cjs.map +1 -0
  105. package/lib/cjs/graph/nodes/flow-control/break.cjs +3 -3
  106. package/lib/cjs/graph/nodes/flow-control/break.cjs.map +1 -0
  107. package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs +3 -3
  108. package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs.map +1 -0
  109. package/lib/cjs/graph/nodes/flow-control/human-approval.cjs +3 -3
  110. package/lib/cjs/graph/nodes/flow-control/human-approval.cjs.map +1 -0
  111. package/lib/cjs/graph/nodes/flow-control/if.cjs +2 -2
  112. package/lib/cjs/graph/nodes/flow-control/if.cjs.map +1 -0
  113. package/lib/cjs/graph/nodes/flow-control/parallel.cjs +3 -3
  114. package/lib/cjs/graph/nodes/flow-control/parallel.cjs.map +1 -0
  115. package/lib/cjs/graph/nodes/flow-control/switch.cjs +12 -7
  116. package/lib/cjs/graph/nodes/flow-control/switch.cjs.map +1 -0
  117. package/lib/cjs/graph/nodes/index.cjs +2 -2
  118. package/lib/cjs/graph/nodes/index.cjs.map +1 -0
  119. package/lib/cjs/graph/nodes/loops/foreach.cjs +2 -2
  120. package/lib/cjs/graph/nodes/loops/foreach.cjs.map +1 -0
  121. package/lib/cjs/graph/nodes/loops/until.cjs +3 -3
  122. package/lib/cjs/graph/nodes/loops/until.cjs.map +1 -0
  123. package/lib/cjs/graph/nodes/loops/while.cjs +3 -3
  124. package/lib/cjs/graph/nodes/loops/while.cjs.map +1 -0
  125. package/lib/cjs/graph/nodes/manifests.cjs +17 -13
  126. package/lib/cjs/graph/nodes/manifests.cjs.map +1 -0
  127. package/lib/cjs/graph/nodes/triggers/chat.cjs +3 -3
  128. package/lib/cjs/graph/nodes/triggers/chat.cjs.map +1 -0
  129. package/lib/cjs/graph/nodes/triggers/event.cjs +3 -3
  130. package/lib/cjs/graph/nodes/triggers/event.cjs.map +1 -0
  131. package/lib/cjs/graph/nodes/triggers/form.cjs +3 -3
  132. package/lib/cjs/graph/nodes/triggers/form.cjs.map +1 -0
  133. package/lib/cjs/graph/nodes/triggers/manual.cjs +2 -2
  134. package/lib/cjs/graph/nodes/triggers/manual.cjs.map +1 -0
  135. package/lib/cjs/graph/nodes/triggers/schedule.cjs +3 -3
  136. package/lib/cjs/graph/nodes/triggers/schedule.cjs.map +1 -0
  137. package/lib/cjs/graph/nodes/triggers/webhook.cjs +3 -3
  138. package/lib/cjs/graph/nodes/triggers/webhook.cjs.map +1 -0
  139. package/lib/cjs/graph/nodes/utility/code.cjs +3 -3
  140. package/lib/cjs/graph/nodes/utility/code.cjs.map +1 -0
  141. package/lib/cjs/graph/nodes/utility/delay.cjs +3 -3
  142. package/lib/cjs/graph/nodes/utility/delay.cjs.map +1 -0
  143. package/lib/cjs/graph/nodes/utility/log.cjs +3 -3
  144. package/lib/cjs/graph/nodes/utility/log.cjs.map +1 -0
  145. package/lib/cjs/graph/nodes/utility/map.cjs +3 -3
  146. package/lib/cjs/graph/nodes/utility/map.cjs.map +1 -0
  147. package/lib/cjs/graph/nodes/utility/merge.cjs +2 -2
  148. package/lib/cjs/graph/nodes/utility/merge.cjs.map +1 -0
  149. package/lib/cjs/graph/nodes/utility/return.cjs +3 -3
  150. package/lib/cjs/graph/nodes/utility/return.cjs.map +1 -0
  151. package/lib/cjs/graph/nodes/utility/utility-log.cjs +3 -3
  152. package/lib/cjs/graph/nodes/utility/utility-log.cjs.map +1 -0
  153. package/lib/cjs/graph/overrides/Metadata.cjs +2 -2
  154. package/lib/cjs/graph/overrides/Metadata.cjs.map +1 -0
  155. package/lib/cjs/graph/overrides/Rendering.cjs +2 -2
  156. package/lib/cjs/graph/overrides/Rendering.cjs.map +1 -0
  157. package/lib/cjs/graph/overrides/index.cjs +2 -2
  158. package/lib/cjs/graph/overrides/index.cjs.map +1 -0
  159. package/lib/cjs/graph/overrides/overrides.cjs +2 -2
  160. package/lib/cjs/graph/overrides/overrides.cjs.map +1 -0
  161. package/lib/cjs/graph/reader.cjs +5 -2
  162. package/lib/cjs/graph/reader.cjs.map +1 -0
  163. package/lib/cjs/graph/registry.cjs +2 -2
  164. package/lib/cjs/graph/registry.cjs.map +1 -0
  165. package/lib/cjs/graph/snapshot.cjs +2 -2
  166. package/lib/cjs/graph/snapshot.cjs.map +1 -0
  167. package/lib/cjs/graph/types.cjs +2 -2
  168. package/lib/cjs/graph/types.cjs.map +1 -0
  169. package/lib/cjs/index.cjs +4 -4
  170. package/lib/cjs/index.cjs.map +1 -0
  171. package/lib/cjs/model/Renderable.cjs +2 -2
  172. package/lib/cjs/model/Renderable.cjs.map +1 -0
  173. package/lib/cjs/model/decorators.cjs +2 -2
  174. package/lib/cjs/model/decorators.cjs.map +1 -0
  175. package/lib/cjs/model/index.cjs +2 -2
  176. package/lib/cjs/model/index.cjs.map +1 -0
  177. package/lib/cjs/model/model.cjs +2 -2
  178. package/lib/cjs/model/model.cjs.map +1 -0
  179. package/lib/cjs/model/overrides.cjs +2 -2
  180. package/lib/cjs/model/overrides.cjs.map +1 -0
  181. package/lib/cjs/overrides/ModelBuilderExtensions.cjs +2 -2
  182. package/lib/cjs/overrides/ModelBuilderExtensions.cjs.map +1 -0
  183. package/lib/cjs/overrides/index.cjs +2 -2
  184. package/lib/cjs/overrides/index.cjs.map +1 -0
  185. package/lib/cjs/ui/DecafComponent.cjs +2 -2
  186. package/lib/cjs/ui/DecafComponent.cjs.map +1 -0
  187. package/lib/cjs/ui/DecafEventHandler.cjs +2 -2
  188. package/lib/cjs/ui/DecafEventHandler.cjs.map +1 -0
  189. package/lib/cjs/ui/DecafTranslateService.cjs +2 -2
  190. package/lib/cjs/ui/DecafTranslateService.cjs.map +1 -0
  191. package/lib/cjs/ui/Rendering.cjs +2 -2
  192. package/lib/cjs/ui/Rendering.cjs.map +1 -0
  193. package/lib/cjs/ui/UIValidator.cjs +2 -2
  194. package/lib/cjs/ui/UIValidator.cjs.map +1 -0
  195. package/lib/cjs/ui/constants.cjs +2 -2
  196. package/lib/cjs/ui/constants.cjs.map +1 -0
  197. package/lib/cjs/ui/decorators.cjs +2 -2
  198. package/lib/cjs/ui/decorators.cjs.map +1 -0
  199. package/lib/cjs/ui/errors.cjs +2 -2
  200. package/lib/cjs/ui/errors.cjs.map +1 -0
  201. package/lib/cjs/ui/index.cjs +2 -2
  202. package/lib/cjs/ui/index.cjs.map +1 -0
  203. package/lib/cjs/ui/interfaces/IDecafModal.cjs +2 -2
  204. package/lib/cjs/ui/interfaces/IDecafModal.cjs.map +1 -0
  205. package/lib/cjs/ui/interfaces/IDecafRouter.cjs +2 -2
  206. package/lib/cjs/ui/interfaces/IDecafRouter.cjs.map +1 -0
  207. package/lib/cjs/ui/interfaces/IDecafSpinner.cjs +2 -2
  208. package/lib/cjs/ui/interfaces/IDecafSpinner.cjs.map +1 -0
  209. package/lib/cjs/ui/interfaces/IDecafToast.cjs +2 -2
  210. package/lib/cjs/ui/interfaces/IDecafToast.cjs.map +1 -0
  211. package/lib/cjs/ui/interfaces/index.cjs +2 -2
  212. package/lib/cjs/ui/interfaces/index.cjs.map +1 -0
  213. package/lib/cjs/ui/overrides.cjs +2 -2
  214. package/lib/cjs/ui/overrides.cjs.map +1 -0
  215. package/lib/cjs/ui/types.cjs +2 -2
  216. package/lib/cjs/ui/types.cjs.map +1 -0
  217. package/lib/cjs/ui/utils.cjs +2 -2
  218. package/lib/cjs/ui/utils.cjs.map +1 -0
  219. package/lib/cjs/ui/validator.cjs +2 -2
  220. package/lib/cjs/ui/validator.cjs.map +1 -0
  221. package/lib/cjs/user-requests/UserRequestHandler.cjs +2 -2
  222. package/lib/cjs/user-requests/UserRequestHandler.cjs.map +1 -0
  223. package/lib/cjs/user-requests/constants.cjs +2 -2
  224. package/lib/cjs/user-requests/constants.cjs.map +1 -0
  225. package/lib/cjs/user-requests/decorators.cjs +2 -2
  226. package/lib/cjs/user-requests/decorators.cjs.map +1 -0
  227. package/lib/cjs/user-requests/errors.cjs +2 -2
  228. package/lib/cjs/user-requests/errors.cjs.map +1 -0
  229. package/lib/cjs/user-requests/index.cjs +2 -2
  230. package/lib/cjs/user-requests/index.cjs.map +1 -0
  231. package/lib/cjs/user-requests/types.cjs +2 -2
  232. package/lib/cjs/user-requests/types.cjs.map +1 -0
  233. package/lib/esm/dashboard/constants.js +1 -1
  234. package/lib/esm/dashboard/constants.js.map +1 -0
  235. package/lib/esm/dashboard/decorators.js +1 -1
  236. package/lib/esm/dashboard/decorators.js.map +1 -0
  237. package/lib/esm/dashboard/index.js +1 -1
  238. package/lib/esm/dashboard/index.js.map +1 -0
  239. package/lib/esm/dashboard/reader.js +1 -1
  240. package/lib/esm/dashboard/reader.js.map +1 -0
  241. package/lib/esm/dashboard/registry.js +1 -1
  242. package/lib/esm/dashboard/registry.js.map +1 -0
  243. package/lib/esm/dashboard/types.js +1 -1
  244. package/lib/esm/dashboard/types.js.map +1 -0
  245. package/lib/esm/graph/GraphExecutionStateMapper.js +1 -1
  246. package/lib/esm/graph/GraphExecutionStateMapper.js.map +1 -0
  247. package/lib/esm/graph/GraphResolution.js +1 -1
  248. package/lib/esm/graph/GraphResolution.js.map +1 -0
  249. package/lib/esm/graph/catalog/GraphConnectionPolicy.js +1 -1
  250. package/lib/esm/graph/catalog/GraphConnectionPolicy.js.map +1 -0
  251. package/lib/esm/graph/catalog/GraphCredentialReference.js +1 -1
  252. package/lib/esm/graph/catalog/GraphCredentialReference.js.map +1 -0
  253. package/lib/esm/graph/catalog/GraphCredentialRequirement.js +1 -1
  254. package/lib/esm/graph/catalog/GraphCredentialRequirement.js.map +1 -0
  255. package/lib/esm/graph/catalog/GraphDynamicPortRule.js +1 -1
  256. package/lib/esm/graph/catalog/GraphDynamicPortRule.js.map +1 -0
  257. package/lib/esm/graph/catalog/GraphIconReference.js +1 -1
  258. package/lib/esm/graph/catalog/GraphIconReference.js.map +1 -0
  259. package/lib/esm/graph/catalog/GraphManifestCompiler.js +10 -1
  260. package/lib/esm/graph/catalog/GraphManifestCompiler.js.map +1 -0
  261. package/lib/esm/graph/catalog/GraphNodeCapability.js +1 -1
  262. package/lib/esm/graph/catalog/GraphNodeCapability.js.map +1 -0
  263. package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js +1 -1
  264. package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js.map +1 -0
  265. package/lib/esm/graph/catalog/GraphNodeManifest.js +1 -1
  266. package/lib/esm/graph/catalog/GraphNodeManifest.js.map +1 -0
  267. package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js +1 -1
  268. package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js.map +1 -0
  269. package/lib/esm/graph/catalog/GraphNodeMethodManifest.js +1 -1
  270. package/lib/esm/graph/catalog/GraphNodeMethodManifest.js.map +1 -0
  271. package/lib/esm/graph/catalog/GraphNodePolicyManifest.js +1 -1
  272. package/lib/esm/graph/catalog/GraphNodePolicyManifest.js.map +1 -0
  273. package/lib/esm/graph/catalog/GraphParameterBase.js +1 -1
  274. package/lib/esm/graph/catalog/GraphParameterBase.js.map +1 -0
  275. package/lib/esm/graph/catalog/GraphParameterDefinition.js +1 -1
  276. package/lib/esm/graph/catalog/GraphParameterDefinition.js.map +1 -0
  277. package/lib/esm/graph/catalog/GraphParameterOption.js +1 -1
  278. package/lib/esm/graph/catalog/GraphParameterOption.js.map +1 -0
  279. package/lib/esm/graph/catalog/GraphParameterValidation.js +1 -1
  280. package/lib/esm/graph/catalog/GraphParameterValidation.js.map +1 -0
  281. package/lib/esm/graph/catalog/GraphPortManifest.js +1 -1
  282. package/lib/esm/graph/catalog/GraphPortManifest.js.map +1 -0
  283. package/lib/esm/graph/catalog/GraphResourceLocatorMode.js +1 -1
  284. package/lib/esm/graph/catalog/GraphResourceLocatorMode.js.map +1 -0
  285. package/lib/esm/graph/catalog/GraphValueSchema.js +1 -1
  286. package/lib/esm/graph/catalog/GraphValueSchema.js.map +1 -0
  287. package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js +1 -1
  288. package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js.map +1 -0
  289. package/lib/esm/graph/catalog/GraphVisibilityExpression.js +1 -1
  290. package/lib/esm/graph/catalog/GraphVisibilityExpression.js.map +1 -0
  291. package/lib/esm/graph/catalog/index.js +1 -1
  292. package/lib/esm/graph/catalog/index.js.map +1 -0
  293. package/lib/esm/graph/constants.js +73 -9
  294. package/lib/esm/graph/constants.js.map +1 -0
  295. package/lib/esm/graph/decorators.js +1 -1
  296. package/lib/esm/graph/decorators.js.map +1 -0
  297. package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js +1 -1
  298. package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js.map +1 -0
  299. package/lib/esm/graph/document/GraphEdgeInstance.js +1 -1
  300. package/lib/esm/graph/document/GraphEdgeInstance.js.map +1 -0
  301. package/lib/esm/graph/document/GraphEndpoint.js +1 -1
  302. package/lib/esm/graph/document/GraphEndpoint.js.map +1 -0
  303. package/lib/esm/graph/document/GraphJsonValue.js +1 -1
  304. package/lib/esm/graph/document/GraphJsonValue.js.map +1 -0
  305. package/lib/esm/graph/document/GraphLoopConfiguration.js +1 -1
  306. package/lib/esm/graph/document/GraphLoopConfiguration.js.map +1 -0
  307. package/lib/esm/graph/document/GraphNodeBinding.js +1 -1
  308. package/lib/esm/graph/document/GraphNodeBinding.js.map +1 -0
  309. package/lib/esm/graph/document/GraphNodeInstance.js +1 -1
  310. package/lib/esm/graph/document/GraphNodeInstance.js.map +1 -0
  311. package/lib/esm/graph/document/GraphWorkflowDocument.js +1 -1
  312. package/lib/esm/graph/document/GraphWorkflowDocument.js.map +1 -0
  313. package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js +1 -1
  314. package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js.map +1 -0
  315. package/lib/esm/graph/document/GraphWorkflowDocumentReader.js +1 -1
  316. package/lib/esm/graph/document/GraphWorkflowDocumentReader.js.map +1 -0
  317. package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js +1 -1
  318. package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js.map +1 -0
  319. package/lib/esm/graph/document/GraphWorkflowUiState.js +1 -1
  320. package/lib/esm/graph/document/GraphWorkflowUiState.js.map +1 -0
  321. package/lib/esm/graph/document/index.js +1 -1
  322. package/lib/esm/graph/document/index.js.map +1 -0
  323. package/lib/esm/graph/index.js +1 -1
  324. package/lib/esm/graph/index.js.map +1 -0
  325. package/lib/esm/graph/nodes/agents/agent.js +1 -1
  326. package/lib/esm/graph/nodes/agents/agent.js.map +1 -0
  327. package/lib/esm/graph/nodes/base.js +1 -1
  328. package/lib/esm/graph/nodes/base.js.map +1 -0
  329. package/lib/esm/graph/nodes/boundary/input-value.js +1 -1
  330. package/lib/esm/graph/nodes/boundary/input-value.js.map +1 -0
  331. package/lib/esm/graph/nodes/category-styles.js +1 -1
  332. package/lib/esm/graph/nodes/category-styles.js.map +1 -0
  333. package/lib/esm/graph/nodes/flow-control/break.js +2 -2
  334. package/lib/esm/graph/nodes/flow-control/break.js.map +1 -0
  335. package/lib/esm/graph/nodes/flow-control/error-boundary.js +2 -2
  336. package/lib/esm/graph/nodes/flow-control/error-boundary.js.map +1 -0
  337. package/lib/esm/graph/nodes/flow-control/human-approval.js +2 -2
  338. package/lib/esm/graph/nodes/flow-control/human-approval.js.map +1 -0
  339. package/lib/esm/graph/nodes/flow-control/if.js +1 -1
  340. package/lib/esm/graph/nodes/flow-control/if.js.map +1 -0
  341. package/lib/esm/graph/nodes/flow-control/parallel.js +2 -2
  342. package/lib/esm/graph/nodes/flow-control/parallel.js.map +1 -0
  343. package/lib/esm/graph/nodes/flow-control/switch.js +12 -7
  344. package/lib/esm/graph/nodes/flow-control/switch.js.map +1 -0
  345. package/lib/esm/graph/nodes/index.js +1 -1
  346. package/lib/esm/graph/nodes/index.js.map +1 -0
  347. package/lib/esm/graph/nodes/loops/foreach.js +1 -1
  348. package/lib/esm/graph/nodes/loops/foreach.js.map +1 -0
  349. package/lib/esm/graph/nodes/loops/until.js +2 -2
  350. package/lib/esm/graph/nodes/loops/until.js.map +1 -0
  351. package/lib/esm/graph/nodes/loops/while.js +2 -2
  352. package/lib/esm/graph/nodes/loops/while.js.map +1 -0
  353. package/lib/esm/graph/nodes/manifests.js +16 -12
  354. package/lib/esm/graph/nodes/manifests.js.map +1 -0
  355. package/lib/esm/graph/nodes/triggers/chat.js +2 -2
  356. package/lib/esm/graph/nodes/triggers/chat.js.map +1 -0
  357. package/lib/esm/graph/nodes/triggers/event.js +2 -2
  358. package/lib/esm/graph/nodes/triggers/event.js.map +1 -0
  359. package/lib/esm/graph/nodes/triggers/form.js +2 -2
  360. package/lib/esm/graph/nodes/triggers/form.js.map +1 -0
  361. package/lib/esm/graph/nodes/triggers/manual.js +1 -1
  362. package/lib/esm/graph/nodes/triggers/manual.js.map +1 -0
  363. package/lib/esm/graph/nodes/triggers/schedule.js +2 -2
  364. package/lib/esm/graph/nodes/triggers/schedule.js.map +1 -0
  365. package/lib/esm/graph/nodes/triggers/webhook.js +2 -2
  366. package/lib/esm/graph/nodes/triggers/webhook.js.map +1 -0
  367. package/lib/esm/graph/nodes/utility/code.js +2 -2
  368. package/lib/esm/graph/nodes/utility/code.js.map +1 -0
  369. package/lib/esm/graph/nodes/utility/delay.js +2 -2
  370. package/lib/esm/graph/nodes/utility/delay.js.map +1 -0
  371. package/lib/esm/graph/nodes/utility/log.js +2 -2
  372. package/lib/esm/graph/nodes/utility/log.js.map +1 -0
  373. package/lib/esm/graph/nodes/utility/map.js +2 -2
  374. package/lib/esm/graph/nodes/utility/map.js.map +1 -0
  375. package/lib/esm/graph/nodes/utility/merge.js +1 -1
  376. package/lib/esm/graph/nodes/utility/merge.js.map +1 -0
  377. package/lib/esm/graph/nodes/utility/return.js +2 -2
  378. package/lib/esm/graph/nodes/utility/return.js.map +1 -0
  379. package/lib/esm/graph/nodes/utility/utility-log.js +2 -2
  380. package/lib/esm/graph/nodes/utility/utility-log.js.map +1 -0
  381. package/lib/esm/graph/overrides/Metadata.js +1 -1
  382. package/lib/esm/graph/overrides/Metadata.js.map +1 -0
  383. package/lib/esm/graph/overrides/Rendering.js +1 -1
  384. package/lib/esm/graph/overrides/Rendering.js.map +1 -0
  385. package/lib/esm/graph/overrides/index.js +1 -1
  386. package/lib/esm/graph/overrides/index.js.map +1 -0
  387. package/lib/esm/graph/overrides/overrides.js +1 -1
  388. package/lib/esm/graph/overrides/overrides.js.map +1 -0
  389. package/lib/esm/graph/reader.js +4 -1
  390. package/lib/esm/graph/reader.js.map +1 -0
  391. package/lib/esm/graph/registry.js +1 -1
  392. package/lib/esm/graph/registry.js.map +1 -0
  393. package/lib/esm/graph/snapshot.js +1 -1
  394. package/lib/esm/graph/snapshot.js.map +1 -0
  395. package/lib/esm/graph/types.js +1 -1
  396. package/lib/esm/graph/types.js.map +1 -0
  397. package/lib/esm/index.js +3 -3
  398. package/lib/esm/index.js.map +1 -0
  399. package/lib/esm/model/Renderable.js +1 -1
  400. package/lib/esm/model/Renderable.js.map +1 -0
  401. package/lib/esm/model/decorators.js +1 -1
  402. package/lib/esm/model/decorators.js.map +1 -0
  403. package/lib/esm/model/index.js +1 -1
  404. package/lib/esm/model/index.js.map +1 -0
  405. package/lib/esm/model/model.js +1 -1
  406. package/lib/esm/model/model.js.map +1 -0
  407. package/lib/esm/model/overrides.js +1 -1
  408. package/lib/esm/model/overrides.js.map +1 -0
  409. package/lib/esm/overrides/ModelBuilderExtensions.js +1 -1
  410. package/lib/esm/overrides/ModelBuilderExtensions.js.map +1 -0
  411. package/lib/esm/overrides/index.js +1 -1
  412. package/lib/esm/overrides/index.js.map +1 -0
  413. package/lib/esm/ui/DecafComponent.js +1 -1
  414. package/lib/esm/ui/DecafComponent.js.map +1 -0
  415. package/lib/esm/ui/DecafEventHandler.js +1 -1
  416. package/lib/esm/ui/DecafEventHandler.js.map +1 -0
  417. package/lib/esm/ui/DecafTranslateService.js +1 -1
  418. package/lib/esm/ui/DecafTranslateService.js.map +1 -0
  419. package/lib/esm/ui/Rendering.js +1 -1
  420. package/lib/esm/ui/Rendering.js.map +1 -0
  421. package/lib/esm/ui/UIValidator.js +1 -1
  422. package/lib/esm/ui/UIValidator.js.map +1 -0
  423. package/lib/esm/ui/constants.js +1 -1
  424. package/lib/esm/ui/constants.js.map +1 -0
  425. package/lib/esm/ui/decorators.js +1 -1
  426. package/lib/esm/ui/decorators.js.map +1 -0
  427. package/lib/esm/ui/errors.js +1 -1
  428. package/lib/esm/ui/errors.js.map +1 -0
  429. package/lib/esm/ui/index.js +1 -1
  430. package/lib/esm/ui/index.js.map +1 -0
  431. package/lib/esm/ui/interfaces/IDecafModal.js +1 -1
  432. package/lib/esm/ui/interfaces/IDecafModal.js.map +1 -0
  433. package/lib/esm/ui/interfaces/IDecafRouter.js +1 -1
  434. package/lib/esm/ui/interfaces/IDecafRouter.js.map +1 -0
  435. package/lib/esm/ui/interfaces/IDecafSpinner.js +1 -1
  436. package/lib/esm/ui/interfaces/IDecafSpinner.js.map +1 -0
  437. package/lib/esm/ui/interfaces/IDecafToast.js +1 -1
  438. package/lib/esm/ui/interfaces/IDecafToast.js.map +1 -0
  439. package/lib/esm/ui/interfaces/index.js +1 -1
  440. package/lib/esm/ui/interfaces/index.js.map +1 -0
  441. package/lib/esm/ui/overrides.js +1 -1
  442. package/lib/esm/ui/overrides.js.map +1 -0
  443. package/lib/esm/ui/types.js +1 -1
  444. package/lib/esm/ui/types.js.map +1 -0
  445. package/lib/esm/ui/utils.js +1 -1
  446. package/lib/esm/ui/utils.js.map +1 -0
  447. package/lib/esm/ui/validator.js +1 -1
  448. package/lib/esm/ui/validator.js.map +1 -0
  449. package/lib/esm/user-requests/UserRequestHandler.js +1 -1
  450. package/lib/esm/user-requests/UserRequestHandler.js.map +1 -0
  451. package/lib/esm/user-requests/constants.js +1 -1
  452. package/lib/esm/user-requests/constants.js.map +1 -0
  453. package/lib/esm/user-requests/decorators.js +1 -1
  454. package/lib/esm/user-requests/decorators.js.map +1 -0
  455. package/lib/esm/user-requests/errors.js +1 -1
  456. package/lib/esm/user-requests/errors.js.map +1 -0
  457. package/lib/esm/user-requests/index.js +1 -1
  458. package/lib/esm/user-requests/index.js.map +1 -0
  459. package/lib/esm/user-requests/types.js +1 -1
  460. package/lib/esm/user-requests/types.js.map +1 -0
  461. package/lib/types/graph/catalog/GraphNodeDisplayManifest.d.cts +17 -0
  462. package/lib/types/graph/catalog/GraphNodeDisplayManifest.d.mts +17 -0
  463. package/lib/types/graph/constants.d.cts +101 -6
  464. package/lib/types/graph/constants.d.mts +101 -6
  465. package/lib/types/graph/document/GraphWorkflowUiState.d.cts +8 -0
  466. package/lib/types/graph/document/GraphWorkflowUiState.d.mts +8 -0
  467. package/lib/types/index.d.cts +2 -2
  468. package/lib/types/index.d.mts +2 -2
  469. package/package.json +3 -1
@@ -579,5 +579,5 @@ exports.RenderingEngine = RenderingEngine;
579
579
  // },
580
580
  // })
581
581
  // .apply();
582
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VpL1JlbmRlcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLE1BQU0sRUFDTixzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ2xCLHVCQUFvQjtBQWVyQixPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFpQjtBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG1CQUFnQjtBQUMxRCxPQUFPLEVBQWUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUNMLEtBQUssRUFFTCxVQUFVLEVBQ1YsY0FBYyxFQUNkLGNBQWMsR0FFZixNQUFNLGdDQUFnQyxDQUFDO0FBUXhDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0lBQ25DOzs7O09BSUc7YUFDWSxVQUFLLEdBSWhCLEVBQUUsQUFKYyxDQUliO0lBZ0JQLFlBQStCLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBTDlDOztXQUVHO1FBQ08sZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFHckMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUF3QkQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxHQUFXLEVBQUUsU0FBa0IsSUFBSTtRQUMzQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDWixLQUFLLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDM0MsT0FBTyxlQUFl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TyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7O0FBRUgsRUFBRTtBQUNGLDRCQUE0QjtBQUM1QixjQUFjO0FBQ2QsZ0VBQWdFO0FBQ2hFLHFFQUFxRTtBQUNyRSxpQ0FBaUM7QUFDakMsZ0VBQWdFO0FBQ2hFLHNCQUFzQjtBQUN0QiwwQkFBMEI7QUFDMUIsZUFBZTtBQUNmLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQLGNBQWM7QUFDZCxFQUFFO0FBQ0YsbUNBQW1DO0FBQ25DLGNBQWM7QUFDZCw0REFBNEQ7QUFDNUQsMENBQTBDO0FBQzFDLFNBQVM7QUFDVCxPQUFPO0FBQ1AsY0FBYztBQUNkLEVBQUU7QUFDRixrQ0FBa0M7QUFDbEMsY0FBYztBQUNkLHVDQUF1QztBQUN2QyxtRUFBbUU7QUFDbkUsU0FBUztBQUNULE9BQU87QUFDUCxjQUFjO0FBQ2QsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixjQUFjO0FBQ2Qsd0NBQXdDO0FBQ3hDLG1FQUFtRTtBQUNuRSxTQUFTO0FBQ1QsT0FBTztBQUNQLGNBQWM7QUFDZCxFQUFFO0FBQ0YsOEJBQThCO0FBQzlCLGNBQWM7QUFDZCx3Q0FBd0M7QUFDeEMsbUVBQW1FO0FBQ25FLFNBQVM7QUFDVCxPQUFPO0FBQ1AsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRXJyb3IsIE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIEhUTUw1RGF0ZUZvcm1hdCxcbiAgSFRNTDVJbnB1dFR5cGVzLFxuICBVSUtleXMsXG4gIFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGUsXG4gIFZhbGlkYXRhYmxlQnlUeXBlLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIENydWRPcGVyYXRpb25LZXlzLFxuICBEZWNhZlNwaW5uZXJPcHRpb25zLFxuICBEZWNhZlRvYXN0T3B0aW9ucyxcbiAgRmllbGREZWZpbml0aW9uLFxuICBGaWVsZFByb3BlcnRpZXMsXG4gIFVJQ2xhc3NNZXRhZGF0YSxcbiAgVUlFbGVtZW50TWV0YWRhdGEsXG4gIFVJTGlzdEl0ZW1FbGVtZW50TWV0YWRhdGEsXG4gIFVJTGlzdFByb3BNZXRhZGF0YSxcbiAgVUlNb2RlbE1ldGFkYXRhLFxuICBVSVByb3BNZXRhZGF0YSxcbiAgSVBhZ2VkQ29tcG9uZW50UHJvcGVydGllcyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFJlbmRlcmluZ0Vycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBmb3JtYXRCeVR5cGUsIGdlbmVyYXRlVUlNb2RlbElEIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgTW9kZWwsXG4gIE1vZGVsQ29uc3RydWN0b3IsXG4gIFByaW1pdGl2ZXMsXG4gIFJlc2VydmVkTW9kZWxzLFxuICBWYWxpZGF0aW9uS2V5cyxcbiAgVmFsaWRhdGlvbk1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJRGVjYWZNb2RhbCB9IGZyb20gXCIuL2ludGVyZmFjZXMvSURlY2FmTW9kYWxcIjtcbmltcG9ydCB7IERlY2FmQ29tcG9uZW50IH0gZnJvbSBcIi4vRGVjYWZDb21wb25lbnRcIjtcblxuaW1wb3J0IHsgSURlY2FmU3Bpbm5lciB9IGZyb20gXCIuL2ludGVyZmFjZXMvSURlY2FmU3Bpbm5lclwiO1xuaW1wb3J0IHsgSURlY2FmUm91dGVyIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9JRGVjYWZSb3V0ZXJcIjtcbmltcG9ydCB7IElEZWNhZlRvYXN0IH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9JRGVjYWZUb2FzdFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBjbGFzcyBmb3IgcmVuZGVyaW5nIFVJIGNvbXBvbmVudHMgYmFzZWQgb24gbW9kZWwgbWV0YWRhdGEuXG4gKiBAc3VtbWFyeSBUaGUgUmVuZGVyaW5nRW5naW5lIGNsYXNzIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBjb252ZXJ0aW5nIG1vZGVsIG1ldGFkYXRhIGludG8gVUkgZmllbGQgZGVmaW5pdGlvbnMuXG4gKiBJdCBoYW5kbGVzIHRoZSB0cmFuc2xhdGlvbiBvZiBtb2RlbCBwcm9wZXJ0aWVzIHRvIFVJIGVsZW1lbnRzLCBhcHBsaWVzIHZhbGlkYXRpb24gcnVsZXMsIGFuZCBtYW5hZ2VzIGRpZmZlcmVudCByZW5kZXJpbmcgZmxhdm9ycy5cbiAqIFRoaXMgY2xhc3MgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWQgYnkgc3BlY2lmaWMgcmVuZGVyaW5nIGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgcmVuZGVyaW5nIHJlc3VsdCwgZGVmYXVsdHMgdG8gdm9pZFxuICogQHRlbXBsYXRlIFIgVGhlIHR5cGUgb2YgdGhlIGZpZWxkIGRlZmluaXRpb24sIGRlZmF1bHRzIHRvIEZpZWxkRGVmaW5pdGlvbjxUPlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmbGF2b3VyIC0gVGhlIGZsYXZvciBvZiB0aGUgcmVuZGVyaW5nIGVuZ2luZS5cbiAqXG4gKiBAY2xhc3MgUmVuZGVyaW5nRW5naW5lXG4gKi9cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYmFzZSBhYnN0cmFjdGlvbiBmb3IgZGVjYWYgcmVuZGVyaW5nIGVuZ2luZXMsIGhhbmRsaW5nIGVuZ2luZSByZWdpc3RyYXRpb24sXG4gKiBpbml0aWFsaXphdGlvbiwgbW9kZWwtdG8tZmllbGQgdHJhbnNsYXRpb24sIGFuZCBydW50aW1lIHJlbmRlcmluZyBvcmNoZXN0cmF0aW9uLlxuICogSW1wbGVtZW50YXRpb25zIG11c3QgcHJvdmlkZSBpbml0aWFsaXphdGlvbiBhbmQgcmVuZGVyaW5nIGxvZ2ljIHdoaWxlIGxldmVyYWdpbmcgdGhlIHNoYXJlZFxuICogbWV0YWRhdGEtZHJpdmVuIGNvbnZlcnNpb24gdXRpbGl0aWVzIHN1cHBsaWVkIGhlcmUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZW5kZXJpbmdFbmdpbmU8VCA9IHZvaWQsIFIgPSBGaWVsZERlZmluaXRpb248VD4+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDYWNoZSBmb3Igc3RvcmluZyByZW5kZXJpbmcgZW5naW5lIGluc3RhbmNlcyBvciBjb25zdHJ1Y3RvcnMuXG4gICAqIEBwcml2YXRlXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGNhY2hlOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHwgQ29uc3RydWN0b3I8UmVuZGVyaW5nRW5naW5lPHVua25vd24sIHVua25vd24+PlxuICAgIHwgUmVuZGVyaW5nRW5naW5lPHVua25vd24sIHVua25vd24+XG4gID4gPSB7fTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50bHkgYWN0aXZlIHJlbmRlcmluZyBlbmdpbmUuXG4gICAqIEBwcml2YXRlXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGN1cnJlbnQ6XG4gICAgfCBDb25zdHJ1Y3RvcjxSZW5kZXJpbmdFbmdpbmU8dW5rbm93biwgdW5rbm93bj4+XG4gICAgfCBSZW5kZXJpbmdFbmdpbmU8dW5rbm93biwgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZW5kZXJpbmcgZW5naW5lIGhhcyBiZWVuIGluaXRpYWxpemVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZsYXZvdXI6IHN0cmluZykge1xuICAgIFJlbmRlcmluZ0VuZ2luZS5yZWdpc3Rlcih0aGlzKTtcbiAgICBjb25zb2xlLmxvZyhgZGVjYWYncyAke2ZsYXZvdXJ9IHJlbmRlcmluZyBlbmdpbmUgbG9hZGVkYCk7XG4gIH1cblxuICBhYnN0cmFjdCBnZXRNb2RhbDxDIGV4dGVuZHMgRGVjYWZDb21wb25lbnQ8TW9kZWw+PihcbiAgICBjb21wb25lbnQ6IFBhcnRpYWw8Qz4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxJRGVjYWZNb2RhbD47XG5cbiAgYWJzdHJhY3QgZ2V0VG9hc3Qob3B0aW9uczogRGVjYWZUb2FzdE9wdGlvbnMpOiBQcm9taXNlPElEZWNhZlRvYXN0PjtcblxuICBhYnN0cmFjdCBnZXRTcGlubmVyKG9wdGlvbnM6IERlY2FmU3Bpbm5lck9wdGlvbnMpOiBQcm9taXNlPElEZWNhZlNwaW5uZXI+O1xuXG4gIGFic3RyYWN0IHJvdXRlcigpOiBJRGVjYWZSb3V0ZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgcmVuZGVyaW5nIGVuZ2luZS5cbiAgICogQHN1bW1hcnkgQWJzdHJhY3QgbWV0aG9kIHRvIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgZm9yIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIGxvZ2ljLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIGFic3RyYWN0IGluaXRpYWxpemUoLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVHJhbnNsYXRlcyBiZXR3ZWVuIG1vZGVsIHR5cGVzIGFuZCBIVE1MIGlucHV0IHR5cGVzLlxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBtb2RlbCBkYXRhIHR5cGVzIHRvIGFwcHJvcHJpYXRlIEhUTUwgaW5wdXQgdHlwZXMgYW5kIHZpY2UgdmVyc2EuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHRvIHRyYW5zbGF0ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbdG9WaWV3PXRydWVdIC0gRGlyZWN0aW9uIG9mIHRyYW5zbGF0aW9uICh0cnVlIGZvciBtb2RlbCB0byB2aWV3LCBmYWxzZSBmb3IgdmlldyB0byBtb2RlbCkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0cmFuc2xhdGVkIHR5cGUuXG4gICAqL1xuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcsIHRvVmlldzogYm9vbGVhbiA9IHRydWUpOiBzdHJpbmcge1xuICAgIGlmICh0b1ZpZXcpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuU1RSSU5HLm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgICByZXR1cm4gSFRNTDVJbnB1dFR5cGVzLlRFWFQ7XG4gICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuTlVNQkVSLm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgY2FzZSBSZXNlcnZlZE1vZGVscy5CSUdJTlQubmFtZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICAgIHJldHVybiBIVE1MNUlucHV0VHlwZXMuTlVNQkVSO1xuICAgICAgICBjYXNlIFJlc2VydmVkTW9kZWxzLkJPT0xFQU4ubmFtZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICAgIHJldHVybiBIVE1MNUlucHV0VHlwZXMuQ0hFQ0tCT1g7XG4gICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuREFURS5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgICAgcmV0dXJuIEhUTUw1SW5wdXRUeXBlcy5EQVRFO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5TRUxFQ1Q6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRFWFQ6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLkVNQUlMOlxuICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5DT0xPUjpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuUEFTU1dPUkQ6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRFTDpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuVVJMOlxuICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5TRUFSQ0g6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLkhJRERFTjpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuVEVYVEFSRUE6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlJBRElPOlxuICAgICAgICAgIHJldHVybiBSZXNlcnZlZE1vZGVscy5TVFJJTkcubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5OVU1CRVI6XG4gICAgICAgICAgcmV0dXJuIFJlc2VydmVkTW9kZWxzLk5VTUJFUi5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLkNIRUNLQk9YOlxuICAgICAgICAgIHJldHVybiBSZXNlcnZlZE1vZGVscy5CT09MRUFOLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuREFURTpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuREFURVRJTUVfTE9DQUw6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRJTUU6XG4gICAgICAgICAgcmV0dXJuIFJlc2VydmVkTW9kZWxzLkRBVEUubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY2xhc3MgZGVjb3JhdG9yIG1ldGFkYXRhIGZvciBhIG1vZGVsIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IEV4dHJhY3RzIFVJLXJlbGF0ZWQgY2xhc3MgZGVjb3JhdG9ycyBmcm9tIGEgbW9kZWwgYW5kIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheVxuICAgKiBUaGlzIG1ldGhvZCBjb2xsZWN0cyBtZXRhZGF0YSBmcm9tIHZhcmlvdXMgVUkgY2xhc3MgZGVjb3JhdG9ycyBpbmNsdWRpbmcgQHVpbW9kZWwsXG4gICAqIEB1aWxpc3Rtb2RlbCwgQHVpaGFuZGxlcnMsIGFuZCBAdWlsYXlvdXQgYXBwbGllZCB0byB0aGUgbW9kZWwgY2xhc3MuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gZXh0cmFjdCBtZXRhZGF0YSBmcm9tXG4gICAqIEByZXR1cm5zIHtVSUNsYXNzTWV0YWRhdGFbXX0gQXJyYXkgb2YgVUkgY2xhc3MgbWV0YWRhdGEgb2JqZWN0c1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDbGFzc0RlY29yYXRvcnNNZXRhZGF0YTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBNXG4gICk6IFVJQ2xhc3NNZXRhZGF0YVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgTW9kZWwudWlNb2RlbE9mKG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yPE0+KSxcbiAgICAgIE1vZGVsLnVpTGlzdE1vZGVsT2YobW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3I8TT4pLFxuICAgICAgTW9kZWwudWlIYW5kbGVyc0Zvcihtb2RlbC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RvcjxNPiksXG4gICAgICBNb2RlbC51aUxheW91dE9mKG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yPE0+KSxcbiAgICBdLmZpbHRlcihCb29sZWFuKSBhcyBVSUNsYXNzTWV0YWRhdGFbXTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydENoaWxkcmVuQnlPcmRlcihjaGlsZHJlbjogRmllbGREZWZpbml0aW9uPGFueT5bXSA9IFtdKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFPcmRlciA9IGEucHJvcHM/Lm9yZGVyID8/IDA7XG4gICAgICBjb25zdCBiT3JkZXIgPSBiLnByb3BzPy5vcmRlciA/PyAwO1xuICAgICAgY29uc3Qgd2VpZ2h0ID0gKHY6IG51bWJlciB8IHN0cmluZykgPT5cbiAgICAgICAgdiA9PT0gVUlLZXlzLkZJUlNUXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiB0eXBlb2YgdiA9PT0gUHJpbWl0aXZlcy5OVU1CRVJcbiAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgOiB2ID09PSBVSUtleXMuTEFTVFxuICAgICAgICAgICAgICA/IC8vVE9ETzogcmV2aWV3IHRoaXNcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5sZW5ndGggKyBjaGlsZHJlbi5pbmRleE9mKGIpXG4gICAgICAgICAgICAgIDogMTtcblxuICAgICAgY29uc3QgYVdlaWdodCA9IHdlaWdodChhT3JkZXIpO1xuICAgICAgY29uc3QgYldlaWdodCA9IHdlaWdodChiT3JkZXIpO1xuICAgICAgaWYgKGFXZWlnaHQgIT09IGJXZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIGFXZWlnaHQgLSBiV2VpZ2h0O1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGFXZWlnaHQgPT09IDEgJiZcbiAgICAgICAgdHlwZW9mIGFPcmRlciA9PT0gUHJpbWl0aXZlcy5OVU1CRVIgJiZcbiAgICAgICAgdHlwZW9mIGJPcmRlciA9PT0gUHJpbWl0aXZlcy5OVU1CRVJcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gYU9yZGVyIC0gYk9yZGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHZhbGlkYXRpb24ga2V5IHJlcHJlc2VudHMgYSBjdXN0b20gdmFsaWRhdG9yIChpLmUuLCBub3QgYSBidWlsdC1pbiB2YWxpZGF0aW9uIG9yIFVJIGtleSkuXG4gICAqIEBzdW1tYXJ5IERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQga2V5IGNvcnJlc3BvbmRzIHRvIGEgdXNlci1kZWZpbmVkIHZhbGlkYXRvciBieSBleGNsdWRpbmcgYWxsIGJ1aWx0LWluIFZhbGlkYXRpb25LZXlzIGFuZCBVSUtleXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgdmFsaWRhdGlvbiBrZXkgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBrZXkgaXMgYSBjdXN0b20gdmFsaWRhdG9yLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBrZXkgaXMgbm90IGEgYnVpbHQtaW4gdmFsaWRhdGlvbiBrZXkgb3IgVUkga2V5IChpLmUuIGlzIGN1c3RvbSksIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHByb3RlY3RlZCBpc0N1c3RvbVZhbGlkYXRvcihrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhT2JqZWN0LnZhbHVlcyhWYWxpZGF0aW9uS2V5cykuaW5jbHVkZXMoXG4gICAgICAgIGtleSBhcyAodHlwZW9mIFZhbGlkYXRpb25LZXlzKVtrZXlvZiB0eXBlb2YgVmFsaWRhdGlvbktleXNdXG4gICAgICApICYmICFPYmplY3QudmFsdWVzKFVJS2V5cykuaW5jbHVkZXMoa2V5KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHR5cGUgaXMgdmFsaWRhdGFibGUgYnkgaXRzIG5hdHVyZS5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIFVJIGtleSByZXByZXNlbnRzIGEgdHlwZSB0aGF0IGlzIGluaGVyZW50bHkgdmFsaWRhdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgVUkga2V5IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdHlwZSBpcyB2YWxpZGF0YWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWRhdGFibGVCeVR5cGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoVmFsaWRhdGFibGVCeVR5cGUpLmluY2x1ZGVzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHR5cGUgaXMgdmFsaWRhdGFibGUgYnkgYXR0cmlidXRlLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gVUkga2V5IHJlcHJlc2VudHMgYSB2YWxpZGF0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgYXMgYW4gYXR0cmlidXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIFVJIGtleSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHR5cGUgaXMgdmFsaWRhdGFibGUgYnkgYXR0cmlidXRlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZGF0YWJsZUJ5QXR0cmlidXRlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGUpLmluY2x1ZGVzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIHZhbGlkYXRpb24gbWV0YWRhdGEgdG8gYW4gYXR0cmlidXRlIHZhbHVlLlxuICAgKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHZhbGlkYXRpb24gbWV0YWRhdGEgaW50byBhIHZhbHVlIHN1aXRhYmxlIGZvciB1c2UgYXMgYW4gSFRNTCBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgdmFsaWRhdGlvbiBrZXkuXG4gICAqIEBwYXJhbSB7VmFsaWRhdGlvbk1ldGFkYXRhfSB2YWx1ZSAtIFRoZSB2YWxpZGF0aW9uIG1ldGFkYXRhLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn0gVGhlIGNvbnZlcnRlZCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4ga2V5IGlzIG5vdCB2YWxpZGF0YWJsZSBieSBhdHRyaWJ1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9BdHRyaWJ1dGVWYWx1ZShcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogVmFsaWRhdGlvbk1ldGFkYXRhXG4gICk6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4ge1xuICAgIGlmICghT2JqZWN0LmtleXMoVmFsaWRhdGFibGVCeUF0dHJpYnV0ZSkuaW5jbHVkZXMoa2V5KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgYXR0cmlidXRlIGtleSBcIiR7a2V5fVwiLiBFeHBlY3RlZCBvbmUgb2Y6ICR7T2JqZWN0LmtleXMoVmFsaWRhdGFibGVCeUF0dHJpYnV0ZSkuam9pbihcIiwgXCIpfS5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGtleSA9PT0gVUlLZXlzLlJFUVVJUkVEID8gdHJ1ZSA6IHZhbHVlW2tleV07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgbW9kZWwgdG8gYSBmaWVsZCBkZWZpbml0aW9uLlxuICAgKiBAc3VtbWFyeSBQcm9jZXNzZXMgYSBtb2RlbCBpbnN0YW5jZSwgZXh0cmFjdGluZyBVSS1yZWxhdGVkIG1ldGFkYXRhIGFuZCB2YWxpZGF0aW9uIHJ1bGVzIHRvIGNyZWF0ZSBhIGZpZWxkIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBUIFR5cGUgcmVmZXJlbmNpbmcgdGhlIHNwZWNpZmljIFJlbmRlcmluZyBlbmdpbmUgZmllbGQgcHJvcGVydGllcy9pbnB1dHNcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byBjb252ZXJ0LlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBbZ2xvYmFsUHJvcHM9e31dIC0gR2xvYmFsIHByb3BlcnRpZXMgdG8gYXBwbHkgdG8gYWxsIGNoaWxkIGVsZW1lbnRzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtnZW5lcmF0ZUlkPXRydWVdIC0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcG9wdWxhdGUgdGhlIHJlbmRlcmVySWQgcHJvcGVydHkuXG4gICAqIEByZXR1cm5zIHtGaWVsZERlZmluaXRpb248VD59IEEgZmllbGQgZGVmaW5pdGlvbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBVSSBzdHJ1Y3R1cmUgb2YgdGhlIG1vZGVsLlxuICAgKiBAdGhyb3dzIHtSZW5kZXJpbmdFcnJvcn0gSWYgbm8gVUkgZGVmaW5pdGlvbnMgYXJlIHNldCBmb3IgdGhlIG1vZGVsIG9yIGlmIHRoZXJlIGFyZSBpbnZhbGlkIGRlY29yYXRvcnMuXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgcGFydGljaXBhbnQgQyBhcyBDbGllbnRcbiAgICogIHBhcnRpY2lwYW50IFJFIGFzIFJlbmRlcmluZ0VuZ2luZVxuICAgKiAgcGFydGljaXBhbnQgUiBhcyBSZWZsZWN0aW9uXG4gICAqICBwYXJ0aWNpcGFudCBNIGFzIE1vZGVsXG4gICAqICBDLT4+UkU6IHRvRmllbGREZWZpbml0aW9uKG1vZGVsLCBnbG9iYWxQcm9wcylcbiAgICogIFJFLT4+UjogZ2V0TWV0YWRhdGEoVUlLZXlzLlVJTU9ERUwsIG1vZGVsLmNvbnN0cnVjdG9yKVxuICAgKiAgUi0tPj5SRTogVUlNb2RlbE1ldGFkYXRhXG4gICAqICBSRS0+PlI6IGdldEFsbFByb3BlcnR5RGVjb3JhdG9ycyhtb2RlbCwgVUlLZXlzLlJFRkxFQ1QpXG4gICAqICBSLS0+PlJFOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPlxuICAgKiAgUkUtPj5SOiBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnMobW9kZWwsIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QpXG4gICAqICBSLS0+PlJFOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+W10+XG4gICAqICBsb29wIEZvciBlYWNoIHByb3BlcnR5XG4gICAqICAgIFJFLT4+UkU6IFByb2Nlc3MgVUkgZGVjb3JhdG9yc1xuICAgKiAgICBSRS0+PlJFOiBBcHBseSB2YWxpZGF0aW9uIHJ1bGVzXG4gICAqICBlbmRcbiAgICogIFJFLS0+PkM6IEZpZWxkRGVmaW5pdGlvbjxUPlxuICAgKi9cbiAgcHJvdGVjdGVkIHRvRmllbGREZWZpbml0aW9uPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgZ2xvYmFsUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gICAgZ2VuZXJhdGVJZDogYm9vbGVhbiA9IHRydWVcbiAgKTogRmllbGREZWZpbml0aW9uPFQ+IHtcbiAgICBjb25zdCB7IGluaGVyaXRQcm9wcywgLi4uZ2xvYmFsUHJvcHNXaXRob3V0SW5oZXJpdHMgfSA9IGdsb2JhbFByb3BzO1xuICAgIGdsb2JhbFByb3BzID0gZ2xvYmFsUHJvcHNXaXRob3V0SW5oZXJpdHM7XG5cbiAgICBjb25zdCBjbGFzc0RlY29yYXRvcnMgPSB0aGlzLmdldENsYXNzRGVjb3JhdG9yc01ldGFkYXRhPE0+KG1vZGVsKTtcblxuICAgIGlmICghY2xhc3NEZWNvcmF0b3JzLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBSZW5kZXJpbmdFcnJvcihcbiAgICAgICAgYE5vIHVpIGRlZmluaXRpb25zIHNldCBmb3IgbW9kZWwgJHttb2RlbC5jb25zdHJ1Y3Rvci5uYW1lfS4gRGlkIHlvdSB1c2UgQHVpbW9kZWw/YFxuICAgICAgKTtcblxuICAgIGNvbnN0IGNsYXNzRGVjb3JhdG9yID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgLi4uY2xhc3NEZWNvcmF0b3JzLFxuICAgICAgaW5oZXJpdFByb3BzID8gaW5oZXJpdFByb3BzIDoge30gLy8gb3ZlcnJpZGUgdGFnIGFuZCBwcm9wZXJ0aWVzIHdoZW4gaXQgaXMgYSBjb21wb25lbnQgdGhhdCBzaG91bGQgaW5oZXJpdCBwcm9wZXJ0aWVzIGZyb20gaXRzIHBhcmVudC5cbiAgICApO1xuICAgIGNvbnN0IHsgdGFnLCBwcm9wcywgaXRlbSwgaGFuZGxlcnMgfSA9IGNsYXNzRGVjb3JhdG9yO1xuXG4gICAgY29uc3QgdWlEZWNvcmF0b3JzID0gTW9kZWwudWlQcm9wZXJ0aWVzT2YoXG4gICAgICBtb2RlbC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RvcjxNPlxuICAgICkgYXMgKGtleW9mIE0pW107XG5cbiAgICAvLyBjb25zdCB1aURlY29yYXRvcnM6IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhW10+ID1cbiAgICAvLyAgIFJlZmxlY3Rpb24uZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzKG1vZGVsLCBVSUtleXMuUkVGTEVDVCkgYXMgUmVjb3JkPFxuICAgIC8vICAgICBzdHJpbmcsXG4gICAgLy8gICAgIERlY29yYXRvck1ldGFkYXRhW11cbiAgICAvLyAgID47XG4gICAgbGV0IGNoaWxkcmVuOiBGaWVsZERlZmluaXRpb248UmVjb3JkPHN0cmluZywgYW55Pj5bXSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgY2hpbGRQcm9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IGl0ZW0/LnByb3BzIHx8IHt9O1xuICAgIGxldCBtYXBwZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBjb25zdCBnZXRQYXRoID0gKHBhcmVudDogc3RyaW5nIHwgdW5kZWZpbmVkLCBwcm9wOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBwYXJlbnQgPyBbcGFyZW50LCBwcm9wXS5qb2luKFwiLlwiKSA6IHByb3A7XG4gICAgfTtcblxuICAgIGlmICh1aURlY29yYXRvcnMpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25EZWNvcmF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID1cbiAgICAgICAgTWV0YWRhdGEuZ2V0KFxuICAgICAgICAgIG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yLFxuICAgICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1RcbiAgICAgICAgKSB8fCB7fTtcbiAgICAgIC8vIGNvbnN0IHZhbGlkYXRpb25EZWNvcmF0b3JzOiBSZWNvcmQ8XG4gICAgICAvLyAgIHN0cmluZyxcbiAgICAgIC8vICAgRGVjb3JhdG9yTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPltdXG4gICAgICAvLyA+ID0gUmVmbGVjdGlvbi5nZXRBbGxQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICAvLyAgIG1vZGVsLFxuICAgICAgLy8gICBWYWxpZGF0aW9uS2V5cy5SRUZMRUNUXG4gICAgICAvLyApIGFzIFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT5bXT47XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiB1aURlY29yYXRvcnMpIHtcbiAgICAgICAgY29uc3QgZGVjcyA9IE1vZGVsLnVpRGVjb3JhdGlvbk9mKFxuICAgICAgICAgIG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yPE0+LFxuICAgICAgICAgIGtleVxuICAgICAgICApO1xuICAgICAgICBsZXQgdHlwZTogYW55O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICB0eXBlID0gTW9kZWwudWlUeXBlT2YobW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3I8TT4sIGtleSk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc3QgdHlwZXMgPSBPYmplY3QudmFsdWVzKGRlY3MpLmZpbHRlcigoeyBrZXkgfSkgPT5cbiAgICAgICAgLy8gICBbVUlLZXlzLlBST1AsIFVJS2V5cy5FTEVNRU5ULCBVSUtleXMuQ0hJTERdLmluY2x1ZGVzKGtleSlcbiAgICAgICAgLy8gKTtcbiAgICAgICAgLy8gaWYgKCF0eXBlKVxuICAgICAgICAvLyAgIHRocm93IG5ldyBSZW5kZXJpbmdFcnJvcihcbiAgICAgICAgLy8gICAgIGBPbmx5IG9uZSB0eXBlIG9mIGRlY29yYXRpb24gaXMgYWxsb3dlZC4gUGxlYXNlIGNob29zZSBiZXR3ZWVuIEB1aXByb3AsIEB1aWNoaWxkIG9yIEB1aWVsZW1lbnRgXG4gICAgICAgIC8vICAgKTtcbiAgICAgICAgY29uc3QgaGFzSGlkZU9uRGVjb3JhdG9yID0gTW9kZWwudWlJc0hpZGRlbihcbiAgICAgICAgICBtb2RlbC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RvcjxNPixcbiAgICAgICAgICBrZXlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGhhc0hpZGVPbkRlY29yYXRvcikge1xuICAgICAgICAgIGNvbnN0IGhhc1VpRWxlbWVudERlY29yYXRvciA9IE1vZGVsLnVpRWxlbWVudE9mKFxuICAgICAgICAgICAgbW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3I8TT4sXG4gICAgICAgICAgICBrZXlcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghaGFzVWlFbGVtZW50RGVjb3JhdG9yKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKFxuICAgICAgICAgICAgICBgQHVpZWxlbWVudCBubyBmb3VuZCBpbiBcIiR7a2V5IGFzIHN0cmluZ31cIi4gSXQgaXMgcmVxdWlyZWQgdG8gdXNlIGhpZGRlbk9uIGRlY29yYXRvci5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNvcnRlZCA9IE9iamVjdC5lbnRyaWVzKGRlY3MpXG4gICAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiAoe1xuICAgICAgICAgICAga2V5OiBrLFxuICAgICAgICAgICAgcHJvcHM6IHYsXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLnNvcnQoKGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbVUlLZXlzLkVMRU1FTlQsIFVJS2V5cy5DSElMRF0uaW5jbHVkZXMoYS5rZXkpID8gLTEgOiAxO1xuICAgICAgICAgIH0pO1xuICAgICAgICBzb3J0ZWQuZm9yRWFjaCgoZGVjKSA9PiB7XG4gICAgICAgICAgaWYgKCFkZWMpIHRocm93IG5ldyBSZW5kZXJpbmdFcnJvcihgTm8gZGVjb3JhdG9yIGZvdW5kYCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGRlYy5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgVUlLZXlzLlBST1A6IHtcbiAgICAgICAgICAgICAgY2hpbGRQcm9wc1trZXkgYXMgYW55XSA9IGRlYy5wcm9wcyBhcyBVSVByb3BNZXRhZGF0YTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFVJS2V5cy5DSElMRDoge1xuICAgICAgICAgICAgICBjb25zdCBtb2RlbE5hbWUgPVxuICAgICAgICAgICAgICAgIChkZWMucHJvcHMgYXMgVUlNb2RlbE1ldGFkYXRhKT8ucHJvcHM/Lm5hbWUgfHwgKGtleSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUHJvcGVydHlNb2RlbCA9XG4gICAgICAgICAgICAgICAgICBNb2RlbC5pc01vZGVsKE1vZGVsLmJ1aWxkKHt9LCBtb2RlbE5hbWUpKSB8fFxuICAgICAgICAgICAgICAgICAgTW9kZWwuaXNQcm9wZXJ0eU1vZGVsKG1vZGVsLCBtb2RlbE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghaXNQcm9wZXJ0eU1vZGVsKVxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKFxuICAgICAgICAgICAgICAgICAgICBgQ2hpbGQgXCIke21vZGVsTmFtZSBhcyBzdHJpbmd9XCIgbXVzdCBiZSBhIG1vZGVsLmBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKFxuICAgICAgICAgICAgICAgICAgYENoaWxkIFwiJHttb2RlbE5hbWUgYXMgc3RyaW5nfVwiIG11c3QgYmUgYSBtb2RlbC5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGxldCBDbGF6ejtcbiAgICAgICAgICAgICAgY29uc3Qgc3VibW9kZWwgPSAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55PilbXG4gICAgICAgICAgICAgICAga2V5IGFzIGFueVxuICAgICAgICAgICAgICBdIGFzIE1vZGVsO1xuICAgICAgICAgICAgICBjb25zdCBjb25zdHJ1Y3RhYmxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2Ygc3VibW9kZWwgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICBzdWJtb2RlbCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHN1Ym1vZGVsKTtcbiAgICAgICAgICAgICAgLy8gY3JlYXRlIGluc3RhbmNlIGlmIHVuZGVmaW5lZFxuICAgICAgICAgICAgICBpZiAoIWNvbnN0cnVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGF6ek5hbWUgPSAoXG4gICAgICAgICAgICAgICAgICAoZGVjLnByb3BzIGFzIGFueSkucHJvcHMgYXMgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICAgICAgICAgICAgICk/Lm5hbWUgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgIENsYXp6ID0gbmV3IChNb2RlbC5nZXQoY2xhenpOYW1lKSBhcyBNb2RlbENvbnN0cnVjdG9yPE1vZGVsPikoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuR2xvYmFsUHJvcHMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIGdsb2JhbFByb3BzIHx8IHt9LFxuICAgICAgICAgICAgICAgIHsgbW9kZWw6IENsYXp6IH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaW5oZXJpdFByb3BzOiBkZWMucHJvcHMgYXMgVUlNb2RlbE1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgY2hpbGRPZjogZ2V0UGF0aChcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsUHJvcHM/LmNoaWxkT2YgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBrZXkgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGREZWZpbml0aW9uID0gdGhpcy50b0ZpZWxkRGVmaW5pdGlvbihcbiAgICAgICAgICAgICAgICBzdWJtb2RlbCB8fCBDbGF6eiwgLy8gTXVzdCBhdm9pZCB1bmRlZmluZWQgdmFsdWVzIOKAlCBhbiBpbnN0YW5jZSBpcyByZXF1aXJlZCB0byByZXRyaWV2ZSBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgIGNoaWxkcmVuR2xvYmFsUHJvcHMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29uc3QgeyBpbmhlcml0UHJvcHMgfSA9IGNoaWxkcmVuR2xvYmFsUHJvcHM7XG4gICAgICAgICAgICAgIGlmIChpbmhlcml0UHJvcHMpXG4gICAgICAgICAgICAgICAgY2hpbGREZWZpbml0aW9uLnByb3BzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgY2hpbGREZWZpbml0aW9uLnByb3BzLFxuICAgICAgICAgICAgICAgICAgaW5oZXJpdFByb3BzLnByb3BzIHx8IHt9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChcbiAgICAgICAgICAgICAgICBjaGlsZERlZmluaXRpb24gYXMgRmllbGREZWZpbml0aW9uPFJlY29yZDxzdHJpbmcsIGFueT4+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBVSUtleXMuVUlMSVNUUFJPUDoge1xuICAgICAgICAgICAgICBtYXBwZXIgPSBtYXBwZXIgfHwge307XG4gICAgICAgICAgICAgIGNvbnN0IGRlY1Byb3BzID0gZGVjLnByb3BzIGFzIFVJTGlzdFByb3BNZXRhZGF0YTtcbiAgICAgICAgICAgICAgaWYgKGRlY1Byb3BzLm5hbWUpXG4gICAgICAgICAgICAgICAgbWFwcGVyW2RlY1Byb3BzLm5hbWVdID1cbiAgICAgICAgICAgICAgICAgIHR5cGVvZiBkZWNQcm9wcz8ucHJvcHMgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICAgIFVJS2V5cy5TRVFVRU5DRSBpbiBkZWNQcm9wcy5wcm9wc1xuICAgICAgICAgICAgICAgICAgICA/IGRlY1Byb3BzLnByb3BzXG4gICAgICAgICAgICAgICAgICAgIDoga2V5O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICBjbGFzc0RlY29yYXRvci5wcm9wcz8uaXRlbSB8fCB7fSxcbiAgICAgICAgICAgICAgICBpdGVtPy5wcm9wcyB8fCB7fSxcbiAgICAgICAgICAgICAgICBkZWNQcm9wcz8ucHJvcHMgfHwge30sXG4gICAgICAgICAgICAgICAgZ2xvYmFsUHJvcHNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICB0YWc6IGl0ZW0/LnRhZyB8fCBwcm9wcy5yZW5kZXIgfHwgXCJcIixcbiAgICAgICAgICAgICAgICBwcm9wczogT2JqZWN0LmFzc2lnbih7fSwgY2hpbGRQcm9wcz8ucHJvcHMsIHsgbWFwcGVyIH0sIHByb3BzKSxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVUlLZXlzLkVWRU5UUzpcbiAgICAgICAgICAgIGNhc2UgVUlLZXlzLkhJRERFTjpcbiAgICAgICAgICAgIGNhc2UgVUlLZXlzLkhJREVfRk9SOlxuICAgICAgICAgICAgY2FzZSBVSUtleXMuU0hPV19GT1I6XG4gICAgICAgICAgICBjYXNlIFVJS2V5cy5QQUdFOlxuICAgICAgICAgICAgY2FzZSBVSUtleXMuT1JERVI6XG4gICAgICAgICAgICBjYXNlIFVJS2V5cy5VSUxBWU9VVFBST1A6XG4gICAgICAgICAgICBjYXNlIFVJS2V5cy5FTEVNRU5UOiB7XG4gICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgICAgICAgICAgIGNvbnN0IHVpUHJvcHM6IFVJRWxlbWVudE1ldGFkYXRhID0gZGVjLnByb3BzIGFzIFVJRWxlbWVudE1ldGFkYXRhO1xuICAgICAgICAgICAgICBjb25zdCB2aXNpYmlsaXR5UHJvcHMgPVxuICAgICAgICAgICAgICAgIGRlYy5rZXkgPT09IFVJS2V5cy5ISURFX0ZPUlxuICAgICAgICAgICAgICAgICAgPyB7IGhpZGVGb3I6IGRlYy5wcm9wcyBhcyBzdHJpbmdbXSB9XG4gICAgICAgICAgICAgICAgICA6IGRlYy5rZXkgPT09IFVJS2V5cy5TSE9XX0ZPUlxuICAgICAgICAgICAgICAgICAgICA/IHsgc2hvd0ZvcjogZGVjLnByb3BzIGFzIHN0cmluZ1tdIH1cbiAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIGNoaWxkUHJvcHM/LnByb3BzLFxuICAgICAgICAgICAgICAgIHVpUHJvcHMucHJvcHMgfHwge30sXG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eVByb3BzLFxuICAgICAgICAgICAgICAgIHVpUHJvcHM/LnByb3BzPy5uYW1lXG4gICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBnZXRQYXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsUHJvcHM/LmNoaWxkT2YgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdWlQcm9wcy5wcm9wcyEubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRPZjogdW5kZWZpbmVkLCAvLyBUaGUgY2hpbGRPZiBwcm9wIGlzIHBhc3NlZCBieSBnbG9iYWxQcm9wcyB3aGVuIGl0IGlzIGEgbmVzdGVkIHByb3BcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgICAgICAgICBnbG9iYWxQcm9wcyxcbiAgICAgICAgICAgICAgICB7IG5hbWU6IHVpUHJvcHMucHJvcHM/Lm5hbWUgfHwga2V5IH1cbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBpZiAoZGVjLmtleSA9PT0gVUlLZXlzLkVMRU1FTlQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZERlZmluaXRpb246IEZpZWxkRGVmaW5pdGlvbjxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHtcbiAgICAgICAgICAgICAgICAgIHRhZzogdWlQcm9wcy50YWcgfHwgY2hpbGRQcm9wcz8udGFnIHx8IHRhZyB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uRGVjcyA9IHZhbGlkYXRpb25EZWNvcmF0b3JzW1xuICAgICAgICAgICAgICAgICAga2V5IGFzIGFueVxuICAgICAgICAgICAgICAgIF0gYXMgVmFsaWRhdGlvbk1ldGFkYXRhW107XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25EZWNzKSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlYyBvZiBPYmplY3QuZW50cmllcyh2YWxpZGF0aW9uRGVjcykubWFwKFxuICAgICAgICAgICAgICAgICAgICAoW2ssIHZdKSA9PiAoeyBrZXk6IGssIHByb3BzOiB2IH0pXG4gICAgICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRhdGFibGVCeUF0dHJpYnV0ZShkZWMua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wc1t0aGlzLnRyYW5zbGF0ZShkZWMua2V5KV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b0F0dHJpYnV0ZVZhbHVlKGRlYy5rZXksIGRlYy5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZGF0YWJsZUJ5VHlwZShkZWMua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWMua2V5ID09PSBIVE1MNUlucHV0VHlwZXMuREFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGREZWZpbml0aW9uLnByb3BzW1VJS2V5cy5GT1JNQVRdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjLnByb3BzLmZvcm1hdCB8fCBIVE1MNURhdGVGb3JtYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuVFlQRV0gPSBkZWMua2V5O1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tVmFsaWRhdG9yKGRlYy5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHNbVUlLZXlzLlNVQl9UWVBFXSA9IGRlYy5rZXk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYy5wcm9wcz8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNbVUlLZXlzLlZBTElEQVRJT05fTUVTU0FHRV0gPSBkZWMucHJvcHMubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuVFlQRV0pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljVHlwZSA9IE1ldGFkYXRhLnR5cGUoXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICAgICAgICBrZXkgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICApLm5hbWU7XG4gICAgICAgICAgICAgICAgICBjaGlsZERlZmluaXRpb24ucHJvcHNbVUlLZXlzLlRZUEVdID0gdGhpcy50cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgICAgIGJhc2ljVHlwZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wcy52YWx1ZSA9IGZvcm1hdEJ5VHlwZShcbiAgICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuVFlQRV0sXG4gICAgICAgICAgICAgICAgICBtb2RlbFtrZXkgYXMga2V5b2YgTV0sXG4gICAgICAgICAgICAgICAgICBjaGlsZERlZmluaXRpb24ucHJvcHNbVUlLZXlzLkZPUk1BVF1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGREZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbi5maW5kKFxuICAgICAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgICAgYy5wcm9wcz8ubmFtZSA9PT0ga2V5IHx8XG4gICAgICAgICAgICAgICAgICAoW1VJS2V5cy5VSUxBWU9VVFBST1AsIFVJS2V5cy5QQUdFLCBVSUtleXMuRVZFTlRTXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgZGVjLmtleVxuICAgICAgICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgICAgICAgICAoYy5wcm9wcz8uY2hpbGRPZiA9PT0ga2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgYy5wcm9wcz8uY2hpbGRPZj8uZW5kc1dpdGgoYC4ke2tleSBhcyBzdHJpbmd9YCkpKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZGVjLmtleSA9PT0gVUlLZXlzLkhJREVfRk9SIHx8XG4gICAgICAgICAgICAgICAgICAgIGRlYy5rZXkgPT09IFVJS2V5cy5TSE9XX0ZPUlxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgY2hpbGQucHJvcHMsIHZpc2liaWxpdHlQcm9wcyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlYy5rZXkgIT09IFVJS2V5cy5VSUxBWU9VVFBST1ApIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQucHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgIFtkZWMua2V5XTogdWlQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJvdywgY29sLCBwcm9wcyB9ID0gZGVjLnByb3BzIGFzIGFueTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQucHJvcHMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVuZGVyaW5nRXJyb3IoYEludmFsaWQga2V5OiAke2RlYy5rZXl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWxQcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCBnbG9iYWxQcm9wcywge1xuICAgICAgaGFuZGxlcnM6IGhhbmRsZXJzIHx8IHt9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgY3VycmVudE5hbWVzcGFjZXMgPSBuZXcgU2V0KFxuICAgICAgW1xuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShnbG9iYWxQcm9wcz8ubmFtZXNwYWNlcylcbiAgICAgICAgICA/IChnbG9iYWxQcm9wcy5uYW1lc3BhY2VzIGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi4odHlwZW9mIGdsb2JhbFByb3BzPy5uYW1lc3BhY2UgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IFtnbG9iYWxQcm9wcy5uYW1lc3BhY2UgYXMgc3RyaW5nXVxuICAgICAgICAgIDogW10pLFxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdsb2JhbFByb3BzPy5vcGVyYXRpb247XG4gICAgY2hpbGRyZW4gPSB0aGlzLnNvcnRDaGlsZHJlbkJ5T3JkZXIoY2hpbGRyZW4pLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgaGlkZGVuT24gPSAoaXRlbT8ucHJvcHM/LmhpZGRlbiBhcyBDcnVkT3BlcmF0aW9uS2V5c1tdKSB8fCBbXTtcbiAgICAgIGlmIChcbiAgICAgICAgaGlkZGVuT24ubGVuZ3RoID4gMCAmJlxuICAgICAgICBoaWRkZW5Pbi5pbmNsdWRlcyhvcGVyYXRpb24gYXMgQ3J1ZE9wZXJhdGlvbktleXMpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoaWRlRm9yID0gKGl0ZW0/LnByb3BzPy5oaWRlRm9yIGFzIHN0cmluZ1tdKSB8fCBbXTtcbiAgICAgIGNvbnN0IHNob3dGb3IgPSAoaXRlbT8ucHJvcHM/LnNob3dGb3IgYXMgc3RyaW5nW10pIHx8IFtdO1xuICAgICAgaWYgKFxuICAgICAgICBoaWRlRm9yLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgWy4uLmN1cnJlbnROYW1lc3BhY2VzXS5zb21lKChuYW1lc3BhY2UpID0+IGhpZGVGb3IuaW5jbHVkZXMobmFtZXNwYWNlKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHNob3dGb3IubGVuZ3RoID4gMCAmJlxuICAgICAgICAhWy4uLmN1cnJlbnROYW1lc3BhY2VzXS5zb21lKChuYW1lc3BhY2UpID0+IHNob3dGb3IuaW5jbHVkZXMobmFtZXNwYWNlKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHQ6IEZpZWxkRGVmaW5pdGlvbjxUPiA9IHtcbiAgICAgIHRhZzogdGFnLFxuICAgICAgaXRlbTogY2hpbGRQcm9wcyBhcyBVSUxpc3RJdGVtRWxlbWVudE1ldGFkYXRhLFxuICAgICAgcHJvcHM6IGdsb2JhbFByb3BzIGFzIFQgJiBGaWVsZFByb3BlcnRpZXMgJiBJUGFnZWRDb21wb25lbnRQcm9wZXJ0aWVzLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuPy5sZW5ndGhcbiAgICAgICAgPyAoY2hpbGRyZW4gYXMgRmllbGREZWZpbml0aW9uPGFueT5bXSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIGlmIChnZW5lcmF0ZUlkKSByZXN1bHQucmVuZGVyZXJJZCA9IGdlbmVyYXRlVUlNb2RlbElEKG1vZGVsKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZW5kZXJzIGEgbW9kZWwgd2l0aCBnbG9iYWwgcHJvcGVydGllcyBhbmQgYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAqIEBzdW1tYXJ5IEFic3RyYWN0IG1ldGhvZCB0byBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIGRlZmluZSBzcGVjaWZpYyByZW5kZXJpbmcgYmVoYXZpb3IuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBSIFJlbmRlcmluZyBlbmdpbmUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgb3V0cHV0IHR5cGVcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCB0byBiZSByZW5kZXJlZC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gZ2xvYmFsUHJvcHMgLSBHbG9iYWwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIGFsbCBlbGVtZW50cyBkdXJpbmcgcmVuZGVyaW5nLlxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBtYXkgYmUgcmVxdWlyZWQgZm9yIHNwZWNpZmljIHJlbmRlcmluZyBpbXBsZW1lbnRhdGlvbnMuXG4gICAqIEByZXR1cm5zIHtSfSBUaGUgcmVuZGVyZWQgcmVzdWx0LCB0eXBlIGRlcGVuZHMgb24gdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuICAgKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIGFic3RyYWN0IHJlbmRlcjxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBNLFxuICAgIGdsb2JhbFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBSO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIGEgcmVuZGVyaW5nIGVuZ2luZSBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgQWRkcyBhIHJlbmRlcmluZyBlbmdpbmUgdG8gdGhlIHN0YXRpYyBjYWNoZSBhbmQgc2V0cyBpdCBhcyB0aGUgY3VycmVudCBlbmdpbmUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyaW5nRW5naW5lPHVua25vd24sIHVua25vd24+fSBlbmdpbmUgLSBUaGUgcmVuZGVyaW5nIGVuZ2luZSB0byByZWdpc3Rlci5cbiAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgYW4gZW5naW5lIHdpdGggdGhlIHNhbWUgZmxhdm9yIGFscmVhZHkgZXhpc3RzLlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXIoZW5naW5lOiBSZW5kZXJpbmdFbmdpbmU8dW5rbm93biwgdW5rbm93bj4pIHtcbiAgICBpZiAoZW5naW5lLmZsYXZvdXIgaW4gdGhpcy5jYWNoZSlcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgUmVuZGVyaW5nIGVuZ2luZSB1bmRlciAke2VuZ2luZS5mbGF2b3VyfSBhbHJlYWR5IGV4aXN0c2BcbiAgICAgICk7XG4gICAgdGhpcy5jYWNoZVtlbmdpbmUuZmxhdm91cl0gPSBlbmdpbmU7XG4gICAgdGhpcy5jdXJyZW50ID0gZW5naW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgb3IgaW5pdGlhbGl6ZXMgYSByZW5kZXJpbmcgZW5naW5lLlxuICAgKiBAc3VtbWFyeSBHZXRzIGFuIGV4aXN0aW5nIGVuZ2luZSBpbnN0YW5jZSBvciBjcmVhdGVzIGFuZCBpbml0aWFsaXplcyBhIG5ldyBvbmUgaWYgZ2l2ZW4gYSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHRlbXBsYXRlIE8gVGhlIHR5cGUgb2YgdGhlIHJlbmRlcmluZyBlbmdpbmUgb3V0cHV0XG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8UmVuZGVyaW5nRW5naW5lPE8+PiB8IFJlbmRlcmluZ0VuZ2luZTxPPn0gb2JqIC0gVGhlIGVuZ2luZSBpbnN0YW5jZSBvciBjb25zdHJ1Y3Rvci5cbiAgICogQHJldHVybnMge1JlbmRlcmluZ0VuZ2luZTxPPn0gVGhlIGluaXRpYWxpemVkIHJlbmRlcmluZyBlbmdpbmUuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldE9yQm9vdDxPPihcbiAgICBvYmo6IENvbnN0cnVjdG9yPFJlbmRlcmluZ0VuZ2luZTxPPj4gfCBSZW5kZXJpbmdFbmdpbmU8Tz5cbiAgKTogUmVuZGVyaW5nRW5naW5lPE8+IHtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgUmVuZGVyaW5nRW5naW5lKSByZXR1cm4gb2JqIGFzIFJlbmRlcmluZ0VuZ2luZTxPPjtcbiAgICBjb25zdCBlbmdpbmU6IFJlbmRlcmluZ0VuZ2luZTxPPiA9IG5ldyBvYmooKTtcbiAgICBlbmdpbmUuaW5pdGlhbGl6ZSgpOyAvLyBtYWtlIHRoZSBib290aW5nIGFzeW5jLiB1c2UgdGhlIGluaXRpYWxpemVkIGZsYWcgdG8gY29udHJvbCBpdFxuICAgIHJldHVybiBlbmdpbmUgYXMgUmVuZGVyaW5nRW5naW5lPE8+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSByZW5kZXJpbmcgZW5naW5lIGJ5IGZsYXZvci5cbiAgICogQHN1bW1hcnkgR2V0cyB0aGUgY3VycmVudCByZW5kZXJpbmcgZW5naW5lIG9yIGEgc3BlY2lmaWMgb25lIGJ5IGZsYXZvci5cbiAgICpcbiAgICogQHRlbXBsYXRlIE8gVGhlIHR5cGUgb2YgdGhlIHJlbmRlcmluZyBlbmdpbmUgb3V0cHV0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZmxhdm91cl0gLSBUaGUgZmxhdm9yIG9mIHRoZSByZW5kZXJpbmcgZW5naW5lIHRvIHJldHJpZXZlLlxuICAgKiBAcmV0dXJucyB7UmVuZGVyaW5nRW5naW5lPE8+fSBUaGUgcmVxdWVzdGVkIHJlbmRlcmluZyBlbmdpbmUuXG4gICAqIEB0aHJvd3Mge0ludGVybmFsRXJyb3J9IElmIHRoZSByZXF1ZXN0ZWQgZmxhdm9yIGRvZXMgbm90IGV4aXN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgZ2V0PE8+KGZsYXZvdXI/OiBzdHJpbmcpOiBSZW5kZXJpbmdFbmdpbmU8Tz4ge1xuICAgIGlmICghZmxhdm91cilcbiAgICAgIHJldHVybiB0aGlzLmdldE9yQm9vdDxPPihcbiAgICAgICAgdGhpcy5jdXJyZW50IGFzIENvbnN0cnVjdG9yPFJlbmRlcmluZ0VuZ2luZTxPPj4gfCBSZW5kZXJpbmdFbmdpbmU8Tz5cbiAgICAgICk7XG4gICAgaWYgKCEoZmxhdm91ciBpbiB0aGlzLmNhY2hlKSlcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgUmVuZGVyaW5nIGVuZ2luZSB1bmRlciAke2ZsYXZvdXJ9IGRvZXMgbm90IGV4aXN0YFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5nZXRPckJvb3Q8Tz4oXG4gICAgICB0aGlzLmNhY2hlW2ZsYXZvdXJdIGFzXG4gICAgICAgIHwgQ29uc3RydWN0b3I8UmVuZGVyaW5nRW5naW5lPE8+PlxuICAgICAgICB8IFJlbmRlcmluZ0VuZ2luZTxPPlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlbmRlcnMgYSBtb2RlbCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgcmVuZGVyaW5nIGVuZ2luZS5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB0aGUgY29ycmVjdCByZW5kZXJpbmcgZW5naW5lIGZvciBhIG1vZGVsIGFuZCBpbnZva2VzIGl0cyByZW5kZXIgbWV0aG9kLlxuICAgKlxuICAgKiBAdGVtcGxhdGUgTSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHJlbmRlciBtZXRob2QuXG4gICAqIEByZXR1cm5zIHthbnl9IFRoZSByZXN1bHQgb2YgdGhlIHJlbmRlcmluZyBwcm9jZXNzLlxuICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiBubyByZWdpc3RlcmVkIG1vZGVsIGlzIGZvdW5kLlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgcmVuZGVyPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0sIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9XG4gICAgICBNb2RlbC5nZXQobW9kZWwuY29uc3RydWN0b3IubmFtZSkgfHwgTW9kZWwuZnJvbU9iamVjdChtb2RlbCk7XG4gICAgaWYgKCFjb25zdHJ1Y3RvcikgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJObyBtb2RlbCByZWdpc3RlcmVkIGZvdW5kXCIpO1xuICAgIGNvbnN0IGZsYXZvdXIgPSBNb2RlbC5yZW5kZXJlZEJ5KG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yPE0+KTtcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZm9yIHRoZSB2YXIgYXJncyB0eXBlIGNoZWNrXG4gICAgcmV0dXJuIFJlbmRlcmluZ0VuZ2luZS5nZXQoZmxhdm91cikucmVuZGVyKG1vZGVsLCAuLi5hcmdzKTtcbiAgfVxufVxuLy9cbi8vIERlY29yYXRpb24uZm9yKERCS2V5cy5JRClcbi8vICAgLmV4dGVuZCh7XG4vLyAgICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBwayhvcHRpb25zOiB7IGdlbmVyYXRlZDogYm9vbGVhbiB9KSB7XG4vLyAgICAgICByZXR1cm4gZnVuY3Rpb24gaW5uZXJQayh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHlLZXk/OiBhbnkpIHtcbi8vICAgICAgICAgaWYgKG9wdGlvbnMuZ2VuZXJhdGVkKVxuLy8gICAgICAgICAgIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpKFxuLy8gICAgICAgICAgICAgdGFyZ2V0LFxuLy8gICAgICAgICAgICAgcHJvcGVydHlLZXlcbi8vICAgICAgICAgICApO1xuLy8gICAgICAgfTtcbi8vICAgICB9LFxuLy8gICB9KVxuLy8gICAuYXBwbHkoKTtcbi8vXG4vLyBEZWNvcmF0aW9uLmZvcihEQktleXMuVElNRVNUQU1QKVxuLy8gICAuZXh0ZW5kKHtcbi8vICAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIHRpbWVzdGFtcChvcHM6IE9wZXJhdGlvbktleXNbXSkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbiguLi4ob3BzIGFzIGFueVtdKSk7XG4vLyAgICAgfSxcbi8vICAgfSlcbi8vICAgLmFwcGx5KCk7XG4vL1xuLy8gRGVjb3JhdGlvbi5mb3IoREJLZXlzLkNPTVBPU0VEKVxuLy8gICAuZXh0ZW5kKHtcbi8vICAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIGNvbXBvc2VkKCkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuLy9cbi8vIERlY29yYXRpb24uZm9yKFwiY3JlYXRlZEJ5XCIpXG4vLyAgIC5leHRlbmQoe1xuLy8gICAgIGRlY29yYXRvcjogZnVuY3Rpb24gY3JlYXRlZEJ5KCkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuLy9cbi8vIERlY29yYXRpb24uZm9yKFwidXBkYXRlZEJ5XCIpXG4vLyAgIC5leHRlbmQoe1xuLy8gICAgIGRlY29yYXRvcjogZnVuY3Rpb24gY3JlYXRlZEJ5KCkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuIl19
583
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUmVuZGVyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RTtBQUN2RSxpREFBc0g7QUFDdEgsMkNBQTZDO0FBQzdDLHlDQUE2RDtBQUM3RCxxREFBZ0Q7QUFDaEQseUVBQW9HO0FBQ3BHOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7OztHQUtHO0FBQ0gsTUFBYSxlQUFlO0lBQ3hCOzs7O09BSUc7SUFDSCxTQUFTLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixZQUFZLE9BQU87UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2Qjs7V0FFRztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLE9BQU8sMEJBQTBCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDeEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxxQ0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUN6QyxPQUFPLDhCQUFlLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxLQUFLLHFDQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDOUMsS0FBSyxxQ0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUN6QyxPQUFPLDhCQUFlLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxLQUFLLHFDQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQzFDLE9BQU8s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ZTtBQUNmLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQLGNBQWM7QUFDZCxFQUFFO0FBQ0YsbUNBQW1DO0FBQ25DLGNBQWM7QUFDZCw0REFBNEQ7QUFDNUQsMENBQTBDO0FBQzFDLFNBQVM7QUFDVCxPQUFPO0FBQ1AsY0FBYztBQUNkLEVBQUU7QUFDRixrQ0FBa0M7QUFDbEMsY0FBYztBQUNkLHVDQUF1QztBQUN2QyxtRUFBbUU7QUFDbkUsU0FBUztBQUNULE9BQU87QUFDUCxjQUFjO0FBQ2QsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixjQUFjO0FBQ2Qsd0NBQXdDO0FBQ3hDLG1FQUFtRTtBQUNuRSxTQUFTO0FBQ1QsT0FBTztBQUNQLGNBQWM7QUFDZCxFQUFFO0FBQ0YsOEJBQThCO0FBQzlCLGNBQWM7QUFDZCx3Q0FBd0M7QUFDeEMsbUVBQW1FO0FBQ25FLFNBQVM7QUFDVCxPQUFPO0FBQ1AsY0FBYztBQUNkLHNpNkRBQXNpNkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBIVE1MNURhdGVGb3JtYXQsIEhUTUw1SW5wdXRUeXBlcywgVUlLZXlzLCBWYWxpZGF0YWJsZUJ5QXR0cmlidXRlLCBWYWxpZGF0YWJsZUJ5VHlwZSwgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFJlbmRlcmluZ0Vycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBmb3JtYXRCeVR5cGUsIGdlbmVyYXRlVUlNb2RlbElEIH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBNb2RlbCwgUHJpbWl0aXZlcywgUmVzZXJ2ZWRNb2RlbHMsIFZhbGlkYXRpb25LZXlzLCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uIEFic3RyYWN0IGNsYXNzIGZvciByZW5kZXJpbmcgVUkgY29tcG9uZW50cyBiYXNlZCBvbiBtb2RlbCBtZXRhZGF0YS5cbiAqIEBzdW1tYXJ5IFRoZSBSZW5kZXJpbmdFbmdpbmUgY2xhc3MgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIGNvbnZlcnRpbmcgbW9kZWwgbWV0YWRhdGEgaW50byBVSSBmaWVsZCBkZWZpbml0aW9ucy5cbiAqIEl0IGhhbmRsZXMgdGhlIHRyYW5zbGF0aW9uIG9mIG1vZGVsIHByb3BlcnRpZXMgdG8gVUkgZWxlbWVudHMsIGFwcGxpZXMgdmFsaWRhdGlvbiBydWxlcywgYW5kIG1hbmFnZXMgZGlmZmVyZW50IHJlbmRlcmluZyBmbGF2b3JzLlxuICogVGhpcyBjbGFzcyBpcyBkZXNpZ25lZCB0byBiZSBleHRlbmRlZCBieSBzcGVjaWZpYyByZW5kZXJpbmcgaW1wbGVtZW50YXRpb25zLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSByZW5kZXJpbmcgcmVzdWx0LCBkZWZhdWx0cyB0byB2b2lkXG4gKiBAdGVtcGxhdGUgUiBUaGUgdHlwZSBvZiB0aGUgZmllbGQgZGVmaW5pdGlvbiwgZGVmYXVsdHMgdG8gRmllbGREZWZpbml0aW9uPFQ+XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZsYXZvdXIgLSBUaGUgZmxhdm9yIG9mIHRoZSByZW5kZXJpbmcgZW5naW5lLlxuICpcbiAqIEBjbGFzcyBSZW5kZXJpbmdFbmdpbmVcbiAqL1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBiYXNlIGFic3RyYWN0aW9uIGZvciBkZWNhZiByZW5kZXJpbmcgZW5naW5lcywgaGFuZGxpbmcgZW5naW5lIHJlZ2lzdHJhdGlvbixcbiAqIGluaXRpYWxpemF0aW9uLCBtb2RlbC10by1maWVsZCB0cmFuc2xhdGlvbiwgYW5kIHJ1bnRpbWUgcmVuZGVyaW5nIG9yY2hlc3RyYXRpb24uXG4gKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBwcm92aWRlIGluaXRpYWxpemF0aW9uIGFuZCByZW5kZXJpbmcgbG9naWMgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgc2hhcmVkXG4gKiBtZXRhZGF0YS1kcml2ZW4gY29udmVyc2lvbiB1dGlsaXRpZXMgc3VwcGxpZWQgaGVyZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbmRlcmluZ0VuZ2luZSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhY2hlIGZvciBzdG9yaW5nIHJlbmRlcmluZyBlbmdpbmUgaW5zdGFuY2VzIG9yIGNvbnN0cnVjdG9ycy5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBzdGF0aWNcbiAgICAgKi9cbiAgICBzdGF0aWMgeyB0aGlzLmNhY2hlID0ge307IH1cbiAgICBjb25zdHJ1Y3RvcihmbGF2b3VyKSB7XG4gICAgICAgIHRoaXMuZmxhdm91ciA9IGZsYXZvdXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcmVuZGVyaW5nIGVuZ2luZSBoYXMgYmVlbiBpbml0aWFsaXplZC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgUmVuZGVyaW5nRW5naW5lLnJlZ2lzdGVyKHRoaXMpO1xuICAgICAgICBjb25zb2xlLmxvZyhgZGVjYWYncyAke2ZsYXZvdXJ9IHJlbmRlcmluZyBlbmdpbmUgbG9hZGVkYCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2xhdGVzIGJldHdlZW4gbW9kZWwgdHlwZXMgYW5kIEhUTUwgaW5wdXQgdHlwZXMuXG4gICAgICogQHN1bW1hcnkgQ29udmVydHMgbW9kZWwgZGF0YSB0eXBlcyB0byBhcHByb3ByaWF0ZSBIVE1MIGlucHV0IHR5cGVzIGFuZCB2aWNlIHZlcnNhLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgdG8gdHJhbnNsYXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3RvVmlldz10cnVlXSAtIERpcmVjdGlvbiBvZiB0cmFuc2xhdGlvbiAodHJ1ZSBmb3IgbW9kZWwgdG8gdmlldywgZmFsc2UgZm9yIHZpZXcgdG8gbW9kZWwpLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0cmFuc2xhdGVkIHR5cGUuXG4gICAgICovXG4gICAgdHJhbnNsYXRlKGtleSwgdG9WaWV3ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodG9WaWV3KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuU1RSSU5HLm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEhUTUw1SW5wdXRUeXBlcy5URVhUO1xuICAgICAgICAgICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuTlVNQkVSLm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgICAgICAgICBjYXNlIFJlc2VydmVkTW9kZWxzLkJJR0lOVC5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBIVE1MNUlucHV0VHlwZXMuTlVNQkVSO1xuICAgICAgICAgICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuQk9PTEVBTi5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBIVE1MNUlucHV0VHlwZXMuQ0hFQ0tCT1g7XG4gICAgICAgICAgICAgICAgY2FzZSBSZXNlcnZlZE1vZGVscy5EQVRFLm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEhUTUw1SW5wdXRUeXBlcy5EQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5TRUxFQ1Q6XG4gICAgICAgICAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuVEVYVDpcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5FTUFJTDpcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5DT0xPUjpcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5QQVNTV09SRDpcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5URUw6XG4gICAgICAgICAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuVVJMOlxuICAgICAgICAgICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlNFQVJDSDpcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5ISURERU46XG4gICAgICAgICAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuVEVYVEFSRUE6XG4gICAgICAgICAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuUkFESU86XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNlcnZlZE1vZGVscy5TVFJJTkcubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLk5VTUJFUjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc2VydmVkTW9kZWxzLk5VTUJFUi5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuQ0hFQ0tCT1g6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNlcnZlZE1vZGVscy5CT09MRUFOLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5EQVRFOlxuICAgICAgICAgICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLkRBVEVUSU1FX0xPQ0FMOlxuICAgICAgICAgICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRJTUU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNlcnZlZE1vZGVscy5EQVRFLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGNsYXNzIGRlY29yYXRvciBtZXRhZGF0YSBmb3IgYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IEV4dHJhY3RzIFVJLXJlbGF0ZWQgY2xhc3MgZGVjb3JhdG9ycyBmcm9tIGEgbW9kZWwgYW5kIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheVxuICAgICAqIFRoaXMgbWV0aG9kIGNvbGxlY3RzIG1ldGFkYXRhIGZyb20gdmFyaW91cyBVSSBjbGFzcyBkZWNvcmF0b3JzIGluY2x1ZGluZyBAdWltb2RlbCxcbiAgICAgKiBAdWlsaXN0bW9kZWwsIEB1aWhhbmRsZXJzLCBhbmQgQHVpbGF5b3V0IGFwcGxpZWQgdG8gdGhlIG1vZGVsIGNsYXNzLlxuICAgICAqXG4gICAgICogQHRlbXBsYXRlIE0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGV4dHJhY3QgbWV0YWRhdGEgZnJvbVxuICAgICAqIEByZXR1cm5zIHtVSUNsYXNzTWV0YWRhdGFbXX0gQXJyYXkgb2YgVUkgY2xhc3MgbWV0YWRhdGEgb2JqZWN0c1xuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBnZXRDbGFzc0RlY29yYXRvcnNNZXRhZGF0YShtb2RlbCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgTW9kZWwudWlNb2RlbE9mKG1vZGVsLmNvbnN0cnVjdG9yKSxcbiAgICAgICAgICAgIE1vZGVsLnVpTGlzdE1vZGVsT2YobW9kZWwuY29uc3RydWN0b3IpLFxuICAgICAgICAgICAgTW9kZWwudWlIYW5kbGVyc0Zvcihtb2RlbC5jb25zdHJ1Y3RvciksXG4gICAgICAgICAgICBNb2RlbC51aUxheW91dE9mKG1vZGVsLmNvbnN0cnVjdG9yKSxcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuICAgIHNvcnRDaGlsZHJlbkJ5T3JkZXIoY2hpbGRyZW4gPSBbXSkge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4uc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgYU9yZGVyID0gYS5wcm9wcz8ub3JkZXIgPz8gMDtcbiAgICAgICAgICAgIGNvbnN0IGJPcmRlciA9IGIucHJvcHM/Lm9yZGVyID8/IDA7XG4gICAgICAgICAgICBjb25zdCB3ZWlnaHQgPSAodikgPT4gdiA9PT0gVUlLZXlzLkZJUlNUXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiB0eXBlb2YgdiA9PT0gUHJpbWl0aXZlcy5OVU1CRVJcbiAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgIDogdiA9PT0gVUlLZXlzLkxBU1RcbiAgICAgICAgICAgICAgICAgICAgICAgID8gLy9UT0RPOiByZXZpZXcgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLmxlbmd0aCArIGNoaWxkcmVuLmluZGV4T2YoYilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIGNvbnN0IGFXZWlnaHQgPSB3ZWlnaHQoYU9yZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGJXZWlnaHQgPSB3ZWlnaHQoYk9yZGVyKTtcbiAgICAgICAgICAgIGlmIChhV2VpZ2h0ICE9PSBiV2VpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFXZWlnaHQgLSBiV2VpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFXZWlnaHQgPT09IDEgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgYU9yZGVyID09PSBQcmltaXRpdmVzLk5VTUJFUiAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBiT3JkZXIgPT09IFByaW1pdGl2ZXMuTlVNQkVSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFPcmRlciAtIGJPcmRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHZhbGlkYXRpb24ga2V5IHJlcHJlc2VudHMgYSBjdXN0b20gdmFsaWRhdG9yIChpLmUuLCBub3QgYSBidWlsdC1pbiB2YWxpZGF0aW9uIG9yIFVJIGtleSkuXG4gICAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBrZXkgY29ycmVzcG9uZHMgdG8gYSB1c2VyLWRlZmluZWQgdmFsaWRhdG9yIGJ5IGV4Y2x1ZGluZyBhbGwgYnVpbHQtaW4gVmFsaWRhdGlvbktleXMgYW5kIFVJS2V5cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgdmFsaWRhdGlvbiBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGtleSBpcyBhIGN1c3RvbSB2YWxpZGF0b3IsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUga2V5IGlzIG5vdCBhIGJ1aWx0LWluIHZhbGlkYXRpb24ga2V5IG9yIFVJIGtleSAoaS5lLiBpcyBjdXN0b20pLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaXNDdXN0b21WYWxpZGF0b3Ioa2V5KSB7XG4gICAgICAgIHJldHVybiAoIU9iamVjdC52YWx1ZXMoVmFsaWRhdGlvbktleXMpLmluY2x1ZGVzKGtleSkgJiYgIU9iamVjdC52YWx1ZXMoVUlLZXlzKS5pbmNsdWRlcyhrZXkpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHR5cGUgaXMgdmFsaWRhdGFibGUgYnkgaXRzIG5hdHVyZS5cbiAgICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gVUkga2V5IHJlcHJlc2VudHMgYSB0eXBlIHRoYXQgaXMgaW5oZXJlbnRseSB2YWxpZGF0YWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgVUkga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB0eXBlIGlzIHZhbGlkYXRhYmxlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaXNWYWxpZGF0YWJsZUJ5VHlwZShrZXkpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKFZhbGlkYXRhYmxlQnlUeXBlKS5pbmNsdWRlcyhrZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2hlY2tzIGlmIGEgdHlwZSBpcyB2YWxpZGF0YWJsZSBieSBhdHRyaWJ1dGUuXG4gICAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIFVJIGtleSByZXByZXNlbnRzIGEgdmFsaWRhdGlvbiB0aGF0IGNhbiBiZSBhcHBsaWVkIGFzIGFuIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgVUkga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB0eXBlIGlzIHZhbGlkYXRhYmxlIGJ5IGF0dHJpYnV0ZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGlzVmFsaWRhdGFibGVCeUF0dHJpYnV0ZShrZXkpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGUpLmluY2x1ZGVzKGtleSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyB2YWxpZGF0aW9uIG1ldGFkYXRhIHRvIGFuIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHZhbGlkYXRpb24gbWV0YWRhdGEgaW50byBhIHZhbHVlIHN1aXRhYmxlIGZvciB1c2UgYXMgYW4gSFRNTCBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHZhbGlkYXRpb24ga2V5LlxuICAgICAqIEBwYXJhbSB7VmFsaWRhdGlvbk1ldGFkYXRhfSB2YWx1ZSAtIFRoZSB2YWxpZGF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmcgfCBudW1iZXIgfCBib29sZWFufSBUaGUgY29udmVydGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIGtleSBpcyBub3QgdmFsaWRhdGFibGUgYnkgYXR0cmlidXRlLlxuICAgICAqL1xuICAgIHRvQXR0cmlidXRlVmFsdWUoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGUpLmluY2x1ZGVzKGtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXR0cmlidXRlIGtleSBcIiR7a2V5fVwiLiBFeHBlY3RlZCBvbmUgb2Y6ICR7T2JqZWN0LmtleXMoVmFsaWRhdGFibGVCeUF0dHJpYnV0ZSkuam9pbihcIiwgXCIpfS5gKTtcbiAgICAgICAgcmV0dXJuIGtleSA9PT0gVUlLZXlzLlJFUVVJUkVEID8gdHJ1ZSA6IHZhbHVlW2tleV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIG1vZGVsIHRvIGEgZmllbGQgZGVmaW5pdGlvbi5cbiAgICAgKiBAc3VtbWFyeSBQcm9jZXNzZXMgYSBtb2RlbCBpbnN0YW5jZSwgZXh0cmFjdGluZyBVSS1yZWxhdGVkIG1ldGFkYXRhIGFuZCB2YWxpZGF0aW9uIHJ1bGVzIHRvIGNyZWF0ZSBhIGZpZWxkIGRlZmluaXRpb24uXG4gICAgICpcbiAgICAgKiBAdGVtcGxhdGUgTSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEB0ZW1wbGF0ZSBUIFR5cGUgcmVmZXJlbmNpbmcgdGhlIHNwZWNpZmljIFJlbmRlcmluZyBlbmdpbmUgZmllbGQgcHJvcGVydGllcy9pbnB1dHNcbiAgICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW2dsb2JhbFByb3BzPXt9XSAtIEdsb2JhbCBwcm9wZXJ0aWVzIHRvIGFwcGx5IHRvIGFsbCBjaGlsZCBlbGVtZW50cy5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtnZW5lcmF0ZUlkPXRydWVdIC0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcG9wdWxhdGUgdGhlIHJlbmRlcmVySWQgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge0ZpZWxkRGVmaW5pdGlvbjxUPn0gQSBmaWVsZCBkZWZpbml0aW9uIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFVJIHN0cnVjdHVyZSBvZiB0aGUgbW9kZWwuXG4gICAgICogQHRocm93cyB7UmVuZGVyaW5nRXJyb3J9IElmIG5vIFVJIGRlZmluaXRpb25zIGFyZSBzZXQgZm9yIHRoZSBtb2RlbCBvciBpZiB0aGVyZSBhcmUgaW52YWxpZCBkZWNvcmF0b3JzLlxuICAgICAqXG4gICAgICogQG1lcm1haWRcbiAgICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICAgKiAgcGFydGljaXBhbnQgQyBhcyBDbGllbnRcbiAgICAgKiAgcGFydGljaXBhbnQgUkUgYXMgUmVuZGVyaW5nRW5naW5lXG4gICAgICogIHBhcnRpY2lwYW50IFIgYXMgUmVmbGVjdGlvblxuICAgICAqICBwYXJ0aWNpcGFudCBNIGFzIE1vZGVsXG4gICAgICogIEMtPj5SRTogdG9GaWVsZERlZmluaXRpb24obW9kZWwsIGdsb2JhbFByb3BzKVxuICAgICAqICBSRS0+PlI6IGdldE1ldGFkYXRhKFVJS2V5cy5VSU1PREVMLCBtb2RlbC5jb25zdHJ1Y3RvcilcbiAgICAgKiAgUi0tPj5SRTogVUlNb2RlbE1ldGFkYXRhXG4gICAgICogIFJFLT4+UjogZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzKG1vZGVsLCBVSUtleXMuUkVGTEVDVClcbiAgICAgKiAgUi0tPj5SRTogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT5cbiAgICAgKiAgUkUtPj5SOiBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnMobW9kZWwsIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QpXG4gICAgICogIFItLT4+UkU6IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT5bXT5cbiAgICAgKiAgbG9vcCBGb3IgZWFjaCBwcm9wZXJ0eVxuICAgICAqICAgIFJFLT4+UkU6IFByb2Nlc3MgVUkgZGVjb3JhdG9yc1xuICAgICAqICAgIFJFLT4+UkU6IEFwcGx5IHZhbGlkYXRpb24gcnVsZXNcbiAgICAgKiAgZW5kXG4gICAgICogIFJFLS0+PkM6IEZpZWxkRGVmaW5pdGlvbjxUPlxuICAgICAqL1xuICAgIHRvRmllbGREZWZpbml0aW9uKG1vZGVsLCBnbG9iYWxQcm9wcyA9IHt9LCBnZW5lcmF0ZUlkID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCB7IGluaGVyaXRQcm9wcywgLi4uZ2xvYmFsUHJvcHNXaXRob3V0SW5oZXJpdHMgfSA9IGdsb2JhbFByb3BzO1xuICAgICAgICBnbG9iYWxQcm9wcyA9IGdsb2JhbFByb3BzV2l0aG91dEluaGVyaXRzO1xuICAgICAgICBjb25zdCBjbGFzc0RlY29yYXRvcnMgPSB0aGlzLmdldENsYXNzRGVjb3JhdG9yc01ldGFkYXRhKG1vZGVsKTtcbiAgICAgICAgaWYgKCFjbGFzc0RlY29yYXRvcnMubGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKGBObyB1aSBkZWZpbml0aW9ucyBzZXQgZm9yIG1vZGVsICR7bW9kZWwuY29uc3RydWN0b3IubmFtZX0uIERpZCB5b3UgdXNlIEB1aW1vZGVsP2ApO1xuICAgICAgICBjb25zdCBjbGFzc0RlY29yYXRvciA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmNsYXNzRGVjb3JhdG9ycywgaW5oZXJpdFByb3BzID8gaW5oZXJpdFByb3BzIDoge30gLy8gb3ZlcnJpZGUgdGFnIGFuZCBwcm9wZXJ0aWVzIHdoZW4gaXQgaXMgYSBjb21wb25lbnQgdGhhdCBzaG91bGQgaW5oZXJpdCBwcm9wZXJ0aWVzIGZyb20gaXRzIHBhcmVudC5cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgeyB0YWcsIHByb3BzLCBpdGVtLCBoYW5kbGVycyB9ID0gY2xhc3NEZWNvcmF0b3I7XG4gICAgICAgIGNvbnN0IHVpRGVjb3JhdG9ycyA9IE1vZGVsLnVpUHJvcGVydGllc09mKG1vZGVsLmNvbnN0cnVjdG9yKTtcbiAgICAgICAgLy8gY29uc3QgdWlEZWNvcmF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPiA9XG4gICAgICAgIC8vICAgUmVmbGVjdGlvbi5nZXRBbGxQcm9wZXJ0eURlY29yYXRvcnMobW9kZWwsIFVJS2V5cy5SRUZMRUNUKSBhcyBSZWNvcmQ8XG4gICAgICAgIC8vICAgICBzdHJpbmcsXG4gICAgICAgIC8vICAgICBEZWNvcmF0b3JNZXRhZGF0YVtdXG4gICAgICAgIC8vICAgPjtcbiAgICAgICAgbGV0IGNoaWxkcmVuO1xuICAgICAgICBsZXQgY2hpbGRQcm9wcyA9IGl0ZW0/LnByb3BzIHx8IHt9O1xuICAgICAgICBsZXQgbWFwcGVyID0ge307XG4gICAgICAgIGNvbnN0IGdldFBhdGggPSAocGFyZW50LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50ID8gW3BhcmVudCwgcHJvcF0uam9pbihcIi5cIikgOiBwcm9wO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodWlEZWNvcmF0b3JzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uRGVjb3JhdG9ycyA9IE1ldGFkYXRhLmdldChtb2RlbC5jb25zdHJ1Y3RvciwgVmFsaWRhdGlvbktleXMuUkVGTEVDVCkgfHwge307XG4gICAgICAgICAgICAvLyBjb25zdCB2YWxpZGF0aW9uRGVjb3JhdG9yczogUmVjb3JkPFxuICAgICAgICAgICAgLy8gICBzdHJpbmcsXG4gICAgICAgICAgICAvLyAgIERlY29yYXRvck1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT5bXVxuICAgICAgICAgICAgLy8gPiA9IFJlZmxlY3Rpb24uZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgICAgICAgLy8gICBtb2RlbCxcbiAgICAgICAgICAgIC8vICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVFxuICAgICAgICAgICAgLy8gKSBhcyBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+W10+O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdWlEZWNvcmF0b3JzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjcyA9IE1vZGVsLnVpRGVjb3JhdGlvbk9mKG1vZGVsLmNvbnN0cnVjdG9yLCBrZXkpO1xuICAgICAgICAgICAgICAgIGxldCB0eXBlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE1vZGVsLnVpVHlwZU9mKG1vZGVsLmNvbnN0cnVjdG9yLCBrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjb25zdCB0eXBlcyA9IE9iamVjdC52YWx1ZXMoZGVjcykuZmlsdGVyKCh7IGtleSB9KSA9PlxuICAgICAgICAgICAgICAgIC8vICAgW1VJS2V5cy5QUk9QLCBVSUtleXMuRUxFTUVOVCwgVUlLZXlzLkNISUxEXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXR5cGUpXG4gICAgICAgICAgICAgICAgLy8gICB0aHJvdyBuZXcgUmVuZGVyaW5nRXJyb3IoXG4gICAgICAgICAgICAgICAgLy8gICAgIGBPbmx5IG9uZSB0eXBlIG9mIGRlY29yYXRpb24gaXMgYWxsb3dlZC4gUGxlYXNlIGNob29zZSBiZXR3ZWVuIEB1aXByb3AsIEB1aWNoaWxkIG9yIEB1aWVsZW1lbnRgXG4gICAgICAgICAgICAgICAgLy8gICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0hpZGVPbkRlY29yYXRvciA9IE1vZGVsLnVpSXNIaWRkZW4obW9kZWwuY29uc3RydWN0b3IsIGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0hpZGVPbkRlY29yYXRvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNVaUVsZW1lbnREZWNvcmF0b3IgPSBNb2RlbC51aUVsZW1lbnRPZihtb2RlbC5jb25zdHJ1Y3Rvciwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNVaUVsZW1lbnREZWNvcmF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVuZGVyaW5nRXJyb3IoYEB1aWVsZW1lbnQgbm8gZm91bmQgaW4gXCIke2tleX1cIi4gSXQgaXMgcmVxdWlyZWQgdG8gdXNlIGhpZGRlbk9uIGRlY29yYXRvci5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydGVkID0gT2JqZWN0LmVudHJpZXMoZGVjcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGssXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB2LFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1VJS2V5cy5FTEVNRU5ULCBVSUtleXMuQ0hJTERdLmluY2x1ZGVzKGEua2V5KSA/IC0xIDogMTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzb3J0ZWQuZm9yRWFjaCgoZGVjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVjKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKGBObyBkZWNvcmF0b3IgZm91bmRgKTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZWMua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFVJS2V5cy5QUk9QOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wc1trZXldID0gZGVjLnByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBVSUtleXMuQ0hJTEQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbE5hbWUgPSBkZWMucHJvcHM/LnByb3BzPy5uYW1lIHx8IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1Byb3BlcnR5TW9kZWwgPSBNb2RlbC5pc01vZGVsKE1vZGVsLmJ1aWxkKHt9LCBtb2RlbE5hbWUpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWwuaXNQcm9wZXJ0eU1vZGVsKG1vZGVsLCBtb2RlbE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUHJvcGVydHlNb2RlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZW5kZXJpbmdFcnJvcihgQ2hpbGQgXCIke21vZGVsTmFtZX1cIiBtdXN0IGJlIGEgbW9kZWwuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKGBDaGlsZCBcIiR7bW9kZWxOYW1lfVwiIG11c3QgYmUgYSBtb2RlbC5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IENsYXp6O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1vZGVsID0gbW9kZWxba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJ1Y3RhYmxlID0gdHlwZW9mIHN1Ym1vZGVsID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZGVsICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHN1Ym1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgaW5zdGFuY2UgaWYgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdHJ1Y3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6TmFtZSA9IGRlYy5wcm9wcy5wcm9wcz8ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhenogPSBuZXcgKE1vZGVsLmdldChjbGF6ek5hbWUpKSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuR2xvYmFsUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBnbG9iYWxQcm9wcyB8fCB7fSwgeyBtb2RlbDogQ2xhenogfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0UHJvcHM6IGRlYy5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRPZjogZ2V0UGF0aChnbG9iYWxQcm9wcz8uY2hpbGRPZiwga2V5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZERlZmluaXRpb24gPSB0aGlzLnRvRmllbGREZWZpbml0aW9uKHN1Ym1vZGVsIHx8IENsYXp6LCAvLyBNdXN0IGF2b2lkIHVuZGVmaW5lZCB2YWx1ZXMg4oCUIGFuIGluc3RhbmNlIGlzIHJlcXVpcmVkIHRvIHJldHJpZXZlIHByb3BlcnRpZXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5HbG9iYWxQcm9wcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgaW5oZXJpdFByb3BzIH0gPSBjaGlsZHJlbkdsb2JhbFByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmhlcml0UHJvcHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIGNoaWxkRGVmaW5pdGlvbi5wcm9wcywgaW5oZXJpdFByb3BzLnByb3BzIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkRGVmaW5pdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFVJS2V5cy5VSUxJU1RQUk9QOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVyID0gbWFwcGVyIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY1Byb3BzID0gZGVjLnByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWNQcm9wcy5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwZXJbZGVjUHJvcHMubmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGRlY1Byb3BzPy5wcm9wcyA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJS2V5cy5TRVFVRU5DRSBpbiBkZWNQcm9wcy5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGVjUHJvcHMucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIGNsYXNzRGVjb3JhdG9yLnByb3BzPy5pdGVtIHx8IHt9LCBpdGVtPy5wcm9wcyB8fCB7fSwgZGVjUHJvcHM/LnByb3BzIHx8IHt9LCBnbG9iYWxQcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpdGVtPy50YWcgfHwgcHJvcHMucmVuZGVyIHx8IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBPYmplY3QuYXNzaWduKHt9LCBjaGlsZFByb3BzPy5wcm9wcywgeyBtYXBwZXIgfSwgcHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFVJS2V5cy5FVkVOVFM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFVJS2V5cy5ISURERU46XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFVJS2V5cy5ISURFX0ZPUjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVUlLZXlzLlNIT1dfRk9SOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBVSUtleXMuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVUlLZXlzLk9SREVSOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBVSUtleXMuVUlMQVlPVVRQUk9QOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBVSUtleXMuRUxFTUVOVDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlQcm9wcyA9IGRlYy5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXNpYmlsaXR5UHJvcHMgPSBkZWMua2V5ID09PSBVSUtleXMuSElERV9GT1JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGhpZGVGb3I6IGRlYy5wcm9wcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGVjLmtleSA9PT0gVUlLZXlzLlNIT1dfRk9SXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgc2hvd0ZvcjogZGVjLnByb3BzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBjaGlsZFByb3BzPy5wcm9wcywgdWlQcm9wcy5wcm9wcyB8fCB7fSwgdmlzaWJpbGl0eVByb3BzLCB1aVByb3BzPy5wcm9wcz8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGdldFBhdGgoZ2xvYmFsUHJvcHM/LmNoaWxkT2YsIHVpUHJvcHMucHJvcHMubmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE9mOiB1bmRlZmluZWQsIC8vIFRoZSBjaGlsZE9mIHByb3AgaXMgcGFzc2VkIGJ5IGdsb2JhbFByb3BzIHdoZW4gaXQgaXMgYSBuZXN0ZWQgcHJvcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30sIGdsb2JhbFByb3BzLCB7IG5hbWU6IHVpUHJvcHMucHJvcHM/Lm5hbWUgfHwga2V5IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWMua2V5ID09PSBVSUtleXMuRUxFTUVOVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZERlZmluaXRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6IHVpUHJvcHMudGFnIHx8IGNoaWxkUHJvcHM/LnRhZyB8fCB0YWcgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uRGVjcyA9IHZhbGlkYXRpb25EZWNvcmF0b3JzW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRGVjcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZWMgb2YgT2JqZWN0LmVudHJpZXModmFsaWRhdGlvbkRlY3MpLm1hcCgoW2ssIHZdKSA9PiAoeyBrZXk6IGssIHByb3BzOiB2IH0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRhdGFibGVCeUF0dHJpYnV0ZShkZWMua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZERlZmluaXRpb24ucHJvcHNbdGhpcy50cmFuc2xhdGUoZGVjLmtleSldID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9BdHRyaWJ1dGVWYWx1ZShkZWMua2V5LCBkZWMucHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZGF0YWJsZUJ5VHlwZShkZWMua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjLmtleSA9PT0gSFRNTDVJbnB1dFR5cGVzLkRBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuRk9STUFUXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjLnByb3BzLmZvcm1hdCB8fCBIVE1MNURhdGVGb3JtYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGREZWZpbml0aW9uLnByb3BzW1VJS2V5cy5UWVBFXSA9IGRlYy5rZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0N1c3RvbVZhbGlkYXRvcihkZWMua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1tVSUtleXMuU1VCX1RZUEVdID0gZGVjLmtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYy5wcm9wcz8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNbVUlLZXlzLlZBTElEQVRJT05fTUVTU0FHRV0gPSBkZWMucHJvcHMubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuVFlQRV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljVHlwZSA9IE1ldGFkYXRhLnR5cGUobW9kZWwuY29uc3RydWN0b3IsIGtleSkubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuVFlQRV0gPSB0aGlzLnRyYW5zbGF0ZShiYXNpY1R5cGUudG9Mb3dlckNhc2UoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGREZWZpbml0aW9uLnByb3BzLnZhbHVlID0gZm9ybWF0QnlUeXBlKGNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuVFlQRV0sIG1vZGVsW2tleV0sIGNoaWxkRGVmaW5pdGlvbi5wcm9wc1tVSUtleXMuRk9STUFUXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGREZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW4uZmluZCgoYykgPT4gYy5wcm9wcz8ubmFtZSA9PT0ga2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1VJS2V5cy5VSUxBWU9VVFBST1AsIFVJS2V5cy5QQUdFLCBVSUtleXMuRVZFTlRTXS5pbmNsdWRlcyhkZWMua2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLnByb3BzPy5jaGlsZE9mID09PSBrZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5wcm9wcz8uY2hpbGRPZj8uZW5kc1dpdGgoYC4ke2tleX1gKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjLmtleSA9PT0gVUlLZXlzLkhJREVfRk9SIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjLmtleSA9PT0gVUlLZXlzLlNIT1dfRk9SKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQucHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBjaGlsZC5wcm9wcywgdmlzaWJpbGl0eVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlYy5rZXkgIT09IFVJS2V5cy5VSUxBWU9VVFBST1ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5wcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIGNoaWxkLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWMua2V5XTogdWlQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcm93LCBjb2wsIHByb3BzIH0gPSBkZWMucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQucHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcyB8fCB7fSwgY2hpbGQucHJvcHMsIHJvdywgY29sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKGBJbnZhbGlkIGtleTogJHtkZWMua2V5fWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywgZ2xvYmFsUHJvcHMsIHtcbiAgICAgICAgICAgIGhhbmRsZXJzOiBoYW5kbGVycyB8fCB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROYW1lc3BhY2VzID0gbmV3IFNldChbXG4gICAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShnbG9iYWxQcm9wcz8ubmFtZXNwYWNlcylcbiAgICAgICAgICAgICAgICA/IGdsb2JhbFByb3BzLm5hbWVzcGFjZXNcbiAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgIC4uLih0eXBlb2YgZ2xvYmFsUHJvcHM/Lm5hbWVzcGFjZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgID8gW2dsb2JhbFByb3BzLm5hbWVzcGFjZV1cbiAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBnbG9iYWxQcm9wcz8ub3BlcmF0aW9uO1xuICAgICAgICBjaGlsZHJlbiA9IHRoaXMuc29ydENoaWxkcmVuQnlPcmRlcihjaGlsZHJlbikuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoaWRkZW5PbiA9IGl0ZW0/LnByb3BzPy5oaWRkZW4gfHwgW107XG4gICAgICAgICAgICBpZiAoaGlkZGVuT24ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIGhpZGRlbk9uLmluY2x1ZGVzKG9wZXJhdGlvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBoaWRlRm9yID0gaXRlbT8ucHJvcHM/LmhpZGVGb3IgfHwgW107XG4gICAgICAgICAgICBjb25zdCBzaG93Rm9yID0gaXRlbT8ucHJvcHM/LnNob3dGb3IgfHwgW107XG4gICAgICAgICAgICBpZiAoaGlkZUZvci5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgWy4uLmN1cnJlbnROYW1lc3BhY2VzXS5zb21lKChuYW1lc3BhY2UpID0+IGhpZGVGb3IuaW5jbHVkZXMobmFtZXNwYWNlKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2hvd0Zvci5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgIVsuLi5jdXJyZW50TmFtZXNwYWNlc10uc29tZSgobmFtZXNwYWNlKSA9PiBzaG93Rm9yLmluY2x1ZGVzKG5hbWVzcGFjZSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgICAgIGl0ZW06IGNoaWxkUHJvcHMsXG4gICAgICAgICAgICBwcm9wczogZ2xvYmFsUHJvcHMsXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4/Lmxlbmd0aFxuICAgICAgICAgICAgICAgID8gY2hpbGRyZW5cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGdlbmVyYXRlSWQpXG4gICAgICAgICAgICByZXN1bHQucmVuZGVyZXJJZCA9IGdlbmVyYXRlVUlNb2RlbElEKG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIHJlbmRlcmluZyBlbmdpbmUgaW5zdGFuY2UuXG4gICAgICogQHN1bW1hcnkgQWRkcyBhIHJlbmRlcmluZyBlbmdpbmUgdG8gdGhlIHN0YXRpYyBjYWNoZSBhbmQgc2V0cyBpdCBhcyB0aGUgY3VycmVudCBlbmdpbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlbmRlcmluZ0VuZ2luZTx1bmtub3duLCB1bmtub3duPn0gZW5naW5lIC0gVGhlIHJlbmRlcmluZyBlbmdpbmUgdG8gcmVnaXN0ZXIuXG4gICAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgYW4gZW5naW5lIHdpdGggdGhlIHNhbWUgZmxhdm9yIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqL1xuICAgIHN0YXRpYyByZWdpc3RlcihlbmdpbmUpIHtcbiAgICAgICAgaWYgKGVuZ2luZS5mbGF2b3VyIGluIHRoaXMuY2FjaGUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgUmVuZGVyaW5nIGVuZ2luZSB1bmRlciAke2VuZ2luZS5mbGF2b3VyfSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICB0aGlzLmNhY2hlW2VuZ2luZS5mbGF2b3VyXSA9IGVuZ2luZTtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gZW5naW5lO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIG9yIGluaXRpYWxpemVzIGEgcmVuZGVyaW5nIGVuZ2luZS5cbiAgICAgKiBAc3VtbWFyeSBHZXRzIGFuIGV4aXN0aW5nIGVuZ2luZSBpbnN0YW5jZSBvciBjcmVhdGVzIGFuZCBpbml0aWFsaXplcyBhIG5ldyBvbmUgaWYgZ2l2ZW4gYSBjb25zdHJ1Y3Rvci5cbiAgICAgKlxuICAgICAqIEB0ZW1wbGF0ZSBPIFRoZSB0eXBlIG9mIHRoZSByZW5kZXJpbmcgZW5naW5lIG91dHB1dFxuICAgICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8UmVuZGVyaW5nRW5naW5lPE8+PiB8IFJlbmRlcmluZ0VuZ2luZTxPPn0gb2JqIC0gVGhlIGVuZ2luZSBpbnN0YW5jZSBvciBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAcmV0dXJucyB7UmVuZGVyaW5nRW5naW5lPE8+fSBUaGUgaW5pdGlhbGl6ZWQgcmVuZGVyaW5nIGVuZ2luZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHN0YXRpY1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRPckJvb3Qob2JqKSB7XG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBSZW5kZXJpbmdFbmdpbmUpXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICBjb25zdCBlbmdpbmUgPSBuZXcgb2JqKCk7XG4gICAgICAgIGVuZ2luZS5pbml0aWFsaXplKCk7IC8vIG1ha2UgdGhlIGJvb3RpbmcgYXN5bmMuIHVzZSB0aGUgaW5pdGlhbGl6ZWQgZmxhZyB0byBjb250cm9sIGl0XG4gICAgICAgIHJldHVybiBlbmdpbmU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSByZW5kZXJpbmcgZW5naW5lIGJ5IGZsYXZvci5cbiAgICAgKiBAc3VtbWFyeSBHZXRzIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgb3IgYSBzcGVjaWZpYyBvbmUgYnkgZmxhdm9yLlxuICAgICAqXG4gICAgICogQHRlbXBsYXRlIE8gVGhlIHR5cGUgb2YgdGhlIHJlbmRlcmluZyBlbmdpbmUgb3V0cHV0XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtmbGF2b3VyXSAtIFRoZSBmbGF2b3Igb2YgdGhlIHJlbmRlcmluZyBlbmdpbmUgdG8gcmV0cmlldmUuXG4gICAgICogQHJldHVybnMge1JlbmRlcmluZ0VuZ2luZTxPPn0gVGhlIHJlcXVlc3RlZCByZW5kZXJpbmcgZW5naW5lLlxuICAgICAqIEB0aHJvd3Mge0ludGVybmFsRXJyb3J9IElmIHRoZSByZXF1ZXN0ZWQgZmxhdm9yIGRvZXMgbm90IGV4aXN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXQoZmxhdm91cikge1xuICAgICAgICBpZiAoIWZsYXZvdXIpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPckJvb3QodGhpcy5jdXJyZW50KTtcbiAgICAgICAgaWYgKCEoZmxhdm91ciBpbiB0aGlzLmNhY2hlKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBSZW5kZXJpbmcgZW5naW5lIHVuZGVyICR7Zmxhdm91cn0gZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3JCb290KHRoaXMuY2FjaGVbZmxhdm91cl0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVuZGVycyBhIG1vZGVsIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSByZW5kZXJpbmcgZW5naW5lLlxuICAgICAqIEBzdW1tYXJ5IERldGVybWluZXMgdGhlIGNvcnJlY3QgcmVuZGVyaW5nIGVuZ2luZSBmb3IgYSBtb2RlbCBhbmQgaW52b2tlcyBpdHMgcmVuZGVyIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEB0ZW1wbGF0ZSBNIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCB0byByZW5kZXIuXG4gICAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHJlbmRlciBtZXRob2QuXG4gICAgICogQHJldHVybnMge2FueX0gVGhlIHJlc3VsdCBvZiB0aGUgcmVuZGVyaW5nIHByb2Nlc3MuXG4gICAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgbm8gcmVnaXN0ZXJlZCBtb2RlbCBpcyBmb3VuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVuZGVyKG1vZGVsLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gTW9kZWwuZ2V0KG1vZGVsLmNvbnN0cnVjdG9yLm5hbWUpIHx8IE1vZGVsLmZyb21PYmplY3QobW9kZWwpO1xuICAgICAgICBpZiAoIWNvbnN0cnVjdG9yKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJObyBtb2RlbCByZWdpc3RlcmVkIGZvdW5kXCIpO1xuICAgICAgICBjb25zdCBmbGF2b3VyID0gTW9kZWwucmVuZGVyZWRCeShtb2RlbC5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZm9yIHRoZSB2YXIgYXJncyB0eXBlIGNoZWNrXG4gICAgICAgIHJldHVybiBSZW5kZXJpbmdFbmdpbmUuZ2V0KGZsYXZvdXIpLnJlbmRlcihtb2RlbCwgLi4uYXJncyk7XG4gICAgfVxufVxuLy9cbi8vIERlY29yYXRpb24uZm9yKERCS2V5cy5JRClcbi8vICAgLmV4dGVuZCh7XG4vLyAgICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBwayhvcHRpb25zOiB7IGdlbmVyYXRlZDogYm9vbGVhbiB9KSB7XG4vLyAgICAgICByZXR1cm4gZnVuY3Rpb24gaW5uZXJQayh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHlLZXk/OiBhbnkpIHtcbi8vICAgICAgICAgaWYgKG9wdGlvbnMuZ2VuZXJhdGVkKVxuLy8gICAgICAgICAgIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpKFxuLy8gICAgICAgICAgICAgdGFyZ2V0LFxuLy8gICAgICAgICAgICAgcHJvcGVydHlLZXlcbi8vICAgICAgICAgICApO1xuLy8gICAgICAgfTtcbi8vICAgICB9LFxuLy8gICB9KVxuLy8gICAuYXBwbHkoKTtcbi8vXG4vLyBEZWNvcmF0aW9uLmZvcihEQktleXMuVElNRVNUQU1QKVxuLy8gICAuZXh0ZW5kKHtcbi8vICAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIHRpbWVzdGFtcChvcHM6IE9wZXJhdGlvbktleXNbXSkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbiguLi4ob3BzIGFzIGFueVtdKSk7XG4vLyAgICAgfSxcbi8vICAgfSlcbi8vICAgLmFwcGx5KCk7XG4vL1xuLy8gRGVjb3JhdGlvbi5mb3IoREJLZXlzLkNPTVBPU0VEKVxuLy8gICAuZXh0ZW5kKHtcbi8vICAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIGNvbXBvc2VkKCkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuLy9cbi8vIERlY29yYXRpb24uZm9yKFwiY3JlYXRlZEJ5XCIpXG4vLyAgIC5leHRlbmQoe1xuLy8gICAgIGRlY29yYXRvcjogZnVuY3Rpb24gY3JlYXRlZEJ5KCkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuLy9cbi8vIERlY29yYXRpb24uZm9yKFwidXBkYXRlZEJ5XCIpXG4vLyAgIC5leHRlbmQoe1xuLy8gICAgIGRlY29yYXRvcjogZnVuY3Rpb24gY3JlYXRlZEJ5KCkge1xuLy8gICAgICAgcmV0dXJuIGhpZGVPbihPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEUpO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVW1WdVpHVnlhVzVuTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZjM0pqTDNWcEwxSmxibVJsY21sdVp5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVVVc1lVRkJZU3hGUVVGRkxHRkJRV0VzUlVGQlJTeE5RVUZOTEhsQ1FVRjVRaXhEUVVGRE8wRkJRM1pGTEU5QlFVOHNSVUZEVEN4bFFVRmxMRVZCUTJZc1pVRkJaU3hGUVVObUxFMUJRVTBzUlVGRFRpeHpRa0ZCYzBJc1JVRkRkRUlzYVVKQlFXbENMRWRCUTJ4Q0xIVkNRVUZ2UWp0QlFXVnlRaXhQUVVGUExFVkJRVVVzWTBGQll5eEZRVUZGTEc5Q1FVRnBRanRCUVVNeFF5eFBRVUZQTEVWQlFVVXNXVUZCV1N4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEcxQ1FVRm5RanRCUVVNeFJDeFBRVUZQTEVWQlFXVXNVVUZCVVN4RlFVRkZMRTFCUVUwc2MwSkJRWE5DTEVOQlFVTTdRVUZETjBRc1QwRkJUeXhGUVVOTUxFdEJRVXNzUlVGRlRDeFZRVUZWTEVWQlExWXNZMEZCWXl4RlFVTmtMR05CUVdNc1IwRkZaaXhOUVVGTkxHZERRVUZuUXl4RFFVRkRPMEZCVVhoRE96czdPenM3T3pzN096czdSMEZaUnp0QlFVTklPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hQUVVGblFpeGxRVUZsTzBsQlEyNURPenM3TzA5QlNVYzdZVUZEV1N4VlFVRkxMRWRCU1doQ0xFVkJRVVVzUVVGS1l5eERRVWxpTzBsQlowSlFMRmxCUVN0Q0xFOUJRV1U3VVVGQlppeFpRVUZQTEVkQlFWQXNUMEZCVHl4RFFVRlJPMUZCVERsRE96dFhRVVZITzFGQlEwOHNaMEpCUVZjc1IwRkJXU3hMUVVGTExFTkJRVU03VVVGSGNrTXNaVUZCWlN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU12UWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzVDBGQlR5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUYzUWtRN096czdPenM3VDBGUFJ6dEpRVU5JTEZOQlFWTXNRMEZCUXl4SFFVRlhMRVZCUVVVc1UwRkJhMElzU1VGQlNUdFJRVU16UXl4SlFVRkpMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRMWdzVVVGQlVTeEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkRXaXhMUVVGTExHTkJRV01zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHR2UWtGRE0wTXNUMEZCVHl4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU01UWl4TFFVRkxMR05CUVdNc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMmRDUVVNNVF5eExRVUZMTEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdHZRa0ZETTBNc1QwRkJUeXhsUVVGbExFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTm9ReXhMUVVGTExHTkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHR2UWtGRE5VTXNUMEZCVHl4bFFVRmxMRU5CUVVNc1VVRkJVU3hEUVVGRE8yZENRVU5zUXl4TFFVRkxMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlR0dlFrRkRla01zVDBGQlR5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRPMWxCUTJoRExFTkJRVU03VVVGRFNDeERRVUZETzJGQlFVMHNRMEZCUXp0WlFVTk9MRkZCUVZFc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlExb3NTMEZCU3l4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8yZENRVU0xUWl4TFFVRkxMR1ZCUVdVc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlF6RkNMRXRCUVVzc1pVRkJaU3hEUVVGRExFdEJRVXNzUTBGQlF6dG5Ra0ZETTBJc1MwRkJTeXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETzJkQ1FVTXpRaXhMUVVGTExHVkJRV1VzUTBGQlF5eFJRVUZSTEVOQlFVTTdaMEpCUXpsQ0xFdEJRVXNzWlVGQlpTeERRVUZETEVkQlFVY3NRMEZCUXp0blFrRkRla0lzUzBGQlN5eGxRVUZsTEVOQlFVTXNSMEZCUnl4RFFVRkRPMmRDUVVONlFpeExRVUZMTEdWQlFXVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1owSkJRelZDTEV0QlFVc3NaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkJRenRuUWtGRE5VSXNTMEZCU3l4bFFVRmxMRU5CUVVNc1VVRkJVU3hEUVVGRE8yZENRVU01UWl4TFFVRkxMR1ZCUVdVc1EwRkJReXhMUVVGTE8yOUNRVU40UWl4UFFVRlBMR05CUVdNc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMmRDUVVOc1JDeExRVUZMTEdWQlFXVXNRMEZCUXl4TlFVRk5PMjlDUVVONlFpeFBRVUZQTEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzJkQ1FVTnNSQ3hMUVVGTExHVkJRV1VzUTBGQlF5eFJRVUZSTzI5Q1FVTXpRaXhQUVVGUExHTkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8yZENRVU51UkN4TFFVRkxMR1ZCUVdVc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlF6RkNMRXRCUVVzc1pVRkJaU3hEUVVGRExHTkJRV01zUTBGQlF6dG5Ra0ZEY0VNc1MwRkJTeXhsUVVGbExFTkJRVU1zU1VGQlNUdHZRa0ZEZGtJc1QwRkJUeXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJRenRaUVVOc1JDeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVTkVMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3p0UFFWZEhPMGxCUTBzc01FSkJRVEJDTEVOQlEyaERMRXRCUVZFN1VVRkZVaXhQUVVGUE8xbEJRMHdzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJOa0lzUTBGQlF6dFpRVU53UkN4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUUyUWl4RFFVRkRPMWxCUTNoRUxFdEJRVXNzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVRaQ0xFTkJRVU03V1VGRGVFUXNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQk5rSXNRMEZCUXp0VFFVTjBSQ3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFYTkNMRU5CUVVNN1NVRkRla01zUTBGQlF6dEpRVVZQTEcxQ1FVRnRRaXhEUVVGRExGZEJRVzFETEVWQlFVVTdVVUZETDBRc1QwRkJUeXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTnVReXhOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRGJrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGclFpeEZRVUZGTEVWQlFVVXNRMEZEY0VNc1EwRkJReXhMUVVGTExFMUJRVTBzUTBGQlF5eExRVUZMTzJkQ1FVTm9RaXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEU0N4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzVlVGQlZTeERRVUZETEUxQlFVMDdiMEpCUXpsQ0xFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTklMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVazdkMEpCUTJwQ0xFTkJRVU1zUTBGQlF5eHRRa0ZCYlVJN05FSkJRMjVDTEZGQlFWRXNRMEZCUXl4TlFVRk5MRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdkMEpCUTNaRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGV2l4TlFVRk5MRTlCUVU4c1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZETDBJc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUXk5Q0xFbEJRVWtzVDBGQlR5eExRVUZMTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmRDUVVONFFpeFBRVUZQTEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNN1dVRkRNMElzUTBGQlF6dFpRVVZFTEVsQlEwVXNUMEZCVHl4TFFVRkxMRU5CUVVNN1owSkJRMklzVDBGQlR5eE5RVUZOTEV0QlFVc3NWVUZCVlN4RFFVRkRMRTFCUVUwN1owSkJRMjVETEU5QlFVOHNUVUZCVFN4TFFVRkxMRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRMjVETEVOQlFVTTdaMEpCUTBRc1QwRkJUeXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzFsQlEzcENMRU5CUVVNN1dVRkRSQ3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5ZTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTB3c1EwRkJRenRKUVVWRU96czdPenM3TzA5QlQwYzdTVUZEVHl4cFFrRkJhVUlzUTBGQlF5eEhRVUZYTzFGQlEzSkRMRTlCUVU4c1EwRkRUQ3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVOeVF5eEhRVUV5UkN4RFFVTTFSQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlF6RkRMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVE3T3pzN096dFBRVTFITzBsQlEwOHNiVUpCUVcxQ0xFTkJRVU1zUjBGQlZ6dFJRVU4yUXl4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEZEVRc1EwRkJRenRKUVVWRU96czdPenM3VDBGTlJ6dEpRVU5QTEhkQ1FVRjNRaXhEUVVGRExFZEJRVmM3VVVGRE5VTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlF6TkVMRU5CUVVNN1NVRkZSRHM3T3pzN096czdUMEZSUnp0SlFVTlBMR2RDUVVGblFpeERRVU40UWl4SFFVRlhMRVZCUTFnc1MwRkJlVUk3VVVGRmVrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETzFsQlEzQkVMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRMklzTUVKQlFUQkNMRWRCUVVjc2RVSkJRWFZDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGRGRFY3NRMEZCUXp0UlFVVktMRTlCUVU4c1IwRkJSeXhMUVVGTExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNKRUxFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPMDlCT0VKSE8wbEJRMDhzYVVKQlFXbENMRU5CUTNwQ0xFdEJRVkVzUlVGRFVpeGpRVUYxUXl4RlFVRkZMRVZCUTNwRExHRkJRWE5DTEVsQlFVazdVVUZGTVVJc1RVRkJUU3hGUVVGRkxGbEJRVmtzUlVGQlJTeEhRVUZITERCQ1FVRXdRaXhGUVVGRkxFZEJRVWNzVjBGQlZ5eERRVUZETzFGQlEzQkZMRmRCUVZjc1IwRkJSeXd3UWtGQk1FSXNRMEZCUXp0UlFVVjZReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVWtzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGYkVVc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eE5RVUZOTzFsQlEzcENMRTFCUVUwc1NVRkJTU3hqUVVGakxFTkJRM1JDTEcxRFFVRnRReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NlVUpCUVhsQ0xFTkJRMjVHTEVOQlFVTTdVVUZGU2l4TlFVRk5MR05CUVdNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVU5zUXl4RlFVRkZMRVZCUTBZc1IwRkJSeXhsUVVGbExFVkJRMnhDTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNjVWRCUVhGSE8xTkJRM1pKTEVOQlFVTTdVVUZEUml4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWRCUVVjc1kwRkJZeXhEUVVGRE8xRkJSWFJFTEUxQlFVMHNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRM1pETEV0QlFVc3NRMEZCUXl4WFFVRTJRaXhEUVVOeVFpeERRVUZETzFGQlJXcENMRFJFUVVFMFJEdFJRVU0xUkN3d1JVRkJNRVU3VVVGRE1VVXNZMEZCWXp0UlFVTmtMREJDUVVFd1FqdFJRVU14UWl4UFFVRlBPMUZCUTFBc1NVRkJTU3hSUVVFMFJDeERRVUZETzFGQlEycEZMRWxCUVVrc1ZVRkJWU3hIUVVGM1FpeEpRVUZKTEVWQlFVVXNTMEZCU3l4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVONFJDeEpRVUZKTEUxQlFVMHNSMEZCZDBJc1JVRkJSU3hEUVVGRE8xRkJRM0pETEUxQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVNc1RVRkJNRUlzUlVGQlJTeEpRVUZaTEVWQlFVVXNSVUZCUlR0WlFVTXpSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03VVVGRGJFUXNRMEZCUXl4RFFVRkRPMUZCUlVZc1NVRkJTU3haUVVGWkxFVkJRVVVzUTBGQlF6dFpRVU5xUWl4TlFVRk5MRzlDUVVGdlFpeEhRVU40UWl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVOV0xFdEJRVXNzUTBGQlF5eFhRVUV3UWl4RlFVTm9ReXhqUVVGakxFTkJRVU1zVDBGQlR5eERRVU4yUWl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOV0xITkRRVUZ6UXp0WlFVTjBReXhaUVVGWk8xbEJRMW9zTkVOQlFUUkRPMWxCUXpWRExESkRRVUV5UXp0WlFVTXpReXhYUVVGWE8xbEJRMWdzTWtKQlFUSkNPMWxCUXpOQ0xHZEZRVUZuUlR0WlFVTm9SU3hMUVVGTExFMUJRVTBzUjBGQlJ5eEpRVUZKTEZsQlFWa3NSVUZCUlN4RFFVRkRPMmRDUVVNdlFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1kwRkJZeXhEUVVNdlFpeExRVUZMTEVOQlFVTXNWMEZCTmtJc1JVRkRia01zUjBGQlJ5eERRVU5LTEVOQlFVTTdaMEpCUTBZc1NVRkJTU3hKUVVGVExFTkJRVU03WjBKQlEyUXNTVUZCU1N4RFFVRkRPMjlDUVVOSUxEWkVRVUUyUkR0dlFrRkROMFFzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVFpDTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMnhGTEVOQlFVTTdaMEpCUVVNc1QwRkJUeXhEUVVGVkxFVkJRVVVzUTBGQlF6dHZRa0ZEY0VJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEdGQlFXRXNRMEZCUXp0M1FrRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETjBNc1EwRkJRenRuUWtGRFJDeDNSRUZCZDBRN1owSkJRM2hFTERoRVFVRTRSRHRuUWtGRE9VUXNTMEZCU3p0blFrRkRUQ3hoUVVGaE8yZENRVU5pTERoQ1FVRTRRanRuUWtGRE9VSXNjMGRCUVhOSE8yZENRVU4wUnl4UFFVRlBPMmRDUVVOUUxFMUJRVTBzYTBKQlFXdENMRWRCUVVjc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGRGVrTXNTMEZCU3l4RFFVRkRMRmRCUVRaQ0xFVkJRMjVETEVkQlFVY3NRMEZEU2l4RFFVRkRPMmRDUVVOR0xFbEJRVWtzYTBKQlFXdENMRVZCUVVVc1EwRkJRenR2UWtGRGRrSXNUVUZCVFN4eFFrRkJjVUlzUjBGQlJ5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVTTNReXhMUVVGTExFTkJRVU1zVjBGQk5rSXNSVUZEYmtNc1IwRkJSeXhEUVVOS0xFTkJRVU03YjBKQlEwWXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFqdDNRa0ZEZUVJc1RVRkJUU3hKUVVGSkxHTkJRV01zUTBGRGRFSXNNa0pCUVRKQ0xFZEJRV0VzT0VOQlFUaERMRU5CUTNaR0xFTkJRVU03WjBKQlEwNHNRMEZCUXp0blFrRkRSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenR4UWtGRGFFTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN2IwSkJRMmhDTEVkQlFVY3NSVUZCUlN4RFFVRkRPMjlDUVVOT0xFdEJRVXNzUlVGQlJTeERRVUZETzJsQ1FVTlVMRU5CUVVNc1EwRkJRenR4UWtGRFJpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHR2UWtGRFZpeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEwd3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTzI5Q1FVTnlRaXhKUVVGSkxFTkJRVU1zUjBGQlJ6dDNRa0ZCUlN4TlFVRk5MRWxCUVVrc1kwRkJZeXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNN2IwSkJSWHBFTEZGQlFWRXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8zZENRVU5vUWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZET3pSQ1FVTnFRaXhWUVVGVkxFTkJRVU1zUjBGQlZTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVhWQ0xFTkJRVU03TkVKQlEzSkVMRTFCUVUwN2QwSkJRMUlzUTBGQlF6dDNRa0ZEUkN4TFFVRkxMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZET3pSQ1FVTnNRaXhOUVVGTkxGTkJRVk1zUjBGRFdpeEhRVUZITEVOQlFVTXNTMEZCZVVJc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEpRVUZMTEVkQlFXTXNRMEZCUXpzMFFrRkRha1VzU1VGQlNTeERRVUZETzJkRFFVTklMRTFCUVUwc1pVRkJaU3hIUVVOdVFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMjlEUVVONlF5eExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dG5RMEZETVVNc1NVRkJTU3hEUVVGRExHVkJRV1U3YjBOQlEyeENMRTFCUVUwc1NVRkJTU3hqUVVGakxFTkJRM1JDTEZWQlFWVXNVMEZCYlVJc2IwSkJRVzlDTEVOQlEyeEVMRU5CUVVNN1owTkJRMG9zTmtSQlFUWkVPelJDUVVNdlJDeERRVUZET3pSQ1FVRkRMRTlCUVU4c1EwRkJWU3hGUVVGRkxFTkJRVU03WjBOQlEzQkNMRTFCUVUwc1NVRkJTU3hqUVVGakxFTkJRM1JDTEZWQlFWVXNVMEZCYlVJc2IwSkJRVzlDTEVOQlEyeEVMRU5CUVVNN05FSkJRMG9zUTBGQlF6czBRa0ZGUkN4SlFVRkpMRXRCUVVzc1EwRkJRenMwUWtGRFZpeE5RVUZOTEZGQlFWRXNSMEZCU1N4TFFVRTJRaXhEUVVNM1F5eEhRVUZWTEVOQlEwWXNRMEZCUXpzMFFrRkRXQ3hOUVVGTkxHRkJRV0VzUjBGRGFrSXNUMEZCVHl4UlFVRlJMRXRCUVVzc1VVRkJVVHRuUTBGRE5VSXNVVUZCVVN4TFFVRkxMRWxCUVVrN1owTkJRMnBDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6czBRa0ZETTBJc0swSkJRU3RDT3pSQ1FVTXZRaXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdaME5CUTI1Q0xFMUJRVTBzVTBGQlV5eEhRVU5hTEVkQlFVY3NRMEZCUXl4TFFVRmhMRU5CUVVNc1MwRkRjRUlzUlVGQlJTeEpRVUZqTEVOQlFVTTdaME5CUTJ4Q0xFdEJRVXNzUjBGQlJ5eExRVUZMTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVFMlFpeEhRVUZGTEVOQlFVTTdORUpCUTJ4RkxFTkJRVU03TkVKQlJVUXNVVUZCVVN4SFFVRkhMRkZCUVZFc1NVRkJTU3hGUVVGRkxFTkJRVU03TkVKQlF6RkNMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkRka01zUlVGQlJTeEZRVU5HTEZkQlFWY3NTVUZCU1N4RlFVRkZMRVZCUTJwQ0xFVkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVTm9RanRuUTBGRFJTeFpRVUZaTEVWQlFVVXNSMEZCUnl4RFFVRkRMRXRCUVhkQ08yZERRVU14UXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhEUVVOa0xGZEJRVmNzUlVGQlJTeFBRVUZwUWl4RlFVTTVRaXhIUVVGaExFTkJRMlE3TmtKQlEwWXNRMEZEUml4RFFVRkRPelJDUVVOR0xFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGRE5VTXNVVUZCVVN4SlFVRkpMRXRCUVVzc1JVRkJSU3huUmtGQlowWTdORUpCUTI1SExHMUNRVUZ0UWl4RlFVTnVRaXhMUVVGTExFTkJRMDRzUTBGQlF6czBRa0ZEUml4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRkxFZEJRVWNzYlVKQlFXMUNMRU5CUVVNN05FSkJRemRETEVsQlFVa3NXVUZCV1R0blEwRkRaQ3hsUVVGbExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUTI1RExFVkJRVVVzUlVGRFJpeGxRVUZsTEVOQlFVTXNTMEZCU3l4RlFVTnlRaXhaUVVGWkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlFVVXNRMEZEZWtJc1EwRkJRenMwUWtGRFNpeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVTllMR1ZCUVhWRUxFTkJRM2hFTEVOQlFVTTdORUpCUTBZc1RVRkJUVHQzUWtGRFVpeERRVUZETzNkQ1FVTkVMRXRCUVVzc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTTdORUpCUTNaQ0xFMUJRVTBzUjBGQlJ5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRPelJDUVVOMFFpeE5RVUZOTEZGQlFWRXNSMEZCUnl4SFFVRkhMRU5CUVVNc1MwRkJNa0lzUTBGQlF6czBRa0ZEYWtRc1NVRkJTU3hSUVVGUkxFTkJRVU1zU1VGQlNUdG5RMEZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF6dHZRMEZEYmtJc1QwRkJUeXhSUVVGUkxFVkJRVVVzUzBGQlN5eExRVUZMTEZGQlFWRTdkME5CUTI1RExFMUJRVTBzUTBGQlF5eFJRVUZSTEVsQlFVa3NVVUZCVVN4RFFVRkRMRXRCUVVzN2QwTkJReTlDTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTenQzUTBGRGFFSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJRenMwUWtGRldpeE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVONlFpeEZRVUZGTEVWQlEwWXNZMEZCWXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFbEJRVWtzUlVGQlJTeEZRVU5vUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhKUVVGSkxFVkJRVVVzUlVGRGFrSXNVVUZCVVN4RlFVRkZMRXRCUVVzc1NVRkJTU3hGUVVGRkxFVkJRM0pDTEZkQlFWY3NRMEZEV2l4RFFVRkRPelJDUVVOR0xGVkJRVlVzUjBGQlJ6dG5RMEZEV0N4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVN1owTkJRM0JETEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeFZRVUZWTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUzBGQlN5eERRVUZET3paQ1FVTXZSQ3hEUVVGRE96UkNRVVZHTEUxQlFVMDdkMEpCUTFJc1EwRkJRenQzUWtGRFJDeExRVUZMTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN2QwSkJRMjVDTEV0QlFVc3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenQzUWtGRGJrSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRE8zZENRVU55UWl4TFFVRkxMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU03ZDBKQlEzSkNMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEYWtJc1MwRkJTeXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETzNkQ1FVTnNRaXhMUVVGTExFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTTdkMEpCUTNwQ0xFdEJRVXNzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN05FSkJRM0JDTEZGQlFWRXNSMEZCUnl4UlFVRlJMRWxCUVVrc1JVRkJSU3hEUVVGRE96UkNRVU14UWl4TlFVRk5MRTlCUVU4c1IwRkJjMElzUjBGQlJ5eERRVUZETEV0QlFUQkNMRU5CUVVNN05FSkJRMnhGTEUxQlFVMHNaVUZCWlN4SFFVTnVRaXhIUVVGSExFTkJRVU1zUjBGQlJ5eExRVUZMTEUxQlFVMHNRMEZCUXl4UlFVRlJPMmREUVVONlFpeERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVGRExFdEJRV2xDTEVWQlFVVTdaME5CUTNCRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4TFFVRkxMRTFCUVUwc1EwRkJReXhSUVVGUk8yOURRVU16UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eERRVUZETEV0QlFXbENMRVZCUVVVN2IwTkJRM0JETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN05FSkJRMWdzVFVGQlRTeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkRla0lzUlVGQlJTeEZRVU5HTEZWQlFWVXNSVUZCUlN4TFFVRkxMRVZCUTJwQ0xFOUJRVThzUTBGQlF5eExRVUZMTEVsQlFVa3NSVUZCUlN4RlFVTnVRaXhsUVVGbExFVkJRMllzVDBGQlR5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpPMmREUVVOc1FpeERRVUZETEVOQlFVTTdiME5CUTBVc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGRFdDeFhRVUZYTEVWQlFVVXNUMEZCYVVJc1JVRkRPVUlzVDBGQlR5eERRVUZETEV0QlFVMHNRMEZCUXl4SlFVRkpMRU5CUTNCQ08yOURRVU5FTEU5QlFVOHNSVUZCUlN4VFFVRlRMRVZCUVVVc2NVVkJRWEZGTzJsRFFVTXhSanRuUTBGRFNDeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVTk9MRmRCUVZjc1JVRkRXQ3hGUVVGRkxFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGRGNrTXNRMEZCUXpzMFFrRkZSaXhKUVVGSkxFZEJRVWNzUTBGQlF5eEhRVUZITEV0QlFVc3NUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8yZERRVU12UWl4TlFVRk5MR1ZCUVdVc1IwRkJlVU03YjBOQlF6VkVMRWRCUVVjc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEZWQlFWVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhKUVVGSkxFVkJRVVU3YjBOQlEyaEVMRXRCUVVzN2FVTkJRMDRzUTBGQlF6dG5RMEZEUml4TlFVRk5MR05CUVdNc1IwRkJSeXh2UWtGQmIwSXNRMEZEZWtNc1IwRkJWU3hEUVVOaExFTkJRVU03WjBOQlF6RkNMRWxCUVVrc1kwRkJZeXhGUVVGRkxFTkJRVU03YjBOQlEyNUNMRXRCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRMnhFTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVTnVReXhGUVVGRkxFTkJRVU03ZDBOQlEwWXNTVUZCU1N4SlFVRkpMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU03TkVOQlF6TkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBSQlF6VkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzMFEwRkROVU1zVTBGQlV6dDNRMEZEV0N4RFFVRkRPM2REUVVORUxFbEJRVWtzU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRPelJEUVVOMFF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1pVRkJaU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzJkRVFVTnlReXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN2IwUkJRMnhETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hKUVVGSkxHVkJRV1VzUTBGQlF6czBRMEZEZUVNc1EwRkJRenMwUTBGRFJDeGxRVUZsTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRPelJEUVVNM1F5eFRRVUZUTzNkRFFVTllMRU5CUVVNN2QwTkJRMFFzU1VGQlNTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNN05FTkJRM0JETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXpzMFEwRkRha01zU1VGQlNTeEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hEUVVGRE8yZEVRVU4yUWl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTTdORU5CUTNaRUxFTkJRVU03ZDBOQlEwZ3NRMEZCUXp0dlEwRkRTQ3hEUVVGRE8yZERRVU5JTEVOQlFVTTdaME5CUlVRc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03YjBOQlEzaERMRTFCUVUwc1UwRkJVeXhIUVVGSExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlF6ZENMRXRCUVVzc1EwRkJReXhYUVVFd1FpeEZRVU5vUXl4SFFVRmhMRU5CUTJRc1EwRkJReXhKUVVGSkxFTkJRVU03YjBOQlExQXNaVUZCWlN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkRha1FzVTBGQlV5eERRVUZETEZkQlFWY3NSVUZCUlN4RlFVTjJRaXhKUVVGSkxFTkJRMHdzUTBGQlF6dG5RMEZEU2l4RFFVRkRPMmREUVVWRUxHVkJRV1VzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRmxCUVZrc1EwRkRlRU1zWlVGQlpTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRMnhETEV0QlFVc3NRMEZCUXl4SFFVRmpMRU5CUVVNc1JVRkRja0lzWlVGQlpTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRM0pETEVOQlFVTTdaME5CUTBZc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXpzMFFrRkRha01zUTBGQlF6dHBRMEZCVFN4RFFVRkRPMmREUVVOU0xFMUJRVTBzUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUTNwQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZEU2l4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUzBGQlN5eEhRVUZITzI5RFFVTnlRaXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEZsQlFWa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUTNwRUxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlExSTdkME5CUTBNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNTMEZCU3l4SFFVRkhPelJEUVVOMlFpeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hSUVVGUkxFTkJRVU1zU1VGQlNTeEhRVUZoTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkRlRVFzUTBGQlF6dG5RMEZEUml4SlFVRkpMRXRCUVVzc1JVRkJSU3hEUVVGRE8yOURRVU5TTEVsQlEwVXNSMEZCUnl4RFFVRkRMRWRCUVVjc1MwRkJTeXhOUVVGTkxFTkJRVU1zVVVGQlVUdDNRMEZETTBJc1IwRkJSeXhEUVVGRExFZEJRVWNzUzBGQlN5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVTXpRaXhEUVVGRE8zZERRVU5FTEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hsUVVGbExFTkJRVU1zUTBGQlF6dHZRMEZEYUVVc1EwRkJRenQ1UTBGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1RVRkJUU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzNkRFFVTXpReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVTdORU5CUXpORExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRTlCUVU4N2VVTkJRMjVDTEVOQlFVTXNRMEZCUXp0dlEwRkRUQ3hEUVVGRE8zbERRVUZOTEVOQlFVTTdkME5CUTA0c1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFdEJRVmtzUTBGQlF6dDNRMEZETjBNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVTjZRaXhGUVVGRkxFVkJRMFlzUzBGQlN5eEpRVUZKTEVWQlFVVXNSVUZEV0N4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVOWUxFZEJRVWNzUlVGRFNDeEhRVUZITEVOQlEwb3NRMEZCUXp0dlEwRkRTaXhEUVVGRE8yZERRVU5JTEVOQlFVTTdORUpCUTBnc1EwRkJRenMwUWtGRFJDeE5RVUZOTzNkQ1FVTlNMRU5CUVVNN2QwSkJRMFE3TkVKQlEwVXNUVUZCVFN4SlFVRkpMR05CUVdNc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU03YjBKQlEzaEVMRU5CUVVNN1owSkJRMGdzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEVEN4RFFVRkRPMUZCUTBnc1EwRkJRenRSUVVWRUxGZEJRVmNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzVjBGQlZ5eEZRVUZGTzFsQlEyeEVMRkZCUVZFc1JVRkJSU3hSUVVGUkxFbEJRVWtzUlVGQlJUdFRRVU42UWl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hOUVVGTkxHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVNdlFqdFpRVU5GTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUlVGQlJTeFZRVUZWTEVOQlFVTTdaMEpCUTNoRExFTkJRVU1zUTBGQlJTeFhRVUZYTEVOQlFVTXNWVUZCZFVJN1owSkJRM1JETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRVQ3hIUVVGSExFTkJRVU1zVDBGQlR5eFhRVUZYTEVWQlFVVXNVMEZCVXl4TFFVRkxMRkZCUVZFN1owSkJRelZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGdFFpeERRVUZETzJkQ1FVTnVReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFOQlExSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRMnhDTEVOQlFVTTdVVUZEUml4TlFVRk5MRk5CUVZNc1IwRkJSeXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETzFGQlEzcERMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROVVFzVFVGQlRTeFJRVUZSTEVkQlFVa3NTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hOUVVFNFFpeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTndSU3hKUVVORkxGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXp0blFrRkRia0lzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4VFFVRTRRaXhEUVVGRExFVkJRMnBFTEVOQlFVTTdaMEpCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU03V1VGRFppeERRVUZETzFsQlJVUXNUVUZCVFN4UFFVRlBMRWRCUVVrc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZ2UWl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVONlJDeE5RVUZOTEU5QlFVOHNSMEZCU1N4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVzlDTEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUTNwRUxFbEJRMFVzVDBGQlR5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRPMmRDUVVOc1FpeERRVUZETEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkRka1VzUTBGQlF6dG5Ra0ZEUkN4UFFVRlBMRXRCUVVzc1EwRkJRenRaUVVObUxFTkJRVU03V1VGRFJDeEpRVU5GTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRenRuUWtGRGJFSXNRMEZCUXl4RFFVRkRMRWRCUVVjc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGRGVFVXNRMEZCUXp0blFrRkRSQ3hQUVVGUExFdEJRVXNzUTBGQlF6dFpRVU5tTEVOQlFVTTdXVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVOa0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NUVUZCVFN4TlFVRk5MRWRCUVhWQ08xbEJRMnBETEVkQlFVY3NSVUZCUlN4SFFVRkhPMWxCUTFJc1NVRkJTU3hGUVVGRkxGVkJRWFZETzFsQlF6ZERMRXRCUVVzc1JVRkJSU3hYUVVFNFJEdFpRVU55UlN4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRkxFMUJRVTA3WjBKQlEzaENMRU5CUVVNc1EwRkJSU3hSUVVGdFF6dG5Ra0ZEZEVNc1EwRkJReXhEUVVGRExGTkJRVk03VTBGRFpDeERRVUZETzFGQlJVWXNTVUZCU1N4VlFVRlZPMWxCUVVVc1RVRkJUU3hEUVVGRExGVkJRVlVzUjBGQlJ5eHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQmNVSkVPenM3T3pzN096dFBRVkZITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGNVF6dFJRVU4yUkN4SlFVRkpMRTFCUVUwc1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVczdXVUZET1VJc1RVRkJUU3hKUVVGSkxHRkJRV0VzUTBGRGNrSXNNRUpCUVRCQ0xFMUJRVTBzUTBGQlF5eFBRVUZQTEdsQ1FVRnBRaXhEUVVNeFJDeERRVUZETzFGQlEwb3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNCRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMGxCUTNoQ0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096dFBRVlZITzBsQlEwc3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkRkRUlzUjBGQmVVUTdVVUZGZWtRc1NVRkJTU3hIUVVGSExGbEJRVmtzWlVGQlpUdFpRVUZGTEU5QlFVOHNSMEZCZVVJc1EwRkJRenRSUVVOeVJTeE5RVUZOTEUxQlFVMHNSMEZCZFVJc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU0zUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUTBGQlF5eHBSVUZCYVVVN1VVRkRkRVlzVDBGQlR5eE5RVUUwUWl4RFFVRkRPMGxCUTNSRExFTkJRVU03U1VGRlJEczdPenM3T3pzN096dFBRVlZITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJTU3hQUVVGblFqdFJRVU0xUWl4SlFVRkpMRU5CUVVNc1QwRkJUenRaUVVOV0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZEYmtJc1NVRkJTU3hEUVVGRExFOUJRU3RFTEVOQlEzSkZMRU5CUVVNN1VVRkRTaXhKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVNeFFpeE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVTnlRaXd3UWtGQk1FSXNUMEZCVHl4cFFrRkJhVUlzUTBGRGJrUXNRMEZCUXp0UlFVTktMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGRGJrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJSVWtzUTBGRGRrSXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3VDBGWFJ6dEpRVU5JTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVd0Q0xFdEJRVkVzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEY2tRc1RVRkJUU3hYUVVGWExFZEJRMllzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGREwwUXNTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkJSU3hOUVVGTkxFbEJRVWtzWVVGQllTeERRVUZETERKQ1FVRXlRaXhEUVVGRExFTkJRVU03VVVGRGRrVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCTmtJc1EwRkJReXhEUVVGRE8xRkJSWFJGTEN0RFFVRXJRenRSUVVNdlF5eFBRVUZQTEdWQlFXVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemRFTEVOQlFVTTdPMEZCUlVnc1JVRkJSVHRCUVVOR0xEUkNRVUUwUWp0QlFVTTFRaXhqUVVGak8wRkJRMlFzWjBWQlFXZEZPMEZCUTJoRkxIRkZRVUZ4UlR0QlFVTnlSU3hwUTBGQmFVTTdRVUZEYWtNc1owVkJRV2RGTzBGQlEyaEZMSE5DUVVGelFqdEJRVU4wUWl3d1FrRkJNRUk3UVVGRE1VSXNaVUZCWlR0QlFVTm1MRmRCUVZjN1FVRkRXQ3hUUVVGVE8wRkJRMVFzVDBGQlR6dEJRVU5RTEdOQlFXTTdRVUZEWkN4RlFVRkZPMEZCUTBZc2JVTkJRVzFETzBGQlEyNURMR05CUVdNN1FVRkRaQ3cwUkVGQk5FUTdRVUZETlVRc01FTkJRVEJETzBGQlF6RkRMRk5CUVZNN1FVRkRWQ3hQUVVGUE8wRkJRMUFzWTBGQll6dEJRVU5rTEVWQlFVVTdRVUZEUml4clEwRkJhME03UVVGRGJFTXNZMEZCWXp0QlFVTmtMSFZEUVVGMVF6dEJRVU4yUXl4dFJVRkJiVVU3UVVGRGJrVXNVMEZCVXp0QlFVTlVMRTlCUVU4N1FVRkRVQ3hqUVVGak8wRkJRMlFzUlVGQlJUdEJRVU5HTERoQ1FVRTRRanRCUVVNNVFpeGpRVUZqTzBGQlEyUXNkME5CUVhkRE8wRkJRM2hETEcxRlFVRnRSVHRCUVVOdVJTeFRRVUZUTzBGQlExUXNUMEZCVHp0QlFVTlFMR05CUVdNN1FVRkRaQ3hGUVVGRk8wRkJRMFlzT0VKQlFUaENPMEZCUXpsQ0xHTkJRV003UVVGRFpDeDNRMEZCZDBNN1FVRkRlRU1zYlVWQlFXMUZPMEZCUTI1RkxGTkJRVk03UVVGRFZDeFBRVUZQTzBGQlExQXNZMEZCWXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFbHVkR1Z5Ym1Gc1JYSnliM0lzSUU1dmRFWnZkVzVrUlhKeWIzSWdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlJpTFdSbFkyOXlZWFJ2Y25OY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUVoVVRVdzFSR0YwWlVadmNtMWhkQ3hjYmlBZ1NGUk5URFZKYm5CMWRGUjVjR1Z6TEZ4dUlDQlZTVXRsZVhNc1hHNGdJRlpoYkdsa1lYUmhZbXhsUW5sQmRIUnlhV0oxZEdVc1hHNGdJRlpoYkdsa1lYUmhZbXhsUW5sVWVYQmxMRnh1ZlNCbWNtOXRJRndpTGk5amIyNXpkR0Z1ZEhOY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUVOeWRXUlBjR1Z5WVhScGIyNUxaWGx6TEZ4dUlDQkVaV05oWmxOd2FXNXVaWEpQY0hScGIyNXpMRnh1SUNCRVpXTmhabFJ2WVhOMFQzQjBhVzl1Y3l4Y2JpQWdSbWxsYkdSRVpXWnBibWwwYVc5dUxGeHVJQ0JHYVdWc1pGQnliM0JsY25ScFpYTXNYRzRnSUZWSlEyeGhjM05OWlhSaFpHRjBZU3hjYmlBZ1ZVbEZiR1Z0Wlc1MFRXVjBZV1JoZEdFc1hHNGdJRlZKVEdsemRFbDBaVzFGYkdWdFpXNTBUV1YwWVdSaGRHRXNYRzRnSUZWSlRHbHpkRkJ5YjNCTlpYUmhaR0YwWVN4Y2JpQWdWVWxOYjJSbGJFMWxkR0ZrWVhSaExGeHVJQ0JWU1ZCeWIzQk5aWFJoWkdGMFlTeGNiaUFnU1ZCaFoyVmtRMjl0Y0c5dVpXNTBVSEp2Y0dWeWRHbGxjeXhjYm4wZ1puSnZiU0JjSWk0dmRIbHdaWE5jSWp0Y2JtbHRjRzl5ZENCN0lGSmxibVJsY21sdVowVnljbTl5SUgwZ1puSnZiU0JjSWk0dlpYSnliM0p6WENJN1hHNXBiWEJ2Y25RZ2V5Qm1iM0p0WVhSQ2VWUjVjR1VzSUdkbGJtVnlZWFJsVlVsTmIyUmxiRWxFSUgwZ1puSnZiU0JjSWk0dmRYUnBiSE5jSWp0Y2JtbHRjRzl5ZENCN0lFTnZibk4wY25WamRHOXlMQ0JOWlhSaFpHRjBZU0I5SUdaeWIyMGdYQ0pBWkdWallXWXRkSE12WkdWamIzSmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIdGNiaUFnVFc5a1pXd3NYRzRnSUUxdlpHVnNRMjl1YzNSeWRXTjBiM0lzWEc0Z0lGQnlhVzFwZEdsMlpYTXNYRzRnSUZKbGMyVnlkbVZrVFc5a1pXeHpMRnh1SUNCV1lXeHBaR0YwYVc5dVMyVjVjeXhjYmlBZ1ZtRnNhV1JoZEdsdmJrMWxkR0ZrWVhSaExGeHVmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlJsWTI5eVlYUnZjaTEyWVd4cFpHRjBhVzl1WENJN1hHNXBiWEJ2Y25RZ2V5QkpSR1ZqWVdaTmIyUmhiQ0I5SUdaeWIyMGdYQ0l1TDJsdWRHVnlabUZqWlhNdlNVUmxZMkZtVFc5a1lXeGNJanRjYm1sdGNHOXlkQ0I3SUVSbFkyRm1RMjl0Y0c5dVpXNTBJSDBnWm5KdmJTQmNJaTR2UkdWallXWkRiMjF3YjI1bGJuUmNJanRjYmx4dWFXMXdiM0owSUhzZ1NVUmxZMkZtVTNCcGJtNWxjaUI5SUdaeWIyMGdYQ0l1TDJsdWRHVnlabUZqWlhNdlNVUmxZMkZtVTNCcGJtNWxjbHdpTzF4dWFXMXdiM0owSUhzZ1NVUmxZMkZtVW05MWRHVnlJSDBnWm5KdmJTQmNJaTR2YVc1MFpYSm1ZV05sY3k5SlJHVmpZV1pTYjNWMFpYSmNJanRjYm1sdGNHOXlkQ0I3SUVsRVpXTmhabFJ2WVhOMElIMGdabkp2YlNCY0lpNHZhVzUwWlhKbVlXTmxjeTlKUkdWallXWlViMkZ6ZEZ3aU8xeHVYRzR2S2lwY2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCQlluTjBjbUZqZENCamJHRnpjeUJtYjNJZ2NtVnVaR1Z5YVc1bklGVkpJR052YlhCdmJtVnVkSE1nWW1GelpXUWdiMjRnYlc5a1pXd2diV1YwWVdSaGRHRXVYRzRnS2lCQWMzVnRiV0Z5ZVNCVWFHVWdVbVZ1WkdWeWFXNW5SVzVuYVc1bElHTnNZWE56SUhCeWIzWnBaR1Z6SUdFZ1puSmhiV1YzYjNKcklHWnZjaUJqYjI1MlpYSjBhVzVuSUcxdlpHVnNJRzFsZEdGa1lYUmhJR2x1ZEc4Z1ZVa2dabWxsYkdRZ1pHVm1hVzVwZEdsdmJuTXVYRzRnS2lCSmRDQm9ZVzVrYkdWeklIUm9aU0IwY21GdWMyeGhkR2x2YmlCdlppQnRiMlJsYkNCd2NtOXdaWEowYVdWeklIUnZJRlZKSUdWc1pXMWxiblJ6TENCaGNIQnNhV1Z6SUhaaGJHbGtZWFJwYjI0Z2NuVnNaWE1zSUdGdVpDQnRZVzVoWjJWeklHUnBabVpsY21WdWRDQnlaVzVrWlhKcGJtY2dabXhoZG05eWN5NWNiaUFxSUZSb2FYTWdZMnhoYzNNZ2FYTWdaR1Z6YVdkdVpXUWdkRzhnWW1VZ1pYaDBaVzVrWldRZ1lua2djM0JsWTJsbWFXTWdjbVZ1WkdWeWFXNW5JR2x0Y0d4bGJXVnVkR0YwYVc5dWN5NWNiaUFxWEc0Z0tpQkFkR1Z0Y0d4aGRHVWdWQ0JVYUdVZ2RIbHdaU0J2WmlCMGFHVWdjbVZ1WkdWeWFXNW5JSEpsYzNWc2RDd2daR1ZtWVhWc2RITWdkRzhnZG05cFpGeHVJQ29nUUhSbGJYQnNZWFJsSUZJZ1ZHaGxJSFI1Y0dVZ2IyWWdkR2hsSUdacFpXeGtJR1JsWm1sdWFYUnBiMjRzSUdSbFptRjFiSFJ6SUhSdklFWnBaV3hrUkdWbWFXNXBkR2x2Ymp4VVBseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbWJHRjJiM1Z5SUMwZ1ZHaGxJR1pzWVhadmNpQnZaaUIwYUdVZ2NtVnVaR1Z5YVc1bklHVnVaMmx1WlM1Y2JpQXFYRzRnS2lCQVkyeGhjM01nVW1WdVpHVnlhVzVuUlc1bmFXNWxYRzRnS2k5Y2JpOHFLbHh1SUNvZ1VtVndjbVZ6Wlc1MGN5QjBhR1VnWW1GelpTQmhZbk4wY21GamRHbHZiaUJtYjNJZ1pHVmpZV1lnY21WdVpHVnlhVzVuSUdWdVoybHVaWE1zSUdoaGJtUnNhVzVuSUdWdVoybHVaU0J5WldkcGMzUnlZWFJwYjI0c1hHNGdLaUJwYm1sMGFXRnNhWHBoZEdsdmJpd2diVzlrWld3dGRHOHRabWxsYkdRZ2RISmhibk5zWVhScGIyNHNJR0Z1WkNCeWRXNTBhVzFsSUhKbGJtUmxjbWx1WnlCdmNtTm9aWE4wY21GMGFXOXVMbHh1SUNvZ1NXMXdiR1Z0Wlc1MFlYUnBiMjV6SUcxMWMzUWdjSEp2ZG1sa1pTQnBibWwwYVdGc2FYcGhkR2x2YmlCaGJtUWdjbVZ1WkdWeWFXNW5JR3h2WjJsaklIZG9hV3hsSUd4bGRtVnlZV2RwYm1jZ2RHaGxJSE5vWVhKbFpGeHVJQ29nYldWMFlXUmhkR0V0WkhKcGRtVnVJR052Ym5abGNuTnBiMjRnZFhScGJHbDBhV1Z6SUhOMWNIQnNhV1ZrSUdobGNtVXVYRzRnS2k5Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJTWlc1a1pYSnBibWRGYm1kcGJtVThWQ0E5SUhadmFXUXNJRklnUFNCR2FXVnNaRVJsWm1sdWFYUnBiMjQ4VkQ0K0lIdGNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQkRZV05vWlNCbWIzSWdjM1J2Y21sdVp5QnlaVzVrWlhKcGJtY2daVzVuYVc1bElHbHVjM1JoYm1ObGN5QnZjaUJqYjI1emRISjFZM1J2Y25NdVhHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTmhZMmhsT2lCU1pXTnZjbVE4WEc0Z0lDQWdjM1J5YVc1bkxGeHVJQ0FnSUh3Z1EyOXVjM1J5ZFdOMGIzSThVbVZ1WkdWeWFXNW5SVzVuYVc1bFBIVnVhMjV2ZDI0c0lIVnVhMjV2ZDI0K1BseHVJQ0FnSUh3Z1VtVnVaR1Z5YVc1blJXNW5hVzVsUEhWdWEyNXZkMjRzSUhWdWEyNXZkMjQrWEc0Z0lENGdQU0I3ZlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGUm9aU0JqZFhKeVpXNTBiSGtnWVdOMGFYWmxJSEpsYm1SbGNtbHVaeUJsYm1kcGJtVXVYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxSUVCemRHRjBhV05jYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR04xY25KbGJuUTZYRzRnSUNBZ2ZDQkRiMjV6ZEhKMVkzUnZjanhTWlc1a1pYSnBibWRGYm1kcGJtVThkVzVyYm05M2Jpd2dkVzVyYm05M2JqNCtYRzRnSUNBZ2ZDQlNaVzVrWlhKcGJtZEZibWRwYm1VOGRXNXJibTkzYml3Z2RXNXJibTkzYmo0N1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVac1lXY2dhVzVrYVdOaGRHbHVaeUIzYUdWMGFHVnlJSFJvWlNCeVpXNWtaWEpwYm1jZ1pXNW5hVzVsSUdoaGN5QmlaV1Z1SUdsdWFYUnBZV3hwZW1Wa0xseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJR2x1YVhScFlXeHBlbVZrT2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlU3WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR052Ym5OMGNuVmpkRzl5S0hKbFlXUnZibXg1SUdac1lYWnZkWEk2SUhOMGNtbHVaeWtnZTF4dUlDQWdJRkpsYm1SbGNtbHVaMFZ1WjJsdVpTNXlaV2RwYzNSbGNpaDBhR2x6S1R0Y2JpQWdJQ0JqYjI1emIyeGxMbXh2WnloZ1pHVmpZV1luY3lBa2UyWnNZWFp2ZFhKOUlISmxibVJsY21sdVp5QmxibWRwYm1VZ2JHOWhaR1ZrWUNrN1hHNGdJSDFjYmx4dUlDQmhZbk4wY21GamRDQm5aWFJOYjJSaGJEeERJR1Y0ZEdWdVpITWdSR1ZqWVdaRGIyMXdiMjVsYm5ROFRXOWtaV3crUGloY2JpQWdJQ0JqYjIxd2IyNWxiblE2SUZCaGNuUnBZV3c4UXo0c1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4SlJHVmpZV1pOYjJSaGJENDdYRzVjYmlBZ1lXSnpkSEpoWTNRZ1oyVjBWRzloYzNRb2IzQjBhVzl1Y3pvZ1JHVmpZV1pVYjJGemRFOXdkR2x2Ym5NcE9pQlFjbTl0YVhObFBFbEVaV05oWmxSdllYTjBQanRjYmx4dUlDQmhZbk4wY21GamRDQm5aWFJUY0dsdWJtVnlLRzl3ZEdsdmJuTTZJRVJsWTJGbVUzQnBibTVsY2s5d2RHbHZibk1wT2lCUWNtOXRhWE5sUEVsRVpXTmhabE53YVc1dVpYSStPMXh1WEc0Z0lHRmljM1J5WVdOMElISnZkWFJsY2lncE9pQkpSR1ZqWVdaU2IzVjBaWEk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCSmJtbDBhV0ZzYVhwbGN5QjBhR1VnY21WdVpHVnlhVzVuSUdWdVoybHVaUzVjYmlBZ0lDb2dRSE4xYlcxaGNua2dRV0p6ZEhKaFkzUWdiV1YwYUc5a0lIUnZJR0psSUdsdGNHeGxiV1Z1ZEdWa0lHSjVJSE4xWW1Oc1lYTnpaWE1nWm05eUlITndaV05wWm1saklHbHVhWFJwWVd4cGVtRjBhVzl1SUd4dloybGpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXk0dUxtRnVlVnRkZlNCaGNtZHpJQzBnUVc1NUlHRmtaR2wwYVc5dVlXd2dZWEpuZFcxbGJuUnpJRzVsWldSbFpDQm1iM0lnYVc1cGRHbGhiR2w2WVhScGIyNHVYRzRnSUNBcUlFQnlaWFIxY201eklIdFFjbTl0YVhObFBIWnZhV1ErZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYUdWdUlHbHVhWFJwWVd4cGVtRjBhVzl1SUdseklHTnZiWEJzWlhSbExseHVJQ0FnS2x4dUlDQWdLaUJBWVdKemRISmhZM1JjYmlBZ0lDb3ZYRzRnSUdGaWMzUnlZV04wSUdsdWFYUnBZV3hwZW1Vb0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEhadmFXUStPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVkhKaGJuTnNZWFJsY3lCaVpYUjNaV1Z1SUcxdlpHVnNJSFI1Y0dWeklHRnVaQ0JJVkUxTUlHbHVjSFYwSUhSNWNHVnpMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQkRiMjUyWlhKMGN5QnRiMlJsYkNCa1lYUmhJSFI1Y0dWeklIUnZJR0Z3Y0hKdmNISnBZWFJsSUVoVVRVd2dhVzV3ZFhRZ2RIbHdaWE1nWVc1a0lIWnBZMlVnZG1WeWMyRXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JyWlhrZ0xTQlVhR1VnYTJWNUlIUnZJSFJ5WVc1emJHRjBaUzVjYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJkRzlXYVdWM1BYUnlkV1ZkSUMwZ1JHbHlaV04wYVc5dUlHOW1JSFJ5WVc1emJHRjBhVzl1SUNoMGNuVmxJR1p2Y2lCdGIyUmxiQ0IwYnlCMmFXVjNMQ0JtWVd4elpTQm1iM0lnZG1sbGR5QjBieUJ0YjJSbGJDa3VYRzRnSUNBcUlFQnlaWFIxY201eklIdHpkSEpwYm1kOUlGUm9aU0IwY21GdWMyeGhkR1ZrSUhSNWNHVXVYRzRnSUNBcUwxeHVJQ0IwY21GdWMyeGhkR1VvYTJWNU9pQnpkSEpwYm1jc0lIUnZWbWxsZHpvZ1ltOXZiR1ZoYmlBOUlIUnlkV1VwT2lCemRISnBibWNnZTF4dUlDQWdJR2xtSUNoMGIxWnBaWGNwSUh0Y2JpQWdJQ0FnSUhOM2FYUmphQ0FvYTJWNUtTQjdYRzRnSUNBZ0lDQWdJR05oYzJVZ1VtVnpaWEoyWldSTmIyUmxiSE11VTFSU1NVNUhMbTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHBjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnU0ZSTlREVkpibkIxZEZSNWNHVnpMbFJGV0ZRN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnVW1WelpYSjJaV1JOYjJSbGJITXVUbFZOUWtWU0xtNWhiV1V1ZEc5TWIzZGxja05oYzJVb0tUcGNiaUFnSUNBZ0lDQWdZMkZ6WlNCU1pYTmxjblpsWkUxdlpHVnNjeTVDU1VkSlRsUXVibUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJJVkUxTU5VbHVjSFYwVkhsd1pYTXVUbFZOUWtWU08xeHVJQ0FnSUNBZ0lDQmpZWE5sSUZKbGMyVnlkbVZrVFc5a1pXeHpMa0pQVDB4RlFVNHVibUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJJVkUxTU5VbHVjSFYwVkhsd1pYTXVRMGhGUTB0Q1QxZzdYRzRnSUNBZ0lDQWdJR05oYzJVZ1VtVnpaWEoyWldSTmIyUmxiSE11UkVGVVJTNXVZVzFsTG5SdlRHOTNaWEpEWVhObEtDazZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRWhVVFV3MVNXNXdkWFJVZVhCbGN5NUVRVlJGTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnpkMmwwWTJnZ0tHdGxlU2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJRWhVVFV3MVNXNXdkWFJVZVhCbGN5NVRSVXhGUTFRNlhHNGdJQ0FnSUNBZ0lHTmhjMlVnU0ZSTlREVkpibkIxZEZSNWNHVnpMbFJGV0ZRNlhHNGdJQ0FnSUNBZ0lHTmhjMlVnU0ZSTlREVkpibkIxZEZSNWNHVnpMa1ZOUVVsTU9seHVJQ0FnSUNBZ0lDQmpZWE5sSUVoVVRVdzFTVzV3ZFhSVWVYQmxjeTVEVDB4UFVqcGNiaUFnSUNBZ0lDQWdZMkZ6WlNCSVZFMU1OVWx1Y0hWMFZIbHdaWE11VUVGVFUxZFBVa1E2WEc0Z0lDQWdJQ0FnSUdOaGMyVWdTRlJOVERWSmJuQjFkRlI1Y0dWekxsUkZURHBjYmlBZ0lDQWdJQ0FnWTJGelpTQklWRTFNTlVsdWNIVjBWSGx3WlhNdVZWSk1PbHh1SUNBZ0lDQWdJQ0JqWVhObElFaFVUVXcxU1c1d2RYUlVlWEJsY3k1VFJVRlNRMGc2WEc0Z0lDQWdJQ0FnSUdOaGMyVWdTRlJOVERWSmJuQjFkRlI1Y0dWekxraEpSRVJGVGpwY2JpQWdJQ0FnSUNBZ1kyRnpaU0JJVkUxTU5VbHVjSFYwVkhsd1pYTXVWRVZZVkVGU1JVRTZYRzRnSUNBZ0lDQWdJR05oYzJVZ1NGUk5URFZKYm5CMWRGUjVjR1Z6TGxKQlJFbFBPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJTWlhObGNuWmxaRTF2WkdWc2N5NVRWRkpKVGtjdWJtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUVoVVRVdzFTVzV3ZFhSVWVYQmxjeTVPVlUxQ1JWSTZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRkpsYzJWeWRtVmtUVzlrWld4ekxrNVZUVUpGVWk1dVlXMWxMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnU0ZSTlREVkpibkIxZEZSNWNHVnpMa05JUlVOTFFrOVlPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJTWlhObGNuWmxaRTF2WkdWc2N5NUNUMDlNUlVGT0xtNWhiV1V1ZEc5TWIzZGxja05oYzJVb0tUdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCSVZFMU1OVWx1Y0hWMFZIbHdaWE11UkVGVVJUcGNiaUFnSUNBZ0lDQWdZMkZ6WlNCSVZFMU1OVWx1Y0hWMFZIbHdaWE11UkVGVVJWUkpUVVZmVEU5RFFVdzZYRzRnSUNBZ0lDQWdJR05oYzJVZ1NGUk5URFZKYm5CMWRGUjVjR1Z6TGxSSlRVVTZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRkpsYzJWeWRtVmtUVzlrWld4ekxrUkJWRVV1Ym1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2EyVjVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQlNaWFJ5YVdWMlpYTWdZMnhoYzNNZ1pHVmpiM0poZEc5eUlHMWxkR0ZrWVhSaElHWnZjaUJoSUcxdlpHVnNJR2x1YzNSaGJtTmxYRzRnSUNBcUlFQnpkVzF0WVhKNUlFVjRkSEpoWTNSeklGVkpMWEpsYkdGMFpXUWdZMnhoYzNNZ1pHVmpiM0poZEc5eWN5Qm1jbTl0SUdFZ2JXOWtaV3dnWVc1a0lISmxkSFZ5Ym5NZ2RHaGxiU0JoY3lCaGJpQmhjbkpoZVZ4dUlDQWdLaUJVYUdseklHMWxkR2h2WkNCamIyeHNaV04wY3lCdFpYUmhaR0YwWVNCbWNtOXRJSFpoY21sdmRYTWdWVWtnWTJ4aGMzTWdaR1ZqYjNKaGRHOXljeUJwYm1Oc2RXUnBibWNnUUhWcGJXOWtaV3dzWEc0Z0lDQXFJRUIxYVd4cGMzUnRiMlJsYkN3Z1FIVnBhR0Z1Wkd4bGNuTXNJR0Z1WkNCQWRXbHNZWGx2ZFhRZ1lYQndiR2xsWkNCMGJ5QjBhR1VnYlc5a1pXd2dZMnhoYzNNdVhHNGdJQ0FxWEc0Z0lDQXFJRUIwWlcxd2JHRjBaU0JOSUZSNWNHVWdaWGgwWlc1a2FXNW5JRTF2WkdWc1hHNGdJQ0FxSUVCd1lYSmhiU0I3VFgwZ2JXOWtaV3dnTFNCVWFHVWdiVzlrWld3Z2FXNXpkR0Z1WTJVZ2RHOGdaWGgwY21GamRDQnRaWFJoWkdGMFlTQm1jbTl0WEc0Z0lDQXFJRUJ5WlhSMWNtNXpJSHRWU1VOc1lYTnpUV1YwWVdSaGRHRmJYWDBnUVhKeVlYa2diMllnVlVrZ1kyeGhjM01nYldWMFlXUmhkR0VnYjJKcVpXTjBjMXh1SUNBZ0tseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCblpYUkRiR0Z6YzBSbFkyOXlZWFJ2Y25OTlpYUmhaR0YwWVR4TklHVjRkR1Z1WkhNZ1RXOWtaV3crS0Z4dUlDQWdJRzF2WkdWc09pQk5YRzRnSUNrNklGVkpRMnhoYzNOTlpYUmhaR0YwWVZ0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVzF4dUlDQWdJQ0FnVFc5a1pXd3VkV2xOYjJSbGJFOW1LRzF2WkdWc0xtTnZibk4wY25WamRHOXlJR0Z6SUVOdmJuTjBjblZqZEc5eVBFMCtLU3hjYmlBZ0lDQWdJRTF2WkdWc0xuVnBUR2x6ZEUxdlpHVnNUMllvYlc5a1pXd3VZMjl1YzNSeWRXTjBiM0lnWVhNZ1EyOXVjM1J5ZFdOMGIzSThUVDRwTEZ4dUlDQWdJQ0FnVFc5a1pXd3VkV2xJWVc1a2JHVnljMFp2Y2lodGIyUmxiQzVqYjI1emRISjFZM1J2Y2lCaGN5QkRiMjV6ZEhKMVkzUnZjanhOUGlrc1hHNGdJQ0FnSUNCTmIyUmxiQzUxYVV4aGVXOTFkRTltS0cxdlpHVnNMbU52Ym5OMGNuVmpkRzl5SUdGeklFTnZibk4wY25WamRHOXlQRTArS1N4Y2JpQWdJQ0JkTG1acGJIUmxjaWhDYjI5c1pXRnVLU0JoY3lCVlNVTnNZWE56VFdWMFlXUmhkR0ZiWFR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2MyOXlkRU5vYVd4a2NtVnVRbmxQY21SbGNpaGphR2xzWkhKbGJqb2dSbWxsYkdSRVpXWnBibWwwYVc5dVBHRnVlVDViWFNBOUlGdGRLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHTm9hV3hrY21WdUxuTnZjblFvS0dFc0lHSXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR0ZQY21SbGNpQTlJR0V1Y0hKdmNITS9MbTl5WkdWeUlEOC9JREE3WEc0Z0lDQWdJQ0JqYjI1emRDQmlUM0prWlhJZ1BTQmlMbkJ5YjNCelB5NXZjbVJsY2lBL1B5QXdPMXh1SUNBZ0lDQWdZMjl1YzNRZ2QyVnBaMmgwSUQwZ0tIWTZJRzUxYldKbGNpQjhJSE4wY21sdVp5a2dQVDVjYmlBZ0lDQWdJQ0FnZGlBOVBUMGdWVWxMWlhsekxrWkpVbE5VWEc0Z0lDQWdJQ0FnSUNBZ1B5QXdYRzRnSUNBZ0lDQWdJQ0FnT2lCMGVYQmxiMllnZGlBOVBUMGdVSEpwYldsMGFYWmxjeTVPVlUxQ1JWSmNiaUFnSUNBZ0lDQWdJQ0FnSUQ4Z01WeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lCMklEMDlQU0JWU1V0bGVYTXVURUZUVkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0EvSUM4dlZFOUVUem9nY21WMmFXVjNJSFJvYVhOY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamFHbHNaSEpsYmk1c1pXNW5kR2dnS3lCamFHbHNaSEpsYmk1cGJtUmxlRTltS0dJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ01UdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ1lWZGxhV2RvZENBOUlIZGxhV2RvZENoaFQzSmtaWElwTzF4dUlDQWdJQ0FnWTI5dWMzUWdZbGRsYVdkb2RDQTlJSGRsYVdkb2RDaGlUM0prWlhJcE8xeHVJQ0FnSUNBZ2FXWWdLR0ZYWldsbmFIUWdJVDA5SUdKWFpXbG5hSFFwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGWFpXbG5hSFFnTFNCaVYyVnBaMmgwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9YRzRnSUNBZ0lDQWdJR0ZYWldsbmFIUWdQVDA5SURFZ0ppWmNiaUFnSUNBZ0lDQWdkSGx3Wlc5bUlHRlBjbVJsY2lBOVBUMGdVSEpwYldsMGFYWmxjeTVPVlUxQ1JWSWdKaVpjYmlBZ0lDQWdJQ0FnZEhsd1pXOW1JR0pQY21SbGNpQTlQVDBnVUhKcGJXbDBhWFpsY3k1T1ZVMUNSVkpjYmlBZ0lDQWdJQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWVU5eVpHVnlJQzBnWWs5eVpHVnlPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlEQTdYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTm9aV05yY3lCcFppQmhJSFpoYkdsa1lYUnBiMjRnYTJWNUlISmxjSEpsYzJWdWRITWdZU0JqZFhOMGIyMGdkbUZzYVdSaGRHOXlJQ2hwTG1VdUxDQnViM1FnWVNCaWRXbHNkQzFwYmlCMllXeHBaR0YwYVc5dUlHOXlJRlZKSUd0bGVTa3VYRzRnSUNBcUlFQnpkVzF0WVhKNUlFUmxkR1Z5YldsdVpYTWdkMmhsZEdobGNpQjBhR1VnY0hKdmRtbGtaV1FnYTJWNUlHTnZjbkpsYzNCdmJtUnpJSFJ2SUdFZ2RYTmxjaTFrWldacGJtVmtJSFpoYkdsa1lYUnZjaUJpZVNCbGVHTnNkV1JwYm1jZ1lXeHNJR0oxYVd4MExXbHVJRlpoYkdsa1lYUnBiMjVMWlhseklHRnVaQ0JWU1V0bGVYTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JyWlhrZ0xTQlVhR1VnZG1Gc2FXUmhkR2x2YmlCclpYa2dkRzhnWTJobFkyc3VYRzRnSUNBcUlFQnlaWFIxY201eklIdGliMjlzWldGdWZTQlVjblZsSUdsbUlIUm9aU0JyWlhrZ2FYTWdZU0JqZFhOMGIyMGdkbUZzYVdSaGRHOXlMQ0JtWVd4elpTQnZkR2hsY25kcGMyVXVYRzRnSUNBcUlFQnlaWFIxY201eklIdGliMjlzWldGdWZTQlVjblZsSUdsbUlIUm9aU0JyWlhrZ2FYTWdibTkwSUdFZ1luVnBiSFF0YVc0Z2RtRnNhV1JoZEdsdmJpQnJaWGtnYjNJZ1ZVa2dhMlY1SUNocExtVXVJR2x6SUdOMWMzUnZiU2tzSUdaaGJITmxJRzkwYUdWeWQybHpaUzVjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCcGMwTjFjM1J2YlZaaGJHbGtZWFJ2Y2loclpYazZJSE4wY21sdVp5azZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNBaFQySnFaV04wTG5aaGJIVmxjeWhXWVd4cFpHRjBhVzl1UzJWNWN5a3VhVzVqYkhWa1pYTW9YRzRnSUNBZ0lDQWdJR3RsZVNCaGN5QW9kSGx3Wlc5bUlGWmhiR2xrWVhScGIyNUxaWGx6S1Z0clpYbHZaaUIwZVhCbGIyWWdWbUZzYVdSaGRHbHZia3RsZVhOZFhHNGdJQ0FnSUNBcElDWW1JQ0ZQWW1wbFkzUXVkbUZzZFdWektGVkpTMlY1Y3lrdWFXNWpiSFZrWlhNb2EyVjVLVnh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTm9aV05yY3lCcFppQmhJSFI1Y0dVZ2FYTWdkbUZzYVdSaGRHRmliR1VnWW5rZ2FYUnpJRzVoZEhWeVpTNWNiaUFnSUNvZ1FITjFiVzFoY25rZ1JHVjBaWEp0YVc1bGN5QnBaaUJoSUdkcGRtVnVJRlZKSUd0bGVTQnlaWEJ5WlhObGJuUnpJR0VnZEhsd1pTQjBhR0YwSUdseklHbHVhR1Z5Wlc1MGJIa2dkbUZzYVdSaGRHRmliR1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCclpYa2dMU0JVYUdVZ1ZVa2dhMlY1SUhSdklHTm9aV05yTGx4dUlDQWdLaUJBY21WMGRYSnVjeUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUIwYUdVZ2RIbHdaU0JwY3lCMllXeHBaR0YwWVdKc1pTd2dabUZzYzJVZ2IzUm9aWEozYVhObExseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJR2x6Vm1Gc2FXUmhkR0ZpYkdWQ2VWUjVjR1VvYTJWNU9pQnpkSEpwYm1jcE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1ZtRnNhV1JoZEdGaWJHVkNlVlI1Y0dVcExtbHVZMngxWkdWektHdGxlU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU5vWldOcmN5QnBaaUJoSUhSNWNHVWdhWE1nZG1Gc2FXUmhkR0ZpYkdVZ1lua2dZWFIwY21saWRYUmxMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQkVaWFJsY20xcGJtVnpJR2xtSUdFZ1oybDJaVzRnVlVrZ2EyVjVJSEpsY0hKbGMyVnVkSE1nWVNCMllXeHBaR0YwYVc5dUlIUm9ZWFFnWTJGdUlHSmxJR0Z3Y0d4cFpXUWdZWE1nWVc0Z1lYUjBjbWxpZFhSbExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhMlY1SUMwZ1ZHaGxJRlZKSUd0bGVTQjBieUJqYUdWamF5NWNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ2RHaGxJSFI1Y0dVZ2FYTWdkbUZzYVdSaGRHRmliR1VnWW5rZ1lYUjBjbWxpZFhSbExDQm1ZV3h6WlNCdmRHaGxjbmRwYzJVdVhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdhWE5XWVd4cFpHRjBZV0pzWlVKNVFYUjBjbWxpZFhSbEtHdGxlVG9nYzNSeWFXNW5LVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRlpoYkdsa1lYUmhZbXhsUW5sQmRIUnlhV0oxZEdVcExtbHVZMngxWkdWektHdGxlU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52Ym5abGNuUnpJSFpoYkdsa1lYUnBiMjRnYldWMFlXUmhkR0VnZEc4Z1lXNGdZWFIwY21saWRYUmxJSFpoYkhWbExseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCVWNtRnVjMlp2Y20xeklIWmhiR2xrWVhScGIyNGdiV1YwWVdSaGRHRWdhVzUwYnlCaElIWmhiSFZsSUhOMWFYUmhZbXhsSUdadmNpQjFjMlVnWVhNZ1lXNGdTRlJOVENCaGRIUnlhV0oxZEdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnJaWGtnTFNCVWFHVWdkbUZzYVdSaGRHbHZiaUJyWlhrdVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1Gc2FXUmhkR2x2YmsxbGRHRmtZWFJoZlNCMllXeDFaU0F0SUZSb1pTQjJZV3hwWkdGMGFXOXVJRzFsZEdGa1lYUmhMbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QjdjM1J5YVc1bklId2diblZ0WW1WeUlId2dZbTl2YkdWaGJuMGdWR2hsSUdOdmJuWmxjblJsWkNCaGRIUnlhV0oxZEdVZ2RtRnNkV1V1WEc0Z0lDQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZTQkpaaUIwYUdVZ1oybDJaVzRnYTJWNUlHbHpJRzV2ZENCMllXeHBaR0YwWVdKc1pTQmllU0JoZEhSeWFXSjFkR1V1WEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ2RHOUJkSFJ5YVdKMWRHVldZV3gxWlNoY2JpQWdJQ0JyWlhrNklITjBjbWx1Wnl4Y2JpQWdJQ0IyWVd4MVpUb2dWbUZzYVdSaGRHbHZiazFsZEdGa1lYUmhYRzRnSUNrNklITjBjbWx1WnlCOElHNTFiV0psY2lCOElHSnZiMnhsWVc0Z2UxeHVJQ0FnSUdsbUlDZ2hUMkpxWldOMExtdGxlWE1vVm1Gc2FXUmhkR0ZpYkdWQ2VVRjBkSEpwWW5WMFpTa3VhVzVqYkhWa1pYTW9hMlY1S1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWUVsdWRtRnNhV1FnWVhSMGNtbGlkWFJsSUd0bGVTQmNJaVI3YTJWNWZWd2lMaUJGZUhCbFkzUmxaQ0J2Ym1VZ2IyWTZJQ1I3VDJKcVpXTjBMbXRsZVhNb1ZtRnNhV1JoZEdGaWJHVkNlVUYwZEhKcFluVjBaU2t1YW05cGJpaGNJaXdnWENJcGZTNWdYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHdGxlU0E5UFQwZ1ZVbExaWGx6TGxKRlVWVkpVa1ZFSUQ4Z2RISjFaU0E2SUhaaGJIVmxXMnRsZVYwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJuWmxjblJ6SUdFZ2JXOWtaV3dnZEc4Z1lTQm1hV1ZzWkNCa1pXWnBibWwwYVc5dUxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCUWNtOWpaWE56WlhNZ1lTQnRiMlJsYkNCcGJuTjBZVzVqWlN3Z1pYaDBjbUZqZEdsdVp5QlZTUzF5Wld4aGRHVmtJRzFsZEdGa1lYUmhJR0Z1WkNCMllXeHBaR0YwYVc5dUlISjFiR1Z6SUhSdklHTnlaV0YwWlNCaElHWnBaV3hrSUdSbFptbHVhWFJwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUIwWlcxd2JHRjBaU0JOSUZSNWNHVWdaWGgwWlc1a2FXNW5JRTF2WkdWc1hHNGdJQ0FxSUVCMFpXMXdiR0YwWlNCVUlGUjVjR1VnY21WbVpYSmxibU5wYm1jZ2RHaGxJSE53WldOcFptbGpJRkpsYm1SbGNtbHVaeUJsYm1kcGJtVWdabWxsYkdRZ2NISnZjR1Z5ZEdsbGN5OXBibkIxZEhOY2JpQWdJQ29nUUhCaGNtRnRJSHROZlNCdGIyUmxiQ0F0SUZSb1pTQnRiMlJsYkNCcGJuTjBZVzVqWlNCMGJ5QmpiMjUyWlhKMExseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFkyOXlaRHh6ZEhKcGJtY3NJSFZ1YTI1dmQyNCtmU0JiWjJ4dlltRnNVSEp2Y0hNOWUzMWRJQzBnUjJ4dlltRnNJSEJ5YjNCbGNuUnBaWE1nZEc4Z1lYQndiSGtnZEc4Z1lXeHNJR05vYVd4a0lHVnNaVzFsYm5SekxseHVJQ0FnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0blpXNWxjbUYwWlVsa1BYUnlkV1ZkSUMwZ1JteGhaeUJwYm1ScFkyRjBhVzVuSUhkb1pYUm9aWElnZEc4Z2NHOXdkV3hoZEdVZ2RHaGxJSEpsYm1SbGNtVnlTV1FnY0hKdmNHVnlkSGt1WEc0Z0lDQXFJRUJ5WlhSMWNtNXpJSHRHYVdWc1pFUmxabWx1YVhScGIyNDhWRDU5SUVFZ1ptbGxiR1FnWkdWbWFXNXBkR2x2YmlCdlltcGxZM1FnY21Wd2NtVnpaVzUwYVc1bklIUm9aU0JWU1NCemRISjFZM1IxY21VZ2IyWWdkR2hsSUcxdlpHVnNMbHh1SUNBZ0tpQkFkR2h5YjNkeklIdFNaVzVrWlhKcGJtZEZjbkp2Y24wZ1NXWWdibThnVlVrZ1pHVm1hVzVwZEdsdmJuTWdZWEpsSUhObGRDQm1iM0lnZEdobElHMXZaR1ZzSUc5eUlHbG1JSFJvWlhKbElHRnlaU0JwYm5aaGJHbGtJR1JsWTI5eVlYUnZjbk11WEc0Z0lDQXFYRzRnSUNBcUlFQnRaWEp0WVdsa1hHNGdJQ0FxSUhObGNYVmxibU5sUkdsaFozSmhiVnh1SUNBZ0tpQWdjR0Z5ZEdsamFYQmhiblFnUXlCaGN5QkRiR2xsYm5SY2JpQWdJQ29nSUhCaGNuUnBZMmx3WVc1MElGSkZJR0Z6SUZKbGJtUmxjbWx1WjBWdVoybHVaVnh1SUNBZ0tpQWdjR0Z5ZEdsamFYQmhiblFnVWlCaGN5QlNaV1pzWldOMGFXOXVYRzRnSUNBcUlDQndZWEowYVdOcGNHRnVkQ0JOSUdGeklFMXZaR1ZzWEc0Z0lDQXFJQ0JETFQ0K1VrVTZJSFJ2Um1sbGJHUkVaV1pwYm1sMGFXOXVLRzF2WkdWc0xDQm5iRzlpWVd4UWNtOXdjeWxjYmlBZ0lDb2dJRkpGTFQ0K1Vqb2daMlYwVFdWMFlXUmhkR0VvVlVsTFpYbHpMbFZKVFU5RVJVd3NJRzF2WkdWc0xtTnZibk4wY25WamRHOXlLVnh1SUNBZ0tpQWdVaTB0UGo1U1JUb2dWVWxOYjJSbGJFMWxkR0ZrWVhSaFhHNGdJQ0FxSUNCU1JTMCtQbEk2SUdkbGRFRnNiRkJ5YjNCbGNuUjVSR1ZqYjNKaGRHOXljeWh0YjJSbGJDd2dWVWxMWlhsekxsSkZSa3hGUTFRcFhHNGdJQ0FxSUNCU0xTMCtQbEpGT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JFWldOdmNtRjBiM0pOWlhSaFpHRjBZVnRkUGx4dUlDQWdLaUFnVWtVdFBqNVNPaUJuWlhSQmJHeFFjbTl3WlhKMGVVUmxZMjl5WVhSdmNuTW9iVzlrWld3c0lGWmhiR2xrWVhScGIyNUxaWGx6TGxKRlJreEZRMVFwWEc0Z0lDQXFJQ0JTTFMwK1BsSkZPaUJTWldOdmNtUThjM1J5YVc1bkxDQkVaV052Y21GMGIzSk5aWFJoWkdGMFlUeFdZV3hwWkdGMGFXOXVUV1YwWVdSaGRHRStXMTArWEc0Z0lDQXFJQ0JzYjI5d0lFWnZjaUJsWVdOb0lIQnliM0JsY25SNVhHNGdJQ0FxSUNBZ0lGSkZMVDQrVWtVNklGQnliMk5sYzNNZ1ZVa2daR1ZqYjNKaGRHOXljMXh1SUNBZ0tpQWdJQ0JTUlMwK1BsSkZPaUJCY0hCc2VTQjJZV3hwWkdGMGFXOXVJSEoxYkdWelhHNGdJQ0FxSUNCbGJtUmNiaUFnSUNvZ0lGSkZMUzArUGtNNklFWnBaV3hrUkdWbWFXNXBkR2x2Ymp4VVBseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJSFJ2Um1sbGJHUkVaV1pwYm1sMGFXOXVQRTBnWlhoMFpXNWtjeUJOYjJSbGJENG9YRzRnSUNBZ2JXOWtaV3c2SUUwc1hHNGdJQ0FnWjJ4dlltRnNVSEp2Y0hNNklGSmxZMjl5WkR4emRISnBibWNzSUhWdWEyNXZkMjQrSUQwZ2UzMHNYRzRnSUNBZ1oyVnVaWEpoZEdWSlpEb2dZbTl2YkdWaGJpQTlJSFJ5ZFdWY2JpQWdLVG9nUm1sbGJHUkVaV1pwYm1sMGFXOXVQRlErSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR2x1YUdWeWFYUlFjbTl3Y3l3Z0xpNHVaMnh2WW1Gc1VISnZjSE5YYVhSb2IzVjBTVzVvWlhKcGRITWdmU0E5SUdkc2IySmhiRkJ5YjNCek8xeHVJQ0FnSUdkc2IySmhiRkJ5YjNCeklEMGdaMnh2WW1Gc1VISnZjSE5YYVhSb2IzVjBTVzVvWlhKcGRITTdYRzVjYmlBZ0lDQmpiMjV6ZENCamJHRnpjMFJsWTI5eVlYUnZjbk1nUFNCMGFHbHpMbWRsZEVOc1lYTnpSR1ZqYjNKaGRHOXljMDFsZEdGa1lYUmhQRTArS0cxdlpHVnNLVHRjYmx4dUlDQWdJR2xtSUNnaFkyeGhjM05FWldOdmNtRjBiM0p6TG14bGJtZDBhQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJTWlc1a1pYSnBibWRGY25KdmNpaGNiaUFnSUNBZ0lDQWdZRTV2SUhWcElHUmxabWx1YVhScGIyNXpJSE5sZENCbWIzSWdiVzlrWld3Z0pIdHRiMlJsYkM1amIyNXpkSEoxWTNSdmNpNXVZVzFsZlM0Z1JHbGtJSGx2ZFNCMWMyVWdRSFZwYlc5a1pXdy9ZRnh1SUNBZ0lDQWdLVHRjYmx4dUlDQWdJR052Ym5OMElHTnNZWE56UkdWamIzSmhkRzl5SUQwZ1QySnFaV04wTG1GemMybG5iaWhjYmlBZ0lDQWdJSHQ5TEZ4dUlDQWdJQ0FnTGk0dVkyeGhjM05FWldOdmNtRjBiM0p6TEZ4dUlDQWdJQ0FnYVc1b1pYSnBkRkJ5YjNCeklEOGdhVzVvWlhKcGRGQnliM0J6SURvZ2UzMGdMeThnYjNabGNuSnBaR1VnZEdGbklHRnVaQ0J3Y205d1pYSjBhV1Z6SUhkb1pXNGdhWFFnYVhNZ1lTQmpiMjF3YjI1bGJuUWdkR2hoZENCemFHOTFiR1FnYVc1b1pYSnBkQ0J3Y205d1pYSjBhV1Z6SUdaeWIyMGdhWFJ6SUhCaGNtVnVkQzVjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhzZ2RHRm5MQ0J3Y205d2N5d2dhWFJsYlN3Z2FHRnVaR3hsY25NZ2ZTQTlJR05zWVhOelJHVmpiM0poZEc5eU8xeHVYRzRnSUNBZ1kyOXVjM1FnZFdsRVpXTnZjbUYwYjNKeklEMGdUVzlrWld3dWRXbFFjbTl3WlhKMGFXVnpUMllvWEc0Z0lDQWdJQ0J0YjJSbGJDNWpiMjV6ZEhKMVkzUnZjaUJoY3lCRGIyNXpkSEoxWTNSdmNqeE5QbHh1SUNBZ0lDa2dZWE1nS0d0bGVXOW1JRTBwVzEwN1hHNWNiaUFnSUNBdkx5QmpiMjV6ZENCMWFVUmxZMjl5WVhSdmNuTTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lFUmxZMjl5WVhSdmNrMWxkR0ZrWVhSaFcxMCtJRDFjYmlBZ0lDQXZMeUFnSUZKbFpteGxZM1JwYjI0dVoyVjBRV3hzVUhKdmNHVnlkSGxFWldOdmNtRjBiM0p6S0cxdlpHVnNMQ0JWU1V0bGVYTXVVa1ZHVEVWRFZDa2dZWE1nVW1WamIzSmtQRnh1SUNBZ0lDOHZJQ0FnSUNCemRISnBibWNzWEc0Z0lDQWdMeThnSUNBZ0lFUmxZMjl5WVhSdmNrMWxkR0ZrWVhSaFcxMWNiaUFnSUNBdkx5QWdJRDQ3WEc0Z0lDQWdiR1YwSUdOb2FXeGtjbVZ1T2lCR2FXVnNaRVJsWm1sdWFYUnBiMjQ4VW1WamIzSmtQSE4wY21sdVp5d2dZVzU1UGo1YlhTQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnNaWFFnWTJocGJHUlFjbTl3Y3pvZ1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBpQTlJR2wwWlcwL0xuQnliM0J6SUh4OElIdDlPMXh1SUNBZ0lHeGxkQ0J0WVhCd1pYSTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDRnUFNCN2ZUdGNiaUFnSUNCamIyNXpkQ0JuWlhSUVlYUm9JRDBnS0hCaGNtVnVkRG9nYzNSeWFXNW5JSHdnZFc1a1pXWnBibVZrTENCd2NtOXdPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ3WVhKbGJuUWdQeUJiY0dGeVpXNTBMQ0J3Y205d1hTNXFiMmx1S0Z3aUxsd2lLU0E2SUhCeWIzQTdYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lHbG1JQ2gxYVVSbFkyOXlZWFJ2Y25NcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhaaGJHbGtZWFJwYjI1RVpXTnZjbUYwYjNKek9pQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytJRDFjYmlBZ0lDQWdJQ0FnVFdWMFlXUmhkR0V1WjJWMEtGeHVJQ0FnSUNBZ0lDQWdJRzF2WkdWc0xtTnZibk4wY25WamRHOXlJR0Z6SUVOdmJuTjBjblZqZEc5eUxGeHVJQ0FnSUNBZ0lDQWdJRlpoYkdsa1lYUnBiMjVMWlhsekxsSkZSa3hGUTFSY2JpQWdJQ0FnSUNBZ0tTQjhmQ0I3ZlR0Y2JpQWdJQ0FnSUM4dklHTnZibk4wSUhaaGJHbGtZWFJwYjI1RVpXTnZjbUYwYjNKek9pQlNaV052Y21ROFhHNGdJQ0FnSUNBdkx5QWdJSE4wY21sdVp5eGNiaUFnSUNBZ0lDOHZJQ0FnUkdWamIzSmhkRzl5VFdWMFlXUmhkR0U4Vm1Gc2FXUmhkR2x2YmsxbGRHRmtZWFJoUGx0ZFhHNGdJQ0FnSUNBdkx5QStJRDBnVW1WbWJHVmpkR2x2Ymk1blpYUkJiR3hRY205d1pYSjBlVVJsWTI5eVlYUnZjbk1vWEc0Z0lDQWdJQ0F2THlBZ0lHMXZaR1ZzTEZ4dUlDQWdJQ0FnTHk4Z0lDQldZV3hwWkdGMGFXOXVTMlY1Y3k1U1JVWk1SVU5VWEc0Z0lDQWdJQ0F2THlBcElHRnpJRkpsWTI5eVpEeHpkSEpwYm1jc0lFUmxZMjl5WVhSdmNrMWxkR0ZrWVhSaFBGWmhiR2xrWVhScGIyNU5aWFJoWkdGMFlUNWJYVDQ3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUd0bGVTQnZaaUIxYVVSbFkyOXlZWFJ2Y25NcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1pHVmpjeUE5SUUxdlpHVnNMblZwUkdWamIzSmhkR2x2Yms5bUtGeHVJQ0FnSUNBZ0lDQWdJRzF2WkdWc0xtTnZibk4wY25WamRHOXlJR0Z6SUVOdmJuTjBjblZqZEc5eVBFMCtMRnh1SUNBZ0lDQWdJQ0FnSUd0bGVWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2RIbHdaVG9nWVc1NU8xeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibTh0ZFc1MWMyVmtMWFpoY25OY2JpQWdJQ0FnSUNBZ0lDQjBlWEJsSUQwZ1RXOWtaV3d1ZFdsVWVYQmxUMllvYlc5a1pXd3VZMjl1YzNSeWRXTjBiM0lnWVhNZ1EyOXVjM1J5ZFdOMGIzSThUVDRzSUd0bGVTazdYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1U2SUhWdWEyNXZkMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvSVNobElHbHVjM1JoYm1ObGIyWWdUbTkwUm05MWJtUkZjbkp2Y2lrcElIUm9jbTkzSUdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdMeThnWTI5dWMzUWdkSGx3WlhNZ1BTQlBZbXBsWTNRdWRtRnNkV1Z6S0dSbFkzTXBMbVpwYkhSbGNpZ29leUJyWlhrZ2ZTa2dQVDVjYmlBZ0lDQWdJQ0FnTHk4Z0lDQmJWVWxMWlhsekxsQlNUMUFzSUZWSlMyVjVjeTVGVEVWTlJVNVVMQ0JWU1V0bGVYTXVRMGhKVEVSZExtbHVZMngxWkdWektHdGxlU2xjYmlBZ0lDQWdJQ0FnTHk4Z0tUdGNiaUFnSUNBZ0lDQWdMeThnYVdZZ0tDRjBlWEJsS1Z4dUlDQWdJQ0FnSUNBdkx5QWdJSFJvY205M0lHNWxkeUJTWlc1a1pYSnBibWRGY25KdmNpaGNiaUFnSUNBZ0lDQWdMeThnSUNBZ0lHQlBibXg1SUc5dVpTQjBlWEJsSUc5bUlHUmxZMjl5WVhScGIyNGdhWE1nWVd4c2IzZGxaQzRnVUd4bFlYTmxJR05vYjI5elpTQmlaWFIzWldWdUlFQjFhWEJ5YjNBc0lFQjFhV05vYVd4a0lHOXlJRUIxYVdWc1pXMWxiblJnWEc0Z0lDQWdJQ0FnSUM4dklDQWdLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdhR0Z6U0dsa1pVOXVSR1ZqYjNKaGRHOXlJRDBnVFc5a1pXd3VkV2xKYzBocFpHUmxiaWhjYmlBZ0lDQWdJQ0FnSUNCdGIyUmxiQzVqYjI1emRISjFZM1J2Y2lCaGN5QkRiMjV6ZEhKMVkzUnZjanhOUGl4Y2JpQWdJQ0FnSUNBZ0lDQnJaWGxjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2hoYzBocFpHVlBia1JsWTI5eVlYUnZjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdoaGMxVnBSV3hsYldWdWRFUmxZMjl5WVhSdmNpQTlJRTF2WkdWc0xuVnBSV3hsYldWdWRFOW1LRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JXOWtaV3d1WTI5dWMzUnlkV04wYjNJZ1lYTWdRMjl1YzNSeWRXTjBiM0k4VFQ0c1hHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhsY2JpQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ2hhR0Z6VldsRmJHVnRaVzUwUkdWamIzSmhkRzl5S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRkpsYm1SbGNtbHVaMFZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCZ1FIVnBaV3hsYldWdWRDQnVieUJtYjNWdVpDQnBiaUJjSWlSN2EyVjVJR0Z6SUhOMGNtbHVaMzFjSWk0Z1NYUWdhWE1nY21WeGRXbHlaV1FnZEc4Z2RYTmxJR2hwWkdSbGJrOXVJR1JsWTI5eVlYUnZjaTVnWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE52Y25SbFpDQTlJRTlpYW1WamRDNWxiblJ5YVdWektHUmxZM01wWEc0Z0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvVzJzc0lIWmRLU0E5UGlBb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYTJWNU9pQnJMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZjSE02SUhZc1hHNGdJQ0FnSUNBZ0lDQWdmU2twWEc0Z0lDQWdJQ0FnSUNBZ0xuTnZjblFvS0dFcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCYlZVbExaWGx6TGtWTVJVMUZUbFFzSUZWSlMyVjVjeTVEU0VsTVJGMHVhVzVqYkhWa1pYTW9ZUzVyWlhrcElEOGdMVEVnT2lBeE8xeHVJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNCemIzSjBaV1F1Wm05eVJXRmphQ2dvWkdWaktTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZrWldNcElIUm9jbTkzSUc1bGR5QlNaVzVrWlhKcGJtZEZjbkp2Y2loZ1RtOGdaR1ZqYjNKaGRHOXlJR1p2ZFc1a1lDazdYRzVjYmlBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0dSbFl5NXJaWGtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1ZVbExaWGx6TGxCU1QxQTZJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMmhwYkdSUWNtOXdjMXRyWlhrZ1lYTWdZVzU1WFNBOUlHUmxZeTV3Y205d2N5QmhjeUJWU1ZCeWIzQk5aWFJoWkdGMFlUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRlZKUzJWNWN5NURTRWxNUkRvZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0YjJSbGJFNWhiV1VnUFZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNoa1pXTXVjSEp2Y0hNZ1lYTWdWVWxOYjJSbGJFMWxkR0ZrWVhSaEtUOHVjSEp2Y0hNL0xtNWhiV1VnZkh3Z0tHdGxlU0JoY3lCemRISnBibWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdselVISnZjR1Z5ZEhsTmIyUmxiQ0E5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCTmIyUmxiQzVwYzAxdlpHVnNLRTF2WkdWc0xtSjFhV3hrS0h0OUxDQnRiMlJsYkU1aGJXVXBLU0I4ZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1RXOWtaV3d1YVhOUWNtOXdaWEowZVUxdlpHVnNLRzF2WkdWc0xDQnRiMlJsYkU1aGJXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFYTlFjbTl3WlhKMGVVMXZaR1ZzS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGSmxibVJsY21sdVowVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmdRMmhwYkdRZ1hDSWtlMjF2WkdWc1RtRnRaU0JoY3lCemRISnBibWQ5WENJZ2JYVnpkQ0JpWlNCaElHMXZaR1ZzTG1CY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1YnkxMWJuVnpaV1F0ZG1GeWMxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobE9pQjFibXR1YjNkdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRkpsYm1SbGNtbHVaMFZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZRU5vYVd4a0lGd2lKSHR0YjJSbGJFNWhiV1VnWVhNZ2MzUnlhVzVuZlZ3aUlHMTFjM1FnWW1VZ1lTQnRiMlJsYkM1Z1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JEYkdGNmVqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzNWaWJXOWtaV3dnUFNBb2JXOWtaV3dnWVhNZ1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBpbGJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhMlY1SUdGeklHRnVlVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmRJR0Z6SUUxdlpHVnNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamIyNXpkSEoxWTNSaFlteGxJRDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbGIyWWdjM1ZpYlc5a1pXd2dQVDA5SUZ3aWIySnFaV04wWENJZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkV0p0YjJSbGJDQWhQVDBnYm5Wc2JDQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0ZCY25KaGVTNXBjMEZ5Y21GNUtITjFZbTF2WkdWc0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdZM0psWVhSbElHbHVjM1JoYm1ObElHbG1JSFZ1WkdWbWFXNWxaRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdOdmJuTjBjblZqZEdGaWJHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmpiR0Y2ZWs1aGJXVWdQU0FvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb1pHVmpMbkJ5YjNCeklHRnpJR0Z1ZVNrdWNISnZjSE1nWVhNZ1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDay9MbTVoYldVZ1lYTWdjM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFTnNZWHA2SUQwZ2JtVjNJQ2hOYjJSbGJDNW5aWFFvWTJ4aGVucE9ZVzFsS1NCaGN5Qk5iMlJsYkVOdmJuTjBjblZqZEc5eVBFMXZaR1ZzUGlrb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNGdmSHdnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05vYVd4a2NtVnVSMnh2WW1Gc1VISnZjSE1nUFNCUFltcGxZM1F1WVhOemFXZHVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHQ5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdkc2IySmhiRkJ5YjNCeklIeDhJSHQ5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhzZ2JXOWtaV3c2SUVOc1lYcDZJSDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXNW9aWEpwZEZCeWIzQnpPaUJrWldNdWNISnZjSE1nWVhNZ1ZVbE5iMlJsYkUxbGRHRmtZWFJoTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyaHBiR1JQWmpvZ1oyVjBVR0YwYUNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaMnh2WW1Gc1VISnZjSE0vTG1Ob2FXeGtUMllnWVhNZ2MzUnlhVzVuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGtnWVhNZ2MzUnlhVzVuWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWTJocGJHUkVaV1pwYm1sMGFXOXVJRDBnZEdocGN5NTBiMFpwWld4a1JHVm1hVzVwZEdsdmJpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkV0p0YjJSbGJDQjhmQ0JEYkdGNmVpd2dMeThnVFhWemRDQmhkbTlwWkNCMWJtUmxabWx1WldRZ2RtRnNkV1Z6SU9LQWxDQmhiaUJwYm5OMFlXNWpaU0JwY3lCeVpYRjFhWEpsWkNCMGJ5QnlaWFJ5YVdWMlpTQndjbTl3WlhKMGFXVnpMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a2NtVnVSMnh2WW1Gc1VISnZjSE1zWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1Gc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZXlCcGJtaGxjbWwwVUhKdmNITWdmU0E5SUdOb2FXeGtjbVZ1UjJ4dlltRnNVSEp2Y0hNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBibWhsY21sMFVISnZjSE1wWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJocGJHUkVaV1pwYm1sMGFXOXVMbkJ5YjNCeklEMGdUMkpxWldOMExtRnpjMmxuYmloY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIdDlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJocGJHUkVaV1pwYm1sMGFXOXVMbkJ5YjNCekxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzVvWlhKcGRGQnliM0J6TG5CeWIzQnpJSHg4SUh0OVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyaHBiR1J5Wlc0dWNIVnphQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYUdsc1pFUmxabWx1YVhScGIyNGdZWE1nUm1sbGJHUkVaV1pwYm1sMGFXOXVQRkpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDQrWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCVlNVdGxlWE11VlVsTVNWTlVVRkpQVURvZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCdFlYQndaWElnUFNCdFlYQndaWElnZkh3Z2UzMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdSbFkxQnliM0J6SUQwZ1pHVmpMbkJ5YjNCeklHRnpJRlZKVEdsemRGQnliM0JOWlhSaFpHRjBZVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSbFkxQnliM0J6TG01aGJXVXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0Z3Y0dWeVcyUmxZMUJ5YjNCekxtNWhiV1ZkSUQxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1Z2WmlCa1pXTlFjbTl3Y3o4dWNISnZjSE1nUFQwOUlGd2liMkpxWldOMFhDSWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZWSlMyVjVjeTVUUlZGVlJVNURSU0JwYmlCa1pXTlFjbTl3Y3k1d2NtOXdjMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lHUmxZMUJ5YjNCekxuQnliM0J6WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dhMlY1TzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSEJ5YjNCeklEMGdUMkpxWldOMExtRnpjMmxuYmloY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCN2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiR0Z6YzBSbFkyOXlZWFJ2Y2k1d2NtOXdjejh1YVhSbGJTQjhmQ0I3ZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRHVnRQeTV3Y205d2N5QjhmQ0I3ZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1pXTlFjbTl3Y3o4dWNISnZjSE1nZkh3Z2UzMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaMnh2WW1Gc1VISnZjSE5jYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMmhwYkdSUWNtOXdjeUE5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMFlXYzZJR2wwWlcwL0xuUmhaeUI4ZkNCd2NtOXdjeTV5Wlc1a1pYSWdmSHdnWENKY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbTl3Y3pvZ1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z1kyaHBiR1JRY205d2N6OHVjSEp2Y0hNc0lIc2diV0Z3Y0dWeUlIMHNJSEJ5YjNCektTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnVlVsTFpYbHpMa1ZXUlU1VVV6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdWVWxMWlhsekxraEpSRVJGVGpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1ZVbExaWGx6TGtoSlJFVmZSazlTT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCVlNVdGxlWE11VTBoUFYxOUdUMUk2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZWSlMyVjVjeTVRUVVkRk9seHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQlZTVXRsZVhNdVQxSkVSVkk2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZWSlMyVjVjeTVWU1V4QldVOVZWRkJTVDFBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGVkpTMlY1Y3k1RlRFVk5SVTVVT2lCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOb2FXeGtjbVZ1SUQwZ1kyaHBiR1J5Wlc0Z2ZId2dXMTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElIVnBVSEp2Y0hNNklGVkpSV3hsYldWdWRFMWxkR0ZrWVhSaElEMGdaR1ZqTG5CeWIzQnpJR0Z6SUZWSlJXeGxiV1Z1ZEUxbGRHRmtZWFJoTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjJhWE5wWW1sc2FYUjVVSEp2Y0hNZ1BWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxZeTVyWlhrZ1BUMDlJRlZKUzJWNWN5NUlTVVJGWDBaUFVseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQeUI3SUdocFpHVkdiM0k2SUdSbFl5NXdjbTl3Y3lCaGN5QnpkSEpwYm1kYlhTQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUdSbFl5NXJaWGtnUFQwOUlGVkpTMlY1Y3k1VFNFOVhYMFpQVWx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQS9JSHNnYzJodmQwWnZjam9nWkdWakxuQnliM0J6SUdGeklITjBjbWx1WjF0ZElIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnT2lCN2ZUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY0hKdmNITWdQU0JQWW1wbFkzUXVZWE56YVdkdUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIdDlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a1VISnZjSE0vTG5CeWIzQnpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFZwVUhKdmNITXVjSEp2Y0hNZ2ZId2dlMzBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1semFXSnBiR2wwZVZCeWIzQnpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFZwVUhKdmNITS9MbkJ5YjNCelB5NXVZVzFsWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCd1lYUm9PaUJuWlhSUVlYUm9LRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaMnh2WW1Gc1VISnZjSE0vTG1Ob2FXeGtUMllnWVhNZ2MzUnlhVzVuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZFdsUWNtOXdjeTV3Y205d2N5RXVibUZ0WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMmhwYkdSUFpqb2dkVzVrWldacGJtVmtMQ0F2THlCVWFHVWdZMmhwYkdSUFppQndjbTl3SUdseklIQmhjM05sWkNCaWVTQm5iRzlpWVd4UWNtOXdjeUIzYUdWdUlHbDBJR2x6SUdFZ2JtVnpkR1ZrSUhCeWIzQmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ09pQjdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JuYkc5aVlXeFFjbTl3Y3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCN0lHNWhiV1U2SUhWcFVISnZjSE11Y0hKdmNITS9MbTVoYldVZ2ZId2dhMlY1SUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aR1ZqTG10bGVTQTlQVDBnVlVsTFpYbHpMa1ZNUlUxRlRsUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmphR2xzWkVSbFptbHVhWFJwYjI0NklFWnBaV3hrUkdWbWFXNXBkR2x2Ymp4U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK1BpQTlJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSaFp6b2dkV2xRY205d2N5NTBZV2NnZkh3Z1kyaHBiR1JRY205d2N6OHVkR0ZuSUh4OElIUmhaeUI4ZkNCY0lsd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmNITXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjJZV3hwWkdGMGFXOXVSR1ZqY3lBOUlIWmhiR2xrWVhScGIyNUVaV052Y21GMGIzSnpXMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJWNUlHRnpJR0Z1ZVZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUYwZ1lYTWdWbUZzYVdSaGRHbHZiazFsZEdGa1lYUmhXMTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIWmhiR2xrWVhScGIyNUVaV056S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR1JsWXlCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3loMllXeHBaR0YwYVc5dVJHVmpjeWt1YldGd0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvVzJzc0lIWmRLU0E5UGlBb2V5QnJaWGs2SUdzc0lIQnliM0J6T2lCMklIMHBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbWx6Vm1Gc2FXUmhkR0ZpYkdWQ2VVRjBkSEpwWW5WMFpTaGtaV011YTJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTm9hV3hrUkdWbWFXNXBkR2x2Ymk1d2NtOXdjMXQwYUdsekxuUnlZVzV6YkdGMFpTaGtaV011YTJWNUtWMGdQVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1MGIwRjBkSEpwWW5WMFpWWmhiSFZsS0dSbFl5NXJaWGtzSUdSbFl5NXdjbTl3Y3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11YVhOV1lXeHBaR0YwWVdKc1pVSjVWSGx3WlNoa1pXTXVhMlY1S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGtaV011YTJWNUlEMDlQU0JJVkUxTU5VbHVjSFYwVkhsd1pYTXVSRUZVUlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyaHBiR1JFWldacGJtbDBhVzl1TG5CeWIzQnpXMVZKUzJWNWN5NUdUMUpOUVZSZElEMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZqTG5CeWIzQnpMbVp2Y20xaGRDQjhmQ0JJVkUxTU5VUmhkR1ZHYjNKdFlYUTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOb2FXeGtSR1ZtYVc1cGRHbHZiaTV3Y205d2MxdFZTVXRsZVhNdVZGbFFSVjBnUFNCa1pXTXVhMlY1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbWx6UTNWemRHOXRWbUZzYVdSaGRHOXlLR1JsWXk1clpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjSEp2Y0hOYlZVbExaWGx6TGxOVlFsOVVXVkJGWFNBOUlHUmxZeTVyWlhrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHUmxZeTV3Y205d2N6OHViV1Z6YzJGblpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjSEp2Y0hOYlZVbExaWGx6TGxaQlRFbEVRVlJKVDA1ZlRVVlRVMEZIUlYwZ1BTQmtaV011Y0hKdmNITXViV1Z6YzJGblpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdOb2FXeGtSR1ZtYVc1cGRHbHZiaTV3Y205d2MxdFZTVXRsZVhNdVZGbFFSVjBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdKaGMybGpWSGx3WlNBOUlFMWxkR0ZrWVhSaExuUjVjR1VvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMXZaR1ZzTG1OdmJuTjBjblZqZEc5eUlHRnpJRU52Ym5OMGNuVmpkRzl5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGtnWVhNZ2MzUnlhVzVuWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcExtNWhiV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamFHbHNaRVJsWm1sdWFYUnBiMjR1Y0hKdmNITmJWVWxMWlhsekxsUlpVRVZkSUQwZ2RHaHBjeTUwY21GdWMyeGhkR1VvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSmhjMmxqVkhsd1pTNTBiMHh2ZDJWeVEyRnpaU2dwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBjblZsWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a1JHVm1hVzVwZEdsdmJpNXdjbTl3Y3k1MllXeDFaU0E5SUdadmNtMWhkRUo1Vkhsd1pTaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a1JHVm1hVzVwZEdsdmJpNXdjbTl3YzF0VlNVdGxlWE11VkZsUVJWMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbGJGdHJaWGtnWVhNZ2EyVjViMllnVFYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmphR2xzWkVSbFptbHVhWFJwYjI0dWNISnZjSE5iVlVsTFpYbHpMa1pQVWsxQlZGMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a2NtVnVMbkIxYzJnb1kyaHBiR1JFWldacGJtbDBhVzl1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyaHBiR1FnUFNCamFHbHNaSEpsYmk1bWFXNWtLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2hqS1NBOVBseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZeTV3Y205d2N6OHVibUZ0WlNBOVBUMGdhMlY1SUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9XMVZKUzJWNWN5NVZTVXhCV1U5VlZGQlNUMUFzSUZWSlMyVjVjeTVRUVVkRkxDQlZTVXRsZVhNdVJWWkZUbFJUWFM1cGJtTnNkV1JsY3loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZqTG10bGVWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLU0FtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9ZeTV3Y205d2N6OHVZMmhwYkdSUFppQTlQVDBnYTJWNUlIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1l5NXdjbTl3Y3o4dVkyaHBiR1JQWmo4dVpXNWtjMWRwZEdnb1lDNGtlMnRsZVNCaGN5QnpkSEpwYm1kOVlDa3BLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTJocGJHUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdWakxtdGxlU0E5UFQwZ1ZVbExaWGx6TGtoSlJFVmZSazlTSUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsWXk1clpYa2dQVDA5SUZWSlMyVjVjeTVUU0U5WFgwWlBVbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a0xuQnliM0J6SUQwZ1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z1kyaHBiR1F1Y0hKdmNITXNJSFpwYzJsaWFXeHBkSGxRY205d2N5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dSbFl5NXJaWGtnSVQwOUlGVkpTMlY1Y3k1VlNVeEJXVTlWVkZCU1QxQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyaHBiR1F1Y0hKdmNITWdQU0JQWW1wbFkzUXVZWE56YVdkdUtIdDlMQ0JqYUdsc1pDNXdjbTl3Y3l3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ0a1pXTXVhMlY1WFRvZ2RXbFFjbTl3Y3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCN0lISnZkeXdnWTI5c0xDQndjbTl3Y3lCOUlEMGdaR1ZqTG5CeWIzQnpJR0Z6SUdGdWVUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJocGJHUXVjSEp2Y0hNZ1BTQlBZbXBsWTNRdVlYTnphV2R1S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHQ5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJ5YjNCeklIeDhJSHQ5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a0xuQnliM0J6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEp2ZHl4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjJ4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dVbVZ1WkdWeWFXNW5SWEp5YjNJb1lFbHVkbUZzYVdRZ2EyVjVPaUFrZTJSbFl5NXJaWGw5WUNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JuYkc5aVlXeFFjbTl3Y3lBOUlFOWlhbVZqZEM1aGMzTnBaMjRvZTMwc0lIQnliM0J6TENCbmJHOWlZV3hRY205d2N5d2dlMXh1SUNBZ0lDQWdhR0Z1Wkd4bGNuTTZJR2hoYm1Sc1pYSnpJSHg4SUh0OUxGeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWTNWeWNtVnVkRTVoYldWemNHRmpaWE1nUFNCdVpYY2dVMlYwS0Z4dUlDQWdJQ0FnVzF4dUlDQWdJQ0FnSUNBdUxpNG9RWEp5WVhrdWFYTkJjbkpoZVNobmJHOWlZV3hRY205d2N6OHVibUZ0WlhOd1lXTmxjeWxjYmlBZ0lDQWdJQ0FnSUNBL0lDaG5iRzlpWVd4UWNtOXdjeTV1WVcxbGMzQmhZMlZ6SUdGeklITjBjbWx1WjF0ZEtWeHVJQ0FnSUNBZ0lDQWdJRG9nVzEwcExGeHVJQ0FnSUNBZ0lDQXVMaTRvZEhsd1pXOW1JR2RzYjJKaGJGQnliM0J6UHk1dVlXMWxjM0JoWTJVZ1BUMDlJRndpYzNSeWFXNW5YQ0pjYmlBZ0lDQWdJQ0FnSUNBL0lGdG5iRzlpWVd4UWNtOXdjeTV1WVcxbGMzQmhZMlVnWVhNZ2MzUnlhVzVuWFZ4dUlDQWdJQ0FnSUNBZ0lEb2dXMTBwTEZ4dUlDQWdJQ0FnWFM1bWFXeDBaWElvUW05dmJHVmhiaWxjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUc5d1pYSmhkR2x2YmlBOUlHZHNiMkpoYkZCeWIzQnpQeTV2Y0dWeVlYUnBiMjQ3WEc0Z0lDQWdZMmhwYkdSeVpXNGdQU0IwYUdsekxuTnZjblJEYUdsc1pISmxia0o1VDNKa1pYSW9ZMmhwYkdSeVpXNHBMbVpwYkhSbGNpZ29hWFJsYlNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FHbGtaR1Z1VDI0Z1BTQW9hWFJsYlQ4dWNISnZjSE0vTG1ocFpHUmxiaUJoY3lCRGNuVmtUM0JsY21GMGFXOXVTMlY1YzF0ZEtTQjhmQ0JiWFR0Y2JpQWdJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDQWdhR2xrWkdWdVQyNHViR1Z1WjNSb0lENGdNQ0FtSmx4dUlDQWdJQ0FnSUNCb2FXUmtaVzVQYmk1cGJtTnNkV1JsY3lodmNHVnlZWFJwYjI0Z1lYTWdRM0oxWkU5d1pYSmhkR2x2Ymt0bGVYTXBYRzRnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpiMjV6ZENCb2FXUmxSbTl5SUQwZ0tHbDBaVzAvTG5CeWIzQnpQeTVvYVdSbFJtOXlJR0Z6SUhOMGNtbHVaMXRkS1NCOGZDQmJYVHRjYmlBZ0lDQWdJR052Ym5OMElITm9iM2RHYjNJZ1BTQW9hWFJsYlQ4dWNISnZjSE0vTG5Ob2IzZEdiM0lnWVhNZ2MzUnlhVzVuVzEwcElIeDhJRnRkTzF4dUlDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQm9hV1JsUm05eUxteGxibWQwYUNBK0lEQWdKaVpjYmlBZ0lDQWdJQ0FnV3k0dUxtTjFjbkpsYm5ST1lXMWxjM0JoWTJWelhTNXpiMjFsS0NodVlXMWxjM0JoWTJVcElEMCtJR2hwWkdWR2IzSXVhVzVqYkhWa1pYTW9ibUZ0WlhOd1lXTmxLU2xjYmlBZ0lDQWdJQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0FnSUhOb2IzZEdiM0l1YkdWdVozUm9JRDRnTUNBbUpseHVJQ0FnSUNBZ0lDQWhXeTR1TG1OMWNuSmxiblJPWVcxbGMzQmhZMlZ6WFM1emIyMWxLQ2h1WVcxbGMzQmhZMlVwSUQwK0lITm9iM2RHYjNJdWFXNWpiSFZrWlhNb2JtRnRaWE53WVdObEtTbGNiaUFnSUNBZ0lDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCOUtUdGNiaUFnSUNCamIyNXpkQ0J5WlhOMWJIUTZJRVpwWld4a1JHVm1hVzVwZEdsdmJqeFVQaUE5SUh0Y2JpQWdJQ0FnSUhSaFp6b2dkR0ZuTEZ4dUlDQWdJQ0FnYVhSbGJUb2dZMmhwYkdSUWNtOXdjeUJoY3lCVlNVeHBjM1JKZEdWdFJXeGxiV1Z1ZEUxbGRHRmtZWFJoTEZ4dUlDQWdJQ0FnY0hKdmNITTZJR2RzYjJKaGJGQnliM0J6SUdGeklGUWdKaUJHYVdWc1pGQnliM0JsY25ScFpYTWdKaUJKVUdGblpXUkRiMjF3YjI1bGJuUlFjbTl3WlhKMGFXVnpMRnh1SUNBZ0lDQWdZMmhwYkdSeVpXNDZJR05vYVd4a2NtVnVQeTVzWlc1bmRHaGNiaUFnSUNBZ0lDQWdQeUFvWTJocGJHUnlaVzRnWVhNZ1JtbGxiR1JFWldacGJtbDBhVzl1UEdGdWVUNWJYU2xjYmlBZ0lDQWdJQ0FnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUdsbUlDaG5aVzVsY21GMFpVbGtLU0J5WlhOMWJIUXVjbVZ1WkdWeVpYSkpaQ0E5SUdkbGJtVnlZWFJsVlVsTmIyUmxiRWxFS0cxdlpHVnNLVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWlc1a1pYSnpJR0VnYlc5a1pXd2dkMmwwYUNCbmJHOWlZV3dnY0hKdmNHVnlkR2xsY3lCaGJtUWdZV1JrYVhScGIyNWhiQ0JoY21kMWJXVnVkSE11WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRUZpYzNSeVlXTjBJRzFsZEdodlpDQjBieUJpWlNCcGJYQnNaVzFsYm5SbFpDQmllU0J6ZFdKamJHRnpjMlZ6SUhSdklHUmxabWx1WlNCemNHVmphV1pwWXlCeVpXNWtaWEpwYm1jZ1ltVm9ZWFpwYjNJdVhHNGdJQ0FxWEc0Z0lDQXFJRUIwWlcxd2JHRjBaU0JOSUZSNWNHVWdaWGgwWlc1a2FXNW5JRTF2WkdWc1hHNGdJQ0FxSUVCMFpXMXdiR0YwWlNCU0lGSmxibVJsY21sdVp5QmxibWRwYm1VZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYzNCbFkybG1hV01nYjNWMGNIVjBJSFI1Y0dWY2JpQWdJQ29nUUhCaGNtRnRJSHROZlNCdGIyUmxiQ0F0SUZSb1pTQnRiMlJsYkNCMGJ5QmlaU0J5Wlc1a1pYSmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdFNaV052Y21ROGMzUnlhVzVuTENCMWJtdHViM2R1UG4wZ1oyeHZZbUZzVUhKdmNITWdMU0JIYkc5aVlXd2djSEp2Y0dWeWRHbGxjeUIwYnlCaVpTQmhjSEJzYVdWa0lIUnZJR0ZzYkNCbGJHVnRaVzUwY3lCa2RYSnBibWNnY21WdVpHVnlhVzVuTGx4dUlDQWdLaUJBY0dGeVlXMGdleTR1TG1GdWVWdGRmU0JoY21keklDMGdRV1JrYVhScGIyNWhiQ0JoY21kMWJXVnVkSE1nZEdoaGRDQnRZWGtnWW1VZ2NtVnhkV2x5WldRZ1ptOXlJSE53WldOcFptbGpJSEpsYm1SbGNtbHVaeUJwYlhCc1pXMWxiblJoZEdsdmJuTXVYRzRnSUNBcUlFQnlaWFIxY201eklIdFNmU0JVYUdVZ2NtVnVaR1Z5WldRZ2NtVnpkV3gwTENCMGVYQmxJR1JsY0dWdVpITWdiMjRnZEdobElITndaV05wWm1saklHbHRjR3hsYldWdWRHRjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFZV0p6ZEhKaFkzUmNiaUFnSUNvdlhHNGdJR0ZpYzNSeVlXTjBJSEpsYm1SbGNqeE5JR1Y0ZEdWdVpITWdUVzlrWld3K0tGeHVJQ0FnSUcxdlpHVnNPaUJOTEZ4dUlDQWdJR2RzYjJKaGJGQnliM0J6T2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQaXhjYmlBZ0lDQXVMaTVoY21kek9pQmhibmxiWFZ4dUlDQXBPaUJTTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1VtVm5hWE4wWlhKeklHRWdjbVZ1WkdWeWFXNW5JR1Z1WjJsdVpTQnBibk4wWVc1alpTNWNiaUFnSUNvZ1FITjFiVzFoY25rZ1FXUmtjeUJoSUhKbGJtUmxjbWx1WnlCbGJtZHBibVVnZEc4Z2RHaGxJSE4wWVhScFl5QmpZV05vWlNCaGJtUWdjMlYwY3lCcGRDQmhjeUIwYUdVZ1kzVnljbVZ1ZENCbGJtZHBibVV1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVnVaR1Z5YVc1blJXNW5hVzVsUEhWdWEyNXZkMjRzSUhWdWEyNXZkMjQrZlNCbGJtZHBibVVnTFNCVWFHVWdjbVZ1WkdWeWFXNW5JR1Z1WjJsdVpTQjBieUJ5WldkcGMzUmxjaTVjYmlBZ0lDb2dRSFJvY205M2N5QjdTVzUwWlhKdVlXeEZjbkp2Y24wZ1NXWWdZVzRnWlc1bmFXNWxJSGRwZEdnZ2RHaGxJSE5oYldVZ1pteGhkbTl5SUdGc2NtVmhaSGtnWlhocGMzUnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nY21WbmFYTjBaWElvWlc1bmFXNWxPaUJTWlc1a1pYSnBibWRGYm1kcGJtVThkVzVyYm05M2Jpd2dkVzVyYm05M2JqNHBJSHRjYmlBZ0lDQnBaaUFvWlc1bmFXNWxMbVpzWVhadmRYSWdhVzRnZEdocGN5NWpZV05vWlNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnVW1WdVpHVnlhVzVuSUdWdVoybHVaU0IxYm1SbGNpQWtlMlZ1WjJsdVpTNW1iR0YyYjNWeWZTQmhiSEpsWVdSNUlHVjRhWE4wYzJCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZEdocGN5NWpZV05vWlZ0bGJtZHBibVV1Wm14aGRtOTFjbDBnUFNCbGJtZHBibVU3WEc0Z0lDQWdkR2hwY3k1amRYSnlaVzUwSUQwZ1pXNW5hVzVsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWlhSeWFXVjJaWE1nYjNJZ2FXNXBkR2xoYkdsNlpYTWdZU0J5Wlc1a1pYSnBibWNnWlc1bmFXNWxMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQkhaWFJ6SUdGdUlHVjRhWE4wYVc1bklHVnVaMmx1WlNCcGJuTjBZVzVqWlNCdmNpQmpjbVZoZEdWeklHRnVaQ0JwYm1sMGFXRnNhWHBsY3lCaElHNWxkeUJ2Ym1VZ2FXWWdaMmwyWlc0Z1lTQmpiMjV6ZEhKMVkzUnZjaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIUmxiWEJzWVhSbElFOGdWR2hsSUhSNWNHVWdiMllnZEdobElISmxibVJsY21sdVp5QmxibWRwYm1VZ2IzVjBjSFYwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdRMjl1YzNSeWRXTjBiM0k4VW1WdVpHVnlhVzVuUlc1bmFXNWxQRTgrUGlCOElGSmxibVJsY21sdVowVnVaMmx1WlR4UFBuMGdiMkpxSUMwZ1ZHaGxJR1Z1WjJsdVpTQnBibk4wWVc1alpTQnZjaUJqYjI1emRISjFZM1J2Y2k1Y2JpQWdJQ29nUUhKbGRIVnlibk1nZTFKbGJtUmxjbWx1WjBWdVoybHVaVHhQUG4wZ1ZHaGxJR2x1YVhScFlXeHBlbVZrSUhKbGJtUmxjbWx1WnlCbGJtZHBibVV1WEc0Z0lDQXFYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxSUVCemRHRjBhV05jYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2RsZEU5eVFtOXZkRHhQUGloY2JpQWdJQ0J2WW1vNklFTnZibk4wY25WamRHOXlQRkpsYm1SbGNtbHVaMFZ1WjJsdVpUeFBQajRnZkNCU1pXNWtaWEpwYm1kRmJtZHBibVU4VHo1Y2JpQWdLVG9nVW1WdVpHVnlhVzVuUlc1bmFXNWxQRTgrSUh0Y2JpQWdJQ0JwWmlBb2IySnFJR2x1YzNSaGJtTmxiMllnVW1WdVpHVnlhVzVuUlc1bmFXNWxLU0J5WlhSMWNtNGdiMkpxSUdGeklGSmxibVJsY21sdVowVnVaMmx1WlR4UFBqdGNiaUFnSUNCamIyNXpkQ0JsYm1kcGJtVTZJRkpsYm1SbGNtbHVaMFZ1WjJsdVpUeFBQaUE5SUc1bGR5QnZZbW9vS1R0Y2JpQWdJQ0JsYm1kcGJtVXVhVzVwZEdsaGJHbDZaU2dwT3lBdkx5QnRZV3RsSUhSb1pTQmliMjkwYVc1bklHRnplVzVqTGlCMWMyVWdkR2hsSUdsdWFYUnBZV3hwZW1Wa0lHWnNZV2NnZEc4Z1kyOXVkSEp2YkNCcGRGeHVJQ0FnSUhKbGRIVnliaUJsYm1kcGJtVWdZWE1nVW1WdVpHVnlhVzVuUlc1bmFXNWxQRTgrTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWlhSeWFXVjJaWE1nWVNCeVpXNWtaWEpwYm1jZ1pXNW5hVzVsSUdKNUlHWnNZWFp2Y2k1Y2JpQWdJQ29nUUhOMWJXMWhjbmtnUjJWMGN5QjBhR1VnWTNWeWNtVnVkQ0J5Wlc1a1pYSnBibWNnWlc1bmFXNWxJRzl5SUdFZ2MzQmxZMmxtYVdNZ2IyNWxJR0o1SUdac1lYWnZjaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIUmxiWEJzWVhSbElFOGdWR2hsSUhSNWNHVWdiMllnZEdobElISmxibVJsY21sdVp5QmxibWRwYm1VZ2IzVjBjSFYwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJabXhoZG05MWNsMGdMU0JVYUdVZ1pteGhkbTl5SUc5bUlIUm9aU0J5Wlc1a1pYSnBibWNnWlc1bmFXNWxJSFJ2SUhKbGRISnBaWFpsTGx4dUlDQWdLaUJBY21WMGRYSnVjeUI3VW1WdVpHVnlhVzVuUlc1bmFXNWxQRTgrZlNCVWFHVWdjbVZ4ZFdWemRHVmtJSEpsYm1SbGNtbHVaeUJsYm1kcGJtVXVYRzRnSUNBcUlFQjBhSEp2ZDNNZ2UwbHVkR1Z5Ym1Gc1JYSnliM0o5SUVsbUlIUm9aU0J5WlhGMVpYTjBaV1FnWm14aGRtOXlJR1J2WlhNZ2JtOTBJR1Y0YVhOMExseHVJQ0FnS2x4dUlDQWdLaUJBYzNSaGRHbGpYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwUEU4K0tHWnNZWFp2ZFhJL09pQnpkSEpwYm1jcE9pQlNaVzVrWlhKcGJtZEZibWRwYm1VOFR6NGdlMXh1SUNBZ0lHbG1JQ2doWm14aGRtOTFjaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1kbGRFOXlRbTl2ZER4UFBpaGNiaUFnSUNBZ0lDQWdkR2hwY3k1amRYSnlaVzUwSUdGeklFTnZibk4wY25WamRHOXlQRkpsYm1SbGNtbHVaMFZ1WjJsdVpUeFBQajRnZkNCU1pXNWtaWEpwYm1kRmJtZHBibVU4VHo1Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnYVdZZ0tDRW9abXhoZG05MWNpQnBiaUIwYUdsekxtTmhZMmhsS1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnVW1WdVpHVnlhVzVuSUdWdVoybHVaU0IxYm1SbGNpQWtlMlpzWVhadmRYSjlJR1J2WlhNZ2JtOTBJR1Y0YVhOMFlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW5aWFJQY2tKdmIzUThUejRvWEc0Z0lDQWdJQ0IwYUdsekxtTmhZMmhsVzJac1lYWnZkWEpkSUdGelhHNGdJQ0FnSUNBZ0lId2dRMjl1YzNSeWRXTjBiM0k4VW1WdVpHVnlhVzVuUlc1bmFXNWxQRTgrUGx4dUlDQWdJQ0FnSUNCOElGSmxibVJsY21sdVowVnVaMmx1WlR4UFBseHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbGJtUmxjbk1nWVNCdGIyUmxiQ0IxYzJsdVp5QjBhR1VnWVhCd2NtOXdjbWxoZEdVZ2NtVnVaR1Z5YVc1bklHVnVaMmx1WlM1Y2JpQWdJQ29nUUhOMWJXMWhjbmtnUkdWMFpYSnRhVzVsY3lCMGFHVWdZMjl5Y21WamRDQnlaVzVrWlhKcGJtY2daVzVuYVc1bElHWnZjaUJoSUcxdlpHVnNJR0Z1WkNCcGJuWnZhMlZ6SUdsMGN5QnlaVzVrWlhJZ2JXVjBhRzlrTGx4dUlDQWdLbHh1SUNBZ0tpQkFkR1Z0Y0d4aGRHVWdUU0JVZVhCbElHVjRkR1Z1WkdsdVp5Qk5iMlJsYkZ4dUlDQWdLaUJBY0dGeVlXMGdlMDE5SUcxdlpHVnNJQzBnVkdobElHMXZaR1ZzSUhSdklISmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHN1TGk1aGJubGJYWDBnWVhKbmN5QXRJRUZrWkdsMGFXOXVZV3dnWVhKbmRXMWxiblJ6SUhSdklIQmhjM01nZEc4Z2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRdVhHNGdJQ0FxSUVCeVpYUjFjbTV6SUh0aGJubDlJRlJvWlNCeVpYTjFiSFFnYjJZZ2RHaGxJSEpsYm1SbGNtbHVaeUJ3Y205alpYTnpMbHh1SUNBZ0tpQkFkR2h5YjNkeklIdEpiblJsY201aGJFVnljbTl5ZlNCSlppQnVieUJ5WldkcGMzUmxjbVZrSUcxdlpHVnNJR2x6SUdadmRXNWtMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nY21WdVpHVnlQRTBnWlhoMFpXNWtjeUJOYjJSbGJENG9iVzlrWld3NklFMHNJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dZVzU1SUh0Y2JpQWdJQ0JqYjI1emRDQmpiMjV6ZEhKMVkzUnZjaUE5WEc0Z0lDQWdJQ0JOYjJSbGJDNW5aWFFvYlc5a1pXd3VZMjl1YzNSeWRXTjBiM0l1Ym1GdFpTa2dmSHdnVFc5a1pXd3Vabkp2YlU5aWFtVmpkQ2h0YjJSbGJDazdYRzRnSUNBZ2FXWWdLQ0ZqYjI1emRISjFZM1J2Y2lrZ2RHaHliM2NnYm1WM0lFbHVkR1Z5Ym1Gc1JYSnliM0lvWENKT2J5QnRiMlJsYkNCeVpXZHBjM1JsY21Wa0lHWnZkVzVrWENJcE8xeHVJQ0FnSUdOdmJuTjBJR1pzWVhadmRYSWdQU0JOYjJSbGJDNXlaVzVrWlhKbFpFSjVLRzF2WkdWc0xtTnZibk4wY25WamRHOXlJR0Z6SUVOdmJuTjBjblZqZEc5eVBFMCtLVHRjYmx4dUlDQWdJQzh2SUVCMGN5MWxlSEJsWTNRdFpYSnliM0lnWm05eUlIUm9aU0IyWVhJZ1lYSm5jeUIwZVhCbElHTm9aV05yWEc0Z0lDQWdjbVYwZFhKdUlGSmxibVJsY21sdVowVnVaMmx1WlM1blpYUW9abXhoZG05MWNpa3VjbVZ1WkdWeUtHMXZaR1ZzTENBdUxpNWhjbWR6S1R0Y2JpQWdmVnh1ZlZ4dUx5OWNiaTh2SUVSbFkyOXlZWFJwYjI0dVptOXlLRVJDUzJWNWN5NUpSQ2xjYmk4dklDQWdMbVY0ZEdWdVpDaDdYRzR2THlBZ0lDQWdaR1ZqYjNKaGRHOXlPaUJtZFc1amRHbHZiaUJ3YXlodmNIUnBiMjV6T2lCN0lHZGxibVZ5WVhSbFpEb2dZbTl2YkdWaGJpQjlLU0I3WEc0dkx5QWdJQ0FnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRnYVc1dVpYSlFheWgwWVhKblpYUTZJRzlpYW1WamRDd2djSEp2Y0dWeWRIbExaWGsvT2lCaGJua3BJSHRjYmk4dklDQWdJQ0FnSUNBZ2FXWWdLRzl3ZEdsdmJuTXVaMlZ1WlhKaGRHVmtLVnh1THk4Z0lDQWdJQ0FnSUNBZ0lHaHBaR1ZQYmloUGNHVnlZWFJwYjI1TFpYbHpMa05TUlVGVVJTd2dUM0JsY21GMGFXOXVTMlY1Y3k1VlVFUkJWRVVwS0Z4dUx5OGdJQ0FnSUNBZ0lDQWdJQ0FnZEdGeVoyVjBMRnh1THk4Z0lDQWdJQ0FnSUNBZ0lDQWdjSEp2Y0dWeWRIbExaWGxjYmk4dklDQWdJQ0FnSUNBZ0lDQXBPMXh1THk4Z0lDQWdJQ0FnZlR0Y2JpOHZJQ0FnSUNCOUxGeHVMeThnSUNCOUtWeHVMeThnSUNBdVlYQndiSGtvS1R0Y2JpOHZYRzR2THlCRVpXTnZjbUYwYVc5dUxtWnZjaWhFUWt0bGVYTXVWRWxOUlZOVVFVMVFLVnh1THk4Z0lDQXVaWGgwWlc1a0tIdGNiaTh2SUNBZ0lDQmtaV052Y21GMGIzSTZJR1oxYm1OMGFXOXVJSFJwYldWemRHRnRjQ2h2Y0hNNklFOXdaWEpoZEdsdmJrdGxlWE5iWFNrZ2UxeHVMeThnSUNBZ0lDQWdjbVYwZFhKdUlHaHBaR1ZQYmlndUxpNG9iM0J6SUdGeklHRnVlVnRkS1NrN1hHNHZMeUFnSUNBZ2ZTeGNiaTh2SUNBZ2ZTbGNiaTh2SUNBZ0xtRndjR3g1S0NrN1hHNHZMMXh1THk4Z1JHVmpiM0poZEdsdmJpNW1iM0lvUkVKTFpYbHpMa05QVFZCUFUwVkVLVnh1THk4Z0lDQXVaWGgwWlc1a0tIdGNiaTh2SUNBZ0lDQmtaV052Y21GMGIzSTZJR1oxYm1OMGFXOXVJR052YlhCdmMyVmtLQ2tnZTF4dUx5OGdJQ0FnSUNBZ2NtVjBkWEp1SUdocFpHVlBiaWhQY0dWeVlYUnBiMjVMWlhsekxrTlNSVUZVUlN3Z1QzQmxjbUYwYVc5dVMyVjVjeTVWVUVSQlZFVXBPMXh1THk4Z0lDQWdJSDBzWEc0dkx5QWdJSDBwWEc0dkx5QWdJQzVoY0hCc2VTZ3BPMXh1THk5Y2JpOHZJRVJsWTI5eVlYUnBiMjR1Wm05eUtGd2lZM0psWVhSbFpFSjVYQ0lwWEc0dkx5QWdJQzVsZUhSbGJtUW9lMXh1THk4Z0lDQWdJR1JsWTI5eVlYUnZjam9nWm5WdVkzUnBiMjRnWTNKbFlYUmxaRUo1S0NrZ2UxeHVMeThnSUNBZ0lDQWdjbVYwZFhKdUlHaHBaR1ZQYmloUGNHVnlZWFJwYjI1TFpYbHpMa05TUlVGVVJTd2dUM0JsY21GMGFXOXVTMlY1Y3k1VlVFUkJWRVVwTzF4dUx5OGdJQ0FnSUgwc1hHNHZMeUFnSUgwcFhHNHZMeUFnSUM1aGNIQnNlU2dwTzF4dUx5OWNiaTh2SUVSbFkyOXlZWFJwYjI0dVptOXlLRndpZFhCa1lYUmxaRUo1WENJcFhHNHZMeUFnSUM1bGVIUmxibVFvZTF4dUx5OGdJQ0FnSUdSbFkyOXlZWFJ2Y2pvZ1puVnVZM1JwYjI0Z1kzSmxZWFJsWkVKNUtDa2dlMXh1THk4Z0lDQWdJQ0FnY21WMGRYSnVJR2hwWkdWUGJpaFBjR1Z5WVhScGIyNUxaWGx6TGtOU1JVRlVSU3dnVDNCbGNtRjBhVzl1UzJWNWN5NVZVRVJCVkVVcE8xeHVMeThnSUNBZ0lIMHNYRzR2THlBZ0lIMHBYRzR2THlBZ0lDNWhjSEJzZVNncE8xeHVJbDE5Il19
582
+ //# sourceMappingURL=Rendering.js.map
583
+ //# sourceMappingURL=Rendering.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui/Rendering.cjs","sourceRoot":"","sources":["ui/Rendering.js"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@ class UIValidator extends decorator_validation_1.Validator {
10
10
  }
11
11
  }
12
12
  exports.UIValidator = UIValidator;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVUlWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWkvVUlWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzNELE1BQU0sT0FBZ0IsV0FBWSxTQUFRLFNBQVM7SUFHeEMsVUFBVSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDakQsSUFBSSxXQUFXLENBQUMsZ0JBQWdCO1lBQzlCLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRGVjYWZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vRGVjYWZUcmFuc2xhdGVTZXJ2aWNlXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVSVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIHN0YXRpYyB0cmFuc2xhdGVTZXJ2aWNlOiBEZWNhZlRyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgb3ZlcnJpZGUgZ2V0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogc3RyaW5nIHtcbiAgICBpZiAoVUlWYWxpZGF0b3IudHJhbnNsYXRlU2VydmljZSlcbiAgICAgIHJldHVybiBVSVZhbGlkYXRvci50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZShtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gc3VwZXIuZ2V0TWVzc2FnZShtZXNzYWdlLCAuLi5hcmdzKTtcbiAgfVxufVxuIl19
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVUlWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJVSVZhbGlkYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBMkQ7QUFDM0QsTUFBYSxXQUFZLFNBQVEsZ0NBQVM7SUFDdEMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUk7UUFDdkIsSUFBSSxXQUFXLENBQUMsZ0JBQWdCO1lBQzVCLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwRSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNKO0FBTkQsa0NBTUM7QUFDRCwwdUNBQTB1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmV4cG9ydCBjbGFzcyBVSVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gICAgZ2V0TWVzc2FnZShtZXNzYWdlLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChVSVZhbGlkYXRvci50cmFuc2xhdGVTZXJ2aWNlKVxuICAgICAgICAgICAgcmV0dXJuIFVJVmFsaWRhdG9yLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0TWVzc2FnZShtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lWVWxXWVd4cFpHRjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12ZFdrdlZVbFdZV3hwWkdGMGIzSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxGTkJRVk1zUlVGQlJTeE5RVUZOTEdkRFFVRm5ReXhEUVVGRE8wRkJSek5FTEUxQlFVMHNUMEZCWjBJc1YwRkJXU3hUUVVGUkxGTkJRVk03U1VGSGVFTXNWVUZCVlN4RFFVRkRMRTlCUVdVc1JVRkJSU3hIUVVGSExFbEJRVmM3VVVGRGFrUXNTVUZCU1N4WFFVRlhMRU5CUVVNc1owSkJRV2RDTzFsQlF6bENMRTlCUVU4c1YwRkJWeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnNSU3hQUVVGUExFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE5VTXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnVm1Gc2FXUmhkRzl5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1pXTnZjbUYwYjNJdGRtRnNhV1JoZEdsdmJsd2lPMXh1YVcxd2IzSjBJSHNnUkdWallXWlVjbUZ1YzJ4aGRHVlRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZSR1ZqWVdaVWNtRnVjMnhoZEdWVFpYSjJhV05sWENJN1hHNWNibVY0Y0c5eWRDQmhZbk4wY21GamRDQmpiR0Z6Y3lCVlNWWmhiR2xrWVhSdmNpQmxlSFJsYm1SeklGWmhiR2xrWVhSdmNpQjdYRzRnSUhOMFlYUnBZeUIwY21GdWMyeGhkR1ZUWlhKMmFXTmxPaUJFWldOaFpsUnlZVzV6YkdGMFpWTmxjblpwWTJVN1hHNWNiaUFnYjNabGNuSnBaR1VnWjJWMFRXVnpjMkZuWlNodFpYTnpZV2RsT2lCemRISnBibWNzSUM0dUxtRnlaM002SUdGdWVWdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvVlVsV1lXeHBaR0YwYjNJdWRISmhibk5zWVhSbFUyVnlkbWxqWlNsY2JpQWdJQ0FnSUhKbGRIVnliaUJWU1ZaaGJHbGtZWFJ2Y2k1MGNtRnVjMnhoZEdWVFpYSjJhV05sTG5SeVlXNXpiR0YwWlNodFpYTnpZV2RsTENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdjM1Z3WlhJdVoyVjBUV1Z6YzJGblpTaHRaWE56WVdkbExDQXVMaTVoY21kektUdGNiaUFnZlZ4dWZWeHVJbDE5Il19
13
+ //# sourceMappingURL=UIValidator.js.map
14
+ //# sourceMappingURL=UIValidator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui/UIValidator.cjs","sourceRoot":"","sources":["ui/UIValidator.js"],"names":[],"mappings":";;;AAAA,yEAA2D;AAC3D,MAAa,WAAY,SAAQ,gCAAS;IACtC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI;QACvB,IAAI,WAAW,CAAC,gBAAgB;YAC5B,OAAO,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;CACJ;AAND,kCAMC;AACD,uCAAuC"}