@aerokit/sdk 12.80.0 → 12.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/cjs/bpm/deployer.js +1 -1
  2. package/dist/cjs/bpm/index.js +1 -1
  3. package/dist/cjs/bpm/process.js +1 -1
  4. package/dist/cjs/bpm/tasks.js +1 -1
  5. package/dist/cjs/bpm/tracer.js +1 -1
  6. package/dist/cjs/bpm/values.js +1 -1
  7. package/dist/cjs/cache/cache.js +1 -1
  8. package/dist/cjs/cache/index.js +1 -1
  9. package/dist/cjs/cms/cmis.js +1 -1
  10. package/dist/cjs/cms/index.js +1 -1
  11. package/dist/cjs/component/decorators.js +1 -1
  12. package/dist/cjs/component/index.js +1 -1
  13. package/dist/cjs/core/configurations.js +1 -1
  14. package/dist/cjs/core/context.js +1 -1
  15. package/dist/cjs/core/env.js +1 -1
  16. package/dist/cjs/core/globals.js +1 -1
  17. package/dist/cjs/core/index.js +1 -1
  18. package/dist/cjs/db/dao.js +1 -1
  19. package/dist/cjs/db/database.js +1 -1
  20. package/dist/cjs/db/decorators.js +1 -1
  21. package/dist/cjs/db/index.js +1 -1
  22. package/dist/cjs/db/insert.js +1 -1
  23. package/dist/cjs/db/orm.js +1 -1
  24. package/dist/cjs/db/ormstatements.js +1 -1
  25. package/dist/cjs/db/procedure.js +1 -1
  26. package/dist/cjs/db/query.js +1 -1
  27. package/dist/cjs/db/repository.js +1 -1
  28. package/dist/cjs/db/sequence.js +1 -1
  29. package/dist/cjs/db/sql.js +1 -1
  30. package/dist/cjs/db/store.js +1 -1
  31. package/dist/cjs/db/translator.js +1 -1
  32. package/dist/cjs/db/update.js +1 -1
  33. package/dist/cjs/etcd/client.js +1 -1
  34. package/dist/cjs/etcd/index.js +1 -1
  35. package/dist/cjs/extensions/decorators.js +1 -1
  36. package/dist/cjs/extensions/extensions.js +1 -1
  37. package/dist/cjs/extensions/index.js +1 -1
  38. package/dist/cjs/git/client.js +1 -1
  39. package/dist/cjs/git/index.js +1 -1
  40. package/dist/cjs/http/client-async.js +1 -1
  41. package/dist/cjs/http/client.js +1 -1
  42. package/dist/cjs/http/decorators.js +1 -1
  43. package/dist/cjs/http/errors/ForbiddenError.js +1 -1
  44. package/dist/cjs/http/errors/ValidationError.js +1 -1
  45. package/dist/cjs/http/errors.js +1 -1
  46. package/dist/cjs/http/index.js +1 -1
  47. package/dist/cjs/http/request.js +1 -1
  48. package/dist/cjs/http/response.js +1 -1
  49. package/dist/cjs/http/rs/resource-http-controller.js +1 -1
  50. package/dist/cjs/http/rs/resource-mappings.js +1 -1
  51. package/dist/cjs/http/rs/resource-method.js +1 -1
  52. package/dist/cjs/http/rs/resource.js +1 -1
  53. package/dist/cjs/http/rs.js +1 -1
  54. package/dist/cjs/http/session.js +1 -1
  55. package/dist/cjs/http/upload.js +1 -1
  56. package/dist/cjs/http/utils.js +1 -1
  57. package/dist/cjs/indexing/index.js +1 -1
  58. package/dist/cjs/indexing/searcher.js +1 -1
  59. package/dist/cjs/indexing/writer.js +1 -1
  60. package/dist/cjs/integrations/index.js +1 -1
  61. package/dist/cjs/integrations/integrations.js +1 -1
  62. package/dist/cjs/io/bytes.js +1 -1
  63. package/dist/cjs/io/files.js +1 -1
  64. package/dist/cjs/io/image.js +1 -1
  65. package/dist/cjs/io/index.js +1 -1
  66. package/dist/cjs/io/streams.js +1 -1
  67. package/dist/cjs/io/zip.js +1 -1
  68. package/dist/cjs/job/decorators.js +1 -1
  69. package/dist/cjs/job/index.js +1 -1
  70. package/dist/cjs/job/scheduler.js +1 -1
  71. package/dist/cjs/junit/index.js +1 -1
  72. package/dist/cjs/junit/junit.js +1 -1
  73. package/dist/cjs/kafka/consumer.js +1 -1
  74. package/dist/cjs/kafka/index.js +1 -1
  75. package/dist/cjs/kafka/producer.js +1 -1
  76. package/dist/cjs/log/index.js +1 -1
  77. package/dist/cjs/log/logging.js +1 -1
  78. package/dist/cjs/mail/client.js +1 -1
  79. package/dist/cjs/mail/index.js +1 -1
  80. package/dist/cjs/messaging/consumer.js +1 -1
  81. package/dist/cjs/messaging/decorators.js +1 -1
  82. package/dist/cjs/messaging/index.js +1 -1
  83. package/dist/cjs/messaging/producer.js +1 -1
  84. package/dist/cjs/mongodb/client.js +1 -1
  85. package/dist/cjs/mongodb/dao.js +1 -1
  86. package/dist/cjs/mongodb/index.js +1 -1
  87. package/dist/cjs/net/decorators.js +1 -1
  88. package/dist/cjs/net/index.js +1 -1
  89. package/dist/cjs/net/soap.js +1 -1
  90. package/dist/cjs/net/websockets.js +1 -1
  91. package/dist/cjs/pdf/index.js +1 -1
  92. package/dist/cjs/pdf/pdf.js +3 -3
  93. package/dist/cjs/platform/command.js +1 -1
  94. package/dist/cjs/platform/engines.js +1 -1
  95. package/dist/cjs/platform/index.js +1 -1
  96. package/dist/cjs/platform/lifecycle.js +1 -1
  97. package/dist/cjs/platform/os.js +1 -1
  98. package/dist/cjs/platform/problems.js +1 -1
  99. package/dist/cjs/platform/registry.js +1 -1
  100. package/dist/cjs/platform/repository.js +1 -1
  101. package/dist/cjs/platform/workspace.js +1 -1
  102. package/dist/cjs/qldb/index.js +1 -1
  103. package/dist/cjs/qldb/qldb.js +1 -1
  104. package/dist/cjs/rabbitmq/consumer.js +1 -1
  105. package/dist/cjs/rabbitmq/index.js +1 -1
  106. package/dist/cjs/rabbitmq/producer.js +1 -1
  107. package/dist/cjs/redis/client.js +1 -1
  108. package/dist/cjs/redis/index.js +1 -1
  109. package/dist/cjs/security/decorators.js +1 -1
  110. package/dist/cjs/security/index.js +1 -1
  111. package/dist/cjs/security/oauth.js +1 -1
  112. package/dist/cjs/security/user.js +1 -1
  113. package/dist/cjs/template/engines.js +1 -1
  114. package/dist/cjs/template/index.js +1 -1
  115. package/dist/cjs/utils/alphanumeric.js +2 -2
  116. package/dist/cjs/utils/base64.js +1 -1
  117. package/dist/cjs/utils/converter.js +1 -1
  118. package/dist/cjs/utils/digest.js +1 -1
  119. package/dist/cjs/utils/escape.js +1 -1
  120. package/dist/cjs/utils/hex.js +1 -1
  121. package/dist/cjs/utils/index.js +1 -1
  122. package/dist/cjs/utils/jsonpath.js +1 -1
  123. package/dist/cjs/utils/qrcode.js +1 -1
  124. package/dist/cjs/utils/url.js +1 -1
  125. package/dist/cjs/utils/utf8.js +1 -1
  126. package/dist/cjs/utils/uuid.js +1 -1
  127. package/dist/cjs/utils/xml.js +1 -1
  128. package/dist/dts/bpm/deployer.d.ts +35 -3
  129. package/dist/dts/bpm/index.d.ts +14 -0
  130. package/dist/dts/bpm/process.d.ts +28 -3
  131. package/dist/dts/bpm/tasks.d.ts +32 -1
  132. package/dist/dts/bpm/tracer.d.ts +35 -0
  133. package/dist/dts/bpm/values.d.ts +17 -3
  134. package/dist/dts/cache/cache.d.ts +38 -0
  135. package/dist/dts/cache/index.d.ts +10 -0
  136. package/dist/dts/cms/cmis.d.ts +28 -3
  137. package/dist/dts/cms/index.d.ts +10 -0
  138. package/dist/dts/component/decorators.d.ts +35 -5
  139. package/dist/dts/component/index.d.ts +10 -0
  140. package/dist/dts/core/configurations.d.ts +43 -4
  141. package/dist/dts/core/context.d.ts +35 -2
  142. package/dist/dts/core/env.d.ts +29 -2
  143. package/dist/dts/core/globals.d.ts +34 -2
  144. package/dist/dts/core/index.d.ts +13 -0
  145. package/dist/dts/db/database.d.ts +34 -0
  146. package/dist/dts/db/decorators.d.ts +55 -2
  147. package/dist/dts/db/index.d.ts +19 -0
  148. package/dist/dts/db/orm.d.ts +43 -0
  149. package/dist/dts/db/procedure.d.ts +37 -0
  150. package/dist/dts/db/query.d.ts +25 -1
  151. package/dist/dts/db/repository.d.ts +52 -0
  152. package/dist/dts/db/sequence.d.ts +31 -2
  153. package/dist/dts/db/sql.d.ts +33 -0
  154. package/dist/dts/db/store.d.ts +27 -0
  155. package/dist/dts/db/translator.d.ts +34 -1
  156. package/dist/dts/db/update.d.ts +38 -0
  157. package/dist/dts/etcd/client.d.ts +36 -0
  158. package/dist/dts/etcd/index.d.ts +10 -0
  159. package/dist/dts/extensions/decorators.d.ts +28 -0
  160. package/dist/dts/extensions/extensions.d.ts +30 -1
  161. package/dist/dts/extensions/index.d.ts +11 -0
  162. package/dist/dts/git/client.d.ts +28 -0
  163. package/dist/dts/git/index.d.ts +10 -0
  164. package/dist/dts/http/client-async.d.ts +29 -1
  165. package/dist/dts/http/client.d.ts +29 -1
  166. package/dist/dts/http/decorators.d.ts +38 -0
  167. package/dist/dts/http/errors/ForbiddenError.d.ts +6 -2
  168. package/dist/dts/http/errors/ValidationError.d.ts +6 -2
  169. package/dist/dts/http/errors.d.ts +14 -0
  170. package/dist/dts/http/index.d.ts +18 -0
  171. package/dist/dts/http/request.d.ts +30 -3
  172. package/dist/dts/http/response.d.ts +40 -3
  173. package/dist/dts/http/rs/resource-mappings.d.ts +30 -0
  174. package/dist/dts/http/rs.d.ts +38 -0
  175. package/dist/dts/http/session.d.ts +34 -3
  176. package/dist/dts/http/upload.d.ts +27 -2
  177. package/dist/dts/http/utils.d.ts +42 -0
  178. package/dist/dts/indexing/index.d.ts +11 -0
  179. package/dist/dts/indexing/searcher.d.ts +35 -2
  180. package/dist/dts/indexing/writer.d.ts +23 -2
  181. package/dist/dts/integrations/index.d.ts +10 -0
  182. package/dist/dts/integrations/integrations.d.ts +27 -3
  183. package/dist/dts/io/bytes.d.ts +33 -2
  184. package/dist/dts/io/files.d.ts +34 -2
  185. package/dist/dts/io/image.d.ts +27 -2
  186. package/dist/dts/io/index.d.ts +14 -0
  187. package/dist/dts/io/streams.d.ts +40 -0
  188. package/dist/dts/io/zip.d.ts +32 -0
  189. package/dist/dts/job/decorators.d.ts +29 -0
  190. package/dist/dts/job/index.d.ts +11 -0
  191. package/dist/dts/job/scheduler.d.ts +33 -2
  192. package/dist/dts/junit/index.d.ts +10 -0
  193. package/dist/dts/junit/junit.d.ts +31 -0
  194. package/dist/dts/kafka/consumer.d.ts +31 -0
  195. package/dist/dts/kafka/index.d.ts +11 -0
  196. package/dist/dts/kafka/producer.d.ts +31 -0
  197. package/dist/dts/log/index.d.ts +10 -0
  198. package/dist/dts/log/logging.d.ts +32 -0
  199. package/dist/dts/mail/client.d.ts +27 -0
  200. package/dist/dts/mail/index.d.ts +10 -0
  201. package/dist/dts/messaging/consumer.d.ts +29 -2
  202. package/dist/dts/messaging/decorators.d.ts +32 -0
  203. package/dist/dts/messaging/index.d.ts +12 -0
  204. package/dist/dts/messaging/producer.d.ts +27 -2
  205. package/dist/dts/mongodb/client.d.ts +37 -0
  206. package/dist/dts/mongodb/dao.d.ts +53 -0
  207. package/dist/dts/mongodb/index.d.ts +11 -0
  208. package/dist/dts/net/decorators.d.ts +27 -0
  209. package/dist/dts/net/index.d.ts +13 -0
  210. package/dist/dts/net/soap.d.ts +34 -0
  211. package/dist/dts/net/websockets.d.ts +34 -0
  212. package/dist/dts/pdf/index.d.ts +10 -0
  213. package/dist/dts/pdf/pdf.d.ts +41 -2
  214. package/dist/dts/platform/command.d.ts +26 -0
  215. package/dist/dts/platform/engines.d.ts +38 -0
  216. package/dist/dts/platform/index.d.ts +19 -0
  217. package/dist/dts/platform/lifecycle.d.ts +29 -0
  218. package/dist/dts/platform/os.d.ts +30 -0
  219. package/dist/dts/platform/problems.d.ts +36 -0
  220. package/dist/dts/platform/registry.d.ts +39 -0
  221. package/dist/dts/platform/repository.d.ts +40 -0
  222. package/dist/dts/platform/workspace.d.ts +42 -0
  223. package/dist/dts/qldb/index.d.ts +12 -0
  224. package/dist/dts/qldb/qldb.d.ts +14 -0
  225. package/dist/dts/rabbitmq/consumer.d.ts +24 -3
  226. package/dist/dts/rabbitmq/index.d.ts +13 -0
  227. package/dist/dts/rabbitmq/producer.d.ts +20 -3
  228. package/dist/dts/redis/client.d.ts +31 -3
  229. package/dist/dts/redis/index.d.ts +12 -0
  230. package/dist/dts/security/decorators.d.ts +34 -0
  231. package/dist/dts/security/index.d.ts +14 -0
  232. package/dist/dts/security/oauth.d.ts +27 -0
  233. package/dist/dts/security/user.d.ts +39 -0
  234. package/dist/dts/template/engines.d.ts +31 -0
  235. package/dist/dts/template/index.d.ts +12 -0
  236. package/dist/dts/utils/alphanumeric.d.ts +36 -2
  237. package/dist/dts/utils/base64.d.ts +30 -0
  238. package/dist/dts/utils/converter.d.ts +37 -2
  239. package/dist/dts/utils/digest.d.ts +31 -0
  240. package/dist/dts/utils/escape.d.ts +28 -3
  241. package/dist/dts/utils/hex.d.ts +30 -0
  242. package/dist/dts/utils/index.d.ts +23 -0
  243. package/dist/dts/utils/jsonpath.d.ts +43 -0
  244. package/dist/dts/utils/qrcode.d.ts +24 -3
  245. package/dist/dts/utils/url.d.ts +37 -3
  246. package/dist/dts/utils/utf8.d.ts +34 -3
  247. package/dist/dts/utils/uuid.d.ts +28 -2
  248. package/dist/dts/utils/xml.d.ts +31 -2
  249. package/dist/esm/bpm/deployer.mjs +1 -1
  250. package/dist/esm/bpm/index.mjs +1 -1
  251. package/dist/esm/bpm/process.mjs +1 -1
  252. package/dist/esm/bpm/tasks.mjs +1 -1
  253. package/dist/esm/bpm/tracer.mjs +1 -1
  254. package/dist/esm/bpm/values.mjs +1 -1
  255. package/dist/esm/cache/cache.mjs +1 -1
  256. package/dist/esm/cache/index.mjs +1 -1
  257. package/dist/esm/cms/cmis.mjs +1 -1
  258. package/dist/esm/cms/index.mjs +1 -1
  259. package/dist/esm/component/decorators.mjs +1 -1
  260. package/dist/esm/component/index.mjs +1 -1
  261. package/dist/esm/core/configurations.mjs +1 -1
  262. package/dist/esm/core/context.mjs +1 -1
  263. package/dist/esm/core/env.mjs +1 -1
  264. package/dist/esm/core/globals.mjs +1 -1
  265. package/dist/esm/core/index.mjs +1 -1
  266. package/dist/esm/db/dao.mjs +1 -1
  267. package/dist/esm/db/database.mjs +1 -1
  268. package/dist/esm/db/decorators.mjs +1 -1
  269. package/dist/esm/db/index.mjs +1 -1
  270. package/dist/esm/db/insert.mjs +1 -1
  271. package/dist/esm/db/orm.mjs +1 -1
  272. package/dist/esm/db/ormstatements.mjs +1 -1
  273. package/dist/esm/db/procedure.mjs +1 -1
  274. package/dist/esm/db/query.mjs +1 -1
  275. package/dist/esm/db/repository.mjs +1 -1
  276. package/dist/esm/db/sequence.mjs +1 -1
  277. package/dist/esm/db/sql.mjs +1 -1
  278. package/dist/esm/db/store.mjs +1 -1
  279. package/dist/esm/db/translator.mjs +1 -1
  280. package/dist/esm/db/update.mjs +1 -1
  281. package/dist/esm/etcd/client.mjs +1 -1
  282. package/dist/esm/etcd/index.mjs +1 -1
  283. package/dist/esm/extensions/decorators.mjs +1 -1
  284. package/dist/esm/extensions/extensions.mjs +1 -1
  285. package/dist/esm/extensions/index.mjs +1 -1
  286. package/dist/esm/git/client.mjs +1 -1
  287. package/dist/esm/git/index.mjs +1 -1
  288. package/dist/esm/http/client-async.mjs +1 -1
  289. package/dist/esm/http/client.mjs +1 -1
  290. package/dist/esm/http/decorators.mjs +1 -1
  291. package/dist/esm/http/errors/ForbiddenError.mjs +1 -1
  292. package/dist/esm/http/errors/ValidationError.mjs +1 -1
  293. package/dist/esm/http/errors.mjs +1 -1
  294. package/dist/esm/http/index.mjs +1 -1
  295. package/dist/esm/http/request.mjs +1 -1
  296. package/dist/esm/http/response.mjs +1 -1
  297. package/dist/esm/http/rs/resource-http-controller.mjs +1 -1
  298. package/dist/esm/http/rs/resource-mappings.mjs +1 -1
  299. package/dist/esm/http/rs/resource-method.mjs +1 -1
  300. package/dist/esm/http/rs/resource.mjs +1 -1
  301. package/dist/esm/http/rs.mjs +1 -1
  302. package/dist/esm/http/session.mjs +1 -1
  303. package/dist/esm/http/upload.mjs +1 -1
  304. package/dist/esm/http/utils.mjs +1 -1
  305. package/dist/esm/indexing/index.mjs +1 -1
  306. package/dist/esm/indexing/searcher.mjs +1 -1
  307. package/dist/esm/indexing/writer.mjs +1 -1
  308. package/dist/esm/integrations/index.mjs +1 -1
  309. package/dist/esm/integrations/integrations.mjs +1 -1
  310. package/dist/esm/io/bytes.mjs +1 -1
  311. package/dist/esm/io/files.mjs +1 -1
  312. package/dist/esm/io/image.mjs +1 -1
  313. package/dist/esm/io/index.mjs +1 -1
  314. package/dist/esm/io/streams.mjs +1 -1
  315. package/dist/esm/io/zip.mjs +1 -1
  316. package/dist/esm/job/decorators.mjs +1 -1
  317. package/dist/esm/job/index.mjs +1 -1
  318. package/dist/esm/job/scheduler.mjs +1 -1
  319. package/dist/esm/junit/index.mjs +1 -1
  320. package/dist/esm/junit/junit.mjs +1 -1
  321. package/dist/esm/kafka/consumer.mjs +1 -1
  322. package/dist/esm/kafka/index.mjs +1 -1
  323. package/dist/esm/kafka/producer.mjs +1 -1
  324. package/dist/esm/log/index.mjs +1 -1
  325. package/dist/esm/log/logging.mjs +1 -1
  326. package/dist/esm/mail/client.mjs +1 -1
  327. package/dist/esm/mail/index.mjs +1 -1
  328. package/dist/esm/messaging/consumer.mjs +1 -1
  329. package/dist/esm/messaging/decorators.mjs +1 -1
  330. package/dist/esm/messaging/index.mjs +1 -1
  331. package/dist/esm/messaging/producer.mjs +1 -1
  332. package/dist/esm/mongodb/client.mjs +2 -2
  333. package/dist/esm/mongodb/dao.mjs +1 -1
  334. package/dist/esm/mongodb/index.mjs +1 -1
  335. package/dist/esm/net/decorators.mjs +1 -1
  336. package/dist/esm/net/index.mjs +1 -1
  337. package/dist/esm/net/soap.mjs +1 -1
  338. package/dist/esm/net/websockets.mjs +1 -1
  339. package/dist/esm/pdf/index.mjs +1 -1
  340. package/dist/esm/pdf/pdf.mjs +3 -3
  341. package/dist/esm/platform/command.mjs +1 -1
  342. package/dist/esm/platform/engines.mjs +1 -1
  343. package/dist/esm/platform/index.mjs +1 -1
  344. package/dist/esm/platform/lifecycle.mjs +1 -1
  345. package/dist/esm/platform/os.mjs +1 -1
  346. package/dist/esm/platform/problems.mjs +1 -1
  347. package/dist/esm/platform/registry.mjs +1 -1
  348. package/dist/esm/platform/repository.mjs +1 -1
  349. package/dist/esm/platform/workspace.mjs +1 -1
  350. package/dist/esm/qldb/index.mjs +1 -1
  351. package/dist/esm/qldb/qldb.mjs +1 -1
  352. package/dist/esm/rabbitmq/consumer.mjs +1 -1
  353. package/dist/esm/rabbitmq/index.mjs +1 -1
  354. package/dist/esm/rabbitmq/producer.mjs +1 -1
  355. package/dist/esm/redis/client.mjs +1 -1
  356. package/dist/esm/redis/index.mjs +1 -1
  357. package/dist/esm/security/decorators.mjs +1 -1
  358. package/dist/esm/security/index.mjs +1 -1
  359. package/dist/esm/security/oauth.mjs +1 -1
  360. package/dist/esm/security/user.mjs +1 -1
  361. package/dist/esm/template/engines.mjs +1 -1
  362. package/dist/esm/template/index.mjs +1 -1
  363. package/dist/esm/utils/alphanumeric.mjs +2 -2
  364. package/dist/esm/utils/base64.mjs +1 -1
  365. package/dist/esm/utils/converter.mjs +1 -1
  366. package/dist/esm/utils/digest.mjs +1 -1
  367. package/dist/esm/utils/escape.mjs +1 -1
  368. package/dist/esm/utils/hex.mjs +1 -1
  369. package/dist/esm/utils/index.mjs +1 -1
  370. package/dist/esm/utils/jsonpath.mjs +1 -1
  371. package/dist/esm/utils/qrcode.mjs +1 -1
  372. package/dist/esm/utils/url.mjs +1 -1
  373. package/dist/esm/utils/utf8.mjs +1 -1
  374. package/dist/esm/utils/uuid.mjs +1 -1
  375. package/dist/esm/utils/xml.mjs +1 -1
  376. package/package.json +1 -1
@@ -242,4 +242,4 @@ function get(orm) {
242
242
  return _orm;
243
243
  }
244
244
  ;
245
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL29ybS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogU3VwcG9ydGVkIE9STSBzY2hlbWE6XG4gKiBgYGBcbiAqIHtcbiAqXHQgbmFtZTogPHN0cmluZz4sXG4gKiAgIHRhYmxlOiA8c3RyaW5nPixcbiAqICAgcHJvcGVydGllczogW3tcbiAqXHQgICBuYW1lOiA8c3RyaW5nPixcbiAqXHQgICBjb2x1bW46IDxzdHJpbmc+LFxuICpcdCAgIGlkOiA8Ym9vbGVhbj4sXG4gKlx0ICAgcmVxdWlyZWQ6IDxib29sZWFuPixcbiAqXHQgICB1bmlxdWU6IDxib29sZWFuPixcbiAqXHQgICBkYlZhbHVlOiA8ZnVuY3Rpb24+LFxuICpcdCAgIHZhbHVlOiA8ZnVuY3Rpb24+LFxuICpcdCAgIGFsbG93ZWRPcHM6IDxBcnJheVsnaW5zZXJ0JywndXBkYXRlJ10+XG4gKiAgIH1dLFxuICogXHQgYXNzb2NpYXRpb25zOiBbe1xuICpcdCAgIG5hbWU6IDxzdHJpbmc+LFxuICogICAgIGpvaW5LZXk6IDxzdHJpbmc+LFxuICogICAgIGtleTogPHN0cmluZz4sXG4gKiAgICAgdHlwZTogPE9STS5BU1NPQ0lBVElPTl9UWVBFUz4sXG4gKiAgICAgdGFyZ2V0RGFvOiA8ZnVuY3Rpb258REFPPixcbiAqICAgICBqb2luRGFvOiA8ZnVuY3Rpb258REFPPixcbiAqICAgICBkZWZhdWx0czogPE9iamVjdD4sXG4gKiAgIH1dXG4gKiB9XG4gKiBgYGBcbiAqXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBPUk1EZWZpbml0aW9uIHtcbiAgICB0YWJsZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBjb2x1bW46IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBpZD86IGJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbixcbiAgICAgICAgdW5pcXVlPzogYm9vbGVhbixcbiAgICAgICAgYXV0b0luY3JlbWVudD86IGJvb2xlYW4sXG4gICAgICAgIGFsbG93ZWRPcHM/OiAoJ2luc2VydCcgfCAndXBkYXRlJylbXVxuICAgIH1bXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gT1JNKG9ybTogT1JNRGVmaW5pdGlvbikge1xuXHR0aGlzLm9ybSA9IG9ybTtcblx0Zm9yICh2YXIgaSBpbiBvcm0pIHtcblx0XHR0aGlzW2ldID0gb3JtW2ldO1xuXHR9XG59O1xuXG5PUk0ucHJvdG90eXBlLkFTU09DSUFUSU9OX1RZUEVTID0gT2JqZWN0LmZyZWV6ZSh7XG5cdFwiT05FLVRPLU9ORVwiOiBcIm9uZS10by1vbmVcIixcblx0XCJPTkUtVE8tTUFOWVwiOiBcIm9uZS10by1tYW55XCIsXG5cdFwiTUFOWS1UTy1NQU5ZXCI6IFwibWFueS10by1tYW55XCIsXG5cdFwiTUFOWS1UTy1PTkVcIjogXCJtYW55LXRvLW9uZVwiXG59KTtcbk9STS5wcm90b3R5cGUuQVNTT0NJQVRJT05fVFlQRVNfVkFMVUVTID0gT2JqZWN0LmtleXMoT1JNLnByb3RvdHlwZS5BU1NPQ0lBVElPTl9UWVBFUylcblx0Lm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0cmV0dXJuIE9STS5wcm90b3R5cGUuQVNTT0NJQVRJT05fVFlQRVNba2V5XTtcblx0fSk7XG5cbk9STS5wcm90b3R5cGUuZ2V0UHJpbWFyeUtleSA9IGZ1bmN0aW9uICgpIHtcblx0aWYgKCF0aGlzLmlkUHJvcGVydHkpIHtcblx0XHRpZiAoIXRoaXMucHJvcGVydGllcyB8fCAhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aClcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvcm0gY29uZmlndXJhdGlvbiAtIG5vIHByb3BlcnRpZXMgYXJlIGRlZmluZWQnKTtcblx0XHRjb25zdCBpZCA9IHRoaXMucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHkuaWQ7XG5cdFx0fSk7XG5cdFx0aWYgKCFpZC5sZW5ndGgpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBpZCBwcm9wZXJ0eSBpcyBkZWZpbmVkJyk7XG5cdFx0dGhpcy5pZFByb3BlcnR5ID0gaWRbMF07XG5cdH1cblx0cmV0dXJuIHRoaXMuaWRQcm9wZXJ0eTtcbn07XG5cbk9STS5wcm90b3R5cGUuaXNBdXRvSW5jcmVtZW50UHJpbWFyeUtleSA9IGZ1bmN0aW9uICgpIHtcblx0aWYgKCF0aGlzLmF1dG9JbmNyZW1lbnRQcmltYXJ5S2V5UHJvcGVydHkpIHtcblx0XHRpZiAoIXRoaXMucHJvcGVydGllcyB8fCAhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aClcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvcm0gY29uZmlndXJhdGlvbiAtIG5vIHByb3BlcnRpZXMgYXJlIGRlZmluZWQnKTtcblx0XHRsZXQgaXNBdXRvSW5jcmVtZW50T2xkVmVyc2lvbiA9IGZhbHNlO1xuXHRcdGNvbnN0IGF1dG9JbmNyZW1lbnRQcmltYXJ5S2V5UHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0aWYgKHByb3BlcnR5LmlkICYmIChwcm9wZXJ0eS5hdXRvSW5jcmVtZW50ID09PSB1bmRlZmluZWQgfHwgcHJvcGVydHkuYXV0b0luY3JlbWVudCA9PT0gbnVsbCkpIHtcblx0XHRcdFx0aXNBdXRvSW5jcmVtZW50T2xkVmVyc2lvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcHJvcGVydHkuaWQgJiYgKHByb3BlcnR5LmF1dG9JbmNyZW1lbnQgfHwgaXNBdXRvSW5jcmVtZW50T2xkVmVyc2lvbik7XG5cdFx0fSk7XG5cdFx0dGhpcy5hdXRvSW5jcmVtZW50UHJpbWFyeUtleVByb3BlcnR5ID0gYXV0b0luY3JlbWVudFByaW1hcnlLZXlQcm9wZXJ0eS5sZW5ndGggPiAwO1xuXHR9XG5cdHJldHVybiB0aGlzLmF1dG9JbmNyZW1lbnRQcmltYXJ5S2V5UHJvcGVydHk7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldFByb3BlcnR5ID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0aWYgKG5hbWUgPT09IHVuZGVmaW5lZClcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IG5hbWVbJyArIG5hbWUgKyAnXScpO1xuXHRpZiAoIXRoaXMucHJvcGVydGllcyB8fCAhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aClcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkJyk7XG5cdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRyZXR1cm4gcHJvcGVydHkubmFtZSA9PT0gbmFtZTtcblx0fSk7XG5cdHJldHVybiBwcm9wZXJ0eS5sZW5ndGggPiAwID8gcHJvcGVydHlbMF0gOiB1bmRlZmluZWQ7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldE1hbmRhdG9yeVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoKSB7XG5cdGlmICghdGhpcy5tYW5kYXRvcnlQcm9wZXJ0aWVzKSB7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnRpZXMgfHwgIXRoaXMucHJvcGVydGllcy5sZW5ndGgpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkJyk7XG5cdFx0Y29uc3QgbWFuZGF0b3JpZXMgPSB0aGlzLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5LnJlcXVpcmVkO1xuXHRcdH0pO1xuXHRcdHRoaXMubWFuZGF0b3J5UHJvcGVydGllcyA9IG1hbmRhdG9yaWVzO1xuXHR9XG5cdHJldHVybiB0aGlzLm1hbmRhdG9yeVByb3BlcnRpZXM7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldE9wdGlvbmFsUHJvcGVydGllcyA9IGZ1bmN0aW9uICgpIHtcblx0aWYgKCF0aGlzLm9wdGlvbmFsUHJvcGVydGllcykge1xuXHRcdGlmICghdGhpcy5wcm9wZXJ0aWVzIHx8ICF0aGlzLnByb3BlcnRpZXMubGVuZ3RoKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG9ybSBjb25maWd1cmF0aW9uIC0gbm8gcHJvcGVydGllcyBhcmUgZGVmaW5lZCcpO1xuXHRcdGNvbnN0IG1hbmRhdG9yaWVzID0gdGhpcy5wcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRcdHJldHVybiAhcHJvcGVydHkucmVxdWlyZWQ7XG5cdFx0fSk7XG5cdFx0dGhpcy5vcHRpb25hbFByb3BlcnRpZXMgPSBtYW5kYXRvcmllcztcblx0fVxuXHRyZXR1cm4gdGhpcy5vcHRpb25hbFByb3BlcnRpZXM7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldFVuaXF1ZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoKSB7XG5cdGlmICghdGhpcy51bmlxdWVQcm9wZXJ0aWVzKSB7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnRpZXMgfHwgIXRoaXMucHJvcGVydGllcy5sZW5ndGgpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkJyk7XG5cdFx0Y29uc3QgdW5pcXVlcyA9IHRoaXMucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHkudW5pcXVlO1xuXHRcdH0pO1xuXHRcdHRoaXMudW5pcXVlUHJvcGVydGllcyA9IHVuaXF1ZXM7XG5cdH1cblx0cmV0dXJuIHRoaXMudW5pcXVlUHJvcGVydGllcztcbn07XG5cbi8vVE9ETzogcmVtb3ZlIHRoaXMgb3IgaW1wcm92ZSBieSBrZXkgdHlwZS5cbk9STS5wcm90b3R5cGUuYXNzb2NpYXRpb25LZXlzID0gZnVuY3Rpb24gKCkge1xuXHRsZXQga2V5cyA9IFtdO1xuXHRpZiAodGhpcy5hc3NvY2lhdGlvbnMpIHtcblx0XHRrZXlzID0gdGhpcy5hc3NvY2lhdGlvbnMubWFwKGZ1bmN0aW9uIChhc3NvYykge1xuXHRcdFx0cmV0dXJuIGFzc29jLmpvaW5LZXk7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGtleXM7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldEFzc29jaWF0aW9uTmFtZXMgPSBmdW5jdGlvbiAoKSB7XG5cdGxldCBuYW1lcyA9IFtdO1xuXHRpZiAodGhpcy5hc3NvY2lhdGlvbnMpIHtcblx0XHRuYW1lcyA9IHRoaXMuYXNzb2NpYXRpb25zLm1hcChmdW5jdGlvbiAoYXNzb2MpIHtcblx0XHRcdHJldHVybiBhc3NvYy5uYW1lO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBuYW1lcztcbn07XG5cbk9STS5wcm90b3R5cGUuZ2V0QXNzb2NpYXRpb24gPSBmdW5jdGlvbiAoYXNzb2NpYXRpb25OYW1lKSB7XG5cdGlmICh0aGlzLmFzc29jaWF0aW9ucykge1xuXHRcdHJldHVybiB0aGlzLmFzc29jaWF0aW9uc1xuXHRcdFx0LmZpbHRlcihmdW5jdGlvbiAoYXNzb2MpIHtcblx0XHRcdFx0cmV0dXJuIGFzc29jLm5hbWUgPT09IGFzc29jaWF0aW9uTmFtZTtcblx0XHRcdH0pWzBdO1xuXHR9XG5cdHJldHVybjtcbn07XG5cbk9STS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiAoKSB7XG5cdGxldCBpO1xuXHRpZiAoIXRoaXMudGFibGUpXG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgcHJvcGVydHkgdGFibGVbJyArIHRoaXMudGFibGUgKyAnXScpO1xuXHRpZiAoIXRoaXMucHJvcGVydGllcylcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgY29uZmlndXJhdGlvbjogaW52YWxpZCBwcm9wZXJ0eSBwcm9wZXJ0aWVzWycgKyB0aGlzLnByb3BlcnRpZXMgKyAnXScpO1xuXHRpZiAodGhpcy5wcm9wZXJ0aWVzLmNvbnN0cnVjdG9yICE9PSBBcnJheSlcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IHByb3BlcnR5ICdwcm9wZXJ0aWVzJyB0eXBlIGlzIGV4cGVjdGVkIG90IGJlIEFycmF5LiBJbnN0ZWFkLCBpdCB3YXMgXCIgKyAodHlwZW9mIHRoaXMucHJvcGVydGllcykpO1xuXHRpZiAoIXRoaXMuZ2V0UHJpbWFyeUtleSgpKVxuXHRcdHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBjb25maWd1cmF0aW9uOiBObyBwcmltYXJ5IGtleSBzcGVjaWZlZCcpO1xuXHRmb3IgKGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXNbaV07XG5cdFx0aWYgKCFwcm9wZXJ0eS5uYW1lKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgcHJvcGVydHkgbmFtZVsnICsgcHJvcGVydHkubmFtZSArICddJyk7XG5cdFx0aWYgKCFwcm9wZXJ0eS50eXBlKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgcHJvcGVydHkgdHlwZVsnICsgcHJvcGVydHkudHlwZSArICddJyk7XG5cdFx0aWYgKCFwcm9wZXJ0eS5jb2x1bW4pXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgY29uZmlndXJhdGlvbjogaW52YWxpZCBwcm9wZXJ0eSBjb2x1bW5bJyArIHByb3BlcnR5LmNvbHVtbiArICddJyk7XG5cdFx0aWYgKHByb3BlcnR5LmFsbG93ZWRPcHMpIHtcblx0XHRcdGlmIChwcm9wZXJ0eS5hbGxvd2VkT3BzLmNvbnN0cnVjdG9yICE9PSBBcnJheSlcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBjb25maWd1cmF0aW9uOiBwcm9wZXJ0eVtcIiArIHByb3BlcnR5Lm5hbWUgKyBcIl0gIGFsbG93ZWRPcHMgaXMgZXhwZWN0ZWQgb3QgYmUgQXJyYXkuIEluc3RlYWQsIGl0IHdhcyBcIiArICh0eXBlb2YgcHJvcGVydHkuYWxsb3dlZE9wcykpO1xuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBwcm9wZXJ0eS5hbGxvd2VkT3BzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChbJ2luc2VydCcsICd1cGRhdGUnXS5pbmRleE9mKHByb3BlcnR5LmFsbG93ZWRPcHNbal0pIDwgMClcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IHByb3BlcnR5W1wiICsgcHJvcGVydHkubmFtZSArIFwiXSBhbGxvd2VkT3BzW1wiICsgcHJvcGVydHkuYWxsb3dlZE9wcyArIFwiXSBtdXN0IGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgc29tZSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IFsnaW5zZXJ0JywndXBkYXRlJ11cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmICh0aGlzLmFzc29jaWF0aW9ucykge1xuXHRcdGlmICh0aGlzLmFzc29jaWF0aW9ucy5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IHByb3BlcnR5ICdhc3NvY2lhdGlvbnMnIHR5cGUgaXMgZXhwZWN0ZWQgb3QgYmUgQXJyYXkuIEluc3RlYWQsIGl0IHdhcyBcIiArICh0eXBlb2YgdGhpcy5hc3NvY2lhdGlvbnMpKTtcblx0XHRmb3IgKGkgPSAwOyBpIDwgdGhpcy5hc3NvY2lhdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5hc3NvY2lhdGlvbnNbaV07XG5cdFx0XHRpZiAoIWFzc29jaWF0aW9uLm5hbWUpXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgY29uZmlndXJhdGlvbjogQXNzb2NpYXRpb24gcHJvcGVydHkgbmFtZVtcIiArIGFzc29jaWF0aW9uLm5hbWUgKyBcIl1cIik7XG5cdFx0XHRpZiAoT1JNLnByb3RvdHlwZS5BU1NPQ0lBVElPTl9UWVBFU19WQUxVRVMuaW5kZXhPZihhc3NvY2lhdGlvbi50eXBlKSA8IDApXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgY29uZmlndXJhdGlvbjogQXNzb2NpYXRpb24gXCIgKyBhc3NvY2lhdGlvbi5uYW1lICsgXCIgcHJvcGVydHkgdHlwZVtcIiArIGFzc29jaWF0aW9uLnR5cGUgKyBcIl0gbXVzdCBiZSBvbmUgb2YgXCIgKyBPUk0ucHJvdG90eXBlLkFTU09DSUFUSU9OX1RZUEVTX1ZBTFVFUyk7XG5cdFx0XHRpZiAoIWFzc29jaWF0aW9uLmpvaW5LZXkgJiYgJ21hbnktdG8tb25lJyAhPT0gYXNzb2NpYXRpb24udHlwZSlcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgYXNzb2NpYXRpb24gam9pbktleVsnICsgYXNzb2NpYXRpb24uam9pbktleSArICddJyk7XG5cdFx0XHRpZiAoYXNzb2NpYXRpb24udGFyZ2V0RGFvICYmIGFzc29jaWF0aW9uLnRhcmdldERhby5jb25zdHJ1Y3RvciAhPT0gRnVuY3Rpb24pXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWd1cmF0aW9uOiBBc3NvY2lhdGlvbiAnICsgYXNzb2NpYXRpb24ubmFtZSArICcgdGFyZ2V0RGFvIHByb3BlcnR5IGlzIGV4cGVjdGVkIHRvIGJlIGZ1bmN0aW9uLiBJbnN0ZWFkLCBpdCBpczogJyArICh0eXBlb2YgYXNzb2NpYXRpb24udGFyZ2V0RGFvKSk7XG5cdFx0XHRpZiAoYXNzb2NpYXRpb24udHlwZSA9PT0gT1JNLnByb3RvdHlwZS5BU1NPQ0lBVElPTl9UWVBFU1snTUFOWS1UTy1NQU5ZJ10pIHtcblx0XHRcdFx0aWYgKCFhc3NvY2lhdGlvbi5qb2luRGFvKVxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBjb25maWd1cmF0aW9uOiBBc3NvY2lhdGlvbiAnICsgYXNzb2NpYXRpb24ubmFtZSArICcgam9pbkRhb1snICsgYXNzb2NpYXRpb24uam9pbkRhbyArICddIHZhbHVlJyk7XG5cdFx0XHRcdGlmIChhc3NvY2lhdGlvbi5qb2luRGFvICYmIGFzc29jaWF0aW9uLmpvaW5EYW8uY29uc3RydWN0b3IgIT09IEZ1bmN0aW9uKVxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWd1cmF0aW9uOiBBc3NvY2lhdGlvbiAnICsgYXNzb2NpYXRpb24ubmFtZSArICcgam9pbkRhbyBwcm9wZXJ0eSBpcyBleHBlY3RlZCB0byBiZSBmdW5jdGlvbi4gSW5zdGVhZCwgaXQgaXM6ICcgKyAodHlwZW9mIGFzc29jaWF0aW9uLmpvaW5EYW8pKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbk9STS5wcm90b3R5cGUudG9Db2x1bW4gPSBmdW5jdGlvbiAob3JtUHJvcGVydHkpIHtcblx0bGV0IGNvbHVtbjtcblx0aWYgKG9ybVByb3BlcnR5KSB7XG5cdFx0Y29sdW1uID0ge1xuXHRcdFx0bmFtZTogXCJcXFwiXCIgKyBvcm1Qcm9wZXJ0eS5jb2x1bW4gKyBcIlxcXCJcIixcblx0XHRcdHR5cGU6IG9ybVByb3BlcnR5LnR5cGUsXG5cdFx0XHRsZW5ndGg6IFN0cmluZyhvcm1Qcm9wZXJ0eS5sZW5ndGgpLFxuXHRcdFx0cHJpbWFyeUtleTogU3RyaW5nKG9ybVByb3BlcnR5LmlkID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG9ybVByb3BlcnR5LmlkKSxcblx0XHRcdG51bGxhYmxlOiBTdHJpbmcoIW9ybVByb3BlcnR5LnJlcXVpcmVkKSxcblx0XHRcdGRlZmF1bHRWYWx1ZTogb3JtUHJvcGVydHkuZGVmYXVsdFZhbHVlXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gY29sdW1uO1xufTtcblxuT1JNLnByb3RvdHlwZS50b1RhYmxlID0gZnVuY3Rpb24gKCkge1xuXHRsZXQgdGFibGUgPSB7XG5cdFx0bmFtZTogdGhpcy50YWJsZSxcblx0XHR0eXBlOiBcIlRBQkxFXCIsXG5cdFx0Y29sdW1uczogbnVsbCxcblx0XHRjb25zdHJhaW50czogbnVsbCxcblx0fTtcblxuXHRjb25zdCB1bmlxdWVJbmRpY2VzID0gW107XG5cdGNvbnN0IHByaW1hcnlLZXlzID0gW107XG5cdGlmICh0aGlzLnByb3BlcnRpZXMpIHtcblx0XHR0YWJsZS5jb2x1bW5zID0gW107XG5cdFx0dGhpcy5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHR2YXIgY29sdW1uID0gdGhpcy50b0NvbHVtbihwcm9wZXJ0eSk7XG5cdFx0XHRpZiAocHJvcGVydHkudW5pcXVlKVxuXHRcdFx0XHR1bmlxdWVJbmRpY2VzLnB1c2goe1xuXHRcdFx0XHRcdFwiY29sdW1uc1wiOiBjb2x1bW4ubmFtZVxuXHRcdFx0XHR9KTtcblx0XHRcdGlmIChwcm9wZXJ0eS5pZClcblx0XHRcdFx0cHJpbWFyeUtleXMucHVzaCh7XG5cdFx0XHRcdFx0XCJjb2x1bW5zXCI6IGNvbHVtbi5uYW1lXG5cdFx0XHRcdH0pO1xuXHRcdFx0Ly9UT0RPIDogYW5hbHl6ZSBhc3NvY2lhdGlvbnMgdG8gYWRkIEZLcyBpZiBwb3NzaWJsZVxuXHRcdFx0dGFibGUuY29sdW1ucy5wdXNoKGNvbHVtbik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAocHJpbWFyeUtleXMubGVuZ3RoID4gMSB8fCB1bmlxdWVJbmRpY2VzLmxlbmd0aCA+IDApIHtcblx0XHR0YWJsZVtcImNvbnN0cmFpbnRzXCJdID0ge307XG5cdH1cblxuXHRpZiAocHJpbWFyeUtleXMubGVuZ3RoID4gMSkge1xuXHRcdHRhYmxlLmNvbHVtbnMgPSB0YWJsZS5jb2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uKSB7XG5cdFx0XHRjb2x1bW4ucHJpbWFyeUtleSA9IFwiZmFsc2VcIjtcblx0XHRcdHJldHVybiBjb2x1bW47XG5cdFx0fSk7XG5cdFx0dGFibGUuY29uc3RyYWludHNbXCJwcmltYXJLZXlzXCJdID0gcHJpbWFyeUtleXM7XG5cdH1cblx0aWYgKHVuaXF1ZUluZGljZXMubGVuZ3RoID4gMClcblx0XHR0YWJsZS5jb25zdHJhaW50c1tcInVuaXF1ZUluZGljZXNcIl0gPSB1bmlxdWVJbmRpY2VzO1xuXG5cdHJldHVybiB0YWJsZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXQob3JtOiBPUk1EZWZpbml0aW9uKSB7XG5cdGNvbnN0IF9vcm0gPSBuZXcgT1JNKG9ybSk7XG5cdF9vcm0udmFsaWRhdGUoKTtcblx0cmV0dXJuIF9vcm07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOENPLFNBQVMsSUFBSSxLQUFvQjtBQUN2QyxPQUFLLE1BQU07QUFDWCxXQUFTLEtBQUssS0FBSztBQUNsQixTQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7QUFBQSxFQUNoQjtBQUNEO0FBQUM7QUFFRCxJQUFJLFVBQVUsb0JBQW9CLE9BQU8sT0FBTztBQUFBLEVBQy9DLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLGdCQUFnQjtBQUFBLEVBQ2hCLGVBQWU7QUFDaEIsQ0FBQztBQUNELElBQUksVUFBVSwyQkFBMkIsT0FBTyxLQUFLLElBQUksVUFBVSxpQkFBaUIsRUFDbEYsSUFBSSxTQUFVLEtBQUs7QUFDbkIsU0FBTyxJQUFJLFVBQVUsa0JBQWtCLEdBQUc7QUFDM0MsQ0FBQztBQUVGLElBQUksVUFBVSxnQkFBZ0IsV0FBWTtBQUN6QyxNQUFJLENBQUMsS0FBSyxZQUFZO0FBQ3JCLFFBQUksQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLFdBQVc7QUFDeEMsWUFBTSxJQUFJLE1BQU0sdURBQXVEO0FBQ3hFLFVBQU0sS0FBSyxLQUFLLFdBQVcsT0FBTyxTQUFVLFVBQVU7QUFDckQsYUFBTyxTQUFTO0FBQUEsSUFDakIsQ0FBQztBQUNELFFBQUksQ0FBQyxHQUFHO0FBQ1AsWUFBTSxJQUFJLE1BQU0sdURBQXVEO0FBQ3hFLFNBQUssYUFBYSxHQUFHLENBQUM7QUFBQSxFQUN2QjtBQUNBLFNBQU8sS0FBSztBQUNiO0FBRUEsSUFBSSxVQUFVLDRCQUE0QixXQUFZO0FBQ3JELE1BQUksQ0FBQyxLQUFLLGlDQUFpQztBQUMxQyxRQUFJLENBQUMsS0FBSyxjQUFjLENBQUMsS0FBSyxXQUFXO0FBQ3hDLFlBQU0sSUFBSSxNQUFNLHVEQUF1RDtBQUN4RSxRQUFJLDRCQUE0QjtBQUNoQyxVQUFNLGtDQUFrQyxLQUFLLFdBQVcsT0FBTyxTQUFVLFVBQVU7QUFDbEYsVUFBSSxTQUFTLE9BQU8sU0FBUyxrQkFBa0IsVUFBYSxTQUFTLGtCQUFrQixPQUFPO0FBQzdGLG9DQUE0QjtBQUFBLE1BQzdCO0FBQ0EsYUFBTyxTQUFTLE9BQU8sU0FBUyxpQkFBaUI7QUFBQSxJQUNsRCxDQUFDO0FBQ0QsU0FBSyxrQ0FBa0MsZ0NBQWdDLFNBQVM7QUFBQSxFQUNqRjtBQUNBLFNBQU8sS0FBSztBQUNiO0FBRUEsSUFBSSxVQUFVLGNBQWMsU0FBVSxNQUFNO0FBQzNDLE1BQUksU0FBUztBQUNaLFVBQU0sSUFBSSxNQUFNLDRCQUE0QixPQUFPLEdBQUc7QUFDdkQsTUFBSSxDQUFDLEtBQUssY0FBYyxDQUFDLEtBQUssV0FBVztBQUN4QyxVQUFNLElBQUksTUFBTSx1REFBdUQ7QUFDeEUsUUFBTSxXQUFXLEtBQUssV0FBVyxPQUFPLFNBQVVBLFdBQVU7QUFDM0QsV0FBT0EsVUFBUyxTQUFTO0FBQUEsRUFDMUIsQ0FBQztBQUNELFNBQU8sU0FBUyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUk7QUFDNUM7QUFFQSxJQUFJLFVBQVUseUJBQXlCLFdBQVk7QUFDbEQsTUFBSSxDQUFDLEtBQUsscUJBQXFCO0FBQzlCLFFBQUksQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLFdBQVc7QUFDeEMsWUFBTSxJQUFJLE1BQU0sdURBQXVEO0FBQ3hFLFVBQU0sY0FBYyxLQUFLLFdBQVcsT0FBTyxTQUFVLFVBQVU7QUFDOUQsYUFBTyxTQUFTO0FBQUEsSUFDakIsQ0FBQztBQUNELFNBQUssc0JBQXNCO0FBQUEsRUFDNUI7QUFDQSxTQUFPLEtBQUs7QUFDYjtBQUVBLElBQUksVUFBVSx3QkFBd0IsV0FBWTtBQUNqRCxNQUFJLENBQUMsS0FBSyxvQkFBb0I7QUFDN0IsUUFBSSxDQUFDLEtBQUssY0FBYyxDQUFDLEtBQUssV0FBVztBQUN4QyxZQUFNLElBQUksTUFBTSx1REFBdUQ7QUFDeEUsVUFBTSxjQUFjLEtBQUssV0FBVyxPQUFPLFNBQVUsVUFBVTtBQUM5RCxhQUFPLENBQUMsU0FBUztBQUFBLElBQ2xCLENBQUM7QUFDRCxTQUFLLHFCQUFxQjtBQUFBLEVBQzNCO0FBQ0EsU0FBTyxLQUFLO0FBQ2I7QUFFQSxJQUFJLFVBQVUsc0JBQXNCLFdBQVk7QUFDL0MsTUFBSSxDQUFDLEtBQUssa0JBQWtCO0FBQzNCLFFBQUksQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLFdBQVc7QUFDeEMsWUFBTSxJQUFJLE1BQU0sdURBQXVEO0FBQ3hFLFVBQU0sVUFBVSxLQUFLLFdBQVcsT0FBTyxTQUFVLFVBQVU7QUFDMUQsYUFBTyxTQUFTO0FBQUEsSUFDakIsQ0FBQztBQUNELFNBQUssbUJBQW1CO0FBQUEsRUFDekI7QUFDQSxTQUFPLEtBQUs7QUFDYjtBQUdBLElBQUksVUFBVSxrQkFBa0IsV0FBWTtBQUMzQyxNQUFJLE9BQU8sQ0FBQztBQUNaLE1BQUksS0FBSyxjQUFjO0FBQ3RCLFdBQU8sS0FBSyxhQUFhLElBQUksU0FBVSxPQUFPO0FBQzdDLGFBQU8sTUFBTTtBQUFBLElBQ2QsQ0FBQztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1I7QUFFQSxJQUFJLFVBQVUsc0JBQXNCLFdBQVk7QUFDL0MsTUFBSSxRQUFRLENBQUM7QUFDYixNQUFJLEtBQUssY0FBYztBQUN0QixZQUFRLEtBQUssYUFBYSxJQUFJLFNBQVUsT0FBTztBQUM5QyxhQUFPLE1BQU07QUFBQSxJQUNkLENBQUM7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNSO0FBRUEsSUFBSSxVQUFVLGlCQUFpQixTQUFVLGlCQUFpQjtBQUN6RCxNQUFJLEtBQUssY0FBYztBQUN0QixXQUFPLEtBQUssYUFDVixPQUFPLFNBQVUsT0FBTztBQUN4QixhQUFPLE1BQU0sU0FBUztBQUFBLElBQ3ZCLENBQUMsRUFBRSxDQUFDO0FBQUEsRUFDTjtBQUNBO0FBQ0Q7QUFFQSxJQUFJLFVBQVUsV0FBVyxXQUFZO0FBQ3BDLE1BQUk7QUFDSixNQUFJLENBQUMsS0FBSztBQUNULFVBQU0sSUFBSSxNQUFNLG1EQUFtRCxLQUFLLFFBQVEsR0FBRztBQUNwRixNQUFJLENBQUMsS0FBSztBQUNULFVBQU0sSUFBSSxNQUFNLHdEQUF3RCxLQUFLLGFBQWEsR0FBRztBQUM5RixNQUFJLEtBQUssV0FBVyxnQkFBZ0I7QUFDbkMsVUFBTSxJQUFJLE1BQU0sZ0dBQWlHLE9BQU8sS0FBSyxVQUFXO0FBQ3pJLE1BQUksQ0FBQyxLQUFLLGNBQWM7QUFDdkIsVUFBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQ2pFLE9BQUssSUFBSSxHQUFHLElBQUksS0FBSyxXQUFXLFFBQVEsS0FBSztBQUM1QyxVQUFNLFdBQVcsS0FBSyxXQUFXLENBQUM7QUFDbEMsUUFBSSxDQUFDLFNBQVM7QUFDYixZQUFNLElBQUksTUFBTSxrREFBa0QsU0FBUyxPQUFPLEdBQUc7QUFDdEYsUUFBSSxDQUFDLFNBQVM7QUFDYixZQUFNLElBQUksTUFBTSxrREFBa0QsU0FBUyxPQUFPLEdBQUc7QUFDdEYsUUFBSSxDQUFDLFNBQVM7QUFDYixZQUFNLElBQUksTUFBTSxvREFBb0QsU0FBUyxTQUFTLEdBQUc7QUFDMUYsUUFBSSxTQUFTLFlBQVk7QUFDeEIsVUFBSSxTQUFTLFdBQVcsZ0JBQWdCO0FBQ3ZDLGNBQU0sSUFBSSxNQUFNLHFDQUFxQyxTQUFTLE9BQU8sNERBQTZELE9BQU8sU0FBUyxVQUFXO0FBQzlKLGVBQVMsSUFBSSxHQUFHLElBQUksU0FBUyxXQUFXLFFBQVEsS0FBSztBQUNwRCxZQUFJLENBQUMsVUFBVSxRQUFRLEVBQUUsUUFBUSxTQUFTLFdBQVcsQ0FBQyxDQUFDLElBQUk7QUFDMUQsZ0JBQU0sSUFBSSxNQUFNLHFDQUFxQyxTQUFTLE9BQU8sa0JBQWtCLFNBQVMsYUFBYSx3RkFBd0Y7QUFBQSxNQUN2TTtBQUFBLElBQ0Q7QUFBQSxFQUNEO0FBQ0EsTUFBSSxLQUFLLGNBQWM7QUFDdEIsUUFBSSxLQUFLLGFBQWEsZ0JBQWdCO0FBQ3JDLFlBQU0sSUFBSSxNQUFNLGtHQUFtRyxPQUFPLEtBQUssWUFBYTtBQUM3SSxTQUFLLElBQUksR0FBRyxJQUFJLEtBQUssYUFBYSxRQUFRLEtBQUs7QUFDOUMsWUFBTSxjQUFjLEtBQUssYUFBYSxDQUFDO0FBQ3ZDLFVBQUksQ0FBQyxZQUFZO0FBQ2hCLGNBQU0sSUFBSSxNQUFNLHNEQUFzRCxZQUFZLE9BQU8sR0FBRztBQUM3RixVQUFJLElBQUksVUFBVSx5QkFBeUIsUUFBUSxZQUFZLElBQUksSUFBSTtBQUN0RSxjQUFNLElBQUksTUFBTSx3Q0FBd0MsWUFBWSxPQUFPLG9CQUFvQixZQUFZLE9BQU8sc0JBQXNCLElBQUksVUFBVSx3QkFBd0I7QUFDL0ssVUFBSSxDQUFDLFlBQVksV0FBVyxrQkFBa0IsWUFBWTtBQUN6RCxjQUFNLElBQUksTUFBTSx3REFBd0QsWUFBWSxVQUFVLEdBQUc7QUFDbEcsVUFBSSxZQUFZLGFBQWEsWUFBWSxVQUFVLGdCQUFnQjtBQUNsRSxjQUFNLElBQUksTUFBTSx3Q0FBd0MsWUFBWSxPQUFPLHFFQUFzRSxPQUFPLFlBQVksU0FBVTtBQUMvSyxVQUFJLFlBQVksU0FBUyxJQUFJLFVBQVUsa0JBQWtCLGNBQWMsR0FBRztBQUN6RSxZQUFJLENBQUMsWUFBWTtBQUNoQixnQkFBTSxJQUFJLE1BQU0sd0NBQXdDLFlBQVksT0FBTyxjQUFjLFlBQVksVUFBVSxTQUFTO0FBQ3pILFlBQUksWUFBWSxXQUFXLFlBQVksUUFBUSxnQkFBZ0I7QUFDOUQsZ0JBQU0sSUFBSSxNQUFNLHdDQUF3QyxZQUFZLE9BQU8sbUVBQW9FLE9BQU8sWUFBWSxPQUFRO0FBQUEsTUFDNUs7QUFBQSxJQUNEO0FBQUEsRUFDRDtBQUNEO0FBRUEsSUFBSSxVQUFVLFdBQVcsU0FBVSxhQUFhO0FBQy9DLE1BQUk7QUFDSixNQUFJLGFBQWE7QUFDaEIsYUFBUztBQUFBLE1BQ1IsTUFBTSxNQUFPLFlBQVksU0FBUztBQUFBLE1BQ2xDLE1BQU0sWUFBWTtBQUFBLE1BQ2xCLFFBQVEsT0FBTyxZQUFZLE1BQU07QUFBQSxNQUNqQyxZQUFZLE9BQU8sWUFBWSxPQUFPLFNBQVksUUFBUSxZQUFZLEVBQUU7QUFBQSxNQUN4RSxVQUFVLE9BQU8sQ0FBQyxZQUFZLFFBQVE7QUFBQSxNQUN0QyxjQUFjLFlBQVk7QUFBQSxJQUMzQjtBQUFBLEVBQ0Q7QUFDQSxTQUFPO0FBQ1I7QUFFQSxJQUFJLFVBQVUsVUFBVSxXQUFZO0FBQ25DLE1BQUksUUFBUTtBQUFBLElBQ1gsTUFBTSxLQUFLO0FBQUEsSUFDWCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxhQUFhO0FBQUEsRUFDZDtBQUVBLFFBQU0sZ0JBQWdCLENBQUM7QUFDdkIsUUFBTSxjQUFjLENBQUM7QUFDckIsTUFBSSxLQUFLLFlBQVk7QUFDcEIsVUFBTSxVQUFVLENBQUM7QUFDakIsU0FBSyxXQUFXLFFBQVEsU0FBVSxVQUFVO0FBQzNDLFVBQUksU0FBUyxLQUFLLFNBQVMsUUFBUTtBQUNuQyxVQUFJLFNBQVM7QUFDWixzQkFBYyxLQUFLO0FBQUEsVUFDbEIsV0FBVyxPQUFPO0FBQUEsUUFDbkIsQ0FBQztBQUNGLFVBQUksU0FBUztBQUNaLG9CQUFZLEtBQUs7QUFBQSxVQUNoQixXQUFXLE9BQU87QUFBQSxRQUNuQixDQUFDO0FBRUYsWUFBTSxRQUFRLEtBQUssTUFBTTtBQUFBLElBQzFCLENBQUM7QUFBQSxFQUNGO0FBRUEsTUFBSSxZQUFZLFNBQVMsS0FBSyxjQUFjLFNBQVMsR0FBRztBQUN2RCxVQUFNLGFBQWEsSUFBSSxDQUFDO0FBQUEsRUFDekI7QUFFQSxNQUFJLFlBQVksU0FBUyxHQUFHO0FBQzNCLFVBQU0sVUFBVSxNQUFNLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDbkQsYUFBTyxhQUFhO0FBQ3BCLGFBQU87QUFBQSxJQUNSLENBQUM7QUFDRCxVQUFNLFlBQVksWUFBWSxJQUFJO0FBQUEsRUFDbkM7QUFDQSxNQUFJLGNBQWMsU0FBUztBQUMxQixVQUFNLFlBQVksZUFBZSxJQUFJO0FBRXRDLFNBQU87QUFDUjtBQUVPLFNBQVMsSUFBSSxLQUFvQjtBQUN2QyxRQUFNLE9BQU8sSUFBSSxJQUFJLEdBQUc7QUFDeEIsT0FBSyxTQUFTO0FBQ2QsU0FBTztBQUNSO0FBQUM7IiwKICAibmFtZXMiOiBbInByb3BlcnR5Il0KfQo=
245
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL29ybS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGRiL29ybVxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2RiXG4gKiBAbmFtZSBPUk1cbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgYE9STWAgY2xhc3MgcHJvdmlkZXMgYSB3YXkgdG8gZGVmaW5lIGFuIE9iamVjdC1SZWxhdGlvbmFsIE1hcHBpbmcgKE9STSkgc2NoZW1hIGZvciBhIGRhdGFiYXNlIGVudGl0eS4gSXQgYWxsb3dzIGRldmVsb3BlcnMgdG8gc3BlY2lmeSB0aGUgc3RydWN0dXJlIG9mIHRoZWlyIGVudGl0aWVzLCBpbmNsdWRpbmcgcHJvcGVydGllcywgYXNzb2NpYXRpb25zLCBhbmQgY29uc3RyYWludHMsIGluIGEgZGVjbGFyYXRpdmUgbWFubmVyLiBUaGUgT1JNIGRlZmluaXRpb24gY2FuIHRoZW4gYmUgdXNlZCBieSBvdGhlciBtb2R1bGVzIChlLmcuLCBgREFPYCwgYFJlcG9zaXRvcnlgKSB0byBwZXJmb3JtIGRhdGFiYXNlIG9wZXJhdGlvbnMgd2hpbGUgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5IHdpdGggdGhlIGRlZmluZWQgc2NoZW1hLlxuICogXG4gKiA6Ojogd2FybmluZ1xuICogVGhlIGBPUk1gIG1vZHVsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBSZXBvc2l0b3J5L1N0b3JlYCBtb2R1bGVzIGluc3RlYWQgZm9yIG1hbmFnaW5nIGRhdGFiYXNlIGVudGl0aWVzIGFuZCBvcGVyYXRpb25zLlxuICogOjo6XG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gKipEZWNsYXJhdGl2ZSBTY2hlbWEgRGVmaW5pdGlvbioqOiBEZWZpbmUgeW91ciBlbnRpdHkncyBzdHJ1Y3R1cmUsIHByb3BlcnRpZXMsIGFuZCBhc3NvY2lhdGlvbnMgaW4gYSBjbGVhciBhbmQgc3RydWN0dXJlZCB3YXkuXG4gKiAtICoqVmFsaWRhdGlvbioqOiBUaGUgT1JNIGNsYXNzIGluY2x1ZGVzIHZhbGlkYXRpb24gbG9naWMgdG8gZW5zdXJlIHRoYXQgdGhlIGRlZmluZWQgc2NoZW1hIGlzIGNvbnNpc3RlbnQgYW5kIGFkaGVyZXMgdG8gZXhwZWN0ZWQgZm9ybWF0cy5cbiAqIC0gKipBc3NvY2lhdGlvbiBNYW5hZ2VtZW50Kio6IFN1cHBvcnRzIGRlZmluaW5nIGFzc29jaWF0aW9ucyBiZXR3ZWVuIGVudGl0aWVzIChlLmcuLCBvbmUtdG8tb25lLCBvbmUtdG8tbWFueSkgdG8gbW9kZWwgY29tcGxleCByZWxhdGlvbnNoaXBzIGluIHRoZSBkYXRhYmFzZS5cbiAqIC0gKipVdGlsaXR5IE1ldGhvZHMqKjogUHJvdmlkZXMgbWV0aG9kcyB0byByZXRyaWV2ZSBwcmltYXJ5IGtleXMsIG1hbmRhdG9yeSBwcm9wZXJ0aWVzLCB1bmlxdWUgcHJvcGVydGllcywgYW5kIHRvIGNvbnZlcnQgdGhlIE9STSBkZWZpbml0aW9uIGludG8gYSB0YWJsZSBzY2hlbWEgZm9ybWF0LlxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIERlZmluaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgZGF0YWJhc2UgZW50aXRpZXMgaW4gYSB3YXkgdGhhdCBjYW4gYmUgZWFzaWx5IGNvbnN1bWVkIGJ5IGRhdGEgYWNjZXNzIGxheWVycy5cbiAqIC0gRW5zdXJpbmcgdGhhdCBkYXRhYmFzZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgaW4gYWNjb3JkYW5jZSB3aXRoIGEgd2VsbC1kZWZpbmVkIHNjaGVtYSwgaW1wcm92aW5nIGRhdGEgaW50ZWdyaXR5IGFuZCByZWR1Y2luZyBlcnJvcnMuXG4gKiAtIE1vZGVsaW5nIGNvbXBsZXggZW50aXR5IHJlbGF0aW9uc2hpcHMgdGhyb3VnaCBhc3NvY2lhdGlvbnMsIGFsbG93aW5nIGZvciBtb3JlIHNvcGhpc3RpY2F0ZWQgZGF0YSBpbnRlcmFjdGlvbnMuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgT1JNIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYlwiO1xuICogXG4gKiBjb25zdCB1c2VyT1JNID0ge1xuICogIHRhYmxlOiBcIlVzZXJzXCIsXG4gKiAgIHByb3BlcnRpZXM6IFtcbiAqICAgICB7IG5hbWU6IFwiaWRcIiwgY29sdW1uOiBcIklEXCIsIHR5cGU6IFwiSU5URUdFUlwiLCBpZDogdHJ1ZSwgYXV0b0luY3JlbWVudDogdHJ1ZSB9LFxuICogICAgIHsgbmFtZTogXCJuYW1lXCIsIGNvbHVtbjogXCJOQU1FXCIsIHR5cGU6IFwiVkFSQ0hBUlwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICogICAgIHsgbmFtZTogXCJlbWFpbFwiLCBjb2x1bW46IFwiRU1BSUxcIiwgdHlwZTogXCJWQVJDSEFSXCIsIHVuaXF1ZTogdHJ1ZSB9XG4gKiAgXSxcbiAqICAgYXNzb2NpYXRpb25zOiBbXG4gKiAgICB7IG5hbWU6IFwicHJvZmlsZVwiLCBqb2luS2V5OiBcIlBST0ZJTEVfSURcIiwgdHlwZTogXCJvbmUtdG8tb25lXCIsIHRhcmdldERhbzogKCkgPT4gcHJvZmlsZURBTyB9XG4gKiAgXVxuICogfTtcbiAqIFxuICogY29uc3QgdXNlckRBTyA9IG5ldyBEQU8oZ2V0KHVzZXJPUk0pKTtcbiAqIC8vIE5vdyB5b3UgY2FuIHVzZSB1c2VyREFPIHRvIHBlcmZvcm0gQ1JVRCBvcGVyYXRpb25zIG9uIHRoZSBVc2VycyB0YWJsZSB3aGlsZSBhZGhlcmluZyB0byB0aGUgZGVmaW5lZCBPUk0gc2NoZW1hLlxuICogYGBgXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogU3VwcG9ydGVkIE9STSBzY2hlbWE6XG4gKiBgYGBcbiAqIHtcbiAqXHQgbmFtZTogPHN0cmluZz4sXG4gKiAgIHRhYmxlOiA8c3RyaW5nPixcbiAqICAgcHJvcGVydGllczogW3tcbiAqXHQgICBuYW1lOiA8c3RyaW5nPixcbiAqXHQgICBjb2x1bW46IDxzdHJpbmc+LFxuICpcdCAgIGlkOiA8Ym9vbGVhbj4sXG4gKlx0ICAgcmVxdWlyZWQ6IDxib29sZWFuPixcbiAqXHQgICB1bmlxdWU6IDxib29sZWFuPixcbiAqXHQgICBkYlZhbHVlOiA8ZnVuY3Rpb24+LFxuICpcdCAgIHZhbHVlOiA8ZnVuY3Rpb24+LFxuICpcdCAgIGFsbG93ZWRPcHM6IDxBcnJheVsnaW5zZXJ0JywndXBkYXRlJ10+XG4gKiAgIH1dLFxuICogXHQgYXNzb2NpYXRpb25zOiBbe1xuICpcdCAgIG5hbWU6IDxzdHJpbmc+LFxuICogICAgIGpvaW5LZXk6IDxzdHJpbmc+LFxuICogICAgIGtleTogPHN0cmluZz4sXG4gKiAgICAgdHlwZTogPE9STS5BU1NPQ0lBVElPTl9UWVBFUz4sXG4gKiAgICAgdGFyZ2V0RGFvOiA8ZnVuY3Rpb258REFPPixcbiAqICAgICBqb2luRGFvOiA8ZnVuY3Rpb258REFPPixcbiAqICAgICBkZWZhdWx0czogPE9iamVjdD4sXG4gKiAgIH1dXG4gKiB9XG4gKiBgYGBcbiAqXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBPUk1EZWZpbml0aW9uIHtcbiAgICB0YWJsZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBjb2x1bW46IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBpZD86IGJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbixcbiAgICAgICAgdW5pcXVlPzogYm9vbGVhbixcbiAgICAgICAgYXV0b0luY3JlbWVudD86IGJvb2xlYW4sXG4gICAgICAgIGFsbG93ZWRPcHM/OiAoJ2luc2VydCcgfCAndXBkYXRlJylbXVxuICAgIH1bXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gT1JNKG9ybTogT1JNRGVmaW5pdGlvbikge1xuXHR0aGlzLm9ybSA9IG9ybTtcblx0Zm9yICh2YXIgaSBpbiBvcm0pIHtcblx0XHR0aGlzW2ldID0gb3JtW2ldO1xuXHR9XG59O1xuXG5PUk0ucHJvdG90eXBlLkFTU09DSUFUSU9OX1RZUEVTID0gT2JqZWN0LmZyZWV6ZSh7XG5cdFwiT05FLVRPLU9ORVwiOiBcIm9uZS10by1vbmVcIixcblx0XCJPTkUtVE8tTUFOWVwiOiBcIm9uZS10by1tYW55XCIsXG5cdFwiTUFOWS1UTy1NQU5ZXCI6IFwibWFueS10by1tYW55XCIsXG5cdFwiTUFOWS1UTy1PTkVcIjogXCJtYW55LXRvLW9uZVwiXG59KTtcbk9STS5wcm90b3R5cGUuQVNTT0NJQVRJT05fVFlQRVNfVkFMVUVTID0gT2JqZWN0LmtleXMoT1JNLnByb3RvdHlwZS5BU1NPQ0lBVElPTl9UWVBFUylcblx0Lm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0cmV0dXJuIE9STS5wcm90b3R5cGUuQVNTT0NJQVRJT05fVFlQRVNba2V5XTtcblx0fSk7XG5cbk9STS5wcm90b3R5cGUuZ2V0UHJpbWFyeUtleSA9IGZ1bmN0aW9uICgpIHtcblx0aWYgKCF0aGlzLmlkUHJvcGVydHkpIHtcblx0XHRpZiAoIXRoaXMucHJvcGVydGllcyB8fCAhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aClcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvcm0gY29uZmlndXJhdGlvbiAtIG5vIHByb3BlcnRpZXMgYXJlIGRlZmluZWQnKTtcblx0XHRjb25zdCBpZCA9IHRoaXMucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHkuaWQ7XG5cdFx0fSk7XG5cdFx0aWYgKCFpZC5sZW5ndGgpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBpZCBwcm9wZXJ0eSBpcyBkZWZpbmVkJyk7XG5cdFx0dGhpcy5pZFByb3BlcnR5ID0gaWRbMF07XG5cdH1cblx0cmV0dXJuIHRoaXMuaWRQcm9wZXJ0eTtcbn07XG5cbk9STS5wcm90b3R5cGUuaXNBdXRvSW5jcmVtZW50UHJpbWFyeUtleSA9IGZ1bmN0aW9uICgpIHtcblx0aWYgKCF0aGlzLmF1dG9JbmNyZW1lbnRQcmltYXJ5S2V5UHJvcGVydHkpIHtcblx0XHRpZiAoIXRoaXMucHJvcGVydGllcyB8fCAhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aClcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvcm0gY29uZmlndXJhdGlvbiAtIG5vIHByb3BlcnRpZXMgYXJlIGRlZmluZWQnKTtcblx0XHRsZXQgaXNBdXRvSW5jcmVtZW50T2xkVmVyc2lvbiA9IGZhbHNlO1xuXHRcdGNvbnN0IGF1dG9JbmNyZW1lbnRQcmltYXJ5S2V5UHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0aWYgKHByb3BlcnR5LmlkICYmIChwcm9wZXJ0eS5hdXRvSW5jcmVtZW50ID09PSB1bmRlZmluZWQgfHwgcHJvcGVydHkuYXV0b0luY3JlbWVudCA9PT0gbnVsbCkpIHtcblx0XHRcdFx0aXNBdXRvSW5jcmVtZW50T2xkVmVyc2lvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcHJvcGVydHkuaWQgJiYgKHByb3BlcnR5LmF1dG9JbmNyZW1lbnQgfHwgaXNBdXRvSW5jcmVtZW50T2xkVmVyc2lvbik7XG5cdFx0fSk7XG5cdFx0dGhpcy5hdXRvSW5jcmVtZW50UHJpbWFyeUtleVByb3BlcnR5ID0gYXV0b0luY3JlbWVudFByaW1hcnlLZXlQcm9wZXJ0eS5sZW5ndGggPiAwO1xuXHR9XG5cdHJldHVybiB0aGlzLmF1dG9JbmNyZW1lbnRQcmltYXJ5S2V5UHJvcGVydHk7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldFByb3BlcnR5ID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0aWYgKG5hbWUgPT09IHVuZGVmaW5lZClcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IG5hbWVbJyArIG5hbWUgKyAnXScpO1xuXHRpZiAoIXRoaXMucHJvcGVydGllcyB8fCAhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aClcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkJyk7XG5cdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRyZXR1cm4gcHJvcGVydHkubmFtZSA9PT0gbmFtZTtcblx0fSk7XG5cdHJldHVybiBwcm9wZXJ0eS5sZW5ndGggPiAwID8gcHJvcGVydHlbMF0gOiB1bmRlZmluZWQ7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldE1hbmRhdG9yeVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoKSB7XG5cdGlmICghdGhpcy5tYW5kYXRvcnlQcm9wZXJ0aWVzKSB7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnRpZXMgfHwgIXRoaXMucHJvcGVydGllcy5sZW5ndGgpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkJyk7XG5cdFx0Y29uc3QgbWFuZGF0b3JpZXMgPSB0aGlzLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5LnJlcXVpcmVkO1xuXHRcdH0pO1xuXHRcdHRoaXMubWFuZGF0b3J5UHJvcGVydGllcyA9IG1hbmRhdG9yaWVzO1xuXHR9XG5cdHJldHVybiB0aGlzLm1hbmRhdG9yeVByb3BlcnRpZXM7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldE9wdGlvbmFsUHJvcGVydGllcyA9IGZ1bmN0aW9uICgpIHtcblx0aWYgKCF0aGlzLm9wdGlvbmFsUHJvcGVydGllcykge1xuXHRcdGlmICghdGhpcy5wcm9wZXJ0aWVzIHx8ICF0aGlzLnByb3BlcnRpZXMubGVuZ3RoKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG9ybSBjb25maWd1cmF0aW9uIC0gbm8gcHJvcGVydGllcyBhcmUgZGVmaW5lZCcpO1xuXHRcdGNvbnN0IG1hbmRhdG9yaWVzID0gdGhpcy5wcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRcdHJldHVybiAhcHJvcGVydHkucmVxdWlyZWQ7XG5cdFx0fSk7XG5cdFx0dGhpcy5vcHRpb25hbFByb3BlcnRpZXMgPSBtYW5kYXRvcmllcztcblx0fVxuXHRyZXR1cm4gdGhpcy5vcHRpb25hbFByb3BlcnRpZXM7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldFVuaXF1ZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoKSB7XG5cdGlmICghdGhpcy51bmlxdWVQcm9wZXJ0aWVzKSB7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnRpZXMgfHwgIXRoaXMucHJvcGVydGllcy5sZW5ndGgpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3JtIGNvbmZpZ3VyYXRpb24gLSBubyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkJyk7XG5cdFx0Y29uc3QgdW5pcXVlcyA9IHRoaXMucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHkudW5pcXVlO1xuXHRcdH0pO1xuXHRcdHRoaXMudW5pcXVlUHJvcGVydGllcyA9IHVuaXF1ZXM7XG5cdH1cblx0cmV0dXJuIHRoaXMudW5pcXVlUHJvcGVydGllcztcbn07XG5cbi8vVE9ETzogcmVtb3ZlIHRoaXMgb3IgaW1wcm92ZSBieSBrZXkgdHlwZS5cbk9STS5wcm90b3R5cGUuYXNzb2NpYXRpb25LZXlzID0gZnVuY3Rpb24gKCkge1xuXHRsZXQga2V5cyA9IFtdO1xuXHRpZiAodGhpcy5hc3NvY2lhdGlvbnMpIHtcblx0XHRrZXlzID0gdGhpcy5hc3NvY2lhdGlvbnMubWFwKGZ1bmN0aW9uIChhc3NvYykge1xuXHRcdFx0cmV0dXJuIGFzc29jLmpvaW5LZXk7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGtleXM7XG59O1xuXG5PUk0ucHJvdG90eXBlLmdldEFzc29jaWF0aW9uTmFtZXMgPSBmdW5jdGlvbiAoKSB7XG5cdGxldCBuYW1lcyA9IFtdO1xuXHRpZiAodGhpcy5hc3NvY2lhdGlvbnMpIHtcblx0XHRuYW1lcyA9IHRoaXMuYXNzb2NpYXRpb25zLm1hcChmdW5jdGlvbiAoYXNzb2MpIHtcblx0XHRcdHJldHVybiBhc3NvYy5uYW1lO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBuYW1lcztcbn07XG5cbk9STS5wcm90b3R5cGUuZ2V0QXNzb2NpYXRpb24gPSBmdW5jdGlvbiAoYXNzb2NpYXRpb25OYW1lKSB7XG5cdGlmICh0aGlzLmFzc29jaWF0aW9ucykge1xuXHRcdHJldHVybiB0aGlzLmFzc29jaWF0aW9uc1xuXHRcdFx0LmZpbHRlcihmdW5jdGlvbiAoYXNzb2MpIHtcblx0XHRcdFx0cmV0dXJuIGFzc29jLm5hbWUgPT09IGFzc29jaWF0aW9uTmFtZTtcblx0XHRcdH0pWzBdO1xuXHR9XG5cdHJldHVybjtcbn07XG5cbk9STS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiAoKSB7XG5cdGxldCBpO1xuXHRpZiAoIXRoaXMudGFibGUpXG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgcHJvcGVydHkgdGFibGVbJyArIHRoaXMudGFibGUgKyAnXScpO1xuXHRpZiAoIXRoaXMucHJvcGVydGllcylcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgY29uZmlndXJhdGlvbjogaW52YWxpZCBwcm9wZXJ0eSBwcm9wZXJ0aWVzWycgKyB0aGlzLnByb3BlcnRpZXMgKyAnXScpO1xuXHRpZiAodGhpcy5wcm9wZXJ0aWVzLmNvbnN0cnVjdG9yICE9PSBBcnJheSlcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IHByb3BlcnR5ICdwcm9wZXJ0aWVzJyB0eXBlIGlzIGV4cGVjdGVkIG90IGJlIEFycmF5LiBJbnN0ZWFkLCBpdCB3YXMgXCIgKyAodHlwZW9mIHRoaXMucHJvcGVydGllcykpO1xuXHRpZiAoIXRoaXMuZ2V0UHJpbWFyeUtleSgpKVxuXHRcdHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBjb25maWd1cmF0aW9uOiBObyBwcmltYXJ5IGtleSBzcGVjaWZlZCcpO1xuXHRmb3IgKGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXNbaV07XG5cdFx0aWYgKCFwcm9wZXJ0eS5uYW1lKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgcHJvcGVydHkgbmFtZVsnICsgcHJvcGVydHkubmFtZSArICddJyk7XG5cdFx0aWYgKCFwcm9wZXJ0eS50eXBlKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgcHJvcGVydHkgdHlwZVsnICsgcHJvcGVydHkudHlwZSArICddJyk7XG5cdFx0aWYgKCFwcm9wZXJ0eS5jb2x1bW4pXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgY29uZmlndXJhdGlvbjogaW52YWxpZCBwcm9wZXJ0eSBjb2x1bW5bJyArIHByb3BlcnR5LmNvbHVtbiArICddJyk7XG5cdFx0aWYgKHByb3BlcnR5LmFsbG93ZWRPcHMpIHtcblx0XHRcdGlmIChwcm9wZXJ0eS5hbGxvd2VkT3BzLmNvbnN0cnVjdG9yICE9PSBBcnJheSlcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBjb25maWd1cmF0aW9uOiBwcm9wZXJ0eVtcIiArIHByb3BlcnR5Lm5hbWUgKyBcIl0gIGFsbG93ZWRPcHMgaXMgZXhwZWN0ZWQgb3QgYmUgQXJyYXkuIEluc3RlYWQsIGl0IHdhcyBcIiArICh0eXBlb2YgcHJvcGVydHkuYWxsb3dlZE9wcykpO1xuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBwcm9wZXJ0eS5hbGxvd2VkT3BzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChbJ2luc2VydCcsICd1cGRhdGUnXS5pbmRleE9mKHByb3BlcnR5LmFsbG93ZWRPcHNbal0pIDwgMClcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IHByb3BlcnR5W1wiICsgcHJvcGVydHkubmFtZSArIFwiXSBhbGxvd2VkT3BzW1wiICsgcHJvcGVydHkuYWxsb3dlZE9wcyArIFwiXSBtdXN0IGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgc29tZSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IFsnaW5zZXJ0JywndXBkYXRlJ11cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmICh0aGlzLmFzc29jaWF0aW9ucykge1xuXHRcdGlmICh0aGlzLmFzc29jaWF0aW9ucy5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IHByb3BlcnR5ICdhc3NvY2lhdGlvbnMnIHR5cGUgaXMgZXhwZWN0ZWQgb3QgYmUgQXJyYXkuIEluc3RlYWQsIGl0IHdhcyBcIiArICh0eXBlb2YgdGhpcy5hc3NvY2lhdGlvbnMpKTtcblx0XHRmb3IgKGkgPSAwOyBpIDwgdGhpcy5hc3NvY2lhdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5hc3NvY2lhdGlvbnNbaV07XG5cdFx0XHRpZiAoIWFzc29jaWF0aW9uLm5hbWUpXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgY29uZmlndXJhdGlvbjogQXNzb2NpYXRpb24gcHJvcGVydHkgbmFtZVtcIiArIGFzc29jaWF0aW9uLm5hbWUgKyBcIl1cIik7XG5cdFx0XHRpZiAoT1JNLnByb3RvdHlwZS5BU1NPQ0lBVElPTl9UWVBFU19WQUxVRVMuaW5kZXhPZihhc3NvY2lhdGlvbi50eXBlKSA8IDApXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgY29uZmlndXJhdGlvbjogQXNzb2NpYXRpb24gXCIgKyBhc3NvY2lhdGlvbi5uYW1lICsgXCIgcHJvcGVydHkgdHlwZVtcIiArIGFzc29jaWF0aW9uLnR5cGUgKyBcIl0gbXVzdCBiZSBvbmUgb2YgXCIgKyBPUk0ucHJvdG90eXBlLkFTU09DSUFUSU9OX1RZUEVTX1ZBTFVFUyk7XG5cdFx0XHRpZiAoIWFzc29jaWF0aW9uLmpvaW5LZXkgJiYgJ21hbnktdG8tb25lJyAhPT0gYXNzb2NpYXRpb24udHlwZSlcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGNvbmZpZ3VyYXRpb246IGludmFsaWQgYXNzb2NpYXRpb24gam9pbktleVsnICsgYXNzb2NpYXRpb24uam9pbktleSArICddJyk7XG5cdFx0XHRpZiAoYXNzb2NpYXRpb24udGFyZ2V0RGFvICYmIGFzc29jaWF0aW9uLnRhcmdldERhby5jb25zdHJ1Y3RvciAhPT0gRnVuY3Rpb24pXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWd1cmF0aW9uOiBBc3NvY2lhdGlvbiAnICsgYXNzb2NpYXRpb24ubmFtZSArICcgdGFyZ2V0RGFvIHByb3BlcnR5IGlzIGV4cGVjdGVkIHRvIGJlIGZ1bmN0aW9uLiBJbnN0ZWFkLCBpdCBpczogJyArICh0eXBlb2YgYXNzb2NpYXRpb24udGFyZ2V0RGFvKSk7XG5cdFx0XHRpZiAoYXNzb2NpYXRpb24udHlwZSA9PT0gT1JNLnByb3RvdHlwZS5BU1NPQ0lBVElPTl9UWVBFU1snTUFOWS1UTy1NQU5ZJ10pIHtcblx0XHRcdFx0aWYgKCFhc3NvY2lhdGlvbi5qb2luRGFvKVxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBjb25maWd1cmF0aW9uOiBBc3NvY2lhdGlvbiAnICsgYXNzb2NpYXRpb24ubmFtZSArICcgam9pbkRhb1snICsgYXNzb2NpYXRpb24uam9pbkRhbyArICddIHZhbHVlJyk7XG5cdFx0XHRcdGlmIChhc3NvY2lhdGlvbi5qb2luRGFvICYmIGFzc29jaWF0aW9uLmpvaW5EYW8uY29uc3RydWN0b3IgIT09IEZ1bmN0aW9uKVxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWd1cmF0aW9uOiBBc3NvY2lhdGlvbiAnICsgYXNzb2NpYXRpb24ubmFtZSArICcgam9pbkRhbyBwcm9wZXJ0eSBpcyBleHBlY3RlZCB0byBiZSBmdW5jdGlvbi4gSW5zdGVhZCwgaXQgaXM6ICcgKyAodHlwZW9mIGFzc29jaWF0aW9uLmpvaW5EYW8pKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbk9STS5wcm90b3R5cGUudG9Db2x1bW4gPSBmdW5jdGlvbiAob3JtUHJvcGVydHkpIHtcblx0bGV0IGNvbHVtbjtcblx0aWYgKG9ybVByb3BlcnR5KSB7XG5cdFx0Y29sdW1uID0ge1xuXHRcdFx0bmFtZTogXCJcXFwiXCIgKyBvcm1Qcm9wZXJ0eS5jb2x1bW4gKyBcIlxcXCJcIixcblx0XHRcdHR5cGU6IG9ybVByb3BlcnR5LnR5cGUsXG5cdFx0XHRsZW5ndGg6IFN0cmluZyhvcm1Qcm9wZXJ0eS5sZW5ndGgpLFxuXHRcdFx0cHJpbWFyeUtleTogU3RyaW5nKG9ybVByb3BlcnR5LmlkID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG9ybVByb3BlcnR5LmlkKSxcblx0XHRcdG51bGxhYmxlOiBTdHJpbmcoIW9ybVByb3BlcnR5LnJlcXVpcmVkKSxcblx0XHRcdGRlZmF1bHRWYWx1ZTogb3JtUHJvcGVydHkuZGVmYXVsdFZhbHVlXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gY29sdW1uO1xufTtcblxuT1JNLnByb3RvdHlwZS50b1RhYmxlID0gZnVuY3Rpb24gKCkge1xuXHRsZXQgdGFibGUgPSB7XG5cdFx0bmFtZTogdGhpcy50YWJsZSxcblx0XHR0eXBlOiBcIlRBQkxFXCIsXG5cdFx0Y29sdW1uczogbnVsbCxcblx0XHRjb25zdHJhaW50czogbnVsbCxcblx0fTtcblxuXHRjb25zdCB1bmlxdWVJbmRpY2VzID0gW107XG5cdGNvbnN0IHByaW1hcnlLZXlzID0gW107XG5cdGlmICh0aGlzLnByb3BlcnRpZXMpIHtcblx0XHR0YWJsZS5jb2x1bW5zID0gW107XG5cdFx0dGhpcy5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHR2YXIgY29sdW1uID0gdGhpcy50b0NvbHVtbihwcm9wZXJ0eSk7XG5cdFx0XHRpZiAocHJvcGVydHkudW5pcXVlKVxuXHRcdFx0XHR1bmlxdWVJbmRpY2VzLnB1c2goe1xuXHRcdFx0XHRcdFwiY29sdW1uc1wiOiBjb2x1bW4ubmFtZVxuXHRcdFx0XHR9KTtcblx0XHRcdGlmIChwcm9wZXJ0eS5pZClcblx0XHRcdFx0cHJpbWFyeUtleXMucHVzaCh7XG5cdFx0XHRcdFx0XCJjb2x1bW5zXCI6IGNvbHVtbi5uYW1lXG5cdFx0XHRcdH0pO1xuXHRcdFx0Ly9UT0RPIDogYW5hbHl6ZSBhc3NvY2lhdGlvbnMgdG8gYWRkIEZLcyBpZiBwb3NzaWJsZVxuXHRcdFx0dGFibGUuY29sdW1ucy5wdXNoKGNvbHVtbik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAocHJpbWFyeUtleXMubGVuZ3RoID4gMSB8fCB1bmlxdWVJbmRpY2VzLmxlbmd0aCA+IDApIHtcblx0XHR0YWJsZVtcImNvbnN0cmFpbnRzXCJdID0ge307XG5cdH1cblxuXHRpZiAocHJpbWFyeUtleXMubGVuZ3RoID4gMSkge1xuXHRcdHRhYmxlLmNvbHVtbnMgPSB0YWJsZS5jb2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uKSB7XG5cdFx0XHRjb2x1bW4ucHJpbWFyeUtleSA9IFwiZmFsc2VcIjtcblx0XHRcdHJldHVybiBjb2x1bW47XG5cdFx0fSk7XG5cdFx0dGFibGUuY29uc3RyYWludHNbXCJwcmltYXJLZXlzXCJdID0gcHJpbWFyeUtleXM7XG5cdH1cblx0aWYgKHVuaXF1ZUluZGljZXMubGVuZ3RoID4gMClcblx0XHR0YWJsZS5jb25zdHJhaW50c1tcInVuaXF1ZUluZGljZXNcIl0gPSB1bmlxdWVJbmRpY2VzO1xuXG5cdHJldHVybiB0YWJsZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXQob3JtOiBPUk1EZWZpbml0aW9uKSB7XG5cdGNvbnN0IF9vcm0gPSBuZXcgT1JNKG9ybSk7XG5cdF9vcm0udmFsaWRhdGUoKTtcblx0cmV0dXJuIF9vcm07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMEZPLFNBQVMsSUFBSSxLQUFvQjtBQUN2QyxPQUFLLE1BQU07QUFDWCxXQUFTLEtBQUssS0FBSztBQUNsQixTQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7QUFBQSxFQUNoQjtBQUNEO0FBQUM7QUFFRCxJQUFJLFVBQVUsb0JBQW9CLE9BQU8sT0FBTztBQUFBLEVBQy9DLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLGdCQUFnQjtBQUFBLEVBQ2hCLGVBQWU7QUFDaEIsQ0FBQztBQUNELElBQUksVUFBVSwyQkFBMkIsT0FBTyxLQUFLLElBQUksVUFBVSxpQkFBaUIsRUFDbEYsSUFBSSxTQUFVLEtBQUs7QUFDbkIsU0FBTyxJQUFJLFVBQVUsa0JBQWtCLEdBQUc7QUFDM0MsQ0FBQztBQUVGLElBQUksVUFBVSxnQkFBZ0IsV0FBWTtBQUN6QyxNQUFJLENBQUMsS0FBSyxZQUFZO0FBQ3JCLFFBQUksQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLFdBQVc7QUFDeEMsWUFBTSxJQUFJLE1BQU0sdURBQXVEO0FBQ3hFLFVBQU0sS0FBSyxLQUFLLFdBQVcsT0FBTyxTQUFVLFVBQVU7QUFDckQsYUFBTyxTQUFTO0FBQUEsSUFDakIsQ0FBQztBQUNELFFBQUksQ0FBQyxHQUFHO0FBQ1AsWUFBTSxJQUFJLE1BQU0sdURBQXVEO0FBQ3hFLFNBQUssYUFBYSxHQUFHLENBQUM7QUFBQSxFQUN2QjtBQUNBLFNBQU8sS0FBSztBQUNiO0FBRUEsSUFBSSxVQUFVLDRCQUE0QixXQUFZO0FBQ3JELE1BQUks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
@@ -240,4 +240,4 @@ function create(orm, connection) {
240
240
  return stmnts;
241
241
  }
242
242
  ;
243
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL29ybXN0YXRlbWVudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9sb2dcIjtcbmltcG9ydCB7IENyZWF0ZVRhYmxlQnVpbGRlciwgRGVsZXRlQnVpbGRlciwgRHJvcFRhYmxlQnVpbGRlciwgSW5zZXJ0QnVpbGRlciwgU2VsZWN0QnVpbGRlciwgU1FMQnVpbGRlciwgVXBkYXRlQnVpbGRlciB9IGZyb20gXCIuL3NxbFwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBPUk1TdGF0ZW1lbnRzKG9ybSwgZGlhbGVjdDogU1FMQnVpbGRlcikge1xuXHR0aGlzLiRsb2cgPSBMb2dnaW5nLmdldExvZ2dlcignZGIuZGFvLm9ybXN0YXRlbWVudHMnKTtcblx0dGhpcy5vcm0gPSBvcm07XG5cdHRoaXMub3JtLnRhYmxlTmFtZSA9IHRoaXMub3JtLnRhYmxlO1xuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0cHJvcGVydHkuY29sdW1uTmFtZSA9IHByb3BlcnR5LmNvbHVtbjtcblx0fSk7XG5cdHRoaXMuZGlhbGVjdCA9IGRpYWxlY3QgfHwgU1FMQnVpbGRlci5nZXREaWFsZWN0KCk7XG59O1xuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBPUk1TdGF0ZW1lbnRzO1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uICgpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LmNyZWF0ZSgpLnRhYmxlKHRoaXMub3JtLnRhYmxlKTtcblxuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0Y29uc3QgY29sdW1uID0gdGhpcy5vcm0udG9Db2x1bW4ocHJvcGVydHkpO1xuXHRcdGlmIChwcm9wZXJ0eS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdWQVJDSEFSJykge1xuXHRcdFx0aWYgKHByb3BlcnR5Lmxlbmd0aCA9PT0gdW5kZWZpbmVkKVxuXHRcdFx0XHRwcm9wZXJ0eS5sZW5ndGggPSAyNTU7XG5cdFx0XHRidWlsZGVyLmNvbHVtblZhcmNoYXIoY29sdW1uLm5hbWUsIHByb3BlcnR5Lmxlbmd0aCwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdDSEFSJykge1xuXHRcdFx0aWYgKHByb3BlcnR5Lmxlbmd0aCA9PT0gdW5kZWZpbmVkKVxuXHRcdFx0XHRwcm9wZXJ0eS5sZW5ndGggPSAxO1xuXHRcdFx0cHJvcGVydHkubGVuZ3RoID0gcGFyc2VJbnQocHJvcGVydHkubGVuZ3RoLCAxMCk7XG5cdFx0XHRidWlsZGVyLmNvbHVtbkNoYXIoY29sdW1uLm5hbWUsIHByb3BlcnR5Lmxlbmd0aCwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJ1aWxkZXIuY29sdW1uKGNvbHVtbi5uYW1lLCBjb2x1bW4udHlwZSwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fVxuXHR9LmJpbmQodGhpcykpO1xuXG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuZHJvcFRhYmxlID0gZnVuY3Rpb24gKCk6IERyb3BUYWJsZUJ1aWxkZXIge1xuXHRyZXR1cm4gdGhpcy5kaWFsZWN0LmRyb3AoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAoKTogSW5zZXJ0QnVpbGRlciB7XG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3QuaW5zZXJ0KCkuaW50byh0aGlzLm9ybS50YWJsZSk7XG5cdHRoaXMub3JtLnByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRidWlsZGVyLmNvbHVtbihwcm9wZXJ0eS5jb2x1bW4pLnZhbHVlKCc/JywgcHJvcGVydHkpO1xuXHR9KTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZW50aXR5KTogVXBkYXRlQnVpbGRlciB7XG5cdGlmICghZW50aXR5KVxuXHRcdHRocm93IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHlbJyArIGVudGl0eSArICddJyk7XG5cblx0Y29uc3QgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC51cGRhdGUoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG5cdHRoaXMub3JtLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhlbnRpdHkpLmluZGV4T2YocHJvcGVydHkubmFtZSkgPiAtMSAmJiAoIXByb3BlcnR5LmFsbG93ZWRPcHMgfHwgcHJvcGVydHkuYWxsb3dlZE9wcy5pbmRleE9mKCd1cGRhdGUnKSA+IC0xKTtcblx0fSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRpZiAoIXByb3BlcnR5LmlkKVxuXHRcdFx0YnVpbGRlci5zZXQocHJvcGVydHkuY29sdW1uLCAnPycsIHByb3BlcnR5KTtcblx0fSk7XG5cdGNvbnN0IHBrUHJvcGVydHkgPSB0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCk7XG5cdGJ1aWxkZXIud2hlcmUocGtQcm9wZXJ0eS5jb2x1bW4gKyAnPT8nLCBbcGtQcm9wZXJ0eV0pO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbk9STVN0YXRlbWVudHMucHJvdG90eXBlW1wiZGVsZXRlXCJdID0gT1JNU3RhdGVtZW50cy5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCk6IERlbGV0ZUJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LmRlbGV0ZSgpLmZyb20odGhpcy5vcm0udGFibGUpO1xuXHRpZiAoYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRsZXQgZmlsdGVyRmllbGROYW1lcyA9IGFyZ3VtZW50c1swXTtcblx0XHRpZiAoZmlsdGVyRmllbGROYW1lcy5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpXG5cdFx0XHRmaWx0ZXJGaWVsZE5hbWVzID0gW2ZpbHRlckZpZWxkTmFtZXNdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyRmllbGROYW1lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLm9ybS5nZXRQcm9wZXJ0eShmaWx0ZXJGaWVsZE5hbWVzW2ldKTtcblx0XHRcdGlmICghcHJvcGVydHkpXG5cdFx0XHRcdHRocm93IEVycm9yKCdVbmtub3duIHByb3BlcnR5IG5hbWU6ICcgKyBmaWx0ZXJGaWVsZE5hbWVzW2ldICsgXCIgaW4gJGZpbHRlclwiKTtcblx0XHRcdGJ1aWxkZXIud2hlcmUocHJvcGVydHkuY29sdW1uICsgXCI9P1wiLCBbcHJvcGVydHldKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHBhcmFtcyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRsZXQgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC5zZWxlY3QoKTtcblx0aWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkICYmIHBhcmFtcy5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkRmllbGRzID0gcGFyYW1zLnNlbGVjdC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgPyBwYXJhbXMuc2VsZWN0IDogW3BhcmFtcy5zZWxlY3RdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoc2VsZWN0ZWRGaWVsZHNbaV0pO1xuXHRcdFx0aWYgKCFwcm9wZXJ0eSlcblx0XHRcdFx0dGhyb3cgRXJyb3IoJ1Vua25vd24gZmllbGQgbmFtZSBbJyArIHNlbGVjdGVkRmllbGRzW2ldICsgJ10gaW4gJHNlbGVjdCcpO1xuXHRcdFx0YnVpbGRlciA9IGJ1aWxkZXIuY29sdW1uKHByb3BlcnR5LmNvbHVtbik7XG5cdFx0fVxuXHR9XG5cdGJ1aWxkZXIgPSBidWlsZGVyLmZyb20odGhpcy5vcm0udGFibGUpXG5cdFx0LndoZXJlKHRoaXMub3JtLmdldFByaW1hcnlLZXkoKS5jb2x1bW4gKyBcIj0/XCIsIFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCldKTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uIChzZXR0aW5ncyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LnNlbGVjdCgpLmNvbHVtbignQ09VTlQoKiknKS5mcm9tKHRoaXMub3JtLnRhYmxlKTtcblx0YWRkRmlsdGVyKHRoaXMub3JtLCBidWlsZGVyLCBzZXR0aW5ncyk7XG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUubGlzdCA9IGZ1bmN0aW9uIChzZXR0aW5ncyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRsZXQgaTtcblx0c2V0dGluZ3MgPSBzZXR0aW5ncyB8fCB7fTtcblx0Y29uc3Qgc29ydCA9IHNldHRpbmdzLiRzb3J0IHx8IHNldHRpbmdzLnNvcnQ7XG5cdGNvbnN0IG9yZGVyID0gc2V0dGluZ3MuJG9yZGVyIHx8IHNldHRpbmdzLm9yZGVyO1xuXHRjb25zdCBzZWxlY3RlZEZpZWxkcyA9IHNldHRpbmdzLiRzZWxlY3QgfHwgc2V0dGluZ3Muc2VsZWN0O1xuXG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3Quc2VsZWN0KCkuZnJvbSh0aGlzLm9ybS50YWJsZSk7XG5cblx0Ly9hZGQgc2VsZWN0ZWQgZmllbGRzIGlmIGFueVxuXHRpZiAoc2VsZWN0ZWRGaWVsZHMpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoc2VsZWN0ZWRGaWVsZHNbaV0pO1xuXHRcdFx0aWYgKCFwcm9wZXJ0eSlcblx0XHRcdFx0dGhyb3cgRXJyb3IoJ1Vua25vd24gZmllbGQgbmFtZSBbJyArIHNlbGVjdGVkRmllbGRzW2ldICsgJ10gaW4gJHNlbGVjdCcpO1xuXHRcdFx0YnVpbGRlci5jb2x1bW4ocHJvcGVydHkuY29sdW1uKTtcblx0XHR9XG5cdH1cblxuXHQvL2FkZCB3aGVyZSBjbGF1c2UgZm9yIGFueSBmaWVsZHNcblx0YWRkRmlsdGVyKHRoaXMub3JtLCBidWlsZGVyLCBzZXR0aW5ncyk7XG5cblx0Ly8gVE9ETzogVGhlIGZvbGxvd2luZyBjb2RlIG1pZ2h0IG5vdCBiZSBuZWVkZWQgYW55bW9yZVxuXHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb25zID0gdGhpcy5vcm0ucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0Zm9yICh2YXIgc2V0dGluZ05hbWUgaW4gc2V0dGluZ3MpIHtcblx0XHRcdGlmIChzZXR0aW5nTmFtZSA9PT0gcHJvcGVydHkubmFtZSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSk7XG5cdGlmIChwcm9wZXJ0eURlZmluaXRpb25zLmxlbmd0aCA+IDApIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgcHJvcGVydHlEZWZpbml0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgZGVmID0gcHJvcGVydHlEZWZpbml0aW9uc1tpXTtcblx0XHRcdGlmIChzZXR0aW5ncz8uJGZpbHRlciAmJiBzZXR0aW5ncy4kZmlsdGVyPy5pbmRleE9mKGRlZi5uYW1lKSA+IC0xKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgTElLRSA/JywgW2RlZl0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmFsID0gc2V0dGluZ3NbZGVmLm5hbWVdO1xuXHRcdFx0XHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJyBJUyBOVUxMJywgW2RlZl0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICh2YWwuaW5kZXhPZiAmJiB2YWwuaW5kZXhPZignPicpID4gLTEpIHtcblx0XHRcdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgPiA/JywgW2RlZl0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodmFsLmluZGV4T2YgJiYgdmFsLmluZGV4T2YoJzwnKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRidWlsZGVyLndoZXJlKGRlZi5jb2x1bW4gKyAnIDwgPycsIFtkZWZdKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJz0/JywgW2RlZl0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChzb3J0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YXIgX3NvcnQgPSBzb3J0LnNwbGl0KCcsJyk7XG5cdFx0Zm9yIChpID0gMDsgaSA8IF9zb3J0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgX29yZGVyID0gdHJ1ZTsvL0FTQ1xuXHRcdFx0Ly9UT0RPOiBjaGFuZ2UgdG8gYmUgYWJsZSB0byBvcmRlciBwZXIgc29ydCBwcm9wZXJ0eVxuXHRcdFx0aWYgKG9yZGVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKFsnYXNjJywgJ2Rlc2MnXS5pbmRleE9mKFN0cmluZyhvcmRlcikudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuXHRcdFx0XHRcdF9vcmRlciA9IG9yZGVyLnRvTG93ZXJDYXNlKCkgPT09ICdkZXNjJyA/IGZhbHNlIDogdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMub3JtLmdldFByb3BlcnR5KF9zb3J0W2ldKSkge1xuXHRcdFx0XHRidWlsZGVyLm9yZGVyKHRoaXMub3JtLmdldFByb3BlcnR5KF9zb3J0W2ldKS5jb2x1bW4sIF9vcmRlcik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdDb2x1bW46ICcgKyBfc29ydFtpXSArICcgbm90IHByZXNlbnQgaW4gJyArIEpTT04uc3RyaW5naWZ5KHRoaXMub3JtKSk7XG5cdFx0XHR9XG5cblx0XHR9XG5cdH1cblx0YWRkTGltaXQoYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRhZGRPZmZzZXQoYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbmZ1bmN0aW9uIGFkZEZpbHRlcihvcm0sIGJ1aWxkZXIsIHNldHRpbmdzKSB7XG5cdC8vYWRkIHdoZXJlIGNsYXVzZSBmb3IgYW55IGZpZWxkc1xuXHRpZiAoc2V0dGluZ3M/LiRmaWx0ZXIpIHtcblx0XHRjb25zdCBlcXVhbHNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZXF1YWxzID8/IFtdKTtcblx0XHRjb25zdCBub3RFcXVhbHNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIubm90RXF1YWxzID8/IFtdKTtcblx0XHRjb25zdCBjb250YWluc1Byb3BlcnRpZXNLZXlzID0gT2JqZWN0LmtleXMoc2V0dGluZ3MuJGZpbHRlci5jb250YWlucyA/PyBbXSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5Qcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZ3JlYXRlclRoYW4gPz8gW10pO1xuXHRcdGNvbnN0IGxlc3NUaGFuUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmxlc3NUaGFuID8/IFtdKTtcblx0XHRjb25zdCBncmVhdGVyVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsID8/IFtdKTtcblx0XHRjb25zdCBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIubGVzc1RoYW5PckVxdWFsID8/IFtdKTtcblxuXHRcdGNvbnN0IGVxdWFsc1Byb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBlcXVhbHNQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBub3RFcXVhbHNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gbm90RXF1YWxzUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgY29udGFpbnNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gY29udGFpbnNQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBncmVhdGVyVGhhblByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBncmVhdGVyVGhhblByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGxlc3NUaGFuUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGxlc3NUaGFuUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGdyZWF0ZXJUaGFuT3JFcXVhbFByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGxlc3NUaGFuT3JFcXVhbFByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblxuXHRcdGVxdWFsc1Byb3BlcnRpZXMuZm9yRWFjaChlID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3MuJGZpbHRlci5lcXVhbHNbZS5uYW1lXTtcblx0XHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoZS5jb2x1bW4gKyAnIElTIE5VTEwnLCBbZV0pO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBJTiAoJHt2YWx1ZS5tYXAodiA9PiAnPycpLmpvaW4oJywgJyl9KWAsIFtlXSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID0gP2AsIFtlXSlcblx0XHRcdH1cblx0XHR9KTtcblx0XHRub3RFcXVhbHNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IHNldHRpbmdzLiRmaWx0ZXIubm90RXF1YWxzW2UubmFtZV07XG5cdFx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGUuY29sdW1uICsgJyBJUyBOT1QgTlVMTCcsIFtlXSk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IE5PVCBJTiAoJHt2YWx1ZS5tYXAodiA9PiAnPycpLmpvaW4oJywgJyl9KWAsIFtlXSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ICE9ID9gLCBbZV0pXG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Y29udGFpbnNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiBidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBMSUtFID9gLCBbZV0pKTtcblx0XHRncmVhdGVyVGhhblByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID4gP2AsIFtlXSkpO1xuXHRcdGxlc3NUaGFuUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gPCA/YCwgW2VdKSk7XG5cdFx0Z3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gPj0gP2AsIFtlXSkpO1xuXHRcdGxlc3NUaGFuT3JFcXVhbFByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IDw9ID9gLCBbZV0pKTtcblx0fVxufVxuXG5mdW5jdGlvbiBhZGRMaW1pdChidWlsZGVyLCBzZXR0aW5ncykge1xuXHRjb25zdCBsaW1pdCA9IHNldHRpbmdzLiRsaW1pdCA/PyBzZXR0aW5ncy5saW1pdDtcblx0aWYgKGxpbWl0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRidWlsZGVyLmxpbWl0KHBhcnNlSW50KGxpbWl0LCAxMCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFkZE9mZnNldChidWlsZGVyLCBzZXR0aW5ncykge1xuXHRjb25zdCBvZmZzZXQgPSBzZXR0aW5ncy4kb2Zmc2V0ID8/IHNldHRpbmdzLm9mZnNldDtcblx0aWYgKG9mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0YnVpbGRlci5vZmZzZXQocGFyc2VJbnQob2Zmc2V0LCAxMCkpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUob3JtLCBjb25uZWN0aW9uPzogQ29ubmVjdGlvbikge1xuXHRsZXQgZGlhbGVjdDtcblx0aWYgKGNvbm5lY3Rpb24pIHtcblx0XHRkaWFsZWN0ID0gU1FMQnVpbGRlci5nZXREaWFsZWN0KGNvbm5lY3Rpb24pO1xuXHR9XG5cblx0Y29uc3Qgc3RtbnRzID0gbmV3IE9STVN0YXRlbWVudHMob3JtLCBkaWFsZWN0KTtcblx0cmV0dXJuIHN0bW50cztcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxpQkFBd0I7QUFDeEIsaUJBQTZIO0FBR3RILFNBQVMsY0FBYyxLQUFLLFNBQXFCO0FBQ3ZELE9BQUssT0FBTyxtQkFBUSxVQUFVLHNCQUFzQjtBQUNwRCxPQUFLLE1BQU07QUFDWCxPQUFLLElBQUksWUFBWSxLQUFLLElBQUk7QUFDOUIsT0FBSyxJQUFJLFdBQVcsUUFBUSxTQUFVLFVBQVU7QUFDL0MsYUFBUyxhQUFhLFNBQVM7QUFBQSxFQUNoQyxDQUFDO0FBQ0QsT0FBSyxVQUFVLFdBQVcsc0JBQVcsV0FBVztBQUNqRDtBQUFDO0FBQ0QsY0FBYyxVQUFVLGNBQWM7QUFFdEMsY0FBYyxVQUFVLGNBQWMsV0FBZ0M7QUFDckUsUUFBTSxVQUFVLEtBQUssUUFBUSxPQUFPLEVBQUUsTUFBTSxLQUFLLElBQUksS0FBSztBQUUxRCxPQUFLLElBQUksV0FBVyxRQUFRLFNBQVUsVUFBVTtBQUMvQyxVQUFNLFNBQVMsS0FBSyxJQUFJLFNBQVMsUUFBUTtBQUN6QyxRQUFJLFNBQVMsS0FBSyxZQUFZLE1BQU0sV0FBVztBQUM5QyxVQUFJLFNBQVMsV0FBVztBQUN2QixpQkFBUyxTQUFTO0FBQ25CLGNBQVEsY0FBYyxPQUFPLE1BQU0sU0FBUyxRQUFRLE9BQU8sZUFBZSxRQUFRLE9BQU8sYUFBYSxRQUFRLFNBQVMsTUFBTTtBQUFBLElBQzlILFdBQVcsU0FBUyxLQUFLLFlBQVksTUFBTSxRQUFRO0FBQ2xELFVBQUksU0FBUyxXQUFXO0FBQ3ZCLGlCQUFTLFNBQVM7QUFDbkIsZUFBUyxTQUFTLFNBQVMsU0FBUyxRQUFRLEVBQUU7QUFDOUMsY0FBUSxXQUFXLE9BQU8sTUFBTSxTQUFTLFFBQVEsT0FBTyxlQUFlLFFBQVEsT0FBTyxhQUFhLFFBQVEsU0FBUyxNQUFNO0FBQUEsSUFDM0gsT0FBTztBQUNOLGNBQVEsT0FBTyxPQUFPLE1BQU0sT0FBTyxNQUFNLE9BQU8sZUFBZSxRQUFRLE9BQU8sYUFBYSxRQUFRLFNBQVMsTUFBTTtBQUFBLElBQ25IO0FBQUEsRUFDRCxFQUFFLEtBQUssSUFBSSxDQUFDO0FBRVosU0FBTztBQUNSO0FBRUEsY0FBYyxVQUFVLFlBQVksV0FBOEI7QUFDakUsU0FBTyxLQUFLLFFBQVEsS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLEtBQUs7QUFDaEQ7QUFFQSxjQUFjLFVBQVUsU0FBUyxXQUEyQjtBQUMzRCxRQUFNLFVBQVUsS0FBSyxRQUFRLE9BQU8sRUFBRSxLQUFLLEtBQUssSUFBSSxLQUFLO0FBQ3pELE9BQUssSUFBSSxXQUFXLFFBQVEsU0FBVSxVQUFVO0FBQy9DLFlBQVEsT0FBTyxTQUFTLE1BQU0sRUFBRSxNQUFNLEtBQUssUUFBUTtBQUFBLEVBQ3BELENBQUM7QUFDRCxTQUFPO0FBQ1I7QUFFQSxjQUFjLFVBQVUsU0FBUyxTQUFVLFFBQXVCO0FBQ2pFLE1BQUksQ0FBQztBQUNKLFVBQU0sTUFBTSw4QkFBOEIsU0FBUyxHQUFHO0FBRXZELFFBQU0sVUFBVSxLQUFLLFFBQVEsT0FBTyxFQUFFLE1BQU0sS0FBSyxJQUFJLEtBQUs7QUFDMUQsT0FBSyxJQUFJLFdBQVcsT0FBTyxTQUFVLFVBQVU7QUFDOUMsV0FBTyxPQUFPLEtBQUssTUFBTSxFQUFFLFFBQVEsU0FBUyxJQUFJLElBQUksT0FBTyxDQUFDLFNBQVMsY0FBYyxTQUFTLFdBQVcsUUFBUSxRQUFRLElBQUk7QUFBQSxFQUM1SCxDQUFDLEVBQUUsUUFBUSxTQUFVLFVBQVU7QUFDOUIsUUFBSSxDQUFDLFNBQVM7QUFDYixjQUFRLElBQUksU0FBUyxRQUFRLEtBQUssUUFBUTtBQUFBLEVBQzVDLENBQUM7QUFDRCxRQUFNLGFBQWEsS0FBSyxJQUFJLGNBQWM7QUFDMUMsVUFBUSxNQUFNLFdBQVcsU0FBUyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3BELFNBQU87QUFDUjtBQUVBLGNBQWMsVUFBVSxRQUFRLElBQUksY0FBYyxVQUFVLFNBQVMsV0FBMkI7QUFDL0YsUUFBTSxVQUFVLEtBQUssUUFBUSxPQUFPLEVBQUUsS0FBSyxLQUFLLElBQUksS0FBSztBQUN6RCxNQUFJLFVBQVUsQ0FBQyxNQUFNLFFBQVc7QUFDL0IsUUFBSSxtQkFBbUIsVUFBVSxDQUFDO0FBQ2xDLFFBQUksaUJBQWlCLGdCQUFnQjtBQUNwQyx5QkFBbUIsQ0FBQyxnQkFBZ0I7QUFDckMsYUFBUyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUFLO0FBQ2pELFlBQU0sV0FBVyxLQUFLLElBQUksWUFBWSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3pELFVBQUksQ0FBQztBQUNKLGNBQU0sTUFBTSw0QkFBNEIsaUJBQWlCLENBQUMsSUFBSSxhQUFhO0FBQzVFLGNBQVEsTUFBTSxTQUFTLFNBQVMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUFBLElBQ2pEO0FBQUEsRUFDRDtBQUNBLFNBQU87QUFDUjtBQUVBLGNBQWMsVUFBVSxPQUFPLFNBQVUsUUFBdUI7QUFDL0QsTUFBSSxVQUFVLEtBQUssUUFBUSxPQUFPO0FBQ2xDLE1BQUksV0FBVyxVQUFhLE9BQU8sV0FBVyxRQUFXO0FBQ3hELFVBQU0saUJBQWlCLE9BQU8sT0FBTyxnQkFBZ0IsUUFBUSxPQUFPLFNBQVMsQ0FBQyxPQUFPLE1BQU07QUFDM0YsYUFBUyxJQUFJLEdBQUcsSUFBSSxlQUFlLFFBQVEsS0FBSztBQUMvQyxZQUFNLFdBQVcsS0FBSyxJQUFJLFlBQVksZUFBZSxDQUFDLENBQUM7QUFDdkQsVUFBSSxDQUFDO0FBQ0osY0FBTSxNQUFNLHlCQUF5QixlQUFlLENBQUMsSUFBSSxjQUFjO0FBQ3hFLGdCQUFVLFFBQVEsT0FBTyxTQUFTLE1BQU07QUFBQSxJQUN6QztBQUFBLEVBQ0Q7QUFDQSxZQUFVLFFBQVEsS0FBSyxLQUFLLElBQUksS0FBSyxFQUNuQyxNQUFNLEtBQUssSUFBSSxjQUFjLEVBQUUsU0FBUyxNQUFNLENBQUMsS0FBSyxJQUFJLGNBQWMsQ0FBQyxDQUFDO0FBQzFFLFNBQU87QUFDUjtBQUVBLGNBQWMsVUFBVSxRQUFRLFNBQVUsVUFBeUI7QUFDbEUsUUFBTSxVQUFVLEtBQUssUUFBUSxPQUFPLEVBQUUsT0FBTyxVQUFVLEVBQUUsS0FBSyxLQUFLLElBQUksS0FBSztBQUM1RSxZQUFVLEtBQUssS0FBSyxTQUFTLFFBQVE7QUFDckMsU0FBTztBQUNSO0FBRUEsY0FBYyxVQUFVLE9BQU8sU0FBVSxVQUF5QjtBQUNqRSxNQUFJO0FBQ0osYUFBVyxZQUFZLENBQUM7QUFDeEIsUUFBTSxPQUFPLFNBQVMsU0FBUyxTQUFTO0FBQ3hDLFFBQU0sUUFBUSxTQUFTLFVBQVUsU0FBUztBQUMxQyxRQUFNLGlCQUFpQixTQUFTLFdBQVcsU0FBUztBQUVwRCxRQUFNLFVBQVUsS0FBSyxRQUFRLE9BQU8sRUFBRSxLQUFLLEtBQUssSUFBSSxLQUFLO0FBR3pELE1BQUksZ0JBQWdCO0FBQ25CLFNBQUssSUFBSSxHQUFHLElBQUksZUFBZSxRQUFRLEtBQUs7QUFDM0MsWUFBTSxXQUFXLEtBQUssSUFBSSxZQUFZLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZELFVBQUksQ0FBQztBQUNKLGNBQU0sTUFBTSx5QkFBeUIsZUFBZSxDQUFDLElBQUksY0FBYztBQUN4RSxjQUFRLE9BQU8sU0FBUyxNQUFNO0FBQUEsSUFDL0I7QUFBQSxFQUNEO0FBR0EsWUFBVSxLQUFLLEtBQUssU0FBUyxRQUFRO0FBR3JDLFFBQU0sc0JBQXNCLEtBQUssSUFBSSxXQUFXLE9BQU8sU0FBVSxVQUFVO0FBQzFFLGFBQVMsZUFBZSxVQUFVO0FBQ2pDLFVBQUksZ0JBQWdCLFNBQVM7QUFDNUIsZUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPO0FBQUEsRUFDUixDQUFDO0FBQ0QsTUFBSSxvQkFBb0IsU0FBUyxHQUFHO0FBQ25DLFNBQUssSUFBSSxHQUFHLElBQUksb0JBQW9CLFFBQVEsS0FBSztBQUNoRCxZQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFDakMsVUFBSSxVQUFVLFdBQVcsU0FBUyxTQUFTLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSTtBQUNsRSxnQkFBUSxNQUFNLElBQUksU0FBUyxXQUFXLENBQUMsR0FBRyxDQUFDO0FBQUEsTUFDNUMsT0FBTztBQUNOLGNBQU0sTUFBTSxTQUFTLElBQUksSUFBSTtBQUM3QixZQUFJLFFBQVEsUUFBUSxRQUFRLFFBQVc7QUFDdEMsa0JBQVEsTUFBTSxJQUFJLFNBQVMsWUFBWSxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQzdDLE9BQU87QUFDTixjQUFJLElBQUksV0FBVyxJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUk7QUFDekMsb0JBQVEsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUFBLFVBQ3pDLFdBQVcsSUFBSSxXQUFXLElBQUksUUFBUSxHQUFHLElBQUksSUFBSTtBQUNoRCxvQkFBUSxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQUEsVUFDekMsT0FBTztBQUNOLG9CQUFRLE1BQU0sSUFBSSxTQUFTLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFBQSxVQUN2QztBQUFBLFFBQ0Q7QUFBQSxNQUNEO0FBQUEsSUFDRDtBQUFBLEVBQ0Q7QUFFQSxNQUFJLFNBQVMsUUFBVztBQUN2QixRQUFJLFFBQVEsS0FBSyxNQUFNLEdBQUc7QUFDMUIsU0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztBQUNsQyxVQUFJLFNBQVM7QUFFYixVQUFJLFVBQVUsUUFBVztBQUN4QixZQUFJLENBQUMsT0FBTyxNQUFNLEVBQUUsUUFBUSxPQUFPLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxJQUFJO0FBQzlELG1CQUFTLE1BQU0sWUFBWSxNQUFNLFNBQVMsUUFBUTtBQUFBLFFBQ25EO0FBQUEsTUFDRDtBQUNBLFVBQUksS0FBSyxJQUFJLFlBQVksTUFBTSxDQUFDLENBQUMsR0FBRztBQUNuQyxnQkFBUSxNQUFNLEtBQUssSUFBSSxZQUFZLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxNQUFNO0FBQUEsTUFDNUQsT0FBTztBQUNOLGdCQUFRLE1BQU0sYUFBYSxNQUFNLENBQUMsSUFBSSxxQkFBcUIsS0FBSyxVQUFVLEtBQUssR0FBRyxDQUFDO0FBQUEsTUFDcEY7QUFBQSxJQUVEO0FBQUEsRUFDRDtBQUNBLFdBQVMsU0FBUyxRQUFRO0FBQzFCLFlBQVUsU0FBUyxRQUFRO0FBQzNCLFNBQU87QUFDUjtBQUVBLFNBQVMsVUFBVSxLQUFLLFNBQVMsVUFBVTtBQUUxQyxNQUFJLFVBQVUsU0FBUztBQUN0QixVQUFNLHVCQUF1QixPQUFPLEtBQUssU0FBUyxRQUFRLFVBQVUsQ0FBQyxDQUFDO0FBQ3RFLFVBQU0sMEJBQTBCLE9BQU8sS0FBSyxTQUFTLFFBQVEsYUFBYSxDQUFDLENBQUM7QUFDNUUsVUFBTSx5QkFBeUIsT0FBTyxLQUFLLFNBQVMsUUFBUSxZQUFZLENBQUMsQ0FBQztBQUMxRSxVQUFNLDRCQUE0QixPQUFPLEtBQUssU0FBUyxRQUFRLGVBQWUsQ0FBQyxDQUFDO0FBQ2hGLFVBQU0seUJBQXlCLE9BQU8sS0FBSyxTQUFTLFFBQVEsWUFBWSxDQUFDLENBQUM7QUFDMUUsVUFBTSxtQ0FBbUMsT0FBTyxLQUFLLFNBQVMsUUFBUSxzQkFBc0IsQ0FBQyxDQUFDO0FBQzlGLFVBQU0sZ0NBQWdDLE9BQU8sS0FBSyxTQUFTLFFBQVEsbUJBQW1CLENBQUMsQ0FBQztBQUV4RixVQUFNLG1CQUFtQixJQUFJLFdBQVcsT0FBTyxPQUFLLHFCQUFxQixTQUFTLEVBQUUsSUFBSSxDQUFDO0FBQ3pGLFVBQU0sc0JBQXNCLElBQUksV0FBVyxPQUFPLE9BQUssd0JBQXdCLFNBQVMsRUFBRSxJQUFJLENBQUM7QUFDL0YsVUFBTSxxQkFBcUIsSUFBSSxXQUFXLE9BQU8sT0FBSyx1QkFBdUIsU0FBUyxFQUFFLElBQUksQ0FBQztBQUM3RixVQUFNLHdCQUF3QixJQUFJLFdBQVcsT0FBTyxPQUFLLDBCQUEwQixTQUFTLEVBQUUsSUFBSSxDQUFDO0FBQ25HLFVBQU0scUJBQXFCLElBQUksV0FBVyxPQUFPLE9BQUssdUJBQXVCLFNBQVMsRUFBRSxJQUFJLENBQUM7QUFDN0YsVUFBTSwrQkFBK0IsSUFBSSxXQUFXLE9BQU8sT0FBSyxpQ0FBaUMsU0FBUyxFQUFFLElBQUksQ0FBQztBQUNqSCxVQUFNLDRCQUE0QixJQUFJLFdBQVcsT0FBTyxPQUFLLDhCQUE4QixTQUFTLEVBQUUsSUFBSSxDQUFDO0FBRTNHLHFCQUFpQixRQUFRLE9BQUs7QUFDN0IsWUFBTSxRQUFRLFNBQVMsUUFBUSxPQUFPLEVBQUUsSUFBSTtBQUM1QyxVQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDMUMsZ0JBQVEsTUFBTSxFQUFFLFNBQVMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQ3pDLFdBQVcsTUFBTSxRQUFRLEtBQUssR0FBRztBQUNoQyxnQkFBUSxNQUFNLEdBQUcsRUFBRSxNQUFNLFFBQVEsTUFBTSxJQUFJLE9BQUssR0FBRyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUN4RSxPQUFPO0FBQ04sZ0JBQVEsTUFBTSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQUEsTUFDckM7QUFBQSxJQUNELENBQUM7QUFDRCx3QkFBb0IsUUFBUSxPQUFLO0FBQ2hDLFlBQU0sUUFBUSxTQUFTLFFBQVEsVUFBVSxFQUFFLElBQUk7QUFDL0MsVUFBSSxVQUFVLFFBQVEsVUFBVSxRQUFXO0FBQzFDLGdCQUFRLE1BQU0sRUFBRSxTQUFTLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUFBLE1BQzdDLFdBQVcsTUFBTSxRQUFRLEtBQUssR0FBRztBQUNoQyxnQkFBUSxNQUFNLEdBQUcsRUFBRSxNQUFNLFlBQVksTUFBTSxJQUFJLE9BQUssR0FBRyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUM1RSxPQUFPO0FBQ04sZ0JBQVEsTUFBTSxHQUFHLEVBQUUsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQUEsTUFDdEM7QUFBQSxJQUNELENBQUM7QUFDRCx1QkFBbUIsUUFBUSxPQUFLLFFBQVEsTUFBTSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsMEJBQXNCLFFBQVEsT0FBSyxRQUFRLE1BQU0sR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLHVCQUFtQixRQUFRLE9BQUssUUFBUSxNQUFNLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxpQ0FBNkIsUUFBUSxPQUFLLFFBQVEsTUFBTSxHQUFHLEVBQUUsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsOEJBQTBCLFFBQVEsT0FBSyxRQUFRLE1BQU0sR0FBRyxFQUFFLE1BQU0sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDOUU7QUFDRDtBQUVBLFNBQVMsU0FBUyxTQUFTLFVBQVU7QUFDcEMsUUFBTSxRQUFRLFNBQVMsVUFBVSxTQUFTO0FBQzFDLE1BQUksVUFBVSxRQUFXO0FBQ3hCLFlBQVEsTUFBTSxTQUFTLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFDbEM7QUFDRDtBQUVBLFNBQVMsVUFBVSxTQUFTLFVBQVU7QUFDckMsUUFBTSxTQUFTLFNBQVMsV0FBVyxTQUFTO0FBQzVDLE1BQUksV0FBVyxRQUFXO0FBQ3pCLFlBQVEsT0FBTyxTQUFTLFFBQVEsRUFBRSxDQUFDO0FBQUEsRUFDcEM7QUFDRDtBQUVPLFNBQVMsT0FBTyxLQUFLLFlBQXlCO0FBQ3BELE1BQUk7QUFDSixNQUFJLFlBQVk7QUFDZixjQUFVLHNCQUFXLFdBQVcsVUFBVTtBQUFBLEVBQzNDO0FBRUEsUUFBTSxTQUFTLElBQUksY0FBYyxLQUFLLE9BQU87QUFDN0MsU0FBTztBQUNSO0FBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
243
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL29ybXN0YXRlbWVudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBkYi9vcm1zdGF0ZW1lbnRzXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvZGJcbiAqIEBuYW1lIE9STVN0YXRlbWVudHNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgYE9STVN0YXRlbWVudHNgIGNsYXNzIHByb3ZpZGVzIGEgc2V0IG9mIG1ldGhvZHMgdG8gZ2VuZXJhdGUgU1FMIHN0YXRlbWVudHMgYmFzZWQgb24gYW4gT1JNIChPYmplY3QtUmVsYXRpb25hbCBNYXBwaW5nKSBkZWZpbml0aW9uLiBJdCBhYnN0cmFjdHMgdGhlIFNRTCBnZW5lcmF0aW9uIGxvZ2ljIGFuZCBhbGxvd3MgZGV2ZWxvcGVycyB0byB3b3JrIHdpdGggaGlnaC1sZXZlbCBPUk0gZGVmaW5pdGlvbnMgd2hpbGUgdGhlIGNsYXNzIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24gdG8gU1FMIHN0YXRlbWVudHMgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyBzdWNoIGFzIGNyZWF0aW5nIHRhYmxlcywgaW5zZXJ0aW5nIHJlY29yZHMsIHVwZGF0aW5nIHJlY29yZHMsIGRlbGV0aW5nIHJlY29yZHMsIGFuZCBxdWVyeWluZyByZWNvcmRzLiBUaGUgY2xhc3Mgc3VwcG9ydHMgZGlmZmVyZW50IFNRTCBkaWFsZWN0cyB0aHJvdWdoIHRoZSB1c2Ugb2YgYSBgU1FMQnVpbGRlcmAgaW5zdGFuY2UsIGVuYWJsaW5nIGNvbXBhdGliaWxpdHkgd2l0aCB2YXJpb3VzIGRhdGFiYXNlIGVuZ2luZXMuXG4gKiBcbiAqIDo6OiB3YXJuaW5nXG4gKiBUaGUgYE9STVN0YXRlbWVudHNgIG1vZHVsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBSZXBvc2l0b3J5L1N0b3JlYCBtb2R1bGVzIGluc3RlYWQgZm9yIG1hbmFnaW5nIGRhdGFiYXNlIGVudGl0aWVzIGFuZCBvcGVyYXRpb25zLlxuICogOjo6XG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gKipTUUwgR2VuZXJhdGlvbioqOiBHZW5lcmF0ZXMgU1FMIHN0YXRlbWVudHMgZm9yIGNvbW1vbiBkYXRhYmFzZSBvcGVyYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBPUk0gZGVmaW5pdGlvbi5cbiAqIC0gKipEaWFsZWN0IFN1cHBvcnQqKjogU3VwcG9ydHMgbXVsdGlwbGUgU1FMIGRpYWxlY3RzIHRocm91Z2ggdGhlIHVzZSBvZiBhIGBTUUxCdWlsZGVyYCwgYWxsb3dpbmcgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkaWZmZXJlbnQgZGF0YWJhc2UgZW5naW5lcy5cbiAqIC0gKipPUk0gQWJzdHJhY3Rpb24qKjogQWxsb3dzIGRldmVsb3BlcnMgdG8gd29yayB3aXRoIGhpZ2gtbGV2ZWwgT1JNIGRlZmluaXRpb25zIHdpdGhvdXQgbmVlZGluZyB0byB3cml0ZSByYXcgU1FMLCBpbXByb3ZpbmcgcHJvZHVjdGl2aXR5IGFuZCByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZCBvZiBTUUwgc3ludGF4IGVycm9ycy5cbiAqIC0gKipGbGV4aWJsZSBRdWVyeWluZyoqOiBQcm92aWRlcyBtZXRob2RzIGZvciBidWlsZGluZyBjb21wbGV4IHF1ZXJpZXMgd2l0aCBmaWx0ZXJpbmcsIHNvcnRpbmcsIHBhZ2luYXRpb24sIGFuZCBzZWxlY3Rpb24gb2Ygc3BlY2lmaWMgZmllbGRzLlxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIE1hbmFnaW5nIGRhdGFiYXNlIHNjaGVtYSBhbmQgcGVyZm9ybWluZyBDUlVEIG9wZXJhdGlvbnMgYmFzZWQgb24gYW4gT1JNIGRlZmluaXRpb24uXG4gKiAtIEFic3RyYWN0aW5nIGRhdGFiYXNlIGludGVyYWN0aW9ucyB0byBhbGxvdyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlIGFuZCBwb3RlbnRpYWwgZGF0YWJhc2UgZW5naW5lIGNoYW5nZXMgaW4gdGhlIGZ1dHVyZS5cbiAqIC0gR2VuZXJhdGluZyBTUUwgc3RhdGVtZW50cyBkeW5hbWljYWxseSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBsb2dpYyBhbmQgdXNlciBpbnB1dCB3aGlsZSBlbnN1cmluZyBwcm9wZXIgaGFuZGxpbmcgb2YgcGFyYW1ldGVycyBhbmQgcHJldmVudGluZyBTUUwgaW5qZWN0aW9uLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IE9STVN0YXRlbWVudHMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2RiXCI7XG4gKiBjb25zdCB1c2VyT1JNID0ge1xuICogICB0YWJsZTogXCJVc2Vyc1wiLFxuICogICBwcm9wZXJ0aWVzOiBbXG4gKiAgICAge25hbWU6IFwiaWRcIiwgY29sdW1uOiBcIklEXCIsIHR5cGU6IFwiSU5URUdFUlwiLCBtYW5kYXRvcnk6IHRydWV9LFxuICogICAgIHtuYW1lOiBcIm5hbWVcIiwgY29sdW1uOiBcIk5BTUVcIiwgdHlwZTogXCJWQVJDSEFSXCIsIGxlbmd0aDogMjU1fSxcbiAqICAgICB7bmFtZTogXCJlbWFpbFwiLCBjb2x1bW46IFwiRU1BSUxcIiwgdHlwZTogXCJWQVJDSEFSXCIsIGxlbmd0aDogMjU1LCB1bmlxdWU6IHRydWV9XG4gKiAgIF0sXG4gKiAgIGdldFByaW1hcnlLZXk6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzWzBdOyB9LFxuICogICBnZXRNYW5kYXRvcnlQcm9wZXJ0aWVzOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMucHJvcGVydGllcy5maWx0ZXIocCA9PiBwLm1hbmRhdG9yeSk7IH0sXG4gKiAgIGdldFVuaXF1ZVByb3BlcnRpZXM6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAudW5pcXVlKTsgfVxuICogfTtcbiAqIGNvbnN0IG9ybVN0YXRlbWVudHMgPSBuZXcgT1JNU3RhdGVtZW50cyh1c2VyT1JNKTtcbiAqIC8vIENyZWF0ZSB0YWJsZSBTUUxcbiAqIGNvbnN0IGNyZWF0ZVRhYmxlU1FMID0gb3JtU3RhdGVtZW50cy5jcmVhdGVUYWJsZSgpLnRvU3RyaW5nKCk7XG4gKiBjb25zb2xlLmxvZyhjcmVhdGVUYWJsZVNRTCk7IC8vIE91dHB1dDogU1FMIHN0YXRlbWVudCBmb3IgY3JlYXRpbmcgdGhlIFVzZXJzIHRhYmxlXG4gKiAvLyBJbnNlcnQgcmVjb3JkIFNRTFxuICogY29uc3QgaW5zZXJ0U1FMID0gb3JtU3RhdGVtZW50cy5pbnNlcnQoKS50b1N0cmluZygpO1xuICogY29uc29sZS5sb2coaW5zZXJ0U1FMKTsgLy8gT3V0cHV0OiBTUUwgc3RhdGVtZW50IGZvciBpbnNlcnRpbmcgYSByZWNvcmQgaW50byB0aGUgVXNlcnMgdGFibGVcbiAqIC8vIFVwZGF0ZSByZWNvcmQgU1FMXG4gKiBjb25zdCB1cGRhdGVTUUwgPSBvcm1TdGF0ZW1lbnRzLnVwZGF0ZSh7IGlkOiAxLCBuYW1lOiBcIkFsaWNlXCIsIGVtYWlsOiBcIlxuICogY29uc29sZS5sb2codXBkYXRlU1FMKTsgLy8gT3V0cHV0OiBTUUwgc3RhdGVtZW50IGZvciB1cGRhdGluZyBhIHJlY29yZCBpbiB0aGUgVXNlcnMgdGFibGVcbiAqIC8vIERlbGV0ZSByZWNvcmQgU1FMXG4gKiBjb25zdCBkZWxldGVTUUwgPSBvcm1TdGF0ZW1lbnRzLmRlbGV0ZSgpLnRvU3RyaW5nKCk7XG4gKiBjb25zb2xlLmxvZyhkZWxldGVTUUwpOyAvLyBPdXRwdXQ6IFNRTCBzdGF0ZW1lbnQgZm9yIGRlbGV0aW5nIGEgcmVjb3JkIGZyb20gdGhlIFVzZXJzIHRhYmxlXG4gKiAvLyBRdWVyeSByZWNvcmRzIFNRTFxuICogY29uc3QgcXVlcnlTUUwgPSBvcm1TdGF0ZW1lbnRzLmxpc3QoeyAkZmlsdGVyOiB7IG5hbWU6IFwiQWxpY2VcIiB9LCAkc29ydDogXCJlbWFpbFwiLCAkbGltaXQ6IDEwIH0pLnRvU3RyaW5nKCk7XG4gKiBjb25zb2xlLmxvZyhxdWVyeVNRTCk7IC8vIE91dHB1dDogU1FMIHN0YXRlbWVudCBmb3IgcXVlcnlpbmcgcmVjb3JkcyBmcm9tIHRoZSBVc2VycyB0YWJsZSB3aXRoIGZpbHRlcmluZywgc29ydGluZywgYW5kIHBhZ2luYXRpb25cbiAqIGBgYFxuICovXG5cInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5pbXBvcnQgeyBDcmVhdGVUYWJsZUJ1aWxkZXIsIERlbGV0ZUJ1aWxkZXIsIERyb3BUYWJsZUJ1aWxkZXIsIEluc2VydEJ1aWxkZXIsIFNlbGVjdEJ1aWxkZXIsIFNRTEJ1aWxkZXIsIFVwZGF0ZUJ1aWxkZXIgfSBmcm9tIFwiLi9zcWxcIjtcbmltcG9ydCB7IENvbm5lY3Rpb24gfSBmcm9tIFwiLi9kYXRhYmFzZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gT1JNU3RhdGVtZW50cyhvcm0sIGRpYWxlY3Q6IFNRTEJ1aWxkZXIpIHtcblx0dGhpcy4kbG9nID0gTG9nZ2luZy5nZXRMb2dnZXIoJ2RiLmRhby5vcm1zdGF0ZW1lbnRzJyk7XG5cdHRoaXMub3JtID0gb3JtO1xuXHR0aGlzLm9ybS50YWJsZU5hbWUgPSB0aGlzLm9ybS50YWJsZTtcblx0dGhpcy5vcm0ucHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdHByb3BlcnR5LmNvbHVtbk5hbWUgPSBwcm9wZXJ0eS5jb2x1bW47XG5cdH0pO1xuXHR0aGlzLmRpYWxlY3QgPSBkaWFsZWN0IHx8IFNRTEJ1aWxkZXIuZ2V0RGlhbGVjdCgpO1xufTtcbk9STVN0YXRlbWVudHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT1JNU3RhdGVtZW50cztcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuY3JlYXRlVGFibGUgPSBmdW5jdGlvbiAoKTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0Y29uc3QgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC5jcmVhdGUoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG5cblx0dGhpcy5vcm0ucHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdGNvbnN0IGNvbHVtbiA9IHRoaXMub3JtLnRvQ29sdW1uKHByb3BlcnR5KTtcblx0XHRpZiAocHJvcGVydHkudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnVkFSQ0hBUicpIHtcblx0XHRcdGlmIChwcm9wZXJ0eS5sZW5ndGggPT09IHVuZGVmaW5lZClcblx0XHRcdFx0cHJvcGVydHkubGVuZ3RoID0gMjU1O1xuXHRcdFx0YnVpbGRlci5jb2x1bW5WYXJjaGFyKGNvbHVtbi5uYW1lLCBwcm9wZXJ0eS5sZW5ndGgsIGNvbHVtbi5wcmltYXJ5S2V5ID09PSAndHJ1ZScsIGNvbHVtbi5udWxsYWJsZSA9PT0gJ3RydWUnLCBwcm9wZXJ0eS51bmlxdWUpO1xuXHRcdH0gZWxzZSBpZiAocHJvcGVydHkudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQ0hBUicpIHtcblx0XHRcdGlmIChwcm9wZXJ0eS5sZW5ndGggPT09IHVuZGVmaW5lZClcblx0XHRcdFx0cHJvcGVydHkubGVuZ3RoID0gMTtcblx0XHRcdHByb3BlcnR5Lmxlbmd0aCA9IHBhcnNlSW50KHByb3BlcnR5Lmxlbmd0aCwgMTApO1xuXHRcdFx0YnVpbGRlci5jb2x1bW5DaGFyKGNvbHVtbi5uYW1lLCBwcm9wZXJ0eS5sZW5ndGgsIGNvbHVtbi5wcmltYXJ5S2V5ID09PSAndHJ1ZScsIGNvbHVtbi5udWxsYWJsZSA9PT0gJ3RydWUnLCBwcm9wZXJ0eS51bmlxdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRidWlsZGVyLmNvbHVtbihjb2x1bW4ubmFtZSwgY29sdW1uLnR5cGUsIGNvbHVtbi5wcmltYXJ5S2V5ID09PSAndHJ1ZScsIGNvbHVtbi5udWxsYWJsZSA9PT0gJ3RydWUnLCBwcm9wZXJ0eS51bmlxdWUpO1xuXHRcdH1cblx0fS5iaW5kKHRoaXMpKTtcblxuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbk9STVN0YXRlbWVudHMucHJvdG90eXBlLmRyb3BUYWJsZSA9IGZ1bmN0aW9uICgpOiBEcm9wVGFibGVCdWlsZGVyIHtcblx0cmV0dXJuIHRoaXMuZGlhbGVjdC5kcm9wKCkudGFibGUodGhpcy5vcm0udGFibGUpO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24gKCk6IEluc2VydEJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0Lmluc2VydCgpLmludG8odGhpcy5vcm0udGFibGUpO1xuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0YnVpbGRlci5jb2x1bW4ocHJvcGVydHkuY29sdW1uKS52YWx1ZSgnPycsIHByb3BlcnR5KTtcblx0fSk7XG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGVudGl0eSk6IFVwZGF0ZUJ1aWxkZXIge1xuXHRpZiAoIWVudGl0eSlcblx0XHR0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogZW50aXR5WycgKyBlbnRpdHkgKyAnXScpO1xuXG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3QudXBkYXRlKCkudGFibGUodGhpcy5vcm0udGFibGUpO1xuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMoZW50aXR5KS5pbmRleE9mKHByb3BlcnR5Lm5hbWUpID4gLTEgJiYgKCFwcm9wZXJ0eS5hbGxvd2VkT3BzIHx8IHByb3BlcnR5LmFsbG93ZWRPcHMuaW5kZXhPZigndXBkYXRlJykgPiAtMSk7XG5cdH0pLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0aWYgKCFwcm9wZXJ0eS5pZClcblx0XHRcdGJ1aWxkZXIuc2V0KHByb3BlcnR5LmNvbHVtbiwgJz8nLCBwcm9wZXJ0eSk7XG5cdH0pO1xuXHRjb25zdCBwa1Byb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpO1xuXHRidWlsZGVyLndoZXJlKHBrUHJvcGVydHkuY29sdW1uICsgJz0/JywgW3BrUHJvcGVydHldKTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZVtcImRlbGV0ZVwiXSA9IE9STVN0YXRlbWVudHMucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICgpOiBEZWxldGVCdWlsZGVyIHtcblx0Y29uc3QgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC5kZWxldGUoKS5mcm9tKHRoaXMub3JtLnRhYmxlKTtcblx0aWYgKGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0bGV0IGZpbHRlckZpZWxkTmFtZXMgPSBhcmd1bWVudHNbMF07XG5cdFx0aWYgKGZpbHRlckZpZWxkTmFtZXMuY29uc3RydWN0b3IgIT09IEFycmF5KVxuXHRcdFx0ZmlsdGVyRmllbGROYW1lcyA9IFtmaWx0ZXJGaWVsZE5hbWVzXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlckZpZWxkTmFtZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoZmlsdGVyRmllbGROYW1lc1tpXSk7XG5cdFx0XHRpZiAoIXByb3BlcnR5KVxuXHRcdFx0XHR0aHJvdyBFcnJvcignVW5rbm93biBwcm9wZXJ0eSBuYW1lOiAnICsgZmlsdGVyRmllbGROYW1lc1tpXSArIFwiIGluICRmaWx0ZXJcIik7XG5cdFx0XHRidWlsZGVyLndoZXJlKHByb3BlcnR5LmNvbHVtbiArIFwiPT9cIiwgW3Byb3BlcnR5XSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChwYXJhbXMpOiBTZWxlY3RCdWlsZGVyIHtcblx0bGV0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3Quc2VsZWN0KCk7XG5cdGlmIChwYXJhbXMgIT09IHVuZGVmaW5lZCAmJiBwYXJhbXMuc2VsZWN0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBzZWxlY3RlZEZpZWxkcyA9IHBhcmFtcy5zZWxlY3QuY29uc3RydWN0b3IgPT09IEFycmF5ID8gcGFyYW1zLnNlbGVjdCA6IFtwYXJhbXMuc2VsZWN0XTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkRmllbGRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMub3JtLmdldFByb3BlcnR5KHNlbGVjdGVkRmllbGRzW2ldKTtcblx0XHRcdGlmICghcHJvcGVydHkpXG5cdFx0XHRcdHRocm93IEVycm9yKCdVbmtub3duIGZpZWxkIG5hbWUgWycgKyBzZWxlY3RlZEZpZWxkc1tpXSArICddIGluICRzZWxlY3QnKTtcblx0XHRcdGJ1aWxkZXIgPSBidWlsZGVyLmNvbHVtbihwcm9wZXJ0eS5jb2x1bW4pO1xuXHRcdH1cblx0fVxuXHRidWlsZGVyID0gYnVpbGRlci5mcm9tKHRoaXMub3JtLnRhYmxlKVxuXHRcdC53aGVyZSh0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkuY29sdW1uICsgXCI9P1wiLCBbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpXSk7XG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuY291bnQgPSBmdW5jdGlvbiAoc2V0dGluZ3MpOiBTZWxlY3RCdWlsZGVyIHtcblx0Y29uc3QgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC5zZWxlY3QoKS5jb2x1bW4oJ0NPVU5UKCopJykuZnJvbSh0aGlzLm9ybS50YWJsZSk7XG5cdGFkZEZpbHRlcih0aGlzLm9ybSwgYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbk9STVN0YXRlbWVudHMucHJvdG90eXBlLmxpc3QgPSBmdW5jdGlvbiAoc2V0dGluZ3MpOiBTZWxlY3RCdWlsZGVyIHtcblx0bGV0IGk7XG5cdHNldHRpbmdzID0gc2V0dGluZ3MgfHwge307XG5cdGNvbnN0IHNvcnQgPSBzZXR0aW5ncy4kc29ydCB8fCBzZXR0aW5ncy5zb3J0O1xuXHRjb25zdCBvcmRlciA9IHNldHRpbmdzLiRvcmRlciB8fCBzZXR0aW5ncy5vcmRlcjtcblx0Y29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBzZXR0aW5ncy4kc2VsZWN0IHx8IHNldHRpbmdzLnNlbGVjdDtcblxuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LnNlbGVjdCgpLmZyb20odGhpcy5vcm0udGFibGUpO1xuXG5cdC8vYWRkIHNlbGVjdGVkIGZpZWxkcyBpZiBhbnlcblx0aWYgKHNlbGVjdGVkRmllbGRzKSB7XG5cdFx0Zm9yIChpID0gMDsgaSA8IHNlbGVjdGVkRmllbGRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMub3JtLmdldFByb3BlcnR5KHNlbGVjdGVkRmllbGRzW2ldKTtcblx0XHRcdGlmICghcHJvcGVydHkpXG5cdFx0XHRcdHRocm93IEVycm9yKCdVbmtub3duIGZpZWxkIG5hbWUgWycgKyBzZWxlY3RlZEZpZWxkc1tpXSArICddIGluICRzZWxlY3QnKTtcblx0XHRcdGJ1aWxkZXIuY29sdW1uKHByb3BlcnR5LmNvbHVtbik7XG5cdFx0fVxuXHR9XG5cblx0Ly9hZGQgd2hlcmUgY2xhdXNlIGZvciBhbnkgZmllbGRzXG5cdGFkZEZpbHRlcih0aGlzLm9ybSwgYnVpbGRlciwgc2V0dGluZ3MpO1xuXG5cdC8vIFRPRE86IFRoZSBmb2xsb3dpbmcgY29kZSBtaWdodCBub3QgYmUgbmVlZGVkIGFueW1vcmVcblx0Y29uc3QgcHJvcGVydHlEZWZpbml0aW9ucyA9IHRoaXMub3JtLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdGZvciAodmFyIHNldHRpbmdOYW1lIGluIHNldHRpbmdzKSB7XG5cdFx0XHRpZiAoc2V0dGluZ05hbWUgPT09IHByb3BlcnR5Lm5hbWUpXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xuXHRpZiAocHJvcGVydHlEZWZpbml0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Zm9yIChpID0gMDsgaSA8IHByb3BlcnR5RGVmaW5pdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGRlZiA9IHByb3BlcnR5RGVmaW5pdGlvbnNbaV07XG5cdFx0XHRpZiAoc2V0dGluZ3M/LiRmaWx0ZXIgJiYgc2V0dGluZ3MuJGZpbHRlcj8uaW5kZXhPZihkZWYubmFtZSkgPiAtMSkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGRlZi5jb2x1bW4gKyAnIExJS0UgPycsIFtkZWZdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHZhbCA9IHNldHRpbmdzW2RlZi5uYW1lXTtcblx0XHRcdFx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgSVMgTlVMTCcsIFtkZWZdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpZiAodmFsLmluZGV4T2YgJiYgdmFsLmluZGV4T2YoJz4nKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRidWlsZGVyLndoZXJlKGRlZi5jb2x1bW4gKyAnID4gPycsIFtkZWZdKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHZhbC5pbmRleE9mICYmIHZhbC5pbmRleE9mKCc8JykgPiAtMSkge1xuXHRcdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJyA8ID8nLCBbZGVmXSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICc9PycsIFtkZWZdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoc29ydCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFyIF9zb3J0ID0gc29ydC5zcGxpdCgnLCcpO1xuXHRcdGZvciAoaSA9IDA7IGkgPCBfc29ydC5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IF9vcmRlciA9IHRydWU7Ly9BU0Ncblx0XHRcdC8vVE9ETzogY2hhbmdlIHRvIGJlIGFibGUgdG8gb3JkZXIgcGVyIHNvcnQgcHJvcGVydHlcblx0XHRcdGlmIChvcmRlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmIChbJ2FzYycsICdkZXNjJ10uaW5kZXhPZihTdHJpbmcob3JkZXIpLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcblx0XHRcdFx0XHRfb3JkZXIgPSBvcmRlci50b0xvd2VyQ2FzZSgpID09PSAnZGVzYycgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLm9ybS5nZXRQcm9wZXJ0eShfc29ydFtpXSkpIHtcblx0XHRcdFx0YnVpbGRlci5vcmRlcih0aGlzLm9ybS5nZXRQcm9wZXJ0eShfc29ydFtpXSkuY29sdW1uLCBfb3JkZXIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcignQ29sdW1uOiAnICsgX3NvcnRbaV0gKyAnIG5vdCBwcmVzZW50IGluICcgKyBKU09OLnN0cmluZ2lmeSh0aGlzLm9ybSkpO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHR9XG5cdGFkZExpbWl0KGJ1aWxkZXIsIHNldHRpbmdzKTtcblx0YWRkT2Zmc2V0KGJ1aWxkZXIsIHNldHRpbmdzKTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5mdW5jdGlvbiBhZGRGaWx0ZXIob3JtLCBidWlsZGVyLCBzZXR0aW5ncykge1xuXHQvL2FkZCB3aGVyZSBjbGF1c2UgZm9yIGFueSBmaWVsZHNcblx0aWYgKHNldHRpbmdzPy4kZmlsdGVyKSB7XG5cdFx0Y29uc3QgZXF1YWxzUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmVxdWFscyA/PyBbXSk7XG5cdFx0Y29uc3Qgbm90RXF1YWxzUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLm5vdEVxdWFscyA/PyBbXSk7XG5cdFx0Y29uc3QgY29udGFpbnNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuY29udGFpbnMgPz8gW10pO1xuXHRcdGNvbnN0IGdyZWF0ZXJUaGFuUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmdyZWF0ZXJUaGFuID8/IFtdKTtcblx0XHRjb25zdCBsZXNzVGhhblByb3BlcnRpZXNLZXlzID0gT2JqZWN0LmtleXMoc2V0dGluZ3MuJGZpbHRlci5sZXNzVGhhbiA/PyBbXSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmdyZWF0ZXJUaGFuT3JFcXVhbCA/PyBbXSk7XG5cdFx0Y29uc3QgbGVzc1RoYW5PckVxdWFsUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmxlc3NUaGFuT3JFcXVhbCA/PyBbXSk7XG5cblx0XHRjb25zdCBlcXVhbHNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gZXF1YWxzUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3Qgbm90RXF1YWxzUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IG5vdEVxdWFsc1Byb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGNvbnRhaW5zUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGNvbnRhaW5zUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5Qcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gZ3JlYXRlclRoYW5Qcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBsZXNzVGhhblByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBsZXNzVGhhblByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGdyZWF0ZXJUaGFuT3JFcXVhbFByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBncmVhdGVyVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gbGVzc1RoYW5PckVxdWFsUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cblx0XHRlcXVhbHNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IHNldHRpbmdzLiRmaWx0ZXIuZXF1YWxzW2UubmFtZV07XG5cdFx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGUuY29sdW1uICsgJyBJUyBOVUxMJywgW2VdKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdFx0YnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gSU4gKCR7dmFsdWUubWFwKHYgPT4gJz8nKS5qb2luKCcsICcpfSlgLCBbZV0pXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSA9ID9gLCBbZV0pXG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bm90RXF1YWxzUHJvcGVydGllcy5mb3JFYWNoKGUgPT4ge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSBzZXR0aW5ncy4kZmlsdGVyLm5vdEVxdWFsc1tlLm5hbWVdO1xuXHRcdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0YnVpbGRlci53aGVyZShlLmNvbHVtbiArICcgSVMgTk9UIE5VTEwnLCBbZV0pO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBOT1QgSU4gKCR7dmFsdWUubWFwKHYgPT4gJz8nKS5qb2luKCcsICcpfSlgLCBbZV0pXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSAhPSA/YCwgW2VdKVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGNvbnRhaW5zUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gTElLRSA/YCwgW2VdKSk7XG5cdFx0Z3JlYXRlclRoYW5Qcm9wZXJ0aWVzLmZvckVhY2goZSA9PiBidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSA+ID9gLCBbZV0pKTtcblx0XHRsZXNzVGhhblByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IDwgP2AsIFtlXSkpO1xuXHRcdGdyZWF0ZXJUaGFuT3JFcXVhbFByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID49ID9gLCBbZV0pKTtcblx0XHRsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiBidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSA8PSA/YCwgW2VdKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gYWRkTGltaXQoYnVpbGRlciwgc2V0dGluZ3MpIHtcblx0Y29uc3QgbGltaXQgPSBzZXR0aW5ncy4kbGltaXQgPz8gc2V0dGluZ3MubGltaXQ7XG5cdGlmIChsaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0YnVpbGRlci5saW1pdChwYXJzZUludChsaW1pdCwgMTApKTtcblx0fVxufVxuXG5mdW5jdGlvbiBhZGRPZmZzZXQoYnVpbGRlciwgc2V0dGluZ3MpIHtcblx0Y29uc3Qgb2Zmc2V0ID0gc2V0dGluZ3MuJG9mZnNldCA/PyBzZXR0aW5ncy5vZmZzZXQ7XG5cdGlmIChvZmZzZXQgIT09IHVuZGVmaW5lZCkge1xuXHRcdGJ1aWxkZXIub2Zmc2V0KHBhcnNlSW50KG9mZnNldCwgMTApKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKG9ybSwgY29ubmVjdGlvbj86IENvbm5lY3Rpb24pIHtcblx0bGV0IGRpYWxlY3Q7XG5cdGlmIChjb25uZWN0aW9uKSB7XG5cdFx0ZGlhbGVjdCA9IFNRTEJ1aWxkZXIuZ2V0RGlhbGVjdChjb25uZWN0aW9uKTtcblx0fVxuXG5cdGNvbnN0IHN0bW50cyA9IG5ldyBPUk1TdGF0ZW1lbnRzKG9ybSwgZGlhbGVjdCk7XG5cdHJldHVybiBzdG1udHM7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeURBLGlCQUF3QjtBQUN4QixpQkFBNkg7QUFHdEgsU0FBUyxjQUFjLEtBQUssU0FBcUI7QUFDdkQsT0FBSyxPQUFPLG1CQUFRLFVBQVUsc0JBQXNCO0FBQ3BELE9BQUssTUFBTTtBQUNYLE9BQUssSUFBSSxZQUFZLEtBQUssSUFBSTtBQUM5QixPQUFLLElBQUksV0FBVyxRQUFRLFNBQVUsVUFBVTtBQUMvQyxhQUFTLGFBQWEsU0FBUztBQUFBLEVBQ2hDLENBQUM7QUFDRCxPQUFLLFVBQVUsV0FBVyxzQkFBVyxXQUFXO0FBQ2pEO0FBQUM7QUFDRCxjQUFjLFVBQVUsY0FBYztBQUV0QyxjQUFjLFVBQVUsY0FBYyxXQUFnQztBQUNyRSxRQUFNLFVBQVUsS0FBSyxRQUFRLE9BQU8sRUFBRSxNQUFNLEtBQUssSUFBSSxLQUFLO0FBRTFELE9BQUssSUFBSSxXQUFXLFFBQVEsU0FBVSxVQUFVO0FBQy9DLFVBQU0sU0FBUyxLQUFLLElBQUksU0FBUyxRQUFRO0FBQ3pDLFFB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UUFBUSxVQUFVLFFBQVc7QUFDMUMsZ0JBQVEsTUFBTSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQUEsTUFDN0MsV0FBVyxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ2hDLGdCQUFRLE1BQU0sR0FBRyxFQUFFLE1BQU0sWUFBWSxNQUFNLElBQUksT0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQzVFLE9BQU87QUFDTixnQkFBUSxNQUFNLEdBQUcsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUN0QztBQUFBLElBQ0QsQ0FBQztBQUNELHVCQUFtQixRQUFRLE9BQUssUUFBUSxNQUFNLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSwwQkFBc0IsUUFBUSxPQUFLLFFBQVEsTUFBTSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsdUJBQW1CLFFBQVEsT0FBSyxRQUFRLE1BQU0sR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLGlDQUE2QixRQUFRLE9BQUssUUFBUSxNQUFNLEdBQUcsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRiw4QkFBMEIsUUFBUSxPQUFLLFFBQVEsTUFBTSxHQUFHLEVBQUUsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxFQUM5RTtBQUNEO0FBRUEsU0FBUyxTQUFTLFNBQVMsVUFBVTtBQUNwQyxRQUFNLFFBQVEsU0FBUyxVQUFVLFNBQVM7QUFDMUMsTUFBSSxVQUFVLFFBQVc7QUFDeEIsWUFBUSxNQUFNLFNBQVMsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUNsQztBQUNEO0FBRUEsU0FBUyxVQUFVLFNBQVMsVUFBVTtBQUNyQyxRQUFNLFNBQVMsU0FBUyxXQUFXLFNBQVM7QUFDNUMsTUFBSSxXQUFXLFFBQVc7QUFDekIsWUFBUSxPQUFPLFNBQVMsUUFBUSxFQUFFLENBQUM7QUFBQSxFQUNwQztBQUNEO0FBRU8sU0FBUyxPQUFPLEtBQUssWUFBeUI7QUFDcEQsTUFBSTtBQUNKLE1BQUksWUFBWTtBQUNmLGNBQVUsc0JBQVcsV0FBVyxVQUFVO0FBQUEsRUFDM0M7QUFFQSxRQUFNLFNBQVMsSUFBSSxjQUFjLEtBQUssT0FBTztBQUM3QyxTQUFPO0FBQ1I7QUFBQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -109,4 +109,4 @@ class Procedure {
109
109
  if (typeof module !== "undefined") {
110
110
  module.exports = Procedure;
111
111
  }
112
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3Byb2NlZHVyZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBBUEkgUHJvY2VkdXJlXG4gKlxuICovXG5pbXBvcnQgeyBVcGRhdGUgfSBmcm9tIFwiLi91cGRhdGVcIjtcbmltcG9ydCB7IERhdGFiYXNlIH0gZnJvbSBcIi4vZGF0YWJhc2VcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFByb2NlZHVyZVBhcmFtZXRlclxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgYSBzdHJ1Y3R1cmVkIHBhcmFtZXRlciBmb3IgcHJvY2VkdXJlIGNhbGxzLCBhbGxvd2luZyB0aGUgdHlwZSBcbiAqIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCB3aGVuIHRoZSBuYXR1cmFsIEphdmFTY3JpcHQgdHlwZSBtYXBwaW5nIGlzIGluc3VmZmljaWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZWR1cmVQYXJhbWV0ZXIge1xuXHR0eXBlOiBzdHJpbmc7IC8vIFJlbW92ZWQgcmVhZG9ubHkgdG8gYWxsb3cgYXNzaWdubWVudCBkdXJpbmcgcGFyYW1ldGVyIG1hcHBpbmdcblx0dmFsdWU6IGFueTsgICAvLyBSZW1vdmVkIHJlYWRvbmx5XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9jZWR1cmUge1xuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBEREwvRE1MIHN0YXRlbWVudCB0byBjcmVhdGUgb3IgbW9kaWZ5IGEgc3RvcmVkIHByb2NlZHVyZSB3aXRob3V0IHJlc3VsdHMuXG4gICAgICogKiBAcGFyYW0ge3N0cmluZ30gc3FsIFRoZSBTUUwgc3RhdGVtZW50IChlLmcuLCBDUkVBVEUgUFJPQ0VEVVJFKS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGFzb3VyY2VOYW1lXSBPcHRpb25hbCBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoc3FsOiBzdHJpbmcsIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFVwZGF0ZS5leGVjdXRlKHNxbCwgW10sIGRhdGFzb3VyY2VOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIHN0b3JlZCBwcm9jZWR1cmUgY2FsbCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldChzKS5cbiAgICAgKiAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgVGhlIGNhbGxhYmxlIHN0YXRlbWVudCAoZS5nLiwge0NBTEwgbXlfcHJvY2VkdXJlKD8sID8pfSkuXG4gICAgICogQHBhcmFtIHsoc3RyaW5nIHwgbnVtYmVyIHwgUHJvY2VkdXJlUGFyYW1ldGVyKVtdfSBbcGFyYW1ldGVycz1bXV0gQW4gYXJyYXkgb2YgcGFyYW1ldGVycy4gUHJpbWl0aXZlcyAoc3RyaW5nL251bWJlcikgYXJlIGF1dG9tYXRpY2FsbHkgdHlwZWQuIFVzZSBQcm9jZWR1cmVQYXJhbWV0ZXIgZm9yIGV4cGxpY2l0IHR5cGVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YXNvdXJjZU5hbWVdIE9wdGlvbmFsIG5hbWUgb2YgdGhlIGRhdGEgc291cmNlIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7YW55W119IEFuIGFycmF5IG9mIEpTT04gb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBzZXQocykuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiAoc3RyaW5nIHwgbnVtYmVyIHwgUHJvY2VkdXJlUGFyYW1ldGVyKVtdID0gW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogYW55W10ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICBsZXQgY29ubmVjdGlvbiA9IG51bGw7XG4gICAgICAgIGxldCBjYWxsYWJsZVN0YXRlbWVudCA9IG51bGw7XG4gICAgICAgIGxldCByZXN1bHRTZXQgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgaGFzTW9yZVJlc3VsdHMgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29ubmVjdGlvbiA9IERhdGFiYXNlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQgPSBjb25uZWN0aW9uLnByZXBhcmVDYWxsKHNxbCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZFBhcmFtZXRlcnM6IFByb2NlZHVyZVBhcmFtZXRlcltdID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDEuIElmIHRoZSBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IGFuZCBsb29rcyBsaWtlIGEgUHJvY2VkdXJlUGFyYW1ldGVyLCB1c2UgaXQgZGlyZWN0bHkuXG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlciAmJiB0eXBlb2YgcGFyYW1ldGVyID09PSBcIm9iamVjdFwiICYmICd0eXBlJyBpbiBwYXJhbWV0ZXIgJiYgJ3ZhbHVlJyBpbiBwYXJhbWV0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlciBhcyBQcm9jZWR1cmVQYXJhbWV0ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gMi4gSGFuZGxlIHByaW1pdGl2ZSB0eXBlcyAoc3RyaW5nIG9yIG51bWJlcikgYnkgZXhwbGljaXRseSBuYXJyb3dpbmcgdGhlIHR5cGUuXG4gICAgICAgICAgICAgICAgbGV0IHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcInN0cmluZ1wiO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtZXRlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBpcyBjb3JyZWN0bHkgbmFycm93ZWQgdG8gJ251bWJlcicgaGVyZSwgcmVzb2x2aW5nIHRoZSBUUzIzNjIgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwYXJhbWV0ZXIgJSAxID09PSAwID8gXCJpbnRcIiA6IFwiZG91YmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW1ldGVyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRocm93IGVycm9yIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgcmVjb2duaXplZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2NlZHVyZSBDYWxsIC0gVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIHR5cGUgWyR7dHlwZW9mIHBhcmFtZXRlcn1dYCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIHR5cGUgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcHBlZFBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcHBlZFBhcmFtZXRlcnNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXRTdHJpbmcoaSArIDEsIG1hcHBlZFBhcmFtZXRlcnNbaV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnRcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQuc2V0SW50KGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZmxvYXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LnNldEZsb2F0KGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZG91YmxlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXREb3VibGUoaSArIDEsIG1hcHBlZFBhcmFtZXRlcnNbaV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0U2V0ID0gY2FsbGFibGVTdGF0ZW1lbnQuZXhlY3V0ZVF1ZXJ5KCk7XG5cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChKU09OLnBhcnNlKHJlc3VsdFNldC50b0pzb24oKSkpO1xuICAgICAgICAgICAgICAgIGhhc01vcmVSZXN1bHRzID0gY2FsbGFibGVTdGF0ZW1lbnQuZ2V0TW9yZVJlc3VsdHMoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTW9yZVJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0U2V0LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFNldCA9IGNhbGxhYmxlU3RhdGVtZW50LmdldFJlc3VsdFNldCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKGhhc01vcmVSZXN1bHRzKVxuXG4gICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5jbG9zZSgpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdFNldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0U2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FsbGFibGVTdGF0ZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFByb2NlZHVyZTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxvQkFBdUI7QUFDdkIsc0JBQXlCO0FBWWxCLE1BQU0sVUFBVTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9uQixPQUFjLE9BQU8sS0FBYSxnQkFBK0I7QUFDN0QseUJBQU8sUUFBUSxLQUFLLENBQUMsR0FBRyxjQUFjO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsT0FBYyxRQUFRLEtBQWEsYUFBdUQsQ0FBQyxHQUFHLGdCQUFnQztBQUMxSCxVQUFNLFNBQVMsQ0FBQztBQUVoQixRQUFJLGFBQWE7QUFDakIsUUFBSSxvQkFBb0I7QUFDeEIsUUFBSSxZQUFZO0FBRWhCLFFBQUk7QUFDQSxVQUFJLGlCQUFpQjtBQUVyQixtQkFBYSx5QkFBUyxjQUFjLGNBQWM7QUFDbEQsMEJBQW9CLFdBQVcsWUFBWSxHQUFHO0FBRTlDLFlBQU0sbUJBQXlDLFdBQVcsSUFBSSxDQUFDLGNBQWM7QUFHekUsWUFBSSxhQUFhLE9BQU8sY0FBYyxZQUFZLFVBQVUsYUFBYSxXQUFXLFdBQVc7QUFDM0YsaUJBQU87QUFBQSxRQUNYO0FBR0EsWUFBSTtBQUNKLFlBQUk7QUFFSixZQUFJLE9BQU8sY0FBYyxVQUFVO0FBQy9CLGlCQUFPO0FBQ1Asa0JBQVE7QUFBQSxRQUNaLFdBQVcsT0FBTyxjQUFjLFVBQVU7QUFFdEMsaUJBQU8sWUFBWSxNQUFNLElBQUksUUFBUTtBQUNyQyxrQkFBUTtBQUFBLFFBQ1osT0FBTztBQUVILGdCQUFNLElBQUksTUFBTSxnREFBZ0QsT0FBTyxTQUFTLEdBQUc7QUFBQSxRQUN2RjtBQUVBLGVBQU8sRUFBRSxPQUFPLEtBQUs7QUFBQSxNQUN6QixDQUFDO0FBRUQsZUFBUyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUFLO0FBQzlDLGdCQUFRLGlCQUFpQixDQUFDLEVBQUUsTUFBTTtBQUFBLFVBQzlCLEtBQUs7QUFDRCw4QkFBa0IsVUFBVSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxLQUFLO0FBQzVEO0FBQUEsVUFDSixLQUFLO0FBQUEsVUFDTCxLQUFLO0FBQUEsVUFDTCxLQUFLO0FBQ0QsOEJBQWtCLE9BQU8sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsS0FBSztBQUN6RDtBQUFBLFVBQ0osS0FBSztBQUNELDhCQUFrQixTQUFTLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUs7QUFDM0Q7QUFBQSxVQUNKLEtBQUs7QUFDRCw4QkFBa0IsVUFBVSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxLQUFLO0FBQzVEO0FBQUEsUUFDUjtBQUFBLE1BQ0o7QUFDQSxrQkFBWSxrQkFBa0IsYUFBYTtBQUUzQyxTQUFHO0FBQ0MsZUFBTyxLQUFLLEtBQUssTUFBTSxVQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLHlCQUFpQixrQkFBa0IsZUFBZTtBQUNsRCxZQUFJLGdCQUFnQjtBQUNoQixvQkFBVSxNQUFNO0FBQ2hCLHNCQUFZLGtCQUFrQixhQUFhO0FBQUEsUUFDL0M7QUFBQSxNQUNKLFNBQVM7QUFFVCx3QkFBa0IsTUFBTTtBQUFBLElBQzVCLFVBQUU7QUFDRSxVQUFJLGFBQWEsTUFBTTtBQUNuQixrQkFBVSxNQUFNO0FBQUEsTUFDcEI7QUFDQSxVQUFJLHFCQUFxQixNQUFNO0FBQzNCLDBCQUFrQixNQUFNO0FBQUEsTUFDNUI7QUFDQSxVQUFJLGNBQWMsTUFBTTtBQUNwQixtQkFBVyxNQUFNO0FBQUEsTUFDckI7QUFBQSxJQUNKO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDSjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
112
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3Byb2NlZHVyZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGRiL3Byb2NlZHVyZVxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2RiXG4gKiBAbmFtZSBQcm9jZWR1cmVcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBQcm9jZWR1cmVgIGNsYXNzIGZvciBleGVjdXRpbmcgc3RvcmVkIHByb2NlZHVyZXMgaW4gYSBkYXRhYmFzZS4gSXQgYWxsb3dzIGZvciBib3RoIHRoZSBjcmVhdGlvbiBvZiBzdG9yZWQgcHJvY2VkdXJlcyB1c2luZyBEREwgc3RhdGVtZW50cyBhbmQgdGhlIGV4ZWN1dGlvbiBvZiBleGlzdGluZyBzdG9yZWQgcHJvY2VkdXJlcyB3aXRoIHBhcmFtZXRlciBzdXBwb3J0LiBUaGUgYGV4ZWN1dGVgIG1ldGhvZCBjYW4gaGFuZGxlIG11bHRpcGxlIHJlc3VsdCBzZXRzIHJldHVybmVkIGJ5IGEgc3RvcmVkIHByb2NlZHVyZSBhbmQgcmV0dXJucyB0aGVtIGFzIGFuIGFycmF5IG9mIEpTT04gb2JqZWN0cy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogLSAqKkNyZWF0ZSBQcm9jZWR1cmVzKio6IFVzZSB0aGUgYGNyZWF0ZWAgbWV0aG9kIHRvIGV4ZWN1dGUgRERMIHN0YXRlbWVudHMgZm9yIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBzdG9yZWQgcHJvY2VkdXJlcy5cbiAqIC0gKipFeGVjdXRlIFByb2NlZHVyZXMqKjogVGhlIGBleGVjdXRlYCBtZXRob2QgYWxsb3dzIHlvdSB0byBjYWxsIHN0b3JlZCBwcm9jZWR1cmVzIHdpdGggcGFyYW1ldGVycyBhbmQgaGFuZGxlcyBtdWx0aXBsZSByZXN1bHQgc2V0cy5cbiAqIC0gKipQYXJhbWV0ZXIgTWFwcGluZyoqOiBTdXBwb3J0cyBib3RoIHByaW1pdGl2ZSBwYXJhbWV0ZXJzIChzdHJpbmcgYW5kIG51bWJlcikgYW5kIHN0cnVjdHVyZWQgcGFyYW1ldGVycyB1c2luZyB0aGUgYFByb2NlZHVyZVBhcmFtZXRlcmAgaW50ZXJmYWNlIGZvciBleHBsaWNpdCB0eXBlIGRlZmluaXRpb25zLlxuICogLSAqKlJlc291cmNlIE1hbmFnZW1lbnQqKjogRW5zdXJlcyBwcm9wZXIgY2xvc2luZyBvZiBkYXRhYmFzZSByZXNvdXJjZXMgKGNvbm5lY3Rpb25zLCBzdGF0ZW1lbnRzLCByZXN1bHQgc2V0cykgdG8gcHJldmVudCBsZWFrcy5cbiAqIFxuICogIyMjIFVzZSBDYXNlc1xuICogLSBNYW5hZ2luZyBjb21wbGV4IGRhdGFiYXNlIG9wZXJhdGlvbnMgZW5jYXBzdWxhdGVkIGluIHN0b3JlZCBwcm9jZWR1cmVzLCBhbGxvd2luZyBmb3IgY2xlYW5lciBhcHBsaWNhdGlvbiBjb2RlIGFuZCBpbXByb3ZlZCBwZXJmb3JtYW5jZS5cbiAqIC0gSGFuZGxpbmcgbXVsdGlwbGUgcmVzdWx0IHNldHMgcmV0dXJuZWQgYnkgc3RvcmVkIHByb2NlZHVyZXMsIHdoaWNoIGlzIGNvbW1vbiBpbiBzY2VuYXJpb3MgbGlrZSByZXBvcnRpbmcgb3IgYmF0Y2ggcHJvY2Vzc2luZy5cbiAqIC0gUHJvdmlkaW5nIGEgZmxleGlibGUgcGFyYW1ldGVyIG1hcHBpbmcgbWVjaGFuaXNtIHRoYXQgY2FuIGFjY29tbW9kYXRlIHZhcmlvdXMgZGF0YSB0eXBlcyBhbmQgc3RydWN0dXJlcyB3aGVuIGNhbGxpbmcgc3RvcmVkIHByb2NlZHVyZXMuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgUHJvY2VkdXJlIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYlwiO1xuICogXG4gKiAvLyBDcmVhdGUgYSBzdG9yZWQgcHJvY2VkdXJlXG4gKiBjb25zdCBjcmVhdGVTcWwgPSBgXG4gKiAgIENSRUFURSBQUk9DRURVUkUgR2V0VXNlckJ5SWQoSU4gdXNlcklkIElOVClcbiAqICAgQkVHSU5cbiAqICAgICBTRUxFQ1QgKiBGUk9NIFVzZXJzIFdIRVJFIGlkID0gdXNlcklkO1xuICogICBFTkRcbiAqIGA7XG4gKiBQcm9jZWR1cmUuY3JlYXRlKGNyZWF0ZVNxbCk7XG4gKiBcbiAqIC8vIEV4ZWN1dGUgdGhlIHN0b3JlZCBwcm9jZWR1cmUgd2l0aCBhIHBhcmFtZXRlclxuICogY29uc3QgcmVzdWx0ID0gUHJvY2VkdXJlLmV4ZWN1dGUoXCJ7Q0FMTCBHZXRVc2VyQnlJZCg/KX1cIiwgWzFdKTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdCk7IC8vIE91dHB1dDogW3sgaWQ6IDEsIG5hbWU6IFwiQWxpY2VcIiwgZW1haWw6IFwiYWxpY2VAZXhhbXBsZS5jb21cIiB9XVxuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgVXBkYXRlIH0gZnJvbSBcIi4vdXBkYXRlXCI7XG5pbXBvcnQgeyBEYXRhYmFzZSB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbi8qKlxuICogQGludGVyZmFjZSBQcm9jZWR1cmVQYXJhbWV0ZXJcbiAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGEgc3RydWN0dXJlZCBwYXJhbWV0ZXIgZm9yIHByb2NlZHVyZSBjYWxscywgYWxsb3dpbmcgdGhlIHR5cGUgXG4gKiB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgd2hlbiB0aGUgbmF0dXJhbCBKYXZhU2NyaXB0IHR5cGUgbWFwcGluZyBpcyBpbnN1ZmZpY2llbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VkdXJlUGFyYW1ldGVyIHtcblx0dHlwZTogc3RyaW5nOyAvLyBSZW1vdmVkIHJlYWRvbmx5IHRvIGFsbG93IGFzc2lnbm1lbnQgZHVyaW5nIHBhcmFtZXRlciBtYXBwaW5nXG5cdHZhbHVlOiBhbnk7ICAgLy8gUmVtb3ZlZCByZWFkb25seVxufVxuXG5leHBvcnQgY2xhc3MgUHJvY2VkdXJlIHtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGEgRERML0RNTCBzdGF0ZW1lbnQgdG8gY3JlYXRlIG9yIG1vZGlmeSBhIHN0b3JlZCBwcm9jZWR1cmUgd2l0aG91dCByZXN1bHRzLlxuICAgICAqICogQHBhcmFtIHtzdHJpbmd9IHNxbCBUaGUgU1FMIHN0YXRlbWVudCAoZS5nLiwgQ1JFQVRFIFBST0NFRFVSRSkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhc291cmNlTmFtZV0gT3B0aW9uYWwgbmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHNxbDogc3RyaW5nLCBkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBVcGRhdGUuZXhlY3V0ZShzcWwsIFtdLCBkYXRhc291cmNlTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBzdG9yZWQgcHJvY2VkdXJlIGNhbGwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBzZXQocykuXG4gICAgICogKiBAcGFyYW0ge3N0cmluZ30gc3FsIFRoZSBjYWxsYWJsZSBzdGF0ZW1lbnQgKGUuZy4sIHtDQUxMIG15X3Byb2NlZHVyZSg/LCA/KX0pLlxuICAgICAqIEBwYXJhbSB7KHN0cmluZyB8IG51bWJlciB8IFByb2NlZHVyZVBhcmFtZXRlcilbXX0gW3BhcmFtZXRlcnM9W11dIEFuIGFycmF5IG9mIHBhcmFtZXRlcnMuIFByaW1pdGl2ZXMgKHN0cmluZy9udW1iZXIpIGFyZSBhdXRvbWF0aWNhbGx5IHR5cGVkLiBVc2UgUHJvY2VkdXJlUGFyYW1ldGVyIGZvciBleHBsaWNpdCB0eXBlcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGFzb3VyY2VOYW1lXSBPcHRpb25hbCBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSB0byB1c2UuXG4gICAgICogQHJldHVybnMge2FueVtdfSBBbiBhcnJheSBvZiBKU09OIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgc2V0KHMpLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZXhlY3V0ZShzcWw6IHN0cmluZywgcGFyYW1ldGVyczogKHN0cmluZyB8IG51bWJlciB8IFByb2NlZHVyZVBhcmFtZXRlcilbXSA9IFtdLCBkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBudWxsO1xuICAgICAgICBsZXQgY2FsbGFibGVTdGF0ZW1lbnQgPSBudWxsO1xuICAgICAgICBsZXQgcmVzdWx0U2V0ID0gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGhhc01vcmVSZXN1bHRzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBEYXRhYmFzZS5nZXRDb25uZWN0aW9uKGRhdGFzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50ID0gY29ubmVjdGlvbi5wcmVwYXJlQ2FsbChzcWwpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBtYXBwZWRQYXJhbWV0ZXJzOiBQcm9jZWR1cmVQYXJhbWV0ZXJbXSA9IHBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAxLiBJZiB0aGUgcGFyYW1ldGVyIGlzIGFuIG9iamVjdCBhbmQgbG9va3MgbGlrZSBhIFByb2NlZHVyZVBhcmFtZXRlciwgdXNlIGl0IGRpcmVjdGx5LlxuICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIgJiYgdHlwZW9mIHBhcmFtZXRlciA9PT0gXCJvYmplY3RcIiAmJiAndHlwZScgaW4gcGFyYW1ldGVyICYmICd2YWx1ZScgaW4gcGFyYW1ldGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXIgYXMgUHJvY2VkdXJlUGFyYW1ldGVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIDIuIEhhbmRsZSBwcmltaXRpdmUgdHlwZXMgKHN0cmluZyBvciBudW1iZXIpIGJ5IGV4cGxpY2l0bHkgbmFycm93aW5nIHRoZSB0eXBlLlxuICAgICAgICAgICAgICAgIGxldCB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtZXRlciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJhbWV0ZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVyID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgaXMgY29ycmVjdGx5IG5hcnJvd2VkIHRvICdudW1iZXInIGhlcmUsIHJlc29sdmluZyB0aGUgVFMyMzYyIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICB0eXBlID0gcGFyYW1ldGVyICUgMSA9PT0gMCA/IFwiaW50XCIgOiBcImRvdWJsZVwiO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtZXRlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaHJvdyBlcnJvciBpZiB0aGUgcGFyYW1ldGVyIGlzIG5vdCBhIHJlY29nbml6ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm9jZWR1cmUgQ2FsbCAtIFVuc3VwcG9ydGVkIHBhcmFtZXRlciB0eXBlIFske3R5cGVvZiBwYXJhbWV0ZXJ9XWApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCB0eXBlIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBwZWRQYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChtYXBwZWRQYXJhbWV0ZXJzW2ldLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQuc2V0U3RyaW5nKGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaW50XCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LnNldEludChpICsgMSwgbWFwcGVkUGFyYW1ldGVyc1tpXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZsb2F0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXRGbG9hdChpICsgMSwgbWFwcGVkUGFyYW1ldGVyc1tpXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRvdWJsZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQuc2V0RG91YmxlKGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFNldCA9IGNhbGxhYmxlU3RhdGVtZW50LmV4ZWN1dGVRdWVyeSgpO1xuXG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goSlNPTi5wYXJzZShyZXN1bHRTZXQudG9Kc29uKCkpKTtcbiAgICAgICAgICAgICAgICBoYXNNb3JlUmVzdWx0cyA9IGNhbGxhYmxlU3RhdGVtZW50LmdldE1vcmVSZXN1bHRzKCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc01vcmVSZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFNldC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRTZXQgPSBjYWxsYWJsZVN0YXRlbWVudC5nZXRSZXN1bHRTZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChoYXNNb3JlUmVzdWx0cylcblxuICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQuY2xvc2UoKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHRTZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFNldC5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbGxhYmxlU3RhdGVtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBQcm9jZWR1cmU7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0NBLG9CQUF1QjtBQUN2QixzQkFBeUI7QUFZbEIsTUFBTSxVQUFVO0FB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
@@ -127,4 +127,4 @@ class Query {
127
127
  if (typeof module !== "undefined") {
128
128
  module.exports = Query;
129
129
  }
130
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3F1ZXJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBRdWVyeVxuICpcbiAqL1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcbiAgXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIixcbik7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gd3JhcCBjb21wbGV4IG9yIHNwZWNpZmljIHZhbHVlcyBmb3Igbm9uLW5hbWVkIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVkUXVlcnlQYXJhbWV0ZXIgPSB7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG59O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyBhIHBhcmFtZXRlciBmb3IgYSBuYW1lZCBxdWVyeSAodXNpbmcgcGxhY2Vob2xkZXJzIGxpa2UgOnBhcmFtTmFtZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRRdWVyeVBhcmFtZXRlciB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBzcGVjaWZ5IGZvcm1hdHRpbmcgb3B0aW9ucyBmb3IgdGhlIHF1ZXJ5IHJlc3VsdCBzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGluZ1BhcmFtZXRlciB7XG4gIHJlYWRvbmx5IGRhdGVGb3JtYXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZXhlY3V0aW5nIHBhcmFtZXRlcml6ZWQgU1FMIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnkge1xuICAvKipcbiAgICogRXhlY3V0ZXMgYSBzdGFuZGFyZCBTUUwgcXVlcnkgd2l0aCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMuIFBhcmFtZXRlcnMgYXJyYXkgc3VwcG9ydHMgcHJpbWl0aXZlcyBlLmcuIGBbMSwgJ0pvaG4nLCAzNC41Nl1gIG9yIG9iamVjdHMgaW4gZm9ybWF0IGVpdGhlciBgeyd0eXBlJzonW0RBVEFfVFlQRV0nLCAndmFsdWUnOltWQUxVRV19YCBvciBgeyduYW1lJzonW3N0cmluZ10nLCAndHlwZSc6J1tEQVRBX1RZUEVdJywgJ3ZhbHVlJzpbVkFMVUVdfWAgZS5nLiBgW3sndHlwZSc6J0NIQVInLCAndmFsdWUnOidJU0JOMTkyMDIzMjMzMjInfV1gIG9yIGBbeyduYW1lJzogJ29yZGVyX251bWJlcicsICd0eXBlJzonQ0hBUicsICd2YWx1ZSc6J0lTQk4xOTIwMjMyMzMyMid9XWBcbiAgICpcbiAgICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUuXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyAocHJpbWl0aXZlcywgVHlwZWRRdWVyeVBhcmFtZXRlciBvciBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMpIHRvIHJlcGxhY2UgJz8nIG9yIDpwYXJhbU5hbWUgcGxhY2Vob2xkZXJzLlxuICAgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG4gICAqIEBwYXJhbSBmb3JtYXR0aW5nIE9wdGlvbmFsIGZvcm1hdHRpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHJlc3VsdCBzZXQgKGUuZy4sIGRhdGUgZm9ybWF0KS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4ZWN1dGUoXG4gICAgc3FsOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdIHwgc3RyaW5nLFxuICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuICAgIGZvcm1hdHRpbmc/OiBGb3JtYXR0aW5nUGFyYW1ldGVyLFxuICApOiBhbnlbXSB7XG4gICAgY29uc3QgZm9ybWF0dGluZ0pzb24gPSBmb3JtYXR0aW5nID8gSlNPTi5zdHJpbmdpZnkoZm9ybWF0dGluZykgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgYXJyOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuICAgICAgYXJyID0gW107XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcbiAgICAgICAgfVxuICAgICAgICBhcnIgPSBwYXJzZWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuICAgICAgYXJyID0gcGFyYW1ldGVycztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuICAgIH1cblxuICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShzcWwsIG51bGwsIGRhdGFzb3VyY2VOYW1lLCBmb3JtYXR0aW5nSnNvbik7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0ID0gYXJyWzBdO1xuXG4gICAgLy8gTmFtZWRRdWVyeVBhcmFtZXRlciAoaGFzIG5hbWUgKyB0eXBlKVxuICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJuYW1lXCIgaW4gZmlyc3QgJiYgXCJ0eXBlXCIgaW4gZmlyc3QpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5TmFtZWQoXG4gICAgICAgIHNxbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoYXJyKSxcbiAgICAgICAgZGF0YXNvdXJjZU5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIC8vIFR5cGVkUXVlcnlQYXJhbWV0ZXIgKGhhcyB0eXBlLCBubyBuYW1lKVxuICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJ0eXBlXCIgaW4gZmlyc3QgJiYgIShcIm5hbWVcIiBpbiBmaXJzdCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5KFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICAgICBmb3JtYXR0aW5nSnNvblxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG4gICAgfVxuXG4gICAgLy8gUHJpbWl0aXZlIGFycmF5XG4gICAgaWYgKFxuICAgICAgYXJyLmV2ZXJ5KFxuICAgICAgICAodikgPT5cbiAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgIHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG4gICAgICAgICAgdiBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHQgIEFycmF5LmlzQXJyYXkodilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5KFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICAgICBmb3JtYXR0aW5nSnNvblxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSB3aXRoIG5hbWVkIHBhcmFtZXRlcnMgKGUuZy4sIFwiOm5hbWVcIiwgXCI6aWRcIikuXG4gICAqXG4gICAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMuXG4gICAqIEBwYXJhbSBkYXRhc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UgKG9wdGlvbmFsKS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4ZWN1dGVOYW1lZChcbiAgICBzcWw6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzPzogTmFtZWRRdWVyeVBhcmFtZXRlcltdLFxuICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuICApOiBhbnlbXSB7XG4gICAgLy8gU2VyaWFsaXplIHRoZSBhcnJheSBvZiBuYW1lZCBwYXJhbWV0ZXJzIGZvciB0aGUgSmF2YSBmYWNhZGVcbiAgICBjb25zdCBwYXJhbXNKc29uID0gcGFyYW1ldGVycyA/IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gVGhlIERhdGFiYXNlRmFjYWRlIHJldHVybnMgYSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0IHNldFxuICAgIGNvbnN0IHJlc3VsdHNldCA9IERhdGFiYXNlRmFjYWRlLnF1ZXJ5TmFtZWQoXG4gICAgICBzcWwsXG4gICAgICBwYXJhbXNKc29uLFxuICAgICAgZGF0YXNvdXJjZU5hbWUsXG4gICAgKTtcblxuICAgIC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZyBiYWNrIGludG8gYSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHNcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICB9XG4gIFxuICAvKipcbiAgICAgKiBFeHBvcnRzIGEgU1FMIHF1ZXJ5IHdpdGggbmFtZWQgcGFyYW1ldGVycyAoZS5nLiwgXCI6bmFtZVwiLCBcIjppZFwiKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIE5hbWVkUXVlcnlQYXJhbWV0ZXIgb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEBwYXJhbSBmaWxlTmFtZSBUaGUgZmlsZSBuYW1lIHBhdHRlcm4uXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHJlc3VsdHMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBleHBvcnRDc3YoXG4gICAgICBzcWw6IHN0cmluZyxcblx0ICBwYXJhbWV0ZXJzPzogTmFtZWRRdWVyeVBhcmFtZXRlcltdLFxuICAgICAgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcsXG5cdCAgZmlsZU5hbWU/OiBzdHJpbmdcbiAgICApIHtcblx0XHQvLyBTZXJpYWxpemUgdGhlIGFycmF5IG9mIG5hbWVkIHBhcmFtZXRlcnMgZm9yIHRoZSBKYXZhIGZhY2FkZVxuXHRcdGNvbnN0IHBhcmFtc0pzb24gPSBwYXJhbWV0ZXJzID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykgOiB1bmRlZmluZWQ7XG5cdFx0XHRcblx0ICAgIERhdGFiYXNlRmFjYWRlLmV4cG9ydFRvQ3N2KFxuXHQgICAgICAgIHNxbCxcblx0XHRcdHBhcmFtc0pzb24sXG5cdCAgICAgICAgZGF0YXNvdXJjZU5hbWUsXG5cdFx0XHRmaWxlTmFtZVxuXHQgICAgICApO1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICBtb2R1bGUuZXhwb3J0cyA9IFF1ZXJ5O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0EsTUFBTSxpQkFBaUIsS0FBSztBQUFBLEVBQzFCO0FBQ0Y7QUE2Qk8sTUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVakIsT0FBYyxRQUNaLEtBQ0EsWUFDQSxnQkFDQSxZQUNPO0FBQ1AsVUFBTSxpQkFBaUIsYUFBYSxLQUFLLFVBQVUsVUFBVSxJQUFJO0FBRWpFLFFBQUksTUFBYSxDQUFDO0FBRWxCLFFBQUksY0FBYyxNQUFNO0FBQ3RCLFlBQU0sQ0FBQztBQUFB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
130
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3F1ZXJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZGIvcXVlcnlcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9kYlxuICogQG5hbWUgUXVlcnlcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBRdWVyeWAgY2xhc3MgZm9yIGV4ZWN1dGluZyBwYXJhbWV0ZXJpemVkIFNRTCBTRUxFQ1Qgc3RhdGVtZW50cyBhZ2FpbnN0IGEgZGF0YWJhc2UgaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGBRdWVyeWAgY2xhc3Mgc3VwcG9ydHMgYm90aCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgKHVzaW5nICc/JyBwbGFjZWhvbGRlcnMpIGFuZCBuYW1lZCBwYXJhbWV0ZXJzICh1c2luZyAnOnBhcmFtTmFtZScgcGxhY2Vob2xkZXJzKSwgYWxsb3dpbmcgZm9yIGZsZXhpYmxlIHF1ZXJ5IGNvbnN0cnVjdGlvbiBhbmQgZXhlY3V0aW9uLiBJdCBhbHNvIGluY2x1ZGVzIG9wdGlvbnMgZm9yIGZvcm1hdHRpbmcgdGhlIHJlc3VsdCBzZXQsIHN1Y2ggYXMgc3BlY2lmeWluZyBkYXRlIGZvcm1hdHMuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gKipQYXJhbWV0ZXJpemVkIFF1ZXJpZXMqKjogU3VwcG9ydHMgYm90aCBwb3NpdGlvbmFsIGFuZCBuYW1lZCBwYXJhbWV0ZXJzIGZvciBzZWN1cmUgYW5kIGVmZmljaWVudCBxdWVyeSBleGVjdXRpb24uXG4gKiAtICoqUmVzdWx0IEZvcm1hdHRpbmcqKjogQWxsb3dzIGZvciBjdXN0b20gZm9ybWF0dGluZyBvZiBxdWVyeSByZXN1bHRzLCBpbmNsdWRpbmcgZGF0ZSBmb3JtYXR0aW5nIG9wdGlvbnMuXG4gKiAtICoqSlNPTiBJbnB1dCBTdXBwb3J0Kio6IEFjY2VwdHMgcGFyYW1ldGVycyBhcyBKU09OIHN0cmluZ3Mgb3IgSmF2YVNjcmlwdCBhcnJheXMsIHByb3ZpZGluZyBmbGV4aWJpbGl0eSBpbiBob3cgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIHRoZSBxdWVyeS5cbiAqIC0gKipFcnJvciBIYW5kbGluZyoqOiBQcm92aWRlcyByb2J1c3QgZXJyb3IgaGFuZGxpbmcgZm9yIGludmFsaWQgcGFyYW1ldGVyIGZvcm1hdHMgYW5kIEpTT04gcGFyc2luZyBpc3N1ZXMuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gRXhlY3V0aW5nIGNvbXBsZXggU1FMIHF1ZXJpZXMgd2l0aCBkeW5hbWljIHBhcmFtZXRlcnMgaW4gYSBzZWN1cmUgbWFubmVyIHRvIHByZXZlbnQgU1FMIGluamVjdGlvbi5cbiAqIC0gRm9ybWF0dGluZyBxdWVyeSByZXN1bHRzIGFjY29yZGluZyB0byBzcGVjaWZpYyByZXF1aXJlbWVudHMsIHN1Y2ggYXMgZGF0ZSBmb3JtYXRzIG9yIGN1c3RvbSBkYXRhIHRyYW5zZm9ybWF0aW9ucy5cbiAqIC0gSW50ZWdyYXRpbmcgd2l0aCBvdGhlciBtb2R1bGVzIHRoYXQgZ2VuZXJhdGUgcGFyYW1ldGVycyBpbiBKU09OIGZvcm1hdCwgZW5hYmxpbmcgc2VhbWxlc3MgZGF0YSBmbG93IHdpdGhpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2RiXCI7XG4gKiBcbiAqIC8vIFBvc2l0aW9uYWwgcGFyYW1ldGVycyBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQxID0gUXVlcnkuZXhlY3V0ZShcIlNFTEVDVCAqIEZST00gVXNlcnMgV0hFUkUgYWdlID4gP1wiLCBbMzBdKTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdDEpOyAvLyBPdXRwdXQ6IFt7IGlkOiAxLCBuYW1lOiBcIkFsaWNlXCIsIGFnZTogMzUgfSwgeyBpZDogMiwgbmFtZTogXCJCb2JcIiwgYWdlOiA0MCB9XVxuICogYGBgXG4gKi9cblxuY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXG4gIFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmRiLkRhdGFiYXNlRmFjYWRlXCIsXG4pO1xuXG4vKipcbiAqIEludGVyZmFjZSB1c2VkIHRvIHdyYXAgY29tcGxleCBvciBzcGVjaWZpYyB2YWx1ZXMgZm9yIG5vbi1uYW1lZCBxdWVyaWVzLlxuICovXG5leHBvcnQgdHlwZSBUeXBlZFF1ZXJ5UGFyYW1ldGVyID0ge1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufTtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVmaW5pbmcgYSBwYXJhbWV0ZXIgZm9yIGEgbmFtZWQgcXVlcnkgKHVzaW5nIHBsYWNlaG9sZGVycyBsaWtlIDpwYXJhbU5hbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkUXVlcnlQYXJhbWV0ZXIge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IGFueTtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gc3BlY2lmeSBmb3JtYXR0aW5nIG9wdGlvbnMgZm9yIHRoZSBxdWVyeSByZXN1bHQgc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRpbmdQYXJhbWV0ZXIge1xuICByZWFkb25seSBkYXRlRm9ybWF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgc3RhdGljIG1ldGhvZHMgZm9yIGV4ZWN1dGluZyBwYXJhbWV0ZXJpemVkIFNRTCBTRUxFQ1Qgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXJ5IHtcbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgc3RhbmRhcmQgU1FMIHF1ZXJ5IHdpdGggcG9zaXRpb25hbCBwYXJhbWV0ZXJzLiBQYXJhbWV0ZXJzIGFycmF5IHN1cHBvcnRzIHByaW1pdGl2ZXMgZS5nLiBgWzEsICdKb2huJywgMzQuNTZdYCBvciBvYmplY3RzIGluIGZvcm1hdCBlaXRoZXIgYHsndHlwZSc6J1tEQVRBX1RZUEVdJywgJ3ZhbHVlJzpbVkFMVUVdfWAgb3IgYHsnbmFtZSc6J1tzdHJpbmddJywgJ3R5cGUnOidbREFUQV9UWVBFXScsICd2YWx1ZSc6W1ZBTFVFXX1gIGUuZy4gYFt7J3R5cGUnOidDSEFSJywgJ3ZhbHVlJzonSVNCTjE5MjAyMzIzMzIyJ31dYCBvciBgW3snbmFtZSc6ICdvcmRlcl9udW1iZXInLCAndHlwZSc6J0NIQVInLCAndmFsdWUnOidJU0JOMTkyMDIzMjMzMjInfV1gXG4gICAqXG4gICAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiB2YWx1ZXMgKHByaW1pdGl2ZXMsIFR5cGVkUXVlcnlQYXJhbWV0ZXIgb3IgTmFtZWRRdWVyeVBhcmFtZXRlciBvYmplY3RzKSB0byByZXBsYWNlICc/JyBvciA6cGFyYW1OYW1lIHBsYWNlaG9sZGVycy5cbiAgICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZSAob3B0aW9uYWwpLlxuICAgKiBAcGFyYW0gZm9ybWF0dGluZyBPcHRpb25hbCBmb3JtYXR0aW5nIHBhcmFtZXRlcnMgZm9yIHRoZSByZXN1bHQgc2V0IChlLmcuLCBkYXRlIGZvcm1hdCkuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBleGVjdXRlKFxuICAgIHNxbDogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSB8IHN0cmluZyxcbiAgICBkYXRhc291cmNlTmFtZT86IHN0cmluZyxcbiAgICBmb3JtYXR0aW5nPzogRm9ybWF0dGluZ1BhcmFtZXRlcixcbiAgKTogYW55W10ge1xuICAgIGNvbnN0IGZvcm1hdHRpbmdKc29uID0gZm9ybWF0dGluZyA/IEpTT04uc3RyaW5naWZ5KGZvcm1hdHRpbmcpIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IGFycjogYW55W10gPSBbXTtcblxuICAgIGlmIChwYXJhbWV0ZXJzID09IG51bGwpIHtcbiAgICAgIGFyciA9IFtdO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtZXRlcnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocGFyYW1ldGVycyk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcGFyYW1ldGVyIHN0cmluZyBtdXN0IHJlcHJlc2VudCBhIEpTT04gYXJyYXlcIik7XG4gICAgICAgIH1cbiAgICAgICAgYXJyID0gcGFyc2VkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEpTT04gcGFyYW1ldGVyczogXCIgKyBlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1ldGVycykpIHtcbiAgICAgIGFyciA9IHBhcmFtZXRlcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgbXVzdCBiZSBlaXRoZXIgYW4gYXJyYXkgb3IgYSBKU09OIHN0cmluZ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgcmVzdWx0c2V0ID0gRGF0YWJhc2VGYWNhZGUucXVlcnkoc3FsLCBudWxsLCBkYXRhc291cmNlTmFtZSwgZm9ybWF0dGluZ0pzb24pO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0c2V0KTtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdCA9IGFyclswXTtcblxuICAgIC8vIE5hbWVkUXVlcnlQYXJhbWV0ZXIgKGhhcyBuYW1lICsgdHlwZSlcbiAgICBpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG4gICAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeU5hbWVkKFxuICAgICAgICBzcWwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFyciksXG4gICAgICAgIGRhdGFzb3VyY2VOYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0c2V0KTtcbiAgICB9XG5cbiAgICAvLyBUeXBlZFF1ZXJ5UGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcbiAgICBpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG4gICAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShcbiAgICAgICAgc3FsLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShhcnIpLFxuICAgICAgICBkYXRhc291cmNlTmFtZSxcbiAgICAgICAgZm9ybWF0dGluZ0pzb25cbiAgICAgICk7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIC8vIFByaW1pdGl2ZSBhcnJheVxuICAgIGlmIChcbiAgICAgIGFyci5ldmVyeShcbiAgICAgICAgKHYpID0+XG4gICAgICAgICAgdHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuICAgICAgICAgIHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuICAgICAgICAgIHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0ICBBcnJheS5pc0FycmF5KHYpXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShcbiAgICAgICAgc3FsLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShhcnIpLFxuICAgICAgICBkYXRhc291cmNlTmFtZSxcbiAgICAgICAgZm9ybWF0dGluZ0pzb25cbiAgICAgICk7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuICB9XG5cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgd2l0aCBuYW1lZCBwYXJhbWV0ZXJzIChlLmcuLCBcIjpuYW1lXCIsIFwiOmlkXCIpLlxuICAgKlxuICAgKiBAcGFyYW0gc3FsIFRoZSBTUUwgcXVlcnkgdG8gZXhlY3V0ZS5cbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgQW4gb3B0aW9uYWwgYXJyYXkgb2YgTmFtZWRRdWVyeVBhcmFtZXRlciBvYmplY3RzLlxuICAgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBleGVjdXRlTmFtZWQoXG4gICAgc3FsOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IE5hbWVkUXVlcnlQYXJhbWV0ZXJbXSxcbiAgICBkYXRhc291cmNlTmFtZT86IHN0cmluZyxcbiAgKTogYW55W10ge1xuICAgIC8vIFNlcmlhbGl6ZSB0aGUgYXJyYXkgb2YgbmFtZWQgcGFyYW1ldGVycyBmb3IgdGhlIEphdmEgZmFjYWRlXG4gICAgY29uc3QgcGFyYW1zSnNvbiA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFRoZSBEYXRhYmFzZUZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdCBzZXRcbiAgICBjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeU5hbWVkKFxuICAgICAgc3FsLFxuICAgICAgcGFyYW1zSnNvbixcbiAgICAgIGRhdGFzb3VyY2VOYW1lLFxuICAgICk7XG5cbiAgICAvLyBQYXJzZSB0aGUgSlNPTiBzdHJpbmcgYmFjayBpbnRvIGEgSmF2YVNjcmlwdCBhcnJheSBvZiBvYmplY3RzXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0c2V0KTtcbiAgfVxuICBcbiAgLyoqXG4gICAgICogRXhwb3J0cyBhIFNRTCBxdWVyeSB3aXRoIG5hbWVkIHBhcmFtZXRlcnMgKGUuZy4sIFwiOm5hbWVcIiwgXCI6aWRcIikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3FsIFRoZSBTUUwgcXVlcnkgdG8gZXhlY3V0ZS5cbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMuXG4gICAgICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZSAob3B0aW9uYWwpLlxuXHQgKiBAcGFyYW0gZmlsZU5hbWUgVGhlIGZpbGUgbmFtZSBwYXR0ZXJuLlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZXhwb3J0Q3N2KFxuICAgICAgc3FsOiBzdHJpbmcsXG5cdCAgcGFyYW1ldGVycz86IE5hbWVkUXVlcnlQYXJhbWV0ZXJbXSxcbiAgICAgIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLFxuXHQgIGZpbGVOYW1lPzogc3RyaW5nXG4gICAgKSB7XG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBhcnJheSBvZiBuYW1lZCBwYXJhbWV0ZXJzIGZvciB0aGUgSmF2YSBmYWNhZGVcblx0XHRjb25zdCBwYXJhbXNKc29uID0gcGFyYW1ldGVycyA/IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpIDogdW5kZWZpbmVkO1xuXHRcdFx0XG5cdCAgICBEYXRhYmFzZUZhY2FkZS5leHBvcnRUb0Nzdihcblx0ICAgICAgICBzcWwsXG5cdFx0XHRwYXJhbXNKc29uLFxuXHQgICAgICAgIGRhdGFzb3VyY2VOYW1lLFxuXHRcdFx0ZmlsZU5hbWVcblx0ICAgICAgKTtcbiAgICB9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgbW9kdWxlLmV4cG9ydHMgPSBRdWVyeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZCQSxNQUFNLGlCQUFpQixLQUFLO0FBQUEsRUFDMUI7QUFDRjtBQTZCTyxNQUFNLE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVqQixPQUFjLFFBQ1osS0FDQSxZQUNBLGdCQUNBLFlBQ087QUFDUCxVQUFNLGlCQUFpQixhQUFhLEtBQUssVUFBVSxVQUFVLElBQUk7QUFFakUsUUFBSSxNQUFhLENBQUM7QUFFbEIsUUFBSSxjQUFjLE1BQU07QUFDdEIsWUFBTSxDQUFDO0FBQUEsSUFDVCxXQUFXLE9BQU8sZUFBZSxVQUFVO0FBQ3pDLFVBQUk7QUFDRixjQUFNLFNBQVMsS0FBSyxNQUFNLFVBQVU7QUFDcEMsWUFBSSxDQUFDLE1BQU0sUUFBUSxNQUFNLEdBQUc7QUFDMUIsZ0JBQU0sSUFBSSxNQUFNLG9EQUFvRDtBQUFBLFFBQ3RFO0FBQ0EsY0FBTTtBQUFBLE1BQ1IsU0FBUyxHQUFHO0FBQ1YsY0FBTSxJQUFJLE1BQU0sOEJBQThCLENBQUM7QUFBQSxNQUNqRDtBQUFBLElBQ0YsV0FBVyxNQUFNLFFBQVEsVUFBVSxHQUFHO0FBQ3BDLFlBQU07QUFBQSxJQUNSLE9BQU87QUFDTCxZQUFNLElBQUksTUFBTSxxREFBcUQ7QUFBQSxJQUN2RTtBQUVBLFFBQUksSUFBSSxXQUFXLEdBQUc7QUFDcEIsWUFBTSxZQUFZLGVBQWUsTUFBTSxLQUFLLE1BQU0sZ0JBQWdCLGNBQWM7QUFDaEYsYUFBTyxLQUFLLE1BQU0sU0FBUztBQUFBLElBQzdCO0FBRUEsVUFBTSxRQUFRLElBQUksQ0FBQztBQUduQixRQUFJLFNBQVMsT0FBTyxVQUFVLFlBQVksVUFBVSxTQUFTLFVBQVUsT0FBTztBQUM1RSxZQUFNLFlBQVksZUFBZTtBQUFBLFFBQy9CO0FBQUEsUUFDQSxLQUFLLFVBQVUsR0FBRztBQUFBLFFBQ2xCO0FBQUEsTUFDRjtBQUNBLGFBQU8sS0FBSyxNQUFNLFNBQVM7QUFBQSxJQUM3QjtBQUdBLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsRUFBRSxVQUFVLFFBQVE7QUFDL0UsWUFBTSxZQUFZLGVBQWU7QUFBQSxRQUMvQjtBQUFBLFFBQ0EsS0FBSyxVQUFVLEdBQUc7QUFBQSxRQUNsQjtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQ0EsYUFBTyxLQUFLLE1BQU0sU0FBUztBQUFBLElBQzdCO0FBR0EsUUFDRSxJQUFJO0FBQUEsTUFDRixDQUFDLE1BQ0MsT0FBTyxNQUFNLFlBQ2IsT0FBTyxNQUFNLFlBQ2IsT0FBTyxNQUFNLGFBQ2IsYUFBYSxRQUNuQixNQUFNLFFBQVEsQ0FBQztBQUFBLElBQ2IsR0FDQTtBQUNBLFlBQU0sWUFBWSxlQUFlO0FBQUEsUUFDL0I7QUFBQSxRQUNBLEtBQUssVUFBVSxHQUFHO0FBQUEsUUFDbEI7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUNBLGFBQU8sS0FBSyxNQUFNLFNBQVM7QUFBQSxJQUM3QjtBQUVBLFVBQU0sSUFBSSxNQUFNLG1DQUFtQyxLQUFLLFVBQVUsVUFBVSxDQUFDO0FBQUEsRUFDL0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXQSxPQUFjLGFBQ1osS0FDQSxZQUNBLGdCQUNPO0FBRVAsVUFBTSxhQUFhLGFBQWEsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUc3RCxVQUFNLFlBQVksZUFBZTtBQUFBLE1BQy9CO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBR0EsV0FBTyxLQUFLLE1BQU0sU0FBUztBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXRSxPQUFjLFVBQ1osS0FDSCxZQUNHLGdCQUNILFVBQ0c7QUFFSixVQUFNLGFBQWEsYUFBYSxLQUFLLFVBQVUsVUFBVSxJQUFJO0FBRTFELG1CQUFlO0FBQUEsTUFDWDtBQUFBLE1BQ047QUFBQSxNQUNNO0FBQUEsTUFDTjtBQUFBLElBQ0k7QUFBQSxFQUNIO0FBQ0o7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWpDLFNBQU8sVUFBVTtBQUNuQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -146,4 +146,4 @@ class Repository {
146
146
  async triggerEvent(_data) {
147
147
  }
148
148
  }
149
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHN0b3JlLCB0cmFuc2xhdG9yLCBFbnRpdHlDb25zdHJ1Y3RvciwgT3B0aW9ucyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGV2ZW50IHRyaWdnZXIgbWV0aG9kIGJlZm9yZS9hZnRlciBhbiBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RXZlbnQ8VD4ge1xuICAgIHJlYWRvbmx5IG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICAgIHJlYWRvbmx5IHRhYmxlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZW50aXR5OiBQYXJ0aWFsPFQ+OyAvLyBVc2UgUGFydGlhbDxUPiBmb3IgY3JlYXRlL2RlbGV0ZSB3aGVyZSBzb21lIGZpZWxkcyBtaWdodCBiZSBtaXNzaW5nXG4gICAgcmVhZG9ubHkga2V5OiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgfVxuICAgIHJlYWRvbmx5IHByZXZpb3VzRW50aXR5PzogVDtcbn1cblxuXG4vLyAtLS0gUmVwb3NpdG9yeSBDbGFzcyAtLS1cblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBkYXRhIGFjY2Vzcy9idXNpbmVzcyBsb2dpYywgd3JhcHBpbmcgdGhlIGBzdG9yZWAgQVBJLlxuICogSXQgaGFuZGxlcyBlbnRpdHkgbWV0YWRhdGEgbG9va3VwLCBDUlVEIG9wZXJhdGlvbnMsIHRyYW5zbGF0aW9uLCBhbmQgZXZlbnQgdHJpZ2dlcmluZy5cbiAqIEB0ZW1wbGF0ZSBUIFRoZSBlbnRpdHkgdHlwZSAobXVzdCBiZSBhbiBvYmplY3QpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVwb3NpdG9yeTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcihlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlDb25zdHJ1Y3RvciA9IGVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2FjaGVzIGVudGl0eSBtZXRhZGF0YSAobmFtZSwgdGFibGUsIGlkKSBvbnRvIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3Igc3RhdGljIGFjY2Vzc1xuXHRcdGlmICghdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZXMgc3RvcmUgbWV0aG9kcyByZXR1cm4gbm9uLW51bGwgc3RyaW5nc1xuXHRcdFx0dGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUgPSBzdG9yZS5nZXRFbnRpdHlOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lID0gc3RvcmUuZ2V0VGFibGVOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lID0gc3RvcmUuZ2V0SWROYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9jb2x1bW4gPSBzdG9yZS5nZXRJZENvbHVtbih0aGlzLmVudGl0eUNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RW50aXR5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2Ugbm9uLW51bGwgYXNzZXJ0aW9uIHNpbmNlIHRoZSBjb25zdHJ1Y3RvciBndWFyYW50ZWVzIHRoZXNlIHByb3BlcnRpZXMgZXhpc3RcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGVudGl0eV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWRDb2x1bW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX2NvbHVtbiE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYWxsIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kQWxsKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFRbXSB7XG4gICAgICAgIC8vIEFzc3VtZSBzdG9yZS5saXN0IHJldHVybnMgVFtdIGJ1dCB3ZSBleHBsaWNpdGx5IGNhc3QgaXQgdG8gVFtdXG4gICAgICAgIGNvbnN0IGxpc3Q6IFRbXSA9IHN0b3JlLmxpc3QodGhpcy5nZXRFbnRpdHlOYW1lKCksIG9wdGlvbnMpO1xuICAgICAgICB0cmFuc2xhdG9yLnRyYW5zbGF0ZUxpc3QobGlzdCwgb3B0aW9ucy5sYW5ndWFnZSwgdGhpcy5nZXRUYWJsZU5hbWUoKSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgc2luZ2xlIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRCeUlkKGlkOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBBc3N1bWUgc3RvcmUuZ2V0IHJldHVybnMgVCBvciBudWxsL3VuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IFQgfCBudWxsID0gc3RvcmUuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgIHRyYW5zbGF0b3IudHJhbnNsYXRlRW50aXR5KGVudGl0eSwgaWQsIG9wdGlvbnMubGFuZ3VhZ2UsIHRoaXMuZ2V0VGFibGVOYW1lKCkpO1xuICAgICAgICByZXR1cm4gZW50aXR5ID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBJRCAoc3RyaW5nIG9yIG51bWJlcikuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShlbnRpdHk6IFQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICBjb25zdCBpZCA9IHN0b3JlLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldElkTmFtZSgpLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5nZXRJZENvbHVtbigpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50aXR5LlxuICAgICAqIFRoZSBlbnRpdHkgbXVzdCBjb250YWluIHRoZSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZE5hbWUgPSB0aGlzLmdldElkTmFtZSgpO1xuICAgICAgICBjb25zdCBpZCA9IGVudGl0eVtpZE5hbWVdIGFzIChudW1iZXIgfCBzdHJpbmcpO1xuICAgICAgICBcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIGVudGl0eSBzdGF0ZSBiZWZvcmUgdXBkYXRlIGZvciB0aGUgZXZlbnQgcGF5bG9hZFxuICAgICAgICBjb25zdCBwcmV2aW91c0VudGl0eSA9IHRoaXMuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIHN0b3JlLnVwZGF0ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJ1cGRhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBwcmV2aW91c0VudGl0eTogcHJldmlvdXNFbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBpZE5hbWUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIGVudGl0eSBpZiB0aGUgSUQgaXMgbnVsbC91bmRlZmluZWQsIG90aGVyd2lzZSB1cGRhdGVzIGl0LlxuICAgICAqIElmIGFuIElEIGlzIHByb3ZpZGVkIGJ1dCB0aGUgZW50aXR5IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgaXQuXG4gICAgICogQHJldHVybnMgVGhlIGVudGl0eSdzIElELlxuICAgICAqL1xuICAgIHB1YmxpYyB1cHNlcnQoZW50aXR5OiBUKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaWQgPSBlbnRpdHlbdGhpcy5nZXRJZE5hbWUoKV07XG4gICAgICAgIFxuICAgICAgICAvLyBJZiBubyBJRCBpcyBwcmVzZW50LCBzYXZlIChjcmVhdGUpXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIElEIGlzIHByZXNlbnQsIGNoZWNrIGV4aXN0ZW5jZVxuICAgICAgICBjb25zdCBleGlzdGluZ0VudGl0eSA9IHN0b3JlLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nRW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSUQgZXhpc3RzLCBidXQgZW50aXR5IGRvZXMgbm90IC0+IHNhdmUgKGNyZWF0ZSB3aXRoIHByb3ZpZGVkIElEKVxuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFuIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBSZXRyaWV2ZSBlbnRpdHkgYmVmb3JlIHJlbW92YWwgZm9yIHRoZSBldmVudCBwYXlsb2FkXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHN0b3JlLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgc3RvcmUucmVtb3ZlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcImRlbGV0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0SWROYW1lKCksXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBzdG9yZS5jb3VudCh0aGlzLmdldEVudGl0eU5hbWUoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdGVjdGVkIG1ldGhvZCBpbnRlbmRlZCBmb3Igc3ViY2xhc3Mgb3ZlcnJpZGluZyBvciBpbnRlcm5hbCBldmVudCBoYW5kbGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdHJpZ2dlckV2ZW50KF9kYXRhOiBFbnRpdHlFdmVudDxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbXB0eSBib2R5IGFzIGluIHRoZSBvcmlnaW5hbCBjb2RlXG4gICAgfVxufVxu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
149
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBkYi9yZXBvc2l0b3J5XG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvZGJcbiAqIEBuYW1lIFJlcG9zaXRvcnlcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBhYnN0cmFjdCBgUmVwb3NpdG9yeWAgY2xhc3MgdGhhdCBzZXJ2ZXMgYXMgYSBiYXNlIGZvciBkYXRhIGFjY2VzcyBhbmQgYnVzaW5lc3MgbG9naWMgbGF5ZXJzIGluIHRoZSBEaXJpZ2libGUgZW52aXJvbm1lbnQuIFRoZSBgUmVwb3NpdG9yeWAgY2xhc3Mgd3JhcHMgdGhlIHVuZGVybHlpbmcgYHN0b3JlYCBBUEksIHByb3ZpZGluZyBhIHN0cnVjdHVyZWQgd2F5IHRvIHBlcmZvcm0gQ1JVRCBvcGVyYXRpb25zIG9uIGVudGl0aWVzIHdoaWxlIGFsc28gaGFuZGxpbmcgZW50aXR5IG1ldGFkYXRhLCB0cmFuc2xhdGlvbiwgYW5kIGV2ZW50IHRyaWdnZXJpbmcuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuZGVkIGJ5IHNwZWNpZmljIHJlcG9zaXRvcmllcyBmb3IgZGlmZmVyZW50IGVudGl0aWVzLCBhbGxvd2luZyBmb3IgY3VzdG9taXphdGlvbiBvZiBiZWhhdmlvciBhbmQgZXZlbnQgaGFuZGxpbmcuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcmVwb3NpdG9yaWVzIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3IgZW50aXR5IG1ldGFkYXRhIG1hbmFnZW1lbnQuXG4gKiAtIENSVUQgb3BlcmF0aW9ucyAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSkgd2l0aCBhdXRvbWF0aWMgdHJhbnNsYXRpb24gb2YgcmVzdWx0cy5cbiAqIC0gRXZlbnQgdHJpZ2dlcmluZyBtZWNoYW5pc20gZm9yIGNyZWF0ZSwgdXBkYXRlLCBhbmQgZGVsZXRlIG9wZXJhdGlvbnMsIGFsbG93aW5nIGZvciBjdXN0b20gbG9naWMgdG8gYmUgZXhlY3V0ZWQgaW4gcmVzcG9uc2UgdG8gdGhlc2UgZXZlbnRzLlxuICogLSBUeXBlIHNhZmV0eSB0aHJvdWdoIFR5cGVTY3JpcHQgZ2VuZXJpY3MsIGVuc3VyaW5nIHRoYXQgcmVwb3NpdG9yaWVzIGFyZSBzdHJvbmdseSB0eXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZW50aXR5IGRlZmluaXRpb25zLlxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEltcGxlbWVudGluZyBkYXRhIGFjY2VzcyBsYXllcnMgZm9yIHZhcmlvdXMgZW50aXRpZXMgaW4gYW4gYXBwbGljYXRpb24sIHByb3ZpZGluZyBhIGNvbnNpc3RlbnQgYW5kIHJldXNhYmxlIGFwcHJvYWNoIHRvIGRhdGFiYXNlIGludGVyYWN0aW9ucy5cbiAqIC0gQWRkaW5nIGN1c3RvbSBidXNpbmVzcyBsb2dpYyBvciBzaWRlIGVmZmVjdHMgaW4gcmVzcG9uc2UgdG8gZW50aXR5IGxpZmVjeWNsZSBldmVudHMgKGUuZy4sIGxvZ2dpbmcsIG5vdGlmaWNhdGlvbnMsIGNhY2hlIGludmFsaWRhdGlvbikuXG4gKiAtIE1hbmFnaW5nIGVudGl0eSBtZXRhZGF0YSBhbmQgdHJhbnNsYXRpb25zIGluIGEgY2VudHJhbGl6ZWQgbWFubmVyIHdpdGhpbiB0aGUgcmVwb3NpdG9yeSBsYXllci5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYlwiO1xuICogXG4gKiAvLyBEZWZpbmUgYW4gZW50aXR5IGludGVyZmFjZVxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogbnVtYmVyO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIC8vIENyZWF0ZSBhIFVzZXJSZXBvc2l0b3J5IGJ5IGV4dGVuZGluZyB0aGUgUmVwb3NpdG9yeSBjbGFzc1xuICogY2xhc3MgVXNlclJlcG9zaXRvcnkgZXh0ZW5kcyBSZXBvc2l0b3J5PFVzZXI+IHtcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgc3VwZXIoVXNlcik7XG4gKiAgIH1cbiAqIFxuICogICAvLyBPdmVycmlkZSB0cmlnZ2VyRXZlbnQgdG8gYWRkIGN1c3RvbSBsb2dpYyBvbiBjcmVhdGUvdXBkYXRlL2RlbGV0ZVxuICogICBwcm90ZWN0ZWQgYXN5bmMgdHJpZ2dlckV2ZW50KGRhdGE6IEVudGl0eUV2ZW50PFVzZXI+KTogUHJvbWlzZTx2b2lkPiB7XG4gKiAgICAgY29uc29sZS5sb2coYFVzZXIgJHtkYXRhLm9wZXJhdGlvbn1kOmAsIGRhdGEuZW50aXR5KTtcbiAqICAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIHN1Y2ggYXMgc2VuZGluZyBub3RpZmljYXRpb25zIG9yIHVwZGF0aW5nIHJlbGF0ZWQgZGF0YSBjYW4gYmUgYWRkZWQgaGVyZVxuICogICB9XG4gKiB9XG4gKiBcbiAqIC8vIEV4YW1wbGUgb2YgdXNpbmcgdGhlIFVzZXJSZXBvc2l0b3J5XG4gKiBjb25zdCB1c2VyUmVwbyA9IG5ldyBVc2VyUmVwb3NpdG9yeSgpO1xuICogY29uc3QgbmV3VXNlcklkID0gdXNlclJlcG8uY3JlYXRlKHsgbmFtZTogXCJBbGljZVwiLCBlbWFpbDogXCJhbGljZUBleGFtcGxlLmNvbVwiIH0pO1xuICogY29uc3QgdXNlciA9IHVzZXJSZXBvLmZpbmRCeUlkKG5ld1VzZXJJZCk7XG4gKiBjb25zb2xlLmxvZyh1c2VyKTsgLy8gT3V0cHV0OiB7IGlkOiAxLCBuYW1lOiBcIkFsaWNlXCIsIGVtYWlsOiBcImFsaWNlQGV4YW1wbGUuY29tXCIgfVxuICogdXNlclJlcG8udXBkYXRlKHsgaWQ6IG5ld1VzZXJJZCwgbmFtZTogXCJBbGljZSBTbWl0aFwiLCBlbWFpbDogXCJhbGljZS5zbWl0aEBleGFtcGxlLmNvbVwiIH0pO1xuICogdXNlclJlcG8uZGVsZXRlQnlJZChuZXdVc2VySWQpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgc3RvcmUsIHRyYW5zbGF0b3IsIEVudGl0eUNvbnN0cnVjdG9yLCBPcHRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYlwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRhdGEgc3RydWN0dXJlIHBhc3NlZCB0byB0aGUgZXZlbnQgdHJpZ2dlciBtZXRob2QgYmVmb3JlL2FmdGVyIGFuIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlFdmVudDxUPiB7XG4gICAgcmVhZG9ubHkgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7XG4gICAgcmVhZG9ubHkgdGFibGU6IHN0cmluZztcbiAgICByZWFkb25seSBlbnRpdHk6IFBhcnRpYWw8VD47IC8vIFVzZSBQYXJ0aWFsPFQ+IGZvciBjcmVhdGUvZGVsZXRlIHdoZXJlIHNvbWUgZmllbGRzIG1pZ2h0IGJlIG1pc3NpbmdcbiAgICByZWFkb25seSBrZXk6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBjb2x1bW46IHN0cmluZztcbiAgICAgICAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgICB9XG4gICAgcmVhZG9ubHkgcHJldmlvdXNFbnRpdHk/OiBUO1xufVxuXG5cbi8vIC0tLSBSZXBvc2l0b3J5IENsYXNzIC0tLVxuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGRhdGEgYWNjZXNzL2J1c2luZXNzIGxvZ2ljLCB3cmFwcGluZyB0aGUgYHN0b3JlYCBBUEkuXG4gKiBJdCBoYW5kbGVzIGVudGl0eSBtZXRhZGF0YSBsb29rdXAsIENSVUQgb3BlcmF0aW9ucywgdHJhbnNsYXRpb24sIGFuZCBldmVudCB0cmlnZ2VyaW5nLlxuICogQHRlbXBsYXRlIFQgVGhlIGVudGl0eSB0eXBlIChtdXN0IGJlIGFuIG9iamVjdCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvc2l0b3J5PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG5cbiAgICBwcml2YXRlIGVudGl0eUNvbnN0cnVjdG9yOiBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgIGNvbnN0cnVjdG9yKGVudGl0eUNvbnN0cnVjdG9yOiBFbnRpdHlDb25zdHJ1Y3Rvcikge1xuICAgICAgICB0aGlzLmVudGl0eUNvbnN0cnVjdG9yID0gZW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIFxuICAgICAgICAvLyBDYWNoZXMgZW50aXR5IG1ldGFkYXRhIChuYW1lLCB0YWJsZSwgaWQpIG9udG8gdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBzdGF0aWMgYWNjZXNzXG5cdFx0aWYgKCF0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRlbnRpdHlfbmFtZSkge1xuICAgICAgICAgICAgLy8gQXNzdW1lcyBzdG9yZSBtZXRob2RzIHJldHVybiBub24tbnVsbCBzdHJpbmdzXG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRlbnRpdHlfbmFtZSA9IHN0b3JlLmdldEVudGl0eU5hbWUodGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci5uYW1lKTtcblx0XHRcdHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJHRhYmxlX25hbWUgPSBzdG9yZS5nZXRUYWJsZU5hbWUodGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci5uYW1lKTtcblx0XHRcdHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX25hbWUgPSBzdG9yZS5nZXRJZE5hbWUodGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci5uYW1lKTtcblx0XHRcdHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX2NvbHVtbiA9IHN0b3JlLmdldElkQ29sdW1uKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0fVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRFbnRpdHlOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIFVzZSBub24tbnVsbCBhc3NlcnRpb24gc2luY2UgdGhlIGNvbnN0cnVjdG9yIGd1YXJhbnRlZXMgdGhlc2UgcHJvcGVydGllcyBleGlzdFxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUhO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUYWJsZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJHRhYmxlX25hbWUhO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJZE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX25hbWUhO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJZENvbHVtbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kaWRfY29sdW1uITtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhbGwgZW50aXRpZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIG9wdGlvbnMuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRBbGwob3B0aW9uczogT3B0aW9ucyA9IHt9KTogVFtdIHtcbiAgICAgICAgLy8gQXNzdW1lIHN0b3JlLmxpc3QgcmV0dXJucyBUW10gYnV0IHdlIGV4cGxpY2l0bHkgY2FzdCBpdCB0byBUW11cbiAgICAgICAgY29uc3QgbGlzdDogVFtdID0gc3RvcmUubGlzdCh0aGlzLmdldEVudGl0eU5hbWUoKSwgb3B0aW9ucyk7XG4gICAgICAgIHRyYW5zbGF0b3IudHJhbnNsYXRlTGlzdChsaXN0LCBvcHRpb25zLmxhbmd1YWdlLCB0aGlzLmdldFRhYmxlTmFtZSgpKTtcbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBzaW5nbGUgZW50aXR5IGJ5IGl0cyBwcmltYXJ5IGtleSBJRC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZEJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZywgb3B0aW9uczogT3B0aW9ucyA9IHt9KTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8vIEFzc3VtZSBzdG9yZS5nZXQgcmV0dXJucyBUIG9yIG51bGwvdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogVCB8IG51bGwgPSBzdG9yZS5nZXQodGhpcy5nZXRFbnRpdHlOYW1lKCksIGlkKTtcbiAgICAgICAgdHJhbnNsYXRvci50cmFuc2xhdGVFbnRpdHkoZW50aXR5LCBpZCwgb3B0aW9ucy5sYW5ndWFnZSwgdGhpcy5nZXRUYWJsZU5hbWUoKSk7XG4gICAgICAgIHJldHVybiBlbnRpdHkgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIElEIChzdHJpbmcgb3IgbnVtYmVyKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlKGVudGl0eTogVCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGlkID0gc3RvcmUuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcImNyZWF0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0SWROYW1lKCksXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBhbiBleGlzdGluZyBlbnRpdHkuXG4gICAgICogVGhlIGVudGl0eSBtdXN0IGNvbnRhaW4gdGhlIHByaW1hcnkga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUoZW50aXR5OiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlkTmFtZSA9IHRoaXMuZ2V0SWROYW1lKCk7XG4gICAgICAgIGNvbnN0IGlkID0gZW50aXR5W2lkTmFtZV0gYXMgKG51bWJlciB8IHN0cmluZyk7XG4gICAgICAgIFxuICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgZW50aXR5IHN0YXRlIGJlZm9yZSB1cGRhdGUgZm9yIHRoZSBldmVudCBwYXlsb2FkXG4gICAgICAgIGNvbnN0IHByZXZpb3VzRW50aXR5ID0gdGhpcy5maW5kQnlJZChpZCk7XG5cbiAgICAgICAgc3RvcmUudXBkYXRlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBlbnRpdHkpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcInVwZGF0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIHByZXZpb3VzRW50aXR5OiBwcmV2aW91c0VudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IGlkTmFtZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuZ2V0SWRDb2x1bW4oKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgZW50aXR5IGlmIHRoZSBJRCBpcyBudWxsL3VuZGVmaW5lZCwgb3RoZXJ3aXNlIHVwZGF0ZXMgaXQuXG4gICAgICogSWYgYW4gSUQgaXMgcHJvdmlkZWQgYnV0IHRoZSBlbnRpdHkgZG9lc24ndCBleGlzdCwgaXQgY3JlYXRlcyBpdC5cbiAgICAgKiBAcmV0dXJucyBUaGUgZW50aXR5J3MgSUQuXG4gICAgICovXG4gICAgcHVibGljIHVwc2VydChlbnRpdHk6IFQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICBjb25zdCBpZCA9IGVudGl0eVt0aGlzLmdldElkTmFtZSgpXTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG5vIElEIGlzIHByZXNlbnQsIHNhdmUgKGNyZWF0ZSlcbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zYXZlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBlbnRpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgSUQgaXMgcHJlc2VudCwgY2hlY2sgZXhpc3RlbmNlXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRW50aXR5ID0gc3RvcmUuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoZXhpc3RpbmdFbnRpdHkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKGVudGl0eSk7XG4gICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJRCBleGlzdHMsIGJ1dCBlbnRpdHkgZG9lcyBub3QgLT4gc2F2ZSAoY3JlYXRlIHdpdGggcHJvdmlkZWQgSUQpXG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYW4gZW50aXR5IGJ5IGl0cyBwcmltYXJ5IGtleSBJRC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlQnlJZChpZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHJpZXZlIGVudGl0eSBiZWZvcmUgcmVtb3ZhbCBmb3IgdGhlIGV2ZW50IHBheWxvYWRcbiAgICAgICAgY29uc3QgZW50aXR5ID0gc3RvcmUuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgIFxuICAgICAgICBzdG9yZS5yZW1vdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGlkKTtcblxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCh7XG4gICAgICAgICAgICBvcGVyYXRpb246IFwiZGVsZXRlXCIsXG4gICAgICAgICAgICB0YWJsZTogdGhpcy5nZXRUYWJsZU5hbWUoKSxcbiAgICAgICAgICAgIGVudGl0eTogZW50aXR5LFxuICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRJZE5hbWUoKSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuZ2V0SWRDb2x1bW4oKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ291bnRzIHRoZSBudW1iZXIgb2YgZW50aXRpZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIG9wdGlvbnMuXG4gICAgICovXG4gICAgcHVibGljIGNvdW50KG9wdGlvbnM/OiBPcHRpb25zKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHN0b3JlLmNvdW50KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm90ZWN0ZWQgbWV0aG9kIGludGVuZGVkIGZvciBzdWJjbGFzcyBvdmVycmlkaW5nIG9yIGludGVybmFsIGV2ZW50IGhhbmRsaW5nLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyB0cmlnZ2VyRXZlbnQoX2RhdGE6IEVudGl0eUV2ZW50PFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIEVtcHR5IGJvZHkgYXMgaW4gdGhlIG9yaWdpbmFsIGNvZGVcbiAgICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAi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
@@ -56,4 +56,4 @@ class Sequence {
56
56
  if (typeof module !== "undefined") {
57
57
  module.exports = Sequence;
58
58
  }
59
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3NlcXVlbmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBTZXF1ZW5jZVxuICpcbiAqIFByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIGZvciBtYW5hZ2luZyBhbmQgYWNjZXNzaW5nIGRhdGFiYXNlIHNlcXVlbmNlcy5cbiAqL1xuXG4vLyBJbXBvcnQgdGhlIEphdmEgdHlwZSB1c2VkIHRvIGJyaWRnZSB0byB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBmdW5jdGlvbmFsaXR5LlxuY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIik7XG5cbi8qKlxuICogVXRpbGl0eSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBkYXRhYmFzZSBzZXF1ZW5jZSBvYmplY3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2VxdWVuY2Uge1xuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIG5leHQgYXZhaWxhYmxlIHZhbHVlIGZyb20gYSBzcGVjaWZpZWQgc2VxdWVuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZXF1ZW5jZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2Ugc2VxdWVuY2UuXG5cdCAqIEBwYXJhbSB0YWJsZU5hbWUgT3B0aW9uYWw6IFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlcXVlbmNlIChkZXBlbmRzIG9uIGRhdGFiYXNlIGRpYWxlY3QvZmFjYWRlIGltcGxlbWVudGF0aW9uKS5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuZXh0IHNlcXVlbmNlIHZhbHVlIGFzIGEgbnVtYmVyLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBuZXh0dmFsKHNlcXVlbmNlOiBzdHJpbmcsIHRhYmxlTmFtZT86IHN0cmluZywgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdC8vIE5vdGU6IFRoZSBvcmlnaW5hbCBKYXZhU2NyaXB0IG9yZGVyIG9mIGFyZ3VtZW50cyBmb3IgRGF0YWJhc2VGYWNhZGUubmV4dHZhbCBpczpcblx0XHQvLyBEYXRhYmFzZUZhY2FkZS5uZXh0dmFsKHNlcXVlbmNlLCBkYXRhc291cmNlTmFtZSwgdGFibGVOYW1lKTtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUubmV4dHZhbChzZXF1ZW5jZSwgZGF0YXNvdXJjZU5hbWUsIHRhYmxlTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBkYXRhYmFzZSBzZXF1ZW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHNlcXVlbmNlIFRoZSBuYW1lIG9mIHRoZSBzZXF1ZW5jZSB0byBjcmVhdGUuXG5cdCAqIEBwYXJhbSBzdGFydCBPcHRpb25hbDogVGhlIHN0YXJ0aW5nIHZhbHVlIGZvciB0aGUgc2VxdWVuY2UgKGRlZmF1bHRzIHRvIDEgaWYgbm90IHByb3ZpZGVkKS5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZShzZXF1ZW5jZTogc3RyaW5nLCBzdGFydD86IG51bWJlciwgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHREYXRhYmFzZUZhY2FkZS5jcmVhdGVTZXF1ZW5jZShzZXF1ZW5jZSwgc3RhcnQsIGRhdGFzb3VyY2VOYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEcm9wcyAoZGVsZXRlcykgYW4gZXhpc3RpbmcgZGF0YWJhc2Ugc2VxdWVuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZXF1ZW5jZSBUaGUgbmFtZSBvZiB0aGUgc2VxdWVuY2UgdG8gZHJvcC5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGRyb3Aoc2VxdWVuY2U6IHN0cmluZywgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHREYXRhYmFzZUZhY2FkZS5kcm9wU2VxdWVuY2Uoc2VxdWVuY2UsIGRhdGFzb3VyY2VOYW1lKTtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFNlcXVlbmNlO1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BLE1BQU0saUJBQWlCLEtBQUssS0FBSyx3REFBd0Q7QUFLbEYsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVXJCLE9BQWMsUUFBUSxVQUFrQixXQUFvQixnQkFBaUM7QUFHNUYsV0FBTyxlQUFlLFFBQVEsVUFBVSxnQkFBZ0IsU0FBUztBQUFBLEVBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsT0FBTyxVQUFrQixPQUFnQixnQkFBK0I7QUFDckYsbUJBQWUsZUFBZSxVQUFVLE9BQU8sY0FBYztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLEtBQUssVUFBa0IsZ0JBQStCO0FBQ25FLG1CQUFlLGFBQWEsVUFBVSxjQUFjO0FBQUEsRUFDckQ7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
59
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3NlcXVlbmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZGIvc2VxdWVuY2VcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9kYlxuICogQG5hbWUgU2VxdWVuY2VcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBTZXF1ZW5jZWAgY2xhc3MgZm9yIG1hbmFnaW5nIGRhdGFiYXNlIHNlcXVlbmNlcyBpbiB0aGUgRGlyaWdpYmxlIGVudmlyb25tZW50LiBUaGUgYFNlcXVlbmNlYCBjbGFzcyBvZmZlcnMgc3RhdGljIG1ldGhvZHMgdG8gcmV0cmlldmUgdGhlIG5leHQgdmFsdWUgZnJvbSBhIHNlcXVlbmNlLCBjcmVhdGUgbmV3IHNlcXVlbmNlcywgYW5kIGRyb3AgZXhpc3Rpbmcgc2VxdWVuY2VzLiBJdCBhYnN0cmFjdHMgdGhlIHVuZGVybHlpbmcgZGF0YWJhc2UgaW50ZXJhY3Rpb25zLCBhbGxvd2luZyBkZXZlbG9wZXJzIHRvIHdvcmsgd2l0aCBzZXF1ZW5jZXMgaW4gYSBjb25zaXN0ZW50IG1hbm5lciBhY3Jvc3MgZGlmZmVyZW50IGRhdGFiYXNlIHN5c3RlbXMgc3VwcG9ydGVkIGJ5IERpcmlnaWJsZS5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogLSBSZXRyaWV2ZSB0aGUgbmV4dCB2YWx1ZSBmcm9tIGEgc3BlY2lmaWVkIGRhdGFiYXNlIHNlcXVlbmNlLlxuICogLSBDcmVhdGUgbmV3IHNlcXVlbmNlcyB3aXRoIG9wdGlvbmFsIHN0YXJ0aW5nIHZhbHVlcy5cbiAqIC0gRHJvcCBleGlzdGluZyBzZXF1ZW5jZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkLlxuICogLSBTdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGRhdGFzb3VyY2UgbmFtZXMgdG8gdGFyZ2V0IHNwZWNpZmljIGRhdGFiYXNlIGNvbm5lY3Rpb25zLlxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEdlbmVyYXRpbmcgdW5pcXVlIGlkZW50aWZpZXJzIGZvciByZWNvcmRzIGluIGEgZGF0YWJhc2UgdGFibGUgdXNpbmcgc2VxdWVuY2VzLlxuICogLSBNYW5hZ2luZyBkYXRhYmFzZSBzZXF1ZW5jZXMgYXMgcGFydCBvZiBhcHBsaWNhdGlvbiBzZXR1cCBvciBtaWdyYXRpb24gcHJvY2Vzc2VzLlxuICogLSBBYnN0cmFjdGluZyBzZXF1ZW5jZSBtYW5hZ2VtZW50IHRvIGFsbG93IGZvciBlYXNpZXIgbWFpbnRlbmFuY2UgYW5kIHBvdGVudGlhbCBkYXRhYmFzZSBlbmdpbmUgY2hhbmdlcyBpbiB0aGUgZnV0dXJlLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYlwiO1xuICogXG4gKiAvLyBDcmVhdGUgYSBuZXcgc2VxdWVuY2UgbmFtZWQgXCJ1c2VyX2lkX3NlcVwiIHN0YXJ0aW5nIGF0IDEwMDBcbiAqIFNlcXVlbmNlLmNyZWF0ZShcInVzZXJfaWRfc2VxXCIsIDEwMDApO1xuICogXG4gKiAvLyBHZXQgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgXCJ1c2VyX2lkX3NlcVwiIHNlcXVlbmNlXG4gKiBjb25zdCBuZXh0VXNlcklkID0gU2VxdWVuY2UubmV4dHZhbChcInVzZXJfaWRfc2VxXCIpO1xuICogY29uc29sZS5sb2cobmV4dFVzZXJJZCk7IC8vIE91dHB1dDogMTAwMFxuICogXG4gKiAvLyBEcm9wIHRoZSBcInVzZXJfaWRfc2VxXCIgc2VxdWVuY2Ugd2hlbiBpdCdzIG5vIGxvbmdlciBuZWVkZWRcbiAqIFNlcXVlbmNlLmRyb3AoXCJ1c2VyX2lkX3NlcVwiKTtcbiAqIGBgYFxuICovXG5cbi8vIEltcG9ydCB0aGUgSmF2YSB0eXBlIHVzZWQgdG8gYnJpZGdlIHRvIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGZ1bmN0aW9uYWxpdHkuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5kYi5EYXRhYmFzZUZhY2FkZVwiKTtcblxuLyoqXG4gKiBVdGlsaXR5IGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGRhdGFiYXNlIHNlcXVlbmNlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZSB7XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbmV4dCBhdmFpbGFibGUgdmFsdWUgZnJvbSBhIHNwZWNpZmllZCBzZXF1ZW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHNlcXVlbmNlIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBzZXF1ZW5jZS5cblx0ICogQHBhcmFtIHRhYmxlTmFtZSBPcHRpb25hbDogVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2VxdWVuY2UgKGRlcGVuZHMgb24gZGF0YWJhc2UgZGlhbGVjdC9mYWNhZGUgaW1wbGVtZW50YXRpb24pLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgT3B0aW9uYWw6IFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZS5cblx0ICogQHJldHVybnMgVGhlIG5leHQgc2VxdWVuY2UgdmFsdWUgYXMgYSBudW1iZXIuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIG5leHR2YWwoc2VxdWVuY2U6IHN0cmluZywgdGFibGVOYW1lPzogc3RyaW5nLCBkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IG51bWJlciB7XG5cdFx0Ly8gTm90ZTogVGhlIG9yaWdpbmFsIEphdmFTY3JpcHQgb3JkZXIgb2YgYXJndW1lbnRzIGZvciBEYXRhYmFzZUZhY2FkZS5uZXh0dmFsIGlzOlxuXHRcdC8vIERhdGFiYXNlRmFjYWRlLm5leHR2YWwoc2VxdWVuY2UsIGRhdGFzb3VyY2VOYW1lLCB0YWJsZU5hbWUpO1xuXHRcdHJldHVybiBEYXRhYmFzZUZhY2FkZS5uZXh0dmFsKHNlcXVlbmNlLCBkYXRhc291cmNlTmFtZSwgdGFibGVOYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHNlcXVlbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0gc2VxdWVuY2UgVGhlIG5hbWUgb2YgdGhlIHNlcXVlbmNlIHRvIGNyZWF0ZS5cblx0ICogQHBhcmFtIHN0YXJ0IE9wdGlvbmFsOiBUaGUgc3RhcnRpbmcgdmFsdWUgZm9yIHRoZSBzZXF1ZW5jZSAoZGVmYXVsdHMgdG8gMSBpZiBub3QgcHJvdmlkZWQpLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgT3B0aW9uYWw6IFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlKHNlcXVlbmNlOiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdERhdGFiYXNlRmFjYWRlLmNyZWF0ZVNlcXVlbmNlKHNlcXVlbmNlLCBzdGFydCwgZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERyb3BzIChkZWxldGVzKSBhbiBleGlzdGluZyBkYXRhYmFzZSBzZXF1ZW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHNlcXVlbmNlIFRoZSBuYW1lIG9mIHRoZSBzZXF1ZW5jZSB0byBkcm9wLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgT3B0aW9uYWw6IFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZHJvcChzZXF1ZW5jZTogc3RyaW5nLCBkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdERhdGFiYXNlRmFjYWRlLmRyb3BTZXF1ZW5jZShzZXF1ZW5jZSwgZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gU2VxdWVuY2U7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0NBLE1BQU0saUJBQWlCLEtBQUssS0FBSyx3REFBd0Q7QUFLbEYsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVXJCLE9BQWMsUUFBUSxVQUFrQixXQUFvQixnQkFBaUM7QUFHNUYsV0FBTyxlQUFlLFFBQVEsVUFBVSxnQkFBZ0IsU0FBUztBQUFBLEVBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsT0FBTyxVQUFrQixPQUFnQixnQkFBK0I7QUFDckYsbUJBQWUsZUFBZSxVQUFVLE9BQU8sY0FBYztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLEtBQUssVUFBa0IsZ0JBQStCO0FBQ25FLG1CQUFlLGFBQWEsVUFBVSxjQUFjO0FBQUEsRUFDckQ7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=