@decaf-ts/for-fabric 0.12.0 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) hide show
  1. package/dist/for-fabric.cjs +3797 -2
  2. package/dist/for-fabric.js +3901 -2
  3. package/lib/cjs/bin/cli.cjs +2 -2
  4. package/lib/cjs/cli-module.cjs +28 -3
  5. package/lib/cjs/cli-utils.cjs +2 -2
  6. package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
  7. package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
  8. package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
  9. package/lib/cjs/client/FabricClientRepository.cjs +2 -2
  10. package/lib/cjs/client/FabricClientStatement.cjs +2 -2
  11. package/lib/cjs/client/collections/generation.cjs +2 -2
  12. package/lib/cjs/client/collections/index.cjs +2 -2
  13. package/lib/cjs/client/constants.cjs +2 -2
  14. package/lib/cjs/client/crypto.cjs +2 -2
  15. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
  16. package/lib/cjs/client/erc20/index.cjs +2 -2
  17. package/lib/cjs/client/fabric-fs.cjs +2 -2
  18. package/lib/cjs/client/fabric-hsm.cjs +2 -2
  19. package/lib/cjs/client/ids/id-extraction.cjs +2 -2
  20. package/lib/cjs/client/ids/index.cjs +2 -2
  21. package/lib/cjs/client/index.cjs +2 -2
  22. package/lib/cjs/client/indexes/generation.cjs +2 -2
  23. package/lib/cjs/client/indexes/index.cjs +2 -2
  24. package/lib/cjs/client/logging.cjs +2 -2
  25. package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
  26. package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
  27. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
  28. package/lib/cjs/client/services/constants.cjs +2 -2
  29. package/lib/cjs/client/services/index.cjs +2 -2
  30. package/lib/cjs/client/types.cjs +2 -2
  31. package/lib/cjs/client/utils.cjs +2 -2
  32. package/lib/cjs/contract/Address.cjs +2 -2
  33. package/lib/cjs/contract/AddressContract.cjs +2 -2
  34. package/lib/cjs/contract/AuditContract.cjs +2 -2
  35. package/lib/cjs/contract/BatchContract.cjs +2 -2
  36. package/lib/cjs/contract/MarketContract.cjs +2 -2
  37. package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
  38. package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
  39. package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
  40. package/lib/cjs/contract/OtherProductContract.cjs +2 -2
  41. package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
  42. package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
  43. package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
  44. package/lib/cjs/contract/Product.cjs +2 -2
  45. package/lib/cjs/contract/ProductContract.cjs +2 -2
  46. package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
  47. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
  48. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
  49. package/lib/cjs/contract/User.cjs +2 -2
  50. package/lib/cjs/contract/UserContract.cjs +2 -2
  51. package/lib/cjs/contract/index.cjs +2 -2
  52. package/lib/cjs/contract/logging-context.cjs +2 -2
  53. package/lib/cjs/contract/models/Audit.cjs +2 -2
  54. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
  55. package/lib/cjs/contract/models/BaseModel.cjs +2 -2
  56. package/lib/cjs/contract/models/Batch.cjs +2 -2
  57. package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
  58. package/lib/cjs/contract/models/History.cjs +2 -2
  59. package/lib/cjs/contract/models/Leaflet.cjs +2 -2
  60. package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
  61. package/lib/cjs/contract/models/Market.cjs +2 -2
  62. package/lib/cjs/contract/models/OtherAudit.cjs +2 -2
  63. package/lib/cjs/contract/models/OtherBatchShared.cjs +2 -2
  64. package/lib/cjs/contract/models/OtherLeaflet.cjs +2 -2
  65. package/lib/cjs/contract/models/OtherLeafletFile.cjs +2 -2
  66. package/lib/cjs/contract/models/OtherMarket.cjs +2 -2
  67. package/lib/cjs/contract/models/OtherProduct.cjs +2 -2
  68. package/lib/cjs/contract/models/OtherProductImage.cjs +2 -2
  69. package/lib/cjs/contract/models/OtherProductShared.cjs +2 -2
  70. package/lib/cjs/contract/models/OtherProductStrength.cjs +2 -2
  71. package/lib/cjs/contract/models/Product.cjs +2 -2
  72. package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
  73. package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
  74. package/lib/cjs/contract/models/constants.cjs +2 -2
  75. package/lib/cjs/contract/models/decorators-private.cjs +2 -2
  76. package/lib/cjs/contract/models/decorators.cjs +2 -2
  77. package/lib/cjs/contract/models/gtin.cjs +2 -2
  78. package/lib/cjs/contract/models/history-dec.cjs +2 -2
  79. package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
  80. package/lib/cjs/contracts/ContractContext.cjs +2 -2
  81. package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
  82. package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
  83. package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
  84. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
  85. package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
  86. package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
  87. package/lib/cjs/contracts/MigrationContract.cjs +2 -2
  88. package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
  89. package/lib/cjs/contracts/auth/decorators.cjs +2 -2
  90. package/lib/cjs/contracts/auth/index.cjs +2 -2
  91. package/lib/cjs/contracts/crud/crud-contract.cjs +2 -2
  92. package/lib/cjs/contracts/crud/index.cjs +2 -2
  93. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
  94. package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
  95. package/lib/cjs/contracts/erc20/index.cjs +2 -2
  96. package/lib/cjs/contracts/erc20/models.cjs +2 -2
  97. package/lib/cjs/contracts/index.cjs +2 -2
  98. package/lib/cjs/contracts/logging.cjs +2 -2
  99. package/lib/cjs/contracts/overrides.cjs +2 -2
  100. package/lib/cjs/contracts/types.cjs +2 -2
  101. package/lib/cjs/contracts/uuid.cjs +2 -2
  102. package/lib/cjs/index.cjs +2 -2
  103. package/lib/cjs/shared/ClientSerializer.cjs +2 -2
  104. package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
  105. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
  106. package/lib/cjs/shared/constants.cjs +2 -2
  107. package/lib/cjs/shared/decorators.cjs +2 -2
  108. package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
  109. package/lib/cjs/shared/erc20/index.cjs +2 -2
  110. package/lib/cjs/shared/errors.cjs +2 -2
  111. package/lib/cjs/shared/events.cjs +2 -2
  112. package/lib/cjs/shared/fabric-types.cjs +2 -2
  113. package/lib/cjs/shared/index.cjs +2 -2
  114. package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
  115. package/lib/cjs/shared/interfaces/index.cjs +2 -2
  116. package/lib/cjs/shared/math.cjs +2 -2
  117. package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
  118. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
  119. package/lib/cjs/shared/model/Identity.cjs +2 -2
  120. package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
  121. package/lib/cjs/shared/model/index.cjs +2 -2
  122. package/lib/cjs/shared/overrides/Model.cjs +2 -2
  123. package/lib/cjs/shared/overrides/index.cjs +2 -2
  124. package/lib/cjs/shared/overrides/overrides.cjs +2 -2
  125. package/lib/cjs/shared/types.cjs +2 -2
  126. package/lib/cjs/version.cjs +3 -3
  127. package/lib/esm/bin/cli.js +1 -1
  128. package/lib/esm/cli-module.js +27 -2
  129. package/lib/esm/cli-utils.js +1 -1
  130. package/lib/esm/client/FabricClientAdapter.js +1 -1
  131. package/lib/esm/client/FabricClientDispatch.js +1 -1
  132. package/lib/esm/client/FabricClientPaginator.js +1 -1
  133. package/lib/esm/client/FabricClientRepository.js +1 -1
  134. package/lib/esm/client/FabricClientStatement.js +1 -1
  135. package/lib/esm/client/collections/generation.js +1 -1
  136. package/lib/esm/client/collections/index.js +1 -1
  137. package/lib/esm/client/constants.js +1 -1
  138. package/lib/esm/client/crypto.js +1 -1
  139. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  140. package/lib/esm/client/erc20/index.js +1 -1
  141. package/lib/esm/client/fabric-fs.js +1 -1
  142. package/lib/esm/client/fabric-hsm.js +1 -1
  143. package/lib/esm/client/ids/id-extraction.js +1 -1
  144. package/lib/esm/client/ids/index.js +1 -1
  145. package/lib/esm/client/index.js +1 -1
  146. package/lib/esm/client/indexes/generation.js +1 -1
  147. package/lib/esm/client/indexes/index.js +1 -1
  148. package/lib/esm/client/logging.js +1 -1
  149. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  150. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  151. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  152. package/lib/esm/client/services/constants.js +1 -1
  153. package/lib/esm/client/services/index.js +1 -1
  154. package/lib/esm/client/types.js +1 -1
  155. package/lib/esm/client/utils.js +1 -1
  156. package/lib/esm/contract/Address.js +1 -1
  157. package/lib/esm/contract/AddressContract.js +1 -1
  158. package/lib/esm/contract/AuditContract.js +1 -1
  159. package/lib/esm/contract/BatchContract.js +1 -1
  160. package/lib/esm/contract/MarketContract.js +1 -1
  161. package/lib/esm/contract/OtherAuditContract.js +1 -1
  162. package/lib/esm/contract/OtherBatchContract.js +1 -1
  163. package/lib/esm/contract/OtherMarketContract.js +1 -1
  164. package/lib/esm/contract/OtherProductContract.js +1 -1
  165. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  166. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  167. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  168. package/lib/esm/contract/Product.js +1 -1
  169. package/lib/esm/contract/ProductContract.js +1 -1
  170. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  171. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  172. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  173. package/lib/esm/contract/User.js +1 -1
  174. package/lib/esm/contract/UserContract.js +1 -1
  175. package/lib/esm/contract/index.js +1 -1
  176. package/lib/esm/contract/logging-context.js +1 -1
  177. package/lib/esm/contract/models/Audit.js +1 -1
  178. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  179. package/lib/esm/contract/models/BaseModel.js +1 -1
  180. package/lib/esm/contract/models/Batch.js +1 -1
  181. package/lib/esm/contract/models/GtinOwner.js +1 -1
  182. package/lib/esm/contract/models/History.js +1 -1
  183. package/lib/esm/contract/models/Leaflet.js +1 -1
  184. package/lib/esm/contract/models/LeafletFile.js +1 -1
  185. package/lib/esm/contract/models/Market.js +1 -1
  186. package/lib/esm/contract/models/OtherAudit.js +1 -1
  187. package/lib/esm/contract/models/OtherBatchShared.js +1 -1
  188. package/lib/esm/contract/models/OtherLeaflet.js +1 -1
  189. package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
  190. package/lib/esm/contract/models/OtherMarket.js +1 -1
  191. package/lib/esm/contract/models/OtherProduct.js +1 -1
  192. package/lib/esm/contract/models/OtherProductImage.js +1 -1
  193. package/lib/esm/contract/models/OtherProductShared.js +1 -1
  194. package/lib/esm/contract/models/OtherProductStrength.js +1 -1
  195. package/lib/esm/contract/models/Product.js +1 -1
  196. package/lib/esm/contract/models/ProductStrength.js +1 -1
  197. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  198. package/lib/esm/contract/models/constants.js +1 -1
  199. package/lib/esm/contract/models/decorators-private.js +1 -1
  200. package/lib/esm/contract/models/decorators.js +1 -1
  201. package/lib/esm/contract/models/gtin.js +1 -1
  202. package/lib/esm/contract/models/history-dec.js +1 -1
  203. package/lib/esm/contracts/ContractAdapter.js +1 -1
  204. package/lib/esm/contracts/ContractContext.js +1 -1
  205. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  206. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  207. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  208. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  209. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  210. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  211. package/lib/esm/contracts/MigrationContract.js +1 -1
  212. package/lib/esm/contracts/PrivateSequence.js +1 -1
  213. package/lib/esm/contracts/auth/decorators.js +1 -1
  214. package/lib/esm/contracts/auth/index.js +1 -1
  215. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  216. package/lib/esm/contracts/crud/index.js +1 -1
  217. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  218. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  219. package/lib/esm/contracts/erc20/index.js +1 -1
  220. package/lib/esm/contracts/erc20/models.js +1 -1
  221. package/lib/esm/contracts/index.js +1 -1
  222. package/lib/esm/contracts/logging.js +1 -1
  223. package/lib/esm/contracts/overrides.js +1 -1
  224. package/lib/esm/contracts/types.js +1 -1
  225. package/lib/esm/contracts/uuid.js +1 -1
  226. package/lib/esm/index.js +1 -1
  227. package/lib/esm/shared/ClientSerializer.js +1 -1
  228. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  229. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  230. package/lib/esm/shared/constants.js +1 -1
  231. package/lib/esm/shared/decorators.js +1 -1
  232. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  233. package/lib/esm/shared/erc20/index.js +1 -1
  234. package/lib/esm/shared/errors.js +1 -1
  235. package/lib/esm/shared/events.js +1 -1
  236. package/lib/esm/shared/fabric-types.js +1 -1
  237. package/lib/esm/shared/index.js +1 -1
  238. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  239. package/lib/esm/shared/interfaces/index.js +1 -1
  240. package/lib/esm/shared/math.js +1 -1
  241. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  242. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  243. package/lib/esm/shared/model/Identity.js +1 -1
  244. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  245. package/lib/esm/shared/model/index.js +1 -1
  246. package/lib/esm/shared/overrides/Model.js +1 -1
  247. package/lib/esm/shared/overrides/index.js +1 -1
  248. package/lib/esm/shared/overrides/overrides.js +1 -1
  249. package/lib/esm/shared/types.js +1 -1
  250. package/lib/esm/version.js +2 -2
  251. package/lib/types/version.d.cts +1 -1
  252. package/lib/types/version.d.mts +1 -1
  253. package/package.json +7 -7
  254. package/dist/for-fabric.cjs.map +0 -1
  255. package/dist/for-fabric.js.map +0 -1
  256. package/lib/cjs/bin/cli.cjs.map +0 -1
  257. package/lib/cjs/cli-module.cjs.map +0 -1
  258. package/lib/cjs/cli-utils.cjs.map +0 -1
  259. package/lib/cjs/client/FabricClientAdapter.cjs.map +0 -1
  260. package/lib/cjs/client/FabricClientDispatch.cjs.map +0 -1
  261. package/lib/cjs/client/FabricClientPaginator.cjs.map +0 -1
  262. package/lib/cjs/client/FabricClientRepository.cjs.map +0 -1
  263. package/lib/cjs/client/FabricClientStatement.cjs.map +0 -1
  264. package/lib/cjs/client/collections/generation.cjs.map +0 -1
  265. package/lib/cjs/client/collections/index.cjs.map +0 -1
  266. package/lib/cjs/client/constants.cjs.map +0 -1
  267. package/lib/cjs/client/crypto.cjs.map +0 -1
  268. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +0 -1
  269. package/lib/cjs/client/erc20/index.cjs.map +0 -1
  270. package/lib/cjs/client/fabric-fs.cjs.map +0 -1
  271. package/lib/cjs/client/fabric-hsm.cjs.map +0 -1
  272. package/lib/cjs/client/ids/id-extraction.cjs.map +0 -1
  273. package/lib/cjs/client/ids/index.cjs.map +0 -1
  274. package/lib/cjs/client/index.cjs.map +0 -1
  275. package/lib/cjs/client/indexes/generation.cjs.map +0 -1
  276. package/lib/cjs/client/indexes/index.cjs.map +0 -1
  277. package/lib/cjs/client/logging.cjs.map +0 -1
  278. package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +0 -1
  279. package/lib/cjs/client/services/FabricIdentityService.cjs.map +0 -1
  280. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +0 -1
  281. package/lib/cjs/client/services/constants.cjs.map +0 -1
  282. package/lib/cjs/client/services/index.cjs.map +0 -1
  283. package/lib/cjs/client/types.cjs.map +0 -1
  284. package/lib/cjs/client/utils.cjs.map +0 -1
  285. package/lib/cjs/contract/Address.cjs.map +0 -1
  286. package/lib/cjs/contract/AddressContract.cjs.map +0 -1
  287. package/lib/cjs/contract/AuditContract.cjs.map +0 -1
  288. package/lib/cjs/contract/BatchContract.cjs.map +0 -1
  289. package/lib/cjs/contract/MarketContract.cjs.map +0 -1
  290. package/lib/cjs/contract/OtherAuditContract.cjs.map +0 -1
  291. package/lib/cjs/contract/OtherBatchContract.cjs.map +0 -1
  292. package/lib/cjs/contract/OtherMarketContract.cjs.map +0 -1
  293. package/lib/cjs/contract/OtherProductContract.cjs.map +0 -1
  294. package/lib/cjs/contract/OtherProductImageContract.cjs.map +0 -1
  295. package/lib/cjs/contract/OtherProductSharedContract.cjs.map +0 -1
  296. package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +0 -1
  297. package/lib/cjs/contract/Product.cjs.map +0 -1
  298. package/lib/cjs/contract/ProductContract.cjs.map +0 -1
  299. package/lib/cjs/contract/ProductStrengthContract.cjs.map +0 -1
  300. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +0 -1
  301. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +0 -1
  302. package/lib/cjs/contract/User.cjs.map +0 -1
  303. package/lib/cjs/contract/UserContract.cjs.map +0 -1
  304. package/lib/cjs/contract/index.cjs.map +0 -1
  305. package/lib/cjs/contract/logging-context.cjs.map +0 -1
  306. package/lib/cjs/contract/models/Audit.cjs.map +0 -1
  307. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +0 -1
  308. package/lib/cjs/contract/models/BaseModel.cjs.map +0 -1
  309. package/lib/cjs/contract/models/Batch.cjs.map +0 -1
  310. package/lib/cjs/contract/models/GtinOwner.cjs.map +0 -1
  311. package/lib/cjs/contract/models/History.cjs.map +0 -1
  312. package/lib/cjs/contract/models/Leaflet.cjs.map +0 -1
  313. package/lib/cjs/contract/models/LeafletFile.cjs.map +0 -1
  314. package/lib/cjs/contract/models/Market.cjs.map +0 -1
  315. package/lib/cjs/contract/models/OtherAudit.cjs.map +0 -1
  316. package/lib/cjs/contract/models/OtherBatchShared.cjs.map +0 -1
  317. package/lib/cjs/contract/models/OtherLeaflet.cjs.map +0 -1
  318. package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +0 -1
  319. package/lib/cjs/contract/models/OtherMarket.cjs.map +0 -1
  320. package/lib/cjs/contract/models/OtherProduct.cjs.map +0 -1
  321. package/lib/cjs/contract/models/OtherProductImage.cjs.map +0 -1
  322. package/lib/cjs/contract/models/OtherProductShared.cjs.map +0 -1
  323. package/lib/cjs/contract/models/OtherProductStrength.cjs.map +0 -1
  324. package/lib/cjs/contract/models/Product.cjs.map +0 -1
  325. package/lib/cjs/contract/models/ProductStrength.cjs.map +0 -1
  326. package/lib/cjs/contract/models/SegregatedDocument.cjs.map +0 -1
  327. package/lib/cjs/contract/models/constants.cjs.map +0 -1
  328. package/lib/cjs/contract/models/decorators-private.cjs.map +0 -1
  329. package/lib/cjs/contract/models/decorators.cjs.map +0 -1
  330. package/lib/cjs/contract/models/gtin.cjs.map +0 -1
  331. package/lib/cjs/contract/models/history-dec.cjs.map +0 -1
  332. package/lib/cjs/contracts/ContractAdapter.cjs.map +0 -1
  333. package/lib/cjs/contracts/ContractContext.cjs.map +0 -1
  334. package/lib/cjs/contracts/FabricContractDispatch.cjs.map +0 -1
  335. package/lib/cjs/contracts/FabricContractPaginator.cjs.map +0 -1
  336. package/lib/cjs/contracts/FabricContractRepository.cjs.map +0 -1
  337. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +0 -1
  338. package/lib/cjs/contracts/FabricContractSequence.cjs.map +0 -1
  339. package/lib/cjs/contracts/FabricContractStatement.cjs.map +0 -1
  340. package/lib/cjs/contracts/MigrationContract.cjs.map +0 -1
  341. package/lib/cjs/contracts/PrivateSequence.cjs.map +0 -1
  342. package/lib/cjs/contracts/auth/decorators.cjs.map +0 -1
  343. package/lib/cjs/contracts/auth/index.cjs.map +0 -1
  344. package/lib/cjs/contracts/crud/crud-contract.cjs.map +0 -1
  345. package/lib/cjs/contracts/crud/index.cjs.map +0 -1
  346. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +0 -1
  347. package/lib/cjs/contracts/erc20/erc20contract.cjs.map +0 -1
  348. package/lib/cjs/contracts/erc20/index.cjs.map +0 -1
  349. package/lib/cjs/contracts/erc20/models.cjs.map +0 -1
  350. package/lib/cjs/contracts/index.cjs.map +0 -1
  351. package/lib/cjs/contracts/logging.cjs.map +0 -1
  352. package/lib/cjs/contracts/overrides.cjs.map +0 -1
  353. package/lib/cjs/contracts/types.cjs.map +0 -1
  354. package/lib/cjs/contracts/uuid.cjs.map +0 -1
  355. package/lib/cjs/index.cjs.map +0 -1
  356. package/lib/cjs/shared/ClientSerializer.cjs.map +0 -1
  357. package/lib/cjs/shared/DeterministicSerializer.cjs.map +0 -1
  358. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +0 -1
  359. package/lib/cjs/shared/constants.cjs.map +0 -1
  360. package/lib/cjs/shared/decorators.cjs.map +0 -1
  361. package/lib/cjs/shared/erc20/erc20-constants.cjs.map +0 -1
  362. package/lib/cjs/shared/erc20/index.cjs.map +0 -1
  363. package/lib/cjs/shared/errors.cjs.map +0 -1
  364. package/lib/cjs/shared/events.cjs.map +0 -1
  365. package/lib/cjs/shared/fabric-types.cjs.map +0 -1
  366. package/lib/cjs/shared/index.cjs.map +0 -1
  367. package/lib/cjs/shared/interfaces/Checkable.cjs.map +0 -1
  368. package/lib/cjs/shared/interfaces/index.cjs.map +0 -1
  369. package/lib/cjs/shared/math.cjs.map +0 -1
  370. package/lib/cjs/shared/model/FabricBaseModel.cjs.map +0 -1
  371. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +0 -1
  372. package/lib/cjs/shared/model/Identity.cjs.map +0 -1
  373. package/lib/cjs/shared/model/IdentityCredentials.cjs.map +0 -1
  374. package/lib/cjs/shared/model/index.cjs.map +0 -1
  375. package/lib/cjs/shared/overrides/Model.cjs.map +0 -1
  376. package/lib/cjs/shared/overrides/index.cjs.map +0 -1
  377. package/lib/cjs/shared/overrides/overrides.cjs.map +0 -1
  378. package/lib/cjs/shared/types.cjs.map +0 -1
  379. package/lib/cjs/version.cjs.map +0 -1
  380. package/lib/esm/bin/cli.js.map +0 -1
  381. package/lib/esm/cli-module.js.map +0 -1
  382. package/lib/esm/cli-utils.js.map +0 -1
  383. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  384. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  385. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  386. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  387. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  388. package/lib/esm/client/collections/generation.js.map +0 -1
  389. package/lib/esm/client/collections/index.js.map +0 -1
  390. package/lib/esm/client/constants.js.map +0 -1
  391. package/lib/esm/client/crypto.js.map +0 -1
  392. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  393. package/lib/esm/client/erc20/index.js.map +0 -1
  394. package/lib/esm/client/fabric-fs.js.map +0 -1
  395. package/lib/esm/client/fabric-hsm.js.map +0 -1
  396. package/lib/esm/client/ids/id-extraction.js.map +0 -1
  397. package/lib/esm/client/ids/index.js.map +0 -1
  398. package/lib/esm/client/index.js.map +0 -1
  399. package/lib/esm/client/indexes/generation.js.map +0 -1
  400. package/lib/esm/client/indexes/index.js.map +0 -1
  401. package/lib/esm/client/logging.js.map +0 -1
  402. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  403. package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
  404. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
  405. package/lib/esm/client/services/constants.js.map +0 -1
  406. package/lib/esm/client/services/index.js.map +0 -1
  407. package/lib/esm/client/types.js.map +0 -1
  408. package/lib/esm/client/utils.js.map +0 -1
  409. package/lib/esm/contract/Address.js.map +0 -1
  410. package/lib/esm/contract/AddressContract.js.map +0 -1
  411. package/lib/esm/contract/AuditContract.js.map +0 -1
  412. package/lib/esm/contract/BatchContract.js.map +0 -1
  413. package/lib/esm/contract/MarketContract.js.map +0 -1
  414. package/lib/esm/contract/OtherAuditContract.js.map +0 -1
  415. package/lib/esm/contract/OtherBatchContract.js.map +0 -1
  416. package/lib/esm/contract/OtherMarketContract.js.map +0 -1
  417. package/lib/esm/contract/OtherProductContract.js.map +0 -1
  418. package/lib/esm/contract/OtherProductImageContract.js.map +0 -1
  419. package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
  420. package/lib/esm/contract/OtherProductStrengthContract.js.map +0 -1
  421. package/lib/esm/contract/Product.js.map +0 -1
  422. package/lib/esm/contract/ProductContract.js.map +0 -1
  423. package/lib/esm/contract/ProductStrengthContract.js.map +0 -1
  424. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  425. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
  426. package/lib/esm/contract/User.js.map +0 -1
  427. package/lib/esm/contract/UserContract.js.map +0 -1
  428. package/lib/esm/contract/index.js.map +0 -1
  429. package/lib/esm/contract/logging-context.js.map +0 -1
  430. package/lib/esm/contract/models/Audit.js.map +0 -1
  431. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
  432. package/lib/esm/contract/models/BaseModel.js.map +0 -1
  433. package/lib/esm/contract/models/Batch.js.map +0 -1
  434. package/lib/esm/contract/models/GtinOwner.js.map +0 -1
  435. package/lib/esm/contract/models/History.js.map +0 -1
  436. package/lib/esm/contract/models/Leaflet.js.map +0 -1
  437. package/lib/esm/contract/models/LeafletFile.js.map +0 -1
  438. package/lib/esm/contract/models/Market.js.map +0 -1
  439. package/lib/esm/contract/models/OtherAudit.js.map +0 -1
  440. package/lib/esm/contract/models/OtherBatchShared.js.map +0 -1
  441. package/lib/esm/contract/models/OtherLeaflet.js.map +0 -1
  442. package/lib/esm/contract/models/OtherLeafletFile.js.map +0 -1
  443. package/lib/esm/contract/models/OtherMarket.js.map +0 -1
  444. package/lib/esm/contract/models/OtherProduct.js.map +0 -1
  445. package/lib/esm/contract/models/OtherProductImage.js.map +0 -1
  446. package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
  447. package/lib/esm/contract/models/OtherProductStrength.js.map +0 -1
  448. package/lib/esm/contract/models/Product.js.map +0 -1
  449. package/lib/esm/contract/models/ProductStrength.js.map +0 -1
  450. package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
  451. package/lib/esm/contract/models/constants.js.map +0 -1
  452. package/lib/esm/contract/models/decorators-private.js.map +0 -1
  453. package/lib/esm/contract/models/decorators.js.map +0 -1
  454. package/lib/esm/contract/models/gtin.js.map +0 -1
  455. package/lib/esm/contract/models/history-dec.js.map +0 -1
  456. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  457. package/lib/esm/contracts/ContractContext.js.map +0 -1
  458. package/lib/esm/contracts/FabricContractDispatch.js.map +0 -1
  459. package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
  460. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  461. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  462. package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
  463. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  464. package/lib/esm/contracts/MigrationContract.js.map +0 -1
  465. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  466. package/lib/esm/contracts/auth/decorators.js.map +0 -1
  467. package/lib/esm/contracts/auth/index.js.map +0 -1
  468. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  469. package/lib/esm/contracts/crud/index.js.map +0 -1
  470. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  471. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  472. package/lib/esm/contracts/erc20/index.js.map +0 -1
  473. package/lib/esm/contracts/erc20/models.js.map +0 -1
  474. package/lib/esm/contracts/index.js.map +0 -1
  475. package/lib/esm/contracts/logging.js.map +0 -1
  476. package/lib/esm/contracts/overrides.js.map +0 -1
  477. package/lib/esm/contracts/types.js.map +0 -1
  478. package/lib/esm/contracts/uuid.js.map +0 -1
  479. package/lib/esm/index.js.map +0 -1
  480. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  481. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  482. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  483. package/lib/esm/shared/constants.js.map +0 -1
  484. package/lib/esm/shared/decorators.js.map +0 -1
  485. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  486. package/lib/esm/shared/erc20/index.js.map +0 -1
  487. package/lib/esm/shared/errors.js.map +0 -1
  488. package/lib/esm/shared/events.js.map +0 -1
  489. package/lib/esm/shared/fabric-types.js.map +0 -1
  490. package/lib/esm/shared/index.js.map +0 -1
  491. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  492. package/lib/esm/shared/interfaces/index.js.map +0 -1
  493. package/lib/esm/shared/math.js.map +0 -1
  494. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  495. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  496. package/lib/esm/shared/model/Identity.js.map +0 -1
  497. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  498. package/lib/esm/shared/model/index.js.map +0 -1
  499. package/lib/esm/shared/overrides/Model.js.map +0 -1
  500. package/lib/esm/shared/overrides/index.js.map +0 -1
  501. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  502. package/lib/esm/shared/types.js.map +0 -1
  503. package/lib/esm/version.js.map +0 -1
@@ -344,5 +344,5 @@ class FabricEnrollmentService extends logging_1.LoggedClass {
344
344
  }
345
345
  }
346
346
  exports.FabricEnrollmentService = FabricEnrollmentService;
347
- //# sourceMappingURL=FabricEnrollmentService.js.map
348
- //# sourceMappingURL=FabricEnrollmentService.js.map
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRW5yb2xsbWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sZ0JBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFXaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSx5Q0FBb0M7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBaUI7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBa0I7QUFPeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlDQUE0QjtBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQU1YO0FBTkQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLHVDQUFtQixDQUFBO0lBQ25CLHFDQUFpQixDQUFBO0lBQ2pCLGlDQUFhLENBQUE7SUFDYixtQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBTTNCO0FBaUJEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBTixJQUFZLHNCQVFYO0FBUkQsV0FBWSxzQkFBc0I7SUFDaEMsaUVBQXVDLENBQUE7SUFDdkMsaUZBQXVELENBQUE7SUFDdkQsMkVBQWlELENBQUE7SUFDakQsZ0VBQXNDLENBQUE7SUFDdEMsa0RBQXdCLENBQUE7SUFDeEIsZ0VBQXNDLENBQUE7SUFDdEMsZ0RBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQVJXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFR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LElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuRixDQUFDO1FBQ0osT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZhYnJpY0NBU2VydmljZXMgZnJvbSBcImZhYnJpYy1jYS1jbGllbnRcIjtcbmltcG9ydCB7XG4gIEFmZmlsaWF0aW9uU2VydmljZSxcbiAgSWRlbnRpdHlTZXJ2aWNlLFxuICBJRW5yb2xsUmVzcG9uc2UsXG4gIElSZWdpc3RlclJlcXVlc3QsXG4gIElTZXJ2aWNlUmVzcG9uc2UsXG4gIFRMU09wdGlvbnMsXG59IGZyb20gXCJmYWJyaWMtY2EtY2xpZW50XCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcImZhYnJpYy1jb21tb25cIjtcbmltcG9ydCB7IENBQ29uZmlnLCBDcmVkZW50aWFscyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdHlwZXNcIjtcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9tb2RlbC9JZGVudGl0eVwiO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQge1xuICBDb25mbGljdEVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvcmVVdGlscyB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgQ0FfUk9MRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ3J5cHRvVXRpbHMgfSBmcm9tIFwiLi4vY3J5cHRvXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZVJlc3BvbnNlLFxuICBGYWJyaWNJZGVudGl0eSxcbiAgR2V0Q2VydGlmaWNhdGVzUmVxdWVzdCxcbiAgSWRlbnRpdHlSZXNwb25zZSxcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC9mYWJyaWMtdHlwZXNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkVycm9yIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9lcnJvcnNcIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzLCBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEh5cGVybGVkZ2VyIEZhYnJpYyBDQSBpZGVudGl0eSB0eXBlcy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgdGhlIHN1cHBvcnRlZCBpZGVudGl0eSB0eXBlcyByZWNvZ25pemVkIGJ5IEZhYnJpYyBDQSBmb3IgcmVnaXN0cmF0aW9uIGFuZCBpZGVudGl0eSBtYW5hZ2VtZW50LlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgZW51bSBIRkNBSWRlbnRpdHlUeXBlIHtcbiAgUEVFUiA9IFwicGVlclwiLFxuICBPUkRFUkVSID0gXCJvcmRlcmVyXCIsXG4gIENMSUVOVCA9IFwiY2xpZW50XCIsXG4gIFVTRVIgPSBcInVzZXJcIixcbiAgQURNSU4gPSBcImFkbWluXCIsXG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBLZXkvdmFsdWUgYXR0cmlidXRlIHVzZWQgZHVyaW5nIENBIHJlZ2lzdHJhdGlvbi5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYW4gYXR0cmlidXRlIGVudHJ5IHRoYXQgY2FuIGJlIGF0dGFjaGVkIHRvIGEgRmFicmljIENBIGlkZW50aXR5IGR1cmluZyByZWdpc3RyYXRpb24sIG9wdGlvbmFsbHkgbWFya2luZyBpdCBmb3IgaW5jbHVzaW9uIGluIGVjZXJ0LlxuICogQGludGVyZmFjZSBJS2V5VmFsdWVBdHRyaWJ1dGVcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gQXR0cmlidXRlIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbZWNlcnRdIC0gV2hldGhlciB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgZW5yb2xsbWVudCBjZXJ0aWZpY2F0ZSAoRUNlcnQpLlxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElLZXlWYWx1ZUF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZWNlcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBGYWJyaWMgQ0EgaWRlbnRpdHkgYXR0cmlidXRlIGtleXMuXG4gKiBAc3VtbWFyeSBFbnVtZXJhdGVzIHdlbGwta25vd24gRmFicmljIENBIGF0dHJpYnV0ZSBrZXlzIHRoYXQgY2FuIGJlIGFzc2lnbmVkIHRvIGlkZW50aXRpZXMgZm9yIGRlbGVnYXRpb25zIGFuZCBwZXJtaXNzaW9ucy5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGVudW0gSEZDQUlkZW50aXR5QXR0cmlidXRlcyB7XG4gIEhGUkVHSVNUUkFSUk9MRVMgPSBcImhmLlJlZ2lzdHJhci5Sb2xlc1wiLFxuICBIRlJFR0lTVFJBUkRFTEVHQVRFUk9MRVMgPSBcImhmLlJlZ2lzdHJhci5EZWxlZ2F0ZVJvbGVzXCIsXG4gIEhGUkVHSVNUUkFSQVRUUklCVVRFUyA9IFwiaGYuUmVnaXN0cmFyLkF0dHJpYnV0ZXNcIixcbiAgSEZJTlRFUk1FRElBVEVDQSA9IFwiaGYuSW50ZXJtZWRpYXRlQ0FcIixcbiAgSEZSRVZPS0VSID0gXCJoZi5SZXZva2VyXCIsXG4gIEhGQUZGSUxJQVRJT05NR1IgPSBcImhmLkFmZmlsaWF0aW9uTWdyXCIsXG4gIEhGR0VOQ1JMID0gXCJoZi5HZW5DUkxcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VydmljZSB3cmFwcGVyIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgRmFicmljIENBLlxuICogQHN1bW1hcnkgUHJvdmlkZXMgaGlnaC1sZXZlbCBvcGVyYXRpb25zIGZvciBtYW5hZ2luZyBpZGVudGl0aWVzIGFnYWluc3QgYSBIeXBlcmxlZGdlciBGYWJyaWMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LCBpbmNsdWRpbmcgcmVnaXN0cmF0aW9uLCBlbnJvbGxtZW50LCByZXZvY2F0aW9uLCBhbmQgYWRtaW5pc3RyYXRpdmUgcXVlcmllcy4gRW5jYXBzdWxhdGVzIGxvd2VyLWxldmVsIEZhYnJpYyBDQSBjbGllbnQgY2FsbHMgd2l0aCBjb25zaXN0ZW50IGxvZ2dpbmcgYW5kIGVycm9yIG1hcHBpbmcuXG4gKiBAcGFyYW0ge0NBQ29uZmlnfSBjYUNvbmZpZyAtIENvbm5lY3Rpb24gYW5kIFRMUyBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFyZ2V0IENBLlxuICogQGNsYXNzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlXG4gKiBAZXhhbXBsZVxuICogLy8gUmVnaXN0ZXIgYW5kIGVucm9sbCBhIG5ldyB1c2VyXG4gKiBjb25zdCBzdmMgPSBuZXcgRmFicmljRW5yb2xsbWVudFNlcnZpY2Uoe1xuICogICB1cmw6ICdodHRwczovL2xvY2FsaG9zdDo3MDU0JyxcbiAqICAgY2FOYW1lOiAnT3JnMUNBJyxcbiAqICAgdGxzOiB7IHRydXN0ZWRSb290czogWycvcGF0aC90by9jYS5wZW0nXSwgdmVyaWZ5OiBmYWxzZSB9LFxuICogICBjYUNlcnQ6ICcvcGF0aC90by9hZG1pbi9jZXJ0RGlyJyxcbiAqICAgY2FLZXk6ICcvcGF0aC90by9hZG1pbi9rZXlEaXInXG4gKiB9KTtcbiAqIGF3YWl0IHN2Yy5yZWdpc3Rlcih7IHVzZXJOYW1lOiAnYWxpY2UnLCBwYXNzd29yZDogJ3MzY3IzdCcgfSwgZmFsc2UsICdvcmcxLmRlcGFydG1lbnQxJywgQ0FfUk9MRS5VU0VSKTtcbiAqIGNvbnN0IGlkID0gYXdhaXQgc3ZjLmVucm9sbCgnYWxpY2UnLCAnczNjcjN0Jyk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIGF1dG9udW1iZXJcbiAqICAgcGFydGljaXBhbnQgQXBwXG4gKiAgIHBhcnRpY2lwYW50IFN2YyBhcyBGYWJyaWNFbnJvbGxtZW50U2VydmljZVxuICogICBwYXJ0aWNpcGFudCBDQSBhcyBGYWJyaWMgQ0FcbiAqICAgQXBwLT4+U3ZjOiByZWdpc3RlcihjcmVkZW50aWFscywgLi4uKVxuICogICBTdmMtPj5DQTogcmVnaXN0ZXIocmVxdWVzdCwgYWRtaW5Vc2VyKVxuICogICBDQS0tPj5TdmM6IGVucm9sbG1lbnRTZWNyZXRcbiAqICAgU3ZjLS0+PkFwcDogc2VjcmV0XG4gKiAgIEFwcC0+PlN2YzogZW5yb2xsKGVucm9sbG1lbnRJZCwgc2VjcmV0KVxuICogICBTdmMtPj5DQTogZW5yb2xsKHtlbnJvbGxtZW50SUQsIHNlY3JldH0pXG4gKiAgIENBLS0+PlN2YzogY2VydGlmaWNhdGVzXG4gKiAgIFN2Yy0tPj5BcHA6IElkZW50aXR5XG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNFbnJvbGxtZW50U2VydmljZSBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgcHJpdmF0ZSBjYT86IEZhYnJpY0NBU2VydmljZXM7XG5cbiAgcHJpdmF0ZSBjZXJ0aWZpY2F0ZVNlcnZpY2U/OiBhbnk7XG5cbiAgcHJpdmF0ZSBhZmZpbGlhdGlvblNlcnZpY2U/OiBBZmZpbGlhdGlvblNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U/OiBJZGVudGl0eVNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBjbGllbnQ/OiBhbnk7XG5cbiAgcHJpdmF0ZSB1c2VyPzogVXNlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhQ29uZmlnOiBDQUNvbmZpZykge1xuICAgIENvcmVVdGlscy5nZXRDcnlwdG9TdWl0ZShcbiAgICAgIGNhQ29uZmlnLmhzbVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHNvZnR3YXJlOiBmYWxzZSxcbiAgICAgICAgICAgIGxpYjogY2FDb25maWcuaHNtLmxpYnJhcnksXG4gICAgICAgICAgICBzbG90OiBjYUNvbmZpZy5oc20uc2xvdCxcbiAgICAgICAgICAgIGxhYmVsOiBjYUNvbmZpZy5oc20udG9rZW5MYWJlbCxcbiAgICAgICAgICAgIHBpbjogU3RyaW5nKGNhQ29uZmlnLmhzbS5waW4pLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgVXNlcigpOiBQcm9taXNlPFVzZXI+IHtcbiAgICBpZiAodGhpcy51c2VyKSByZXR1cm4gdGhpcy51c2VyO1xuICAgIGNvbnN0IHsgY2FOYW1lLCBjYUNlcnQsIGNhS2V5LCB1cmwsIGhzbSB9ID0gdGhpcy5jYUNvbmZpZztcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5Vc2VyKTtcbiAgICBsb2cuZGVidWcoYENyZWF0aW5nIENBIHVzZXIgZm9yICR7Y2FOYW1lfSBhdCAke3VybH1gKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQ0EgY2VydGlmaWNhdGUgZnJvbSAke2NhQ2VydH1gKTtcbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUNlcnQpO1xuICAgIGxldCBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIWhzbSkge1xuICAgICAgaWYgKCFjYUtleSkge1xuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgTWlzc2luZyBjYUtleSBjb25maWd1cmF0aW9uIGZvciBDQSAke2NhTmFtZX0uIFByb3ZpZGUgYSBrZXkgZGlyZWN0b3J5IG9yIGNvbmZpZ3VyZSBIU00gc3VwcG9ydC5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQ0Ega2V5IGZyb20gJHtjYUtleX1gKTtcbiAgICAgIGtleSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgYFVzaW5nIEhTTSBjb25maWd1cmF0aW9uIGZvciBDQSAke2NhTmFtZX0gd2l0aCBsaWJyYXJ5ICR7aHNtLmxpYnJhcnl9YFxuICAgICAgKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBMb2FkaW5nIEFkbWluIHVzZXIgZm9yIGNhICR7Y2FOYW1lfWApO1xuICAgIHRoaXMudXNlciA9IGF3YWl0IENvcmVVdGlscy5nZXRDQVVzZXIoXCJhZG1pblwiLCBrZXksIGNlcnRpZmljYXRlLCBjYU5hbWUsIHtcbiAgICAgIGhzbSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIENBKCk6IFByb21pc2U8RmFicmljQ0FTZXJ2aWNlcz4ge1xuICAgIGlmICh0aGlzLmNhKSByZXR1cm4gdGhpcy5jYTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5DQSk7XG4gICAgY29uc3QgeyB1cmwsIHRscywgY2FOYW1lIH0gPSB0aGlzLmNhQ29uZmlnO1xuXG4gICAgLy8gRk9SIFNvbWUgUmVhc29uIHRoZSB2ZXJpZmljYXRpb24gZmFpbHMgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGlzIHdvcmtzIGZvciBub3dcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgdHJ1c3RlZFJvb3RzLCB2ZXJpZnkgfSA9IHRscyBhcyBUTFNPcHRpb25zO1xuXG4gICAgY29uc3Qgcm9vdCA9ICh0cnVzdGVkUm9vdHMgYXMgc3RyaW5nW10pWzBdIGFzIHN0cmluZztcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQ0EgY2VydGlmaWNhdGUgZnJvbSAke3Jvb3R9LiBjd2Q6ICR7cHJvY2Vzcy5jd2QoKX1gKTtcblxuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgQ29yZVV0aWxzLmdldEZpbGVDb250ZW50KHJvb3QpO1xuICAgIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgQ0EgQ2xpZW50IGZvciBDQSAke2NhTmFtZX0gdW5kZXIgJHt1cmx9YCk7XG4gICAgdGhpcy5jYSA9IG5ldyBGYWJyaWNDQVNlcnZpY2VzKFxuICAgICAgdXJsLFxuICAgICAge1xuICAgICAgICB0cnVzdGVkUm9vdHM6IEJ1ZmZlci5mcm9tKGNlcnRpZmljYXRlKSxcbiAgICAgICAgdmVyaWZ5LFxuICAgICAgfSBhcyBUTFNPcHRpb25zLFxuICAgICAgY2FOYW1lXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5jYTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBDbGllbnQoKTogUHJvbWlzZTx7IG5ld0NlcnRpZmljYXRlU2VydmljZTogYW55IH0+IHtcbiAgICBpZiAodGhpcy5jbGllbnQpIHJldHVybiB0aGlzLmNsaWVudDtcbiAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICB0aGlzLmNsaWVudCA9IChjYSBhcyBhbnkpW1wiX0ZhYnJpY0NBU2VydmljZXNcIl07XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIENlcnRpZmljYXRlKCkge1xuICAgIGlmICghdGhpcy5jZXJ0aWZpY2F0ZVNlcnZpY2UpXG4gICAgICB0aGlzLmNlcnRpZmljYXRlU2VydmljZSA9IChhd2FpdCB0aGlzLkNsaWVudCgpKS5uZXdDZXJ0aWZpY2F0ZVNlcnZpY2UoKTtcbiAgICByZXR1cm4gdGhpcy5jZXJ0aWZpY2F0ZVNlcnZpY2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgQWZmaWxpYXRpb25zKCkge1xuICAgIGlmICghdGhpcy5hZmZpbGlhdGlvblNlcnZpY2UpXG4gICAgICB0aGlzLmFmZmlsaWF0aW9uU2VydmljZSA9IChhd2FpdCB0aGlzLkNBKCkpLm5ld0FmZmlsaWF0aW9uU2VydmljZSgpO1xuICAgIHJldHVybiB0aGlzLmFmZmlsaWF0aW9uU2VydmljZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBJZGVudGl0aWVzKCkge1xuICAgIGlmICghdGhpcy5pZGVudGl0eVNlcnZpY2UpXG4gICAgICB0aGlzLmlkZW50aXR5U2VydmljZSA9IChhd2FpdCB0aGlzLkNBKCkpLm5ld0lkZW50aXR5U2VydmljZSgpO1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gdGhlIENBLlxuICAgKiBAc3VtbWFyeSBDYWxscyB0aGUgQ0EgY2VydGlmaWNhdGUgc2VydmljZSB0byBsaXN0IGNlcnRpZmljYXRlcywgb3B0aW9uYWxseSBtYXBwaW5nIHRvIFBFTSBzdHJpbmdzIG9ubHkuXG4gICAqIEBwYXJhbSB7R2V0Q2VydGlmaWNhdGVzUmVxdWVzdH0gW3JlcXVlc3RdIC0gT3B0aW9uYWwgZmlsdGVyIHJlcXVlc3QgZm9yIGNlcnRpZmljYXRlIGxvb2t1cC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZG9NYXA9dHJ1ZV0gLSBXaGVuIHRydWUsIHJldHVybnMgYXJyYXkgb2YgUEVNIHN0cmluZ3M7IG90aGVyd2lzZSByZXR1cm5zIGZ1bGwgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZ1tdIHwgQ2VydGlmaWNhdGVSZXNwb25zZT59IEFycmF5IG9mIFBFTSBzdHJpbmdzIG9yIHRoZSBmdWxsIGNlcnRpZmljYXRlIHJlc3BvbnNlLlxuICAgKi9cbiAgYXN5bmMgZ2V0Q2VydGlmaWNhdGVzKFxuICAgIHJlcXVlc3Q/OiBHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0LFxuICAgIGRvTWFwID0gdHJ1ZVxuICApOiBQcm9taXNlPHN0cmluZ1tdIHwgQ2VydGlmaWNhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNlcnRpZmljYXRlU2VydmljZSA9IGF3YWl0IHRoaXMuQ2VydGlmaWNhdGUoKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0Q2VydGlmaWNhdGVzKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgUmV0cmlldmluZyBjZXJ0aWZpY2F0ZXMke3JlcXVlc3QgPyBgIGZvciAke3JlcXVlc3QuaWR9YCA6IFwiXCJ9IGZvciBDQSAke3RoaXMuY2FDb25maWcuY2FOYW1lfWBcbiAgICApO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBDZXJ0aWZpY2F0ZVJlc3BvbnNlID0gKFxuICAgICAgYXdhaXQgY2VydGlmaWNhdGVTZXJ2aWNlLmdldENlcnRpZmljYXRlcyhyZXF1ZXN0IHx8IHt9LCB1c2VyKVxuICAgICkucmVzdWx0O1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBGb3VuZCAke3Jlc3BvbnNlLmNlcnRzLmxlbmd0aH0gY2VydGlmaWNhdGVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gXG4gICAgKTtcbiAgICByZXR1cm4gZG9NYXAgPyByZXNwb25zZS5jZXJ0cy5tYXAoKGMpID0+IGMuUEVNKSA6IHJlc3BvbnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBpbiB0aGUgQ0EuXG4gICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGlkZW50aXR5IHNlcnZpY2UgdG8gZmV0Y2ggYWxsIGlkZW50aXRpZXMgYW5kIHJldHVybnMgdGhlIGxpc3QgYXMgRmFicmljSWRlbnRpdHkgb2JqZWN0cy5cbiAgICogQHJldHVybiB7UHJvbWlzZTxGYWJyaWNJZGVudGl0eVtdPn0gVGhlIGxpc3Qgb2YgaWRlbnRpdGllcyByZWdpc3RlcmVkIGluIHRoZSBDQS5cbiAgICovXG4gIGFzeW5jIGdldElkZW50aXRpZXMoKTogUHJvbWlzZTxGYWJyaWNJZGVudGl0eVtdPiB7XG4gICAgY29uc3QgaWRlbnRpdGllc1NlcnZpY2UgPSBhd2FpdCB0aGlzLklkZW50aXRpZXMoKTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5nZXRJZGVudGl0aWVzKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgSWRlbnRpdGllcyB1bmRlciBDQSAke3RoaXMuY2FDb25maWcuY2FOYW1lfWApO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBJZGVudGl0eVJlc3BvbnNlID0gKFxuICAgICAgYXdhaXQgaWRlbnRpdGllc1NlcnZpY2UuZ2V0QWxsKGF3YWl0IHRoaXMuVXNlcigpKVxuICAgICkucmVzdWx0O1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBGb3VuZCAke3Jlc3BvbnNlLmlkZW50aXRpZXMubGVuZ3RofSBJZGVudGl0aWVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gXG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuaWRlbnRpdGllcztcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUVycm9yKGU6IEVycm9yKSB7XG4gICAgY29uc3QgcmVnZXhwID0gLy4qY29kZTpcXHMoXFxkKykuKj9tZXNzYWdlOlxcc1tcIiddKC4rKVtcIiddL2dzO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWMoZS5tZXNzYWdlKTtcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gbmV3IFJlZ2lzdHJhdGlvbkVycm9yKGUpO1xuICAgIGNvbnN0IFssIGNvZGUsIG1lc3NhZ2VdID0gbWF0Y2g7XG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIFwiNzRcIjpcbiAgICAgIGNhc2UgXCI3MVwiOlxuICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICBjYXNlIFwiMjBcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBBdXRob3JpemF0aW9uRXJyb3IobWVzc2FnZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbmV3IFJlZ2lzdHJhdGlvbkVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgYWZmaWxpYXRpb25zIGZyb20gdGhlIENBLlxuICAgKiBAc3VtbWFyeSBRdWVyaWVzIHRoZSBDQSBmb3IgdGhlIGxpc3Qgb2YgYWZmaWxpYXRpb25zIGF2YWlsYWJsZSB1bmRlciB0aGUgY29uZmlndXJlZCBDQS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgYWZmaWxpYXRpb25zIHJlc3VsdCBwYXlsb2FkLlxuICAgKi9cbiAgYXN5bmMgZ2V0QWZmaWxpYXRpb25zKCkge1xuICAgIGNvbnN0IGFmZmlsaWF0aW9uU2VydmljZSA9IGF3YWl0IHRoaXMuQWZmaWxpYXRpb25zKCk7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0QWZmaWxpYXRpb25zKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQWZmaWxpYXRpb25zIHVuZGVyIENBICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9YCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYWZmaWxpYXRpb25TZXJ2aWNlLmdldEFsbChhd2FpdCB0aGlzLlVzZXIoKSkpXG4gICAgICAucmVzdWx0O1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBGb3VuZCAke3Jlc3BvbnNlLmEubGVuZ3RofSBBZmZpbGlhdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWBcbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVhZCBpZGVudGl0eSBkZXRhaWxzIGZyb20gdGhlIENBIGJ5IGVucm9sbG1lbnQgSUQuXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbmQgdmFsaWRhdGVzIGEgc2luZ2xlIGlkZW50aXR5LCB0aHJvd2luZyBOb3RGb3VuZEVycm9yIHdoZW4gbWlzc2luZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVucm9sbG1lbnRJZCAtIEVucm9sbG1lbnQgSUQgdG8gbG9va3VwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEZhYnJpY0lkZW50aXR5Pn0gVGhlIGlkZW50aXR5IGRldGFpbHMgc3RvcmVkIGluIHRoZSBDQS5cbiAgICovXG4gIGFzeW5jIHJlYWQoZW5yb2xsbWVudElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgbGV0IHJlc3VsdDogSVNlcnZpY2VSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY2EubmV3SWRlbnRpdHlTZXJ2aWNlKCkuZ2V0T25lKGVucm9sbG1lbnRJZCwgdXNlcik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYENvdWxkbid0IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtlfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgQ291bGRuJ3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke3Jlc3VsdC5lcnJvcnMuam9pbihcIlxcblwiKX1gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQgYXMgRmFicmljSWRlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGEgbmV3IGlkZW50aXR5IHdpdGggdGhlIENBLlxuICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgcmVnaXN0cmF0aW9uIHJlcXVlc3QgZm9yIGEgbmV3IGVucm9sbG1lbnQgSUQsIHJldHVybmluZyB0aGUgZW5yb2xsbWVudCBzZWNyZXQgdXBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBtb2RlbCAtIENyZWRlbnRpYWxzIGNvbnRhaW5pbmcgdXNlck5hbWUgYW5kIHBhc3N3b3JkIGZvciB0aGUgbmV3IGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N1cGVyVXNlcj1mYWxzZV0gLSBXaGV0aGVyIHRvIHJlZ2lzdGVyIHRoZSBpZGVudGl0eSBhcyBhIHN1cGVyIHVzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWZmaWxpYXRpb249XCJcIl0gLSBBZmZpbGlhdGlvbiBzdHJpbmcgKGUuZy4sIG9yZzEuZGVwYXJ0bWVudDEpLlxuICAgKiBAcGFyYW0ge0NBX1JPTEUgfCBzdHJpbmd9IFt1c2VyUm9sZV0gLSBSb2xlIHRvIGFzc2lnbiB0byB0aGUgaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7SUtleVZhbHVlQXR0cmlidXRlfSBbYXR0cnNdIC0gT3B0aW9uYWwgYXR0cmlidXRlcyB0byBhdHRhY2ggdG8gdGhlIGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW21heEVucm9sbG1lbnRzXSAtIE1heGltdW0gbnVtYmVyIG9mIGVucm9sbG1lbnRzIGFsbG93ZWQgZm9yIHRoZSBpZGVudGl0eS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBUaGUgZW5yb2xsbWVudCBzZWNyZXQgZm9yIHRoZSByZWdpc3RlcmVkIGlkZW50aXR5LlxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXIoXG4gICAgbW9kZWw6IENyZWRlbnRpYWxzLFxuICAgIGlzU3VwZXJVc2VyOiBib29sZWFuID0gZmFsc2UsXG4gICAgYWZmaWxpYXRpb246IHN0cmluZyA9IFwiXCIsXG4gICAgdXNlclJvbGU/OiBDQV9ST0xFIHwgc3RyaW5nLFxuICAgIGF0dHJzPzogSUtleVZhbHVlQXR0cmlidXRlLFxuICAgIG1heEVucm9sbG1lbnRzPzogbnVtYmVyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHJlZ2lzdHJhdGlvbjogc3RyaW5nO1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnJlZ2lzdGVyKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSwgcGFzc3dvcmQgfSA9IG1vZGVsO1xuICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgZW5yb2xsbWVudElEOiB1c2VyTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgIGVucm9sbG1lbnRTZWNyZXQ6IHBhc3N3b3JkLFxuICAgICAgICBhZmZpbGlhdGlvbjogYWZmaWxpYXRpb24sXG4gICAgICAgIHVzZXJSb2xlOiB1c2VyUm9sZSxcbiAgICAgICAgYXR0cnM6IGF0dHJzLFxuICAgICAgICBtYXhFbnJvbGxtZW50czogbWF4RW5yb2xsbWVudHMsXG4gICAgICB9IGFzIElSZWdpc3RlclJlcXVlc3Q7XG4gICAgICByZWdpc3RyYXRpb24gPSBhd2FpdCBjYS5yZWdpc3Rlcihwcm9wcywgdXNlcik7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYFJlZ2lzdHJhdGlvbiBmb3IgJHt1c2VyTmFtZX0gY3JlYXRlZCB3aXRoIHVzZXIgdHlwZSAke3VzZXJSb2xlID8/IFwiVW5kZWZpbmVkIFJvbGVcIn0gJHtpc1N1cGVyVXNlciA/IFwiYXMgc3VwZXIgdXNlclwiIDogXCJcIn1gXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVnaXN0cmF0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBpZGVudGl0eUZyb21FbnJvbGxtZW50KFxuICAgIGVucm9sbG1lbnQ6IElFbnJvbGxSZXNwb25zZSxcbiAgICBtc3BJZDogc3RyaW5nXG4gICk6IElkZW50aXR5IHtcbiAgICBjb25zdCB7IGNlcnRpZmljYXRlLCBrZXksIHJvb3RDZXJ0aWZpY2F0ZSB9ID0gZW5yb2xsbWVudDtcbiAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcihGYWJyaWNFbnJvbGxtZW50U2VydmljZSwge30pLmZvcihcbiAgICAgIHRoaXMuaWRlbnRpdHlGcm9tRW5yb2xsbWVudFxuICAgICk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYEdlbmVyYXRpbmcgSWRlbnRpdHkgZnJvbSBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfSBpbiBtc3AgJHttc3BJZH1gXG4gICAgKTtcbiAgICBjb25zdCBjbGllbnRJZCA9IENyeXB0b1V0aWxzLmZhYnJpY0lkRnJvbUNlcnRpZmljYXRlKGNlcnRpZmljYXRlKTtcbiAgICBjb25zdCBpZCA9IENyeXB0b1V0aWxzLmVuY29kZShjbGllbnRJZCk7XG4gICAgbG9nLmRlYnVnKGBJZGVudGl0eSAke2NsaWVudElkfSBhbmQgZW5jb2RlZElkICR7aWR9YCk7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gbmV3IElkZW50aXR5KHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgY2VydGlmaWNhdGU6IGNlcnRpZmljYXRlLFxuICAgICAgICBwcml2YXRlS2V5OiBrZXkudG9CeXRlcygpLFxuICAgICAgICByb290Q2VydGlmaWNhdGU6IHJvb3RDZXJ0aWZpY2F0ZSxcbiAgICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICAgIHVwZGF0ZWRPbjogbm93LFxuICAgICAgfSxcbiAgICAgIG1zcElkOiBtc3BJZCxcbiAgICAgIGNyZWF0ZWRPbjogbm93LFxuICAgICAgdXBkYXRlZE9uOiBub3csXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEVucm9sbCBhbiBpZGVudGl0eSB3aXRoIHRoZSBDQSB1c2luZyBhIHJlZ2lzdHJhdGlvbiBzZWNyZXQuXG4gICAqIEBzdW1tYXJ5IEV4Y2hhbmdlcyB0aGUgZW5yb2xsbWVudCBJRCBhbmQgc2VjcmV0IGZvciBjZXJ0aWZpY2F0ZXMsIHJldHVybmluZyBhIGNvbnN0cnVjdGVkIElkZW50aXR5IG1vZGVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5yb2xsbWVudElkIC0gRW5yb2xsbWVudCBJRCB0byBlbnJvbGwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb24gLSBFbnJvbGxtZW50IHNlY3JldCByZXR1cm5lZCBhdCByZWdpc3RyYXRpb24gdGltZS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBjcmVkZW50aWFscy5cbiAgICovXG4gIGFzeW5jIGVucm9sbChlbnJvbGxtZW50SWQ6IHN0cmluZywgcmVnaXN0cmF0aW9uOiBzdHJpbmcpIHtcbiAgICBsZXQgaWRlbnRpdHk6IElkZW50aXR5O1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmVucm9sbCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgICAgbG9nLmRlYnVnKGBFbnJvbGxpbmcgJHtlbnJvbGxtZW50SWR9YCk7XG4gICAgICBjb25zdCBlbnJvbGxtZW50OiBJRW5yb2xsUmVzcG9uc2UgPSBhd2FpdCBjYS5lbnJvbGwoe1xuICAgICAgICBlbnJvbGxtZW50SUQ6IGVucm9sbG1lbnRJZCxcbiAgICAgICAgZW5yb2xsbWVudFNlY3JldDogcmVnaXN0cmF0aW9uLFxuICAgICAgfSk7XG4gICAgICBpZGVudGl0eSA9IEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlLmlkZW50aXR5RnJvbUVucm9sbG1lbnQoXG4gICAgICAgIGVucm9sbG1lbnQsXG4gICAgICAgIHRoaXMuY2FDb25maWcuY2FOYW1lXG4gICAgICApO1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBTdWNjZXNzZnVsbHkgZW5yb2xsZWQgJHtlbnJvbGxtZW50SWR9IHVuZGVyICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9IGFzICR7aWRlbnRpdHkuaWR9YFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IGlkZW50aXR5IGluIG9uZSBzdGVwLlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYSBuZXcgZW5yb2xsbWVudCBJRCB3aXRoIHRoZSBDQSBhbmQgaW1tZWRpYXRlbHkgZXhjaGFuZ2VzIHRoZSBzZWNyZXQgdG8gZW5yb2xsLCByZXR1cm5pbmcgdGhlIGNyZWF0ZWQgSWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IG1vZGVsIC0gQ3JlZGVudGlhbHMgZm9yIHRoZSBuZXcgaWRlbnRpdHkgY29udGFpbmluZyB1c2VyTmFtZSBhbmQgcGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3VwZXJVc2VyPWZhbHNlXSAtIFdoZXRoZXIgdG8gcmVnaXN0ZXIgdGhlIGlkZW50aXR5IGFzIGEgc3VwZXIgdXNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthZmZpbGlhdGlvbj1cIlwiXSAtIEFmZmlsaWF0aW9uIHN0cmluZyAoZS5nLiwgb3JnMS5kZXBhcnRtZW50MSkuXG4gICAqIEBwYXJhbSB7Q0FfUk9MRSB8IHN0cmluZ30gW3VzZXJSb2xlXSAtIFJvbGUgdG8gYXNzaWduIHRvIHRoZSBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtJS2V5VmFsdWVBdHRyaWJ1dGV9IFthdHRyc10gLSBPcHRpb25hbCBhdHRyaWJ1dGVzIHRvIGF0dGFjaCB0byB0aGUgaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4RW5yb2xsbWVudHNdIC0gTWF4aW11bSBudW1iZXIgb2YgZW5yb2xsbWVudHMgYWxsb3dlZCBmb3IgdGhlIGlkZW50aXR5LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gVGhlIGVucm9sbGVkIGlkZW50aXR5LlxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXJBbmRFbnJvbGwoXG4gICAgbW9kZWw6IENyZWRlbnRpYWxzLFxuICAgIGlzU3VwZXJVc2VyOiBib29sZWFuID0gZmFsc2UsXG4gICAgYWZmaWxpYXRpb246IHN0cmluZyA9IFwiXCIsXG4gICAgdXNlclJvbGU/OiBDQV9ST0xFIHwgc3RyaW5nLFxuICAgIGF0dHJzPzogSUtleVZhbHVlQXR0cmlidXRlLFxuICAgIG1heEVucm9sbG1lbnRzPzogbnVtYmVyXG4gICk6IFByb21pc2U8SWRlbnRpdHk+IHtcbiAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCB0aGlzLnJlZ2lzdGVyKFxuICAgICAgbW9kZWwsXG4gICAgICBpc1N1cGVyVXNlcixcbiAgICAgIGFmZmlsaWF0aW9uLFxuICAgICAgdXNlclJvbGUsXG4gICAgICBhdHRycyxcbiAgICAgIG1heEVucm9sbG1lbnRzXG4gICAgKTtcbiAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSBtb2RlbDtcbiAgICByZXR1cm4gdGhpcy5lbnJvbGwodXNlck5hbWUgYXMgc3RyaW5nLCByZWdpc3RyYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZXMgdGhlIGVucm9sbG1lbnQgb2YgYW4gaWRlbnRpdHkgd2l0aCB0aGUgc3BlY2lmaWVkIGVucm9sbG1lbnQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBlbnJvbGxtZW50SWQgLSBUaGUgZW5yb2xsbWVudCBJRCBvZiB0aGUgaWRlbnRpdHkgdG8gYmUgcmV2b2tlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgcmV2b2NhdGlvbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIEB0aHJvd3Mge05vdEZvdW5kRXJyb3J9IElmIHRoZSBlbnJvbGxtZW50IHdpdGggdGhlIHNwZWNpZmllZCBJRCBkb2VzIG5vdCBleGlzdC5cbiAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgdGhlcmUgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZSByZXZvY2F0aW9uIHByb2Nlc3MuXG4gICAqL1xuICBhc3luYyByZXZva2UoZW5yb2xsbWVudElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgY29uc3QgaWRlbnRpdHkgPSBhd2FpdCB0aGlzLnJlYWQoZW5yb2xsbWVudElkKTtcbiAgICBpZiAoIWlkZW50aXR5KVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9YFxuICAgICAgKTtcbiAgICBsZXQgcmVzdWx0OiBJU2VydmljZVJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjYS5yZXZva2UoXG4gICAgICAgIHsgZW5yb2xsbWVudElEOiBpZGVudGl0eS5pZCwgcmVhc29uOiBcIlVzZXIgRGVsZXRhdGlvblwiIH0sXG4gICAgICAgIHVzZXJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRW5yb2xsbWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJGYWJyaWNFbnJvbGxtZW50U2VydmljZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3RUFBZ0Q7QUFDaEQsa0VBQTREO0FBQzVELHlDQUFvRDtBQUNwRCwyREFBdUY7QUFDdkYsNENBQTBDO0FBQzFDLDhDQUE2QztBQUM3Qyx3REFBNkQ7QUFDN0QsK0NBQXlEO0FBU3pELENBQUMsVUFBVSxnQkFBZ0I7SUFDdkIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN4QyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDdEMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyx3QkFBZ0IsSUFBSSxDQUFDLHdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFTaEQsQ0FBQyxVQUFVLHNCQUFzQjtJQUM3QixzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFDO0lBQ2xFLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDLEdBQUcsNEJBQTRCLENBQUM7SUFDbEYsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsR0FBRyx5QkFBeUIsQ0FBQztJQUM1RSxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ2pFLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUNuRCxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ2pFLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUNyRCxDQUFD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QUFZLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSjtBQTNSRCwwREEyUkM7QUFDRCwwem9DQUEwem9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZhYnJpY0NBU2VydmljZXMgZnJvbSBcImZhYnJpYy1jYS1jbGllbnRcIjtcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSBcIi4vLi4vLi4vc2hhcmVkL21vZGVsL0lkZW50aXR5LmpzXCI7XG5pbXBvcnQgeyBBdXRob3JpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvbmZsaWN0RXJyb3IsIEludGVybmFsRXJyb3IsIE5vdEZvdW5kRXJyb3IsIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3JlVXRpbHMgfSBmcm9tIFwiLi8uLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgQ3J5cHRvVXRpbHMgfSBmcm9tIFwiLi8uLi9jcnlwdG8uanNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkVycm9yIH0gZnJvbSBcIi4vLi4vLi4vc2hhcmVkL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHsgTG9nZ2VkQ2xhc3MsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uIEh5cGVybGVkZ2VyIEZhYnJpYyBDQSBpZGVudGl0eSB0eXBlcy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgdGhlIHN1cHBvcnRlZCBpZGVudGl0eSB0eXBlcyByZWNvZ25pemVkIGJ5IEZhYnJpYyBDQSBmb3IgcmVnaXN0cmF0aW9uIGFuZCBpZGVudGl0eSBtYW5hZ2VtZW50LlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgdmFyIEhGQ0FJZGVudGl0eVR5cGU7XG4oZnVuY3Rpb24gKEhGQ0FJZGVudGl0eVR5cGUpIHtcbiAgICBIRkNBSWRlbnRpdHlUeXBlW1wiUEVFUlwiXSA9IFwicGVlclwiO1xuICAgIEhGQ0FJZGVudGl0eVR5cGVbXCJPUkRFUkVSXCJdID0gXCJvcmRlcmVyXCI7XG4gICAgSEZDQUlkZW50aXR5VHlwZVtcIkNMSUVOVFwiXSA9IFwiY2xpZW50XCI7XG4gICAgSEZDQUlkZW50aXR5VHlwZVtcIlVTRVJcIl0gPSBcInVzZXJcIjtcbiAgICBIRkNBSWRlbnRpdHlUeXBlW1wiQURNSU5cIl0gPSBcImFkbWluXCI7XG59KShIRkNBSWRlbnRpdHlUeXBlIHx8IChIRkNBSWRlbnRpdHlUeXBlID0ge30pKTtcbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIEZhYnJpYyBDQSBpZGVudGl0eSBhdHRyaWJ1dGUga2V5cy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgd2VsbC1rbm93biBGYWJyaWMgQ0EgYXR0cmlidXRlIGtleXMgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gaWRlbnRpdGllcyBmb3IgZGVsZWdhdGlvbnMgYW5kIHBlcm1pc3Npb25zLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgdmFyIEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXM7XG4oZnVuY3Rpb24gKEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXMpIHtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZSRUdJU1RSQVJST0xFU1wiXSA9IFwiaGYuUmVnaXN0cmFyLlJvbGVzXCI7XG4gICAgSEZDQUlkZW50aXR5QXR0cmlidXRlc1tcIkhGUkVHSVNUUkFSREVMRUdBVEVST0xFU1wiXSA9IFwiaGYuUmVnaXN0cmFyLkRlbGVnYXRlUm9sZXNcIjtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZSRUdJU1RSQVJBVFRSSUJVVEVTXCJdID0gXCJoZi5SZWdpc3RyYXIuQXR0cmlidXRlc1wiO1xuICAgIEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXNbXCJIRklOVEVSTUVESUFURUNBXCJdID0gXCJoZi5JbnRlcm1lZGlhdGVDQVwiO1xuICAgIEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXNbXCJIRlJFVk9LRVJcIl0gPSBcImhmLlJldm9rZXJcIjtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZBRkZJTElBVElPTk1HUlwiXSA9IFwiaGYuQWZmaWxpYXRpb25NZ3JcIjtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZHRU5DUkxcIl0gPSBcImhmLkdlbkNSTFwiO1xufSkoSEZDQUlkZW50aXR5QXR0cmlidXRlcyB8fCAoSEZDQUlkZW50aXR5QXR0cmlidXRlcyA9IHt9KSk7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXJ2aWNlIHdyYXBwZXIgZm9yIGludGVyYWN0aW5nIHdpdGggYSBGYWJyaWMgQ0EuXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBoaWdoLWxldmVsIG9wZXJhdGlvbnMgZm9yIG1hbmFnaW5nIGlkZW50aXRpZXMgYWdhaW5zdCBhIEh5cGVybGVkZ2VyIEZhYnJpYyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHksIGluY2x1ZGluZyByZWdpc3RyYXRpb24sIGVucm9sbG1lbnQsIHJldm9jYXRpb24sIGFuZCBhZG1pbmlzdHJhdGl2ZSBxdWVyaWVzLiBFbmNhcHN1bGF0ZXMgbG93ZXItbGV2ZWwgRmFicmljIENBIGNsaWVudCBjYWxscyB3aXRoIGNvbnNpc3RlbnQgbG9nZ2luZyBhbmQgZXJyb3IgbWFwcGluZy5cbiAqIEBwYXJhbSB7Q0FDb25maWd9IGNhQ29uZmlnIC0gQ29ubmVjdGlvbiBhbmQgVExTIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YXJnZXQgQ0EuXG4gKiBAY2xhc3MgRmFicmljRW5yb2xsbWVudFNlcnZpY2VcbiAqIEBleGFtcGxlXG4gKiAvLyBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IHVzZXJcbiAqIGNvbnN0IHN2YyA9IG5ldyBGYWJyaWNFbnJvbGxtZW50U2VydmljZSh7XG4gKiAgIHVybDogJ2h0dHBzOi8vbG9jYWxob3N0OjcwNTQnLFxuICogICBjYU5hbWU6ICdPcmcxQ0EnLFxuICogICB0bHM6IHsgdHJ1c3RlZFJvb3RzOiBbJy9wYXRoL3RvL2NhLnBlbSddLCB2ZXJpZnk6IGZhbHNlIH0sXG4gKiAgIGNhQ2VydDogJy9wYXRoL3RvL2FkbWluL2NlcnREaXInLFxuICogICBjYUtleTogJy9wYXRoL3RvL2FkbWluL2tleURpcidcbiAqIH0pO1xuICogYXdhaXQgc3ZjLnJlZ2lzdGVyKHsgdXNlck5hbWU6ICdhbGljZScsIHBhc3N3b3JkOiAnczNjcjN0JyB9LCBmYWxzZSwgJ29yZzEuZGVwYXJ0bWVudDEnLCBDQV9ST0xFLlVTRVIpO1xuICogY29uc3QgaWQgPSBhd2FpdCBzdmMuZW5yb2xsKCdhbGljZScsICdzM2NyM3QnKTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgYXV0b251bWJlclxuICogICBwYXJ0aWNpcGFudCBBcHBcbiAqICAgcGFydGljaXBhbnQgU3ZjIGFzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlXG4gKiAgIHBhcnRpY2lwYW50IENBIGFzIEZhYnJpYyBDQVxuICogICBBcHAtPj5TdmM6IHJlZ2lzdGVyKGNyZWRlbnRpYWxzLCAuLi4pXG4gKiAgIFN2Yy0+PkNBOiByZWdpc3RlcihyZXF1ZXN0LCBhZG1pblVzZXIpXG4gKiAgIENBLS0+PlN2YzogZW5yb2xsbWVudFNlY3JldFxuICogICBTdmMtLT4+QXBwOiBzZWNyZXRcbiAqICAgQXBwLT4+U3ZjOiBlbnJvbGwoZW5yb2xsbWVudElkLCBzZWNyZXQpXG4gKiAgIFN2Yy0+PkNBOiBlbnJvbGwoe2Vucm9sbG1lbnRJRCwgc2VjcmV0fSlcbiAqICAgQ0EtLT4+U3ZjOiBjZXJ0aWZpY2F0ZXNcbiAqICAgU3ZjLS0+PkFwcDogSWRlbnRpdHlcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlIGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yKGNhQ29uZmlnKSB7XG4gICAgICAgIENvcmVVdGlscy5nZXRDcnlwdG9TdWl0ZShjYUNvbmZpZy5oc21cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHNvZnR3YXJlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsaWI6IGNhQ29uZmlnLmhzbS5saWJyYXJ5LFxuICAgICAgICAgICAgICAgIHNsb3Q6IGNhQ29uZmlnLmhzbS5zbG90LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBjYUNvbmZpZy5oc20udG9rZW5MYWJlbCxcbiAgICAgICAgICAgICAgICBwaW46IFN0cmluZyhjYUNvbmZpZy5oc20ucGluKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkKTtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYUNvbmZpZyA9IGNhQ29uZmlnO1xuICAgIH1cbiAgICBhc3luYyBVc2VyKCkge1xuICAgICAgICBpZiAodGhpcy51c2VyKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICAgICAgY29uc3QgeyBjYU5hbWUsIGNhQ2VydCwgY2FLZXksIHVybCwgaHNtIH0gPSB0aGlzLmNhQ29uZmlnO1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5Vc2VyKTtcbiAgICAgICAgbG9nLmRlYnVnKGBDcmVhdGluZyBDQSB1c2VyIGZvciAke2NhTmFtZX0gYXQgJHt1cmx9YCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7Y2FDZXJ0fWApO1xuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUNlcnQpO1xuICAgICAgICBsZXQga2V5O1xuICAgICAgICBpZiAoIWhzbSkge1xuICAgICAgICAgICAgaWYgKCFjYUtleSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNaXNzaW5nIGNhS2V5IGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfS4gUHJvdmlkZSBhIGtleSBkaXJlY3Rvcnkgb3IgY29uZmlndXJlIEhTTSBzdXBwb3J0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZXRyaWV2aW5nIENBIGtleSBmcm9tICR7Y2FLZXl9YCk7XG4gICAgICAgICAgICBrZXkgPSBhd2FpdCBDb3JlVXRpbHMuZ2V0Rmlyc3REaXJGaWxlTmFtZUNvbnRlbnQoY2FLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBVc2luZyBIU00gY29uZmlndXJhdGlvbiBmb3IgQ0EgJHtjYU5hbWV9IHdpdGggbGlicmFyeSAke2hzbS5saWJyYXJ5fWApO1xuICAgICAgICB9XG4gICAgICAgIGxvZy5kZWJ1ZyhgTG9hZGluZyBBZG1pbiB1c2VyIGZvciBjYSAke2NhTmFtZX1gKTtcbiAgICAgICAgdGhpcy51c2VyID0gYXdhaXQgQ29yZVV0aWxzLmdldENBVXNlcihcImFkbWluXCIsIGtleSwgY2VydGlmaWNhdGUsIGNhTmFtZSwge1xuICAgICAgICAgICAgaHNtLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICB9XG4gICAgYXN5bmMgQ0EoKSB7XG4gICAgICAgIGlmICh0aGlzLmNhKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2E7XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLkNBKTtcbiAgICAgICAgY29uc3QgeyB1cmwsIHRscywgY2FOYW1lIH0gPSB0aGlzLmNhQ29uZmlnO1xuICAgICAgICAvLyBGT1IgU29tZSBSZWFzb24gdGhlIHZlcmlmaWNhdGlvbiBmYWlscyBuZWVkIHRvIGludmVzdGlnYXRlIHRoaXMgd29ya3MgZm9yIG5vd1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICAgIGxldCB7IHRydXN0ZWRSb290cywgdmVyaWZ5IH0gPSB0bHM7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0cnVzdGVkUm9vdHNbMF07XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7cm9vdH0uIGN3ZDogJHtwcm9jZXNzLmN3ZCgpfWApO1xuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaWxlQ29udGVudChyb290KTtcbiAgICAgICAgbG9nLmRlYnVnKGBDcmVhdGluZyBDQSBDbGllbnQgZm9yIENBICR7Y2FOYW1lfSB1bmRlciAke3VybH1gKTtcbiAgICAgICAgdGhpcy5jYSA9IG5ldyBGYWJyaWNDQVNlcnZpY2VzKHVybCwge1xuICAgICAgICAgICAgdHJ1c3RlZFJvb3RzOiBCdWZmZXIuZnJvbShjZXJ0aWZpY2F0ZSksXG4gICAgICAgICAgICB2ZXJpZnksXG4gICAgICAgIH0sIGNhTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhO1xuICAgIH1cbiAgICBhc3luYyBDbGllbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNsaWVudClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsaWVudDtcbiAgICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICAgIHRoaXMuY2xpZW50ID0gY2FbXCJfRmFicmljQ0FTZXJ2aWNlc1wiXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50O1xuICAgIH1cbiAgICBhc3luYyBDZXJ0aWZpY2F0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNlcnRpZmljYXRlU2VydmljZSlcbiAgICAgICAgICAgIHRoaXMuY2VydGlmaWNhdGVTZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ2xpZW50KCkpLm5ld0NlcnRpZmljYXRlU2VydmljZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5jZXJ0aWZpY2F0ZVNlcnZpY2U7XG4gICAgfVxuICAgIGFzeW5jIEFmZmlsaWF0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFmZmlsaWF0aW9uU2VydmljZSlcbiAgICAgICAgICAgIHRoaXMuYWZmaWxpYXRpb25TZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ0EoKSkubmV3QWZmaWxpYXRpb25TZXJ2aWNlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFmZmlsaWF0aW9uU2VydmljZTtcbiAgICB9XG4gICAgYXN5bmMgSWRlbnRpdGllcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlkZW50aXR5U2VydmljZSlcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ0EoKSkubmV3SWRlbnRpdHlTZXJ2aWNlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBDQS5cbiAgICAgKiBAc3VtbWFyeSBDYWxscyB0aGUgQ0EgY2VydGlmaWNhdGUgc2VydmljZSB0byBsaXN0IGNlcnRpZmljYXRlcywgb3B0aW9uYWxseSBtYXBwaW5nIHRvIFBFTSBzdHJpbmdzIG9ubHkuXG4gICAgICogQHBhcmFtIHtHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0fSBbcmVxdWVzdF0gLSBPcHRpb25hbCBmaWx0ZXIgcmVxdWVzdCBmb3IgY2VydGlmaWNhdGUgbG9va3VwLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RvTWFwPXRydWVdIC0gV2hlbiB0cnVlLCByZXR1cm5zIGFycmF5IG9mIFBFTSBzdHJpbmdzOyBvdGhlcndpc2UgcmV0dXJucyBmdWxsIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZ1tdIHwgQ2VydGlmaWNhdGVSZXNwb25zZT59IEFycmF5IG9mIFBFTSBzdHJpbmdzIG9yIHRoZSBmdWxsIGNlcnRpZmljYXRlIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIGFzeW5jIGdldENlcnRpZmljYXRlcyhyZXF1ZXN0LCBkb01hcCA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgY2VydGlmaWNhdGVTZXJ2aWNlID0gYXdhaXQgdGhpcy5DZXJ0aWZpY2F0ZSgpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmdldENlcnRpZmljYXRlcyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBjZXJ0aWZpY2F0ZXMke3JlcXVlc3QgPyBgIGZvciAke3JlcXVlc3QuaWR9YCA6IFwiXCJ9IGZvciBDQSAke3RoaXMuY2FDb25maWcuY2FOYW1lfWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBjZXJ0aWZpY2F0ZVNlcnZpY2UuZ2V0Q2VydGlmaWNhdGVzKHJlcXVlc3QgfHwge30sIHVzZXIpKS5yZXN1bHQ7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtyZXNwb25zZS5jZXJ0cy5sZW5ndGh9IGNlcnRpZmljYXRlczogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgICAgIHJldHVybiBkb01hcCA/IHJlc3BvbnNlLmNlcnRzLm1hcCgoYykgPT4gYy5QRU0pIDogcmVzcG9uc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBpbiB0aGUgQ0EuXG4gICAgICogQHN1bW1hcnkgUXVlcmllcyB0aGUgQ0EgaWRlbnRpdHkgc2VydmljZSB0byBmZXRjaCBhbGwgaWRlbnRpdGllcyBhbmQgcmV0dXJucyB0aGUgbGlzdCBhcyBGYWJyaWNJZGVudGl0eSBvYmplY3RzLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8RmFicmljSWRlbnRpdHlbXT59IFRoZSBsaXN0IG9mIGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBpbiB0aGUgQ0EuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0SWRlbnRpdGllcygpIHtcbiAgICAgICAgY29uc3QgaWRlbnRpdGllc1NlcnZpY2UgPSBhd2FpdCB0aGlzLklkZW50aXRpZXMoKTtcbiAgICAgICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0SWRlbnRpdGllcyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBJZGVudGl0aWVzIHVuZGVyIENBICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9YCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGlkZW50aXRpZXNTZXJ2aWNlLmdldEFsbChhd2FpdCB0aGlzLlVzZXIoKSkpLnJlc3VsdDtcbiAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCAke3Jlc3BvbnNlLmlkZW50aXRpZXMubGVuZ3RofSBJZGVudGl0aWVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmlkZW50aXRpZXM7XG4gICAgfVxuICAgIHBhcnNlRXJyb3IoZSkge1xuICAgICAgICBjb25zdCByZWdleHAgPSAvLipjb2RlOlxccyhcXGQrKS4qP21lc3NhZ2U6XFxzW1wiJ10oLispW1wiJ10vZ3M7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWMoZS5tZXNzYWdlKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnaXN0cmF0aW9uRXJyb3IoZSk7XG4gICAgICAgIGNvbnN0IFssIGNvZGUsIG1lc3NhZ2VdID0gbWF0Y2g7XG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcIjc0XCI6XG4gICAgICAgICAgICBjYXNlIFwiNzFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICBjYXNlIFwiMjBcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEF1dGhvcml6YXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdpc3RyYXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgYWZmaWxpYXRpb25zIGZyb20gdGhlIENBLlxuICAgICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGZvciB0aGUgbGlzdCBvZiBhZmZpbGlhdGlvbnMgYXZhaWxhYmxlIHVuZGVyIHRoZSBjb25maWd1cmVkIENBLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGFmZmlsaWF0aW9ucyByZXN1bHQgcGF5bG9hZC5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBZmZpbGlhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGFmZmlsaWF0aW9uU2VydmljZSA9IGF3YWl0IHRoaXMuQWZmaWxpYXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmdldEFmZmlsaWF0aW9ucyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBBZmZpbGlhdGlvbnMgdW5kZXIgQ0EgJHt0aGlzLmNhQ29uZmlnLmNhTmFtZX1gKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYWZmaWxpYXRpb25TZXJ2aWNlLmdldEFsbChhd2FpdCB0aGlzLlVzZXIoKSkpXG4gICAgICAgICAgICAucmVzdWx0O1xuICAgICAgICBsb2cuZGVidWcoYEZvdW5kICR7cmVzcG9uc2UuYS5sZW5ndGh9IEFmZmlsaWF0aW9uczogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlYWQgaWRlbnRpdHkgZGV0YWlscyBmcm9tIHRoZSBDQSBieSBlbnJvbGxtZW50IElELlxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbmQgdmFsaWRhdGVzIGEgc2luZ2xlIGlkZW50aXR5LCB0aHJvd2luZyBOb3RGb3VuZEVycm9yIHdoZW4gbWlzc2luZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZW5yb2xsbWVudElkIC0gRW5yb2xsbWVudCBJRCB0byBsb29rdXAuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxGYWJyaWNJZGVudGl0eT59IFRoZSBpZGVudGl0eSBkZXRhaWxzIHN0b3JlZCBpbiB0aGUgQ0EuXG4gICAgICovXG4gICAgYXN5bmMgcmVhZChlbnJvbGxtZW50SWQpIHtcbiAgICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLlVzZXIoKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGNhLm5ld0lkZW50aXR5U2VydmljZSgpLmdldE9uZShlbnJvbGxtZW50SWQsIHVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ291bGRuJ3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBDb3VsZG4ndCBmaW5kIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGEgbmV3IGlkZW50aXR5IHdpdGggdGhlIENBLlxuICAgICAqIEBzdW1tYXJ5IFN1Ym1pdHMgYSByZWdpc3RyYXRpb24gcmVxdWVzdCBmb3IgYSBuZXcgZW5yb2xsbWVudCBJRCwgcmV0dXJuaW5nIHRoZSBlbnJvbGxtZW50IHNlY3JldCB1cG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gbW9kZWwgLSBDcmVkZW50aWFscyBjb250YWluaW5nIHVzZXJOYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBpZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N1cGVyVXNlcj1mYWxzZV0gLSBXaGV0aGVyIHRvIHJlZ2lzdGVyIHRoZSBpZGVudGl0eSBhcyBhIHN1cGVyIHVzZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFthZmZpbGlhdGlvbj1cIlwiXSAtIEFmZmlsaWF0aW9uIHN0cmluZyAoZS5nLiwgb3JnMS5kZXBhcnRtZW50MSkuXG4gICAgICogQHBhcmFtIHtDQV9ST0xFIHwgc3RyaW5nfSBbdXNlclJvbGVdIC0gUm9sZSB0byBhc3NpZ24gdG8gdGhlIGlkZW50aXR5LlxuICAgICAqIEBwYXJhbSB7SUtleVZhbHVlQXR0cmlidXRlfSBbYXR0cnNdIC0gT3B0aW9uYWwgYXR0cmlidXRlcyB0byBhdHRhY2ggdG8gdGhlIGlkZW50aXR5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4RW5yb2xsbWVudHNdIC0gTWF4aW11bSBudW1iZXIgb2YgZW5yb2xsbWVudHMgYWxsb3dlZCBmb3IgdGhlIGlkZW50aXR5LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIGVucm9sbG1lbnQgc2VjcmV0IGZvciB0aGUgcmVnaXN0ZXJlZCBpZGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyByZWdpc3Rlcihtb2RlbCwgaXNTdXBlclVzZXIgPSBmYWxzZSwgYWZmaWxpYXRpb24gPSBcIlwiLCB1c2VyUm9sZSwgYXR0cnMsIG1heEVucm9sbG1lbnRzKSB7XG4gICAgICAgIGxldCByZWdpc3RyYXRpb247XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnJlZ2lzdGVyKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlck5hbWUsIHBhc3N3b3JkIH0gPSBtb2RlbDtcbiAgICAgICAgICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuVXNlcigpO1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgZW5yb2xsbWVudElEOiB1c2VyTmFtZSxcbiAgICAgICAgICAgICAgICBlbnJvbGxtZW50U2VjcmV0OiBwYXNzd29yZCxcbiAgICAgICAgICAgICAgICBhZmZpbGlhdGlvbjogYWZmaWxpYXRpb24sXG4gICAgICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgICAgIGF0dHJzOiBhdHRycyxcbiAgICAgICAgICAgICAgICBtYXhFbnJvbGxtZW50czogbWF4RW5yb2xsbWVudHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgY2EucmVnaXN0ZXIocHJvcHMsIHVzZXIpO1xuICAgICAgICAgICAgbG9nLmluZm8oYFJlZ2lzdHJhdGlvbiBmb3IgJHt1c2VyTmFtZX0gY3JlYXRlZCB3aXRoIHVzZXIgdHlwZSAke3VzZXJSb2xlID8/IFwiVW5kZWZpbmVkIFJvbGVcIn0gJHtpc1N1cGVyVXNlciA/IFwiYXMgc3VwZXIgdXNlclwiIDogXCJcIn1gKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gICAgfVxuICAgIHN0YXRpYyBpZGVudGl0eUZyb21FbnJvbGxtZW50KGVucm9sbG1lbnQsIG1zcElkKSB7XG4gICAgICAgIGNvbnN0IHsgY2VydGlmaWNhdGUsIGtleSwgcm9vdENlcnRpZmljYXRlIH0gPSBlbnJvbGxtZW50O1xuICAgICAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcihGYWJyaWNFbnJvbGxtZW50U2VydmljZSwge30pLmZvcih0aGlzLmlkZW50aXR5RnJvbUVucm9sbG1lbnQpO1xuICAgICAgICBsb2cuZGVidWcoYEdlbmVyYXRpbmcgSWRlbnRpdHkgZnJvbSBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfSBpbiBtc3AgJHttc3BJZH1gKTtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSBDcnlwdG9VdGlscy5mYWJyaWNJZEZyb21DZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7XG4gICAgICAgIGNvbnN0IGlkID0gQ3J5cHRvVXRpbHMuZW5jb2RlKGNsaWVudElkKTtcbiAgICAgICAgbG9nLmRlYnVnKGBJZGVudGl0eSAke2NsaWVudElkfSBhbmQgZW5jb2RlZElkICR7aWR9YCk7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpdHkoe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6IGNlcnRpZmljYXRlLFxuICAgICAgICAgICAgICAgIHByaXZhdGVLZXk6IGtleS50b0J5dGVzKCksXG4gICAgICAgICAgICAgICAgcm9vdENlcnRpZmljYXRlOiByb290Q2VydGlmaWNhdGUsXG4gICAgICAgICAgICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICAgICAgICAgICAgdXBkYXRlZE9uOiBub3csXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbXNwSWQ6IG1zcElkLFxuICAgICAgICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICAgICAgICB1cGRhdGVkT246IG5vdyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbnJvbGwgYW4gaWRlbnRpdHkgd2l0aCB0aGUgQ0EgdXNpbmcgYSByZWdpc3RyYXRpb24gc2VjcmV0LlxuICAgICAqIEBzdW1tYXJ5IEV4Y2hhbmdlcyB0aGUgZW5yb2xsbWVudCBJRCBhbmQgc2VjcmV0IGZvciBjZXJ0aWZpY2F0ZXMsIHJldHVybmluZyBhIGNvbnN0cnVjdGVkIElkZW50aXR5IG1vZGVsLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbnJvbGxtZW50SWQgLSBFbnJvbGxtZW50IElEIHRvIGVucm9sbC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uIC0gRW5yb2xsbWVudCBzZWNyZXQgcmV0dXJuZWQgYXQgcmVnaXN0cmF0aW9uIHRpbWUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBjcmVkZW50aWFscy5cbiAgICAgKi9cbiAgICBhc3luYyBlbnJvbGwoZW5yb2xsbWVudElkLCByZWdpc3RyYXRpb24pIHtcbiAgICAgICAgbGV0IGlkZW50aXR5O1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5lbnJvbGwpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICAgICAgICBsb2cuZGVidWcoYEVucm9sbGluZyAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGVucm9sbG1lbnQgPSBhd2FpdCBjYS5lbnJvbGwoe1xuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRJRDogZW5yb2xsbWVudElkLFxuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRTZWNyZXQ6IHJlZ2lzdHJhdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWRlbnRpdHkgPSBGYWJyaWNFbnJvbGxtZW50U2VydmljZS5pZGVudGl0eUZyb21FbnJvbGxtZW50KGVucm9sbG1lbnQsIHRoaXMuY2FDb25maWcuY2FOYW1lKTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBTdWNjZXNzZnVsbHkgZW5yb2xsZWQgJHtlbnJvbGxtZW50SWR9IHVuZGVyICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9IGFzICR7aWRlbnRpdHkuaWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IGlkZW50aXR5IGluIG9uZSBzdGVwLlxuICAgICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhIG5ldyBlbnJvbGxtZW50IElEIHdpdGggdGhlIENBIGFuZCBpbW1lZGlhdGVseSBleGNoYW5nZXMgdGhlIHNlY3JldCB0byBlbnJvbGwsIHJldHVybmluZyB0aGUgY3JlYXRlZCBJZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBtb2RlbCAtIENyZWRlbnRpYWxzIGZvciB0aGUgbmV3IGlkZW50aXR5IGNvbnRhaW5pbmcgdXNlck5hbWUgYW5kIHBhc3N3b3JkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3VwZXJVc2VyPWZhbHNlXSAtIFdoZXRoZXIgdG8gcmVnaXN0ZXIgdGhlIGlkZW50aXR5IGFzIGEgc3VwZXIgdXNlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2FmZmlsaWF0aW9uPVwiXCJdIC0gQWZmaWxpYXRpb24gc3RyaW5nIChlLmcuLCBvcmcxLmRlcGFydG1lbnQxKS5cbiAgICAgKiBAcGFyYW0ge0NBX1JPTEUgfCBzdHJpbmd9IFt1c2VyUm9sZV0gLSBSb2xlIHRvIGFzc2lnbiB0byB0aGUgaWRlbnRpdHkuXG4gICAgICogQHBhcmFtIHtJS2V5VmFsdWVBdHRyaWJ1dGV9IFthdHRyc10gLSBPcHRpb25hbCBhdHRyaWJ1dGVzIHRvIGF0dGFjaCB0byB0aGUgaWRlbnRpdHkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFttYXhFbnJvbGxtZW50c10gLSBNYXhpbXVtIG51bWJlciBvZiBlbnJvbGxtZW50cyBhbGxvd2VkIGZvciB0aGUgaWRlbnRpdHkuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyByZWdpc3RlckFuZEVucm9sbChtb2RlbCwgaXNTdXBlclVzZXIgPSBmYWxzZSwgYWZmaWxpYXRpb24gPSBcIlwiLCB1c2VyUm9sZSwgYXR0cnMsIG1heEVucm9sbG1lbnRzKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHRoaXMucmVnaXN0ZXIobW9kZWwsIGlzU3VwZXJVc2VyLCBhZmZpbGlhdGlvbiwgdXNlclJvbGUsIGF0dHJzLCBtYXhFbnJvbGxtZW50cyk7XG4gICAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IG1vZGVsO1xuICAgICAgICByZXR1cm4gdGhpcy5lbnJvbGwodXNlck5hbWUsIHJlZ2lzdHJhdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldm9rZXMgdGhlIGVucm9sbG1lbnQgb2YgYW4gaWRlbnRpdHkgd2l0aCB0aGUgc3BlY2lmaWVkIGVucm9sbG1lbnQgSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW5yb2xsbWVudElkIC0gVGhlIGVucm9sbG1lbnQgSUQgb2YgdGhlIGlkZW50aXR5IHRvIGJlIHJldm9rZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzdWx0IG9mIHRoZSByZXZvY2F0aW9uIG9wZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge05vdEZvdW5kRXJyb3J9IElmIHRoZSBlbnJvbGxtZW50IHdpdGggdGhlIHNwZWNpZmllZCBJRCBkb2VzIG5vdCBleGlzdC5cbiAgICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiB0aGVyZSBpcyBhbiBlcnJvciBkdXJpbmcgdGhlIHJldm9jYXRpb24gcHJvY2Vzcy5cbiAgICAgKi9cbiAgICBhc3luYyByZXZva2UoZW5yb2xsbWVudElkKSB7XG4gICAgICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgdGhpcy5yZWFkKGVucm9sbG1lbnRJZCk7XG4gICAgICAgIGlmICghaWRlbnRpdHkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ291bGQgbm90IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfWApO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgY2EucmV2b2tlKHsgZW5yb2xsbWVudElEOiBpZGVudGl0eS5pZCwgcmVhc29uOiBcIlVzZXIgRGVsZXRhdGlvblwiIH0sIHVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IHJldm9rZSBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVJtRmljbWxqUlc1eWIyeHNiV1Z1ZEZObGNuWnBZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdlkyeHBaVzUwTDNObGNuWnBZMlZ6TDBaaFluSnBZMFZ1Y205c2JHMWxiblJUWlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzWjBKQlFXZENMRTFCUVUwc2EwSkJRV3RDTEVOQlFVTTdRVUZYYUVRc1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJTeDVRMEZCYjBNN1FVRkRka1FzVDBGQlR5eEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRjRVFzVDBGQlR5eEZRVU5NTEdGQlFXRXNSVUZEWWl4aFFVRmhMRVZCUTJJc1lVRkJZU3hIUVVOa0xFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkRha01zVDBGQlR5eEZRVUZGTEZOQlFWTXNSVUZCUlN4elFrRkJhVUk3UVVGRmNrTXNUMEZCVHl4RlFVRkZMRmRCUVZjc1JVRkJSU3gxUWtGQmEwSTdRVUZQZUVNc1QwRkJUeXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMR2xEUVVFMFFqdEJRVU40UkN4UFFVRlBMRVZCUVVVc1YwRkJWeXhGUVVGRkxFOUJRVThzUlVGQlJTeE5RVUZOTEcxQ1FVRnRRaXhEUVVGRE8wRkJSWHBFT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1EwRkJUaXhKUVVGWkxHZENRVTFZTzBGQlRrUXNWMEZCV1N4blFrRkJaMEk3U1VGRE1VSXNhVU5CUVdFc1EwRkJRVHRKUVVOaUxIVkRRVUZ0UWl4RFFVRkJPMGxCUTI1Q0xIRkRRVUZwUWl4RFFVRkJPMGxCUTJwQ0xHbERRVUZoTEVOQlFVRTdTVUZEWWl4dFEwRkJaU3hEUVVGQk8wRkJRMnBDTEVOQlFVTXNSVUZPVnl4blFrRkJaMElzUzBGQmFFSXNaMEpCUVdkQ0xGRkJUVE5DTzBGQmFVSkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzUTBGQlRpeEpRVUZaTEhOQ1FWRllPMEZCVWtRc1YwRkJXU3h6UWtGQmMwSTdTVUZEYUVNc2FVVkJRWFZETEVOQlFVRTdTVUZEZGtNc2FVWkJRWFZFTEVOQlFVRTdTVUZEZGtRc01rVkJRV2xFTEVOQlFVRTdTVUZEYWtRc1owVkJRWE5ETEVOQlFVRTdTVUZEZEVNc2EwUkJRWGRDTEVOQlFVRTdTVUZEZUVJc1owVkJRWE5ETEVOQlFVRTdTVUZEZEVNc1owUkJRWE5DTEVOQlFVRTdRVUZEZUVJc1EwRkJReXhGUVZKWExITkNRVUZ6UWl4TFFVRjBRaXh6UWtGQmMwSXNVVUZSYWtNN1FVRkZSRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBkQk9FSkhPMEZCUTBnc1RVRkJUU3hQUVVGUExIVkNRVUYzUWl4VFFVRlJMRmRCUVZjN1NVRmhkRVFzV1VGQmIwSXNVVUZCYTBJN1VVRkRjRU1zVTBGQlV5eERRVUZETEdOQlFXTXNRMEZEZEVJc1VVRkJVU3hEUVVGRExFZEJRVWM3V1VGRFZpeERRVUZETEVOQlFVTTdaMEpCUTBVc1VVRkJVU3hGUVVGRkxFdEJRVXM3WjBKQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR6dG5Ra0ZEZWtJc1NVRkJTU3hGUVVGRkxGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1R0blFrRkRka0lzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWVHRuUWtGRE9VSXNSMEZCUnl4RlFVRkZMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXp0aFFVTTVRanRaUVVOSUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlEyUXNRMEZCUXp0UlFVTkdMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJXbFVzWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCVlR0SlFXRjBReXhEUVVGRE8wbEJSVk1zUzBGQlN5eERRVUZETEVsQlFVazdVVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOb1F5eE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRE1VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM0JETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2QwSkJRWGRDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRM1JFTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2EwTkJRV3RETEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzVFVGQlRTeFhRVUZYTEVkQlFVY3NUVUZCVFN4VFFVRlRMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRka1VzU1VGQlNTeEhRVUYxUWl4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTlVMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZEV0N4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeHpRMEZCYzBNc1RVRkJUU3h4UkVGQmNVUXNRMEZEYkVjc1EwRkJRenRaUVVOS0xFTkJRVU03V1VGRFJDeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMREJDUVVFd1FpeExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpkRExFZEJRVWNzUjBGQlJ5eE5RVUZOTEZOQlFWTXNRMEZCUXl3d1FrRkJNRUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTXhSQ3hEUVVGRE8yRkJRVTBzUTBGQlF6dFpRVU5PTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUTFBc2EwTkJRV3RETEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZEZGtVc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRFJDeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRFpDUVVFMlFpeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJwRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUwc1JVRkJSVHRaUVVOMlJTeEhRVUZITzFOQlEwb3NRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZVeXhMUVVGTExFTkJRVU1zUlVGQlJUdFJRVU5vUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUXpWQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnNReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFGQlJUTkRMR2RHUVVGblJqdFJRVU5vUml4M1EwRkJkME03VVVGRGVFTXNTVUZCU1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEhRVUZwUWl4RFFVRkRPMUZCUldwRUxFMUJRVTBzU1VGQlNTeEhRVUZKTEZsQlFYbENMRU5CUVVNc1EwRkJReXhEUVVGWExFTkJRVU03VVVGRGNrUXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhyUTBGQmEwTXNTVUZCU1N4VlFVRlZMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZGTTBVc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeFRRVUZUTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM3BFTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc05rSkJRVFpDTEUxQlFVMHNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRemxFTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3huUWtGQlowSXNRMEZETlVJc1IwRkJSeXhGUVVOSU8xbEJRMFVzV1VGQldTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRM1JETEUxQlFVMDdVMEZEVHl4RlFVTm1MRTFCUVUwc1EwRkRVQ3hEUVVGRE8xRkJRMFlzVDBGQlR5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUTJwQ0xFTkJRVU03U1VGRlV5eExRVUZMTEVOQlFVTXNUVUZCVFR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRM0JETEUxQlFVMHNSVUZCUlN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF6TkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWtzUlVGQlZTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03VVVGREwwTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM0pDTEVOQlFVTTdTVUZGVXl4TFFVRkxMRU5CUVVNc1YwRkJWenRSUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFqdFpRVU14UWl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGRE1VVXNUMEZCVHl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdTVUZEYWtNc1EwRkJRenRKUVVWVExFdEJRVXNzUTBGQlF5eFpRVUZaTzFGQlF6RkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENPMWxCUXpGQ0xFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc2NVSkJRWEZDTEVWQlFVVXNRMEZCUXp0UlFVTjBSU3hQUVVGUExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVOcVF5eERRVUZETzBsQlJWTXNTMEZCU3l4RFFVRkRMRlZCUVZVN1VVRkRlRUlzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFTkJRVU03VVVGRGFFVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRE8wbEJRemxDTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTQ3hMUVVGTExFTkJRVU1zWlVGQlpTeERRVU51UWl4UFFVRm5ReXhGUVVOb1F5eExRVUZMTEVkQlFVY3NTVUZCU1R0UlFVVmFMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRGNFUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZETDBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzFGQlF5OURMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRMUFzTUVKQlFUQkNMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVjBGQlZ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVNdlJpeERRVUZETzFGQlEwWXNUVUZCVFN4UlFVRlJMRWRCUVhkQ0xFTkJRM0JETEUxQlFVMHNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeERRVUZETEU5QlFVOHNTVUZCU1N4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRemxFTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTFRc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeFRRVUZUTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hyUWtGQmEwSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVU16UlN4RFFVRkRPMUZCUTBZc1QwRkJUeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXp0SlFVTTNSQ3hEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOSUxFdEJRVXNzUTBGQlF5eGhRVUZoTzFGQlEycENMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRGJFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRemRETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2EwTkJRV3RETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU53UlN4TlFVRk5MRkZCUVZFc1IwRkJjVUlzUTBGRGFrTXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGRGJFUXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRWQ3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVU5RTEZOQlFWTXNVVUZCVVN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlF6bEZMRU5CUVVNN1VVRkRSaXhQUVVGUExGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWVExGVkJRVlVzUTBGQlF5eERRVUZSTzFGQlF6TkNMRTFCUVUwc1RVRkJUU3hIUVVGSExESkRRVUV5UXl4RFFVRkRPMUZCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzSkRMRWxCUVVrc1EwRkJReXhMUVVGTE8xbEJRVVVzVDBGQlR5eEpRVUZKTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6VkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRhRU1zVVVGQlVTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTmlMRXRCUVVzc1NVRkJTU3hEUVVGRE8xbEJRMVlzUzBGQlN5eEpRVUZKTzJkQ1FVTlFMRTlCUVU4c1NVRkJTU3hoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEY0VNc1MwRkJTeXhKUVVGSk8yZENRVU5RTEU5QlFVOHNTVUZCU1N4clFrRkJhMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTjZRenRuUWtGRFJTeFBRVUZQTEVsQlFVa3NhVUpCUVdsQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVNc1EwRkJRenRKUVVOSUxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGdzUzBGQlN5eERRVUZETEdWQlFXVTdVVUZEYmtJc1RVRkJUU3hyUWtGQmEwSXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dFJRVU55UkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03VVVGREwwTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXh2UTBGQmIwTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzUkZMRTFCUVUwc1VVRkJVU3hIUVVGSExFTkJRVU1zVFVGQlRTeHJRa0ZCYTBJc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOc1JTeE5RVUZOTEVOQlFVTTdVVUZEVml4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVOUUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MR3RDUVVGclFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFTkJRM1pGTEVOQlFVTTdVVUZEUml4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVzlDTzFGQlF6ZENMRTFCUVUwc1JVRkJSU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJReTlDTEVsQlFVa3NUVUZCZDBJc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVOQlFVTTdXVUZEU0N4TlFVRk5MRWRCUVVjc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNCRkxFTkJRVU03VVVGQlF5eFBRVUZQTEVOQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTJoQ0xFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlEzSkNMRzlEUVVGdlF5eFpRVUZaTEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUTNwRUxFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUE8xbEJRMnBDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xHOURRVUZ2UXl4WlFVRlpMRXRCUVVzc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkRhRVlzUTBGQlF6dFJRVVZLTEU5QlFVOHNUVUZCVFN4RFFVRkRMRTFCUVhkQ0xFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPMDlCVlVjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVU5hTEV0QlFXdENMRVZCUTJ4Q0xHTkJRWFZDTEV0QlFVc3NSVUZETlVJc1kwRkJjMElzUlVGQlJTeEZRVU40UWl4UlFVRXlRaXhGUVVNelFpeExRVUV3UWl4RlFVTXhRaXhqUVVGMVFqdFJRVVYyUWl4SlFVRkpMRmxCUVc5Q0xFTkJRVU03VVVGRGVrSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJRM2hETEVsQlFVa3NRMEZCUXp0WlFVTklMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNKRExFMUJRVTBzUlVGQlJTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRek5DTEUxQlFVMHNTVUZCU1N4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzFsQlF5OUNMRTFCUVUwc1MwRkJTeXhIUVVGSE8yZENRVU5hTEZsQlFWa3NSVUZCUlN4UlFVRnJRanRuUWtGRGFFTXNaMEpCUVdkQ0xFVkJRVVVzVVVGQlVUdG5Ra0ZETVVJc1YwRkJWeXhGUVVGRkxGZEJRVmM3WjBKQlEzaENMRkZCUVZFc1JVRkJSU3hSUVVGUk8yZENRVU5zUWl4TFFVRkxMRVZCUVVVc1MwRkJTenRuUWtGRFdpeGpRVUZqTEVWQlFVVXNZMEZCWXp0aFFVTllMRU5CUVVNN1dVRkRkRUlzV1VGQldTeEhRVUZITEUxQlFVMHNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZET1VNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGRFRpeHZRa0ZCYjBJc1VVRkJVU3d5UWtGQk1rSXNVVUZCVVN4SlFVRkpMR2RDUVVGblFpeEpRVUZKTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZETlVnc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGQlF5eFBRVUZQTEVOQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTJoQ0xFMUJRVTBzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNelFpeERRVUZETzFGQlEwUXNUMEZCVHl4WlFVRlpMRU5CUVVNN1NVRkRkRUlzUTBGQlF6dEpRVVZUTEUxQlFVMHNRMEZCUXl4elFrRkJjMElzUTBGRGNrTXNWVUZCTWtJc1JVRkRNMElzUzBGQllUdFJRVVZpTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1IwRkJSeXhGUVVGRkxHVkJRV1VzUlVGQlJTeEhRVUZITEZWQlFWVXNRMEZCUXp0UlFVTjZSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMSFZDUVVGMVFpeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkRkRVFzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVNMVFpeERRVUZETzFGQlEwWXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3gzUTBGQmQwTXNWMEZCVnl4WFFVRlhMRXRCUVVzc1JVRkJSU3hEUVVOMFJTeERRVUZETzFGQlEwWXNUVUZCVFN4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMnhGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZUVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eFpRVUZaTEZGQlFWRXNhMEpCUVd0Q0xFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEZEVRc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVTjJRaXhQUVVGUExFbEJRVWtzVVVGQlVTeERRVUZETzFsQlEyeENMRVZCUVVVc1JVRkJSU3hGUVVGRk8xbEJRMDRzVjBGQlZ5eEZRVUZGTzJkQ1FVTllMRVZCUVVVc1JVRkJSU3hGUVVGRk8yZENRVU5PTEZkQlFWY3NSVUZCUlN4WFFVRlhPMmRDUVVONFFpeFZRVUZWTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTlCUVU4c1JVRkJSVHRuUWtGRGVrSXNaVUZCWlN4RlFVRkZMR1ZCUVdVN1owSkJRMmhETEZOQlFWTXNSVUZCUlN4SFFVRkhPMmRDUVVOa0xGTkJRVk1zUlVGQlJTeEhRVUZITzJGQlEyWTdXVUZEUkN4TFFVRkxMRVZCUVVVc1MwRkJTenRaUVVOYUxGTkJRVk1zUlVGQlJTeEhRVUZITzFsQlEyUXNVMEZCVXl4RlFVRkZMRWRCUVVjN1UwRkRaaXhEUVVGRExFTkJRVU03U1VGRFRDeERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBnc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZ2UWl4RlFVRkZMRmxCUVc5Q08xRkJRM0pFTEVsQlFVa3NVVUZCYTBJc1EwRkJRenRSUVVOMlFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRU1zU1VGQlNTeERRVUZETzFsQlEwZ3NUVUZCVFN4RlFVRkZMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETTBJc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eGhRVUZoTEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRka01zVFVGQlRTeFZRVUZWTEVkQlFXOUNMRTFCUVUwc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZEYkVRc1dVRkJXU3hGUVVGRkxGbEJRVms3WjBKQlF6RkNMR2RDUVVGblFpeEZRVUZGTEZsQlFWazdZVUZETDBJc1EwRkJReXhEUVVGRE8xbEJRMGdzVVVGQlVTeEhRVUZITEhWQ1FVRjFRaXhEUVVGRExITkNRVUZ6UWl4RFFVTjJSQ3hWUVVGVkxFVkJRMVlzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUTNKQ0xFTkJRVU03V1VGRFJpeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVTk9MSGxDUVVGNVFpeFpRVUZaTEZWQlFWVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFOUJRVThzVVVGQlVTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVTjRSaXhEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVUZETEU5QlFVOHNRMEZCVFN4RlFVRkZMRU5CUVVNN1dVRkRhRUlzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5DTEVOQlFVTTdVVUZEUkN4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVUTdPenM3T3pzN096czdUMEZWUnp0SlFVTklMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZEY2tJc1MwRkJhMElzUlVGRGJFSXNZMEZCZFVJc1MwRkJTeXhGUVVNMVFpeGpRVUZ6UWl4RlFVRkZMRVZCUTNoQ0xGRkJRVEpDTEVWQlF6TkNMRXRCUVRCQ0xFVkJRekZDTEdOQlFYVkNPMUZCUlhaQ0xFMUJRVTBzV1VGQldTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkRkRU1zUzBGQlN5eEZRVU5NTEZkQlFWY3NSVUZEV0N4WFFVRlhMRVZCUTFnc1VVRkJVU3hGUVVOU0xFdEJRVXNzUlVGRFRDeGpRVUZqTEVOQlEyWXNRMEZCUXp0UlFVTkdMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZETTBJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFXdENMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU03U1VGRGRrUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdUMEZUUnp0SlFVTklMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQmIwSTdVVUZETDBJc1RVRkJUU3hGUVVGRkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRNMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGREwwSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eFJRVUZSTzFsQlExZ3NUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzY1VOQlFYRkRMRmxCUVZrc1JVRkJSU3hEUVVOd1JDeERRVUZETzFGQlEwb3NTVUZCU1N4TlFVRjNRaXhEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXp0WlFVTklMRTFCUVUwc1IwRkJSeXhOUVVGTkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlEzUkNMRVZCUVVVc1dVRkJXU3hGUVVGRkxGRkJRVkVzUTBGQlF5eEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEVWQlEzaEVMRWxCUVVrc1EwRkRUQ3hEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVUZETEU5QlFVOHNRMEZCVlN4RlFVRkZMRU5CUVVNN1dVRkRjRUlzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc2RVTkJRWFZETEZsQlFWa3NTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkROVVFzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVTg3V1VGRGFrSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzZFVOQlFYVkRMRmxCUVZrc1MwRkJTeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVOdVJpeERRVUZETzFGQlEwb3NUMEZCVHl4TlFVRk5MRU5CUVVNN1NVRkRhRUlzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUVaaFluSnBZME5CVTJWeWRtbGpaWE1nWm5KdmJTQmNJbVpoWW5KcFl5MWpZUzFqYkdsbGJuUmNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFRm1abWxzYVdGMGFXOXVVMlZ5ZG1salpTeGNiaUFnU1dSbGJuUnBkSGxUWlhKMmFXTmxMRnh1SUNCSlJXNXliMnhzVW1WemNHOXVjMlVzWEc0Z0lFbFNaV2RwYzNSbGNsSmxjWFZsYzNRc1hHNGdJRWxUWlhKMmFXTmxVbVZ6Y0c5dWMyVXNYRzRnSUZSTVUwOXdkR2x2Ym5Nc1hHNTlJR1p5YjIwZ1hDSm1ZV0p5YVdNdFkyRXRZMnhwWlc1MFhDSTdYRzVwYlhCdmNuUWdleUJWYzJWeUlIMGdabkp2YlNCY0ltWmhZbkpwWXkxamIyMXRiMjVjSWp0Y2JtbHRjRzl5ZENCN0lFTkJRMjl1Wm1sbkxDQkRjbVZrWlc1MGFXRnNjeUI5SUdaeWIyMGdYQ0l1TGk4dUxpOXphR0Z5WldRdmRIbHdaWE5jSWp0Y2JtbHRjRzl5ZENCN0lFbGtaVzUwYVhSNUlIMGdabkp2YlNCY0lpNHVMeTR1TDNOb1lYSmxaQzl0YjJSbGJDOUpaR1Z1ZEdsMGVWd2lPMXh1YVcxd2IzSjBJSHNnUVhWMGFHOXlhWHBoZEdsdmJrVnljbTl5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQkRiMjVtYkdsamRFVnljbTl5TEZ4dUlDQkpiblJsY201aGJFVnljbTl5TEZ4dUlDQk9iM1JHYjNWdVpFVnljbTl5TEZ4dWZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmlMV1JsWTI5eVlYUnZjbk5jSWp0Y2JtbHRjRzl5ZENCN0lFTnZjbVZWZEdsc2N5QjlJR1p5YjIwZ1hDSXVMaTkxZEdsc2Mxd2lPMXh1YVcxd2IzSjBJSHNnUTBGZlVrOU1SU0I5SUdaeWIyMGdYQ0l1TDJOdmJuTjBZVzUwYzF3aU8xeHVhVzF3YjNKMElIc2dRM0o1Y0hSdlZYUnBiSE1nZlNCbWNtOXRJRndpTGk0dlkzSjVjSFJ2WENJN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JEWlhKMGFXWnBZMkYwWlZKbGMzQnZibk5sTEZ4dUlDQkdZV0p5YVdOSlpHVnVkR2wwZVN4Y2JpQWdSMlYwUTJWeWRHbG1hV05oZEdWelVtVnhkV1Z6ZEN4Y2JpQWdTV1JsYm5ScGRIbFNaWE53YjI1elpTeGNibjBnWm5KdmJTQmNJaTR1THk0dUwzTm9ZWEpsWkM5bVlXSnlhV010ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUZKbFoybHpkSEpoZEdsdmJrVnljbTl5SUgwZ1puSnZiU0JjSWk0dUx5NHVMM05vWVhKbFpDOWxjbkp2Y25OY0lqdGNibWx0Y0c5eWRDQjdJRXh2WjJkbFpFTnNZWE56TENCTWIyZG5hVzVuSUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5c2IyZG5hVzVuWENJN1hHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVoNWNHVnliR1ZrWjJWeUlFWmhZbkpwWXlCRFFTQnBaR1Z1ZEdsMGVTQjBlWEJsY3k1Y2JpQXFJRUJ6ZFcxdFlYSjVJRVZ1ZFcxbGNtRjBaWE1nZEdobElITjFjSEJ2Y25SbFpDQnBaR1Z1ZEdsMGVTQjBlWEJsY3lCeVpXTnZaMjVwZW1Wa0lHSjVJRVpoWW5KcFl5QkRRU0JtYjNJZ2NtVm5hWE4wY21GMGFXOXVJR0Z1WkNCcFpHVnVkR2wwZVNCdFlXNWhaMlZ0Wlc1MExseHVJQ29nUUdWdWRXMGdlM04wY21sdVozMWNiaUFxSUVCeVpXRmtiMjVzZVZ4dUlDb2dRRzFsYldKbGNrOW1JRzF2WkhWc1pUcG1iM0l0Wm1GaWNtbGpMbU5zYVdWdWRGeHVJQ292WEc1bGVIQnZjblFnWlc1MWJTQklSa05CU1dSbGJuUnBkSGxVZVhCbElIdGNiaUFnVUVWRlVpQTlJRndpY0dWbGNsd2lMRnh1SUNCUFVrUkZVa1ZTSUQwZ1hDSnZjbVJsY21WeVhDSXNYRzRnSUVOTVNVVk9WQ0E5SUZ3aVkyeHBaVzUwWENJc1hHNGdJRlZUUlZJZ1BTQmNJblZ6WlhKY0lpeGNiaUFnUVVSTlNVNGdQU0JjSW1Ga2JXbHVYQ0lzWEc1OVhHNHZLaXBjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJMWlhrdmRtRnNkV1VnWVhSMGNtbGlkWFJsSUhWelpXUWdaSFZ5YVc1bklFTkJJSEpsWjJsemRISmhkR2x2Ymk1Y2JpQXFJRUJ6ZFcxdFlYSjVJRkpsY0hKbGMyVnVkSE1nWVc0Z1lYUjBjbWxpZFhSbElHVnVkSEo1SUhSb1lYUWdZMkZ1SUdKbElHRjBkR0ZqYUdWa0lIUnZJR0VnUm1GaWNtbGpJRU5CSUdsa1pXNTBhWFI1SUdSMWNtbHVaeUJ5WldkcGMzUnlZWFJwYjI0c0lHOXdkR2x2Ym1Gc2JIa2diV0Z5YTJsdVp5QnBkQ0JtYjNJZ2FXNWpiSFZ6YVc5dUlHbHVJR1ZqWlhKMExseHVJQ29nUUdsdWRHVnlabUZqWlNCSlMyVjVWbUZzZFdWQmRIUnlhV0oxZEdWY2JpQXFJRUIwWlcxd2JHRjBaU0JVWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaU0F0SUVGMGRISnBZblYwWlNCdVlXMWxMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhaaGJIVmxJQzBnUVhSMGNtbGlkWFJsSUhaaGJIVmxMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYlpXTmxjblJkSUMwZ1YyaGxkR2hsY2lCMGFHVWdZWFIwY21saWRYUmxJSE5vYjNWc1pDQmlaU0JwYm1Oc2RXUmxaQ0JwYmlCMGFHVWdaVzV5YjJ4c2JXVnVkQ0JqWlhKMGFXWnBZMkYwWlNBb1JVTmxjblFwTGx4dUlDb2dRRzFsYldKbGNrOW1JRzF2WkhWc1pUcG1iM0l0Wm1GaWNtbGpMbU5zYVdWdWRGeHVJQ292WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsTFpYbFdZV3gxWlVGMGRISnBZblYwWlNCN1hHNGdJRzVoYldVNklITjBjbWx1Wnp0Y2JpQWdkbUZzZFdVNklITjBjbWx1Wnp0Y2JpQWdaV05sY25RL09pQmliMjlzWldGdU8xeHVmVnh1WEc0dktpcGNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQlRkR0Z1WkdGeVpDQkdZV0p5YVdNZ1EwRWdhV1JsYm5ScGRIa2dZWFIwY21saWRYUmxJR3RsZVhNdVhHNGdLaUJBYzNWdGJXRnllU0JGYm5WdFpYSmhkR1Z6SUhkbGJHd3RhMjV2ZDI0Z1JtRmljbWxqSUVOQklHRjBkSEpwWW5WMFpTQnJaWGx6SUhSb1lYUWdZMkZ1SUdKbElHRnpjMmxuYm1Wa0lIUnZJR2xrWlc1MGFYUnBaWE1nWm05eUlHUmxiR1ZuWVhScGIyNXpJR0Z1WkNCd1pYSnRhWE56YVc5dWN5NWNiaUFxSUVCbGJuVnRJSHR6ZEhKcGJtZDlYRzRnS2lCQWNtVmhaRzl1YkhsY2JpQXFJRUJ0WlcxaVpYSlBaaUJ0YjJSMWJHVTZabTl5TFdaaFluSnBZeTVqYkdsbGJuUmNiaUFxTDF4dVpYaHdiM0owSUdWdWRXMGdTRVpEUVVsa1pXNTBhWFI1UVhSMGNtbGlkWFJsY3lCN1hHNGdJRWhHVWtWSFNWTlVVa0ZTVWs5TVJWTWdQU0JjSW1obUxsSmxaMmx6ZEhKaGNpNVNiMnhsYzF3aUxGeHVJQ0JJUmxKRlIwbFRWRkpCVWtSRlRFVkhRVlJGVWs5TVJWTWdQU0JjSW1obUxsSmxaMmx6ZEhKaGNpNUVaV3hsWjJGMFpWSnZiR1Z6WENJc1hHNGdJRWhHVWtWSFNWTlVVa0ZTUVZSVVVrbENWVlJGVXlBOUlGd2lhR1l1VW1WbmFYTjBjbUZ5TGtGMGRISnBZblYwWlhOY0lpeGNiaUFnU0VaSlRsUkZVazFGUkVsQlZFVkRRU0E5SUZ3aWFHWXVTVzUwWlhKdFpXUnBZWFJsUTBGY0lpeGNiaUFnU0VaU1JWWlBTMFZTSUQwZ1hDSm9aaTVTWlhadmEyVnlYQ0lzWEc0Z0lFaEdRVVpHU1V4SlFWUkpUMDVOUjFJZ1BTQmNJbWhtTGtGbVptbHNhV0YwYVc5dVRXZHlYQ0lzWEc0Z0lFaEdSMFZPUTFKTUlEMGdYQ0pvWmk1SFpXNURVa3hjSWl4Y2JuMWNibHh1THlvcVhHNGdLaUJBWkdWelkzSnBjSFJwYjI0Z1UyVnlkbWxqWlNCM2NtRndjR1Z5SUdadmNpQnBiblJsY21GamRHbHVaeUIzYVhSb0lHRWdSbUZpY21saklFTkJMbHh1SUNvZ1FITjFiVzFoY25rZ1VISnZkbWxrWlhNZ2FHbG5hQzFzWlhabGJDQnZjR1Z5WVhScGIyNXpJR1p2Y2lCdFlXNWhaMmx1WnlCcFpHVnVkR2wwYVdWeklHRm5ZV2x1YzNRZ1lTQkllWEJsY214bFpHZGxjaUJHWVdKeWFXTWdRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TENCcGJtTnNkV1JwYm1jZ2NtVm5hWE4wY21GMGFXOXVMQ0JsYm5KdmJHeHRaVzUwTENCeVpYWnZZMkYwYVc5dUxDQmhibVFnWVdSdGFXNXBjM1J5WVhScGRtVWdjWFZsY21sbGN5NGdSVzVqWVhCemRXeGhkR1Z6SUd4dmQyVnlMV3hsZG1Wc0lFWmhZbkpwWXlCRFFTQmpiR2xsYm5RZ1kyRnNiSE1nZDJsMGFDQmpiMjV6YVhOMFpXNTBJR3h2WjJkcGJtY2dZVzVrSUdWeWNtOXlJRzFoY0hCcGJtY3VYRzRnS2lCQWNHRnlZVzBnZTBOQlEyOXVabWxuZlNCallVTnZibVpwWnlBdElFTnZibTVsWTNScGIyNGdZVzVrSUZSTVV5QmpiMjVtYVdkMWNtRjBhVzl1SUdadmNpQjBhR1VnZEdGeVoyVjBJRU5CTGx4dUlDb2dRR05zWVhOeklFWmhZbkpwWTBWdWNtOXNiRzFsYm5SVFpYSjJhV05sWEc0Z0tpQkFaWGhoYlhCc1pWeHVJQ29nTHk4Z1VtVm5hWE4wWlhJZ1lXNWtJR1Z1Y205c2JDQmhJRzVsZHlCMWMyVnlYRzRnS2lCamIyNXpkQ0J6ZG1NZ1BTQnVaWGNnUm1GaWNtbGpSVzV5YjJ4c2JXVnVkRk5sY25acFkyVW9lMXh1SUNvZ0lDQjFjbXc2SUNkb2RIUndjem92TDJ4dlkyRnNhRzl6ZERvM01EVTBKeXhjYmlBcUlDQWdZMkZPWVcxbE9pQW5UM0puTVVOQkp5eGNiaUFxSUNBZ2RHeHpPaUI3SUhSeWRYTjBaV1JTYjI5MGN6b2dXeWN2Y0dGMGFDOTBieTlqWVM1d1pXMG5YU3dnZG1WeWFXWjVPaUJtWVd4elpTQjlMRnh1SUNvZ0lDQmpZVU5sY25RNklDY3ZjR0YwYUM5MGJ5OWhaRzFwYmk5alpYSjBSR2x5Snl4Y2JpQXFJQ0FnWTJGTFpYazZJQ2N2Y0dGMGFDOTBieTloWkcxcGJpOXJaWGxFYVhJblhHNGdLaUI5S1R0Y2JpQXFJR0YzWVdsMElITjJZeTV5WldkcGMzUmxjaWg3SUhWelpYSk9ZVzFsT2lBbllXeHBZMlVuTENCd1lYTnpkMjl5WkRvZ0ozTXpZM0l6ZENjZ2ZTd2dabUZzYzJVc0lDZHZjbWN4TG1SbGNHRnlkRzFsYm5ReEp5d2dRMEZmVWs5TVJTNVZVMFZTS1R0Y2JpQXFJR052Ym5OMElHbGtJRDBnWVhkaGFYUWdjM1pqTG1WdWNtOXNiQ2duWVd4cFkyVW5MQ0FuY3pOamNqTjBKeWs3WEc0Z0tpQkFiV1Z5YldGcFpGeHVJQ29nYzJWeGRXVnVZMlZFYVdGbmNtRnRYRzRnS2lBZ0lHRjFkRzl1ZFcxaVpYSmNiaUFxSUNBZ2NHRnlkR2xqYVhCaGJuUWdRWEJ3WEc0Z0tpQWdJSEJoY25ScFkybHdZVzUwSUZOMll5QmhjeUJHWVdKeWFXTkZibkp2Ykd4dFpXNTBVMlZ5ZG1salpWeHVJQ29nSUNCd1lYSjBhV05wY0dGdWRDQkRRU0JoY3lCR1lXSnlhV01nUTBGY2JpQXFJQ0FnUVhCd0xUNCtVM1pqT2lCeVpXZHBjM1JsY2loamNtVmtaVzUwYVdGc2N5d2dMaTR1S1Z4dUlDb2dJQ0JUZG1NdFBqNURRVG9nY21WbmFYTjBaWElvY21WeGRXVnpkQ3dnWVdSdGFXNVZjMlZ5S1Z4dUlDb2dJQ0JEUVMwdFBqNVRkbU02SUdWdWNtOXNiRzFsYm5SVFpXTnlaWFJjYmlBcUlDQWdVM1pqTFMwK1BrRndjRG9nYzJWamNtVjBYRzRnS2lBZ0lFRndjQzArUGxOMll6b2daVzV5YjJ4c0tHVnVjbTlzYkcxbGJuUkpaQ3dnYzJWamNtVjBLVnh1SUNvZ0lDQlRkbU10UGo1RFFUb2daVzV5YjJ4c0tIdGxibkp2Ykd4dFpXNTBTVVFzSUhObFkzSmxkSDBwWEc0Z0tpQWdJRU5CTFMwK1BsTjJZem9nWTJWeWRHbG1hV05oZEdWelhHNGdLaUFnSUZOMll5MHRQajVCY0hBNklFbGtaVzUwYVhSNVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QkdZV0p5YVdORmJuSnZiR3h0Wlc1MFUyVnlkbWxqWlNCbGVIUmxibVJ6SUV4dloyZGxaRU5zWVhOeklIdGNiaUFnY0hKcGRtRjBaU0JqWVQ4NklFWmhZbkpwWTBOQlUyVnlkbWxqWlhNN1hHNWNiaUFnY0hKcGRtRjBaU0JqWlhKMGFXWnBZMkYwWlZObGNuWnBZMlUvT2lCaGJuazdYRzVjYmlBZ2NISnBkbUYwWlNCaFptWnBiR2xoZEdsdmJsTmxjblpwWTJVL09pQkJabVpwYkdsaGRHbHZibE5sY25acFkyVTdYRzVjYmlBZ2NISnBkbUYwWlNCcFpHVnVkR2wwZVZObGNuWnBZMlUvT2lCSlpHVnVkR2wwZVZObGNuWnBZMlU3WEc1Y2JpQWdjSEpwZG1GMFpTQmpiR2xsYm5RL09pQmhibms3WEc1Y2JpQWdjSEpwZG1GMFpTQjFjMlZ5UHpvZ1ZYTmxjanRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWh3Y21sMllYUmxJR05oUTI5dVptbG5PaUJEUVVOdmJtWnBaeWtnZTF4dUlDQWdJRU52Y21WVmRHbHNjeTVuWlhSRGNubHdkRzlUZFdsMFpTaGNiaUFnSUNBZ0lHTmhRMjl1Wm1sbkxtaHpiVnh1SUNBZ0lDQWdJQ0EvSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE52Wm5SM1lYSmxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUd4cFlqb2dZMkZEYjI1bWFXY3VhSE50TG14cFluSmhjbmtzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpiRzkwT2lCallVTnZibVpwWnk1b2MyMHVjMnh2ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hoWW1Wc09pQmpZVU52Ym1acFp5NW9jMjB1ZEc5clpXNU1ZV0psYkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJwYmpvZ1UzUnlhVzVuS0dOaFEyOXVabWxuTG1oemJTNXdhVzRwTEZ4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdPaUIxYm1SbFptbHVaV1JjYmlBZ0lDQXBPMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNGdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdZWE41Ym1NZ1ZYTmxjaWdwT2lCUWNtOXRhWE5sUEZWelpYSStJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMlZ5S1NCeVpYUjFjbTRnZEdocGN5NTFjMlZ5TzF4dUlDQWdJR052Ym5OMElIc2dZMkZPWVcxbExDQmpZVU5sY25Rc0lHTmhTMlY1TENCMWNtd3NJR2h6YlNCOUlEMGdkR2hwY3k1allVTnZibVpwWnp0Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCMGFHbHpMbXh2Wnk1bWIzSW9kR2hwY3k1VmMyVnlLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29ZRU55WldGMGFXNW5JRU5CSUhWelpYSWdabTl5SUNSN1kyRk9ZVzFsZlNCaGRDQWtlM1Z5YkgxZ0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lGSmxkSEpwWlhacGJtY2dRMEVnWTJWeWRHbG1hV05oZEdVZ1puSnZiU0FrZTJOaFEyVnlkSDFnS1R0Y2JpQWdJQ0JqYjI1emRDQmpaWEowYVdacFkyRjBaU0E5SUdGM1lXbDBJRU52Y21WVmRHbHNjeTVuWlhSR2FYSnpkRVJwY2tacGJHVk9ZVzFsUTI5dWRHVnVkQ2hqWVVObGNuUXBPMXh1SUNBZ0lHeGxkQ0JyWlhrNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9JV2h6YlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZqWVV0bGVTa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0JnVFdsemMybHVaeUJqWVV0bGVTQmpiMjVtYVdkMWNtRjBhVzl1SUdadmNpQkRRU0FrZTJOaFRtRnRaWDB1SUZCeWIzWnBaR1VnWVNCclpYa2daR2x5WldOMGIzSjVJRzl5SUdOdmJtWnBaM1Z5WlNCSVUwMGdjM1Z3Y0c5eWRDNWdYRzRnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JzYjJjdVpHVmlkV2NvWUZKbGRISnBaWFpwYm1jZ1EwRWdhMlY1SUdaeWIyMGdKSHRqWVV0bGVYMWdLVHRjYmlBZ0lDQWdJR3RsZVNBOUlHRjNZV2wwSUVOdmNtVlZkR2xzY3k1blpYUkdhWEp6ZEVScGNrWnBiR1ZPWVcxbFEyOXVkR1Z1ZENoallVdGxlU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHeHZaeTVrWldKMVp5aGNiaUFnSUNBZ0lDQWdZRlZ6YVc1bklFaFRUU0JqYjI1bWFXZDFjbUYwYVc5dUlHWnZjaUJEUVNBa2UyTmhUbUZ0WlgwZ2QybDBhQ0JzYVdKeVlYSjVJQ1I3YUhOdExteHBZbkpoY25sOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnYkc5bkxtUmxZblZuS0dCTWIyRmthVzVuSUVGa2JXbHVJSFZ6WlhJZ1ptOXlJR05oSUNSN1kyRk9ZVzFsZldBcE8xeHVJQ0FnSUhSb2FYTXVkWE5sY2lBOUlHRjNZV2wwSUVOdmNtVlZkR2xzY3k1blpYUkRRVlZ6WlhJb1hDSmhaRzFwYmx3aUxDQnJaWGtzSUdObGNuUnBabWxqWVhSbExDQmpZVTVoYldVc0lIdGNiaUFnSUNBZ0lHaHpiU3hjYmlBZ0lDQjlLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTUxYzJWeU8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR0Z6ZVc1aklFTkJLQ2s2SUZCeWIyMXBjMlU4Um1GaWNtbGpRMEZUWlhKMmFXTmxjejRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU5oS1NCeVpYUjFjbTRnZEdocGN5NWpZVHRjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0IwYUdsekxteHZaeTVtYjNJb2RHaHBjeTVEUVNrN1hHNGdJQ0FnWTI5dWMzUWdleUIxY213c0lIUnNjeXdnWTJGT1lXMWxJSDBnUFNCMGFHbHpMbU5oUTI5dVptbG5PMXh1WEc0Z0lDQWdMeThnUms5U0lGTnZiV1VnVW1WaGMyOXVJSFJvWlNCMlpYSnBabWxqWVhScGIyNGdabUZwYkhNZ2JtVmxaQ0IwYnlCcGJuWmxjM1JwWjJGMFpTQjBhR2x6SUhkdmNtdHpJR1p2Y2lCdWIzZGNiaUFnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ2JHVjBJSHNnZEhKMWMzUmxaRkp2YjNSekxDQjJaWEpwWm5rZ2ZTQTlJSFJzY3lCaGN5QlVURk5QY0hScGIyNXpPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtOXZkQ0E5SUNoMGNuVnpkR1ZrVW05dmRITWdZWE1nYzNSeWFXNW5XMTBwV3pCZElHRnpJSE4wY21sdVp6dGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lGSmxkSEpwWlhacGJtY2dRMEVnWTJWeWRHbG1hV05oZEdVZ1puSnZiU0FrZTNKdmIzUjlMaUJqZDJRNklDUjdjSEp2WTJWemN5NWpkMlFvS1gxZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUdObGNuUnBabWxqWVhSbElEMGdZWGRoYVhRZ1EyOXlaVlYwYVd4ekxtZGxkRVpwYkdWRGIyNTBaVzUwS0hKdmIzUXBPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGdRM0psWVhScGJtY2dRMEVnUTJ4cFpXNTBJR1p2Y2lCRFFTQWtlMk5oVG1GdFpYMGdkVzVrWlhJZ0pIdDFjbXg5WUNrN1hHNGdJQ0FnZEdocGN5NWpZU0E5SUc1bGR5QkdZV0p5YVdORFFWTmxjblpwWTJWektGeHVJQ0FnSUNBZ2RYSnNMRnh1SUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0IwY25WemRHVmtVbTl2ZEhNNklFSjFabVpsY2k1bWNtOXRLR05sY25ScFptbGpZWFJsS1N4Y2JpQWdJQ0FnSUNBZ2RtVnlhV1o1TEZ4dUlDQWdJQ0FnZlNCaGN5QlVURk5QY0hScGIyNXpMRnh1SUNBZ0lDQWdZMkZPWVcxbFhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1allUdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JoYzNsdVl5QkRiR2xsYm5Rb0tUb2dVSEp2YldselpUeDdJRzVsZDBObGNuUnBabWxqWVhSbFUyVnlkbWxqWlRvZ1lXNTVJSDArSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVqYkdsbGJuUXBJSEpsZEhWeWJpQjBhR2x6TG1Oc2FXVnVkRHRjYmlBZ0lDQmpiMjV6ZENCallTQTlJR0YzWVdsMElIUm9hWE11UTBFb0tUdGNiaUFnSUNCMGFHbHpMbU5zYVdWdWRDQTlJQ2hqWVNCaGN5QmhibmtwVzF3aVgwWmhZbkpwWTBOQlUyVnlkbWxqWlhOY0lsMDdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMnhwWlc1ME8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR0Z6ZVc1aklFTmxjblJwWm1sallYUmxLQ2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVqWlhKMGFXWnBZMkYwWlZObGNuWnBZMlVwWEc0Z0lDQWdJQ0IwYUdsekxtTmxjblJwWm1sallYUmxVMlZ5ZG1salpTQTlJQ2hoZDJGcGRDQjBhR2x6TGtOc2FXVnVkQ2dwS1M1dVpYZERaWEowYVdacFkyRjBaVk5sY25acFkyVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqWlhKMGFXWnBZMkYwWlZObGNuWnBZMlU3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1lYTjVibU1nUVdabWFXeHBZWFJwYjI1ektDa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NWhabVpwYkdsaGRHbHZibE5sY25acFkyVXBYRzRnSUNBZ0lDQjBhR2x6TG1GbVptbHNhV0YwYVc5dVUyVnlkbWxqWlNBOUlDaGhkMkZwZENCMGFHbHpMa05CS0NrcExtNWxkMEZtWm1sc2FXRjBhVzl1VTJWeWRtbGpaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1GbVptbHNhV0YwYVc5dVUyVnlkbWxqWlR0Y2JpQWdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQmhjM2x1WXlCSlpHVnVkR2wwYVdWektDa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBaR1Z1ZEdsMGVWTmxjblpwWTJVcFhHNGdJQ0FnSUNCMGFHbHpMbWxrWlc1MGFYUjVVMlZ5ZG1salpTQTlJQ2hoZDJGcGRDQjBhR2x6TGtOQktDa3BMbTVsZDBsa1pXNTBhWFI1VTJWeWRtbGpaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1sa1pXNTBhWFI1VTJWeWRtbGpaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVYwY21sbGRtVWdZMlZ5ZEdsbWFXTmhkR1Z6SUdaeWIyMGdkR2hsSUVOQkxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRFlXeHNjeUIwYUdVZ1EwRWdZMlZ5ZEdsbWFXTmhkR1VnYzJWeWRtbGpaU0IwYnlCc2FYTjBJR05sY25ScFptbGpZWFJsY3l3Z2IzQjBhVzl1WVd4c2VTQnRZWEJ3YVc1bklIUnZJRkJGVFNCemRISnBibWR6SUc5dWJIa3VYRzRnSUNBcUlFQndZWEpoYlNCN1IyVjBRMlZ5ZEdsbWFXTmhkR1Z6VW1WeGRXVnpkSDBnVzNKbGNYVmxjM1JkSUMwZ1QzQjBhVzl1WVd3Z1ptbHNkR1Z5SUhKbGNYVmxjM1FnWm05eUlHTmxjblJwWm1sallYUmxJR3h2YjJ0MWNDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYlpHOU5ZWEE5ZEhKMVpWMGdMU0JYYUdWdUlIUnlkV1VzSUhKbGRIVnlibk1nWVhKeVlYa2diMllnVUVWTklITjBjbWx1WjNNN0lHOTBhR1Z5ZDJselpTQnlaWFIxY201eklHWjFiR3dnY21WemNHOXVjMlVnYjJKcVpXTjBMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBITjBjbWx1WjF0ZElId2dRMlZ5ZEdsbWFXTmhkR1ZTWlhOd2IyNXpaVDU5SUVGeWNtRjVJRzltSUZCRlRTQnpkSEpwYm1keklHOXlJSFJvWlNCbWRXeHNJR05sY25ScFptbGpZWFJsSUhKbGMzQnZibk5sTGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWjJWMFEyVnlkR2xtYVdOaGRHVnpLRnh1SUNBZ0lISmxjWFZsYzNRL09pQkhaWFJEWlhKMGFXWnBZMkYwWlhOU1pYRjFaWE4wTEZ4dUlDQWdJR1J2VFdGd0lEMGdkSEoxWlZ4dUlDQXBPaUJRY205dGFYTmxQSE4wY21sdVoxdGRJSHdnUTJWeWRHbG1hV05oZEdWU1pYTndiMjV6WlQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR05sY25ScFptbGpZWFJsVTJWeWRtbGpaU0E5SUdGM1lXbDBJSFJvYVhNdVEyVnlkR2xtYVdOaGRHVW9LVHRjYmlBZ0lDQmpiMjV6ZENCMWMyVnlJRDBnWVhkaGFYUWdkR2hwY3k1VmMyVnlLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2JHOW5JRDBnZEdocGN5NXNiMmN1Wm05eUtIUm9hWE11WjJWMFEyVnlkR2xtYVdOaGRHVnpLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29YRzRnSUNBZ0lDQmdVbVYwY21sbGRtbHVaeUJqWlhKMGFXWnBZMkYwWlhNa2UzSmxjWFZsYzNRZ1B5QmdJR1p2Y2lBa2UzSmxjWFZsYzNRdWFXUjlZQ0E2SUZ3aVhDSjlJR1p2Y2lCRFFTQWtlM1JvYVhNdVkyRkRiMjVtYVdjdVkyRk9ZVzFsZldCY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElISmxjM0J2Ym5ObE9pQkRaWEowYVdacFkyRjBaVkpsYzNCdmJuTmxJRDBnS0Z4dUlDQWdJQ0FnWVhkaGFYUWdZMlZ5ZEdsbWFXTmhkR1ZUWlhKMmFXTmxMbWRsZEVObGNuUnBabWxqWVhSbGN5aHlaWEYxWlhOMElIeDhJSHQ5TENCMWMyVnlLVnh1SUNBZ0lDa3VjbVZ6ZFd4ME8xeHVJQ0FnSUd4dlp5NWtaV0oxWnloY2JpQWdJQ0FnSUdCR2IzVnVaQ0FrZTNKbGMzQnZibk5sTG1ObGNuUnpMbXhsYm1kMGFIMGdZMlZ5ZEdsbWFXTmhkR1Z6T2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0hKbGMzQnZibk5sS1gxZ1hHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaRzlOWVhBZ1B5QnlaWE53YjI1elpTNWpaWEowY3k1dFlYQW9LR01wSUQwK0lHTXVVRVZOS1NBNklISmxjM0J2Ym5ObE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCTWFYTjBJR2xrWlc1MGFYUnBaWE1nY21WbmFYTjBaWEpsWkNCcGJpQjBhR1VnUTBFdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZGMVpYSnBaWE1nZEdobElFTkJJR2xrWlc1MGFYUjVJSE5sY25acFkyVWdkRzhnWm1WMFkyZ2dZV3hzSUdsa1pXNTBhWFJwWlhNZ1lXNWtJSEpsZEhWeWJuTWdkR2hsSUd4cGMzUWdZWE1nUm1GaWNtbGpTV1JsYm5ScGRIa2diMkpxWldOMGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4R1lXSnlhV05KWkdWdWRHbDBlVnRkUG4wZ1ZHaGxJR3hwYzNRZ2IyWWdhV1JsYm5ScGRHbGxjeUJ5WldkcGMzUmxjbVZrSUdsdUlIUm9aU0JEUVM1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUdkbGRFbGtaVzUwYVhScFpYTW9LVG9nVUhKdmJXbHpaVHhHWVdKeWFXTkpaR1Z1ZEdsMGVWdGRQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FXUmxiblJwZEdsbGMxTmxjblpwWTJVZ1BTQmhkMkZwZENCMGFHbHpMa2xrWlc1MGFYUnBaWE1vS1R0Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCMGFHbHpMbXh2Wnk1bWIzSW9kR2hwY3k1blpYUkpaR1Z1ZEdsMGFXVnpLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29ZRkpsZEhKcFpYWnBibWNnU1dSbGJuUnBkR2xsY3lCMWJtUmxjaUJEUVNBa2UzUm9hWE11WTJGRGIyNW1hV2N1WTJGT1lXMWxmV0FwTzF4dUlDQWdJR052Ym5OMElISmxjM0J2Ym5ObE9pQkpaR1Z1ZEdsMGVWSmxjM0J2Ym5ObElEMGdLRnh1SUNBZ0lDQWdZWGRoYVhRZ2FXUmxiblJwZEdsbGMxTmxjblpwWTJVdVoyVjBRV3hzS0dGM1lXbDBJSFJvYVhNdVZYTmxjaWdwS1Z4dUlDQWdJQ2t1Y21WemRXeDBPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGNiaUFnSUNBZ0lHQkdiM1Z1WkNBa2UzSmxjM0J2Ym5ObExtbGtaVzUwYVhScFpYTXViR1Z1WjNSb2ZTQkpaR1Z1ZEdsMGFXVnpPaUFrZTBwVFQwNHVjM1J5YVc1bmFXWjVLSEpsYzNCdmJuTmxLWDFnWEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpjRzl1YzJVdWFXUmxiblJwZEdsbGN6dGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0J3WVhKelpVVnljbTl5S0dVNklFVnljbTl5S1NCN1hHNGdJQ0FnWTI5dWMzUWdjbVZuWlhod0lEMGdMeTRxWTI5a1pUcGNYSE1vWEZ4a0t5a3VLajl0WlhOellXZGxPbHhjYzF0Y0lpZGRLQzRyS1Z0Y0lpZGRMMmR6TzF4dUlDQWdJR052Ym5OMElHMWhkR05vSUQwZ2NtVm5aWGh3TG1WNFpXTW9aUzV0WlhOellXZGxLVHRjYmlBZ0lDQnBaaUFvSVcxaGRHTm9LU0J5WlhSMWNtNGdibVYzSUZKbFoybHpkSEpoZEdsdmJrVnljbTl5S0dVcE8xeHVJQ0FnSUdOdmJuTjBJRnNzSUdOdlpHVXNJRzFsYzNOaFoyVmRJRDBnYldGMFkyZzdYRzRnSUNBZ2MzZHBkR05vSUNoamIyUmxLU0I3WEc0Z0lDQWdJQ0JqWVhObElGd2lOelJjSWpwY2JpQWdJQ0FnSUdOaGMyVWdYQ0kzTVZ3aU9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRU52Ym1ac2FXTjBSWEp5YjNJb2JXVnpjMkZuWlNrN1hHNGdJQ0FnSUNCallYTmxJRndpTWpCY0lqcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJCZFhSb2IzSnBlbUYwYVc5dVJYSnliM0lvYldWemMyRm5aU2s3WEc0Z0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZKbFoybHpkSEpoZEdsdmJrVnljbTl5S0cxbGMzTmhaMlVwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVYwY21sbGRtVWdZV1ptYVd4cFlYUnBiMjV6SUdaeWIyMGdkR2hsSUVOQkxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCUmRXVnlhV1Z6SUhSb1pTQkRRU0JtYjNJZ2RHaGxJR3hwYzNRZ2IyWWdZV1ptYVd4cFlYUnBiMjV6SUdGMllXbHNZV0pzWlNCMWJtUmxjaUIwYUdVZ1kyOXVabWxuZFhKbFpDQkRRUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQlVhR1VnWVdabWFXeHBZWFJwYjI1eklISmxjM1ZzZENCd1lYbHNiMkZrTGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWjJWMFFXWm1hV3hwWVhScGIyNXpLQ2tnZTF4dUlDQWdJR052Ym5OMElHRm1abWxzYVdGMGFXOXVVMlZ5ZG1salpTQTlJR0YzWVdsMElIUm9hWE11UVdabWFXeHBZWFJwYjI1ektDazdYRzRnSUNBZ1kyOXVjM1FnYkc5bklEMGdkR2hwY3k1c2IyY3VabTl5S0hSb2FYTXVaMlYwUVdabWFXeHBZWFJwYjI1ektUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lGSmxkSEpwWlhacGJtY2dRV1ptYVd4cFlYUnBiMjV6SUhWdVpHVnlJRU5CSUNSN2RHaHBjeTVqWVVOdmJtWnBaeTVqWVU1aGJXVjlZQ2s3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpjRzl1YzJVZ1BTQW9ZWGRoYVhRZ1lXWm1hV3hwWVhScGIyNVRaWEoyYVdObExtZGxkRUZzYkNoaGQyRnBkQ0IwYUdsekxsVnpaWElvS1NrcFhHNGdJQ0FnSUNBdWNtVnpkV3gwTzF4dUlDQWdJR3h2Wnk1a1pXSjFaeWhjYmlBZ0lDQWdJR0JHYjNWdVpDQWtlM0psYzNCdmJuTmxMbUV1YkdWdVozUm9mU0JCWm1acGJHbGhkR2x2Ym5NNklDUjdTbE5QVGk1emRISnBibWRwWm5rb2NtVnpjRzl1YzJVcGZXQmNiaUFnSUNBcE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhOd2IyNXpaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVZoWkNCcFpHVnVkR2wwZVNCa1pYUmhhV3h6SUdaeWIyMGdkR2hsSUVOQklHSjVJR1Z1Y205c2JHMWxiblFnU1VRdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbGRISnBaWFpsY3lCaGJtUWdkbUZzYVdSaGRHVnpJR0VnYzJsdVoyeGxJR2xrWlc1MGFYUjVMQ0IwYUhKdmQybHVaeUJPYjNSR2IzVnVaRVZ5Y205eUlIZG9aVzRnYldsemMybHVaeTVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHVnVjbTlzYkcxbGJuUkpaQ0F0SUVWdWNtOXNiRzFsYm5RZ1NVUWdkRzhnYkc5dmEzVndMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBFWmhZbkpwWTBsa1pXNTBhWFI1UG4wZ1ZHaGxJR2xrWlc1MGFYUjVJR1JsZEdGcGJITWdjM1J2Y21Wa0lHbHVJSFJvWlNCRFFTNWNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklISmxZV1FvWlc1eWIyeHNiV1Z1ZEVsa09pQnpkSEpwYm1jcElIdGNiaUFnSUNCamIyNXpkQ0JqWVNBOUlHRjNZV2wwSUhSb2FYTXVRMEVvS1R0Y2JpQWdJQ0JqYjI1emRDQjFjMlZ5SUQwZ1lYZGhhWFFnZEdocGN5NVZjMlZ5S0NrN1hHNGdJQ0FnYkdWMElISmxjM1ZzZERvZ1NWTmxjblpwWTJWU1pYTndiMjV6WlR0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnWTJFdWJtVjNTV1JsYm5ScGRIbFRaWEoyYVdObEtDa3VaMlYwVDI1bEtHVnVjbTlzYkcxbGJuUkpaQ3dnZFhObGNpazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pUb2dZVzU1S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1RtOTBSbTkxYm1SRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWUVOdmRXeGtiaWQwSUdacGJtUWdaVzV5YjJ4c2JXVnVkQ0IzYVhSb0lHbGtJQ1I3Wlc1eWIyeHNiV1Z1ZEVsa2ZUb2dKSHRsZldCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRnlaWE4xYkhRdWMzVmpZMlZ6Y3lsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCT2IzUkdiM1Z1WkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnUTI5MWJHUnVKM1FnWm1sdVpDQmxibkp2Ykd4dFpXNTBJSGRwZEdnZ2FXUWdKSHRsYm5KdmJHeHRaVzUwU1dSOU9pQWtlM0psYzNWc2RDNWxjbkp2Y25NdWFtOXBiaWhjSWx4Y2Jsd2lLWDFnWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2RDNXlaWE4xYkhRZ1lYTWdSbUZpY21salNXUmxiblJwZEhrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFoybHpkR1Z5SUdFZ2JtVjNJR2xrWlc1MGFYUjVJSGRwZEdnZ2RHaGxJRU5CTGx4dUlDQWdLaUJBYzNWdGJXRnllU0JUZFdKdGFYUnpJR0VnY21WbmFYTjBjbUYwYVc5dUlISmxjWFZsYzNRZ1ptOXlJR0VnYm1WM0lHVnVjbTlzYkcxbGJuUWdTVVFzSUhKbGRIVnlibWx1WnlCMGFHVWdaVzV5YjJ4c2JXVnVkQ0J6WldOeVpYUWdkWEJ2YmlCemRXTmpaWE56TGx4dUlDQWdLaUJBY0dGeVlXMGdlME55WldSbGJuUnBZV3h6ZlNCdGIyUmxiQ0F0SUVOeVpXUmxiblJwWVd4eklHTnZiblJoYVc1cGJtY2dkWE5sY2s1aGJXVWdZVzVrSUhCaGMzTjNiM0prSUdadmNpQjBhR1VnYm1WM0lHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0cGMxTjFjR1Z5VlhObGNqMW1ZV3h6WlYwZ0xTQlhhR1YwYUdWeUlIUnZJSEpsWjJsemRHVnlJSFJvWlNCcFpHVnVkR2wwZVNCaGN5QmhJSE4xY0dWeUlIVnpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJZV1ptYVd4cFlYUnBiMjQ5WENKY0lsMGdMU0JCWm1acGJHbGhkR2x2YmlCemRISnBibWNnS0dVdVp5NHNJRzl5WnpFdVpHVndZWEowYldWdWRERXBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwTkJYMUpQVEVVZ2ZDQnpkSEpwYm1kOUlGdDFjMlZ5VW05c1pWMGdMU0JTYjJ4bElIUnZJR0Z6YzJsbmJpQjBieUIwYUdVZ2FXUmxiblJwZEhrdVhHNGdJQ0FxSUVCd1lYSmhiU0I3U1V0bGVWWmhiSFZsUVhSMGNtbGlkWFJsZlNCYllYUjBjbk5kSUMwZ1QzQjBhVzl1WVd3Z1lYUjBjbWxpZFhSbGN5QjBieUJoZEhSaFkyZ2dkRzhnZEdobElHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzIxaGVFVnVjbTlzYkcxbGJuUnpYU0F0SUUxaGVHbHRkVzBnYm5WdFltVnlJRzltSUdWdWNtOXNiRzFsYm5SeklHRnNiRzkzWldRZ1ptOXlJSFJvWlNCcFpHVnVkR2wwZVM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3VUhKdmJXbHpaVHh6ZEhKcGJtYytmU0JVYUdVZ1pXNXliMnhzYldWdWRDQnpaV055WlhRZ1ptOXlJSFJvWlNCeVpXZHBjM1JsY21Wa0lHbGtaVzUwYVhSNUxseHVJQ0FnS2k5Y2JpQWdZWE41Ym1NZ2NtVm5hWE4wWlhJb1hHNGdJQ0FnYlc5a1pXdzZJRU55WldSbGJuUnBZV3h6TEZ4dUlDQWdJR2x6VTNWd1pYSlZjMlZ5T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVzWEc0Z0lDQWdZV1ptYVd4cFlYUnBiMjQ2SUhOMGNtbHVaeUE5SUZ3aVhDSXNYRzRnSUNBZ2RYTmxjbEp2YkdVL09pQkRRVjlTVDB4RklId2djM1J5YVc1bkxGeHVJQ0FnSUdGMGRISnpQem9nU1V0bGVWWmhiSFZsUVhSMGNtbGlkWFJsTEZ4dUlDQWdJRzFoZUVWdWNtOXNiRzFsYm5SelB6b2diblZ0WW1WeVhHNGdJQ2s2SUZCeWIyMXBjMlU4YzNSeWFXNW5QaUI3WEc0Z0lDQWdiR1YwSUhKbFoybHpkSEpoZEdsdmJqb2djM1J5YVc1bk8xeHVJQ0FnSUdOdmJuTjBJR3h2WnlBOUlIUm9hWE11Ykc5bkxtWnZjaWgwYUdsekxuSmxaMmx6ZEdWeUtUdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2V5QjFjMlZ5VG1GdFpTd2djR0Z6YzNkdmNtUWdmU0E5SUcxdlpHVnNPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyRWdQU0JoZDJGcGRDQjBhR2x6TGtOQktDazdYRzRnSUNBZ0lDQmpiMjV6ZENCMWMyVnlJRDBnWVhkaGFYUWdkR2hwY3k1VmMyVnlLQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQndjbTl3Y3lBOUlIdGNiaUFnSUNBZ0lDQWdaVzV5YjJ4c2JXVnVkRWxFT2lCMWMyVnlUbUZ0WlNCaGN5QnpkSEpwYm1jc1hHNGdJQ0FnSUNBZ0lHVnVjbTlzYkcxbGJuUlRaV055WlhRNklIQmhjM04zYjNKa0xGeHVJQ0FnSUNBZ0lDQmhabVpwYkdsaGRHbHZiam9nWVdabWFXeHBZWFJwYjI0c1hHNGdJQ0FnSUNBZ0lIVnpaWEpTYjJ4bE9pQjFjMlZ5VW05c1pTeGNiaUFnSUNBZ0lDQWdZWFIwY25NNklHRjBkSEp6TEZ4dUlDQWdJQ0FnSUNCdFlYaEZibkp2Ykd4dFpXNTBjem9nYldGNFJXNXliMnhzYldWdWRITXNYRzRnSUNBZ0lDQjlJR0Z6SUVsU1pXZHBjM1JsY2xKbGNYVmxjM1E3WEc0Z0lDQWdJQ0J5WldkcGMzUnlZWFJwYjI0Z1BTQmhkMkZwZENCallTNXlaV2RwYzNSbGNpaHdjbTl3Y3l3Z2RYTmxjaWs3WEc0Z0lDQWdJQ0JzYjJjdWFXNW1ieWhjYmlBZ0lDQWdJQ0FnWUZKbFoybHpkSEpoZEdsdmJpQm1iM0lnSkh0MWMyVnlUbUZ0WlgwZ1kzSmxZWFJsWkNCM2FYUm9JSFZ6WlhJZ2RIbHdaU0FrZTNWelpYSlNiMnhsSUQ4L0lGd2lWVzVrWldacGJtVmtJRkp2YkdWY0luMGdKSHRwYzFOMWNHVnlWWE5sY2lBL0lGd2lZWE1nYzNWd1pYSWdkWE5sY2x3aUlEb2dYQ0pjSW4xZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0dVNklHRnVlU2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dkR2hwY3k1d1lYSnpaVVZ5Y205eUtHVXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21WbmFYTjBjbUYwYVc5dU8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJSE4wWVhScFl5QnBaR1Z1ZEdsMGVVWnliMjFGYm5KdmJHeHRaVzUwS0Z4dUlDQWdJR1Z1Y205c2JHMWxiblE2SUVsRmJuSnZiR3hTWlhOd2IyNXpaU3hjYmlBZ0lDQnRjM0JKWkRvZ2MzUnlhVzVuWEc0Z0lDazZJRWxrWlc1MGFYUjVJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHTmxjblJwWm1sallYUmxMQ0JyWlhrc0lISnZiM1JEWlhKMGFXWnBZMkYwWlNCOUlEMGdaVzV5YjJ4c2JXVnVkRHRjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0JNYjJkbmFXNW5MbVp2Y2loR1lXSnlhV05GYm5KdmJHeHRaVzUwVTJWeWRtbGpaU3dnZTMwcExtWnZjaWhjYmlBZ0lDQWdJSFJvYVhNdWFXUmxiblJwZEhsR2NtOXRSVzV5YjJ4c2JXVnVkRnh1SUNBZ0lDazdYRzRnSUNBZ2JHOW5MbVJsWW5WbktGeHVJQ0FnSUNBZ1lFZGxibVZ5WVhScGJtY2dTV1JsYm5ScGRIa2dabkp2YlNCalpYSjBhV1pwWTJGMFpTQWtlMk5sY25ScFptbGpZWFJsZlNCcGJpQnRjM0FnSkh0dGMzQkpaSDFnWEc0Z0lDQWdLVHRjYmlBZ0lDQmpiMjV6ZENCamJHbGxiblJKWkNBOUlFTnllWEIwYjFWMGFXeHpMbVpoWW5KcFkwbGtSbkp2YlVObGNuUnBabWxqWVhSbEtHTmxjblJwWm1sallYUmxLVHRjYmlBZ0lDQmpiMjV6ZENCcFpDQTlJRU55ZVhCMGIxVjBhV3h6TG1WdVkyOWtaU2hqYkdsbGJuUkpaQ2s3WEc0Z0lDQWdiRzluTG1SbFluVm5LR0JKWkdWdWRHbDBlU0FrZTJOc2FXVnVkRWxrZlNCaGJtUWdaVzVqYjJSbFpFbGtJQ1I3YVdSOVlDazdYRzRnSUNBZ1kyOXVjM1FnYm05M0lEMGdibVYzSUVSaGRHVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRWxrWlc1MGFYUjVLSHRjYmlBZ0lDQWdJR2xrT2lCcFpDeGNiaUFnSUNBZ0lHTnlaV1JsYm5ScFlXeHpPaUI3WEc0Z0lDQWdJQ0FnSUdsa09pQnBaQ3hjYmlBZ0lDQWdJQ0FnWTJWeWRHbG1hV05oZEdVNklHTmxjblJwWm1sallYUmxMRnh1SUNBZ0lDQWdJQ0J3Y21sMllYUmxTMlY1T2lCclpYa3VkRzlDZVhSbGN5Z3BMRnh1SUNBZ0lDQWdJQ0J5YjI5MFEyVnlkR2xtYVdOaGRHVTZJSEp2YjNSRFpYSjBhV1pwWTJGMFpTeGNiaUFnSUNBZ0lDQWdZM0psWVhSbFpFOXVPaUJ1YjNjc1hHNGdJQ0FnSUNBZ0lIVndaR0YwWldSUGJqb2dibTkzTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUcxemNFbGtPaUJ0YzNCSlpDeGNiaUFnSUNBZ0lHTnlaV0YwWldSUGJqb2dibTkzTEZ4dUlDQWdJQ0FnZFhCa1lYUmxaRTl1T2lCdWIzY3NYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFVnVjbTlzYkNCaGJpQnBaR1Z1ZEdsMGVTQjNhWFJvSUhSb1pTQkRRU0IxYzJsdVp5QmhJSEpsWjJsemRISmhkR2x2YmlCelpXTnlaWFF1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRVY0WTJoaGJtZGxjeUIwYUdVZ1pXNXliMnhzYldWdWRDQkpSQ0JoYm1RZ2MyVmpjbVYwSUdadmNpQmpaWEowYVdacFkyRjBaWE1zSUhKbGRIVnlibWx1WnlCaElHTnZibk4wY25WamRHVmtJRWxrWlc1MGFYUjVJRzF2WkdWc0xseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWlc1eWIyeHNiV1Z1ZEVsa0lDMGdSVzV5YjJ4c2JXVnVkQ0JKUkNCMGJ5Qmxibkp2Ykd3dVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldkcGMzUnlZWFJwYjI0Z0xTQkZibkp2Ykd4dFpXNTBJSE5sWTNKbGRDQnlaWFIxY201bFpDQmhkQ0J5WldkcGMzUnlZWFJwYjI0Z2RHbHRaUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeEpaR1Z1ZEdsMGVUNTlJRlJvWlNCbGJuSnZiR3hsWkNCcFpHVnVkR2wwZVNCdlltcGxZM1FnZDJsMGFDQmpjbVZrWlc1MGFXRnNjeTVjYmlBZ0lDb3ZYRzRnSUdGemVXNWpJR1Z1Y205c2JDaGxibkp2Ykd4dFpXNTBTV1E2SUhOMGNtbHVaeXdnY21WbmFYTjBjbUYwYVc5dU9pQnpkSEpwYm1jcElIdGNiaUFnSUNCc1pYUWdhV1JsYm5ScGRIazZJRWxrWlc1MGFYUjVPMXh1SUNBZ0lHTnZibk4wSUd4dlp5QTlJSFJvYVhNdWJHOW5MbVp2Y2loMGFHbHpMbVZ1Y205c2JDazdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJR052Ym5OMElHTmhJRDBnWVhkaGFYUWdkR2hwY3k1RFFTZ3BPMXh1SUNBZ0lDQWdiRzluTG1SbFluVm5LR0JGYm5KdmJHeHBibWNnSkh0bGJuSnZiR3h0Wlc1MFNXUjlZQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQmxibkp2Ykd4dFpXNTBPaUJKUlc1eWIyeHNVbVZ6Y0c5dWMyVWdQU0JoZDJGcGRDQmpZUzVsYm5KdmJHd29lMXh1SUNBZ0lDQWdJQ0JsYm5KdmJHeHRaVzUwU1VRNklHVnVjbTlzYkcxbGJuUkpaQ3hjYmlBZ0lDQWdJQ0FnWlc1eWIyeHNiV1Z1ZEZObFkzSmxkRG9nY21WbmFYTjBjbUYwYVc5dUxGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQnBaR1Z1ZEdsMGVTQTlJRVpoWW5KcFkwVnVjbTlzYkcxbGJuUlRaWEoyYVdObExtbGtaVzUwYVhSNVJuSnZiVVZ1Y205c2JHMWxiblFvWEc0Z0lDQWdJQ0FnSUdWdWNtOXNiRzFsYm5Rc1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTJGRGIyNW1hV2N1WTJGT1lXMWxYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdiRzluTG1sdVptOG9YRzRnSUNBZ0lDQWdJR0JUZFdOalpYTnpablZzYkhrZ1pXNXliMnhzWldRZ0pIdGxibkp2Ykd4dFpXNTBTV1I5SUhWdVpHVnlJQ1I3ZEdocGN5NWpZVU52Ym1acFp5NWpZVTVoYldWOUlHRnpJQ1I3YVdSbGJuUnBkSGt1YVdSOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOUlHTmhkR05vSUNobE9pQmhibmtwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJSFJvYVhNdWNHRnljMlZGY25KdmNpaGxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdsa1pXNTBhWFI1TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWldkcGMzUmxjaUJoYm1RZ1pXNXliMnhzSUdFZ2JtVjNJR2xrWlc1MGFYUjVJR2x1SUc5dVpTQnpkR1Z3TGx4dUlDQWdLaUJBYzNWdGJXRnllU0JTWldkcGMzUmxjbk1nWVNCdVpYY2daVzV5YjJ4c2JXVnVkQ0JKUkNCM2FYUm9JSFJvWlNCRFFTQmhibVFnYVcxdFpXUnBZWFJsYkhrZ1pYaGphR0Z1WjJWeklIUm9aU0J6WldOeVpYUWdkRzhnWlc1eWIyeHNMQ0J5WlhSMWNtNXBibWNnZEdobElHTnlaV0YwWldRZ1NXUmxiblJwZEhrdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UTNKbFpHVnVkR2xoYkhOOUlHMXZaR1ZzSUMwZ1EzSmxaR1Z1ZEdsaGJITWdabTl5SUhSb1pTQnVaWGNnYVdSbGJuUnBkSGtnWTI5dWRHRnBibWx1WnlCMWMyVnlUbUZ0WlNCaGJtUWdjR0Z6YzNkdmNtUXVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cybHpVM1Z3WlhKVmMyVnlQV1poYkhObFhTQXRJRmRvWlhSb1pYSWdkRzhnY21WbmFYTjBaWElnZEdobElHbGtaVzUwYVhSNUlHRnpJR0VnYzNWd1pYSWdkWE5sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnRoWm1acGJHbGhkR2x2YmoxY0lsd2lYU0F0SUVGbVptbHNhV0YwYVc5dUlITjBjbWx1WnlBb1pTNW5MaXdnYjNKbk1TNWtaWEJoY25SdFpXNTBNU2t1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdRMEZmVWs5TVJTQjhJSE4wY21sdVozMGdXM1Z6WlhKU2IyeGxYU0F0SUZKdmJHVWdkRzhnWVhOemFXZHVJSFJ2SUhSb1pTQnBaR1Z1ZEdsMGVTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0SlMyVjVWbUZzZFdWQmRIUnlhV0oxZEdWOUlGdGhkSFJ5YzEwZ0xTQlBjSFJwYjI1aGJDQmhkSFJ5YVdKMWRHVnpJSFJ2SUdGMGRHRmphQ0IwYnlCMGFHVWdhV1JsYm5ScGRIa3VYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJXRjRSVzV5YjJ4c2JXVnVkSE5kSUMwZ1RXRjRhVzExYlNCdWRXMWlaWElnYjJZZ1pXNXliMnhzYldWdWRITWdZV3hzYjNkbFpDQm1iM0lnZEdobElHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0UWNtOXRhWE5sUEVsa1pXNTBhWFI1UG4wZ1ZHaGxJR1Z1Y205c2JHVmtJR2xrWlc1MGFYUjVMbHh1SUNBZ0tpOWNiaUFnWVhONWJtTWdjbVZuYVhOMFpYSkJibVJGYm5KdmJHd29YRzRnSUNBZ2JXOWtaV3c2SUVOeVpXUmxiblJwWVd4ekxGeHVJQ0FnSUdselUzVndaWEpWYzJWeU9pQmliMjlzWldGdUlEMGdabUZzYzJVc1hHNGdJQ0FnWVdabWFXeHBZWFJwYjI0NklITjBjbWx1WnlBOUlGd2lYQ0lzWEc0Z0lDQWdkWE5sY2xKdmJHVS9PaUJEUVY5U1QweEZJSHdnYzNSeWFXNW5MRnh1SUNBZ0lHRjBkSEp6UHpvZ1NVdGxlVlpoYkhWbFFYUjBjbWxpZFhSbExGeHVJQ0FnSUcxaGVFVnVjbTlzYkcxbGJuUnpQem9nYm5WdFltVnlYRzRnSUNrNklGQnliMjFwYzJVOFNXUmxiblJwZEhrK0lIdGNiaUFnSUNCamIyNXpkQ0J5WldkcGMzUnlZWFJwYjI0Z1BTQmhkMkZwZENCMGFHbHpMbkpsWjJsemRHVnlLRnh1SUNBZ0lDQWdiVzlrWld3c1hHNGdJQ0FnSUNCcGMxTjFjR1Z5VlhObGNpeGNiaUFnSUNBZ0lHRm1abWxzYVdGMGFXOXVMRnh1SUNBZ0lDQWdkWE5sY2xKdmJHVXNYRzRnSUNBZ0lDQmhkSFJ5Y3l4Y2JpQWdJQ0FnSUcxaGVFVnVjbTlzYkcxbGJuUnpYRzRnSUNBZ0tUdGNiaUFnSUNCamIyNXpkQ0I3SUhWelpYSk9ZVzFsSUgwZ1BTQnRiMlJsYkR0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bGJuSnZiR3dvZFhObGNrNWhiV1VnWVhNZ2MzUnlhVzVuTENCeVpXZHBjM1J5WVhScGIyNHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRtOXJaWE1nZEdobElHVnVjbTlzYkcxbGJuUWdiMllnWVc0Z2FXUmxiblJwZEhrZ2QybDBhQ0IwYUdVZ2MzQmxZMmxtYVdWa0lHVnVjbTlzYkcxbGJuUWdTVVF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCbGJuSnZiR3h0Wlc1MFNXUWdMU0JVYUdVZ1pXNXliMnhzYldWdWRDQkpSQ0J2WmlCMGFHVWdhV1JsYm5ScGRIa2dkRzhnWW1VZ2NtVjJiMnRsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJuTWdRU0JRY205dGFYTmxJSFJvWVhRZ2NtVnpiMngyWlhNZ2RHOGdkR2hsSUhKbGMzVnNkQ0J2WmlCMGFHVWdjbVYyYjJOaGRHbHZiaUJ2Y0dWeVlYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQjBhSEp2ZDNNZ2UwNXZkRVp2ZFc1a1JYSnliM0o5SUVsbUlIUm9aU0JsYm5KdmJHeHRaVzUwSUhkcGRHZ2dkR2hsSUhOd1pXTnBabWxsWkNCSlJDQmtiMlZ6SUc1dmRDQmxlR2x6ZEM1Y2JpQWdJQ29nUUhSb2NtOTNjeUI3U1c1MFpYSnVZV3hGY25KdmNuMGdTV1lnZEdobGNtVWdhWE1nWVc0Z1pYSnliM0lnWkhWeWFXNW5JSFJvWlNCeVpYWnZZMkYwYVc5dUlIQnliMk5sYzNNdVhHNGdJQ0FxTDF4dUlDQmhjM2x1WXlCeVpYWnZhMlVvWlc1eWIyeHNiV1Z1ZEVsa09pQnpkSEpwYm1jcElIdGNiaUFnSUNCamIyNXpkQ0JqWVNBOUlHRjNZV2wwSUhSb2FYTXVRMEVvS1R0Y2JpQWdJQ0JqYjI1emRDQjFjMlZ5SUQwZ1lYZGhhWFFnZEdocGN5NVZjMlZ5S0NrN1hHNGdJQ0FnWTI5dWMzUWdhV1JsYm5ScGRIa2dQU0JoZDJGcGRDQjBhR2x6TG5KbFlXUW9aVzV5YjJ4c2JXVnVkRWxrS1R0Y2JpQWdJQ0JwWmlBb0lXbGtaVzUwYVhSNUtWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFNXZkRVp2ZFc1a1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUdCRGIzVnNaQ0J1YjNRZ1ptbHVaQ0JsYm5KdmJHeHRaVzUwSUhkcGRHZ2dhV1FnSkh0bGJuSnZiR3h0Wlc1MFNXUjlZRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQnNaWFFnY21WemRXeDBPaUJKVTJWeWRtbGpaVkpsYzNCdmJuTmxPMXh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUWdQU0JoZDJGcGRDQmpZUzV5WlhadmEyVW9YRzRnSUNBZ0lDQWdJSHNnWlc1eWIyeHNiV1Z1ZEVsRU9pQnBaR1Z1ZEdsMGVTNXBaQ3dnY21WaGMyOXVPaUJjSWxWelpYSWdSR1ZzWlhSaGRHbHZibHdpSUgwc1hHNGdJQ0FnSUNBZ0lIVnpaWEpjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmU0JqWVhSamFDQW9aVG9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0JEYjNWc1pDQnViM1FnY21WMmIydGxJR1Z1Y205c2JHMWxiblFnZDJsMGFDQnBaQ0FrZTJWdWNtOXNiRzFsYm5SSlpIMDZJQ1I3WlgxZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb0lYSmxjM1ZzZEM1emRXTmpaWE56S1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0JEYjNWc1pDQnViM1FnY21WMmIydGxJR1Z1Y205c2JHMWxiblFnZDJsMGFDQnBaQ0FrZTJWdWNtOXNiRzFsYm5SSlpIMDZJQ1I3Y21WemRXeDBMbVZ5Y205eWN5NXFiMmx1S0Z3aVhGeHVYQ0lwZldCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dWZWeHVJbDE5Il19
@@ -321,5 +321,5 @@ class FabricIdentityService extends core_1.ClientBasedService {
321
321
  }
322
322
  }
323
323
  exports.FabricIdentityService = FabricIdentityService;
324
- //# sourceMappingURL=FabricIdentityService.js.map
325
- //# sourceMappingURL=FabricIdentityService.js.map
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljSWRlbnRpdHlTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9GYWJyaWNJZGVudGl0eVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsT0FBTyxFQUVQLGVBQWUsR0FDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLGdCQVVOLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsc0JBQWlCO0FBTzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlDQUE0QjtBQUd4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdDQUEyQjtBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLHVCQUFrQjtBQUV4QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBRzFDO0lBR0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxJQUFjLFVBQVU7UUFDdEIsT0FBUSxJQUFJLENBQUMsTUFBYyxDQUFDLG1CQUFtQixDQUFRLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQWMsSUFBSTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDYixNQUFNLElBQUksYUFBYSxDQUNyQiwwREFBMEQsQ0FDM0QsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFjLFlBQVk7UUFDeEIs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QUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUTtZQUNYLE1BQU0sSUFBSSxhQUFhLENBQ3JCLHFDQUFxQyxZQUFZLEVBQUUsQ0FDcEQsQ0FBQztRQUNKLElBQUksTUFBd0IsQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FDVixPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO2dCQUN6RCxDQUFDLENBQUMseUJBQXlCO2dCQUMzQixDQUFDLENBQUMsZUFBZSxDQUFDO1lBRXRCLE1BQU0sYUFBYSxHQUFtQjtnQkFDcEMsTUFBTTtnQkFDTixHQUFHLGFBQWE7Z0JBQ2hCLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRTthQUMxQixDQUFDO1lBRUYsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksYUFBYSxDQUNyQix1Q0FBdUMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUNqQixNQUFNLElBQUksYUFBYSxDQUNyQix1Q0FBdUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25GLENBQUM7UUFDSixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRob3JpemF0aW9uRXJyb3IsXG4gIENsaWVudEJhc2VkU2VydmljZSxcbiAgQ29udGV4dCxcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxuICBQZXJzaXN0ZW5jZUtleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IEZhYnJpY0NBU2VydmljZXMsIHtcbiAgQWZmaWxpYXRpb25TZXJ2aWNlLFxuICBJQXR0cmlidXRlUmVxdWVzdCxcbiAgSWRlbnRpdHlTZXJ2aWNlLFxuICBJRW5yb2xsUmVzcG9uc2UsXG4gIElJZGVudGl0eVJlcXVlc3QsXG4gIElSZWdpc3RlclJlcXVlc3QsXG4gIElSZXZva2VSZXF1ZXN0LFxuICBJU2VydmljZVJlc3BvbnNlLFxuICBUTFNPcHRpb25zLFxufSBmcm9tIFwiZmFicmljLWNhLWNsaWVudFwiO1xuaW1wb3J0IHsgQ0FDb25maWcsIENyZWRlbnRpYWxzIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC90eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ29uZmxpY3RFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3JlVXRpbHMsIGdldEFraUFuZFNlcmlhbEZyb21DZXJ0IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZVJlc3BvbnNlLFxuICBGYWJyaWNJZGVudGl0eSxcbiAgR2V0Q2VydGlmaWNhdGVzUmVxdWVzdCxcbiAgSWRlbnRpdHlSZXNwb25zZSxcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC9mYWJyaWMtdHlwZXNcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiZmFicmljLWNvbW1vblwiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2Vycm9yc1wiO1xuaW1wb3J0IHsgQ0FfUk9MRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUtleVZhbHVlQXR0cmlidXRlIH0gZnJvbSBcIi4vRmFicmljRW5yb2xsbWVudFNlcnZpY2VcIjtcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9pbmRleFwiO1xuaW1wb3J0IHsgQ3J5cHRvVXRpbHMgfSBmcm9tIFwiLi4vY3J5cHRvXCI7XG5cbmV4cG9ydCBjbGFzcyBGYWJyaWNJZGVudGl0eVNlcnZpY2UgZXh0ZW5kcyBDbGllbnRCYXNlZFNlcnZpY2U8XG4gIEZhYnJpY0NBU2VydmljZXMsXG4gIENBQ29uZmlnXG4+IHtcbiAgcHJvdGVjdGVkIF91c2VyITogVXNlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCByb290Q2xpZW50KCk6IHsgbmV3Q2VydGlmaWNhdGVTZXJ2aWNlOiBhbnkgfSB7XG4gICAgcmV0dXJuICh0aGlzLmNsaWVudCBhcyBhbnkpW1wiX0ZhYnJpY0NhU2VydmljZXNcIl0gYXMgYW55O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB1c2VyKCk6IFVzZXIge1xuICAgIGlmICghdGhpcy5fdXNlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIkZhYnJpYyBpZGVudGl0eSBzZXJ2aWNlIG5vdCBwcm9wZXJseSBzZXR1cDogbWlzc2luZyB1c2VyXCJcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGNlcnRpZmljYXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yb290Q2xpZW50Lm5ld0NlcnRpZmljYXRlU2VydmljZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBhZmZpbGlhdGlvbnMoKTogQWZmaWxpYXRpb25TZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQubmV3QWZmaWxpYXRpb25TZXJ2aWNlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlkZW50aXRpZXMoKTogSWRlbnRpdHlTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQubmV3SWRlbnRpdHlTZXJ2aWNlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VXNlcihjZmc6IENBQ29uZmlnLCBjdHg6IENvbnRleHQpIHtcbiAgICBjb25zdCBsb2cgPSBjdHgubG9nZ2VyLmZvcih0aGlzLmdldFVzZXIpO1xuICAgIGNvbnN0IHsgY2FOYW1lLCBjYUNlcnQsIGNhS2V5LCB1cmwsIGhzbSB9ID0gY2ZnO1xuXG4gICAgbG9nLmluZm8oYENyZWF0aW5nIENBIHVzZXIgZm9yICR7Y2FOYW1lfSBhdCAke3VybH1gKTtcbiAgICBsb2cudmVyYm9zZShgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7Y2FDZXJ0fWApO1xuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgQ29yZVV0aWxzLmdldEZpcnN0RGlyRmlsZU5hbWVDb250ZW50KGNhQ2VydCk7XG4gICAgbGV0IGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghaHNtKSB7XG4gICAgICBpZiAoIWNhS2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIGNhS2V5IGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfS4gUHJvdmlkZSBhIGtleSBkaXJlY3Rvcnkgb3IgY29uZmlndXJlIEhTTSBzdXBwb3J0LmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBrZXkgZnJvbSAke2NhS2V5fWApO1xuICAgICAga2V5ID0gYXdhaXQgQ29yZVV0aWxzLmdldEZpcnN0RGlyRmlsZU5hbWVDb250ZW50KGNhS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKFxuICAgICAgICBgVXNpbmcgSFNNIGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfSB3aXRoIGxpYnJhcnkgJHtoc20ubGlicmFyeX1gXG4gICAgICApO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYExvYWRpbmcgQWRtaW4gdXNlciBmb3IgY2EgJHtjYU5hbWV9YCk7XG4gICAgdGhpcy5fdXNlciA9IGF3YWl0IENvcmVVdGlscy5nZXRDQVVzZXIoXCJhZG1pblwiLCBrZXksIGNlcnRpZmljYXRlLCBjYU5hbWUsIHtcbiAgICAgIGhzbSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fdXNlcjtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGluaXRpYWxpemUoXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx7IGNvbmZpZzogQ0FDb25maWc7IGNsaWVudDogRmFicmljQ0FTZXJ2aWNlcyB9PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUGVyc2lzdGVuY2VLZXlzLklOSVRJQUxJWkFUSU9OLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuaW5pdGlhbGl6ZSk7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBhcmdzO1xuICAgIGlmICghY29uZmlnKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk1pc3NpbmcgRmFicmljIENBIGNvbmZpZ3VyYXRpb25cIik7XG5cbiAgICBjb25zdCB7IHVybCwgdGxzLCBjYU5hbWUgfSA9IGNvbmZpZztcbiAgICBsb2cuaW5mbyhgSW5pdGlhbGl6aW5nIENBIENsaWVudCBmb3IgQ0EgJHtjb25maWcuY2FOYW1lfSBhdCAke2NvbmZpZy51cmx9YCk7XG4gICAgY29uc3QgeyB0cnVzdGVkUm9vdHMsIHZlcmlmeSB9ID0gdGxzIGFzIFRMU09wdGlvbnM7XG5cbiAgICBjb25zdCByb290ID0gKHRydXN0ZWRSb290cyBhcyBzdHJpbmdbXSlbMF0gYXMgc3RyaW5nO1xuICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7cm9vdH0uIGN3ZDogJHtwcm9jZXNzLmN3ZCgpfWApO1xuXG4gICAgY29uc3QgY2VydGlmaWNhdGUgPSBhd2FpdCBDb3JlVXRpbHMuZ2V0RmlsZUNvbnRlbnQocm9vdCk7XG5cbiAgICBsb2cuZGVidWcoYENBIENlcnRpZmljYXRlOiAke2NlcnRpZmljYXRlLnRvU3RyaW5nKCl9YCk7XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRmFicmljQ0FTZXJ2aWNlcyhcbiAgICAgIHVybCxcbiAgICAgIHtcbiAgICAgICAgdHJ1c3RlZFJvb3RzOiBCdWZmZXIuZnJvbShjZXJ0aWZpY2F0ZSksXG4gICAgICAgIHZlcmlmeSxcbiAgICAgIH0gYXMgVExTT3B0aW9ucyxcbiAgICAgIGNhTmFtZVxuICAgICk7XG5cbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKGNvbmZpZywgY3R4KTtcbiAgICBsb2cuZGVidWcoYENBIHVzZXIgbG9hZGVkOiAke3VzZXIuZ2V0TmFtZSgpfWApO1xuICAgIHJldHVybiB7XG4gICAgICBjb25maWcsXG4gICAgICBjbGllbnQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldENlcnRpZmljYXRlcyguLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55Pik6IFByb21pc2U8c3RyaW5nW10+O1xuICBhc3luYyBnZXRDZXJ0aWZpY2F0ZXMoXG4gICAgcmVxdWVzdDogR2V0Q2VydGlmaWNhdGVzUmVxdWVzdCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgYXN5bmMgZ2V0Q2VydGlmaWNhdGVzPE1BUCBleHRlbmRzIGJvb2xlYW4+KFxuICAgIGRvTWFwOiBNQVAsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxNQVAgZXh0ZW5kcyBmYWxzZSA/IENlcnRpZmljYXRlUmVzcG9uc2UgOiBzdHJpbmdbXT47XG4gIGFzeW5jIGdldENlcnRpZmljYXRlczxNQVAgZXh0ZW5kcyBib29sZWFuPihcbiAgICByZXF1ZXN0OiBHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0LFxuICAgIGRvTWFwOiBNQVAsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxNQVAgZXh0ZW5kcyBmYWxzZSA/IENlcnRpZmljYXRlUmVzcG9uc2UgOiBzdHJpbmdbXT47XG4gIGFzeW5jIGdldENlcnRpZmljYXRlczxNQVAgZXh0ZW5kcyBib29sZWFuPihcbiAgICByZXF1ZXN0PzogR2V0Q2VydGlmaWNhdGVzUmVxdWVzdCB8IE1BUCxcbiAgICBkb01hcDogTUFQID0gdHJ1ZSBhcyBNQVAsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxNQVAgZXh0ZW5kcyBmYWxzZSA/IENlcnRpZmljYXRlUmVzcG9uc2UgOiBzdHJpbmdbXT4ge1xuICAgIGlmIChyZXF1ZXN0IGluc3RhbmNlb2YgQ29udGV4dCkge1xuICAgICAgYXJncyA9IFtyZXF1ZXN0XTtcbiAgICAgIGRvTWFwID0gdHJ1ZSBhcyBNQVA7XG4gICAgICByZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVlc3QgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBkb01hcCA9IHJlcXVlc3Q7XG4gICAgICByZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRvTWFwICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgYXJncyA9IFtkb01hcCBhcyBNYXliZUNvbnRleHR1YWxBcmc8YW55PiwgLi4uYXJnc107XG4gICAgICBkb01hcCA9IHRydWUgYXMgTUFQO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgT3BlcmF0aW9uS2V5cy5SRUFELCB0cnVlKSkuZm9yKFxuICAgICAgdGhpcy5nZXRDZXJ0aWZpY2F0ZXNcbiAgICApO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBSZXRyaWV2aW5nIGNlcnRpZmljYXRlcyR7cmVxdWVzdCA/IGAgZm9yICR7cmVxdWVzdC5pZH1gIDogXCJcIn0gZm9yIENBICR7dGhpcy5jb25maWcuY2FOYW1lfWBcbiAgICApO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBDZXJ0aWZpY2F0ZVJlc3BvbnNlID0gKFxuICAgICAgYXdhaXQgdGhpcy5jZXJ0aWZpY2F0ZXMuZ2V0Q2VydGlmaWNhdGVzKHJlcXVlc3QgfHwge30sIHRoaXMudXNlcilcbiAgICApLnJlc3VsdDtcbiAgICBsb2cudmVyYm9zZShgRm91bmQgJHtyZXNwb25zZS5jZXJ0cy5sZW5ndGh9IGNlcnRpZmljYXRlc2ApO1xuICAgIGxvZy5kZWJ1ZyhyZXNwb25zZS5jZXJ0cyk7XG4gICAgcmV0dXJuIChcbiAgICAgIGRvTWFwID8gcmVzcG9uc2UuY2VydHMubWFwKChjKSA9PiBjLlBFTSkgOiByZXNwb25zZVxuICAgICkgYXMgTUFQIGV4dGVuZHMgZmFsc2UgPyBDZXJ0aWZpY2F0ZVJlc3BvbnNlIDogc3RyaW5nW107XG4gIH1cblxuICBhc3luYyBnZXRJZGVudGl0aWVzKGN0eDogQ29udGV4dCk6IFByb21pc2U8RmFicmljSWRlbnRpdHlbXT4ge1xuICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMuZ2V0SWRlbnRpdGllcyk7XG4gICAgbG9nLnZlcmJvc2UoYFJldHJpZXZpbmcgSWRlbnRpdGllcyB1bmRlciBDQSAke3RoaXMuY29uZmlnLmNhTmFtZX1gKTtcbiAgICBjb25zdCByZXNwb25zZTogSWRlbnRpdHlSZXNwb25zZSA9IChhd2FpdCB0aGlzLmlkZW50aXRpZXMuZ2V0QWxsKHRoaXMudXNlcikpXG4gICAgICAucmVzdWx0O1xuICAgIGxvZy52ZXJib3NlKGBGb3VuZCAke3Jlc3BvbnNlLmlkZW50aXRpZXMubGVuZ3RofSBJZGVudGl0aWVzYCk7XG4gICAgbG9nLmRlYnVnKHJlc3BvbnNlLmlkZW50aXRpZXMpO1xuICAgIHJldHVybiByZXNwb25zZS5pZGVudGl0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZSBhZmZpbGlhdGlvbnMgZnJvbSB0aGUgQ0EuXG4gICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGZvciB0aGUgbGlzdCBvZiBhZmZpbGlhdGlvbnMgYXZhaWxhYmxlIHVuZGVyIHRoZSBjb25maWd1cmVkIENBLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBhZmZpbGlhdGlvbnMgcmVzdWx0IHBheWxvYWQuXG4gICAqL1xuICBhc3luYyBnZXRBZmZpbGlhdGlvbnMoY3R4OiBDb250ZXh0KSB7XG4gICAgY29uc3QgbG9nID0gY3R4LmxvZ2dlci5mb3IodGhpcy5nZXRBZmZpbGlhdGlvbnMpO1xuICAgIGxvZy52ZXJib3NlKGBSZXRyaWV2aW5nIEFmZmlsaWF0aW9ucyB1bmRlciBDQSAke3RoaXMuY29uZmlnLmNhTmFtZX1gKTtcbiAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLmFmZmlsaWF0aW9ucy5nZXRBbGwodGhpcy51c2VyKSkucmVzdWx0O1xuICAgIGxvZy52ZXJib3NlKGBGb3VuZCAke3Jlc3BvbnNlLmEubGVuZ3RofSBBZmZpbGlhdGlvbnNgKTtcbiAgICBsb2cuZGVidWcoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VFcnJvcihlOiBFcnJvcikge1xuICAgIGNvbnN0IHJlZ2V4cCA9IC8uKmNvZGU6XFxzKFxcZCspLio/bWVzc2FnZTpcXHNbXCInXSguKylbXCInXS9ncztcbiAgICBjb25zdCBtYXRjaCA9IHJlZ2V4cC5leGVjKGUubWVzc2FnZSk7XG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIG5ldyBSZWdpc3RyYXRpb25FcnJvcihlKTtcbiAgICBjb25zdCBbLCBjb2RlLCBtZXNzYWdlXSA9IG1hdGNoO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSBcIjc0XCI6XG4gICAgICBjYXNlIFwiNzFcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgY2FzZSBcIjIwXCI6XG4gICAgICAgIHJldHVybiBuZXcgQXV0aG9yaXphdGlvbkVycm9yKG1lc3NhZ2UpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdpc3RyYXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlYWQgaWRlbnRpdHkgZGV0YWlscyBmcm9tIHRoZSBDQSBieSBlbnJvbGxtZW50IElELlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYW5kIHZhbGlkYXRlcyBhIHNpbmdsZSBpZGVudGl0eSwgdGhyb3dpbmcgTm90Rm91bmRFcnJvciB3aGVuIG1pc3NpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnJvbGxtZW50SWQgLSBFbnJvbGxtZW50IElEIHRvIGxvb2t1cC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxGYWJyaWNJZGVudGl0eT59IFRoZSBpZGVudGl0eSBkZXRhaWxzIHN0b3JlZCBpbiB0aGUgQ0EuXG4gICAqL1xuICBhc3luYyByZWFkKFxuICAgIGVucm9sbG1lbnRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICk6IFByb21pc2U8RmFicmljSWRlbnRpdHk+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuUkVBRCwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMucmVhZFxuICAgICk7XG4gICAgbG9nLnZlcmJvc2UoYFJldHJpZXZpbmcgaWRlbnRpdHkgd2l0aCBlbnJvbGxtZW50IElEICR7ZW5yb2xsbWVudElkfWApO1xuICAgIGxldCByZXN1bHQ6IElTZXJ2aWNlUmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuaWRlbnRpdGllcy5nZXRPbmUoZW5yb2xsbWVudElkLCB0aGlzLnVzZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBDb3VsZG4ndCBmaW5kIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYENvdWxkbid0IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtyZXN1bHQuZXJyb3JzLmpvaW4oXCJcXG5cIil9YFxuICAgICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucmVzdWx0IGFzIEZhYnJpY0lkZW50aXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBhIG5ldyBpZGVudGl0eSB3aXRoIHRoZSBDQS5cbiAgICogQHN1bW1hcnkgU3VibWl0cyBhIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IGZvciBhIG5ldyBlbnJvbGxtZW50IElELCByZXR1cm5pbmcgdGhlIGVucm9sbG1lbnQgc2VjcmV0IHVwb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gbW9kZWwgLSBDcmVkZW50aWFscyBjb250YWluaW5nIHVzZXJOYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdXBlclVzZXI9ZmFsc2VdIC0gV2hldGhlciB0byByZWdpc3RlciB0aGUgaWRlbnRpdHkgYXMgYSBzdXBlciB1c2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FmZmlsaWF0aW9uPVwiXCJdIC0gQWZmaWxpYXRpb24gc3RyaW5nIChlLmcuLCBvcmcxLmRlcGFydG1lbnQxKS5cbiAgICogQHBhcmFtIHtDQV9ST0xFIHwgc3RyaW5nfSBbdXNlclJvbGVdIC0gUm9sZSB0byBhc3NpZ24gdG8gdGhlIGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge0lLZXlWYWx1ZUF0dHJpYnV0ZX0gW2F0dHJzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMgdG8gYXR0YWNoIHRvIHRoZSBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFttYXhFbnJvbGxtZW50c10gLSBNYXhpbXVtIG51bWJlciBvZiBlbnJvbGxtZW50cyBhbGxvd2VkIGZvciB0aGUgaWRlbnRpdHkuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIGVucm9sbG1lbnQgc2VjcmV0IGZvciB0aGUgcmVnaXN0ZXJlZCBpZGVudGl0eS5cbiAgICovXG4gIGFzeW5jIHJlZ2lzdGVyKFxuICAgIG1vZGVsOiBDcmVkZW50aWFscyxcbiAgICBpc1N1cGVyVXNlcjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGFmZmlsaWF0aW9uOiBzdHJpbmcgPSBcIlwiLFxuICAgIHVzZXJSb2xlPzogQ0FfUk9MRSB8IHN0cmluZyxcbiAgICBhdHRycz86IElLZXlWYWx1ZUF0dHJpYnV0ZSxcbiAgICBtYXhFbnJvbGxtZW50cz86IG51bWJlcixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJyZWdpc3RlclwiLCB0cnVlKSkuZm9yKFxuICAgICAgdGhpcy5yZWdpc3RlclxuICAgICk7XG5cbiAgICBsZXQgcmVnaXN0cmF0aW9uOiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUsIHBhc3N3b3JkIH0gPSBtb2RlbDtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICBlbnJvbGxtZW50SUQ6IHVzZXJOYW1lIGFzIHN0cmluZyxcbiAgICAgICAgZW5yb2xsbWVudFNlY3JldDogcGFzc3dvcmQsXG4gICAgICAgIGFmZmlsaWF0aW9uOiBhZmZpbGlhdGlvbixcbiAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgIG1heEVucm9sbG1lbnRzOiBtYXhFbnJvbGxtZW50cyxcbiAgICAgIH0gYXMgSVJlZ2lzdGVyUmVxdWVzdDtcbiAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHRoaXMuY2xpZW50LnJlZ2lzdGVyKHByb3BzLCB0aGlzLnVzZXIpO1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBSZWdpc3RyYXRpb24gZm9yICR7dXNlck5hbWV9IGNyZWF0ZWQgd2l0aCB1c2VyIHR5cGUgJHt1c2VyUm9sZSA/PyBcIlVuZGVmaW5lZCBSb2xlXCJ9ICR7aXNTdXBlclVzZXIgPyBcImFzIHN1cGVyIHVzZXJcIiA6IFwiXCJ9YFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZ2lzdHJhdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0aWMgaWRlbnRpdHlGcm9tRW5yb2xsbWVudChcbiAgICBlbnJvbGxtZW50OiBJRW5yb2xsUmVzcG9uc2UsXG4gICAgbXNwSWQ6IHN0cmluZyxcbiAgICBjdHg6IENvbnRleHRcbiAgKTogSWRlbnRpdHkge1xuICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMuaWRlbnRpdHlGcm9tRW5yb2xsbWVudCk7XG4gICAgY29uc3QgeyBjZXJ0aWZpY2F0ZSwga2V5LCByb290Q2VydGlmaWNhdGUgfSA9IGVucm9sbG1lbnQ7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgR2VuZXJhdGluZyBJZGVudGl0eSBmcm9tIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGV9IGluIG1zcCAke21zcElkfWBcbiAgICApO1xuICAgIGNvbnN0IGNsaWVudElkID0gQ3J5cHRvVXRpbHMuZmFicmljSWRGcm9tQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUpO1xuICAgIGNvbnN0IGlkID0gQ3J5cHRvVXRpbHMuZW5jb2RlKGNsaWVudElkKTtcbiAgICBsb2cuZGVidWcoYElkZW50aXR5ICR7Y2xpZW50SWR9IGFuZCBlbmNvZGVkSWQgJHtpZH1gKTtcbiAgICByZXR1cm4gbmV3IElkZW50aXR5KHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgY2VydGlmaWNhdGU6IGNlcnRpZmljYXRlLFxuICAgICAgICBwcml2YXRlS2V5OiBrZXkudG9CeXRlcygpLFxuICAgICAgICByb290Q2VydGlmaWNhdGU6IHJvb3RDZXJ0aWZpY2F0ZSxcbiAgICAgIH0sXG4gICAgICBtc3BJZDogbXNwSWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEVucm9sbCBhbiBpZGVudGl0eSB3aXRoIHRoZSBDQSB1c2luZyBhIHJlZ2lzdHJhdGlvbiBzZWNyZXQuXG4gICAqIEBzdW1tYXJ5IEV4Y2hhbmdlcyB0aGUgZW5yb2xsbWVudCBJRCBhbmQgc2VjcmV0IGZvciBjZXJ0aWZpY2F0ZXMsIHJldHVybmluZyBhIGNvbnN0cnVjdGVkIElkZW50aXR5IG1vZGVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5yb2xsbWVudElkIC0gRW5yb2xsbWVudCBJRCB0byBlbnJvbGwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb24gLSBFbnJvbGxtZW50IHNlY3JldCByZXR1cm5lZCBhdCByZWdpc3RyYXRpb24gdGltZS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBjcmVkZW50aWFscy5cbiAgICovXG4gIGFzeW5jIGVucm9sbChcbiAgICBlbnJvbGxtZW50SWQ6IHN0cmluZyxcbiAgICByZWdpc3RyYXRpb246IHN0cmluZyxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPElkZW50aXR5PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiZW5yb2xsXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmVucm9sbFxuICAgICk7XG4gICAgbGV0IGlkZW50aXR5OiBJZGVudGl0eTtcbiAgICB0cnkge1xuICAgICAgbG9nLmRlYnVnKGBFbnJvbGxpbmcgJHtlbnJvbGxtZW50SWR9YCk7XG4gICAgICBjb25zdCBlbnJvbGxtZW50OiBJRW5yb2xsUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5lbnJvbGwoe1xuICAgICAgICBlbnJvbGxtZW50SUQ6IGVucm9sbG1lbnRJZCxcbiAgICAgICAgZW5yb2xsbWVudFNlY3JldDogcmVnaXN0cmF0aW9uLFxuICAgICAgfSk7XG4gICAgICBpZGVudGl0eSA9IEZhYnJpY0lkZW50aXR5U2VydmljZS5pZGVudGl0eUZyb21FbnJvbGxtZW50KFxuICAgICAgICBlbnJvbGxtZW50LFxuICAgICAgICB0aGlzLmNvbmZpZy5jYU5hbWUsXG4gICAgICAgIGN0eFxuICAgICAgKTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgU3VjY2Vzc2Z1bGx5IGVucm9sbGVkICR7ZW5yb2xsbWVudElkfSB1bmRlciAke3RoaXMuY29uZmlnLmNhTmFtZX0gYXMgJHtpZGVudGl0eS5pZH1gXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGFuZCBlbnJvbGwgYSBuZXcgaWRlbnRpdHkgaW4gb25lIHN0ZXAuXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhIG5ldyBlbnJvbGxtZW50IElEIHdpdGggdGhlIENBIGFuZCBpbW1lZGlhdGVseSBleGNoYW5nZXMgdGhlIHNlY3JldCB0byBlbnJvbGwsIHJldHVybmluZyB0aGUgY3JlYXRlZCBJZGVudGl0eS5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gbW9kZWwgLSBDcmVkZW50aWFscyBmb3IgdGhlIG5ldyBpZGVudGl0eSBjb250YWluaW5nIHVzZXJOYW1lIGFuZCBwYXNzd29yZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdXBlclVzZXI9ZmFsc2VdIC0gV2hldGhlciB0byByZWdpc3RlciB0aGUgaWRlbnRpdHkgYXMgYSBzdXBlciB1c2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FmZmlsaWF0aW9uPVwiXCJdIC0gQWZmaWxpYXRpb24gc3RyaW5nIChlLmcuLCBvcmcxLmRlcGFydG1lbnQxKS5cbiAgICogQHBhcmFtIHtDQV9ST0xFIHwgc3RyaW5nfSBbdXNlclJvbGVdIC0gUm9sZSB0byBhc3NpZ24gdG8gdGhlIGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge0lLZXlWYWx1ZUF0dHJpYnV0ZX0gW2F0dHJzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMgdG8gYXR0YWNoIHRvIHRoZSBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFttYXhFbnJvbGxtZW50c10gLSBNYXhpbXVtIG51bWJlciBvZiBlbnJvbGxtZW50cyBhbGxvd2VkIGZvciB0aGUgaWRlbnRpdHkuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8SWRlbnRpdHk+fSBUaGUgZW5yb2xsZWQgaWRlbnRpdHkuXG4gICAqL1xuICBhc3luYyByZWdpc3RlckFuZEVucm9sbChcbiAgICBtb2RlbDogQ3JlZGVudGlhbHMsXG4gICAgaXNTdXBlclVzZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhZmZpbGlhdGlvbjogc3RyaW5nID0gXCJcIixcbiAgICB1c2VyUm9sZT86IENBX1JPTEUgfCBzdHJpbmcsXG4gICAgYXR0cnM/OiBJS2V5VmFsdWVBdHRyaWJ1dGUsXG4gICAgbWF4RW5yb2xsbWVudHM/OiBudW1iZXIsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxJZGVudGl0eT4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJyZWdpc3Rlci1lbnJvbGxcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMucmVnaXN0ZXJBbmRFbnJvbGxcbiAgICApO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHRoaXMucmVnaXN0ZXIoXG4gICAgICBtb2RlbCxcbiAgICAgIGlzU3VwZXJVc2VyLFxuICAgICAgYWZmaWxpYXRpb24sXG4gICAgICB1c2VyUm9sZSxcbiAgICAgIGF0dHJzLFxuICAgICAgbWF4RW5yb2xsbWVudHMsXG4gICAgICBjdHhcbiAgICApO1xuICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IG1vZGVsO1xuICAgIHJldHVybiB0aGlzLmVucm9sbCh1c2VyTmFtZSBhcyBzdHJpbmcsIHJlZ2lzdHJhdGlvbiwgY3R4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmUtZW5yb2xsIGFuIGV4aXN0aW5nIGlkZW50aXR5IHVzaW5nIGl0cyBjdXJyZW50IGVucm9sbG1lbnQuXG4gICAqIEBzdW1tYXJ5IFJlbmV3cyB0aGUgZW5yb2xsbWVudCBjZXJ0aWZpY2F0ZSBieSBjYWxsaW5nIHRoZSBDQSByZWVucm9sbC5cbiAgICogQHBhcmFtIHtVc2VyfSBjdXJyZW50VXNlciAtIEFscmVhZHkgZW5yb2xsZWQgdXNlciwgbXVzdCBoYXZlIGEgc2lnbmluZyBpZGVudGl0eS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSByZW5ld2VkIGlkZW50aXR5IG9iamVjdCB3aXRoIG5ldyBjcmVkZW50aWFscy5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZUlkZW50aXR5KFxuICAgIGVucm9sbG1lbnRJZDogc3RyaW5nLFxuICAgIGlkZW50aXR5OiB7IGNlcnRpZmljYXRlOiBzdHJpbmc7IHByaXZhdGVLZXk6IHN0cmluZyB9LFxuICAgIGlkZW50aXR5UmVxdWVzdDogSUlkZW50aXR5UmVxdWVzdCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPElkZW50aXR5PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwicmVlbnJvbGxcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMudXBkYXRlSWRlbnRpdHlcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxvZy5pbmZvKGBSZW5ld2luZyBpZGVudGl0eSBmb3IgJHtlbnJvbGxtZW50SWR9YCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBhdHRyaWJ1dGVzIGluIHRoZSBDQSByZWdpc3RyeSAoYWRtaW4gb3BlcmF0aW9uKS4gVGhpcyBjaGFuZ2VzIHRoZSBcInNvdXJjZSBvZiB0cnV0aFwiLlxuICAgICAgY29uc3QgaWRlbnRpdHlTZXJ2aWNlID0gdGhpcy5jbGllbnQubmV3SWRlbnRpdHlTZXJ2aWNlKCk7XG5cbiAgICAgIGNvbnN0IGNhVXNlcklkZW50aXR5ID0gKGF3YWl0IGlkZW50aXR5U2VydmljZS5nZXRPbmUoXG4gICAgICAgIGVucm9sbG1lbnRJZCxcbiAgICAgICAgdGhpcy51c2VyXG4gICAgICApKSBhcyB7IHJlc3VsdDogeyBhdHRycz86IElLZXlWYWx1ZUF0dHJpYnV0ZVtdIH0gfTtcblxuICAgICAgYXdhaXQgaWRlbnRpdHlTZXJ2aWNlLnVwZGF0ZShlbnJvbGxtZW50SWQsIGlkZW50aXR5UmVxdWVzdCwgdGhpcy51c2VyKTsgLy8gYXMgSVNlcnZpY2VSZXNwb25zZSAmIHsgcmVzdWx0OiBJSWRlbnRpdHlSZXF1ZXN0IH07XG5cbiAgICAgIC8vIFJlZW5yb2xsIGFzIHRoZSB1c2VyLiBSZXF1ZXN0IG11c3QgYmUgc2lnbmVkIHVzaW5nIHRoZSBleGlzdGluZyBjZXJ0aWZpY2F0ZS5cbiAgICAgIGNvbnN0IHJlZW5yb2xsVXNlciA9IFVzZXIuY3JlYXRlVXNlcihcbiAgICAgICAgZW5yb2xsbWVudElkLFxuICAgICAgICBcIlwiLCAvLyBlbnJvbGxtZW50U2VjcmV0IG5vdCByZXF1aXJlZCBmb3IgcmVlbnJvbGxcbiAgICAgICAgdGhpcy51c2VyLmdldE1zcGlkKCksXG4gICAgICAgIGlkZW50aXR5LmNlcnRpZmljYXRlLFxuICAgICAgICBpZGVudGl0eS5wcml2YXRlS2V5XG4gICAgICApO1xuICAgICAgcmVlbnJvbGxVc2VyLnNldENyeXB0b1N1aXRlKHRoaXMudXNlci5nZXRDcnlwdG9TdWl0ZSgpKTtcblxuICAgICAgY29uc3QgZW5yb2xsbWVudEF0dHJzOiBJQXR0cmlidXRlUmVxdWVzdFtdID0gKFxuICAgICAgICBjYVVzZXJJZGVudGl0eS5yZXN1bHQuYXR0cnMgfHwgW11cbiAgICAgICkubWFwKCh7IG5hbWUgfSkgPT4gKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb3B0aW9uYWw6IGZhbHNlLFxuICAgICAgfSkpO1xuXG4gICAgICBjb25zdCBlbnJvbGxtZW50ID0gYXdhaXQgdGhpcy5jbGllbnQucmVlbnJvbGwoXG4gICAgICAgIHJlZW5yb2xsVXNlcixcbiAgICAgICAgZW5yb2xsbWVudEF0dHJzXG4gICAgICApO1xuXG4gICAgICBjb25zdCByZW5ld2VkSWRlbnRpdHkgPSBGYWJyaWNJZGVudGl0eVNlcnZpY2UuaWRlbnRpdHlGcm9tRW5yb2xsbWVudChcbiAgICAgICAgZW5yb2xsbWVudCxcbiAgICAgICAgdGhpcy5jb25maWcuY2FOYW1lLFxuICAgICAgICBjdHhcbiAgICAgICk7XG5cbiAgICAgIC8vIFJldm9rZSB0aGUgcHJldmlvdXMgY2VydGlmaWNhdGUgb25seSwgc28gdGhlIG9sZCBjZXJ0IGJlY29tZXMgaW52YWxpZC5cbiAgICAgIGxvZy5kZWJ1ZyhgUmV2b2tpbmcgcHJldmlvdXMgY2VydGlmaWNhdGVzIGZvciAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgIGNvbnN0IHsgYWtpLCBzZXJpYWwgfSA9IGdldEFraUFuZFNlcmlhbEZyb21DZXJ0KGlkZW50aXR5LmNlcnRpZmljYXRlKTtcbiAgICAgIGF3YWl0IHRoaXMucmV2b2tlKGVucm9sbG1lbnRJZCwgeyBha2ksIHNlcmlhbCB9LCBhcmdzKTtcblxuICAgICAgbG9nLmRlYnVnKGBSZW5ldyBpZGVudGl0eSBzdWNjZXNzZnVsIGZvciAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgIHJldHVybiByZW5ld2VkSWRlbnRpdHk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZXMgdGhlIGVucm9sbG1lbnQgb2YgYW4gaWRlbnRpdHkgd2l0aCB0aGUgc3BlY2lmaWVkIGVucm9sbG1lbnQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBlbnJvbGxtZW50SWQgLSBUaGUgZW5yb2xsbWVudCBJRCBvZiB0aGUgaWRlbnRpdHkgdG8gYmUgcmV2b2tlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgcmV2b2NhdGlvbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIEB0aHJvd3Mge05vdEZvdW5kRXJyb3J9IElmIHRoZSBlbnJvbGxtZW50IHdpdGggdGhlIHNwZWNpZmllZCBJRCBkb2VzIG5vdCBleGlzdC5cbiAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgdGhlcmUgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZSByZXZvY2F0aW9uIHByb2Nlc3MuXG4gICAqL1xuICBhc3luYyByZXZva2UoXG4gICAgZW5yb2xsbWVudElkOiBzdHJpbmcsXG4gICAgcmV2b2tlT3B0aW9uczogT21pdDxJUmV2b2tlUmVxdWVzdCwgXCJlbnJvbGxtZW50SURcIj4sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxJU2VydmljZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInJldm9rZVwiLCB0cnVlKSkuZm9yKHRoaXMucmV2b2tlKTtcbiAgICBsb2cudmVyYm9zZShgUmV2b2tpbmcgaWRlbnRpdHkgd2l0aCBlbnJvbGxtZW50IElEICR7ZW5yb2xsbWVudElkfWApO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgdGhpcy5yZWFkKGVucm9sbG1lbnRJZCk7XG4gICAgaWYgKCFpZGVudGl0eSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfWBcbiAgICAgICk7XG4gICAgbGV0IHJlc3VsdDogSVNlcnZpY2VSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVhc29uID1cbiAgICAgICAgQm9vbGVhbihyZXZva2VPcHRpb25zLnNlcmlhbCkgfHwgQm9vbGVhbihyZXZva2VPcHRpb25zLmFraSlcbiAgICAgICAgICA/IFwiUmV2b2tlIFVzZXIgQ2VydGlmaWNhdGVcIlxuICAgICAgICAgIDogXCJVc2VyIERlbGV0aW9uXCI7XG5cbiAgICAgIGNvbnN0IHJldm9rZVJlcXVlc3Q6IElSZXZva2VSZXF1ZXN0ID0ge1xuICAgICAgICByZWFzb24sXG4gICAgICAgIC4uLnJldm9rZU9wdGlvbnMsXG4gICAgICAgIGVucm9sbG1lbnRJRDogaWRlbnRpdHkuaWQsXG4gICAgICB9O1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXZva2UocmV2b2tlUmVxdWVzdCwgdGhpcy51c2VyKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCByZXZva2UgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtlfWBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCByZXZva2UgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtyZXN1bHQuZXJyb3JzLmpvaW4oXCJcXG5cIil9YFxuICAgICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljSWRlbnRpdHlTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRmFicmljSWRlbnRpdHlTZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlDQUFtRztBQUNuRyx3RUFBZ0Q7QUFDaEQsMkRBQXNHO0FBQ3RHLDRDQUFtRTtBQUNuRSxpREFBcUM7QUFDckMsd0RBQTZEO0FBQzdELHNEQUFtRDtBQUNuRCw4Q0FBNkM7QUFDN0MsTUFBYSxxQkFBc0IsU0FBUSx5QkFBa0I7SUFDekQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ1gsTUFBTSxJQUFJLDZCQUFhLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUc7UUFDbEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxF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QUFHLGFBQWE7Z0JBQ2hCLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRTthQUM1QixDQUFDO1lBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNQLE1BQU0sSUFBSSw2QkFBYSxDQUFDLHVDQUF1QyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2YsTUFBTSxJQUFJLDZCQUFhLENBQUMsdUNBQXVDLFlBQVksS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEgsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKO0FBblRELHNEQW1UQztBQUNELDB1dENBQTB1dEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRob3JpemF0aW9uRXJyb3IsIENsaWVudEJhc2VkU2VydmljZSwgQ29udGV4dCwgUGVyc2lzdGVuY2VLZXlzLCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IEZhYnJpY0NBU2VydmljZXMgZnJvbSBcImZhYnJpYy1jYS1jbGllbnRcIjtcbmltcG9ydCB7IENvbmZsaWN0RXJyb3IsIEludGVybmFsRXJyb3IsIE5vdEZvdW5kRXJyb3IsIE9wZXJhdGlvbktleXMsIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3JlVXRpbHMsIGdldEFraUFuZFNlcmlhbEZyb21DZXJ0IH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiZmFicmljLWNvbW1vblwiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi8uLi8uLi9zaGFyZWQvZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gXCIuLy4uLy4uL3NoYXJlZC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgQ3J5cHRvVXRpbHMgfSBmcm9tIFwiLi8uLi9jcnlwdG8uanNcIjtcbmV4cG9ydCBjbGFzcyBGYWJyaWNJZGVudGl0eVNlcnZpY2UgZXh0ZW5kcyBDbGllbnRCYXNlZFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBnZXQgcm9vdENsaWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50W1wiX0ZhYnJpY0NhU2VydmljZXNcIl07XG4gICAgfVxuICAgIGdldCB1c2VyKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3VzZXIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkZhYnJpYyBpZGVudGl0eSBzZXJ2aWNlIG5vdCBwcm9wZXJseSBzZXR1cDogbWlzc2luZyB1c2VyXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5fdXNlcjtcbiAgICB9XG4gICAgZ2V0IGNlcnRpZmljYXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdENsaWVudC5uZXdDZXJ0aWZpY2F0ZVNlcnZpY2UoKTtcbiAgICB9XG4gICAgZ2V0IGFmZmlsaWF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm5ld0FmZmlsaWF0aW9uU2VydmljZSgpO1xuICAgIH1cbiAgICBnZXQgaWRlbnRpdGllcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm5ld0lkZW50aXR5U2VydmljZSgpO1xuICAgIH1cbiAgICBhc3luYyBnZXRVc2VyKGNmZywgY3R4KSB7XG4gICAgICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMuZ2V0VXNlcik7XG4gICAgICAgIGNvbnN0IHsgY2FOYW1lLCBjYUNlcnQsIGNhS2V5LCB1cmwsIGhzbSB9ID0gY2ZnO1xuICAgICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgQ0EgdXNlciBmb3IgJHtjYU5hbWV9IGF0ICR7dXJsfWApO1xuICAgICAgICBsb2cudmVyYm9zZShgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7Y2FDZXJ0fWApO1xuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUNlcnQpO1xuICAgICAgICBsZXQga2V5O1xuICAgICAgICBpZiAoIWhzbSkge1xuICAgICAgICAgICAgaWYgKCFjYUtleSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNaXNzaW5nIGNhS2V5IGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfS4gUHJvdmlkZSBhIGtleSBkaXJlY3Rvcnkgb3IgY29uZmlndXJlIEhTTSBzdXBwb3J0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZXRyaWV2aW5nIENBIGtleSBmcm9tICR7Y2FLZXl9YCk7XG4gICAgICAgICAgICBrZXkgPSBhd2FpdCBDb3JlVXRpbHMuZ2V0Rmlyc3REaXJGaWxlTmFtZUNvbnRlbnQoY2FLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBVc2luZyBIU00gY29uZmlndXJhdGlvbiBmb3IgQ0EgJHtjYU5hbWV9IHdpdGggbGlicmFyeSAke2hzbS5saWJyYXJ5fWApO1xuICAgICAgICB9XG4gICAgICAgIGxvZy5kZWJ1ZyhgTG9hZGluZyBBZG1pbiB1c2VyIGZvciBjYSAke2NhTmFtZX1gKTtcbiAgICAgICAgdGhpcy5fdXNlciA9IGF3YWl0IENvcmVVdGlscy5nZXRDQVVzZXIoXCJhZG1pblwiLCBrZXksIGNlcnRpZmljYXRlLCBjYU5hbWUsIHtcbiAgICAgICAgICAgIGhzbSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFBlcnNpc3RlbmNlS2V5cy5JTklUSUFMSVpBVElPTiwgdHJ1ZSkpLmZvcih0aGlzLmluaXRpYWxpemUpO1xuICAgICAgICBjb25zdCBbY29uZmlnXSA9IGFyZ3M7XG4gICAgICAgIGlmICghY29uZmlnKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNzaW5nIEZhYnJpYyBDQSBjb25maWd1cmF0aW9uXCIpO1xuICAgICAgICBjb25zdCB7IHVybCwgdGxzLCBjYU5hbWUgfSA9IGNvbmZpZztcbiAgICAgICAgbG9nLmluZm8oYEluaXRpYWxpemluZyBDQSBDbGllbnQgZm9yIENBICR7Y29uZmlnLmNhTmFtZX0gYXQgJHtjb25maWcudXJsfWApO1xuICAgICAgICBjb25zdCB7IHRydXN0ZWRSb290cywgdmVyaWZ5IH0gPSB0bHM7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0cnVzdGVkUm9vdHNbMF07XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7cm9vdH0uIGN3ZDogJHtwcm9jZXNzLmN3ZCgpfWApO1xuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaWxlQ29udGVudChyb290KTtcbiAgICAgICAgbG9nLmRlYnVnKGBDQSBDZXJ0aWZpY2F0ZTogJHtjZXJ0aWZpY2F0ZS50b1N0cmluZygpfWApO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBuZXcgRmFicmljQ0FTZXJ2aWNlcyh1cmwsIHtcbiAgICAgICAgICAgIHRydXN0ZWRSb290czogQnVmZmVyLmZyb20oY2VydGlmaWNhdGUpLFxuICAgICAgICAgICAgdmVyaWZ5LFxuICAgICAgICB9LCBjYU5hbWUpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKGNvbmZpZywgY3R4KTtcbiAgICAgICAgbG9nLmRlYnVnKGBDQSB1c2VyIGxvYWRlZDogJHt1c2VyLmdldE5hbWUoKX1gKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGNsaWVudCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0Q2VydGlmaWNhdGVzKHJlcXVlc3QsIGRvTWFwID0gdHJ1ZSwgLi4uYXJncykge1xuICAgICAgICBpZiAocmVxdWVzdCBpbnN0YW5jZW9mIENvbnRleHQpIHtcbiAgICAgICAgICAgIGFyZ3MgPSBbcmVxdWVzdF07XG4gICAgICAgICAgICBkb01hcCA9IHRydWU7XG4gICAgICAgICAgICByZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiByZXF1ZXN0ID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgZG9NYXAgPSByZXF1ZXN0O1xuICAgICAgICAgICAgcmVxdWVzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG9NYXAgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICBhcmdzID0gW2RvTWFwLCAuLi5hcmdzXTtcbiAgICAgICAgICAgIGRvTWFwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuUkVBRCwgdHJ1ZSkpLmZvcih0aGlzLmdldENlcnRpZmljYXRlcyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBjZXJ0aWZpY2F0ZXMke3JlcXVlc3QgPyBgIGZvciAke3JlcXVlc3QuaWR9YCA6IFwiXCJ9IGZvciBDQSAke3RoaXMuY29uZmlnLmNhTmFtZX1gKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgdGhpcy5jZXJ0aWZpY2F0ZXMuZ2V0Q2VydGlmaWNhdGVzKHJlcXVlc3QgfHwge30sIHRoaXMudXNlcikpLnJlc3VsdDtcbiAgICAgICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7cmVzcG9uc2UuY2VydHMubGVuZ3RofSBjZXJ0aWZpY2F0ZXNgKTtcbiAgICAgICAgbG9nLmRlYnVnKHJlc3BvbnNlLmNlcnRzKTtcbiAgICAgICAgcmV0dXJuIChkb01hcCA/IHJlc3BvbnNlLmNlcnRzLm1hcCgoYykgPT4gYy5QRU0pIDogcmVzcG9uc2UpO1xuICAgIH1cbiAgICBhc3luYyBnZXRJZGVudGl0aWVzKGN0eCkge1xuICAgICAgICBjb25zdCBsb2cgPSBjdHgubG9nZ2VyLmZvcih0aGlzLmdldElkZW50aXRpZXMpO1xuICAgICAgICBsb2cudmVyYm9zZShgUmV0cmlldmluZyBJZGVudGl0aWVzIHVuZGVyIENBICR7dGhpcy5jb25maWcuY2FOYW1lfWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLmlkZW50aXRpZXMuZ2V0QWxsKHRoaXMudXNlcikpXG4gICAgICAgICAgICAucmVzdWx0O1xuICAgICAgICBsb2cudmVyYm9zZShgRm91bmQgJHtyZXNwb25zZS5pZGVudGl0aWVzLmxlbmd0aH0gSWRlbnRpdGllc2ApO1xuICAgICAgICBsb2cuZGVidWcocmVzcG9uc2UuaWRlbnRpdGllcyk7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5pZGVudGl0aWVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgYWZmaWxpYXRpb25zIGZyb20gdGhlIENBLlxuICAgICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGZvciB0aGUgbGlzdCBvZiBhZmZpbGlhdGlvbnMgYXZhaWxhYmxlIHVuZGVyIHRoZSBjb25maWd1cmVkIENBLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGFmZmlsaWF0aW9ucyByZXN1bHQgcGF5bG9hZC5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBZmZpbGlhdGlvbnMoY3R4KSB7XG4gICAgICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMuZ2V0QWZmaWxpYXRpb25zKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYFJldHJpZXZpbmcgQWZmaWxpYXRpb25zIHVuZGVyIENBICR7dGhpcy5jb25maWcuY2FOYW1lfWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLmFmZmlsaWF0aW9ucy5nZXRBbGwodGhpcy51c2VyKSkucmVzdWx0O1xuICAgICAgICBsb2cudmVyYm9zZShgRm91bmQgJHtyZXNwb25zZS5hLmxlbmd0aH0gQWZmaWxpYXRpb25zYCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhKU09OLnN0cmluZ2lmeShyZXNwb25zZSkpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIHBhcnNlRXJyb3IoZSkge1xuICAgICAgICBjb25zdCByZWdleHAgPSAvLipjb2RlOlxccyhcXGQrKS4qP21lc3NhZ2U6XFxzW1wiJ10oLispW1wiJ10vZ3M7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWMoZS5tZXNzYWdlKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnaXN0cmF0aW9uRXJyb3IoZSk7XG4gICAgICAgIGNvbnN0IFssIGNvZGUsIG1lc3NhZ2VdID0gbWF0Y2g7XG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcIjc0XCI6XG4gICAgICAgICAgICBjYXNlIFwiNzFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICBjYXNlIFwiMjBcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEF1dGhvcml6YXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdpc3RyYXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVhZCBpZGVudGl0eSBkZXRhaWxzIGZyb20gdGhlIENBIGJ5IGVucm9sbG1lbnQgSUQuXG4gICAgICogQHN1bW1hcnkgUmV0cmlldmVzIGFuZCB2YWxpZGF0ZXMgYSBzaW5nbGUgaWRlbnRpdHksIHRocm93aW5nIE5vdEZvdW5kRXJyb3Igd2hlbiBtaXNzaW5nLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbnJvbGxtZW50SWQgLSBFbnJvbGxtZW50IElEIHRvIGxvb2t1cC5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEZhYnJpY0lkZW50aXR5Pn0gVGhlIGlkZW50aXR5IGRldGFpbHMgc3RvcmVkIGluIHRoZSBDQS5cbiAgICAgKi9cbiAgICBhc3luYyByZWFkKGVucm9sbG1lbnRJZCwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuUkVBRCwgdHJ1ZSkpLmZvcih0aGlzLnJlYWQpO1xuICAgICAgICBsb2cudmVyYm9zZShgUmV0cmlldmluZyBpZGVudGl0eSB3aXRoIGVucm9sbG1lbnQgSUQgJHtlbnJvbGxtZW50SWR9YCk7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmlkZW50aXRpZXMuZ2V0T25lKGVucm9sbG1lbnRJZCwgdGhpcy51c2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYENvdWxkbid0IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtlfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ291bGRuJ3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke3Jlc3VsdC5lcnJvcnMuam9pbihcIlxcblwiKX1gKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBhIG5ldyBpZGVudGl0eSB3aXRoIHRoZSBDQS5cbiAgICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgcmVnaXN0cmF0aW9uIHJlcXVlc3QgZm9yIGEgbmV3IGVucm9sbG1lbnQgSUQsIHJldHVybmluZyB0aGUgZW5yb2xsbWVudCBzZWNyZXQgdXBvbiBzdWNjZXNzLlxuICAgICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IG1vZGVsIC0gQ3JlZGVudGlhbHMgY29udGFpbmluZyB1c2VyTmFtZSBhbmQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgaWRlbnRpdHkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdXBlclVzZXI9ZmFsc2VdIC0gV2hldGhlciB0byByZWdpc3RlciB0aGUgaWRlbnRpdHkgYXMgYSBzdXBlciB1c2VyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbYWZmaWxpYXRpb249XCJcIl0gLSBBZmZpbGlhdGlvbiBzdHJpbmcgKGUuZy4sIG9yZzEuZGVwYXJ0bWVudDEpLlxuICAgICAqIEBwYXJhbSB7Q0FfUk9MRSB8IHN0cmluZ30gW3VzZXJSb2xlXSAtIFJvbGUgdG8gYXNzaWduIHRvIHRoZSBpZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge0lLZXlWYWx1ZUF0dHJpYnV0ZX0gW2F0dHJzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMgdG8gYXR0YWNoIHRvIHRoZSBpZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21heEVucm9sbG1lbnRzXSAtIE1heGltdW0gbnVtYmVyIG9mIGVucm9sbG1lbnRzIGFsbG93ZWQgZm9yIHRoZSBpZGVudGl0eS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFRoZSBlbnJvbGxtZW50IHNlY3JldCBmb3IgdGhlIHJlZ2lzdGVyZWQgaWRlbnRpdHkuXG4gICAgICovXG4gICAgYXN5bmMgcmVnaXN0ZXIobW9kZWwsIGlzU3VwZXJVc2VyID0gZmFsc2UsIGFmZmlsaWF0aW9uID0gXCJcIiwgdXNlclJvbGUsIGF0dHJzLCBtYXhFbnJvbGxtZW50cywgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwicmVnaXN0ZXJcIiwgdHJ1ZSkpLmZvcih0aGlzLnJlZ2lzdGVyKTtcbiAgICAgICAgbGV0IHJlZ2lzdHJhdGlvbjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlck5hbWUsIHBhc3N3b3JkIH0gPSBtb2RlbDtcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRJRDogdXNlck5hbWUsXG4gICAgICAgICAgICAgICAgZW5yb2xsbWVudFNlY3JldDogcGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgYWZmaWxpYXRpb246IGFmZmlsaWF0aW9uLFxuICAgICAgICAgICAgICAgIHVzZXJSb2xlOiB1c2VyUm9sZSxcbiAgICAgICAgICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgICAgICAgICAgbWF4RW5yb2xsbWVudHM6IG1heEVucm9sbG1lbnRzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHRoaXMuY2xpZW50LnJlZ2lzdGVyKHByb3BzLCB0aGlzLnVzZXIpO1xuICAgICAgICAgICAgbG9nLmluZm8oYFJlZ2lzdHJhdGlvbiBmb3IgJHt1c2VyTmFtZX0gY3JlYXRlZCB3aXRoIHVzZXIgdHlwZSAke3VzZXJSb2xlID8/IFwiVW5kZWZpbmVkIFJvbGVcIn0gJHtpc1N1cGVyVXNlciA/IFwiYXMgc3VwZXIgdXNlclwiIDogXCJcIn1gKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gICAgfVxuICAgIHN0YXRpYyBpZGVudGl0eUZyb21FbnJvbGxtZW50KGVucm9sbG1lbnQsIG1zcElkLCBjdHgpIHtcbiAgICAgICAgY29uc3QgbG9nID0gY3R4LmxvZ2dlci5mb3IodGhpcy5pZGVudGl0eUZyb21FbnJvbGxtZW50KTtcbiAgICAgICAgY29uc3QgeyBjZXJ0aWZpY2F0ZSwga2V5LCByb290Q2VydGlmaWNhdGUgfSA9IGVucm9sbG1lbnQ7XG4gICAgICAgIGxvZy52ZXJib3NlKGBHZW5lcmF0aW5nIElkZW50aXR5IGZyb20gY2VydGlmaWNhdGUgJHtjZXJ0aWZpY2F0ZX0gaW4gbXNwICR7bXNwSWR9YCk7XG4gICAgICAgIGNvbnN0IGNsaWVudElkID0gQ3J5cHRvVXRpbHMuZmFicmljSWRGcm9tQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUpO1xuICAgICAgICBjb25zdCBpZCA9IENyeXB0b1V0aWxzLmVuY29kZShjbGllbnRJZCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgSWRlbnRpdHkgJHtjbGllbnRJZH0gYW5kIGVuY29kZWRJZCAke2lkfWApO1xuICAgICAgICByZXR1cm4gbmV3IElkZW50aXR5KHtcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlOiBjZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5OiBrZXkudG9CeXRlcygpLFxuICAgICAgICAgICAgICAgIHJvb3RDZXJ0aWZpY2F0ZTogcm9vdENlcnRpZmljYXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1zcElkOiBtc3BJZCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbnJvbGwgYW4gaWRlbnRpdHkgd2l0aCB0aGUgQ0EgdXNpbmcgYSByZWdpc3RyYXRpb24gc2VjcmV0LlxuICAgICAqIEBzdW1tYXJ5IEV4Y2hhbmdlcyB0aGUgZW5yb2xsbWVudCBJRCBhbmQgc2VjcmV0IGZvciBjZXJ0aWZpY2F0ZXMsIHJldHVybmluZyBhIGNvbnN0cnVjdGVkIElkZW50aXR5IG1vZGVsLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbnJvbGxtZW50SWQgLSBFbnJvbGxtZW50IElEIHRvIGVucm9sbC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uIC0gRW5yb2xsbWVudCBzZWNyZXQgcmV0dXJuZWQgYXQgcmVnaXN0cmF0aW9uIHRpbWUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBjcmVkZW50aWFscy5cbiAgICAgKi9cbiAgICBhc3luYyBlbnJvbGwoZW5yb2xsbWVudElkLCByZWdpc3RyYXRpb24sIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiZW5yb2xsXCIsIHRydWUpKS5mb3IodGhpcy5lbnJvbGwpO1xuICAgICAgICBsZXQgaWRlbnRpdHk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYEVucm9sbGluZyAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGVucm9sbG1lbnQgPSBhd2FpdCB0aGlzLmNsaWVudC5lbnJvbGwoe1xuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRJRDogZW5yb2xsbWVudElkLFxuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRTZWNyZXQ6IHJlZ2lzdHJhdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWRlbnRpdHkgPSBGYWJyaWNJZGVudGl0eVNlcnZpY2UuaWRlbnRpdHlGcm9tRW5yb2xsbWVudChlbnJvbGxtZW50LCB0aGlzLmNvbmZpZy5jYU5hbWUsIGN0eCk7XG4gICAgICAgICAgICBsb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IGVucm9sbGVkICR7ZW5yb2xsbWVudElkfSB1bmRlciAke3RoaXMuY29uZmlnLmNhTmFtZX0gYXMgJHtpZGVudGl0eS5pZH1gKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGFuZCBlbnJvbGwgYSBuZXcgaWRlbnRpdHkgaW4gb25lIHN0ZXAuXG4gICAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIGEgbmV3IGVucm9sbG1lbnQgSUQgd2l0aCB0aGUgQ0EgYW5kIGltbWVkaWF0ZWx5IGV4Y2hhbmdlcyB0aGUgc2VjcmV0IHRvIGVucm9sbCwgcmV0dXJuaW5nIHRoZSBjcmVhdGVkIElkZW50aXR5LlxuICAgICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IG1vZGVsIC0gQ3JlZGVudGlhbHMgZm9yIHRoZSBuZXcgaWRlbnRpdHkgY29udGFpbmluZyB1c2VyTmFtZSBhbmQgcGFzc3dvcmQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdXBlclVzZXI9ZmFsc2VdIC0gV2hldGhlciB0byByZWdpc3RlciB0aGUgaWRlbnRpdHkgYXMgYSBzdXBlciB1c2VyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbYWZmaWxpYXRpb249XCJcIl0gLSBBZmZpbGlhdGlvbiBzdHJpbmcgKGUuZy4sIG9yZzEuZGVwYXJ0bWVudDEpLlxuICAgICAqIEBwYXJhbSB7Q0FfUk9MRSB8IHN0cmluZ30gW3VzZXJSb2xlXSAtIFJvbGUgdG8gYXNzaWduIHRvIHRoZSBpZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge0lLZXlWYWx1ZUF0dHJpYnV0ZX0gW2F0dHJzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMgdG8gYXR0YWNoIHRvIHRoZSBpZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21heEVucm9sbG1lbnRzXSAtIE1heGltdW0gbnVtYmVyIG9mIGVucm9sbG1lbnRzIGFsbG93ZWQgZm9yIHRoZSBpZGVudGl0eS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gVGhlIGVucm9sbGVkIGlkZW50aXR5LlxuICAgICAqL1xuICAgIGFzeW5jIHJlZ2lzdGVyQW5kRW5yb2xsKG1vZGVsLCBpc1N1cGVyVXNlciA9IGZhbHNlLCBhZmZpbGlhdGlvbiA9IFwiXCIsIHVzZXJSb2xlLCBhdHRycywgbWF4RW5yb2xsbWVudHMsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInJlZ2lzdGVyLWVucm9sbFwiLCB0cnVlKSkuZm9yKHRoaXMucmVnaXN0ZXJBbmRFbnJvbGwpO1xuICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCB0aGlzLnJlZ2lzdGVyKG1vZGVsLCBpc1N1cGVyVXNlciwgYWZmaWxpYXRpb24sIHVzZXJSb2xlLCBhdHRycywgbWF4RW5yb2xsbWVudHMsIGN0eCk7XG4gICAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IG1vZGVsO1xuICAgICAgICByZXR1cm4gdGhpcy5lbnJvbGwodXNlck5hbWUsIHJlZ2lzdHJhdGlvbiwgY3R4KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlLWVucm9sbCBhbiBleGlzdGluZyBpZGVudGl0eSB1c2luZyBpdHMgY3VycmVudCBlbnJvbGxtZW50LlxuICAgICAqIEBzdW1tYXJ5IFJlbmV3cyB0aGUgZW5yb2xsbWVudCBjZXJ0aWZpY2F0ZSBieSBjYWxsaW5nIHRoZSBDQSByZWVucm9sbC5cbiAgICAgKiBAcGFyYW0ge1VzZXJ9IGN1cnJlbnRVc2VyIC0gQWxyZWFkeSBlbnJvbGxlZCB1c2VyLCBtdXN0IGhhdmUgYSBzaWduaW5nIGlkZW50aXR5LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8SWRlbnRpdHk+fSBUaGUgcmVuZXdlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBuZXcgY3JlZGVudGlhbHMuXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlSWRlbnRpdHkoZW5yb2xsbWVudElkLCBpZGVudGl0eSwgaWRlbnRpdHlSZXF1ZXN0LCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInJlZW5yb2xsXCIsIHRydWUpKS5mb3IodGhpcy51cGRhdGVJZGVudGl0eSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cuaW5mbyhgUmVuZXdpbmcgaWRlbnRpdHkgZm9yICR7ZW5yb2xsbWVudElkfWApO1xuICAgICAgICAgICAgLy8gVXBkYXRlIGF0dHJpYnV0ZXMgaW4gdGhlIENBIHJlZ2lzdHJ5IChhZG1pbiBvcGVyYXRpb24pLiBUaGlzIGNoYW5nZXMgdGhlIFwic291cmNlIG9mIHRydXRoXCIuXG4gICAgICAgICAgICBjb25zdCBpZGVudGl0eVNlcnZpY2UgPSB0aGlzLmNsaWVudC5uZXdJZGVudGl0eVNlcnZpY2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhVXNlcklkZW50aXR5ID0gKGF3YWl0IGlkZW50aXR5U2VydmljZS5nZXRPbmUoZW5yb2xsbWVudElkLCB0aGlzLnVzZXIpKTtcbiAgICAgICAgICAgIGF3YWl0IGlkZW50aXR5U2VydmljZS51cGRhdGUoZW5yb2xsbWVudElkLCBpZGVudGl0eVJlcXVlc3QsIHRoaXMudXNlcik7IC8vIGFzIElTZXJ2aWNlUmVzcG9uc2UgJiB7IHJlc3VsdDogSUlkZW50aXR5UmVxdWVzdCB9O1xuICAgICAgICAgICAgLy8gUmVlbnJvbGwgYXMgdGhlIHVzZXIuIFJlcXVlc3QgbXVzdCBiZSBzaWduZWQgdXNpbmcgdGhlIGV4aXN0aW5nIGNlcnRpZmljYXRlLlxuICAgICAgICAgICAgY29uc3QgcmVlbnJvbGxVc2VyID0gVXNlci5jcmVhdGVVc2VyKGVucm9sbG1lbnRJZCwgXCJcIiwgLy8gZW5yb2xsbWVudFNlY3JldCBub3QgcmVxdWlyZWQgZm9yIHJlZW5yb2xsXG4gICAgICAgICAgICB0aGlzLnVzZXIuZ2V0TXNwaWQoKSwgaWRlbnRpdHkuY2VydGlmaWNhdGUsIGlkZW50aXR5LnByaXZhdGVLZXkpO1xuICAgICAgICAgICAgcmVlbnJvbGxVc2VyLnNldENyeXB0b1N1aXRlKHRoaXMudXNlci5nZXRDcnlwdG9TdWl0ZSgpKTtcbiAgICAgICAgICAgIGNvbnN0IGVucm9sbG1lbnRBdHRycyA9IChjYVVzZXJJZGVudGl0eS5yZXN1bHQuYXR0cnMgfHwgW10pLm1hcCgoeyBuYW1lIH0pID0+ICh7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBjb25zdCBlbnJvbGxtZW50ID0gYXdhaXQgdGhpcy5jbGllbnQucmVlbnJvbGwocmVlbnJvbGxVc2VyLCBlbnJvbGxtZW50QXR0cnMpO1xuICAgICAgICAgICAgY29uc3QgcmVuZXdlZElkZW50aXR5ID0gRmFicmljSWRlbnRpdHlTZXJ2aWNlLmlkZW50aXR5RnJvbUVucm9sbG1lbnQoZW5yb2xsbWVudCwgdGhpcy5jb25maWcuY2FOYW1lLCBjdHgpO1xuICAgICAgICAgICAgLy8gUmV2b2tlIHRoZSBwcmV2aW91cyBjZXJ0aWZpY2F0ZSBvbmx5LCBzbyB0aGUgb2xkIGNlcnQgYmVjb21lcyBpbnZhbGlkLlxuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZXZva2luZyBwcmV2aW91cyBjZXJ0aWZpY2F0ZXMgZm9yICR7ZW5yb2xsbWVudElkfWApO1xuICAgICAgICAgICAgY29uc3QgeyBha2ksIHNlcmlhbCB9ID0gZ2V0QWtpQW5kU2VyaWFsRnJvbUNlcnQoaWRlbnRpdHkuY2VydGlmaWNhdGUpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXZva2UoZW5yb2xsbWVudElkLCB7IGFraSwgc2VyaWFsIH0sIGFyZ3MpO1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZW5ldyBpZGVudGl0eSBzdWNjZXNzZnVsIGZvciAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgICAgICAgIHJldHVybiByZW5ld2VkSWRlbnRpdHk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXZva2VzIHRoZSBlbnJvbGxtZW50IG9mIGFuIGlkZW50aXR5IHdpdGggdGhlIHNwZWNpZmllZCBlbnJvbGxtZW50IElELlxuICAgICAqXG4gICAgICogQHBhcmFtIGVucm9sbG1lbnRJZCAtIFRoZSBlbnJvbGxtZW50IElEIG9mIHRoZSBpZGVudGl0eSB0byBiZSByZXZva2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgcmV2b2NhdGlvbiBvcGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtOb3RGb3VuZEVycm9yfSBJZiB0aGUgZW5yb2xsbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgSUQgZG9lcyBub3QgZXhpc3QuXG4gICAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgdGhlcmUgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZSByZXZvY2F0aW9uIHByb2Nlc3MuXG4gICAgICovXG4gICAgYXN5bmMgcmV2b2tlKGVucm9sbG1lbnRJZCwgcmV2b2tlT3B0aW9ucywgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwicmV2b2tlXCIsIHRydWUpKS5mb3IodGhpcy5yZXZva2UpO1xuICAgICAgICBsb2cudmVyYm9zZShgUmV2b2tpbmcgaWRlbnRpdHkgd2l0aCBlbnJvbGxtZW50IElEICR7ZW5yb2xsbWVudElkfWApO1xuICAgICAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHRoaXMucmVhZChlbnJvbGxtZW50SWQpO1xuICAgICAgICBpZiAoIWlkZW50aXR5KVxuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYENvdWxkIG5vdCBmaW5kIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlYXNvbiA9IEJvb2xlYW4ocmV2b2tlT3B0aW9ucy5zZXJpYWwpIHx8IEJvb2xlYW4ocmV2b2tlT3B0aW9ucy5ha2kpXG4gICAgICAgICAgICAgICAgPyBcIlJldm9rZSBVc2VyIENlcnRpZmljYXRlXCJcbiAgICAgICAgICAgICAgICA6IFwiVXNlciBEZWxldGlvblwiO1xuICAgICAgICAgICAgY29uc3QgcmV2b2tlUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICByZWFzb24sXG4gICAgICAgICAgICAgICAgLi4ucmV2b2tlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBlbnJvbGxtZW50SUQ6IGlkZW50aXR5LmlkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xpZW50LnJldm9rZShyZXZva2VSZXF1ZXN0LCB0aGlzLnVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IHJldm9rZSBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVJtRmljbWxqU1dSbGJuUnBkSGxUWlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDJOc2FXVnVkQzl6WlhKMmFXTmxjeTlHWVdKeWFXTkpaR1Z1ZEdsMGVWTmxjblpwWTJVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eEZRVU5NTEd0Q1FVRnJRaXhGUVVOc1FpeHJRa0ZCYTBJc1JVRkRiRUlzVDBGQlR5eEZRVVZRTEdWQlFXVXNSMEZEYUVJc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVTjRRaXhQUVVGUExHZENRVlZPTEUxQlFVMHNhMEpCUVd0Q0xFTkJRVU03UVVGRk1VSXNUMEZCVHl4RlFVTk1MR0ZCUVdFc1JVRkRZaXhoUVVGaExFVkJRMklzWVVGQllTeEZRVU5pTEdGQlFXRXNSMEZEWkN4TlFVRk5MSGxDUVVGNVFpeERRVUZETzBGQlEycERMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVVzZFVKQlFYVkNMRVZCUVVVc2MwSkJRV2xDTzBGQlR6bEVMRTlCUVU4c1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeGxRVUZsTEVOQlFVTTdRVUZEY2tNc1QwRkJUeXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMR2xEUVVFMFFqdEJRVWQ0UkN4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxHZERRVUV5UWp0QlFVTTVReXhQUVVGUExFVkJRVVVzVjBGQlZ5eEZRVUZGTEhWQ1FVRnJRanRCUVVWNFF5eE5RVUZOTEU5QlFVOHNjVUpCUVhOQ0xGTkJRVkVzYTBKQlJ6RkRPMGxCUjBNN1VVRkRSU3hMUVVGTExFVkJRVVVzUTBGQlF6dEpRVU5XTEVOQlFVTTdTVUZGUkN4SlFVRmpMRlZCUVZVN1VVRkRkRUlzVDBGQlVTeEpRVUZKTEVOQlFVTXNUVUZCWXl4RFFVRkRMRzFDUVVGdFFpeERRVUZSTEVOQlFVTTdTVUZETVVRc1EwRkJRenRKUVVWRUxFbEJRV01zU1VGQlNUdFJRVU5vUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXM3V1VGRFlpeE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVTnlRaXd3UkVGQk1FUXNRMEZETTBRc1EwRkJRenRSUVVOS0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJSVVFzU1VGQll5eFpRVUZaTzFGQlEzaENMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eHhRa0ZCY1VJc1JVRkJSU3hEUVVGRE8wbEJRMnBFTEVOQlFVTTdTVUZGUkN4SlFVRmpMRmxCUVZrN1VVRkRlRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRUxFbEJRV01zVlVGQlZUdFJRVU4wUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJWTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGaExFVkJRVVVzUjBGQldUdFJRVU5xUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGVrTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRmFFUXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXgzUWtGQmQwSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGNrUXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhyUTBGQmEwTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVONFJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRk5CUVZNc1EwRkJReXd3UWtGQk1FSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOMlJTeEpRVUZKTEVkQlFYVkNMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTFRc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzJkQ1FVTllMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEhORFFVRnpReXhOUVVGTkxIRkVRVUZ4UkN4RFFVTnNSeXhEUVVGRE8xbEJRMG9zUTBGQlF6dFpRVU5FTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc01FSkJRVEJDTEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkROME1zUjBGQlJ5eEhRVUZITEUxQlFVMHNVMEZCVXl4RFFVRkRMREJDUVVFd1FpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUXpGRUxFTkJRVU03WVVGQlRTeERRVUZETzFsQlEwNHNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3hyUTBGQmEwTXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVTjJSU3hEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVU5FTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc05rSkJRVFpDTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRha1FzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEVkQlFVY3NSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRk8xbEJRM2hGTEVkQlFVYzdVMEZEU2l4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZEY0VJc1EwRkJRenRKUVVWUkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlEzWkNMRWRCUVVjc1NVRkJOa0k3VVVGRmFFTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVU51UWl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEdWQlFXVXNRMEZCUXl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRemxFTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU4yUWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzUkNMRWxCUVVrc1EwRkJReXhOUVVGTk8xbEJRVVVzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZCUXl4cFEwRkJhVU1zUTBGQlF5eERRVUZETzFGQlJYaEZMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOd1F5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xEUVVGcFF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4UFFVRlBMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlF6VkZMRTFCUVUwc1JVRkJSU3haUVVGWkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NSMEZCYVVJc1EwRkJRenRSUVVWdVJDeE5RVUZOTEVsQlFVa3NSMEZCU1N4WlFVRjVRaXhEUVVGRExFTkJRVU1zUTBGQlZ5eERRVUZETzFGQlEzSkVMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zYTBOQlFXdERMRWxCUVVrc1ZVRkJWU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlRORkxFMUJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNVMEZCVXl4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVY2UkN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4WFFVRlhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJYWkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzWjBKQlFXZENMRU5CUTJwRExFZEJRVWNzUlVGRFNEdFpRVU5GTEZsQlFWa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU4wUXl4TlFVRk5PMU5CUTA4c1JVRkRaaXhOUVVGTkxFTkJRMUFzUTBGQlF6dFJRVVZHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkROME1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNdlF5eFBRVUZQTzFsQlEwd3NUVUZCVFR0WlFVTk9MRTFCUVUwN1UwRkRVQ3hEUVVGRE8wbEJRMG9zUTBGQlF6dEpRV2RDUkN4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVOdVFpeFBRVUZ6UXl4RlFVTjBReXhSUVVGaExFbEJRVmNzUlVGRGVFSXNSMEZCUnl4SlFVRTJRanRSUVVWb1F5eEpRVUZKTEU5QlFVOHNXVUZCV1N4UFFVRlBMRVZCUVVVc1EwRkJRenRaUVVNdlFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVOcVFpeExRVUZMTEVkQlFVY3NTVUZCVnl4RFFVRkRPMWxCUTNCQ0xFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTTdVVUZEZEVJc1EwRkJRenRoUVVGTkxFbEJRVWtzVDBGQlR5eFBRVUZQTEV0QlFVc3NVMEZCVXl4RlFVRkZMRU5CUVVNN1dVRkRlRU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXp0WlFVTm9RaXhQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZETzFGQlEzUkNMRU5CUVVNN1lVRkJUU3hKUVVGSkxFOUJRVThzUzBGQlN5eExRVUZMTEZOQlFWTXNSVUZCUlN4RFFVRkRPMWxCUTNSRExFbEJRVWtzUjBGQlJ5eERRVUZETEV0QlFXZERMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU51UkN4TFFVRkxMRWRCUVVjc1NVRkJWeXhEUVVGRE8xRkJRM1JDTEVOQlFVTTdVVUZGUkN4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxHRkJRV0VzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRM0pGTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUTNKQ0xFTkJRVU03VVVGRFJpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVTlFMREJDUVVFd1FpeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZETjBZc1EwRkJRenRSUVVOR0xFMUJRVTBzVVVGQlVTeEhRVUYzUWl4RFFVTndReXhOUVVGTkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNaVUZCWlN4RFFVRkRMRTlCUVU4c1NVRkJTU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVTnNSU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU5VTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkRNMFFzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE1VSXNUMEZCVHl4RFFVTk1MRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVU5GTEVOQlFVTTdTVUZETVVRc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCV1R0UlFVTTVRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdVVUZETDBNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eHJRMEZCYTBNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNCRkxFMUJRVTBzVVVGQlVTeEhRVUZ4UWl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRM3BGTEUxQlFVMHNRMEZCUXp0UlFVTldMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1lVRkJZU3hEUVVGRExFTkJRVU03VVVGRE9VUXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZETDBJc1QwRkJUeXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkZSRHM3T3p0UFFVbEhPMGxCUTBnc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZaTzFGQlEyaERMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dFJRVU5xUkN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHOURRVUZ2UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEZEVVc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOd1JTeEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUTNaRUxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGVXl4VlFVRlZMRU5CUVVNc1EwRkJVVHRSUVVNelFpeE5RVUZOTEUxQlFVMHNSMEZCUnl3eVEwRkJNa01zUTBGQlF6dFJRVU16UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVOQlFVTXNTMEZCU3p0WlFVRkZMRTlCUVU4c1NVRkJTU3hwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyaERMRkZCUVZFc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRFlpeExRVUZMTEVsQlFVa3NRMEZCUXp0WlFVTldMRXRCUVVzc1NVRkJTVHRuUWtGRFVDeFBRVUZQTEVsQlFVa3NZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRM0JETEV0QlFVc3NTVUZCU1R0blFrRkRVQ3hQUVVGUExFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVrTTdaMEpCUTBVc1QwRkJUeXhKUVVGSkxHbENRVUZwUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRekZETEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVU5TTEZsQlFXOUNMRVZCUTNCQ0xFZEJRVWNzU1VGQk5rSTdVVUZGYUVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeGhRVUZoTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVU55UlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVOV0xFTkJRVU03VVVGRFJpeEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMREJEUVVFd1F5eFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNSRkxFbEJRVWtzVFVGQmQwSXNRMEZCUXp0UlFVTTNRaXhKUVVGSkxFTkJRVU03V1VGRFNDeE5RVUZOTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMnBGTEVOQlFVTTdVVUZCUXl4UFFVRlBMRU5CUVUwc1JVRkJSU3hEUVVGRE8xbEJRMmhDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xHOURRVUZ2UXl4WlFVRlpMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRM3BFTEVOQlFVTTdVVUZEU2l4RFFVRkRPMUZCUlVRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTzFsQlEycENMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEc5RFFVRnZReXhaUVVGWkxFdEJRVXNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGRGFFWXNRMEZCUXp0UlFVVktMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRWGRDTEVOQlFVTTdTVUZEZWtNc1EwRkJRenRKUVVWRU96czdPenM3T3pzN08wOUJWVWM3U1VGRFNDeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVTmFMRXRCUVd0Q0xFVkJRMnhDTEdOQlFYVkNMRXRCUVVzc1JVRkROVUlzWTBGQmMwSXNSVUZCUlN4RlFVTjRRaXhSUVVFeVFpeEZRVU16UWl4TFFVRXdRaXhGUVVNeFFpeGpRVUYxUWl4RlFVTjJRaXhIUVVGSExFbEJRVFpDTzFGQlJXaERMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVNM1JDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVTmtMRU5CUVVNN1VVRkZSaXhKUVVGSkxGbEJRVzlDTEVOQlFVTTdVVUZEZWtJc1NVRkJTU3hEUVVGRE8xbEJRMGdzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRGNrTXNUVUZCVFN4TFFVRkxMRWRCUVVjN1owSkJRMW9zV1VGQldTeEZRVUZGTEZGQlFXdENPMmRDUVVOb1F5eG5Ra0ZCWjBJc1JVRkJSU3hSUVVGUk8yZENRVU14UWl4WFFVRlhMRVZCUVVVc1YwRkJWenRuUWtGRGVFSXNVVUZCVVN4RlFVRkZMRkZCUVZFN1owSkJRMnhDTEV0QlFVc3NSVUZCUlN4TFFVRkxPMmRDUVVOYUxHTkJRV01zUlVGQlJTeGpRVUZqTzJGQlExZ3NRMEZCUXp0WlFVTjBRaXhaUVVGWkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUXpWRUxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlEwNHNiMEpCUVc5Q0xGRkJRVkVzTWtKQlFUSkNMRkZCUVZFc1NVRkJTU3huUWtGQlowSXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUXpWSUxFTkJRVU03VVVGRFNpeERRVUZETzFGQlFVTXNUMEZCVHl4RFFVRk5MRVZCUVVVc1EwRkJRenRaUVVOb1FpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNRMEZCUXp0UlFVTkVMRTlCUVU4c1dVRkJXU3hEUVVGRE8wbEJRM1JDTEVOQlFVTTdTVUZGVXl4TlFVRk5MRU5CUVVNc2MwSkJRWE5DTEVOQlEzSkRMRlZCUVRKQ0xFVkJRek5DTEV0QlFXRXNSVUZEWWl4SFFVRlpPMUZCUlZvc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1VVRkRlRVFzVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1pVRkJaU3hGUVVGRkxFZEJRVWNzVlVGQlZTeERRVUZETzFGQlEzcEVMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRMVFzZDBOQlFYZERMRmRCUVZjc1YwRkJWeXhMUVVGTExFVkJRVVVzUTBGRGRFVXNRMEZCUXp0UlFVTkdMRTFCUVUwc1VVRkJVU3hIUVVGSExGZEJRVmNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU5zUlN4TlFVRk5MRVZCUVVVc1IwRkJSeXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTNoRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4UlFVRlJMR3RDUVVGclFpeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNSRUxFOUJRVThzU1VGQlNTeFJRVUZSTEVOQlFVTTdXVUZEYkVJc1JVRkJSU3hGUVVGRkxFVkJRVVU3V1VGRFRpeFhRVUZYTEVWQlFVVTdaMEpCUTFnc1JVRkJSU3hGUVVGRkxFVkJRVVU3WjBKQlEwNHNWMEZCVnl4RlFVRkZMRmRCUVZjN1owSkJRM2hDTEZWQlFWVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGRk8yZENRVU42UWl4bFFVRmxMRVZCUVVVc1pVRkJaVHRoUVVOcVF6dFpRVU5FTEV0QlFVc3NSVUZCUlN4TFFVRkxPMU5CUTJJc1EwRkJReXhEUVVGRE8wbEJRMHdzUTBGQlF6dEpRVVZFT3pzN096czdUMEZOUnp0SlFVTklMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRMVlzV1VGQmIwSXNSVUZEY0VJc1dVRkJiMElzUlVGRGNFSXNSMEZCUnl4SlFVRTJRanRSUVVWb1F5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUTJoRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlExb3NRMEZCUXp0UlFVTkdMRWxCUVVrc1VVRkJhMElzUTBGQlF6dFJRVU4yUWl4SlFVRkpMRU5CUVVNN1dVRkRTQ3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEdGQlFXRXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCYjBJc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0blFrRkRNMFFzV1VGQldTeEZRVUZGTEZsQlFWazdaMEpCUXpGQ0xHZENRVUZuUWl4RlFVRkZMRmxCUVZrN1lVRkRMMElzUTBGQlF5eERRVUZETzFsQlEwZ3NVVUZCVVN4SFFVRkhMSEZDUVVGeFFpeERRVUZETEhOQ1FVRnpRaXhEUVVOeVJDeFZRVUZWTEVWQlExWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRMnhDTEVkQlFVY3NRMEZEU2l4RFFVRkRPMWxCUTBZc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGRFRpeDVRa0ZCZVVJc1dVRkJXU3hWUVVGVkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4UFFVRlBMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGRGRFWXNRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkJReXhQUVVGUExFTkJRVTBzUlVGQlJTeERRVUZETzFsQlEyaENMRTFCUVUwc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpRaXhEUVVGRE8xRkJRMFFzVDBGQlR5eFJRVUZSTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWRU96czdPenM3T3pzN08wOUJWVWM3U1VGRFNDeExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRM0pDTEV0QlFXdENMRVZCUTJ4Q0xHTkJRWFZDTEV0QlFVc3NSVUZETlVJc1kwRkJjMElzUlVGQlJTeEZRVU40UWl4UlFVRXlRaXhGUVVNelFpeExRVUV3UWl4RlFVTXhRaXhqUVVGMVFpeEZRVU4yUWl4SFFVRkhMRWxCUVRaQ08xRkJSV2hETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRM0JGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGRGRrSXNRMEZCUXp0UlFVTkdMRTFCUVUwc1dVRkJXU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZEZEVNc1MwRkJTeXhGUVVOTUxGZEJRVmNzUlVGRFdDeFhRVUZYTEVWQlExZ3NVVUZCVVN4RlFVTlNMRXRCUVVzc1JVRkRUQ3hqUVVGakxFVkJRMlFzUjBGQlJ5eERRVU5LTEVOQlFVTTdVVUZEUml4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlF6TkNMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZyUWl4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU0xUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zWTBGQll5eERRVU5zUWl4WlFVRnZRaXhGUVVOd1FpeFJRVUZ4UkN4RlFVTnlSQ3hsUVVGcFF5eEZRVU5xUXl4SFFVRkhMRWxCUVRaQ08xRkJSV2hETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkRiRVVzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZEY0VJc1EwRkJRenRSUVVWR0xFbEJRVWtzUTBGQlF6dFpRVU5JTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2VVSkJRWGxDTEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkZiRVFzT0VaQlFUaEdPMWxCUXpsR0xFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0WlFVVjZSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eERRVUZETEUxQlFVMHNaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkRiRVFzV1VGQldTeEZRVU5hTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUTFZc1EwRkJhVVFzUTBGQlF6dFpRVVZ1UkN4TlFVRk5MR1ZCUVdVc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEZRVUZGTEdWQlFXVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eHpSRUZCYzBRN1dVRkZPVWdzSzBWQlFTdEZPMWxCUXk5RkxFMUJRVTBzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJ4RExGbEJRVmtzUlVGRFdpeEZRVUZGTEVWQlFVVXNOa05CUVRaRE8xbEJRMnBFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRM0JDTEZGQlFWRXNRMEZCUXl4WFFVRlhMRVZCUTNCQ0xGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlEzQkNMRU5CUVVNN1dVRkRSaXhaUVVGWkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVVY0UkN4TlFVRk5MR1ZCUVdVc1IwRkJkMElzUTBGRE0wTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFbEJRVWtzUlVGQlJTeERRVU5zUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRMjVDTEVsQlFVazdaMEpCUTBvc1VVRkJVU3hGUVVGRkxFdEJRVXM3WVVGRGFFSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZTaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVNelF5eFpRVUZaTEVWQlExb3NaVUZCWlN4RFFVTm9RaXhEUVVGRE8xbEJSVVlzVFVGQlRTeGxRVUZsTEVkQlFVY3NjVUpCUVhGQ0xFTkJRVU1zYzBKQlFYTkNMRU5CUTJ4RkxGVkJRVlVzUlVGRFZpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkRiRUlzUjBGQlJ5eERRVU5LTEVOQlFVTTdXVUZGUml4NVJVRkJlVVU3V1VGRGVrVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXh6UTBGQmMwTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOb1JTeE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTFCUVUwc1JVRkJSU3hIUVVGSExIVkNRVUYxUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFpRVU4wUlN4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTFCUVUwc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlJYWkVMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zYVVOQlFXbERMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU03V1VGRE0wUXNUMEZCVHl4bFFVRmxMRU5CUVVNN1VVRkRla0lzUTBGQlF6dFJRVUZETEU5QlFVOHNRMEZCVFN4RlFVRkZMRU5CUVVNN1dVRkRhRUlzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5DTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlVRN096czdPenM3T3p0UFFWTkhPMGxCUTBnc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGRFZpeFpRVUZ2UWl4RlFVTndRaXhoUVVGdFJDeEZRVU51UkN4SFFVRkhMRWxCUVRaQ08xRkJSV2hETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU16UlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExIZERRVUYzUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRM0JGTEUxQlFVMHNVVUZCVVN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTXZReXhKUVVGSkxFTkJRVU1zVVVGQlVUdFpRVU5ZTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xIRkRRVUZ4UXl4WlFVRlpMRVZCUVVVc1EwRkRjRVFzUTBGQlF6dFJRVU5LTEVsQlFVa3NUVUZCZDBJc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVOQlFVTTdXVUZEU0N4TlFVRk5MRTFCUVUwc1IwRkRWaXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eERRVUZETzJkQ1FVTjZSQ3hEUVVGRExFTkJRVU1zZVVKQlFYbENPMmRDUVVNelFpeERRVUZETEVOQlFVTXNaVUZCWlN4RFFVRkRPMWxCUlhSQ0xFMUJRVTBzWVVGQllTeEhRVUZ0UWp0blFrRkRjRU1zVFVGQlRUdG5Ra0ZEVGl4SFFVRkhMR0ZCUVdFN1owSkJRMmhDTEZsQlFWa3NSVUZCUlN4UlFVRlJMRU5CUVVNc1JVRkJSVHRoUVVNeFFpeERRVUZETzFsQlJVWXNUVUZCVFN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU01UkN4RFFVRkRPMUZCUVVNc1QwRkJUeXhEUVVGVkxFVkJRVVVzUTBGQlF6dFpRVU53UWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeDFRMEZCZFVNc1dVRkJXU3hMUVVGTExFTkJRVU1zUlVGQlJTeERRVU0xUkN4RFFVRkRPMUZCUTBvc1EwRkJRenRSUVVORUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHp0WlFVTnFRaXhOUVVGTkxFbEJRVWtzWVVGQllTeERRVU55UWl4MVEwRkJkVU1zV1VGQldTeExRVUZMTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlEyNUdMRU5CUVVNN1VVRkRTaXhQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UxeHVJQ0JCZFhSb2IzSnBlbUYwYVc5dVJYSnliM0lzWEc0Z0lFTnNhV1Z1ZEVKaGMyVmtVMlZ5ZG1salpTeGNiaUFnUTI5dWRHVjRkQ3hjYmlBZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKbkxGeHVJQ0JRWlhKemFYTjBaVzVqWlV0bGVYTXNYRzU5SUdaeWIyMGdYQ0pBWkdWallXWXRkSE12WTI5eVpWd2lPMXh1YVcxd2IzSjBJRVpoWW5KcFkwTkJVMlZ5ZG1salpYTXNJSHRjYmlBZ1FXWm1hV3hwWVhScGIyNVRaWEoyYVdObExGeHVJQ0JKUVhSMGNtbGlkWFJsVW1WeGRXVnpkQ3hjYmlBZ1NXUmxiblJwZEhsVFpYSjJhV05sTEZ4dUlDQkpSVzV5YjJ4c1VtVnpjRzl1YzJVc1hHNGdJRWxKWkdWdWRHbDBlVkpsY1hWbGMzUXNYRzRnSUVsU1pXZHBjM1JsY2xKbGNYVmxjM1FzWEc0Z0lFbFNaWFp2YTJWU1pYRjFaWE4wTEZ4dUlDQkpVMlZ5ZG1salpWSmxjM0J2Ym5ObExGeHVJQ0JVVEZOUGNIUnBiMjV6TEZ4dWZTQm1jbTl0SUZ3aVptRmljbWxqTFdOaExXTnNhV1Z1ZEZ3aU8xeHVhVzF3YjNKMElIc2dRMEZEYjI1bWFXY3NJRU55WldSbGJuUnBZV3h6SUgwZ1puSnZiU0JjSWk0dUx5NHVMM05vWVhKbFpDOTBlWEJsYzF3aU8xeHVhVzF3YjNKMElIdGNiaUFnUTI5dVpteHBZM1JGY25KdmNpeGNiaUFnU1c1MFpYSnVZV3hGY25KdmNpeGNiaUFnVG05MFJtOTFibVJGY25KdmNpeGNiaUFnVDNCbGNtRjBhVzl1UzJWNWN5eGNibjBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWWkxa1pXTnZjbUYwYjNKelhDSTdYRzVwYlhCdmNuUWdleUJEYjNKbFZYUnBiSE1zSUdkbGRFRnJhVUZ1WkZObGNtbGhiRVp5YjIxRFpYSjBJSDBnWm5KdmJTQmNJaTR1TDNWMGFXeHpYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQkRaWEowYVdacFkyRjBaVkpsYzNCdmJuTmxMRnh1SUNCR1lXSnlhV05KWkdWdWRHbDBlU3hjYmlBZ1IyVjBRMlZ5ZEdsbWFXTmhkR1Z6VW1WeGRXVnpkQ3hjYmlBZ1NXUmxiblJwZEhsU1pYTndiMjV6WlN4Y2JuMGdabkp2YlNCY0lpNHVMeTR1TDNOb1lYSmxaQzltWVdKeWFXTXRkSGx3WlhOY0lqdGNibWx0Y0c5eWRDQjdJRlZ6WlhJZ2ZTQm1jbTl0SUZ3aVptRmljbWxqTFdOdmJXMXZibHdpTzF4dWFXMXdiM0owSUhzZ1VtVm5hWE4wY21GMGFXOXVSWEp5YjNJZ2ZTQm1jbTl0SUZ3aUxpNHZMaTR2YzJoaGNtVmtMMlZ5Y205eWMxd2lPMXh1YVcxd2IzSjBJSHNnUTBGZlVrOU1SU0I5SUdaeWIyMGdYQ0l1TDJOdmJuTjBZVzUwYzF3aU8xeHVhVzF3YjNKMElIc2dTVXRsZVZaaGJIVmxRWFIwY21saWRYUmxJSDBnWm5KdmJTQmNJaTR2Um1GaWNtbGpSVzV5YjJ4c2JXVnVkRk5sY25acFkyVmNJanRjYm1sdGNHOXlkQ0I3SUVsa1pXNTBhWFI1SUgwZ1puSnZiU0JjSWk0dUx5NHVMM05vWVhKbFpDOXBibVJsZUZ3aU8xeHVhVzF3YjNKMElIc2dRM0o1Y0hSdlZYUnBiSE1nZlNCbWNtOXRJRndpTGk0dlkzSjVjSFJ2WENJN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCR1lXSnlhV05KWkdWdWRHbDBlVk5sY25acFkyVWdaWGgwWlc1a2N5QkRiR2xsYm5SQ1lYTmxaRk5sY25acFkyVThYRzRnSUVaaFluSnBZME5CVTJWeWRtbGpaWE1zWEc0Z0lFTkJRMjl1Wm1sblhHNCtJSHRjYmlBZ2NISnZkR1ZqZEdWa0lGOTFjMlZ5SVRvZ1ZYTmxjanRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0J6ZFhCbGNpZ3BPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUdkbGRDQnliMjkwUTJ4cFpXNTBLQ2s2SUhzZ2JtVjNRMlZ5ZEdsbWFXTmhkR1ZUWlhKMmFXTmxPaUJoYm5rZ2ZTQjdYRzRnSUNBZ2NtVjBkWEp1SUNoMGFHbHpMbU5zYVdWdWRDQmhjeUJoYm5rcFcxd2lYMFpoWW5KcFkwTmhVMlZ5ZG1salpYTmNJbDBnWVhNZ1lXNTVPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUdkbGRDQjFjMlZ5S0NrNklGVnpaWElnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVmZFhObGNpbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblJsY201aGJFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrWmhZbkpwWXlCcFpHVnVkR2wwZVNCelpYSjJhV05sSUc1dmRDQndjbTl3WlhKc2VTQnpaWFIxY0RvZ2JXbHpjMmx1WnlCMWMyVnlYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNWelpYSTdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWjJWMElHTmxjblJwWm1sallYUmxjeWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1eWIyOTBRMnhwWlc1MExtNWxkME5sY25ScFptbGpZWFJsVTJWeWRtbGpaU2dwTzF4dUlDQjlYRzVjYmlBZ2NISnZkR1ZqZEdWa0lHZGxkQ0JoWm1acGJHbGhkR2x2Ym5Nb0tUb2dRV1ptYVd4cFlYUnBiMjVUWlhKMmFXTmxJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYkdsbGJuUXVibVYzUVdabWFXeHBZWFJwYjI1VFpYSjJhV05sS0NrN1hHNGdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdaMlYwSUdsa1pXNTBhWFJwWlhNb0tUb2dTV1JsYm5ScGRIbFRaWEoyYVdObElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiR2xsYm5RdWJtVjNTV1JsYm5ScGRIbFRaWEoyYVdObEtDazdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWVhONWJtTWdaMlYwVlhObGNpaGpabWM2SUVOQlEyOXVabWxuTENCamRIZzZJRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0JqZEhndWJHOW5aMlZ5TG1admNpaDBhR2x6TG1kbGRGVnpaWElwTzF4dUlDQWdJR052Ym5OMElIc2dZMkZPWVcxbExDQmpZVU5sY25Rc0lHTmhTMlY1TENCMWNtd3NJR2h6YlNCOUlEMGdZMlpuTzF4dVhHNGdJQ0FnYkc5bkxtbHVabThvWUVOeVpXRjBhVzVuSUVOQklIVnpaWElnWm05eUlDUjdZMkZPWVcxbGZTQmhkQ0FrZTNWeWJIMWdLVHRjYmlBZ0lDQnNiMmN1ZG1WeVltOXpaU2hnVW1WMGNtbGxkbWx1WnlCRFFTQmpaWEowYVdacFkyRjBaU0JtY205dElDUjdZMkZEWlhKMGZXQXBPMXh1SUNBZ0lHTnZibk4wSUdObGNuUnBabWxqWVhSbElEMGdZWGRoYVhRZ1EyOXlaVlYwYVd4ekxtZGxkRVpwY25OMFJHbHlSbWxzWlU1aGJXVkRiMjUwWlc1MEtHTmhRMlZ5ZENrN1hHNGdJQ0FnYkdWMElHdGxlVG9nYzNSeWFXNW5JSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNnaGFITnRLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lXTmhTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblJsY201aGJFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lHQk5hWE56YVc1bklHTmhTMlY1SUdOdmJtWnBaM1Z5WVhScGIyNGdabTl5SUVOQklDUjdZMkZPWVcxbGZTNGdVSEp2ZG1sa1pTQmhJR3RsZVNCa2FYSmxZM1J2Y25rZ2IzSWdZMjl1Wm1sbmRYSmxJRWhUVFNCemRYQndiM0owTG1CY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHeHZaeTVrWldKMVp5aGdVbVYwY21sbGRtbHVaeUJEUVNCclpYa2dabkp2YlNBa2UyTmhTMlY1ZldBcE8xeHVJQ0FnSUNBZ2EyVjVJRDBnWVhkaGFYUWdRMjl5WlZWMGFXeHpMbWRsZEVacGNuTjBSR2x5Um1sc1pVNWhiV1ZEYjI1MFpXNTBLR05oUzJWNUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYkc5bkxtUmxZblZuS0Z4dUlDQWdJQ0FnSUNCZ1ZYTnBibWNnU0ZOTklHTnZibVpwWjNWeVlYUnBiMjRnWm05eUlFTkJJQ1I3WTJGT1lXMWxmU0IzYVhSb0lHeHBZbkpoY25rZ0pIdG9jMjB1YkdsaWNtRnllWDFnWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmlBZ0lDQnNiMmN1WkdWaWRXY29ZRXh2WVdScGJtY2dRV1J0YVc0Z2RYTmxjaUJtYjNJZ1kyRWdKSHRqWVU1aGJXVjlZQ2s3WEc0Z0lDQWdkR2hwY3k1ZmRYTmxjaUE5SUdGM1lXbDBJRU52Y21WVmRHbHNjeTVuWlhSRFFWVnpaWElvWENKaFpHMXBibHdpTENCclpYa3NJR05sY25ScFptbGpZWFJsTENCallVNWhiV1VzSUh0Y2JpQWdJQ0FnSUdoemJTeGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZkWE5sY2p0Y2JpQWdmVnh1WEc0Z0lHOTJaWEp5YVdSbElHRnplVzVqSUdsdWFYUnBZV3hwZW1Vb1hHNGdJQ0FnTGk0dVlYSm5jem9nVFdGNVltVkRiMjUwWlhoMGRXRnNRWEpuUEdGdWVUNWNiaUFnS1RvZ1VISnZiV2x6WlR4N0lHTnZibVpwWnpvZ1EwRkRiMjVtYVdjN0lHTnNhV1Z1ZERvZ1JtRmljbWxqUTBGVFpYSjJhV05sY3lCOVBpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY3NJR04wZUNCOUlEMGdLRnh1SUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVzYjJkRGRIZ29ZWEpuY3l3Z1VHVnljMmx6ZEdWdVkyVkxaWGx6TGtsT1NWUkpRVXhKV2tGVVNVOU9MQ0IwY25WbEtWeHVJQ0FnSUNrdVptOXlLSFJvYVhNdWFXNXBkR2xoYkdsNlpTazdYRzRnSUNBZ1kyOXVjM1FnVzJOdmJtWnBaMTBnUFNCaGNtZHpPMXh1SUNBZ0lHbG1JQ2doWTI5dVptbG5LU0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNJazFwYzNOcGJtY2dSbUZpY21saklFTkJJR052Ym1acFozVnlZWFJwYjI1Y0lpazdYRzVjYmlBZ0lDQmpiMjV6ZENCN0lIVnliQ3dnZEd4ekxDQmpZVTVoYldVZ2ZTQTlJR052Ym1acFp6dGNiaUFnSUNCc2IyY3VhVzVtYnloZ1NXNXBkR2xoYkdsNmFXNW5JRU5CSUVOc2FXVnVkQ0JtYjNJZ1EwRWdKSHRqYjI1bWFXY3VZMkZPWVcxbGZTQmhkQ0FrZTJOdmJtWnBaeTUxY214OVlDazdYRzRnSUNBZ1kyOXVjM1FnZXlCMGNuVnpkR1ZrVW05dmRITXNJSFpsY21sbWVTQjlJRDBnZEd4eklHRnpJRlJNVTA5d2RHbHZibk03WEc1Y2JpQWdJQ0JqYjI1emRDQnliMjkwSUQwZ0tIUnlkWE4wWldSU2IyOTBjeUJoY3lCemRISnBibWRiWFNsYk1GMGdZWE1nYzNSeWFXNW5PMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGdVbVYwY21sbGRtbHVaeUJEUVNCalpYSjBhV1pwWTJGMFpTQm1jbTl0SUNSN2NtOXZkSDB1SUdOM1pEb2dKSHR3Y205alpYTnpMbU4zWkNncGZXQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1kyVnlkR2xtYVdOaGRHVWdQU0JoZDJGcGRDQkRiM0psVlhScGJITXVaMlYwUm1sc1pVTnZiblJsYm5Rb2NtOXZkQ2s3WEc1Y2JpQWdJQ0JzYjJjdVpHVmlkV2NvWUVOQklFTmxjblJwWm1sallYUmxPaUFrZTJObGNuUnBabWxqWVhSbExuUnZVM1J5YVc1bktDbDlZQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQmpiR2xsYm5RZ1BTQnVaWGNnUm1GaWNtbGpRMEZUWlhKMmFXTmxjeWhjYmlBZ0lDQWdJSFZ5YkN4Y2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ2RISjFjM1JsWkZKdmIzUnpPaUJDZFdabVpYSXVabkp2YlNoalpYSjBhV1pwWTJGMFpTa3NYRzRnSUNBZ0lDQWdJSFpsY21sbWVTeGNiaUFnSUNBZ0lIMGdZWE1nVkV4VFQzQjBhVzl1Y3l4Y2JpQWdJQ0FnSUdOaFRtRnRaVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCMWMyVnlJRDBnWVhkaGFYUWdkR2hwY3k1blpYUlZjMlZ5S0dOdmJtWnBaeXdnWTNSNEtUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lFTkJJSFZ6WlhJZ2JHOWhaR1ZrT2lBa2UzVnpaWEl1WjJWMFRtRnRaU2dwZldBcE8xeHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0JqYjI1bWFXY3NYRzRnSUNBZ0lDQmpiR2xsYm5Rc1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdkbGRFTmxjblJwWm1sallYUmxjeWd1TGk1aGNtZHpPaUJOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWM4WVc1NVBpazZJRkJ5YjIxcGMyVThjM1J5YVc1blcxMCtPMXh1SUNCaGMzbHVZeUJuWlhSRFpYSjBhV1pwWTJGMFpYTW9YRzRnSUNBZ2NtVnhkV1Z6ZERvZ1IyVjBRMlZ5ZEdsbWFXTmhkR1Z6VW1WeGRXVnpkQ3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhZVzU1UGx4dUlDQXBPaUJRY205dGFYTmxQSE4wY21sdVoxdGRQanRjYmlBZ1lYTjVibU1nWjJWMFEyVnlkR2xtYVdOaGRHVnpQRTFCVUNCbGVIUmxibVJ6SUdKdmIyeGxZVzQrS0Z4dUlDQWdJR1J2VFdGd09pQk5RVkFzWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHhOUVZBZ1pYaDBaVzVrY3lCbVlXeHpaU0EvSUVObGNuUnBabWxqWVhSbFVtVnpjRzl1YzJVZ09pQnpkSEpwYm1kYlhUNDdYRzRnSUdGemVXNWpJR2RsZEVObGNuUnBabWxqWVhSbGN6eE5RVkFnWlhoMFpXNWtjeUJpYjI5c1pXRnVQaWhjYmlBZ0lDQnlaWEYxWlhOME9pQkhaWFJEWlhKMGFXWnBZMkYwWlhOU1pYRjFaWE4wTEZ4dUlDQWdJR1J2VFdGd09pQk5RVkFzWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHhOUVZBZ1pYaDBaVzVrY3lCbVlXeHpaU0EvSUVObGNuUnBabWxqWVhSbFVtVnpjRzl1YzJVZ09pQnpkSEpwYm1kYlhUNDdYRzRnSUdGemVXNWpJR2RsZEVObGNuUnBabWxqWVhSbGN6eE5RVkFnWlhoMFpXNWtjeUJpYjI5c1pXRnVQaWhjYmlBZ0lDQnlaWEYxWlhOMFB6b2dSMlYwUTJWeWRHbG1hV05oZEdWelVtVnhkV1Z6ZENCOElFMUJVQ3hjYmlBZ0lDQmtiMDFoY0RvZ1RVRlFJRDBnZEhKMVpTQmhjeUJOUVZBc1hHNGdJQ0FnTGk0dVlYSm5jem9nVFdGNVltVkRiMjUwWlhoMGRXRnNRWEpuUEdGdWVUNWNiaUFnS1RvZ1VISnZiV2x6WlR4TlFWQWdaWGgwWlc1a2N5Qm1ZV3h6WlNBL0lFTmxjblJwWm1sallYUmxVbVZ6Y0c5dWMyVWdPaUJ6ZEhKcGJtZGJYVDRnZTF4dUlDQWdJR2xtSUNoeVpYRjFaWE4wSUdsdWMzUmhibU5sYjJZZ1EyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ1lYSm5jeUE5SUZ0eVpYRjFaWE4wWFR0Y2JpQWdJQ0FnSUdSdlRXRndJRDBnZEhKMVpTQmhjeUJOUVZBN1hHNGdJQ0FnSUNCeVpYRjFaWE4wSUQwZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUhKbGNYVmxjM1FnUFQwOUlGd2lZbTl2YkdWaGJsd2lLU0I3WEc0Z0lDQWdJQ0JrYjAxaGNDQTlJSEpsY1hWbGMzUTdYRzRnSUNBZ0lDQnlaWEYxWlhOMElEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHUnZUV0Z3SUNFOVBTQmNJbUp2YjJ4bFlXNWNJaWtnZTF4dUlDQWdJQ0FnWVhKbmN5QTlJRnRrYjAxaGNDQmhjeUJOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWM4WVc1NVBpd2dMaTR1WVhKbmMxMDdYRzRnSUNBZ0lDQmtiMDFoY0NBOUlIUnlkV1VnWVhNZ1RVRlFPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhzZ2JHOW5JSDBnUFNBb1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnVDNCbGNtRjBhVzl1UzJWNWN5NVNSVUZFTENCMGNuVmxLU2t1Wm05eUtGeHVJQ0FnSUNBZ2RHaHBjeTVuWlhSRFpYSjBhV1pwWTJGMFpYTmNiaUFnSUNBcE8xeHVJQ0FnSUd4dlp5NWtaV0oxWnloY2JpQWdJQ0FnSUdCU1pYUnlhV1YyYVc1bklHTmxjblJwWm1sallYUmxjeVI3Y21WeGRXVnpkQ0EvSUdBZ1ptOXlJQ1I3Y21WeGRXVnpkQzVwWkgxZ0lEb2dYQ0pjSW4wZ1ptOXlJRU5CSUNSN2RHaHBjeTVqYjI1bWFXY3VZMkZPWVcxbGZXQmNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJSEpsYzNCdmJuTmxPaUJEWlhKMGFXWnBZMkYwWlZKbGMzQnZibk5sSUQwZ0tGeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NWpaWEowYVdacFkyRjBaWE11WjJWMFEyVnlkR2xtYVdOaGRHVnpLSEpsY1hWbGMzUWdmSHdnZTMwc0lIUm9hWE11ZFhObGNpbGNiaUFnSUNBcExuSmxjM1ZzZER0Y2JpQWdJQ0JzYjJjdWRtVnlZbTl6WlNoZ1JtOTFibVFnSkh0eVpYTndiMjV6WlM1alpYSjBjeTVzWlc1bmRHaDlJR05sY25ScFptbGpZWFJsYzJBcE8xeHVJQ0FnSUd4dlp5NWtaV0oxWnloeVpYTndiMjV6WlM1alpYSjBjeWs3WEc0Z0lDQWdjbVYwZFhKdUlDaGNiaUFnSUNBZ0lHUnZUV0Z3SUQ4Z2NtVnpjRzl1YzJVdVkyVnlkSE11YldGd0tDaGpLU0E5UGlCakxsQkZUU2tnT2lCeVpYTndiMjV6WlZ4dUlDQWdJQ2tnWVhNZ1RVRlFJR1Y0ZEdWdVpITWdabUZzYzJVZ1B5QkRaWEowYVdacFkyRjBaVkpsYzNCdmJuTmxJRG9nYzNSeWFXNW5XMTA3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJuWlhSSlpHVnVkR2wwYVdWektHTjBlRG9nUTI5dWRHVjRkQ2s2SUZCeWIyMXBjMlU4Um1GaWNtbGpTV1JsYm5ScGRIbGJYVDRnZTF4dUlDQWdJR052Ym5OMElHeHZaeUE5SUdOMGVDNXNiMmRuWlhJdVptOXlLSFJvYVhNdVoyVjBTV1JsYm5ScGRHbGxjeWs3WEc0Z0lDQWdiRzluTG5abGNtSnZjMlVvWUZKbGRISnBaWFpwYm1jZ1NXUmxiblJwZEdsbGN5QjFibVJsY2lCRFFTQWtlM1JvYVhNdVkyOXVabWxuTG1OaFRtRnRaWDFnS1R0Y2JpQWdJQ0JqYjI1emRDQnlaWE53YjI1elpUb2dTV1JsYm5ScGRIbFNaWE53YjI1elpTQTlJQ2hoZDJGcGRDQjBhR2x6TG1sa1pXNTBhWFJwWlhNdVoyVjBRV3hzS0hSb2FYTXVkWE5sY2lrcFhHNGdJQ0FnSUNBdWNtVnpkV3gwTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0dCR2IzVnVaQ0FrZTNKbGMzQnZibk5sTG1sa1pXNTBhWFJwWlhNdWJHVnVaM1JvZlNCSlpHVnVkR2wwYVdWellDazdYRzRnSUNBZ2JHOW5MbVJsWW5WbktISmxjM0J2Ym5ObExtbGtaVzUwYVhScFpYTXBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTndiMjV6WlM1cFpHVnVkR2wwYVdWek8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pYUnlhV1YyWlNCaFptWnBiR2xoZEdsdmJuTWdabkp2YlNCMGFHVWdRMEV1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRkYxWlhKcFpYTWdkR2hsSUVOQklHWnZjaUIwYUdVZ2JHbHpkQ0J2WmlCaFptWnBiR2xoZEdsdmJuTWdZWFpoYVd4aFlteGxJSFZ1WkdWeUlIUm9aU0JqYjI1bWFXZDFjbVZrSUVOQkxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSb1pTQmhabVpwYkdsaGRHbHZibk1nY21WemRXeDBJSEJoZVd4dllXUXVYRzRnSUNBcUwxeHVJQ0JoYzNsdVl5Qm5aWFJCWm1acGJHbGhkR2x2Ym5Nb1kzUjRPaUJEYjI1MFpYaDBLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JHOW5JRDBnWTNSNExteHZaMmRsY2k1bWIzSW9kR2hwY3k1blpYUkJabVpwYkdsaGRHbHZibk1wTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0dCU1pYUnlhV1YyYVc1bklFRm1abWxzYVdGMGFXOXVjeUIxYm1SbGNpQkRRU0FrZTNSb2FYTXVZMjl1Wm1sbkxtTmhUbUZ0WlgxZ0tUdGNiaUFnSUNCamIyNXpkQ0J5WlhOd2IyNXpaU0E5SUNoaGQyRnBkQ0IwYUdsekxtRm1abWxzYVdGMGFXOXVjeTVuWlhSQmJHd29kR2hwY3k1MWMyVnlLU2t1Y21WemRXeDBPMXh1SUNBZ0lHeHZaeTUyWlhKaWIzTmxLR0JHYjNWdVpDQWtlM0psYzNCdmJuTmxMbUV1YkdWdVozUm9mU0JCWm1acGJHbGhkR2x2Ym5OZ0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1NsTlBUaTV6ZEhKcGJtZHBabmtvY21WemNHOXVjMlVwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6Y0c5dWMyVTdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnY0dGeWMyVkZjbkp2Y2lobE9pQkZjbkp2Y2lrZ2UxeHVJQ0FnSUdOdmJuTjBJSEpsWjJWNGNDQTlJQzh1S21OdlpHVTZYRnh6S0Z4Y1pDc3BMaW8vYldWemMyRm5aVHBjWEhOYlhDSW5YU2d1S3lsYlhDSW5YUzluY3p0Y2JpQWdJQ0JqYjI1emRDQnRZWFJqYUNBOUlISmxaMlY0Y0M1bGVHVmpLR1V1YldWemMyRm5aU2s3WEc0Z0lDQWdhV1lnS0NGdFlYUmphQ2tnY21WMGRYSnVJRzVsZHlCU1pXZHBjM1J5WVhScGIyNUZjbkp2Y2lobEtUdGNiaUFnSUNCamIyNXpkQ0JiTENCamIyUmxMQ0J0WlhOellXZGxYU0E5SUcxaGRHTm9PMXh1SUNBZ0lITjNhWFJqYUNBb1kyOWtaU2tnZTF4dUlDQWdJQ0FnWTJGelpTQmNJamMwWENJNlhHNGdJQ0FnSUNCallYTmxJRndpTnpGY0lqcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJEYjI1bWJHbGpkRVZ5Y205eUtHMWxjM05oWjJVcE8xeHVJQ0FnSUNBZ1kyRnpaU0JjSWpJd1hDSTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnUVhWMGFHOXlhWHBoZEdsdmJrVnljbTl5S0cxbGMzTmhaMlVwTzF4dUlDQWdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCU1pXZHBjM1J5WVhScGIyNUZjbkp2Y2lodFpYTnpZV2RsS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRkpsWVdRZ2FXUmxiblJwZEhrZ1pHVjBZV2xzY3lCbWNtOXRJSFJvWlNCRFFTQmllU0JsYm5KdmJHeHRaVzUwSUVsRUxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCU1pYUnlhV1YyWlhNZ1lXNWtJSFpoYkdsa1lYUmxjeUJoSUhOcGJtZHNaU0JwWkdWdWRHbDBlU3dnZEdoeWIzZHBibWNnVG05MFJtOTFibVJGY25KdmNpQjNhR1Z1SUcxcGMzTnBibWN1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmxibkp2Ykd4dFpXNTBTV1FnTFNCRmJuSnZiR3h0Wlc1MElFbEVJSFJ2SUd4dmIydDFjQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeEdZV0p5YVdOSlpHVnVkR2wwZVQ1OUlGUm9aU0JwWkdWdWRHbDBlU0JrWlhSaGFXeHpJSE4wYjNKbFpDQnBiaUIwYUdVZ1EwRXVYRzRnSUNBcUwxeHVJQ0JoYzNsdVl5QnlaV0ZrS0Z4dUlDQWdJR1Z1Y205c2JHMWxiblJKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJQzR1TG1GeVozTTZJRTFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaenhoYm5rK1hHNGdJQ2s2SUZCeWIyMXBjMlU4Um1GaWNtbGpTV1JsYm5ScGRIaytJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHeHZaeUI5SUQwZ0tHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUU5d1pYSmhkR2x2Ymt0bGVYTXVVa1ZCUkN3Z2RISjFaU2twTG1admNpaGNiaUFnSUNBZ0lIUm9hWE11Y21WaFpGeHVJQ0FnSUNrN1hHNGdJQ0FnYkc5bkxuWmxjbUp2YzJVb1lGSmxkSEpwWlhacGJtY2dhV1JsYm5ScGRIa2dkMmwwYUNCbGJuSnZiR3h0Wlc1MElFbEVJQ1I3Wlc1eWIyeHNiV1Z1ZEVsa2ZXQXBPMXh1SUNBZ0lHeGxkQ0J5WlhOMWJIUTZJRWxUWlhKMmFXTmxVbVZ6Y0c5dWMyVTdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJSEpsYzNWc2RDQTlJR0YzWVdsMElIUm9hWE11YVdSbGJuUnBkR2xsY3k1blpYUlBibVVvWlc1eWIyeHNiV1Z1ZEVsa0xDQjBhR2x6TG5WelpYSXBPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVTZJR0Z1ZVNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFNXZkRVp2ZFc1a1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUdCRGIzVnNaRzRuZENCbWFXNWtJR1Z1Y205c2JHMWxiblFnZDJsMGFDQnBaQ0FrZTJWdWNtOXNiRzFsYm5SSlpIMDZJQ1I3WlgxZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hjbVZ6ZFd4MExuTjFZMk5sYzNNcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1RtOTBSbTkxYm1SRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWUVOdmRXeGtiaWQwSUdacGJtUWdaVzV5YjJ4c2JXVnVkQ0IzYVhSb0lHbGtJQ1I3Wlc1eWIyeHNiV1Z1ZEVsa2ZUb2dKSHR5WlhOMWJIUXVaWEp5YjNKekxtcHZhVzRvWENKY1hHNWNJaWw5WUZ4dUlDQWdJQ0FnS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUXVjbVZ6ZFd4MElHRnpJRVpoWW5KcFkwbGtaVzUwYVhSNU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pXZHBjM1JsY2lCaElHNWxkeUJwWkdWdWRHbDBlU0IzYVhSb0lIUm9aU0JEUVM1Y2JpQWdJQ29nUUhOMWJXMWhjbmtnVTNWaWJXbDBjeUJoSUhKbFoybHpkSEpoZEdsdmJpQnlaWEYxWlhOMElHWnZjaUJoSUc1bGR5Qmxibkp2Ykd4dFpXNTBJRWxFTENCeVpYUjFjbTVwYm1jZ2RHaGxJR1Z1Y205c2JHMWxiblFnYzJWamNtVjBJSFZ3YjI0Z2MzVmpZMlZ6Y3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHREY21Wa1pXNTBhV0ZzYzMwZ2JXOWtaV3dnTFNCRGNtVmtaVzUwYVdGc2N5QmpiMjUwWVdsdWFXNW5JSFZ6WlhKT1lXMWxJR0Z1WkNCd1lYTnpkMjl5WkNCbWIzSWdkR2hsSUc1bGR5QnBaR1Z1ZEdsMGVTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmFYTlRkWEJsY2xWelpYSTlabUZzYzJWZElDMGdWMmhsZEdobGNpQjBieUJ5WldkcGMzUmxjaUIwYUdVZ2FXUmxiblJwZEhrZ1lYTWdZU0J6ZFhCbGNpQjFjMlZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMkZtWm1sc2FXRjBhVzl1UFZ3aVhDSmRJQzBnUVdabWFXeHBZWFJwYjI0Z2MzUnlhVzVuSUNobExtY3VMQ0J2Y21jeExtUmxjR0Z5ZEcxbGJuUXhLUzVjYmlBZ0lDb2dRSEJoY21GdElIdERRVjlTVDB4RklId2djM1J5YVc1bmZTQmJkWE5sY2xKdmJHVmRJQzBnVW05c1pTQjBieUJoYzNOcFoyNGdkRzhnZEdobElHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNHRnlZVzBnZTBsTFpYbFdZV3gxWlVGMGRISnBZblYwWlgwZ1cyRjBkSEp6WFNBdElFOXdkR2x2Ym1Gc0lHRjBkSEpwWW5WMFpYTWdkRzhnWVhSMFlXTm9JSFJ2SUhSb1pTQnBaR1Z1ZEdsMGVTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0dFlYaEZibkp2Ykd4dFpXNTBjMTBnTFNCTllYaHBiWFZ0SUc1MWJXSmxjaUJ2WmlCbGJuSnZiR3h0Wlc1MGN5QmhiR3h2ZDJWa0lHWnZjaUIwYUdVZ2FXUmxiblJwZEhrdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTFCeWIyMXBjMlU4YzNSeWFXNW5QbjBnVkdobElHVnVjbTlzYkcxbGJuUWdjMlZqY21WMElHWnZjaUIwYUdVZ2NtVm5hWE4wWlhKbFpDQnBaR1Z1ZEdsMGVTNWNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklISmxaMmx6ZEdWeUtGeHVJQ0FnSUcxdlpHVnNPaUJEY21Wa1pXNTBhV0ZzY3l4Y2JpQWdJQ0JwYzFOMWNHVnlWWE5sY2pvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTEZ4dUlDQWdJR0ZtWm1sc2FXRjBhVzl1T2lCemRISnBibWNnUFNCY0lsd2lMRnh1SUNBZ0lIVnpaWEpTYjJ4bFB6b2dRMEZmVWs5TVJTQjhJSE4wY21sdVp5eGNiaUFnSUNCaGRIUnljejg2SUVsTFpYbFdZV3gxWlVGMGRISnBZblYwWlN4Y2JpQWdJQ0J0WVhoRmJuSnZiR3h0Wlc1MGN6ODZJRzUxYldKbGNpeGNiaUFnSUNBdUxpNWhjbWR6T2lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFlXNTVQbHh1SUNBcE9pQlFjbTl0YVhObFBITjBjbWx1Wno0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkc5bklIMGdQU0FvWVhkaGFYUWdkR2hwY3k1c2IyZERkSGdvWVhKbmN5d2dYQ0p5WldkcGMzUmxjbHdpTENCMGNuVmxLU2t1Wm05eUtGeHVJQ0FnSUNBZ2RHaHBjeTV5WldkcGMzUmxjbHh1SUNBZ0lDazdYRzVjYmlBZ0lDQnNaWFFnY21WbmFYTjBjbUYwYVc5dU9pQnpkSEpwYm1jN1hHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lHTnZibk4wSUhzZ2RYTmxjazVoYldVc0lIQmhjM04zYjNKa0lIMGdQU0J0YjJSbGJEdGNiaUFnSUNBZ0lHTnZibk4wSUhCeWIzQnpJRDBnZTF4dUlDQWdJQ0FnSUNCbGJuSnZiR3h0Wlc1MFNVUTZJSFZ6WlhKT1lXMWxJR0Z6SUhOMGNtbHVaeXhjYmlBZ0lDQWdJQ0FnWlc1eWIyeHNiV1Z1ZEZObFkzSmxkRG9nY0dGemMzZHZjbVFzWEc0Z0lDQWdJQ0FnSUdGbVptbHNhV0YwYVc5dU9pQmhabVpwYkdsaGRHbHZiaXhjYmlBZ0lDQWdJQ0FnZFhObGNsSnZiR1U2SUhWelpYSlNiMnhsTEZ4dUlDQWdJQ0FnSUNCaGRIUnljem9nWVhSMGNuTXNYRzRnSUNBZ0lDQWdJRzFoZUVWdWNtOXNiRzFsYm5Sek9pQnRZWGhGYm5KdmJHeHRaVzUwY3l4Y2JpQWdJQ0FnSUgwZ1lYTWdTVkpsWjJsemRHVnlVbVZ4ZFdWemREdGNiaUFnSUNBZ0lISmxaMmx6ZEhKaGRHbHZiaUE5SUdGM1lXbDBJSFJvYVhNdVkyeHBaVzUwTG5KbFoybHpkR1Z5S0hCeWIzQnpMQ0IwYUdsekxuVnpaWElwTzF4dUlDQWdJQ0FnYkc5bkxtbHVabThvWEc0Z0lDQWdJQ0FnSUdCU1pXZHBjM1J5WVhScGIyNGdabTl5SUNSN2RYTmxjazVoYldWOUlHTnlaV0YwWldRZ2QybDBhQ0IxYzJWeUlIUjVjR1VnSkh0MWMyVnlVbTlzWlNBL1B5QmNJbFZ1WkdWbWFXNWxaQ0JTYjJ4bFhDSjlJQ1I3YVhOVGRYQmxjbFZ6WlhJZ1B5QmNJbUZ6SUhOMWNHVnlJSFZ6WlhKY0lpQTZJRndpWENKOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOUlHTmhkR05vSUNobE9pQmhibmtwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJSFJvYVhNdWNHRnljMlZGY25KdmNpaGxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbFoybHpkSEpoZEdsdmJqdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0J6ZEdGMGFXTWdhV1JsYm5ScGRIbEdjbTl0Ulc1eWIyeHNiV1Z1ZENoY2JpQWdJQ0JsYm5KdmJHeHRaVzUwT2lCSlJXNXliMnhzVW1WemNHOXVjMlVzWEc0Z0lDQWdiWE53U1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0JqZEhnNklFTnZiblJsZUhSY2JpQWdLVG9nU1dSbGJuUnBkSGtnZTF4dUlDQWdJR052Ym5OMElHeHZaeUE5SUdOMGVDNXNiMmRuWlhJdVptOXlLSFJvYVhNdWFXUmxiblJwZEhsR2NtOXRSVzV5YjJ4c2JXVnVkQ2s3WEc0Z0lDQWdZMjl1YzNRZ2V5QmpaWEowYVdacFkyRjBaU3dnYTJWNUxDQnliMjkwUTJWeWRHbG1hV05oZEdVZ2ZTQTlJR1Z1Y205c2JHMWxiblE3WEc0Z0lDQWdiRzluTG5abGNtSnZjMlVvWEc0Z0lDQWdJQ0JnUjJWdVpYSmhkR2x1WnlCSlpHVnVkR2wwZVNCbWNtOXRJR05sY25ScFptbGpZWFJsSUNSN1kyVnlkR2xtYVdOaGRHVjlJR2x1SUcxemNDQWtlMjF6Y0Vsa2ZXQmNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJR05zYVdWdWRFbGtJRDBnUTNKNWNIUnZWWFJwYkhNdVptRmljbWxqU1dSR2NtOXRRMlZ5ZEdsbWFXTmhkR1VvWTJWeWRHbG1hV05oZEdVcE8xeHVJQ0FnSUdOdmJuTjBJR2xrSUQwZ1EzSjVjSFJ2VlhScGJITXVaVzVqYjJSbEtHTnNhV1Z1ZEVsa0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lFbGtaVzUwYVhSNUlDUjdZMnhwWlc1MFNXUjlJR0Z1WkNCbGJtTnZaR1ZrU1dRZ0pIdHBaSDFnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUVsa1pXNTBhWFI1S0h0Y2JpQWdJQ0FnSUdsa09pQnBaQ3hjYmlBZ0lDQWdJR055WldSbGJuUnBZV3h6T2lCN1hHNGdJQ0FnSUNBZ0lHbGtPaUJwWkN4Y2JpQWdJQ0FnSUNBZ1kyVnlkR2xtYVdOaGRHVTZJR05sY25ScFptbGpZWFJsTEZ4dUlDQWdJQ0FnSUNCd2NtbDJZWFJsUzJWNU9pQnJaWGt1ZEc5Q2VYUmxjeWdwTEZ4dUlDQWdJQ0FnSUNCeWIyOTBRMlZ5ZEdsbWFXTmhkR1U2SUhKdmIzUkRaWEowYVdacFkyRjBaU3hjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0J0YzNCSlpEb2diWE53U1dRc1hHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVWdWNtOXNiQ0JoYmlCcFpHVnVkR2wwZVNCM2FYUm9JSFJvWlNCRFFTQjFjMmx1WnlCaElISmxaMmx6ZEhKaGRHbHZiaUJ6WldOeVpYUXVYRzRnSUNBcUlFQnpkVzF0WVhKNUlFVjRZMmhoYm1kbGN5QjBhR1VnWlc1eWIyeHNiV1Z1ZENCSlJDQmhibVFnYzJWamNtVjBJR1p2Y2lCalpYSjBhV1pwWTJGMFpYTXNJSEpsZEhWeWJtbHVaeUJoSUdOdmJuTjBjblZqZEdWa0lFbGtaVzUwYVhSNUlHMXZaR1ZzTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaVzV5YjJ4c2JXVnVkRWxrSUMwZ1JXNXliMnhzYldWdWRDQkpSQ0IwYnlCbGJuSnZiR3d1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnlaV2RwYzNSeVlYUnBiMjRnTFNCRmJuSnZiR3h0Wlc1MElITmxZM0psZENCeVpYUjFjbTVsWkNCaGRDQnlaV2RwYzNSeVlYUnBiMjRnZEdsdFpTNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4SlpHVnVkR2wwZVQ1OUlGUm9aU0JsYm5KdmJHeGxaQ0JwWkdWdWRHbDBlU0J2WW1wbFkzUWdkMmwwYUNCamNtVmtaVzUwYVdGc2N5NWNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklHVnVjbTlzYkNoY2JpQWdJQ0JsYm5KdmJHeHRaVzUwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J5WldkcGMzUnlZWFJwYjI0NklITjBjbWx1Wnl4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWM4WVc1NVBseHVJQ0FwT2lCUWNtOXRhWE5sUEVsa1pXNTBhWFI1UGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJzYjJjc0lHTjBlQ0I5SUQwZ0tHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUZ3aVpXNXliMnhzWENJc0lIUnlkV1VwS1M1bWIzSW9YRzRnSUNBZ0lDQjBhR2x6TG1WdWNtOXNiRnh1SUNBZ0lDazdYRzRnSUNBZ2JHVjBJR2xrWlc1MGFYUjVPaUJKWkdWdWRHbDBlVHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnYkc5bkxtUmxZblZuS0dCRmJuSnZiR3hwYm1jZ0pIdGxibkp2Ykd4dFpXNTBTV1I5WUNrN1hHNGdJQ0FnSUNCamIyNXpkQ0JsYm5KdmJHeHRaVzUwT2lCSlJXNXliMnhzVW1WemNHOXVjMlVnUFNCaGQyRnBkQ0IwYUdsekxtTnNhV1Z1ZEM1bGJuSnZiR3dvZTF4dUlDQWdJQ0FnSUNCbGJuSnZiR3h0Wlc1MFNVUTZJR1Z1Y205c2JHMWxiblJKWkN4Y2JpQWdJQ0FnSUNBZ1pXNXliMnhzYldWdWRGTmxZM0psZERvZ2NtVm5hWE4wY21GMGFXOXVMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0JwWkdWdWRHbDBlU0E5SUVaaFluSnBZMGxrWlc1MGFYUjVVMlZ5ZG1salpTNXBaR1Z1ZEdsMGVVWnliMjFGYm5KdmJHeHRaVzUwS0Z4dUlDQWdJQ0FnSUNCbGJuSnZiR3h0Wlc1MExGeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJtWnBaeTVqWVU1aGJXVXNYRzRnSUNBZ0lDQWdJR04wZUZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUd4dlp5NXBibVp2S0Z4dUlDQWdJQ0FnSUNCZ1UzVmpZMlZ6YzJaMWJHeDVJR1Z1Y205c2JHVmtJQ1I3Wlc1eWIyeHNiV1Z1ZEVsa2ZTQjFibVJsY2lBa2UzUm9hWE11WTI5dVptbG5MbU5oVG1GdFpYMGdZWE1nSkh0cFpHVnVkR2wwZVM1cFpIMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVTZJR0Z1ZVNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnZEdocGN5NXdZWEp6WlVWeWNtOXlLR1VwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2FXUmxiblJwZEhrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFoybHpkR1Z5SUdGdVpDQmxibkp2Ykd3Z1lTQnVaWGNnYVdSbGJuUnBkSGtnYVc0Z2IyNWxJSE4wWlhBdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbFoybHpkR1Z5Y3lCaElHNWxkeUJsYm5KdmJHeHRaVzUwSUVsRUlIZHBkR2dnZEdobElFTkJJR0Z1WkNCcGJXMWxaR2xoZEdWc2VTQmxlR05vWVc1blpYTWdkR2hsSUhObFkzSmxkQ0IwYnlCbGJuSnZiR3dzSUhKbGRIVnlibWx1WnlCMGFHVWdZM0psWVhSbFpDQkpaR1Z1ZEdsMGVTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0RGNtVmtaVzUwYVdGc2MzMGdiVzlrWld3Z0xTQkRjbVZrWlc1MGFXRnNjeUJtYjNJZ2RHaGxJRzVsZHlCcFpHVnVkR2wwZVNCamIyNTBZV2x1YVc1bklIVnpaWEpPWVcxbElHRnVaQ0J3WVhOemQyOXlaQzVjYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJhWE5UZFhCbGNsVnpaWEk5Wm1Gc2MyVmRJQzBnVjJobGRHaGxjaUIwYnlCeVpXZHBjM1JsY2lCMGFHVWdhV1JsYm5ScGRIa2dZWE1nWVNCemRYQmxjaUIxYzJWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzJGbVptbHNhV0YwYVc5dVBWd2lYQ0pkSUMwZ1FXWm1hV3hwWVhScGIyNGdjM1J5YVc1bklDaGxMbWN1TENCdmNtY3hMbVJsY0dGeWRHMWxiblF4S1M1Y2JpQWdJQ29nUUhCaGNtRnRJSHREUVY5U1QweEZJSHdnYzNSeWFXNW5mU0JiZFhObGNsSnZiR1ZkSUMwZ1VtOXNaU0IwYnlCaGMzTnBaMjRnZEc4Z2RHaGxJR2xrWlc1MGFYUjVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwbExaWGxXWVd4MVpVRjBkSEpwWW5WMFpYMGdXMkYwZEhKelhTQXRJRTl3ZEdsdmJtRnNJR0YwZEhKcFluVjBaWE1nZEc4Z1lYUjBZV05vSUhSdklIUm9aU0JwWkdWdWRHbDBlUzVjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHRZWGhGYm5KdmJHeHRaVzUwYzEwZ0xTQk5ZWGhwYlhWdElHNTFiV0psY2lCdlppQmxibkp2Ykd4dFpXNTBjeUJoYkd4dmQyVmtJR1p2Y2lCMGFHVWdhV1JsYm5ScGRIa3VYRzRnSUNBcUlFQnlaWFIxY200Z2UxQnliMjFwYzJVOFNXUmxiblJwZEhrK2ZTQlVhR1VnWlc1eWIyeHNaV1FnYVdSbGJuUnBkSGt1WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUJ5WldkcGMzUmxja0Z1WkVWdWNtOXNiQ2hjYmlBZ0lDQnRiMlJsYkRvZ1EzSmxaR1Z1ZEdsaGJITXNYRzRnSUNBZ2FYTlRkWEJsY2xWelpYSTZJR0p2YjJ4bFlXNGdQU0JtWVd4elpTeGNiaUFnSUNCaFptWnBiR2xoZEdsdmJqb2djM1J5YVc1bklEMGdYQ0pjSWl4Y2JpQWdJQ0IxYzJWeVVtOXNaVDg2SUVOQlgxSlBURVVnZkNCemRISnBibWNzWEc0Z0lDQWdZWFIwY25NL09pQkpTMlY1Vm1Gc2RXVkJkSFJ5YVdKMWRHVXNYRzRnSUNBZ2JXRjRSVzV5YjJ4c2JXVnVkSE0vT2lCdWRXMWlaWElzWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHhKWkdWdWRHbDBlVDRnZTF4dUlDQWdJR052Ym5OMElIc2dZM1I0SUgwZ1BTQW9ZWGRoYVhRZ2RHaHBjeTVzYjJkRGRIZ29ZWEpuY3l3Z1hDSnlaV2RwYzNSbGNpMWxibkp2Ykd4Y0lpd2dkSEoxWlNrcExtWnZjaWhjYmlBZ0lDQWdJSFJvYVhNdWNtVm5hWE4wWlhKQmJtUkZibkp2Ykd4Y2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElISmxaMmx6ZEhKaGRHbHZiaUE5SUdGM1lXbDBJSFJvYVhNdWNtVm5hWE4wWlhJb1hHNGdJQ0FnSUNCdGIyUmxiQ3hjYmlBZ0lDQWdJR2x6VTNWd1pYSlZjMlZ5TEZ4dUlDQWdJQ0FnWVdabWFXeHBZWFJwYjI0c1hHNGdJQ0FnSUNCMWMyVnlVbTlzWlN4Y2JpQWdJQ0FnSUdGMGRISnpMRnh1SUNBZ0lDQWdiV0Y0Ulc1eWIyeHNiV1Z1ZEhNc1hHNGdJQ0FnSUNCamRIaGNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJSHNnZFhObGNrNWhiV1VnZlNBOUlHMXZaR1ZzTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1WdWNtOXNiQ2gxYzJWeVRtRnRaU0JoY3lCemRISnBibWNzSUhKbFoybHpkSEpoZEdsdmJpd2dZM1I0S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVW1VdFpXNXliMnhzSUdGdUlHVjRhWE4wYVc1bklHbGtaVzUwYVhSNUlIVnphVzVuSUdsMGN5QmpkWEp5Wlc1MElHVnVjbTlzYkcxbGJuUXVYRzRnSUNBcUlFQnpkVzF0WVhKNUlGSmxibVYzY3lCMGFHVWdaVzV5YjJ4c2JXVnVkQ0JqWlhKMGFXWnBZMkYwWlNCaWVTQmpZV3hzYVc1bklIUm9aU0JEUVNCeVpXVnVjbTlzYkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRWYzJWeWZTQmpkWEp5Wlc1MFZYTmxjaUF0SUVGc2NtVmhaSGtnWlc1eWIyeHNaV1FnZFhObGNpd2diWFZ6ZENCb1lYWmxJR0VnYzJsbmJtbHVaeUJwWkdWdWRHbDBlUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeEpaR1Z1ZEdsMGVUNTlJRlJvWlNCeVpXNWxkMlZrSUdsa1pXNTBhWFI1SUc5aWFtVmpkQ0IzYVhSb0lHNWxkeUJqY21Wa1pXNTBhV0ZzY3k1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUhWd1pHRjBaVWxrWlc1MGFYUjVLRnh1SUNBZ0lHVnVjbTlzYkcxbGJuUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHbGtaVzUwYVhSNU9pQjdJR05sY25ScFptbGpZWFJsT2lCemRISnBibWM3SUhCeWFYWmhkR1ZMWlhrNklITjBjbWx1WnlCOUxGeHVJQ0FnSUdsa1pXNTBhWFI1VW1WeGRXVnpkRG9nU1Vsa1pXNTBhWFI1VW1WeGRXVnpkQ3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhZVzU1UGx4dUlDQXBPaUJRY205dGFYTmxQRWxrWlc1MGFYUjVQaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNzSUdOMGVDQjlJRDBnS0dGM1lXbDBJSFJvYVhNdWJHOW5RM1I0S0dGeVozTXNJRndpY21WbGJuSnZiR3hjSWl3Z2RISjFaU2twTG1admNpaGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxTV1JsYm5ScGRIbGNiaUFnSUNBcE8xeHVYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJR3h2Wnk1cGJtWnZLR0JTWlc1bGQybHVaeUJwWkdWdWRHbDBlU0JtYjNJZ0pIdGxibkp2Ykd4dFpXNTBTV1I5WUNrN1hHNWNiaUFnSUNBZ0lDOHZJRlZ3WkdGMFpTQmhkSFJ5YVdKMWRHVnpJR2x1SUhSb1pTQkRRU0J5WldkcGMzUnllU0FvWVdSdGFXNGdiM0JsY21GMGFXOXVLUzRnVkdocGN5QmphR0Z1WjJWeklIUm9aU0JjSW5OdmRYSmpaU0J2WmlCMGNuVjBhRndpTGx4dUlDQWdJQ0FnWTI5dWMzUWdhV1JsYm5ScGRIbFRaWEoyYVdObElEMGdkR2hwY3k1amJHbGxiblF1Ym1WM1NXUmxiblJwZEhsVFpYSjJhV05sS0NrN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUdOaFZYTmxja2xrWlc1MGFYUjVJRDBnS0dGM1lXbDBJR2xrWlc1MGFYUjVVMlZ5ZG1salpTNW5aWFJQYm1Vb1hHNGdJQ0FnSUNBZ0lHVnVjbTlzYkcxbGJuUkpaQ3hjYmlBZ0lDQWdJQ0FnZEdocGN5NTFjMlZ5WEc0Z0lDQWdJQ0FwS1NCaGN5QjdJSEpsYzNWc2REb2dleUJoZEhSeWN6ODZJRWxMWlhsV1lXeDFaVUYwZEhKcFluVjBaVnRkSUgwZ2ZUdGNibHh1SUNBZ0lDQWdZWGRoYVhRZ2FXUmxiblJwZEhsVFpYSjJhV05sTG5Wd1pHRjBaU2hsYm5KdmJHeHRaVzUwU1dRc0lHbGtaVzUwYVhSNVVtVnhkV1Z6ZEN3Z2RHaHBjeTUxYzJWeUtUc2dMeThnWVhNZ1NWTmxjblpwWTJWU1pYTndiMjV6WlNBbUlIc2djbVZ6ZFd4ME9pQkpTV1JsYm5ScGRIbFNaWEYxWlhOMElIMDdYRzVjYmlBZ0lDQWdJQzh2SUZKbFpXNXliMnhzSUdGeklIUm9aU0IxYzJWeUxpQlNaWEYxWlhOMElHMTFjM1FnWW1VZ2MybG5ibVZrSUhWemFXNW5JSFJvWlNCbGVHbHpkR2x1WnlCalpYSjBhV1pwWTJGMFpTNWNiaUFnSUNBZ0lHTnZibk4wSUhKbFpXNXliMnhzVlhObGNpQTlJRlZ6WlhJdVkzSmxZWFJsVlhObGNpaGNiaUFnSUNBZ0lDQWdaVzV5YjJ4c2JXVnVkRWxrTEZ4dUlDQWdJQ0FnSUNCY0lsd2lMQ0F2THlCbGJuSnZiR3h0Wlc1MFUyVmpjbVYwSUc1dmRDQnlaWEYxYVhKbFpDQm1iM0lnY21WbGJuSnZiR3hjYmlBZ0lDQWdJQ0FnZEdocGN5NTFjMlZ5TG1kbGRFMXpjR2xrS0Nrc1hHNGdJQ0FnSUNBZ0lHbGtaVzUwYVhSNUxtTmxjblJwWm1sallYUmxMRnh1SUNBZ0lDQWdJQ0JwWkdWdWRHbDBlUzV3Y21sMllYUmxTMlY1WEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnY21WbGJuSnZiR3hWYzJWeUxuTmxkRU55ZVhCMGIxTjFhWFJsS0hSb2FYTXVkWE5sY2k1blpYUkRjbmx3ZEc5VGRXbDBaU2dwS1R0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWlc1eWIyeHNiV1Z1ZEVGMGRISnpPaUJKUVhSMGNtbGlkWFJsVW1WeGRXVnpkRnRkSUQwZ0tGeHVJQ0FnSUNBZ0lDQmpZVlZ6WlhKSlpHVnVkR2wwZVM1eVpYTjFiSFF1WVhSMGNuTWdmSHdnVzExY2JpQWdJQ0FnSUNrdWJXRndLQ2g3SUc1aGJXVWdmU2tnUFQ0Z0tIdGNiaUFnSUNBZ0lDQWdibUZ0WlN4Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1WVd3NklHWmhiSE5sTEZ4dUlDQWdJQ0FnZlNrcE8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCbGJuSnZiR3h0Wlc1MElEMGdZWGRoYVhRZ2RHaHBjeTVqYkdsbGJuUXVjbVZsYm5KdmJHd29YRzRnSUNBZ0lDQWdJSEpsWlc1eWIyeHNWWE5sY2l4Y2JpQWdJQ0FnSUNBZ1pXNXliMnhzYldWdWRFRjBkSEp6WEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0J5Wlc1bGQyVmtTV1JsYm5ScGRIa2dQU0JHWVdKeWFXTkpaR1Z1ZEdsMGVWTmxjblpwWTJVdWFXUmxiblJwZEhsR2NtOXRSVzV5YjJ4c2JXVnVkQ2hjYmlBZ0lDQWdJQ0FnWlc1eWIyeHNiV1Z1ZEN4Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1bWFXY3VZMkZPWVcxbExGeHVJQ0FnSUNBZ0lDQmpkSGhjYmlBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUM4dklGSmxkbTlyWlNCMGFHVWdjSEpsZG1sdmRYTWdZMlZ5ZEdsbWFXTmhkR1VnYjI1c2VTd2djMjhnZEdobElHOXNaQ0JqWlhKMElHSmxZMjl0WlhNZ2FXNTJZV3hwWkM1Y2JpQWdJQ0FnSUd4dlp5NWtaV0oxWnloZ1VtVjJiMnRwYm1jZ2NISmxkbWx2ZFhNZ1kyVnlkR2xtYVdOaGRHVnpJR1p2Y2lBa2UyVnVjbTlzYkcxbGJuUkpaSDFnS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSHNnWVd0cExDQnpaWEpwWVd3Z2ZTQTlJR2RsZEVGcmFVRnVaRk5sY21saGJFWnliMjFEWlhKMEtHbGtaVzUwYVhSNUxtTmxjblJwWm1sallYUmxLVHRjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11Y21WMmIydGxLR1Z1Y205c2JHMWxiblJKWkN3Z2V5QmhhMmtzSUhObGNtbGhiQ0I5TENCaGNtZHpLVHRjYmx4dUlDQWdJQ0FnYkc5bkxtUmxZblZuS0dCU1pXNWxkeUJwWkdWdWRHbDBlU0J6ZFdOalpYTnpablZzSUdadmNpQWtlMlZ1Y205c2JHMWxiblJKWkgxZ0tUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpXNWxkMlZrU1dSbGJuUnBkSGs3WEc0Z0lDQWdmU0JqWVhSamFDQW9aVG9nWVc1NUtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCMGFHbHpMbkJoY25ObFJYSnliM0lvWlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkbTlyWlhNZ2RHaGxJR1Z1Y205c2JHMWxiblFnYjJZZ1lXNGdhV1JsYm5ScGRIa2dkMmwwYUNCMGFHVWdjM0JsWTJsbWFXVmtJR1Z1Y205c2JHMWxiblFnU1VRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQmxibkp2Ykd4dFpXNTBTV1FnTFNCVWFHVWdaVzV5YjJ4c2JXVnVkQ0JKUkNCdlppQjBhR1VnYVdSbGJuUnBkSGtnZEc4Z1ltVWdjbVYyYjJ0bFpDNWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnlibk1nUVNCUWNtOXRhWE5sSUhSb1lYUWdjbVZ6YjJ4MlpYTWdkRzhnZEdobElISmxjM1ZzZENCdlppQjBhR1VnY21WMmIyTmhkR2x2YmlCdmNHVnlZWFJwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUIwYUhKdmQzTWdlMDV2ZEVadmRXNWtSWEp5YjNKOUlFbG1JSFJvWlNCbGJuSnZiR3h0Wlc1MElIZHBkR2dnZEdobElITndaV05wWm1sbFpDQkpSQ0JrYjJWeklHNXZkQ0JsZUdsemRDNWNiaUFnSUNvZ1FIUm9jbTkzY3lCN1NXNTBaWEp1WVd4RmNuSnZjbjBnU1dZZ2RHaGxjbVVnYVhNZ1lXNGdaWEp5YjNJZ1pIVnlhVzVuSUhSb1pTQnlaWFp2WTJGMGFXOXVJSEJ5YjJObGMzTXVYRzRnSUNBcUwxeHVJQ0JoYzNsdVl5QnlaWFp2YTJVb1hHNGdJQ0FnWlc1eWIyeHNiV1Z1ZEVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnY21WMmIydGxUM0IwYVc5dWN6b2dUMjFwZER4SlVtVjJiMnRsVW1WeGRXVnpkQ3dnWENKbGJuSnZiR3h0Wlc1MFNVUmNJajRzWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHhKVTJWeWRtbGpaVkpsYzNCdmJuTmxQaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNnZlNBOUlDaGhkMkZwZENCMGFHbHpMbXh2WjBOMGVDaGhjbWR6TENCY0luSmxkbTlyWlZ3aUxDQjBjblZsS1NrdVptOXlLSFJvYVhNdWNtVjJiMnRsS1R0Y2JpQWdJQ0JzYjJjdWRtVnlZbTl6WlNoZ1VtVjJiMnRwYm1jZ2FXUmxiblJwZEhrZ2QybDBhQ0JsYm5KdmJHeHRaVzUwSUVsRUlDUjdaVzV5YjJ4c2JXVnVkRWxrZldBcE8xeHVJQ0FnSUdOdmJuTjBJR2xrWlc1MGFYUjVJRDBnWVhkaGFYUWdkR2hwY3k1eVpXRmtLR1Z1Y205c2JHMWxiblJKWkNrN1hHNGdJQ0FnYVdZZ0tDRnBaR1Z1ZEdsMGVTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5Qk9iM1JHYjNWdVpFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCZ1EyOTFiR1FnYm05MElHWnBibVFnWlc1eWIyeHNiV1Z1ZENCM2FYUm9JR2xrSUNSN1pXNXliMnhzYldWdWRFbGtmV0JjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdiR1YwSUhKbGMzVnNkRG9nU1ZObGNuWnBZMlZTWlhOd2IyNXpaVHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjbVZoYzI5dUlEMWNiaUFnSUNBZ0lDQWdRbTl2YkdWaGJpaHlaWFp2YTJWUGNIUnBiMjV6TG5ObGNtbGhiQ2tnZkh3Z1FtOXZiR1ZoYmloeVpYWnZhMlZQY0hScGIyNXpMbUZyYVNsY2JpQWdJQ0FnSUNBZ0lDQS9JRndpVW1WMmIydGxJRlZ6WlhJZ1EyVnlkR2xtYVdOaGRHVmNJbHh1SUNBZ0lDQWdJQ0FnSURvZ1hDSlZjMlZ5SUVSbGJHVjBhVzl1WENJN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUhKbGRtOXJaVkpsY1hWbGMzUTZJRWxTWlhadmEyVlNaWEYxWlhOMElEMGdlMXh1SUNBZ0lDQWdJQ0J5WldGemIyNHNYRzRnSUNBZ0lDQWdJQzR1TG5KbGRtOXJaVTl3ZEdsdmJuTXNYRzRnSUNBZ0lDQWdJR1Z1Y205c2JHMWxiblJKUkRvZ2FXUmxiblJwZEhrdWFXUXNYRzRnSUNBZ0lDQjlPMXh1WEc0Z0lDQWdJQ0J5WlhOMWJIUWdQU0JoZDJGcGRDQjBhR2x6TG1Oc2FXVnVkQzV5WlhadmEyVW9jbVYyYjJ0bFVtVnhkV1Z6ZEN3Z2RHaHBjeTUxYzJWeUtUdGNiaUFnSUNCOUlHTmhkR05vSUNobE9pQjFibXR1YjNkdUtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1lFTnZkV3hrSUc1dmRDQnlaWFp2YTJVZ1pXNXliMnhzYldWdWRDQjNhWFJvSUdsa0lDUjdaVzV5YjJ4c2JXVnVkRWxrZlRvZ0pIdGxmV0JjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2doY21WemRXeDBMbk4xWTJObGMzTXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1lFTnZkV3hrSUc1dmRDQnlaWFp2YTJVZ1pXNXliMnhzYldWdWRDQjNhWFJvSUdsa0lDUjdaVzV5YjJ4c2JXVnVkRWxrZlRvZ0pIdHlaWE4xYkhRdVpYSnliM0p6TG1wdmFXNG9YQ0pjWEc1Y0lpbDlZRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=