@aerokit/sdk 12.44.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 (399) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +170 -0
  3. package/dist/cjs/bpm/deployer.js +57 -0
  4. package/dist/cjs/bpm/index.js +35 -0
  5. package/dist/cjs/bpm/process.js +636 -0
  6. package/dist/cjs/bpm/tasks.js +973 -0
  7. package/dist/cjs/bpm/values.js +82 -0
  8. package/dist/cjs/cache/cache.js +64 -0
  9. package/dist/cjs/cache/index.js +26 -0
  10. package/dist/cjs/cms/cmis.js +689 -0
  11. package/dist/cjs/cms/index.js +26 -0
  12. package/dist/cjs/component/decorators.js +126 -0
  13. package/dist/cjs/component/index.js +36 -0
  14. package/dist/cjs/core/configurations.js +110 -0
  15. package/dist/cjs/core/context.js +47 -0
  16. package/dist/cjs/core/env.js +45 -0
  17. package/dist/cjs/core/globals.js +54 -0
  18. package/dist/cjs/core/index.js +35 -0
  19. package/dist/cjs/db/dao.js +795 -0
  20. package/dist/cjs/db/database.js +904 -0
  21. package/dist/cjs/db/decorators.js +167 -0
  22. package/dist/cjs/db/index.js +72 -0
  23. package/dist/cjs/db/insert.js +51 -0
  24. package/dist/cjs/db/orm.js +245 -0
  25. package/dist/cjs/db/ormstatements.js +243 -0
  26. package/dist/cjs/db/procedure.js +112 -0
  27. package/dist/cjs/db/query.js +57 -0
  28. package/dist/cjs/db/repository.js +148 -0
  29. package/dist/cjs/db/sequence.js +59 -0
  30. package/dist/cjs/db/sql.js +516 -0
  31. package/dist/cjs/db/store.js +172 -0
  32. package/dist/cjs/db/translator.js +100 -0
  33. package/dist/cjs/db/update.js +43 -0
  34. package/dist/cjs/etcd/client.js +174 -0
  35. package/dist/cjs/etcd/index.js +26 -0
  36. package/dist/cjs/extensions/decorators.js +40 -0
  37. package/dist/cjs/extensions/extensions.js +108 -0
  38. package/dist/cjs/extensions/index.js +39 -0
  39. package/dist/cjs/git/client.js +277 -0
  40. package/dist/cjs/git/index.js +26 -0
  41. package/dist/cjs/http/client-async.js +224 -0
  42. package/dist/cjs/http/client.js +145 -0
  43. package/dist/cjs/http/decorators.js +76 -0
  44. package/dist/cjs/http/errors/ForbiddenError.js +41 -0
  45. package/dist/cjs/http/errors/ValidationError.js +41 -0
  46. package/dist/cjs/http/errors.js +26 -0
  47. package/dist/cjs/http/index.js +59 -0
  48. package/dist/cjs/http/request.js +281 -0
  49. package/dist/cjs/http/response.js +452 -0
  50. package/dist/cjs/http/rs/resource-common.js +32 -0
  51. package/dist/cjs/http/rs/resource-http-controller.js +306 -0
  52. package/dist/cjs/http/rs/resource-mappings.js +130 -0
  53. package/dist/cjs/http/rs/resource-method.js +218 -0
  54. package/dist/cjs/http/rs/resource.js +232 -0
  55. package/dist/cjs/http/rs.js +31 -0
  56. package/dist/cjs/http/session.js +124 -0
  57. package/dist/cjs/http/upload.js +144 -0
  58. package/dist/cjs/http/utils.js +106 -0
  59. package/dist/cjs/index.js +1 -0
  60. package/dist/cjs/indexing/index.js +29 -0
  61. package/dist/cjs/indexing/searcher.js +70 -0
  62. package/dist/cjs/indexing/writer.js +45 -0
  63. package/dist/cjs/integrations/index.js +26 -0
  64. package/dist/cjs/integrations/integrations.js +55 -0
  65. package/dist/cjs/io/bytes.js +101 -0
  66. package/dist/cjs/io/files.js +344 -0
  67. package/dist/cjs/io/image.js +43 -0
  68. package/dist/cjs/io/index.js +38 -0
  69. package/dist/cjs/io/streams.js +243 -0
  70. package/dist/cjs/io/zip.js +251 -0
  71. package/dist/cjs/job/decorators.js +40 -0
  72. package/dist/cjs/job/index.js +39 -0
  73. package/dist/cjs/job/scheduler.js +347 -0
  74. package/dist/cjs/junit/index.js +18 -0
  75. package/dist/cjs/junit/junit.js +67 -0
  76. package/dist/cjs/kafka/consumer.js +70 -0
  77. package/dist/cjs/kafka/index.js +29 -0
  78. package/dist/cjs/kafka/producer.js +70 -0
  79. package/dist/cjs/log/index.js +26 -0
  80. package/dist/cjs/log/logging.js +174 -0
  81. package/dist/cjs/mail/client.js +153 -0
  82. package/dist/cjs/mail/index.js +26 -0
  83. package/dist/cjs/messaging/consumer.js +83 -0
  84. package/dist/cjs/messaging/decorators.js +40 -0
  85. package/dist/cjs/messaging/index.js +42 -0
  86. package/dist/cjs/messaging/producer.js +81 -0
  87. package/dist/cjs/mongodb/client.js +627 -0
  88. package/dist/cjs/mongodb/dao.js +390 -0
  89. package/dist/cjs/mongodb/index.js +36 -0
  90. package/dist/cjs/net/decorators.js +40 -0
  91. package/dist/cjs/net/index.js +42 -0
  92. package/dist/cjs/net/soap.js +228 -0
  93. package/dist/cjs/net/websockets.js +151 -0
  94. package/dist/cjs/net/wrappers/onClose.js +2 -0
  95. package/dist/cjs/net/wrappers/onError.js +2 -0
  96. package/dist/cjs/net/wrappers/onMessage.js +2 -0
  97. package/dist/cjs/net/wrappers/onOpen.js +2 -0
  98. package/dist/cjs/pdf/index.js +26 -0
  99. package/dist/cjs/pdf/pdf.js +160 -0
  100. package/dist/cjs/platform/command.js +47 -0
  101. package/dist/cjs/platform/engines.js +70 -0
  102. package/dist/cjs/platform/index.js +47 -0
  103. package/dist/cjs/platform/lifecycle.js +49 -0
  104. package/dist/cjs/platform/os.js +51 -0
  105. package/dist/cjs/platform/problems.js +127 -0
  106. package/dist/cjs/platform/registry.js +319 -0
  107. package/dist/cjs/platform/repository.js +498 -0
  108. package/dist/cjs/platform/workspace.js +574 -0
  109. package/dist/cjs/qldb/index.js +26 -0
  110. package/dist/cjs/qldb/qldb.js +24 -0
  111. package/dist/cjs/rabbitmq/consumer.js +50 -0
  112. package/dist/cjs/rabbitmq/index.js +29 -0
  113. package/dist/cjs/rabbitmq/producer.js +38 -0
  114. package/dist/cjs/redis/client.js +190 -0
  115. package/dist/cjs/redis/index.js +26 -0
  116. package/dist/cjs/security/decorators.js +48 -0
  117. package/dist/cjs/security/index.js +40 -0
  118. package/dist/cjs/security/oauth.js +75 -0
  119. package/dist/cjs/security/user.js +88 -0
  120. package/dist/cjs/template/engines.js +139 -0
  121. package/dist/cjs/template/index.js +26 -0
  122. package/dist/cjs/utils/alphanumeric.js +107 -0
  123. package/dist/cjs/utils/base64.js +104 -0
  124. package/dist/cjs/utils/converter.js +78 -0
  125. package/dist/cjs/utils/digest.js +167 -0
  126. package/dist/cjs/utils/escape.js +160 -0
  127. package/dist/cjs/utils/hex.js +104 -0
  128. package/dist/cjs/utils/index.js +68 -0
  129. package/dist/cjs/utils/jsonpath.js +489 -0
  130. package/dist/cjs/utils/qrcode.js +41 -0
  131. package/dist/cjs/utils/url.js +82 -0
  132. package/dist/cjs/utils/utf8.js +61 -0
  133. package/dist/cjs/utils/uuid.js +48 -0
  134. package/dist/cjs/utils/xml.js +57 -0
  135. package/dist/dts/bpm/deployer.d.ts +29 -0
  136. package/dist/dts/bpm/index.d.ts +8 -0
  137. package/dist/dts/bpm/process.d.ts +433 -0
  138. package/dist/dts/bpm/tasks.d.ts +2022 -0
  139. package/dist/dts/bpm/values.d.ts +38 -0
  140. package/dist/dts/cache/cache.d.ts +30 -0
  141. package/dist/dts/cache/index.d.ts +2 -0
  142. package/dist/dts/cms/cmis.d.ts +413 -0
  143. package/dist/dts/cms/index.d.ts +2 -0
  144. package/dist/dts/component/decorators.d.ts +52 -0
  145. package/dist/dts/component/index.d.ts +2 -0
  146. package/dist/dts/core/configurations.d.ts +65 -0
  147. package/dist/dts/core/context.d.ts +19 -0
  148. package/dist/dts/core/env.d.ts +23 -0
  149. package/dist/dts/core/globals.d.ts +30 -0
  150. package/dist/dts/core/index.d.ts +8 -0
  151. package/dist/dts/db/dao.d.ts +8 -0
  152. package/dist/dts/db/database.d.ts +507 -0
  153. package/dist/dts/db/decorators.d.ts +89 -0
  154. package/dist/dts/db/index.d.ts +25 -0
  155. package/dist/dts/db/insert.d.ts +32 -0
  156. package/dist/dts/db/orm.d.ts +44 -0
  157. package/dist/dts/db/ormstatements.d.ts +4 -0
  158. package/dist/dts/db/procedure.d.ts +25 -0
  159. package/dist/dts/db/query.d.ts +48 -0
  160. package/dist/dts/db/repository.d.ts +64 -0
  161. package/dist/dts/db/sequence.d.ts +34 -0
  162. package/dist/dts/db/sql.d.ts +267 -0
  163. package/dist/dts/db/store.d.ts +138 -0
  164. package/dist/dts/db/translator.d.ts +26 -0
  165. package/dist/dts/db/update.d.ts +21 -0
  166. package/dist/dts/etcd/client.d.ts +92 -0
  167. package/dist/dts/etcd/index.d.ts +2 -0
  168. package/dist/dts/extensions/decorators.d.ts +11 -0
  169. package/dist/dts/extensions/extensions.d.ts +41 -0
  170. package/dist/dts/extensions/index.d.ts +4 -0
  171. package/dist/dts/git/client.d.ts +478 -0
  172. package/dist/dts/git/index.d.ts +2 -0
  173. package/dist/dts/http/client-async.d.ts +158 -0
  174. package/dist/dts/http/client.d.ts +180 -0
  175. package/dist/dts/http/decorators.d.ts +11 -0
  176. package/dist/dts/http/errors/ForbiddenError.d.ts +20 -0
  177. package/dist/dts/http/errors/ValidationError.d.ts +20 -0
  178. package/dist/dts/http/errors.d.ts +2 -0
  179. package/dist/dts/http/index.d.ts +16 -0
  180. package/dist/dts/http/request.d.ts +158 -0
  181. package/dist/dts/http/response.d.ts +281 -0
  182. package/dist/dts/http/rs/resource-common.d.ts +11 -0
  183. package/dist/dts/http/rs/resource-http-controller.d.ts +43 -0
  184. package/dist/dts/http/rs/resource-mappings.d.ts +70 -0
  185. package/dist/dts/http/rs/resource-method.d.ts +206 -0
  186. package/dist/dts/http/rs/resource.d.ts +126 -0
  187. package/dist/dts/http/rs.d.ts +4 -0
  188. package/dist/dts/http/session.d.ts +81 -0
  189. package/dist/dts/http/upload.d.ts +100 -0
  190. package/dist/dts/http/utils.d.ts +54 -0
  191. package/dist/dts/index.d.ts +0 -0
  192. package/dist/dts/indexing/index.d.ts +4 -0
  193. package/dist/dts/indexing/searcher.d.ts +47 -0
  194. package/dist/dts/indexing/writer.d.ts +22 -0
  195. package/dist/dts/integrations/index.d.ts +2 -0
  196. package/dist/dts/integrations/integrations.d.ts +118 -0
  197. package/dist/dts/io/bytes.d.ts +56 -0
  198. package/dist/dts/io/files.d.ts +261 -0
  199. package/dist/dts/io/image.d.ts +22 -0
  200. package/dist/dts/io/index.d.ts +10 -0
  201. package/dist/dts/io/streams.d.ts +172 -0
  202. package/dist/dts/io/zip.d.ts +178 -0
  203. package/dist/dts/job/decorators.d.ts +11 -0
  204. package/dist/dts/job/index.d.ts +4 -0
  205. package/dist/dts/job/scheduler.d.ts +250 -0
  206. package/dist/dts/junit/index.d.ts +1 -0
  207. package/dist/dts/junit/junit.d.ts +50 -0
  208. package/dist/dts/kafka/consumer.d.ts +48 -0
  209. package/dist/dts/kafka/index.d.ts +4 -0
  210. package/dist/dts/kafka/producer.d.ts +50 -0
  211. package/dist/dts/log/index.d.ts +2 -0
  212. package/dist/dts/log/logging.d.ts +102 -0
  213. package/dist/dts/mail/client.d.ts +90 -0
  214. package/dist/dts/mail/index.d.ts +2 -0
  215. package/dist/dts/messaging/consumer.d.ts +61 -0
  216. package/dist/dts/messaging/decorators.d.ts +11 -0
  217. package/dist/dts/messaging/index.d.ts +6 -0
  218. package/dist/dts/messaging/producer.d.ts +59 -0
  219. package/dist/dts/mongodb/client.d.ts +367 -0
  220. package/dist/dts/mongodb/dao.d.ts +24 -0
  221. package/dist/dts/mongodb/index.d.ts +2 -0
  222. package/dist/dts/net/decorators.d.ts +11 -0
  223. package/dist/dts/net/index.d.ts +6 -0
  224. package/dist/dts/net/soap.d.ts +115 -0
  225. package/dist/dts/net/websockets.d.ts +100 -0
  226. package/dist/dts/net/wrappers/onClose.d.ts +0 -0
  227. package/dist/dts/net/wrappers/onError.d.ts +0 -0
  228. package/dist/dts/net/wrappers/onMessage.d.ts +0 -0
  229. package/dist/dts/net/wrappers/onOpen.d.ts +0 -0
  230. package/dist/dts/pdf/index.d.ts +2 -0
  231. package/dist/dts/pdf/pdf.d.ts +72 -0
  232. package/dist/dts/platform/command.d.ts +41 -0
  233. package/dist/dts/platform/engines.d.ts +35 -0
  234. package/dist/dts/platform/index.d.ts +16 -0
  235. package/dist/dts/platform/lifecycle.d.ts +22 -0
  236. package/dist/dts/platform/os.d.ts +23 -0
  237. package/dist/dts/platform/problems.d.ts +114 -0
  238. package/dist/dts/platform/registry.d.ts +227 -0
  239. package/dist/dts/platform/repository.d.ts +354 -0
  240. package/dist/dts/platform/workspace.d.ts +421 -0
  241. package/dist/dts/qldb/index.d.ts +2 -0
  242. package/dist/dts/qldb/qldb.d.ts +1 -0
  243. package/dist/dts/rabbitmq/consumer.d.ts +25 -0
  244. package/dist/dts/rabbitmq/index.d.ts +4 -0
  245. package/dist/dts/rabbitmq/producer.d.ts +15 -0
  246. package/dist/dts/redis/client.d.ts +134 -0
  247. package/dist/dts/redis/index.d.ts +2 -0
  248. package/dist/dts/security/decorators.d.ts +4 -0
  249. package/dist/dts/security/index.d.ts +5 -0
  250. package/dist/dts/security/oauth.d.ts +39 -0
  251. package/dist/dts/security/user.d.ts +51 -0
  252. package/dist/dts/template/engines.d.ts +98 -0
  253. package/dist/dts/template/index.d.ts +2 -0
  254. package/dist/dts/utils/alphanumeric.d.ts +39 -0
  255. package/dist/dts/utils/base64.d.ts +48 -0
  256. package/dist/dts/utils/converter.d.ts +44 -0
  257. package/dist/dts/utils/digest.d.ts +50 -0
  258. package/dist/dts/utils/escape.d.ts +110 -0
  259. package/dist/dts/utils/hex.d.ts +48 -0
  260. package/dist/dts/utils/index.d.ts +23 -0
  261. package/dist/dts/utils/jsonpath.d.ts +22 -0
  262. package/dist/dts/utils/qrcode.d.ts +16 -0
  263. package/dist/dts/utils/url.d.ts +50 -0
  264. package/dist/dts/utils/utf8.d.ts +33 -0
  265. package/dist/dts/utils/uuid.d.ts +21 -0
  266. package/dist/dts/utils/xml.d.ts +22 -0
  267. package/dist/esm/bpm/deployer.mjs +38 -0
  268. package/dist/esm/bpm/index.mjs +15 -0
  269. package/dist/esm/bpm/process.mjs +617 -0
  270. package/dist/esm/bpm/tasks.mjs +954 -0
  271. package/dist/esm/bpm/values.mjs +63 -0
  272. package/dist/esm/cache/cache.mjs +45 -0
  273. package/dist/esm/cache/index.mjs +6 -0
  274. package/dist/esm/cms/cmis.mjs +660 -0
  275. package/dist/esm/cms/index.mjs +6 -0
  276. package/dist/esm/component/decorators.mjs +107 -0
  277. package/dist/esm/component/index.mjs +6 -0
  278. package/dist/esm/core/configurations.mjs +91 -0
  279. package/dist/esm/core/context.mjs +28 -0
  280. package/dist/esm/core/env.mjs +26 -0
  281. package/dist/esm/core/globals.mjs +35 -0
  282. package/dist/esm/core/index.mjs +15 -0
  283. package/dist/esm/db/dao.mjs +775 -0
  284. package/dist/esm/db/database.mjs +885 -0
  285. package/dist/esm/db/decorators.mjs +148 -0
  286. package/dist/esm/db/index.mjs +42 -0
  287. package/dist/esm/db/insert.mjs +32 -0
  288. package/dist/esm/db/orm.mjs +225 -0
  289. package/dist/esm/db/ormstatements.mjs +223 -0
  290. package/dist/esm/db/procedure.mjs +93 -0
  291. package/dist/esm/db/query.mjs +38 -0
  292. package/dist/esm/db/repository.mjs +129 -0
  293. package/dist/esm/db/sequence.mjs +40 -0
  294. package/dist/esm/db/sql.mjs +497 -0
  295. package/dist/esm/db/store.mjs +153 -0
  296. package/dist/esm/db/translator.mjs +81 -0
  297. package/dist/esm/db/update.mjs +24 -0
  298. package/dist/esm/etcd/client.mjs +155 -0
  299. package/dist/esm/etcd/index.mjs +6 -0
  300. package/dist/esm/extensions/decorators.mjs +21 -0
  301. package/dist/esm/extensions/extensions.mjs +89 -0
  302. package/dist/esm/extensions/index.mjs +9 -0
  303. package/dist/esm/git/client.mjs +258 -0
  304. package/dist/esm/git/index.mjs +6 -0
  305. package/dist/esm/http/client-async.mjs +205 -0
  306. package/dist/esm/http/client.mjs +126 -0
  307. package/dist/esm/http/decorators.mjs +47 -0
  308. package/dist/esm/http/errors/ForbiddenError.mjs +22 -0
  309. package/dist/esm/http/errors/ValidationError.mjs +22 -0
  310. package/dist/esm/http/errors.mjs +7 -0
  311. package/dist/esm/http/index.mjs +29 -0
  312. package/dist/esm/http/request.mjs +262 -0
  313. package/dist/esm/http/response.mjs +433 -0
  314. package/dist/esm/http/rs/resource-common.mjs +13 -0
  315. package/dist/esm/http/rs/resource-http-controller.mjs +287 -0
  316. package/dist/esm/http/rs/resource-mappings.mjs +111 -0
  317. package/dist/esm/http/rs/resource-method.mjs +199 -0
  318. package/dist/esm/http/rs/resource.mjs +213 -0
  319. package/dist/esm/http/rs.mjs +12 -0
  320. package/dist/esm/http/session.mjs +105 -0
  321. package/dist/esm/http/upload.mjs +125 -0
  322. package/dist/esm/http/utils.mjs +87 -0
  323. package/dist/esm/index.mjs +1 -0
  324. package/dist/esm/indexing/index.mjs +9 -0
  325. package/dist/esm/indexing/searcher.mjs +51 -0
  326. package/dist/esm/indexing/writer.mjs +26 -0
  327. package/dist/esm/integrations/index.mjs +6 -0
  328. package/dist/esm/integrations/integrations.mjs +36 -0
  329. package/dist/esm/io/bytes.mjs +82 -0
  330. package/dist/esm/io/files.mjs +325 -0
  331. package/dist/esm/io/image.mjs +24 -0
  332. package/dist/esm/io/index.mjs +18 -0
  333. package/dist/esm/io/streams.mjs +224 -0
  334. package/dist/esm/io/zip.mjs +232 -0
  335. package/dist/esm/job/decorators.mjs +21 -0
  336. package/dist/esm/job/index.mjs +9 -0
  337. package/dist/esm/job/scheduler.mjs +328 -0
  338. package/dist/esm/junit/index.mjs +2 -0
  339. package/dist/esm/junit/junit.mjs +48 -0
  340. package/dist/esm/kafka/consumer.mjs +51 -0
  341. package/dist/esm/kafka/index.mjs +9 -0
  342. package/dist/esm/kafka/producer.mjs +51 -0
  343. package/dist/esm/log/index.mjs +6 -0
  344. package/dist/esm/log/logging.mjs +155 -0
  345. package/dist/esm/mail/client.mjs +134 -0
  346. package/dist/esm/mail/index.mjs +6 -0
  347. package/dist/esm/messaging/consumer.mjs +64 -0
  348. package/dist/esm/messaging/decorators.mjs +21 -0
  349. package/dist/esm/messaging/index.mjs +12 -0
  350. package/dist/esm/messaging/producer.mjs +62 -0
  351. package/dist/esm/mongodb/client.mjs +608 -0
  352. package/dist/esm/mongodb/dao.mjs +360 -0
  353. package/dist/esm/mongodb/index.mjs +7 -0
  354. package/dist/esm/net/decorators.mjs +21 -0
  355. package/dist/esm/net/index.mjs +12 -0
  356. package/dist/esm/net/soap.mjs +209 -0
  357. package/dist/esm/net/websockets.mjs +132 -0
  358. package/dist/esm/net/wrappers/onClose.mjs +2 -0
  359. package/dist/esm/net/wrappers/onError.mjs +2 -0
  360. package/dist/esm/net/wrappers/onMessage.mjs +2 -0
  361. package/dist/esm/net/wrappers/onOpen.mjs +2 -0
  362. package/dist/esm/pdf/index.mjs +6 -0
  363. package/dist/esm/pdf/pdf.mjs +141 -0
  364. package/dist/esm/platform/command.mjs +28 -0
  365. package/dist/esm/platform/engines.mjs +51 -0
  366. package/dist/esm/platform/index.mjs +27 -0
  367. package/dist/esm/platform/lifecycle.mjs +30 -0
  368. package/dist/esm/platform/os.mjs +32 -0
  369. package/dist/esm/platform/problems.mjs +108 -0
  370. package/dist/esm/platform/registry.mjs +300 -0
  371. package/dist/esm/platform/repository.mjs +479 -0
  372. package/dist/esm/platform/workspace.mjs +555 -0
  373. package/dist/esm/qldb/index.mjs +6 -0
  374. package/dist/esm/qldb/qldb.mjs +5 -0
  375. package/dist/esm/rabbitmq/consumer.mjs +31 -0
  376. package/dist/esm/rabbitmq/index.mjs +9 -0
  377. package/dist/esm/rabbitmq/producer.mjs +19 -0
  378. package/dist/esm/redis/client.mjs +171 -0
  379. package/dist/esm/redis/index.mjs +6 -0
  380. package/dist/esm/security/decorators.mjs +29 -0
  381. package/dist/esm/security/index.mjs +10 -0
  382. package/dist/esm/security/oauth.mjs +56 -0
  383. package/dist/esm/security/user.mjs +69 -0
  384. package/dist/esm/template/engines.mjs +120 -0
  385. package/dist/esm/template/index.mjs +6 -0
  386. package/dist/esm/utils/alphanumeric.mjs +88 -0
  387. package/dist/esm/utils/base64.mjs +85 -0
  388. package/dist/esm/utils/converter.mjs +59 -0
  389. package/dist/esm/utils/digest.mjs +148 -0
  390. package/dist/esm/utils/escape.mjs +141 -0
  391. package/dist/esm/utils/hex.mjs +85 -0
  392. package/dist/esm/utils/index.mjs +38 -0
  393. package/dist/esm/utils/jsonpath.mjs +470 -0
  394. package/dist/esm/utils/qrcode.mjs +22 -0
  395. package/dist/esm/utils/url.mjs +63 -0
  396. package/dist/esm/utils/utf8.mjs +42 -0
  397. package/dist/esm/utils/uuid.mjs +29 -0
  398. package/dist/esm/utils/xml.mjs +38 -0
  399. package/package.json +58 -0
@@ -0,0 +1,498 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var repository_exports = {};
19
+ __export(repository_exports, {
20
+ Collection: () => Collection,
21
+ EntityInformation: () => EntityInformation,
22
+ Repository: () => Repository,
23
+ Resource: () => Resource
24
+ });
25
+ module.exports = __toCommonJS(repository_exports);
26
+ var import_bytes = require("@aerokit/sdk/io/bytes");
27
+ const RepositoryFacade = Java.type("org.eclipse.dirigible.components.api.platform.RepositoryFacade");
28
+ class Repository {
29
+ /**
30
+ * Retrieves a resource (file) object from the repository by its path.
31
+ *
32
+ * @param {string} path The absolute path to the resource.
33
+ * @returns {Resource} A Resource instance wrapping the native repository object.
34
+ */
35
+ static getResource(path) {
36
+ const resourceInstance = RepositoryFacade.getResource(path);
37
+ return new Resource(resourceInstance);
38
+ }
39
+ /**
40
+ * Creates a new resource (file) with content provided as a string.
41
+ *
42
+ * @param {string} path The absolute path where the resource should be created.
43
+ * @param {string} content The string content for the resource.
44
+ * @param {string} contentType The MIME type of the content (e.g., "text/plain").
45
+ * @returns {Resource} The newly created Resource instance.
46
+ */
47
+ static createResource(path, content, contentType) {
48
+ const resourceInstance = RepositoryFacade.createResource(path, content, contentType);
49
+ return new Resource(resourceInstance);
50
+ }
51
+ /**
52
+ * Creates a new resource (file) with content provided as a native byte array.
53
+ *
54
+ * @param {string} path The absolute path where the resource should be created.
55
+ * @param {any[]} content The native byte array content.
56
+ * @param {string} contentType The MIME type of the content.
57
+ * @returns {Resource} The newly created Resource instance.
58
+ */
59
+ static createResourceNative(path, content, contentType) {
60
+ const resourceInstance = RepositoryFacade.createResourceNative(path, content, contentType);
61
+ return new Resource(resourceInstance);
62
+ }
63
+ /**
64
+ * Updates the content of an existing resource using a string.
65
+ *
66
+ * @param {string} path The absolute path to the resource to update.
67
+ * @param {string} content The new string content.
68
+ * @returns {Resource} The updated Resource instance.
69
+ */
70
+ static updateResource(path, content) {
71
+ const resourceInstance = RepositoryFacade.updateResource(path, content);
72
+ return new Resource(resourceInstance);
73
+ }
74
+ /**
75
+ * Updates the content of an existing resource using a native byte array.
76
+ *
77
+ * @param {string} path The absolute path to the resource to update.
78
+ * @param {any[]} content The new native byte array content.
79
+ * @returns {Resource} The updated Resource instance.
80
+ */
81
+ static updateResourceNative(path, content) {
82
+ const resourceInstance = RepositoryFacade.updateResourceNative(path, content);
83
+ return new Resource(resourceInstance);
84
+ }
85
+ /**
86
+ * Deletes the resource (file) at the specified path.
87
+ *
88
+ * @param {string} path The absolute path of the resource to delete.
89
+ */
90
+ static deleteResource(path) {
91
+ RepositoryFacade.deleteResource(path);
92
+ }
93
+ /**
94
+ * Retrieves a collection (folder) object from the repository by its path.
95
+ *
96
+ * @param {string} path The absolute path to the collection.
97
+ * @returns {Collection} A Collection instance wrapping the native repository object.
98
+ */
99
+ static getCollection(path) {
100
+ const collectionInstance = RepositoryFacade.getCollection(path);
101
+ return new Collection(collectionInstance);
102
+ }
103
+ /**
104
+ * Creates a new collection (folder) at the specified path.
105
+ *
106
+ * @param {string} path The absolute path where the collection should be created.
107
+ * @returns {Collection} The newly created Collection instance.
108
+ */
109
+ static createCollection(path) {
110
+ const collectionInstance = RepositoryFacade.createCollection(path);
111
+ return new Collection(collectionInstance);
112
+ }
113
+ /**
114
+ * Deletes the collection (folder) at the specified path.
115
+ *
116
+ * @param {string} path The absolute path of the collection to delete.
117
+ */
118
+ static deleteCollection(path) {
119
+ RepositoryFacade.deleteCollection(path);
120
+ }
121
+ /**
122
+ * Searches the repository starting from a given path for resources matching a glob pattern.
123
+ *
124
+ * @param {string} path The starting path for the search.
125
+ * @param {string} pattern The glob pattern to match resource names against (e.g., "*.js").
126
+ * @returns {string[]} An array of repository paths (strings) that match the search criteria.
127
+ */
128
+ static find(path, pattern) {
129
+ return JSON.parse(RepositoryFacade.find(path, pattern));
130
+ }
131
+ }
132
+ class Resource {
133
+ /**
134
+ * @constructor
135
+ * @param {any} native The native Java object instance representing the repository resource.
136
+ */
137
+ constructor(native) {
138
+ this.native = native;
139
+ }
140
+ /**
141
+ * Gets the name of the resource (file name).
142
+ * @returns {string} The name.
143
+ */
144
+ getName() {
145
+ return this.native.getName();
146
+ }
147
+ /**
148
+ * Gets the full repository path of the resource.
149
+ * @returns {string} The repository path.
150
+ */
151
+ getPath() {
152
+ return this.native.getPath();
153
+ }
154
+ /**
155
+ * Gets the parent collection (folder) of this resource.
156
+ * @returns {Collection} The parent Collection instance.
157
+ */
158
+ getParent() {
159
+ const collectionInstance = this.native.getParent();
160
+ return new Collection(collectionInstance);
161
+ }
162
+ /**
163
+ * Gets detailed metadata about the resource.
164
+ * @returns {EntityInformation} The metadata object.
165
+ */
166
+ getInformation() {
167
+ const informationInstance = this.native.getInformation();
168
+ return new EntityInformation(informationInstance);
169
+ }
170
+ /**
171
+ * Creates the resource if it does not already exist.
172
+ */
173
+ create() {
174
+ this.native.create();
175
+ }
176
+ /**
177
+ * Deletes the resource from the repository.
178
+ */
179
+ delete() {
180
+ this.native.delete();
181
+ }
182
+ /**
183
+ * Renames the resource within its current collection.
184
+ * @param {string} name The new name for the resource.
185
+ */
186
+ renameTo(name) {
187
+ this.native.renameTo(name);
188
+ }
189
+ /**
190
+ * Moves the resource to a new path.
191
+ * @param {string} path The new absolute path for the resource.
192
+ */
193
+ moveTo(path) {
194
+ this.native.moveTo(path);
195
+ }
196
+ /**
197
+ * Copies the resource to a new path.
198
+ * @param {string} path The new absolute path for the copied resource.
199
+ */
200
+ copyTo(path) {
201
+ this.native.copyTo(path);
202
+ }
203
+ /**
204
+ * Checks if the resource currently exists in the repository.
205
+ * @returns {boolean} True if the resource exists, false otherwise.
206
+ */
207
+ exists() {
208
+ return this.native.exists();
209
+ }
210
+ /**
211
+ * Checks if the resource (file) is empty (has zero size).
212
+ * @returns {boolean} True if the content is empty, false otherwise.
213
+ */
214
+ isEmpty() {
215
+ return this.native.isEmpty();
216
+ }
217
+ /**
218
+ * Gets the content of the resource as a text string.
219
+ * @returns {string} The text content.
220
+ */
221
+ getText() {
222
+ return import_bytes.Bytes.byteArrayToText(this.getContent());
223
+ }
224
+ /**
225
+ * Gets the content of the resource as a JavaScript-friendly byte array.
226
+ * @returns {any[]} The content bytes.
227
+ */
228
+ getContent() {
229
+ const nativeContent = this.native.getContent();
230
+ return import_bytes.Bytes.toJavaScriptBytes(nativeContent);
231
+ }
232
+ /**
233
+ * Gets the content of the resource as its native Java byte array representation.
234
+ * @returns {any[]} The content bytes.
235
+ */
236
+ getContentNative() {
237
+ return this.native.getContent();
238
+ }
239
+ /**
240
+ * Sets the content of the resource using a text string.
241
+ * The string is converted to a byte array before saving.
242
+ * @param {string} text The new text content.
243
+ */
244
+ setText(text) {
245
+ const content = import_bytes.Bytes.textToByteArray(text);
246
+ this.setContent(content);
247
+ }
248
+ /**
249
+ * Sets the content of the resource using a JavaScript byte array.
250
+ * The array is converted to a native byte array before saving.
251
+ * @param {any[]} content The new content bytes.
252
+ */
253
+ setContent(content) {
254
+ const nativeContent = import_bytes.Bytes.toJavaBytes(content);
255
+ this.native.setContent(nativeContent);
256
+ }
257
+ /**
258
+ * Sets the content of the resource using a native Java byte array.
259
+ * @param {any[]} content The new native content bytes.
260
+ */
261
+ setContentNative(content) {
262
+ this.native.setContent(content);
263
+ }
264
+ /**
265
+ * Checks if the resource content is determined to be binary.
266
+ * @returns {boolean} True if binary, false if text.
267
+ */
268
+ isBinary() {
269
+ return this.native.isBinary();
270
+ }
271
+ /**
272
+ * Gets the content type (MIME type) of the resource.
273
+ * @returns {string} The content type string.
274
+ */
275
+ getContentType() {
276
+ return this.native.getContentType();
277
+ }
278
+ }
279
+ class Collection {
280
+ /**
281
+ * @constructor
282
+ * @param {any} native The native Java object instance representing the repository collection.
283
+ */
284
+ constructor(native) {
285
+ this.native = native;
286
+ }
287
+ /**
288
+ * Gets the name of the collection (folder name).
289
+ * @returns {string} The name.
290
+ */
291
+ getName() {
292
+ return this.native.getName();
293
+ }
294
+ /**
295
+ * Gets the full repository path of the collection.
296
+ * @returns {string} The repository path.
297
+ */
298
+ getPath() {
299
+ return this.native.getPath();
300
+ }
301
+ /**
302
+ * Gets the parent collection (folder) of this collection.
303
+ * @returns {Collection} The parent Collection instance.
304
+ */
305
+ getParent() {
306
+ const collectionInstance = this.native.getParent();
307
+ return new Collection(collectionInstance);
308
+ }
309
+ /**
310
+ * Gets detailed metadata about the collection.
311
+ * @returns {EntityInformation} The metadata object.
312
+ */
313
+ getInformation() {
314
+ const informationInstance = this.native.getInformation();
315
+ return new EntityInformation(informationInstance);
316
+ }
317
+ /**
318
+ * Creates the collection if it does not already exist.
319
+ */
320
+ create() {
321
+ this.native.create();
322
+ }
323
+ /**
324
+ * Deletes the collection from the repository.
325
+ */
326
+ delete() {
327
+ this.native.delete();
328
+ }
329
+ /**
330
+ * Renames the collection within its current parent.
331
+ * @param {string} name The new name for the collection.
332
+ */
333
+ renameTo(name) {
334
+ this.native.renameTo(name);
335
+ }
336
+ /**
337
+ * Moves the collection to a new path.
338
+ * @param {string} path The new absolute path for the collection.
339
+ */
340
+ moveTo(path) {
341
+ this.native.moveTo(path);
342
+ }
343
+ /**
344
+ * Copies the collection to a new path.
345
+ * @param {string} path The new absolute path for the copied collection.
346
+ */
347
+ copyTo(path) {
348
+ this.native.copyTo(path);
349
+ }
350
+ /**
351
+ * Checks if the collection currently exists in the repository.
352
+ * @returns {boolean} True if the collection exists, false otherwise.
353
+ */
354
+ exists() {
355
+ return this.native.exists();
356
+ }
357
+ /**
358
+ * Checks if the collection is empty (contains no files or sub-directories).
359
+ * @returns {boolean} True if empty, false otherwise.
360
+ */
361
+ isEmpty() {
362
+ return this.native.isEmpty();
363
+ }
364
+ /**
365
+ * Gets the names of all sub-collections (folders) within this collection.
366
+ * @returns {string[]} An array of sub-collection names.
367
+ */
368
+ getCollectionsNames() {
369
+ return this.native.getCollectionsNames();
370
+ }
371
+ /**
372
+ * Creates a new sub-collection (folder) within this collection.
373
+ * @param {string} name The name of the new sub-collection.
374
+ * @returns {Collection} The newly created Collection instance.
375
+ */
376
+ createCollection(name) {
377
+ const collectionInstance = this.native.createCollection(name);
378
+ return new Collection(collectionInstance);
379
+ }
380
+ /**
381
+ * Gets a specific sub-collection by name.
382
+ * @param {string} name The name of the sub-collection.
383
+ * @returns {Collection} The child Collection instance.
384
+ */
385
+ getCollection(name) {
386
+ const collectionInstance = this.native.getCollection(name);
387
+ return new Collection(collectionInstance);
388
+ }
389
+ /**
390
+ * Removes a sub-collection by name.
391
+ * @param {string} name The name of the sub-collection to remove.
392
+ */
393
+ removeCollection(name) {
394
+ this.native.removeCollection(name);
395
+ }
396
+ /**
397
+ * Gets the names of all resources (files) within this collection.
398
+ * @returns {string[]} An array of resource names.
399
+ */
400
+ getResourcesNames() {
401
+ return this.native.getResourcesNames();
402
+ }
403
+ /**
404
+ * Gets a specific resource (file) by name.
405
+ * @param {string} name The name of the resource.
406
+ * @returns {Resource} The child Resource instance.
407
+ */
408
+ getResource(name) {
409
+ const resourceInstance = this.native.getResource(name);
410
+ return new Resource(resourceInstance);
411
+ }
412
+ /**
413
+ * Removes a resource (file) by name.
414
+ * @param {string} name The name of the resource to remove.
415
+ */
416
+ removeResource(name) {
417
+ this.native.removeResource(name);
418
+ }
419
+ /**
420
+ * Creates a new resource (file) within this collection.
421
+ * @param {string} name The name of the new resource.
422
+ * @param {string} content The string content for the resource.
423
+ * @returns {Resource} The newly created Resource instance.
424
+ */
425
+ createResource(name, content) {
426
+ const resourceInstance = this.native.createResource(name, content);
427
+ return new Resource(resourceInstance);
428
+ }
429
+ }
430
+ class EntityInformation {
431
+ /**
432
+ * @constructor
433
+ * @param {any} native The native Java object instance holding the entity information.
434
+ */
435
+ constructor(native) {
436
+ this.native = native;
437
+ }
438
+ /**
439
+ * Gets the name of the entity (resource or collection).
440
+ * @returns {string} The name.
441
+ */
442
+ getName() {
443
+ return this.native.getName();
444
+ }
445
+ /**
446
+ * Gets the full repository path of the entity.
447
+ * @returns {string} The repository path.
448
+ */
449
+ getPath() {
450
+ return this.native.getPath();
451
+ }
452
+ /**
453
+ * Gets the access permissions for the entity (typically an integer bitmask).
454
+ * @returns {number} The permissions value.
455
+ */
456
+ getPermissions() {
457
+ return this.native.getPermissions();
458
+ }
459
+ /**
460
+ * Gets the size of the resource content in bytes (0 for a collection).
461
+ * @returns {number} The size in bytes.
462
+ */
463
+ getSize() {
464
+ return this.native.getSize();
465
+ }
466
+ /**
467
+ * Gets the user who created the entity.
468
+ * @returns {string} The creator's name.
469
+ */
470
+ getCreatedBy() {
471
+ return this.native.getCreatedBy();
472
+ }
473
+ /**
474
+ * Gets the creation timestamp.
475
+ * @returns {Date} The creation date and time.
476
+ */
477
+ getCreatedAt() {
478
+ return this.native.getCreatedAt();
479
+ }
480
+ /**
481
+ * Gets the user who last modified the entity.
482
+ * @returns {string} The modifier's name.
483
+ */
484
+ getModifiedBy() {
485
+ return this.native.getModifiedBy();
486
+ }
487
+ /**
488
+ * Gets the last modification timestamp.
489
+ * @returns {Date} The modification date and time.
490
+ */
491
+ getModifiedAt() {
492
+ return this.native.getModifiedAt();
493
+ }
494
+ }
495
+ if (typeof module !== "undefined") {
496
+ module.exports = Repository;
497
+ }
498
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BsYXRmb3JtL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogUHJvdmlkZXMgYSB3cmFwcGVyIGZvciB0aGUgcGxhdGZvcm0ncyBSZXBvc2l0b3J5RmFjYWRlIHRvIG1hbmFnZSBmaWxlcyAoUmVzb3VyY2VzKVxuICogYW5kIGZvbGRlcnMgKENvbGxlY3Rpb25zKSwgaW5jbHVkaW5nIENSVUQgb3BlcmF0aW9ucywgbW92ZW1lbnQsIGFuZCBjb250ZW50IGhhbmRsaW5nLlxuICovXG5pbXBvcnQgeyBCeXRlcyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vYnl0ZXNcIjtcblxuY29uc3QgUmVwb3NpdG9yeUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5wbGF0Zm9ybS5SZXBvc2l0b3J5RmFjYWRlXCIpO1xuXG4vKipcbiAqIEBjbGFzcyBSZXBvc2l0b3J5XG4gKiBAZGVzY3JpcHRpb24gU3RhdGljIHV0aWxpdHkgY2xhc3MgcHJvdmlkaW5nIGhpZ2gtbGV2ZWwgbWV0aG9kcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGVcbiAqIHJlcG9zaXRvcnkgZmFjYWRlIHRvIG1hbmFnZSByZXNvdXJjZXMgYW5kIGNvbGxlY3Rpb25zIGJ5IHBhdGguXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5IHtcblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgcmVzb3VyY2UgKGZpbGUpIG9iamVjdCBmcm9tIHRoZSByZXBvc2l0b3J5IGJ5IGl0cyBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcmVzb3VyY2UuXG5cdCAqIEByZXR1cm5zIHtSZXNvdXJjZX0gQSBSZXNvdXJjZSBpbnN0YW5jZSB3cmFwcGluZyB0aGUgbmF0aXZlIHJlcG9zaXRvcnkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRSZXNvdXJjZShwYXRoOiBzdHJpbmcpOiBSZXNvdXJjZSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VJbnN0YW5jZSA9IFJlcG9zaXRvcnlGYWNhZGUuZ2V0UmVzb3VyY2UocGF0aCk7XG5cdFx0cmV0dXJuIG5ldyBSZXNvdXJjZShyZXNvdXJjZUluc3RhbmNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IHJlc291cmNlIChmaWxlKSB3aXRoIGNvbnRlbnQgcHJvdmlkZWQgYXMgYSBzdHJpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBhYnNvbHV0ZSBwYXRoIHdoZXJlIHRoZSByZXNvdXJjZSBzaG91bGQgYmUgY3JlYXRlZC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgVGhlIHN0cmluZyBjb250ZW50IGZvciB0aGUgcmVzb3VyY2UuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50VHlwZSBUaGUgTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50IChlLmcuLCBcInRleHQvcGxhaW5cIikuXG5cdCAqIEByZXR1cm5zIHtSZXNvdXJjZX0gVGhlIG5ld2x5IGNyZWF0ZWQgUmVzb3VyY2UgaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZVJlc291cmNlKHBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBjb250ZW50VHlwZTogc3RyaW5nKTogUmVzb3VyY2Uge1xuXHRcdGNvbnN0IHJlc291cmNlSW5zdGFuY2UgPSBSZXBvc2l0b3J5RmFjYWRlLmNyZWF0ZVJlc291cmNlKHBhdGgsIGNvbnRlbnQsIGNvbnRlbnRUeXBlKTtcblx0XHRyZXR1cm4gbmV3IFJlc291cmNlKHJlc291cmNlSW5zdGFuY2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgcmVzb3VyY2UgKGZpbGUpIHdpdGggY29udGVudCBwcm92aWRlZCBhcyBhIG5hdGl2ZSBieXRlIGFycmF5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB3aGVyZSB0aGUgcmVzb3VyY2Ugc2hvdWxkIGJlIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSB7YW55W119IGNvbnRlbnQgVGhlIG5hdGl2ZSBieXRlIGFycmF5IGNvbnRlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50VHlwZSBUaGUgTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50LlxuXHQgKiBAcmV0dXJucyB7UmVzb3VyY2V9IFRoZSBuZXdseSBjcmVhdGVkIFJlc291cmNlIGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVSZXNvdXJjZU5hdGl2ZShwYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IGFueVtdLCBjb250ZW50VHlwZTogc3RyaW5nKTogUmVzb3VyY2Uge1xuXHRcdGNvbnN0IHJlc291cmNlSW5zdGFuY2UgPSBSZXBvc2l0b3J5RmFjYWRlLmNyZWF0ZVJlc291cmNlTmF0aXZlKHBhdGgsIGNvbnRlbnQsIGNvbnRlbnRUeXBlKTtcblx0XHRyZXR1cm4gbmV3IFJlc291cmNlKHJlc291cmNlSW5zdGFuY2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGNvbnRlbnQgb2YgYW4gZXhpc3RpbmcgcmVzb3VyY2UgdXNpbmcgYSBzdHJpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByZXNvdXJjZSB0byB1cGRhdGUuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgc3RyaW5nIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIHtSZXNvdXJjZX0gVGhlIHVwZGF0ZWQgUmVzb3VyY2UgaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHVwZGF0ZVJlc291cmNlKHBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogUmVzb3VyY2Uge1xuXHRcdGNvbnN0IHJlc291cmNlSW5zdGFuY2UgPSBSZXBvc2l0b3J5RmFjYWRlLnVwZGF0ZVJlc291cmNlKHBhdGgsIGNvbnRlbnQpO1xuXHRcdHJldHVybiBuZXcgUmVzb3VyY2UocmVzb3VyY2VJbnN0YW5jZSk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgY29udGVudCBvZiBhbiBleGlzdGluZyByZXNvdXJjZSB1c2luZyBhIG5hdGl2ZSBieXRlIGFycmF5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gdXBkYXRlLlxuXHQgKiBAcGFyYW0ge2FueVtdfSBjb250ZW50IFRoZSBuZXcgbmF0aXZlIGJ5dGUgYXJyYXkgY29udGVudC5cblx0ICogQHJldHVybnMge1Jlc291cmNlfSBUaGUgdXBkYXRlZCBSZXNvdXJjZSBpbnN0YW5jZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdXBkYXRlUmVzb3VyY2VOYXRpdmUocGF0aDogc3RyaW5nLCBjb250ZW50OiBhbnlbXSk6IFJlc291cmNlIHtcblx0XHRjb25zdCByZXNvdXJjZUluc3RhbmNlID0gUmVwb3NpdG9yeUZhY2FkZS51cGRhdGVSZXNvdXJjZU5hdGl2ZShwYXRoLCBjb250ZW50KTtcblx0XHRyZXR1cm4gbmV3IFJlc291cmNlKHJlc291cmNlSW5zdGFuY2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhlIHJlc291cmNlIChmaWxlKSBhdCB0aGUgc3BlY2lmaWVkIHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSByZXNvdXJjZSB0byBkZWxldGUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGRlbGV0ZVJlc291cmNlKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdFJlcG9zaXRvcnlGYWNhZGUuZGVsZXRlUmVzb3VyY2UocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgY29sbGVjdGlvbiAoZm9sZGVyKSBvYmplY3QgZnJvbSB0aGUgcmVwb3NpdG9yeSBieSBpdHMgcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIHtDb2xsZWN0aW9ufSBBIENvbGxlY3Rpb24gaW5zdGFuY2Ugd3JhcHBpbmcgdGhlIG5hdGl2ZSByZXBvc2l0b3J5IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0Q29sbGVjdGlvbihwYXRoOiBzdHJpbmcpOiBDb2xsZWN0aW9uIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uSW5zdGFuY2UgPSBSZXBvc2l0b3J5RmFjYWRlLmdldENvbGxlY3Rpb24ocGF0aCk7XG5cdFx0cmV0dXJuIG5ldyBDb2xsZWN0aW9uKGNvbGxlY3Rpb25JbnN0YW5jZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBjb2xsZWN0aW9uIChmb2xkZXIpIGF0IHRoZSBzcGVjaWZpZWQgcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIGFic29sdXRlIHBhdGggd2hlcmUgdGhlIGNvbGxlY3Rpb24gc2hvdWxkIGJlIGNyZWF0ZWQuXG5cdCAqIEByZXR1cm5zIHtDb2xsZWN0aW9ufSBUaGUgbmV3bHkgY3JlYXRlZCBDb2xsZWN0aW9uIGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVDb2xsZWN0aW9uKHBhdGg6IHN0cmluZyk6IENvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25JbnN0YW5jZSA9IFJlcG9zaXRvcnlGYWNhZGUuY3JlYXRlQ29sbGVjdGlvbihwYXRoKTtcblx0XHRyZXR1cm4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbkluc3RhbmNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIHRoZSBjb2xsZWN0aW9uIChmb2xkZXIpIGF0IHRoZSBzcGVjaWZpZWQgcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGNvbGxlY3Rpb24gdG8gZGVsZXRlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBkZWxldGVDb2xsZWN0aW9uKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdFJlcG9zaXRvcnlGYWNhZGUuZGVsZXRlQ29sbGVjdGlvbihwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZWFyY2hlcyB0aGUgcmVwb3NpdG9yeSBzdGFydGluZyBmcm9tIGEgZ2l2ZW4gcGF0aCBmb3IgcmVzb3VyY2VzIG1hdGNoaW5nIGEgZ2xvYiBwYXR0ZXJuLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgc3RhcnRpbmcgcGF0aCBmb3IgdGhlIHNlYXJjaC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhdHRlcm4gVGhlIGdsb2IgcGF0dGVybiB0byBtYXRjaCByZXNvdXJjZSBuYW1lcyBhZ2FpbnN0IChlLmcuLCBcIiouanNcIikuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmdbXX0gQW4gYXJyYXkgb2YgcmVwb3NpdG9yeSBwYXRocyAoc3RyaW5ncykgdGhhdCBtYXRjaCB0aGUgc2VhcmNoIGNyaXRlcmlhLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBmaW5kKHBhdGg6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKTogc3RyaW5nW10ge1xuXHRcdHJldHVybiBKU09OLnBhcnNlKFJlcG9zaXRvcnlGYWNhZGUuZmluZChwYXRoLCBwYXR0ZXJuKSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAY2xhc3MgUmVzb3VyY2VcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIGEgZmlsZSBvciByZXNvdXJjZSAobm9uLWNvbGxlY3Rpb24pIHdpdGhpbiB0aGUgUmVwb3NpdG9yeSxcbiAqIHByb3ZpZGluZyBpbnN0YW5jZSBtZXRob2RzIGZvciBmaWxlIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKiBAcGFyYW0ge2FueX0gbmF0aXZlIFRoZSBuYXRpdmUgSmF2YSBvYmplY3QgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSByZXBvc2l0b3J5IHJlc291cmNlLlxuXHQgKi9cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSAoZmlsZSBuYW1lKS5cblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXROYW1lKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZnVsbCByZXBvc2l0b3J5IHBhdGggb2YgdGhlIHJlc291cmNlLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcmVwb3NpdG9yeSBwYXRoLlxuXHQgKi9cblx0cHVibGljIGdldFBhdGgoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UGF0aCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhcmVudCBjb2xsZWN0aW9uIChmb2xkZXIpIG9mIHRoaXMgcmVzb3VyY2UuXG5cdCAqIEByZXR1cm5zIHtDb2xsZWN0aW9ufSBUaGUgcGFyZW50IENvbGxlY3Rpb24gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UGFyZW50KCk6IENvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25JbnN0YW5jZSA9IHRoaXMubmF0aXZlLmdldFBhcmVudCgpO1xuXHRcdHJldHVybiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uSW5zdGFuY2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgZGV0YWlsZWQgbWV0YWRhdGEgYWJvdXQgdGhlIHJlc291cmNlLlxuXHQgKiBAcmV0dXJucyB7RW50aXR5SW5mb3JtYXRpb259IFRoZSBtZXRhZGF0YSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SW5mb3JtYXRpb24oKTogRW50aXR5SW5mb3JtYXRpb24ge1xuXHRcdGNvbnN0IGluZm9ybWF0aW9uSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRJbmZvcm1hdGlvbigpO1xuXHRcdHJldHVybiBuZXcgRW50aXR5SW5mb3JtYXRpb24oaW5mb3JtYXRpb25JbnN0YW5jZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC5cblx0ICovXG5cdHB1YmxpYyBjcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuY3JlYXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgcmVwb3NpdG9yeS5cblx0ICovXG5cdHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuZGVsZXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVuYW1lcyB0aGUgcmVzb3VyY2Ugd2l0aGluIGl0cyBjdXJyZW50IGNvbGxlY3Rpb24uXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHJlc291cmNlLlxuXHQgKi9cblx0cHVibGljIHJlbmFtZVRvKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlbmFtZVRvKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1vdmVzIHRoZSByZXNvdXJjZSB0byBhIG5ldyBwYXRoLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgbmV3IGFic29sdXRlIHBhdGggZm9yIHRoZSByZXNvdXJjZS5cblx0ICovXG5cdHB1YmxpYyBtb3ZlVG8ocGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUubW92ZVRvKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvcGllcyB0aGUgcmVzb3VyY2UgdG8gYSBuZXcgcGF0aC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIG5ldyBhYnNvbHV0ZSBwYXRoIGZvciB0aGUgY29waWVkIHJlc291cmNlLlxuXHQgKi9cblx0cHVibGljIGNvcHlUbyhwYXRoOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jb3B5VG8ocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSByZXNvdXJjZSBjdXJyZW50bHkgZXhpc3RzIGluIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcmVzb3VyY2UgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgZXhpc3RzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGlzdHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHJlc291cmNlIChmaWxlKSBpcyBlbXB0eSAoaGFzIHplcm8gc2l6ZSkuXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb250ZW50IGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNFbXB0eSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHJlc291cmNlIGFzIGEgdGV4dCBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0ZXh0IGNvbnRlbnQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBCeXRlcy5ieXRlQXJyYXlUb1RleHQodGhpcy5nZXRDb250ZW50KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHJlc291cmNlIGFzIGEgSmF2YVNjcmlwdC1mcmllbmRseSBieXRlIGFycmF5LlxuXHQgKiBAcmV0dXJucyB7YW55W119IFRoZSBjb250ZW50IGJ5dGVzLlxuXHQgKi9cblx0cHVibGljIGdldENvbnRlbnQoKTogYW55W10ge1xuXHRcdGNvbnN0IG5hdGl2ZUNvbnRlbnQgPSB0aGlzLm5hdGl2ZS5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKG5hdGl2ZUNvbnRlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHJlc291cmNlIGFzIGl0cyBuYXRpdmUgSmF2YSBieXRlIGFycmF5IHJlcHJlc2VudGF0aW9uLlxuXHQgKiBAcmV0dXJucyB7YW55W119IFRoZSBjb250ZW50IGJ5dGVzLlxuXHQgKi9cblx0cHVibGljIGdldENvbnRlbnROYXRpdmUoKTogYW55W10ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDb250ZW50KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY29udGVudCBvZiB0aGUgcmVzb3VyY2UgdXNpbmcgYSB0ZXh0IHN0cmluZy5cblx0ICogVGhlIHN0cmluZyBpcyBjb252ZXJ0ZWQgdG8gYSBieXRlIGFycmF5IGJlZm9yZSBzYXZpbmcuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSBuZXcgdGV4dCBjb250ZW50LlxuXHQgKi9cblx0cHVibGljIHNldFRleHQodGV4dDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGVudCA9IEJ5dGVzLnRleHRUb0J5dGVBcnJheSh0ZXh0KTtcblx0XHR0aGlzLnNldENvbnRlbnQoY29udGVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY29udGVudCBvZiB0aGUgcmVzb3VyY2UgdXNpbmcgYSBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkuXG5cdCAqIFRoZSBhcnJheSBpcyBjb252ZXJ0ZWQgdG8gYSBuYXRpdmUgYnl0ZSBhcnJheSBiZWZvcmUgc2F2aW5nLlxuXHQgKiBAcGFyYW0ge2FueVtdfSBjb250ZW50IFRoZSBuZXcgY29udGVudCBieXRlcy5cblx0ICovXG5cdHB1YmxpYyBzZXRDb250ZW50KGNvbnRlbnQ6IGFueVtdKTogdm9pZCB7XG5cdFx0Y29uc3QgbmF0aXZlQ29udGVudCA9IEJ5dGVzLnRvSmF2YUJ5dGVzKGNvbnRlbnQpO1xuXHRcdHRoaXMubmF0aXZlLnNldENvbnRlbnQobmF0aXZlQ29udGVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY29udGVudCBvZiB0aGUgcmVzb3VyY2UgdXNpbmcgYSBuYXRpdmUgSmF2YSBieXRlIGFycmF5LlxuXHQgKiBAcGFyYW0ge2FueVtdfSBjb250ZW50IFRoZSBuZXcgbmF0aXZlIGNvbnRlbnQgYnl0ZXMuXG5cdCAqL1xuXHRwdWJsaWMgc2V0Q29udGVudE5hdGl2ZShjb250ZW50OiBhbnlbXSk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldENvbnRlbnQoY29udGVudCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSByZXNvdXJjZSBjb250ZW50IGlzIGRldGVybWluZWQgdG8gYmUgYmluYXJ5LlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBiaW5hcnksIGZhbHNlIGlmIHRleHQuXG5cdCAqL1xuXHRwdWJsaWMgaXNCaW5hcnkoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmlzQmluYXJ5KCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29udGVudCB0eXBlIChNSU1FIHR5cGUpIG9mIHRoZSByZXNvdXJjZS5cblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbnRlbnQgdHlwZSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29udGVudFR5cGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q29udGVudFR5cGUoKTtcblx0fVxufVxuXG4vKipcbiAqIEBjbGFzcyBDb2xsZWN0aW9uXG4gKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIGRpcmVjdG9yeSBvciBmb2xkZXIgd2l0aGluIHRoZSBSZXBvc2l0b3J5LCBwcm92aWRpbmdcbiAqIGluc3RhbmNlIG1ldGhvZHMgZm9yIGNvbGxlY3Rpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uIHtcblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqIEBwYXJhbSB7YW55fSBuYXRpdmUgVGhlIG5hdGl2ZSBKYXZhIG9iamVjdCBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIHJlcG9zaXRvcnkgY29sbGVjdGlvbi5cblx0ICovXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvbiAoZm9sZGVyIG5hbWUpLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5hbWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmdWxsIHJlcG9zaXRvcnkgcGF0aCBvZiB0aGUgY29sbGVjdGlvbi5cblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIHJlcG9zaXRvcnkgcGF0aC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFBhdGgoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXJlbnQgY29sbGVjdGlvbiAoZm9sZGVyKSBvZiB0aGlzIGNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIHtDb2xsZWN0aW9ufSBUaGUgcGFyZW50IENvbGxlY3Rpb24gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UGFyZW50KCk6IENvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25JbnN0YW5jZSA9IHRoaXMubmF0aXZlLmdldFBhcmVudCgpO1xuXHRcdHJldHVybiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uSW5zdGFuY2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgZGV0YWlsZWQgbWV0YWRhdGEgYWJvdXQgdGhlIGNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIHtFbnRpdHlJbmZvcm1hdGlvbn0gVGhlIG1ldGFkYXRhIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBnZXRJbmZvcm1hdGlvbigpOiBFbnRpdHlJbmZvcm1hdGlvbiB7XG5cdFx0Y29uc3QgaW5mb3JtYXRpb25JbnN0YW5jZSA9IHRoaXMubmF0aXZlLmdldEluZm9ybWF0aW9uKCk7XG5cdFx0cmV0dXJuIG5ldyBFbnRpdHlJbmZvcm1hdGlvbihpbmZvcm1hdGlvbkluc3RhbmNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBjb2xsZWN0aW9uIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNyZWF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhlIGNvbGxlY3Rpb24gZnJvbSB0aGUgcmVwb3NpdG9yeS5cblx0ICovXG5cdHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuZGVsZXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVuYW1lcyB0aGUgY29sbGVjdGlvbiB3aXRoaW4gaXRzIGN1cnJlbnQgcGFyZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmV3IG5hbWUgZm9yIHRoZSBjb2xsZWN0aW9uLlxuXHQgKi9cblx0cHVibGljIHJlbmFtZVRvKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlbmFtZVRvKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1vdmVzIHRoZSBjb2xsZWN0aW9uIHRvIGEgbmV3IHBhdGguXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBuZXcgYWJzb2x1dGUgcGF0aCBmb3IgdGhlIGNvbGxlY3Rpb24uXG5cdCAqL1xuXHRwdWJsaWMgbW92ZVRvKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLm1vdmVUbyhwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3BpZXMgdGhlIGNvbGxlY3Rpb24gdG8gYSBuZXcgcGF0aC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIG5ldyBhYnNvbHV0ZSBwYXRoIGZvciB0aGUgY29waWVkIGNvbGxlY3Rpb24uXG5cdCAqL1xuXHRwdWJsaWMgY29weVRvKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNvcHlUbyhwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGNvbGxlY3Rpb24gY3VycmVudGx5IGV4aXN0cyBpbiB0aGUgcmVwb3NpdG9yeS5cblx0ICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbGxlY3Rpb24gZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgZXhpc3RzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGlzdHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkgKGNvbnRhaW5zIG5vIGZpbGVzIG9yIHN1Yi1kaXJlY3RvcmllcykuXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNFbXB0eSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWVzIG9mIGFsbCBzdWItY29sbGVjdGlvbnMgKGZvbGRlcnMpIHdpdGhpbiB0aGlzIGNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIHtzdHJpbmdbXX0gQW4gYXJyYXkgb2Ygc3ViLWNvbGxlY3Rpb24gbmFtZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29sbGVjdGlvbnNOYW1lcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldENvbGxlY3Rpb25zTmFtZXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IHN1Yi1jb2xsZWN0aW9uIChmb2xkZXIpIHdpdGhpbiB0aGlzIGNvbGxlY3Rpb24uXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBuZXcgc3ViLWNvbGxlY3Rpb24uXG5cdCAqIEByZXR1cm5zIHtDb2xsZWN0aW9ufSBUaGUgbmV3bHkgY3JlYXRlZCBDb2xsZWN0aW9uIGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUNvbGxlY3Rpb24obmFtZTogc3RyaW5nKTogQ29sbGVjdGlvbiB7XG5cdFx0Y29uc3QgY29sbGVjdGlvbkluc3RhbmNlID0gdGhpcy5uYXRpdmUuY3JlYXRlQ29sbGVjdGlvbihuYW1lKTtcblx0XHRyZXR1cm4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbkluc3RhbmNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIGEgc3BlY2lmaWMgc3ViLWNvbGxlY3Rpb24gYnkgbmFtZS5cblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHN1Yi1jb2xsZWN0aW9uLlxuXHQgKiBAcmV0dXJucyB7Q29sbGVjdGlvbn0gVGhlIGNoaWxkIENvbGxlY3Rpb24gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29sbGVjdGlvbihuYW1lOiBzdHJpbmcpOiBDb2xsZWN0aW9uIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRDb2xsZWN0aW9uKG5hbWUpO1xuXHRcdHJldHVybiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uSW5zdGFuY2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSBzdWItY29sbGVjdGlvbiBieSBuYW1lLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgc3ViLWNvbGxlY3Rpb24gdG8gcmVtb3ZlLlxuXHQgKi9cblx0cHVibGljIHJlbW92ZUNvbGxlY3Rpb24obmFtZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUucmVtb3ZlQ29sbGVjdGlvbihuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lcyBvZiBhbGwgcmVzb3VyY2VzIChmaWxlcykgd2l0aGluIHRoaXMgY29sbGVjdGlvbi5cblx0ICogQHJldHVybnMge3N0cmluZ1tdfSBBbiBhcnJheSBvZiByZXNvdXJjZSBuYW1lcy5cblx0ICovXG5cdHB1YmxpYyBnZXRSZXNvdXJjZXNOYW1lcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFJlc291cmNlc05hbWVzKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyBhIHNwZWNpZmljIHJlc291cmNlIChmaWxlKSBieSBuYW1lLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UuXG5cdCAqIEByZXR1cm5zIHtSZXNvdXJjZX0gVGhlIGNoaWxkIFJlc291cmNlIGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIGdldFJlc291cmNlKG5hbWU6IHN0cmluZyk6IFJlc291cmNlIHtcblx0XHRjb25zdCByZXNvdXJjZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0UmVzb3VyY2UobmFtZSk7XG5cdFx0cmV0dXJuIG5ldyBSZXNvdXJjZShyZXNvdXJjZUluc3RhbmNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgcmVzb3VyY2UgKGZpbGUpIGJ5IG5hbWUuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgcmVtb3ZlUmVzb3VyY2UobmFtZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUucmVtb3ZlUmVzb3VyY2UobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyByZXNvdXJjZSAoZmlsZSkgd2l0aGluIHRoaXMgY29sbGVjdGlvbi5cblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG5ldyByZXNvdXJjZS5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgVGhlIHN0cmluZyBjb250ZW50IGZvciB0aGUgcmVzb3VyY2UuXG5cdCAqIEByZXR1cm5zIHtSZXNvdXJjZX0gVGhlIG5ld2x5IGNyZWF0ZWQgUmVzb3VyY2UgaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlUmVzb3VyY2UobmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiBSZXNvdXJjZSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VJbnN0YW5jZSA9IHRoaXMubmF0aXZlLmNyZWF0ZVJlc291cmNlKG5hbWUsIGNvbnRlbnQpO1xuXHRcdHJldHVybiBuZXcgUmVzb3VyY2UocmVzb3VyY2VJbnN0YW5jZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAY2xhc3MgRW50aXR5SW5mb3JtYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIGRldGFpbGVkIG1ldGFkYXRhIChjcmVhdGlvbiBkYXRlLCBzaXplLCBwZXJtaXNzaW9ucywgZXRjLikgZm9yIGFcbiAqIFJlc291cmNlIG9yIENvbGxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnRpdHlJbmZvcm1hdGlvbiB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKiBAcGFyYW0ge2FueX0gbmF0aXZlIFRoZSBuYXRpdmUgSmF2YSBvYmplY3QgaW5zdGFuY2UgaG9sZGluZyB0aGUgZW50aXR5IGluZm9ybWF0aW9uLlxuXHQgKi9cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgKHJlc291cmNlIG9yIGNvbGxlY3Rpb24pLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5hbWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmdWxsIHJlcG9zaXRvcnkgcGF0aCBvZiB0aGUgZW50aXR5LlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcmVwb3NpdG9yeSBwYXRoLlxuXHQgKi9cblx0cHVibGljIGdldFBhdGgoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UGF0aCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgdGhlIGVudGl0eSAodHlwaWNhbGx5IGFuIGludGVnZXIgYml0bWFzaykuXG5cdCAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBwZXJtaXNzaW9ucyB2YWx1ZS5cblx0ICovXG5cdHB1YmxpYyBnZXRQZXJtaXNzaW9ucygpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRQZXJtaXNzaW9ucygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNpemUgb2YgdGhlIHJlc291cmNlIGNvbnRlbnQgaW4gYnl0ZXMgKDAgZm9yIGEgY29sbGVjdGlvbikuXG5cdCAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBzaXplIGluIGJ5dGVzLlxuXHQgKi9cblx0cHVibGljIGdldFNpemUoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2l6ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHVzZXIgd2hvIGNyZWF0ZWQgdGhlIGVudGl0eS5cblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGNyZWF0b3IncyBuYW1lLlxuXHQgKi9cblx0cHVibGljIGdldENyZWF0ZWRCeSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDcmVhdGVkQnkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAuXG5cdCAqIEByZXR1cm5zIHtEYXRlfSBUaGUgY3JlYXRpb24gZGF0ZSBhbmQgdGltZS5cblx0ICovXG5cdHB1YmxpYyBnZXRDcmVhdGVkQXQoKTogRGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldENyZWF0ZWRBdCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHVzZXIgd2hvIGxhc3QgbW9kaWZpZWQgdGhlIGVudGl0eS5cblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIG1vZGlmaWVyJ3MgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXRNb2RpZmllZEJ5KCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1vZGlmaWVkQnkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lc3RhbXAuXG5cdCAqIEByZXR1cm5zIHtEYXRlfSBUaGUgbW9kaWZpY2F0aW9uIGRhdGUgYW5kIHRpbWUuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TW9kaWZpZWRBdCgpOiBEYXRlIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TW9kaWZpZWRBdCgpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gUmVwb3NpdG9yeTtcbn1cbiJdLAogICJtYXBwaW5n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