@decaf-ts/core 0.3.38 → 0.4.1

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 (252) hide show
  1. package/README.md +7 -1
  2. package/dist/core.cjs +2361 -0
  3. package/dist/core.esm.cjs +2307 -0
  4. package/lib/esm/identity/decorators.js +1 -2
  5. package/lib/esm/identity/index.js +1 -2
  6. package/lib/esm/identity/utils.js +1 -2
  7. package/{dist/types → lib/esm}/index.d.ts +1 -1
  8. package/lib/esm/index.js +2 -3
  9. package/lib/esm/interfaces/Builder.js +1 -2
  10. package/lib/esm/interfaces/Executor.js +1 -2
  11. package/lib/esm/interfaces/Observable.js +1 -2
  12. package/lib/esm/interfaces/Observer.js +1 -2
  13. package/lib/esm/interfaces/Paginatable.js +1 -2
  14. package/lib/esm/interfaces/Queriable.js +1 -2
  15. package/lib/esm/interfaces/RawExecutor.js +1 -2
  16. package/lib/esm/interfaces/SequenceOptions.js +1 -2
  17. package/lib/esm/interfaces/index.js +1 -2
  18. package/lib/esm/model/BaseModel.js +1 -2
  19. package/lib/esm/model/IdentifiedBaseModel.js +1 -2
  20. package/{dist/types → lib/esm}/model/User.d.ts +2 -1
  21. package/lib/esm/model/User.js +1 -2
  22. package/lib/esm/model/construction.js +2 -3
  23. package/lib/esm/model/decorators.js +1 -2
  24. package/lib/esm/model/index.js +1 -2
  25. package/lib/esm/model/types.js +1 -2
  26. package/lib/esm/persistence/Adapter.js +1 -2
  27. package/lib/esm/persistence/Sequence.js +1 -2
  28. package/lib/esm/persistence/constants.js +1 -2
  29. package/lib/esm/persistence/decorators.js +1 -2
  30. package/lib/esm/persistence/errors.js +1 -2
  31. package/lib/esm/persistence/index.js +1 -2
  32. package/lib/esm/query/Clause.js +1 -2
  33. package/lib/esm/query/ClauseFactory.js +1 -2
  34. package/lib/esm/query/Condition.js +1 -2
  35. package/lib/esm/query/Paginator.js +1 -2
  36. package/lib/esm/query/Query.js +1 -2
  37. package/{dist/types → lib/esm}/query/Statement.d.ts +2 -1
  38. package/lib/esm/query/Statement.js +1 -2
  39. package/lib/esm/query/clauses/FromClause.js +1 -2
  40. package/lib/esm/query/clauses/GroupByClause.js +1 -2
  41. package/lib/esm/query/clauses/InsertClause.js +1 -2
  42. package/lib/esm/query/clauses/LimitClause.js +1 -2
  43. package/lib/esm/query/clauses/OffsetClause.js +1 -2
  44. package/lib/esm/query/clauses/OrderByClause.js +1 -2
  45. package/lib/esm/query/clauses/SelectClause.js +1 -2
  46. package/lib/esm/query/clauses/SelectorBasedClause.js +1 -2
  47. package/lib/esm/query/clauses/ValuesClause.js +1 -2
  48. package/lib/esm/query/clauses/WhereClause.js +1 -2
  49. package/lib/esm/query/clauses/index.js +1 -2
  50. package/lib/esm/query/constants.js +1 -2
  51. package/lib/esm/query/errors.js +1 -2
  52. package/lib/esm/query/index.js +1 -2
  53. package/lib/esm/query/options.js +1 -2
  54. package/lib/esm/query/selectors.js +1 -2
  55. package/lib/esm/query/types.js +1 -2
  56. package/lib/esm/repository/Context.js +1 -2
  57. package/lib/esm/repository/Repository.js +1 -2
  58. package/lib/esm/repository/constants.js +1 -2
  59. package/lib/esm/repository/decorators.js +1 -2
  60. package/lib/esm/repository/errors.js +1 -2
  61. package/lib/esm/repository/index.js +1 -2
  62. package/lib/esm/repository/injectables.js +1 -2
  63. package/lib/esm/repository/types.js +1 -2
  64. package/lib/esm/repository/utils.js +1 -2
  65. package/lib/esm/validators/ClauseSequenceValidator.js +1 -2
  66. package/lib/esm/validators/decorators.js +1 -2
  67. package/lib/esm/validators/index.js +1 -2
  68. package/lib/identity/decorators.cjs +1 -2
  69. package/lib/identity/decorators.d.ts +24 -0
  70. package/lib/identity/index.cjs +1 -2
  71. package/lib/identity/index.d.ts +2 -0
  72. package/lib/identity/utils.cjs +1 -2
  73. package/lib/identity/utils.d.ts +3 -0
  74. package/lib/index.cjs +2 -3
  75. package/lib/index.d.ts +25 -0
  76. package/lib/interfaces/Builder.cjs +1 -2
  77. package/lib/interfaces/Builder.d.ts +16 -0
  78. package/lib/interfaces/Executor.cjs +1 -2
  79. package/lib/interfaces/Executor.d.ts +19 -0
  80. package/lib/interfaces/Observable.cjs +1 -2
  81. package/lib/interfaces/Observable.d.ts +31 -0
  82. package/lib/interfaces/Observer.cjs +1 -2
  83. package/lib/interfaces/Observer.d.ts +16 -0
  84. package/lib/interfaces/Paginatable.cjs +1 -2
  85. package/lib/interfaces/Paginatable.d.ts +4 -0
  86. package/lib/interfaces/Queriable.cjs +1 -2
  87. package/lib/interfaces/Queriable.d.ts +6 -0
  88. package/lib/interfaces/RawExecutor.cjs +1 -2
  89. package/lib/interfaces/RawExecutor.d.ts +20 -0
  90. package/lib/interfaces/SequenceOptions.cjs +1 -2
  91. package/lib/interfaces/SequenceOptions.d.ts +19 -0
  92. package/lib/interfaces/index.cjs +1 -2
  93. package/lib/interfaces/index.d.ts +7 -0
  94. package/lib/model/BaseModel.cjs +1 -2
  95. package/lib/model/BaseModel.d.ts +6 -0
  96. package/lib/model/IdentifiedBaseModel.cjs +1 -2
  97. package/lib/model/IdentifiedBaseModel.d.ts +7 -0
  98. package/lib/model/User.cjs +1 -2
  99. package/lib/model/User.d.ts +9 -0
  100. package/lib/model/construction.cjs +2 -3
  101. package/lib/model/construction.d.ts +15 -0
  102. package/lib/model/decorators.cjs +1 -2
  103. package/lib/model/decorators.d.ts +75 -0
  104. package/lib/model/index.cjs +1 -2
  105. package/lib/model/index.d.ts +4 -0
  106. package/lib/model/types.cjs +1 -2
  107. package/lib/model/types.d.ts +6 -0
  108. package/lib/persistence/Adapter.cjs +1 -2
  109. package/lib/persistence/Adapter.d.ts +86 -0
  110. package/lib/persistence/Sequence.cjs +1 -2
  111. package/lib/persistence/Sequence.d.ts +22 -0
  112. package/lib/persistence/constants.cjs +1 -2
  113. package/lib/persistence/constants.d.ts +22 -0
  114. package/lib/persistence/decorators.cjs +1 -2
  115. package/lib/persistence/decorators.d.ts +1 -0
  116. package/lib/persistence/errors.cjs +1 -2
  117. package/lib/persistence/errors.d.ts +7 -0
  118. package/lib/persistence/index.cjs +1 -2
  119. package/lib/persistence/index.d.ts +5 -0
  120. package/lib/query/Clause.cjs +1 -2
  121. package/lib/query/Clause.d.ts +50 -0
  122. package/lib/query/ClauseFactory.cjs +1 -2
  123. package/lib/query/ClauseFactory.d.ts +71 -0
  124. package/lib/query/Condition.cjs +1 -2
  125. package/lib/query/Condition.d.ts +75 -0
  126. package/lib/query/Paginator.cjs +1 -2
  127. package/lib/query/Paginator.d.ts +22 -0
  128. package/lib/query/Query.cjs +1 -2
  129. package/lib/query/Query.d.ts +43 -0
  130. package/lib/query/Statement.cjs +1 -2
  131. package/lib/query/Statement.d.ts +56 -0
  132. package/lib/query/clauses/FromClause.cjs +1 -2
  133. package/lib/query/clauses/FromClause.d.ts +45 -0
  134. package/lib/query/clauses/GroupByClause.cjs +1 -2
  135. package/lib/query/clauses/GroupByClause.d.ts +21 -0
  136. package/lib/query/clauses/InsertClause.cjs +1 -2
  137. package/lib/query/clauses/InsertClause.d.ts +37 -0
  138. package/lib/query/clauses/LimitClause.cjs +1 -2
  139. package/lib/query/clauses/LimitClause.d.ts +29 -0
  140. package/lib/query/clauses/OffsetClause.cjs +1 -2
  141. package/lib/query/clauses/OffsetClause.d.ts +21 -0
  142. package/lib/query/clauses/OrderByClause.cjs +1 -2
  143. package/lib/query/clauses/OrderByClause.d.ts +37 -0
  144. package/lib/query/clauses/SelectClause.cjs +1 -2
  145. package/lib/query/clauses/SelectClause.d.ts +47 -0
  146. package/lib/query/clauses/SelectorBasedClause.cjs +1 -2
  147. package/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
  148. package/lib/query/clauses/ValuesClause.cjs +1 -2
  149. package/lib/query/clauses/ValuesClause.d.ts +21 -0
  150. package/lib/query/clauses/WhereClause.cjs +1 -2
  151. package/lib/query/clauses/WhereClause.d.ts +46 -0
  152. package/lib/query/clauses/index.cjs +1 -2
  153. package/lib/query/clauses/index.d.ts +10 -0
  154. package/lib/query/constants.cjs +1 -2
  155. package/lib/query/constants.d.ts +79 -0
  156. package/lib/query/errors.cjs +1 -2
  157. package/lib/query/errors.d.ts +7 -0
  158. package/lib/query/index.cjs +1 -2
  159. package/lib/query/index.d.ts +12 -0
  160. package/lib/query/options.cjs +1 -2
  161. package/lib/query/options.d.ts +372 -0
  162. package/lib/query/selectors.cjs +1 -2
  163. package/lib/query/selectors.d.ts +38 -0
  164. package/lib/query/types.cjs +1 -2
  165. package/lib/query/types.d.ts +2 -0
  166. package/lib/repository/Context.cjs +1 -2
  167. package/lib/repository/Context.d.ts +10 -0
  168. package/lib/repository/Repository.cjs +1 -2
  169. package/lib/repository/Repository.d.ts +70 -0
  170. package/lib/repository/constants.cjs +1 -2
  171. package/lib/repository/constants.d.ts +25 -0
  172. package/lib/repository/decorators.cjs +1 -2
  173. package/lib/repository/decorators.d.ts +2 -0
  174. package/lib/repository/errors.cjs +1 -2
  175. package/lib/repository/errors.d.ts +12 -0
  176. package/lib/repository/index.cjs +1 -2
  177. package/lib/repository/index.d.ts +8 -0
  178. package/lib/repository/injectables.cjs +1 -2
  179. package/lib/repository/injectables.d.ts +5 -0
  180. package/lib/repository/types.cjs +1 -2
  181. package/lib/repository/types.d.ts +15 -0
  182. package/lib/repository/utils.cjs +1 -2
  183. package/lib/repository/utils.d.ts +3 -0
  184. package/lib/validators/ClauseSequenceValidator.cjs +1 -2
  185. package/lib/validators/ClauseSequenceValidator.d.ts +28 -0
  186. package/lib/validators/decorators.cjs +1 -2
  187. package/lib/validators/decorators.d.ts +10 -0
  188. package/lib/validators/index.cjs +1 -2
  189. package/lib/validators/index.d.ts +2 -0
  190. package/package.json +24 -37
  191. package/dist/core.js +0 -2
  192. package/dist/core.js.LICENSE.txt +0 -14
  193. package/dist/esm/core.js +0 -2
  194. package/dist/esm/core.js.LICENSE.txt +0 -14
  195. /package/{dist/types → lib/esm}/identity/decorators.d.ts +0 -0
  196. /package/{dist/types → lib/esm}/identity/index.d.ts +0 -0
  197. /package/{dist/types → lib/esm}/identity/utils.d.ts +0 -0
  198. /package/{dist/types → lib/esm}/interfaces/Builder.d.ts +0 -0
  199. /package/{dist/types → lib/esm}/interfaces/Executor.d.ts +0 -0
  200. /package/{dist/types → lib/esm}/interfaces/Observable.d.ts +0 -0
  201. /package/{dist/types → lib/esm}/interfaces/Observer.d.ts +0 -0
  202. /package/{dist/types → lib/esm}/interfaces/Paginatable.d.ts +0 -0
  203. /package/{dist/types → lib/esm}/interfaces/Queriable.d.ts +0 -0
  204. /package/{dist/types → lib/esm}/interfaces/RawExecutor.d.ts +0 -0
  205. /package/{dist/types → lib/esm}/interfaces/SequenceOptions.d.ts +0 -0
  206. /package/{dist/types → lib/esm}/interfaces/index.d.ts +0 -0
  207. /package/{dist/types → lib/esm}/model/BaseModel.d.ts +0 -0
  208. /package/{dist/types → lib/esm}/model/IdentifiedBaseModel.d.ts +0 -0
  209. /package/{dist/types → lib/esm}/model/construction.d.ts +0 -0
  210. /package/{dist/types → lib/esm}/model/decorators.d.ts +0 -0
  211. /package/{dist/types → lib/esm}/model/index.d.ts +0 -0
  212. /package/{dist/types → lib/esm}/model/types.d.ts +0 -0
  213. /package/{dist/types → lib/esm}/persistence/Adapter.d.ts +0 -0
  214. /package/{dist/types → lib/esm}/persistence/Sequence.d.ts +0 -0
  215. /package/{dist/types → lib/esm}/persistence/constants.d.ts +0 -0
  216. /package/{dist/types → lib/esm}/persistence/decorators.d.ts +0 -0
  217. /package/{dist/types → lib/esm}/persistence/errors.d.ts +0 -0
  218. /package/{dist/types → lib/esm}/persistence/index.d.ts +0 -0
  219. /package/{dist/types → lib/esm}/query/Clause.d.ts +0 -0
  220. /package/{dist/types → lib/esm}/query/ClauseFactory.d.ts +0 -0
  221. /package/{dist/types → lib/esm}/query/Condition.d.ts +0 -0
  222. /package/{dist/types → lib/esm}/query/Paginator.d.ts +0 -0
  223. /package/{dist/types → lib/esm}/query/Query.d.ts +0 -0
  224. /package/{dist/types → lib/esm}/query/clauses/FromClause.d.ts +0 -0
  225. /package/{dist/types → lib/esm}/query/clauses/GroupByClause.d.ts +0 -0
  226. /package/{dist/types → lib/esm}/query/clauses/InsertClause.d.ts +0 -0
  227. /package/{dist/types → lib/esm}/query/clauses/LimitClause.d.ts +0 -0
  228. /package/{dist/types → lib/esm}/query/clauses/OffsetClause.d.ts +0 -0
  229. /package/{dist/types → lib/esm}/query/clauses/OrderByClause.d.ts +0 -0
  230. /package/{dist/types → lib/esm}/query/clauses/SelectClause.d.ts +0 -0
  231. /package/{dist/types → lib/esm}/query/clauses/SelectorBasedClause.d.ts +0 -0
  232. /package/{dist/types → lib/esm}/query/clauses/ValuesClause.d.ts +0 -0
  233. /package/{dist/types → lib/esm}/query/clauses/WhereClause.d.ts +0 -0
  234. /package/{dist/types → lib/esm}/query/clauses/index.d.ts +0 -0
  235. /package/{dist/types → lib/esm}/query/constants.d.ts +0 -0
  236. /package/{dist/types → lib/esm}/query/errors.d.ts +0 -0
  237. /package/{dist/types → lib/esm}/query/index.d.ts +0 -0
  238. /package/{dist/types → lib/esm}/query/options.d.ts +0 -0
  239. /package/{dist/types → lib/esm}/query/selectors.d.ts +0 -0
  240. /package/{dist/types → lib/esm}/query/types.d.ts +0 -0
  241. /package/{dist/types → lib/esm}/repository/Context.d.ts +0 -0
  242. /package/{dist/types → lib/esm}/repository/Repository.d.ts +0 -0
  243. /package/{dist/types → lib/esm}/repository/constants.d.ts +0 -0
  244. /package/{dist/types → lib/esm}/repository/decorators.d.ts +0 -0
  245. /package/{dist/types → lib/esm}/repository/errors.d.ts +0 -0
  246. /package/{dist/types → lib/esm}/repository/index.d.ts +0 -0
  247. /package/{dist/types → lib/esm}/repository/injectables.d.ts +0 -0
  248. /package/{dist/types → lib/esm}/repository/types.d.ts +0 -0
  249. /package/{dist/types → lib/esm}/repository/utils.d.ts +0 -0
  250. /package/{dist/types → lib/esm}/validators/ClauseSequenceValidator.d.ts +0 -0
  251. /package/{dist/types → lib/esm}/validators/decorators.d.ts +0 -0
  252. /package/{dist/types → lib/esm}/validators/index.d.ts +0 -0
@@ -0,0 +1,3 @@
1
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
2
+ export declare function getTableName<M extends Model>(model: M | Constructor<M>): any;
3
+ export declare function sequenceNameForModel<M extends Model>(model: M | Constructor<M>, ...args: string[]): string;
package/lib/index.cjs CHANGED
@@ -42,6 +42,5 @@ injectable_decorators_1.Injectables.setRegistry(new repository_1.InjectablesRegi
42
42
  * @const VERSION
43
43
  * @memberOf module:ts-workspace
44
44
  */
45
- exports.VERSION = "0.3.38";
46
-
47
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFtRDtBQUNuRCwyRUFBOEQ7QUFFOUQ7Ozs7R0FJRztBQUVIOzs7OztHQUtHO0FBRUgsNkNBQTJCO0FBQzNCLCtDQUE2QjtBQUM3QiwwQ0FBd0I7QUFDeEIsZ0RBQThCO0FBQzlCLDBDQUF3QjtBQUN4QiwrQ0FBNkI7QUFDN0IsK0NBQTZCO0FBRTdCLG1DQUFXLENBQUMsV0FBVyxDQUFDLElBQUksZ0NBQW1CLEVBQUUsQ0FBQyxDQUFDO0FBRW5EOzs7OztHQUtHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZXNSZWdpc3RyeSB9IGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IEluamVjdGFibGVzIH0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBNb2R1bGUgc3VtbWFyeVxuICogQGRlc2NyaXB0aW9uIE1vZHVsZSBkZXNjcmlwdGlvblxuICogQG1vZHVsZSB0cy13b3Jrc3BhY2VcbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IE5hbWVzcGFjZSBzdW1tYXJ5XG4gKiBAZGVzY3JpcHRpb24gTmFtZXNwYWNlIGRlc2NyaXB0aW9uXG4gKiBAbmFtZXNwYWNlIE5hbWVzcGFjZVxuICogQG1lbWJlck9mIG1vZHVsZTp0cy13b3Jrc3BhY2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BlcnNpc3RlbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdG9yc1wiO1xuXG5JbmplY3RhYmxlcy5zZXRSZWdpc3RyeShuZXcgSW5qZWN0YWJsZXNSZWdpc3RyeSgpKTtcblxuLyoqXG4gKiBAc3VtbWFyeSBzdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAZGVzY3JpcHRpb24gdGhpcyBpcyBob3cgeW91IHNob3VsZCBkb2N1bWVudCBhIGNvbnN0YW50XG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTp0cy13b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjAuMy4zOFwiO1xuIl19
45
+ exports.VERSION = "0.4.1";
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBbUQ7QUFDbkQsMkVBQThEO0FBRTlEOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUVILDZDQUEyQjtBQUMzQiwrQ0FBNkI7QUFDN0IsMENBQXdCO0FBQ3hCLGdEQUE4QjtBQUM5QiwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBQzdCLCtDQUE2QjtBQUU3QixtQ0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGdDQUFtQixFQUFFLENBQUMsQ0FBQztBQUVuRDs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGVzUmVnaXN0cnkgfSBmcm9tIFwiLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlcyB9IGZyb20gXCJAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTW9kdWxlIHN1bW1hcnlcbiAqIEBkZXNjcmlwdGlvbiBNb2R1bGUgZGVzY3JpcHRpb25cbiAqIEBtb2R1bGUgdHMtd29ya3NwYWNlXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBOYW1lc3BhY2Ugc3VtbWFyeVxuICogQGRlc2NyaXB0aW9uIE5hbWVzcGFjZSBkZXNjcmlwdGlvblxuICogQG5hbWVzcGFjZSBOYW1lc3BhY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dHMtd29ya3NwYWNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wZXJzaXN0ZW5jZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcXVlcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRvcnNcIjtcblxuSW5qZWN0YWJsZXMuc2V0UmVnaXN0cnkobmV3IEluamVjdGFibGVzUmVnaXN0cnkoKSk7XG5cbi8qKlxuICogQHN1bW1hcnkgc3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQGRlc2NyaXB0aW9uIHRoaXMgaXMgaG93IHlvdSBzaG91bGQgZG9jdW1lbnQgYSBjb25zdGFudFxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dHMtd29ya3NwYWNlXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
package/lib/index.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @summary Module summary
3
+ * @description Module description
4
+ * @module ts-workspace
5
+ */
6
+ /**
7
+ * @summary Namespace summary
8
+ * @description Namespace description
9
+ * @namespace Namespace
10
+ * @memberOf module:ts-workspace
11
+ */
12
+ export * from "./identity";
13
+ export * from "./interfaces";
14
+ export * from "./model";
15
+ export * from "./persistence";
16
+ export * from "./query";
17
+ export * from "./repository";
18
+ export * from "./validators";
19
+ /**
20
+ * @summary stores the current package version
21
+ * @description this is how you should document a constant
22
+ * @const VERSION
23
+ * @memberOf module:ts-workspace
24
+ */
25
+ export declare const VERSION = "0.4.1";
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbnRlcmZhY2VzL0J1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IFN0YW5kYXJkIEJ1aWxkZXIgQVBpIGZvciB0aGUgQnVpbGRlciBkZXNpZ24gcGF0dGVyblxuICogQGRlc2NyaXB0aW9uIEV4cG9zZSB0aGUgYnVpbGQgbWV0aG9kXG4gKlxuICogQGludGVyZmFjZSBCdWlsZGVyXG4gKlxuICogQGNhdGVnb3J5IENvbnN0cnVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXI8VD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgQnVpbGQgdGhlIE9iamVjdFxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBidWlsZCguLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgU3RhbmRhcmQgQnVpbGRlciBBUGkgZm9yIHRoZSBCdWlsZGVyIGRlc2lnbiBwYXR0ZXJuXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlIHRoZSBidWlsZCBtZXRob2RcbiAqXG4gKiBAaW50ZXJmYWNlIEJ1aWxkZXJcbiAqXG4gKiBAY2F0ZWdvcnkgQ29uc3RydWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlcjxUPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBCdWlsZCB0aGUgT2JqZWN0XG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGJ1aWxkKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @summary Standard Builder APi for the Builder design pattern
3
+ * @description Expose the build method
4
+ *
5
+ * @interface Builder
6
+ *
7
+ * @category Construction
8
+ */
9
+ export interface Builder<T> {
10
+ /**
11
+ * @summary Build the Object
12
+ *
13
+ * @method
14
+ */
15
+ build(...args: any[]): T;
16
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9FeGVjdXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgcHJvY2Vzc2VzIHF1ZXJ5IG9iamVjdHNcbiAqXG4gKiBAdHlwZWRlZiBWIHRoZSBvdXRwdXRcbiAqXG4gKiBAaW50ZXJmYWNlIEV4ZWN1dG9yXG4gKlxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0b3Ige1xuICAvKipcbiAgICogQHN1bW1hcnkgUHJvY2Vzc2VzIGl0c2VsZlxuICAgKlxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGV4ZWN1dGU8Vj4oLi4uYXJnczogYW55KTogUHJvbWlzZTxWPjtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9FeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBwcm9jZXNzZXMgcXVlcnkgb2JqZWN0c1xuICpcbiAqIEB0eXBlZGVmIFYgdGhlIG91dHB1dFxuICpcbiAqIEBpbnRlcmZhY2UgRXhlY3V0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgUXVlcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRvciB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBQcm9jZXNzZXMgaXRzZWxmXG4gICAqXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZXhlY3V0ZTxWPiguLi5hcmdzOiBhbnkpOiBQcm9taXNlPFY+O1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @summary processes query objects
3
+ *
4
+ * @typedef V the output
5
+ *
6
+ * @interface Executor
7
+ *
8
+ * @category Query
9
+ */
10
+ export interface Executor {
11
+ /**
12
+ * @summary Processes itself
13
+ *
14
+ * @param {any[]} args
15
+ *
16
+ * @method
17
+ */
18
+ execute<V>(...args: any): Promise<V>;
19
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL09ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbnRlcmZhY2VzL09ic2VydmFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gXCIuL09ic2VydmVyXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgT2JzZXJ2YWJsZSBBcGlcbiAqIEBkZXNjcmlwdGlvbiBtYW5hZ2UgYW5kIHVwZGF0ZSB7QGxpbmsgT2JzZXJ2ZXJ9c1xuICpcbiAqIEBpbnRlcmZhY2UgT2JzZXJ2YWJsZVxuICpcbiAqIEBjYXRlZ29yeSBPYnNlcnZhYmxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFibGUge1xuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXIgbmV3IHtAbGluayBPYnNlcnZlcn1zXG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIG9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZDtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFVucmVnaXN0ZXIgbmV3IHtAbGluayBPYnNlcnZlcn1zXG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHVuT2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkO1xuICAvKipcbiAgICogQHN1bW1hcnkgaGF2ZSByZWdpc3RlcmVkIHtAbGluayBPYnNlcnZlcn1zIHVwZGF0ZSB0aGVtc2VsdmVzXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgdXBkYXRlT2JzZXJ2ZXJzKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JzZXJ2YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL09ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSBcIi4vT2JzZXJ2ZXJcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBPYnNlcnZhYmxlIEFwaVxuICogQGRlc2NyaXB0aW9uIG1hbmFnZSBhbmQgdXBkYXRlIHtAbGluayBPYnNlcnZlcn1zXG4gKlxuICogQGludGVyZmFjZSBPYnNlcnZhYmxlXG4gKlxuICogQGNhdGVnb3J5IE9ic2VydmFibGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJsZSB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlciBuZXcge0BsaW5rIE9ic2VydmVyfXNcbiAgICogQHBhcmFtIHtPYnNlcnZlcn0gb2JzZXJ2ZXJcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgb2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkO1xuICAvKipcbiAgICogQHN1bW1hcnkgVW5yZWdpc3RlciBuZXcge0BsaW5rIE9ic2VydmVyfXNcbiAgICogQHBhcmFtIHtPYnNlcnZlcn0gb2JzZXJ2ZXJcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgdW5PYnNlcnZlKG9ic2VydmVyOiBPYnNlcnZlcik6IHZvaWQ7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBoYXZlIHJlZ2lzdGVyZWQge0BsaW5rIE9ic2VydmVyfXMgdXBkYXRlIHRoZW1zZWx2ZXNcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAbWV0aG9kXG4gICAqL1xuICB1cGRhdGVPYnNlcnZlcnMoLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
@@ -0,0 +1,31 @@
1
+ import { Observer } from "./Observer";
2
+ /**
3
+ * @summary Observable Api
4
+ * @description manage and update {@link Observer}s
5
+ *
6
+ * @interface Observable
7
+ *
8
+ * @category Observables
9
+ */
10
+ export interface Observable {
11
+ /**
12
+ * @summary Register new {@link Observer}s
13
+ * @param {Observer} observer
14
+ *
15
+ * @method
16
+ */
17
+ observe(observer: Observer): void;
18
+ /**
19
+ * @summary Unregister new {@link Observer}s
20
+ * @param {Observer} observer
21
+ *
22
+ * @method
23
+ */
24
+ unObserve(observer: Observer): void;
25
+ /**
26
+ * @summary have registered {@link Observer}s update themselves
27
+ * @param {any[]} args
28
+ * @method
29
+ */
30
+ updateObservers(...args: any[]): Promise<void>;
31
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL09ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9PYnNlcnZlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgT2JzZXJ2ZXIgQXBpXG4gKiBAZGVzY3JpcHRpb24gd2lsbCBiZSBjYWxsZWQgYnkgdGhlIHtAbGluayBPYnNlcnZhYmxlfVxuICpcbiAqIEBpbnRlcmZhY2UgT2JzZXJ2ZXJcbiAqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2YWJsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZlciB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWZyZXNoZXMgdGhlIE9ic2VydmVyXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgcmVmcmVzaCguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9PYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBPYnNlcnZlciBBcGlcbiAqIEBkZXNjcmlwdGlvbiB3aWxsIGJlIGNhbGxlZCBieSB0aGUge0BsaW5rIE9ic2VydmFibGV9XG4gKlxuICogQGludGVyZmFjZSBPYnNlcnZlclxuICpcbiAqIEBjYXRlZ29yeSBPYnNlcnZhYmxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmVyIHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZnJlc2hlcyB0aGUgT2JzZXJ2ZXJcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAbWV0aG9kXG4gICAqL1xuICByZWZyZXNoKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @summary Observer Api
3
+ * @description will be called by the {@link Observable}
4
+ *
5
+ * @interface Observer
6
+ *
7
+ * @category Observables
8
+ */
9
+ export interface Observer {
10
+ /**
11
+ * @summary Refreshes the Observer
12
+ * @param {any[]} args
13
+ * @method
14
+ */
15
+ refresh(...args: any[]): Promise<void>;
16
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1BhZ2luYXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9QYWdpbmF0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2luYXRvciB9IGZyb20gXCIuLi9xdWVyeS9QYWdpbmF0b3JcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0YWJsZSB7XG4gIHBhZ2luYXRlPFY+KC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxQYWdpbmF0b3I8ViwgYW55Pj47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9QYWdpbmF0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5hdG9yIH0gZnJvbSBcIi4uL3F1ZXJ5L1BhZ2luYXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRhYmxlIHtcbiAgcGFnaW5hdGU8Vj4oLi4uYXJnczogYW55W10pOiBQcm9taXNlPFBhZ2luYXRvcjxWLCBhbnk+Pjtcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import { Paginator } from "../query/Paginator";
2
+ export interface Paginatable {
3
+ paginate<V>(...args: any[]): Promise<Paginator<V, any>>;
4
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1F1ZXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImludGVyZmFjZXMvUXVlcmlhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZGl0aW9uLCBTZWxlY3RTZWxlY3RvciwgV2hlcmVPcHRpb24gfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyaWFibGUge1xuICBzZWxlY3Qoc2VsZWN0b3I/OiBTZWxlY3RTZWxlY3Rvcik6IFdoZXJlT3B0aW9uO1xuXG4gIHF1ZXJ5PFY+KFxuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uLFxuICAgIG9yZGVyQnk6IHN0cmluZyxcbiAgICBvcmRlcjogT3JkZXJEaXJlY3Rpb24sXG4gICAgbGltaXQ/OiBudW1iZXIsXG4gICAgc2tpcD86IG51bWJlcixcbiAgKTogUHJvbWlzZTxWPjtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvUXVlcmlhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25kaXRpb24sIFNlbGVjdFNlbGVjdG9yLCBXaGVyZU9wdGlvbiB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJpYWJsZSB7XG4gIHNlbGVjdChzZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yKTogV2hlcmVPcHRpb247XG5cbiAgcXVlcnk8Vj4oXG4gICAgY29uZGl0aW9uOiBDb25kaXRpb24sXG4gICAgb3JkZXJCeTogc3RyaW5nLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbixcbiAgICBsaW1pdD86IG51bWJlcixcbiAgICBza2lwPzogbnVtYmVyLFxuICApOiBQcm9taXNlPFY+O1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ import { Condition, SelectSelector, WhereOption } from "../query";
2
+ import { OrderDirection } from "../repository";
3
+ export interface Queriable {
4
+ select(selector?: SelectSelector): WhereOption;
5
+ query<V>(condition: Condition, orderBy: string, order: OrderDirection, limit?: number, skip?: number): Promise<V>;
6
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1Jhd0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9SYXdFeGVjdXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgRXhlY3V0ZXMgYSByYXcgaW5zdHJ1Y3Rpb24gaW4gdGhlIERhdGFiYXNlXG4gKiBAdHlwZURlZiBRIFRoZSBpbnB1dCB0eXBlXG4gKiBAdHlwZURlZiBSIFRoZSByZXN1bHQgdHlwZVxuICpcbiAqIEBpbnRlcmZhY2UgUmF3RXhlY3V0b3JcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd0V4ZWN1dG9yPFE+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIGEgcmF3IGluc3RydWN0aW9uIGluIHRoZSBEYXRhYmFzZVxuICAgKlxuICAgKiBAdHlwZURlZiBWIHRoZSBleHBlY3RlZCBvdXRjb21lIG9mIHRoZSBpbnN0cnVjdGlvblxuICAgKiBAcGFyYW0gcmF3SW5wdXRcbiAgICogQHBhcmFtIGFyZ3NcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgcmF3PFI+KHJhd0lucHV0OiBRLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmF3RXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9SYXdFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBFeGVjdXRlcyBhIHJhdyBpbnN0cnVjdGlvbiBpbiB0aGUgRGF0YWJhc2VcbiAqIEB0eXBlRGVmIFEgVGhlIGlucHV0IHR5cGVcbiAqIEB0eXBlRGVmIFIgVGhlIHJlc3VsdCB0eXBlXG4gKlxuICogQGludGVyZmFjZSBSYXdFeGVjdXRvclxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3RXhlY3V0b3I8UT4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgRXhlY3V0ZXMgYSByYXcgaW5zdHJ1Y3Rpb24gaW4gdGhlIERhdGFiYXNlXG4gICAqXG4gICAqIEB0eXBlRGVmIFYgdGhlIGV4cGVjdGVkIG91dGNvbWUgb2YgdGhlIGluc3RydWN0aW9uXG4gICAqIEBwYXJhbSByYXdJbnB1dFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICByYXc8Uj4ocmF3SW5wdXQ6IFEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSPjtcbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @summary Executes a raw instruction in the Database
3
+ * @typeDef Q The input type
4
+ * @typeDef R The result type
5
+ *
6
+ * @interface RawExecutor
7
+ * @category Query
8
+ */
9
+ export interface RawExecutor<Q> {
10
+ /**
11
+ * @summary Executes a raw instruction in the Database
12
+ *
13
+ * @typeDef V the expected outcome of the instruction
14
+ * @param rawInput
15
+ * @param args
16
+ *
17
+ * @method
18
+ */
19
+ raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
20
+ }
@@ -19,5 +19,4 @@ exports.BigIntSequence = {
19
19
  incrementBy: 1,
20
20
  cycle: false,
21
21
  };
22
-
23
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQmEsUUFBQSxzQkFBc0IsR0FBb0I7SUFDckQsSUFBSSxFQUFFLFFBQVE7SUFDZCxTQUFTLEVBQUUsQ0FBQztJQUNaLFdBQVcsRUFBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLEtBQUs7Q0FDYixDQUFDO0FBRVcsUUFBQSxlQUFlLEdBQW9CO0lBQzlDLElBQUksRUFBRSxRQUFRO0lBQ2QsU0FBUyxFQUFFLENBQUM7SUFDWixXQUFXLEVBQUUsQ0FBQztJQUNkLEtBQUssRUFBRSxLQUFLO0NBQ2IsQ0FBQztBQUVXLFFBQUEsY0FBYyxHQUFvQjtJQUM3QyxJQUFJLEVBQUUsUUFBUTtJQUNkLFNBQVMsRUFBRSxDQUFDO0lBQ1osV0FBVyxFQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsS0FBSztDQUNiLENBQUMiLCJmaWxlIjoiaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIFNlcXVlbmNlT3B0aW9uc1xuICpcbiAqIEBwcm9wIHtzdHJpbmcgfCBudW1iZXJ9IFtzdGFydGluZ1ZhbHVlXSBkZWZpbmVzIHRoZSBzdGFydGluZyB2YWx1ZSB3aGVuIHNlcXVlbmNlIGRvZXN0IG5vdCBleGlzdFxuICpcbiAqIEBjYXRlZ29yeSBTZXF1ZW5jZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZU9wdGlvbnMge1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlOiBcIk51bWJlclwiIHwgXCJCaWdJbnRcIiB8IHVuZGVmaW5lZDtcbiAgc3RhcnRXaXRoOiBudW1iZXI7XG4gIGluY3JlbWVudEJ5OiBudW1iZXI7XG4gIG1pblZhbHVlPzogbnVtYmVyO1xuICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgY3ljbGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0U2VxdWVuY2VPcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMgPSB7XG4gIHR5cGU6IFwiTnVtYmVyXCIsXG4gIHN0YXJ0V2l0aDogMCxcbiAgaW5jcmVtZW50Qnk6IDEsXG4gIGN5Y2xlOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjb25zdCBOdW1lcmljU2VxdWVuY2U6IFNlcXVlbmNlT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJOdW1iZXJcIixcbiAgc3RhcnRXaXRoOiAwLFxuICBpbmNyZW1lbnRCeTogMSxcbiAgY3ljbGU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNvbnN0IEJpZ0ludFNlcXVlbmNlOiBTZXF1ZW5jZU9wdGlvbnMgPSB7XG4gIHR5cGU6IFwiQmlnSW50XCIsXG4gIHN0YXJ0V2l0aDogMCxcbiAgaW5jcmVtZW50Qnk6IDEsXG4gIGN5Y2xlOiBmYWxzZSxcbn07XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2VPcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvU2VxdWVuY2VPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlCYSxRQUFBLHNCQUFzQixHQUFvQjtJQUNyRCxJQUFJLEVBQUUsUUFBUTtJQUNkLFNBQVMsRUFBRSxDQUFDO0lBQ1osV0FBVyxFQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsS0FBSztDQUNiLENBQUM7QUFFVyxRQUFBLGVBQWUsR0FBb0I7SUFDOUMsSUFBSSxFQUFFLFFBQVE7SUFDZCxTQUFTLEVBQUUsQ0FBQztJQUNaLFdBQVcsRUFBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLEtBQUs7Q0FDYixDQUFDO0FBRVcsUUFBQSxjQUFjLEdBQW9CO0lBQzdDLElBQUksRUFBRSxRQUFRO0lBQ2QsU0FBUyxFQUFFLENBQUM7SUFDWixXQUFXLEVBQUUsQ0FBQztJQUNkLEtBQUssRUFBRSxLQUFLO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYgU2VxdWVuY2VPcHRpb25zXG4gKlxuICogQHByb3Age3N0cmluZyB8IG51bWJlcn0gW3N0YXJ0aW5nVmFsdWVdIGRlZmluZXMgdGhlIHN0YXJ0aW5nIHZhbHVlIHdoZW4gc2VxdWVuY2UgZG9lc3Qgbm90IGV4aXN0XG4gKlxuICogQGNhdGVnb3J5IFNlcXVlbmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcXVlbmNlT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU6IFwiTnVtYmVyXCIgfCBcIkJpZ0ludFwiIHwgdW5kZWZpbmVkO1xuICBzdGFydFdpdGg6IG51bWJlcjtcbiAgaW5jcmVtZW50Qnk6IG51bWJlcjtcbiAgbWluVmFsdWU/OiBudW1iZXI7XG4gIG1heFZhbHVlPzogbnVtYmVyO1xuICBjeWNsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IERlZmF1bHRTZXF1ZW5jZU9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJOdW1iZXJcIixcbiAgc3RhcnRXaXRoOiAwLFxuICBpbmNyZW1lbnRCeTogMSxcbiAgY3ljbGU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNvbnN0IE51bWVyaWNTZXF1ZW5jZTogU2VxdWVuY2VPcHRpb25zID0ge1xuICB0eXBlOiBcIk51bWJlclwiLFxuICBzdGFydFdpdGg6IDAsXG4gIGluY3JlbWVudEJ5OiAxLFxuICBjeWNsZTogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgQmlnSW50U2VxdWVuY2U6IFNlcXVlbmNlT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJCaWdJbnRcIixcbiAgc3RhcnRXaXRoOiAwLFxuICBpbmNyZW1lbnRCeTogMSxcbiAgY3ljbGU6IGZhbHNlLFxufTtcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @typedef SequenceOptions
3
+ *
4
+ * @prop {string | number} [startingValue] defines the starting value when sequence doest not exist
5
+ *
6
+ * @category Sequences
7
+ */
8
+ export interface SequenceOptions {
9
+ name?: string;
10
+ type: "Number" | "BigInt" | undefined;
11
+ startWith: number;
12
+ incrementBy: number;
13
+ minValue?: number;
14
+ maxValue?: number;
15
+ cycle: boolean;
16
+ }
17
+ export declare const DefaultSequenceOptions: SequenceOptions;
18
+ export declare const NumericSequence: SequenceOptions;
19
+ export declare const BigIntSequence: SequenceOptions;
@@ -21,5 +21,4 @@ __exportStar(require("./Observer.cjs"), exports);
21
21
  __exportStar(require("./Queriable.cjs"), exports);
22
22
  __exportStar(require("./RawExecutor.cjs"), exports);
23
23
  __exportStar(require("./SequenceOptions.cjs"), exports);
24
-
25
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsNkNBQTJCO0FBQzNCLCtDQUE2QjtBQUM3Qiw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLGdEQUE4QjtBQUM5QixvREFBa0MiLCJmaWxlIjoiaW50ZXJmYWNlcy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0J1aWxkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0V4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PYnNlcnZhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PYnNlcnZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUXVlcmlhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SYXdFeGVjdXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU2VxdWVuY2VPcHRpb25zXCI7XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLDZDQUEyQjtBQUMzQiwrQ0FBNkI7QUFDN0IsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QixnREFBOEI7QUFDOUIsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL09ic2VydmFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL09ic2VydmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9RdWVyaWFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1Jhd0V4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TZXF1ZW5jZU9wdGlvbnNcIjtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export * from "./Builder";
2
+ export * from "./Executor";
3
+ export * from "./Observable";
4
+ export * from "./Observer";
5
+ export * from "./Queriable";
6
+ export * from "./RawExecutor";
7
+ export * from "./SequenceOptions";
@@ -26,5 +26,4 @@ __decorate([
26
26
  (0, db_decorators_1.timestamp)(),
27
27
  __metadata("design:type", Date)
28
28
  ], BaseModel.prototype, "updatedOn", void 0);
29
-
30
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9CYXNlTW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQWtFO0FBQ2xFLHlFQUFpRTtBQUVqRSxNQUFzQixTQUFVLFNBQVEsNEJBQUs7SUFNM0MsWUFBc0IsR0FBeUI7UUFDN0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBVEQsOEJBU0M7QUFQQztJQURDLElBQUEseUJBQVMsRUFBQyw0QkFBWSxDQUFDLE1BQU0sQ0FBQzs4QkFDbkIsSUFBSTs0Q0FBQztBQUVqQjtJQURDLElBQUEseUJBQVMsR0FBRTs4QkFDQSxJQUFJOzRDQUFDIiwiZmlsZSI6Im1vZGVsL0Jhc2VNb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERCT3BlcmF0aW9ucywgdGltZXN0YW1wIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTW9kZWwgZXh0ZW5kcyBNb2RlbCB7XG4gIEB0aW1lc3RhbXAoREJPcGVyYXRpb25zLkNSRUFURSlcbiAgY3JlYXRlZE9uITogRGF0ZTtcbiAgQHRpbWVzdGFtcCgpXG4gIHVwZGF0ZWRPbiE6IERhdGU7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPEJhc2VNb2RlbD4pIHtcbiAgICBzdXBlcihhcmcpO1xuICB9XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0Jhc2VNb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyREFBa0U7QUFDbEUseUVBQWlFO0FBRWpFLE1BQXNCLFNBQVUsU0FBUSw0QkFBSztJQU0zQyxZQUFzQixHQUF5QjtRQUM3QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUFURCw4QkFTQztBQVBDO0lBREMsSUFBQSx5QkFBUyxFQUFDLDRCQUFZLENBQUMsTUFBTSxDQUFDOzhCQUNuQixJQUFJOzRDQUFDO0FBRWpCO0lBREMsSUFBQSx5QkFBUyxHQUFFOzhCQUNBLElBQUk7NENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQk9wZXJhdGlvbnMsIHRpbWVzdGFtcCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxBcmcsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU1vZGVsIGV4dGVuZHMgTW9kZWwge1xuICBAdGltZXN0YW1wKERCT3BlcmF0aW9ucy5DUkVBVEUpXG4gIGNyZWF0ZWRPbiE6IERhdGU7XG4gIEB0aW1lc3RhbXAoKVxuICB1cGRhdGVkT24hOiBEYXRlO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihhcmc/OiBNb2RlbEFyZzxCYXNlTW9kZWw+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ export declare abstract class BaseModel extends Model {
3
+ createdOn: Date;
4
+ updatedOn: Date;
5
+ protected constructor(arg?: ModelArg<BaseModel>);
6
+ }
@@ -26,5 +26,4 @@ __decorate([
26
26
  (0, decorators_1.updatedBy)(),
27
27
  __metadata("design:type", String)
28
28
  ], IdentifiedBaseModel.prototype, "updatedBy", void 0);
29
-
30
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9JZGVudGlmaWVkQmFzZU1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLDZDQUFvRDtBQUNwRCwyQ0FBd0M7QUFFeEMsTUFBc0IsbUJBQW9CLFNBQVEscUJBQVM7SUFNekQsWUFBc0IsR0FBbUM7UUFDdkQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBVEQsa0RBU0M7QUFQQztJQURDLElBQUEsc0JBQVMsR0FBRTs7c0RBQ087QUFFbkI7SUFEQyxJQUFBLHNCQUFTLEdBQUU7O3NEQUNPIiwiZmlsZSI6Im1vZGVsL0lkZW50aWZpZWRCYXNlTW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGNyZWF0ZWRCeSwgdXBkYXRlZEJ5IH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSBcIi4vQmFzZU1vZGVsXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZGVudGlmaWVkQmFzZU1vZGVsIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgQGNyZWF0ZWRCeSgpXG4gIGNyZWF0ZWRCeSE6IHN0cmluZztcbiAgQHVwZGF0ZWRCeSgpXG4gIHVwZGF0ZWRCeSE6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYXJnPzogTW9kZWxBcmc8SWRlbnRpZmllZEJhc2VNb2RlbD4pIHtcbiAgICBzdXBlcihhcmcpO1xuICB9XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWRlbnRpZmllZEJhc2VNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9JZGVudGlmaWVkQmFzZU1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLDZDQUFvRDtBQUNwRCwyQ0FBd0M7QUFFeEMsTUFBc0IsbUJBQW9CLFNBQVEscUJBQVM7SUFNekQsWUFBc0IsR0FBbUM7UUFDdkQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBVEQsa0RBU0M7QUFQQztJQURDLElBQUEsc0JBQVMsR0FBRTs7c0RBQ087QUFFbkI7SUFEQyxJQUFBLHNCQUFTLEdBQUU7O3NEQUNPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxBcmcgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBjcmVhdGVkQnksIHVwZGF0ZWRCeSB9IGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gXCIuL0Jhc2VNb2RlbFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWRlbnRpZmllZEJhc2VNb2RlbCBleHRlbmRzIEJhc2VNb2RlbCB7XG4gIEBjcmVhdGVkQnkoKVxuICBjcmVhdGVkQnkhOiBzdHJpbmc7XG4gIEB1cGRhdGVkQnkoKVxuICB1cGRhdGVkQnkhOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPElkZW50aWZpZWRCYXNlTW9kZWw+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { BaseModel } from "./BaseModel";
3
+ export declare abstract class IdentifiedBaseModel extends BaseModel {
4
+ createdBy: string;
5
+ updatedBy: string;
6
+ protected constructor(arg?: ModelArg<IdentifiedBaseModel>);
7
+ }
@@ -34,5 +34,4 @@ exports.User = User = __decorate([
34
34
  (0, decorator_validation_1.model)(),
35
35
  __metadata("design:paramtypes", [Object])
36
36
  ], User);
37
-
38
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9Vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlFQUE4RTtBQUU5RSx1REFBNEM7QUFHckMsSUFBTSxJQUFJLEdBQVYsTUFBTSxJQUFLLFNBQVEsNEJBQUs7SUFVN0IsWUFBWSxHQUFvQjtRQUM5QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQTtBQWJZLG9CQUFJO0FBRWY7SUFEQyxJQUFBLGVBQUUsR0FBRTs7Z0NBQ087QUFHWjtJQURDLElBQUEsMkJBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzttQ0FDWTtBQUczQjtJQURDLElBQUEsMkJBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzswQ0FDUztlQVJiLElBQUk7SUFEaEIsSUFBQSw0QkFBSyxHQUFFOztHQUNLLElBQUksQ0FhaEIiLCJmaWxlIjoibW9kZWwvVXNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxpc3QsIG1vZGVsLCBNb2RlbCwgTW9kZWxBcmcgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSb2xlcyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IHBrIH0gZnJvbSBcIi4uL2lkZW50aXR5L2RlY29yYXRvcnNcIjtcblxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBVc2VyIGV4dGVuZHMgTW9kZWwge1xuICBAcGsoKVxuICBpZCE6IHN0cmluZztcblxuICBAbGlzdChbU3RyaW5nXSlcbiAgcm9sZXM/OiAoc3RyaW5nIHwgUm9sZXMpW107XG5cbiAgQGxpc3QoW1N0cmluZ10pXG4gIGFmZmlsaWF0aW9ucz86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPFVzZXI+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9Vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlFQUFvRTtBQUdwRSx1REFBNEM7QUFHckMsSUFBTSxJQUFJLEdBQVYsTUFBTSxJQUFLLFNBQVEsNEJBQUs7SUFVN0IsWUFBWSxHQUFvQjtRQUM5QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQTtBQWJZLG9CQUFJO0FBRWY7SUFEQyxJQUFBLGVBQUUsR0FBRTs7Z0NBQ087QUFHWjtJQURDLElBQUEsMkJBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzttQ0FDWTtBQUczQjtJQURDLElBQUEsMkJBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzswQ0FDUztlQVJiLElBQUk7SUFEaEIsSUFBQSw0QkFBSyxHQUFFOztHQUNLLElBQUksQ0FhaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsaXN0LCBtb2RlbCwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUm9sZXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBwayB9IGZyb20gXCIuLi9pZGVudGl0eS9kZWNvcmF0b3JzXCI7XG5cbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgVXNlciBleHRlbmRzIE1vZGVsIHtcbiAgQHBrKClcbiAgaWQhOiBzdHJpbmc7XG5cbiAgQGxpc3QoW1N0cmluZ10pXG4gIHJvbGVzPzogKHN0cmluZyB8IFJvbGVzKVtdO1xuXG4gIEBsaXN0KFtTdHJpbmddKVxuICBhZmZpbGlhdGlvbnM/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihhcmc/OiBNb2RlbEFyZzxVc2VyPikge1xuICAgIHN1cGVyKGFyZyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import type { ModelArg } from "@decaf-ts/decorator-validation";
3
+ import { Roles } from "../persistence/constants";
4
+ export declare class User extends Model {
5
+ id: string;
6
+ roles?: (string | Roles)[];
7
+ affiliations?: string[];
8
+ constructor(arg?: ModelArg<User>);
9
+ }
@@ -199,7 +199,7 @@ function repositoryFromTypeMetadata(model, propertyKey) {
199
199
  ? decorator_validation_1.ValidationKeys.LIST
200
200
  : decorator_validation_1.ValidationKeys.TYPE), model, propertyKey);
201
201
  const customTypes = Array.isArray(model[propertyKey])
202
- ? types.class
202
+ ? types.clazz
203
203
  : types.customTypes;
204
204
  if (!types || !customTypes)
205
205
  throw new db_decorators_1.InternalError(`Failed to find types decorators for property ${propertyKey}`);
@@ -214,5 +214,4 @@ function repositoryFromTypeMetadata(model, propertyKey) {
214
214
  throw new db_decorators_1.InternalError(`No registered model found for ${constructorName}`);
215
215
  return Repository_1.Repository.forModel(constructor);
216
216
  }
217
-
218
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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O1FBQ3hCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQixnREFBZ0QsV0FBVyxFQUFFLENBQzlELENBQUM7SUFFSixNQUFNLFlBQVksR0FBYSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUN2QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDbkQsQ0FBQztJQUNGLElBQUksQ0FBQyxlQUFlO1FBQ2xCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQixnQkFBZ0IsV0FBVyx5Q0FBeUMsQ0FDckUsQ0FBQztJQUNKLE1BQU0sV0FBVyxHQUErQiw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzRSxJQUFJLENBQUMsV0FBVztRQUNkLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGlDQUFpQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBRTlFLE9BQU8sdUJBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsImZpbGUiOiJtb2RlbC9jb25zdHJ1Y3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgTW9kZWwsXG4gIFZhbGlkYXRpb24sXG4gIFZhbGlkYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgUmVsYXRpb25zTWV0YWRhdGEgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZmluZFByaW1hcnlLZXksXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ2FzY2FkZSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JVcGRhdGU8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IE0sXG4gIGNvbnRleHQ6IENvbnRleHQ8TT4sXG4gIHJlcG9zaXRvcnk/OiBSZXBvPE0+XG4pOiBQcm9taXNlPE0+IHtcbiAgaWYgKCFyZXBvc2l0b3J5KSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBNb2RlbC5nZXQobW9kZWwuY29uc3RydWN0b3IubmFtZSk7XG4gICAgaWYgKCFjb25zdHJ1Y3RvcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgZmluZCBtb2RlbCAke21vZGVsLmNvbnN0cnVjdG9yLm5hbWV9YCk7XG4gICAgcmVwb3NpdG9yeSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoY29uc3RydWN0b3IpIGFzIFJlcG88TT47XG4gIH1cbiAgaWYgKHR5cGVvZiAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcmVwb3NpdG9yeS5wa10gPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuIHJlcG9zaXRvcnkuY3JlYXRlKG1vZGVsLCBjb250ZXh0KTtcbiAgZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5LnVwZGF0ZShtb2RlbCwgY29udGV4dCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpIHRocm93IGU7XG4gICAgICByZXR1cm4gcmVwb3NpdG9yeS5jcmVhdGUobW9kZWwsIGNvbnRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25lVG9PbmVPbkNyZWF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNPixcbiAgWSBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPih0aGlzOiBSLCBjb250ZXh0OiBDb250ZXh0PE0+LCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZTogYW55ID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XG4gIGlmICghcHJvcGVydHlWYWx1ZSkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IGlubmVyUmVwbyA9IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhKG1vZGVsLCBrZXkpO1xuICAgIGNvbnN0IHJlYWQgPSBhd2FpdCBpbm5lclJlcG8ucmVhZChwcm9wZXJ0eVZhbHVlKTtcbiAgICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoY29udGV4dCwgbW9kZWwsIGtleSwgcHJvcGVydHlWYWx1ZSwgcmVhZCk7XG4gICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV0gPSBwcm9wZXJ0eVZhbHVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNvbnN0cnVjdG9yID0gTW9kZWwuZ2V0KGRhdGEuY2xhc3MpO1xuICBpZiAoIWNvbnN0cnVjdG9yKVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgZmluZCBtb2RlbCAke2RhdGEuY2xhc3N9YCk7XG4gIGNvbnN0IHJlcG86IFJlcG88YW55PiA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoY29uc3RydWN0b3IpO1xuICBjb25zdCBjcmVhdGVkID0gYXdhaXQgcmVwby5jcmVhdGUocHJvcGVydHlWYWx1ZSk7XG4gIGNvbnN0IHBrID0gZmluZFByaW1hcnlLZXkoY3JlYXRlZCkuaWQ7XG4gIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShjb250ZXh0LCBtb2RlbCwga2V5LCBjcmVhdGVkW3BrXSwgY3JlYXRlZCk7XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBjcmVhdGVkW3BrXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvT25lT25VcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3BlcnR5VmFsdWU6IGFueSA9IChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xuICBpZiAoIXByb3BlcnR5VmFsdWUpIHJldHVybjtcbiAgaWYgKGRhdGEuY2FzY2FkZS51cGRhdGUgIT09IENhc2NhZGUuQ0FTQ0FERSkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IGlubmVyUmVwbyA9IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhKG1vZGVsLCBrZXkpO1xuICAgIGNvbnN0IHJlYWQgPSBhd2FpdCBpbm5lclJlcG8ucmVhZChwcm9wZXJ0eVZhbHVlKTtcbiAgICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoY29udGV4dCwgbW9kZWwsIGtleSwgcHJvcGVydHlWYWx1ZSwgcmVhZCk7XG4gICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV0gPSBwcm9wZXJ0eVZhbHVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCBjcmVhdGVPclVwZGF0ZShcbiAgICAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XSxcbiAgICBjb250ZXh0XG4gICk7XG4gIGNvbnN0IHBrID0gZmluZFByaW1hcnlLZXkodXBkYXRlZCkuaWQ7XG4gIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShcbiAgICBjb250ZXh0LFxuICAgIG1vZGVsLFxuICAgIGtleSxcbiAgICAodXBkYXRlZCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwa10sXG4gICAgdXBkYXRlZFxuICApO1xuICAobW9kZWwgYXMgYW55KVtrZXldID0gKHVwZGF0ZWQgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcGtdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25lVG9PbmVPbkRlbGV0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNPixcbiAgWSBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPih0aGlzOiBSLCBjb250ZXh0OiBDb250ZXh0PE0+LCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZTogYW55ID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XG4gIGlmICghcHJvcGVydHlWYWx1ZSkgcmV0dXJuO1xuICBpZiAoZGF0YS5jYXNjYWRlLnVwZGF0ZSAhPT0gQ2FzY2FkZS5DQVNDQURFKSByZXR1cm47XG4gIGNvbnN0IGlubmVyUmVwbzogUmVwbzxNPiA9IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhKG1vZGVsLCBrZXkpO1xuICBsZXQgZGVsZXRlZDogTTtcbiAgaWYgKCEocHJvcGVydHlWYWx1ZSBpbnN0YW5jZW9mIE1vZGVsKSlcbiAgICBkZWxldGVkID0gYXdhaXQgaW5uZXJSZXBvLmRlbGV0ZShcbiAgICAgIChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gIGVsc2VcbiAgICBkZWxldGVkID0gYXdhaXQgaW5uZXJSZXBvLmRlbGV0ZShcbiAgICAgIChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldW2lubmVyUmVwby5wa10sXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKFxuICAgIGNvbnRleHQsXG4gICAgbW9kZWwsXG4gICAga2V5LFxuICAgIChkZWxldGVkIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2lubmVyUmVwby5wa10sXG4gICAgZGVsZXRlZFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25lVG9NYW55T25DcmVhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3BlcnR5VmFsdWVzOiBhbnkgPSAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlcyB8fCAhcHJvcGVydHlWYWx1ZXMubGVuZ3RoKSByZXR1cm47XG4gIGNvbnN0IGFycmF5VHlwZSA9IHR5cGVvZiBwcm9wZXJ0eVZhbHVlc1swXTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiB0eXBlb2YgaXRlbSA9PT0gYXJyYXlUeXBlKSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBJbnZhbGlkIG9wZXJhdGlvbi4gQWxsIGVsZW1lbnRzIG9mIHByb3BlcnR5ICR7a2V5fSBtdXN0IG1hdGNoIHRoZSBzYW1lIHR5cGUuYFxuICAgICk7XG4gIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IG5ldyBTZXQoWy4uLnByb3BlcnR5VmFsdWVzXSk7XG4gIGlmIChhcnJheVR5cGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCByZXBvID0gcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEobW9kZWwsIGtleSk7XG4gICAgZm9yIChjb25zdCBpZCBvZiB1bmlxdWVWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IHJlYWQgPSBhd2FpdCByZXBvLnJlYWQoaWQpO1xuICAgICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIGlkLCByZWFkKTtcbiAgICB9XG4gICAgKG1vZGVsIGFzIGFueSlba2V5XSA9IFsuLi51bmlxdWVWYWx1ZXNdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBrTmFtZSA9IGZpbmRQcmltYXJ5S2V5KHByb3BlcnR5VmFsdWVzWzBdKS5pZDtcblxuICBjb25zdCByZXN1bHQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIGZvciAoY29uc3QgbSBvZiBwcm9wZXJ0eVZhbHVlcykge1xuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNyZWF0ZU9yVXBkYXRlKG0sIGNvbnRleHQpO1xuICAgIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShjb250ZXh0LCBtb2RlbCwga2V5LCByZWNvcmRbcGtOYW1lXSwgcmVjb3JkKTtcbiAgICByZXN1bHQuYWRkKHJlY29yZFtwa05hbWVdKTtcbiAgfVxuXG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBbLi4ucmVzdWx0XTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvTWFueU9uVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuICBZIGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGEsXG4+KHRoaXM6IFIsIGNvbnRleHQ6IENvbnRleHQ8TT4sIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogTSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGNhc2NhZGUgfSA9IGRhdGE7XG4gIGlmIChjYXNjYWRlLnVwZGF0ZSAhPT0gQ2FzY2FkZS5DQVNDQURFKSByZXR1cm47XG4gIHJldHVybiBvbmVUb01hbnlPbkNyZWF0ZS5jYWxsKHRoaXMsIGNvbnRleHQsIGRhdGEsIGtleSwgbW9kZWwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25lVG9NYW55T25EZWxldGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChkYXRhLmNhc2NhZGUuZGVsZXRlICE9PSBDYXNjYWRlLkNBU0NBREUpIHJldHVybjtcbiAgY29uc3QgdmFsdWVzID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XG4gIGlmICghdmFsdWVzIHx8ICF2YWx1ZXMubGVuZ3RoKSByZXR1cm47XG4gIGNvbnN0IGFycmF5VHlwZSA9IHR5cGVvZiB2YWx1ZXNbMF07XG4gIGNvbnN0IGFyZUFsbFNhbWVUeXBlID0gdmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHR5cGVvZiBpdGVtID09PSBhcnJheVR5cGUpO1xuICBpZiAoIWFyZUFsbFNhbWVUeXBlKVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYEludmFsaWQgb3BlcmF0aW9uLiBBbGwgZWxlbWVudHMgb2YgcHJvcGVydHkgJHtrZXl9IG11c3QgbWF0Y2ggdGhlIHNhbWUgdHlwZS5gXG4gICAgKTtcbiAgY29uc3QgaXNJbnN0YW50aWF0ZWQgPSBhcnJheVR5cGUgPT09IFwib2JqZWN0XCI7XG4gIGNvbnN0IHJlcG8gPSBpc0luc3RhbnRpYXRlZFxuICAgID8gUmVwb3NpdG9yeS5mb3JNb2RlbCh2YWx1ZXNbMF0pXG4gICAgOiByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShtb2RlbCwga2V5KTtcblxuICBjb25zdCB1bmlxdWVWYWx1ZXMgPSBuZXcgU2V0KFtcbiAgICAuLi4oaXNJbnN0YW50aWF0ZWRcbiAgICAgID8gdmFsdWVzLm1hcCgodjogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdltyZXBvLnBrXSlcbiAgICAgIDogdmFsdWVzKSxcbiAgXSk7XG5cbiAgZm9yIChjb25zdCBpZCBvZiB1bmlxdWVWYWx1ZXMudmFsdWVzKCkpIHtcbiAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgcmVwby5kZWxldGUoaWQsIGNvbnRleHQpO1xuICAgIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShjb250ZXh0LCBtb2RlbCwga2V5LCBpZCwgZGVsZXRlZCk7XG4gIH1cbiAgKG1vZGVsIGFzIGFueSlba2V5XSA9IFsuLi51bmlxdWVWYWx1ZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9wdWxhdGVLZXkoXG4gIHRhYmxlTmFtZTogc3RyaW5nLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuKSB7XG4gIHJldHVybiBbUGVyc2lzdGVuY2VLZXlzLlBPUFVMQVRFLCB0YWJsZU5hbWUsIGZpZWxkTmFtZSwgaWRdLmpvaW4oXCIuXCIpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FjaGVNb2RlbEZvclBvcHVsYXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIGNvbnRleHQ6IENvbnRleHQ8TT4sXG4gIHBhcmVudE1vZGVsOiBNLFxuICBwcm9wZXJ0eUtleTogc3RyaW5nLFxuICBwa1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG4gIGNhY2hlVmFsdWU6IGFueVxuKSB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gZ2V0UG9wdWxhdGVLZXkoXG4gICAgcGFyZW50TW9kZWwuY29uc3RydWN0b3IubmFtZSxcbiAgICBwcm9wZXJ0eUtleSxcbiAgICBwa1ZhbHVlXG4gICk7XG4gIHJldHVybiBjb250ZXh0LnB1dChjYWNoZUtleSwgY2FjaGVWYWx1ZSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwb3B1bGF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNPixcbiAgWSBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPih0aGlzOiBSLCBjb250ZXh0OiBDb250ZXh0PE0+LCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFkYXRhLnBvcHVsYXRlKSByZXR1cm47XG4gIGNvbnN0IG5lc3RlZDogYW55ID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XG4gIGNvbnN0IGlzQXJyID0gQXJyYXkuaXNBcnJheShuZXN0ZWQpO1xuICBpZiAodHlwZW9mIG5lc3RlZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAoaXNBcnIgJiYgbmVzdGVkLmxlbmd0aCA9PT0gMCkpIHJldHVybjtcblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaFBvcHVsYXRlVmFsdWVzKFxuICAgIGM6IENvbnRleHQ8TT4sXG4gICAgbW9kZWw6IE0sXG4gICAgcHJvcE5hbWU6IHN0cmluZyxcbiAgICBwcm9wS2V5VmFsdWVzOiBhbnlbXVxuICApIHtcbiAgICBsZXQgY2FjaGVLZXk6IHN0cmluZztcbiAgICBsZXQgdmFsOiBhbnk7XG4gICAgY29uc3QgcmVzdWx0czogTVtdID0gW107XG4gICAgZm9yIChjb25zdCBwcm9LZXlWYWx1ZSBvZiBwcm9wS2V5VmFsdWVzKSB7XG4gICAgICBjYWNoZUtleSA9IGdldFBvcHVsYXRlS2V5KG1vZGVsLmNvbnN0cnVjdG9yLm5hbWUsIHByb3BOYW1lLCBwcm9LZXlWYWx1ZSk7XG4gICAgICB0cnkge1xuICAgICAgICB2YWwgPSBhd2FpdCBjLmdldChjYWNoZUtleSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBjb25zdCByZXBvID0gcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEobW9kZWwsIHByb3BOYW1lKTtcbiAgICAgICAgaWYgKCFyZXBvKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkNvdWxkIG5vdCBmaW5kIHJlcG9cIik7XG4gICAgICAgIHZhbCA9IGF3YWl0IHJlcG8ucmVhZChwcm9LZXlWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXN1bHRzLnB1c2godmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hQb3B1bGF0ZVZhbHVlcyhcbiAgICBjb250ZXh0LFxuICAgIG1vZGVsLFxuICAgIGtleSxcbiAgICBpc0FyciA/IG5lc3RlZCA6IFtuZXN0ZWRdXG4gICk7XG4gIChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldID0gaXNBcnIgPyByZXMgOiByZXNbMF07XG59XG5cbmNvbnN0IGNvbW1vbVR5cGVzID0gW1xuICBcImFycmF5XCIsXG4gIFwic3RyaW5nXCIsXG4gIFwibnVtYmVyXCIsXG4gIFwiYm9vbGVhblwiLFxuICBcInN5bWJvbFwiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwib2JqZWN0XCIsXG4gIFwidW5kZWZpbmVkXCIsXG4gIFwibnVsbFwiLFxuICBcImJpZ2ludFwiLFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBhbnksXG4gIHByb3BlcnR5S2V5OiBzdHJpbmdcbik6IFJlcG88TT4ge1xuICBjb25zdCB0eXBlcyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgVmFsaWRhdGlvbi5rZXkoXG4gICAgICBBcnJheS5pc0FycmF5KG1vZGVsW3Byb3BlcnR5S2V5XSlcbiAgICAgICAgPyBWYWxpZGF0aW9uS2V5cy5MSVNUXG4gICAgICAgIDogVmFsaWRhdGlvbktleXMuVFlQRVxuICAgICksXG4gICAgbW9kZWwsXG4gICAgcHJvcGVydHlLZXlcbiAgKTtcbiAgY29uc3QgY3VzdG9tVHlwZXM6IGFueSA9IEFycmF5LmlzQXJyYXkobW9kZWxbcHJvcGVydHlLZXldKVxuICAgID8gdHlwZXMuY2xhc3NcbiAgICA6IHR5cGVzLmN1c3RvbVR5cGVzO1xuICBpZiAoIXR5cGVzIHx8ICFjdXN0b21UeXBlcylcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gZmluZCB0eXBlcyBkZWNvcmF0b3JzIGZvciBwcm9wZXJ0eSAke3Byb3BlcnR5S2V5fWBcbiAgICApO1xuXG4gIGNvbnN0IGFsbG93ZWRUeXBlczogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KGN1c3RvbVR5cGVzKVxuICAgID8gWy4uLmN1c3RvbVR5cGVzXVxuICAgIDogW2N1c3RvbVR5cGVzXTtcbiAgY29uc3QgY29uc3RydWN0b3JOYW1lID0gYWxsb3dlZFR5cGVzLmZpbmQoXG4gICAgKHQpID0+ICFjb21tb21UeXBlcy5pbmNsdWRlcyhgJHt0fWAudG9Mb3dlckNhc2UoKSlcbiAgKTtcbiAgaWYgKCFjb25zdHJ1Y3Rvck5hbWUpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgUHJvcGVydHkga2V5ICR7cHJvcGVydHlLZXl9IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25zdHJ1Y3RvciB0eXBlYFxuICAgICk7XG4gIGNvbnN0IGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxNPiB8IHVuZGVmaW5lZCA9IE1vZGVsLmdldChjb25zdHJ1Y3Rvck5hbWUpO1xuICBpZiAoIWNvbnN0cnVjdG9yKVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyByZWdpc3RlcmVkIG1vZGVsIGZvdW5kIGZvciAke2NvbnN0cnVjdG9yTmFtZX1gKTtcblxuICByZXR1cm4gUmVwb3NpdG9yeS5mb3JNb2RlbChjb25zdHJ1Y3Rvcik7XG59XG4iXX0=
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL2NvbnN0cnVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSx3Q0FxQkM7QUFFRCw0Q0F3QkM7QUFFRCw0Q0E4QkM7QUFFRCw0Q0EyQkM7QUFFRCw4Q0FrQ0M7QUFFRCw4Q0FRQztBQUVELDhDQThCQztBQUVELHdDQU1DO0FBRUQsc0RBYUM7QUFFRCw0QkF3Q0M7QUFlRCxnRUFvQ0M7QUEvVEQseUVBS3dDO0FBQ3hDLHlEQUE0RDtBQUU1RCwyREFJaUM7QUFDakMsd0RBQTJEO0FBQzNELHVEQUFrRDtBQUczQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxLQUFRLEVBQ1IsT0FBbUIsRUFDbkIsVUFBb0I7SUFFcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLDRCQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVc7WUFDZCxNQUFNLElBQUksNkJBQWEsQ0FBQyx3QkFBd0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLFVBQVUsR0FBRyx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQVksQ0FBQztJQUMzRCxDQUFDO0lBQ0QsSUFBSSxPQUFRLEtBQTZCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFdBQVc7UUFDdEUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN0QyxDQUFDO1FBQ0osSUFBSSxDQUFDO1lBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVks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QyxXQUFXLENBQUM7SUFDdEIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVc7UUFDeEIsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLGdEQUFnRCxXQUFXLEVBQUUsQ0FDOUQsQ0FBQztJQUVKLE1BQU0sWUFBWSxHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQ3ZDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUNuRCxDQUFDO0lBQ0YsSUFBSSxDQUFDLGVBQWU7UUFDbEIsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLGdCQUFnQixXQUFXLHlDQUF5QyxDQUNyRSxDQUFDO0lBQ0osTUFBTSxXQUFXLEdBQStCLDRCQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNFLElBQUksQ0FBQyxXQUFXO1FBQ2QsTUFBTSxJQUFJLDZCQUFhLENBQUMsaUNBQWlDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFOUUsT0FBTyx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIE1vZGVsLFxuICBWYWxpZGF0aW9uLFxuICBWYWxpZGF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVwbywgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFJlbGF0aW9uc01ldGFkYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGZpbmRQcmltYXJ5S2V5LFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IENhc2NhZGUgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9jb25zdGFudHNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU9yVXBkYXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBNLFxuICBjb250ZXh0OiBDb250ZXh0PE0+LFxuICByZXBvc2l0b3J5PzogUmVwbzxNPlxuKTogUHJvbWlzZTxNPiB7XG4gIGlmICghcmVwb3NpdG9yeSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gTW9kZWwuZ2V0KG1vZGVsLmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGlmICghY29uc3RydWN0b3IpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgbW9kZWwgJHttb2RlbC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICAgIHJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZvck1vZGVsKGNvbnN0cnVjdG9yKSBhcyBSZXBvPE0+O1xuICB9XG4gIGlmICh0eXBlb2YgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3JlcG9zaXRvcnkucGtdID09PSBcInVuZGVmaW5lZFwiKVxuICAgIHJldHVybiByZXBvc2l0b3J5LmNyZWF0ZShtb2RlbCwgY29udGV4dCk7XG4gIGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVwb3NpdG9yeS51cGRhdGUobW9kZWwsIGNvbnRleHQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IpKSB0aHJvdyBlO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuY3JlYXRlKG1vZGVsLCBjb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvT25lT25DcmVhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3BlcnR5VmFsdWU6IGFueSA9IChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xuICBpZiAoIXByb3BlcnR5VmFsdWUpIHJldHVybjtcblxuICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBpbm5lclJlcG8gPSByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShtb2RlbCwga2V5KTtcbiAgICBjb25zdCByZWFkID0gYXdhaXQgaW5uZXJSZXBvLnJlYWQocHJvcGVydHlWYWx1ZSk7XG4gICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIHByb3BlcnR5VmFsdWUsIHJlYWQpO1xuICAgIChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldID0gcHJvcGVydHlWYWx1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb25zdHJ1Y3RvciA9IE1vZGVsLmdldChkYXRhLmNsYXNzKTtcbiAgaWYgKCFjb25zdHJ1Y3RvcilcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgbW9kZWwgJHtkYXRhLmNsYXNzfWApO1xuICBjb25zdCByZXBvOiBSZXBvPGFueT4gPSBSZXBvc2l0b3J5LmZvck1vZGVsKGNvbnN0cnVjdG9yKTtcbiAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IHJlcG8uY3JlYXRlKHByb3BlcnR5VmFsdWUpO1xuICBjb25zdCBwayA9IGZpbmRQcmltYXJ5S2V5KGNyZWF0ZWQpLmlkO1xuICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoY29udGV4dCwgbW9kZWwsIGtleSwgY3JlYXRlZFtwa10sIGNyZWF0ZWQpO1xuICAobW9kZWwgYXMgYW55KVtrZXldID0gY3JlYXRlZFtwa107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvbmVUb09uZU9uVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuICBZIGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGEsXG4+KHRoaXM6IFIsIGNvbnRleHQ6IENvbnRleHQ8TT4sIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogTSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9wZXJ0eVZhbHVlOiBhbnkgPSAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTtcbiAgaWYgKCFwcm9wZXJ0eVZhbHVlKSByZXR1cm47XG4gIGlmIChkYXRhLmNhc2NhZGUudXBkYXRlICE9PSBDYXNjYWRlLkNBU0NBREUpIHJldHVybjtcblxuICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBpbm5lclJlcG8gPSByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShtb2RlbCwga2V5KTtcbiAgICBjb25zdCByZWFkID0gYXdhaXQgaW5uZXJSZXBvLnJlYWQocHJvcGVydHlWYWx1ZSk7XG4gICAgYXdhaXQgY2FjaGVNb2RlbEZvclBvcHVsYXRlKGNvbnRleHQsIG1vZGVsLCBrZXksIHByb3BlcnR5VmFsdWUsIHJlYWQpO1xuICAgIChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldID0gcHJvcGVydHlWYWx1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB1cGRhdGVkID0gYXdhaXQgY3JlYXRlT3JVcGRhdGUoXG4gICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV0sXG4gICAgY29udGV4dFxuICApO1xuICBjb25zdCBwayA9IGZpbmRQcmltYXJ5S2V5KHVwZGF0ZWQpLmlkO1xuICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoXG4gICAgY29udGV4dCxcbiAgICBtb2RlbCxcbiAgICBrZXksXG4gICAgKHVwZGF0ZWQgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcGtdLFxuICAgIHVwZGF0ZWRcbiAgKTtcbiAgKG1vZGVsIGFzIGFueSlba2V5XSA9ICh1cGRhdGVkIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3BrXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvT25lT25EZWxldGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3BlcnR5VmFsdWU6IGFueSA9IChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xuICBpZiAoIXByb3BlcnR5VmFsdWUpIHJldHVybjtcbiAgaWYgKGRhdGEuY2FzY2FkZS51cGRhdGUgIT09IENhc2NhZGUuQ0FTQ0FERSkgcmV0dXJuO1xuICBjb25zdCBpbm5lclJlcG86IFJlcG88TT4gPSByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YShtb2RlbCwga2V5KTtcbiAgbGV0IGRlbGV0ZWQ6IE07XG4gIGlmICghKHByb3BlcnR5VmFsdWUgaW5zdGFuY2VvZiBNb2RlbCkpXG4gICAgZGVsZXRlZCA9IGF3YWl0IGlubmVyUmVwby5kZWxldGUoXG4gICAgICAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XSxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICBlbHNlXG4gICAgZGVsZXRlZCA9IGF3YWl0IGlubmVyUmVwby5kZWxldGUoXG4gICAgICAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XVtpbm5lclJlcG8ucGtdLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShcbiAgICBjb250ZXh0LFxuICAgIG1vZGVsLFxuICAgIGtleSxcbiAgICAoZGVsZXRlZCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtpbm5lclJlcG8ucGtdLFxuICAgIGRlbGV0ZWRcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvTWFueU9uQ3JlYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuICBZIGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGEsXG4+KHRoaXM6IFIsIGNvbnRleHQ6IENvbnRleHQ8TT4sIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogTSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55ID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XG4gIGlmICghcHJvcGVydHlWYWx1ZXMgfHwgIXByb3BlcnR5VmFsdWVzLmxlbmd0aCkgcmV0dXJuO1xuICBjb25zdCBhcnJheVR5cGUgPSB0eXBlb2YgcHJvcGVydHlWYWx1ZXNbMF07XG4gIGlmICghcHJvcGVydHlWYWx1ZXMuZXZlcnkoKGl0ZW06IGFueSkgPT4gdHlwZW9mIGl0ZW0gPT09IGFycmF5VHlwZSkpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgSW52YWxpZCBvcGVyYXRpb24uIEFsbCBlbGVtZW50cyBvZiBwcm9wZXJ0eSAke2tleX0gbXVzdCBtYXRjaCB0aGUgc2FtZSB0eXBlLmBcbiAgICApO1xuICBjb25zdCB1bmlxdWVWYWx1ZXMgPSBuZXcgU2V0KFsuLi5wcm9wZXJ0eVZhbHVlc10pO1xuICBpZiAoYXJyYXlUeXBlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgcmVwbyA9IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhKG1vZGVsLCBrZXkpO1xuICAgIGZvciAoY29uc3QgaWQgb2YgdW5pcXVlVmFsdWVzKSB7XG4gICAgICBjb25zdCByZWFkID0gYXdhaXQgcmVwby5yZWFkKGlkKTtcbiAgICAgIGF3YWl0IGNhY2hlTW9kZWxGb3JQb3B1bGF0ZShjb250ZXh0LCBtb2RlbCwga2V5LCBpZCwgcmVhZCk7XG4gICAgfVxuICAgIChtb2RlbCBhcyBhbnkpW2tleV0gPSBbLi4udW5pcXVlVmFsdWVzXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwa05hbWUgPSBmaW5kUHJpbWFyeUtleShwcm9wZXJ0eVZhbHVlc1swXSkuaWQ7XG5cbiAgY29uc3QgcmVzdWx0OiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICBmb3IgKGNvbnN0IG0gb2YgcHJvcGVydHlWYWx1ZXMpIHtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCBjcmVhdGVPclVwZGF0ZShtLCBjb250ZXh0KTtcbiAgICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoY29udGV4dCwgbW9kZWwsIGtleSwgcmVjb3JkW3BrTmFtZV0sIHJlY29yZCk7XG4gICAgcmVzdWx0LmFkZChyZWNvcmRbcGtOYW1lXSk7XG4gIH1cblxuICAobW9kZWwgYXMgYW55KVtrZXldID0gWy4uLnJlc3VsdF07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvbmVUb01hbnlPblVwZGF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNPixcbiAgWSBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPih0aGlzOiBSLCBjb250ZXh0OiBDb250ZXh0PE0+LCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBjYXNjYWRlIH0gPSBkYXRhO1xuICBpZiAoY2FzY2FkZS51cGRhdGUgIT09IENhc2NhZGUuQ0FTQ0FERSkgcmV0dXJuO1xuICByZXR1cm4gb25lVG9NYW55T25DcmVhdGUuY2FsbCh0aGlzLCBjb250ZXh0LCBkYXRhLCBrZXksIG1vZGVsKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZVRvTWFueU9uRGVsZXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuICBZIGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGEsXG4+KHRoaXM6IFIsIGNvbnRleHQ6IENvbnRleHQ8TT4sIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogTSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoZGF0YS5jYXNjYWRlLmRlbGV0ZSAhPT0gQ2FzY2FkZS5DQVNDQURFKSByZXR1cm47XG4gIGNvbnN0IHZhbHVlcyA9IChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xuICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCkgcmV0dXJuO1xuICBjb25zdCBhcnJheVR5cGUgPSB0eXBlb2YgdmFsdWVzWzBdO1xuICBjb25zdCBhcmVBbGxTYW1lVHlwZSA9IHZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiB0eXBlb2YgaXRlbSA9PT0gYXJyYXlUeXBlKTtcbiAgaWYgKCFhcmVBbGxTYW1lVHlwZSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBJbnZhbGlkIG9wZXJhdGlvbi4gQWxsIGVsZW1lbnRzIG9mIHByb3BlcnR5ICR7a2V5fSBtdXN0IG1hdGNoIHRoZSBzYW1lIHR5cGUuYFxuICAgICk7XG4gIGNvbnN0IGlzSW5zdGFudGlhdGVkID0gYXJyYXlUeXBlID09PSBcIm9iamVjdFwiO1xuICBjb25zdCByZXBvID0gaXNJbnN0YW50aWF0ZWRcbiAgICA/IFJlcG9zaXRvcnkuZm9yTW9kZWwodmFsdWVzWzBdKVxuICAgIDogcmVwb3NpdG9yeUZyb21UeXBlTWV0YWRhdGEobW9kZWwsIGtleSk7XG5cbiAgY29uc3QgdW5pcXVlVmFsdWVzID0gbmV3IFNldChbXG4gICAgLi4uKGlzSW5zdGFudGlhdGVkXG4gICAgICA/IHZhbHVlcy5tYXAoKHY6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZbcmVwby5wa10pXG4gICAgICA6IHZhbHVlcyksXG4gIF0pO1xuXG4gIGZvciAoY29uc3QgaWQgb2YgdW5pcXVlVmFsdWVzLnZhbHVlcygpKSB7XG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHJlcG8uZGVsZXRlKGlkLCBjb250ZXh0KTtcbiAgICBhd2FpdCBjYWNoZU1vZGVsRm9yUG9wdWxhdGUoY29udGV4dCwgbW9kZWwsIGtleSwgaWQsIGRlbGV0ZWQpO1xuICB9XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBbLi4udW5pcXVlVmFsdWVzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvcHVsYXRlS2V5KFxuICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgZmllbGROYW1lOiBzdHJpbmcsXG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbikge1xuICByZXR1cm4gW1BlcnNpc3RlbmNlS2V5cy5QT1BVTEFURSwgdGFibGVOYW1lLCBmaWVsZE5hbWUsIGlkXS5qb2luKFwiLlwiKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhY2hlTW9kZWxGb3JQb3B1bGF0ZTxNIGV4dGVuZHMgTW9kZWw+KFxuICBjb250ZXh0OiBDb250ZXh0PE0+LFxuICBwYXJlbnRNb2RlbDogTSxcbiAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgcGtWYWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuICBjYWNoZVZhbHVlOiBhbnlcbikge1xuICBjb25zdCBjYWNoZUtleSA9IGdldFBvcHVsYXRlS2V5KFxuICAgIHBhcmVudE1vZGVsLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgcHJvcGVydHlLZXksXG4gICAgcGtWYWx1ZVxuICApO1xuICByZXR1cm4gY29udGV4dC5wdXQoY2FjaGVLZXksIGNhY2hlVmFsdWUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcG9wdWxhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghZGF0YS5wb3B1bGF0ZSkgcmV0dXJuO1xuICBjb25zdCBuZXN0ZWQ6IGFueSA9IChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xuICBjb25zdCBpc0FyciA9IEFycmF5LmlzQXJyYXkobmVzdGVkKTtcbiAgaWYgKHR5cGVvZiBuZXN0ZWQgPT09IFwidW5kZWZpbmVkXCIgfHwgKGlzQXJyICYmIG5lc3RlZC5sZW5ndGggPT09IDApKSByZXR1cm47XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3B1bGF0ZVZhbHVlcyhcbiAgICBjOiBDb250ZXh0PE0+LFxuICAgIG1vZGVsOiBNLFxuICAgIHByb3BOYW1lOiBzdHJpbmcsXG4gICAgcHJvcEtleVZhbHVlczogYW55W11cbiAgKSB7XG4gICAgbGV0IGNhY2hlS2V5OiBzdHJpbmc7XG4gICAgbGV0IHZhbDogYW55O1xuICAgIGNvbnN0IHJlc3VsdHM6IE1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcHJvS2V5VmFsdWUgb2YgcHJvcEtleVZhbHVlcykge1xuICAgICAgY2FjaGVLZXkgPSBnZXRQb3B1bGF0ZUtleShtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lLCBwcm9wTmFtZSwgcHJvS2V5VmFsdWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsID0gYXdhaXQgYy5nZXQoY2FjaGVLZXkpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgcmVwbyA9IHJlcG9zaXRvcnlGcm9tVHlwZU1ldGFkYXRhKG1vZGVsLCBwcm9wTmFtZSk7XG4gICAgICAgIGlmICghcmVwbykgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJDb3VsZCBub3QgZmluZCByZXBvXCIpO1xuICAgICAgICB2YWwgPSBhd2FpdCByZXBvLnJlYWQocHJvS2V5VmFsdWUpO1xuICAgICAgfVxuICAgICAgcmVzdWx0cy5wdXNoKHZhbCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoUG9wdWxhdGVWYWx1ZXMoXG4gICAgY29udGV4dCxcbiAgICBtb2RlbCxcbiAgICBrZXksXG4gICAgaXNBcnIgPyBuZXN0ZWQgOiBbbmVzdGVkXVxuICApO1xuICAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XSA9IGlzQXJyID8gcmVzIDogcmVzWzBdO1xufVxuXG5jb25zdCBjb21tb21UeXBlcyA9IFtcbiAgXCJhcnJheVwiLFxuICBcInN0cmluZ1wiLFxuICBcIm51bWJlclwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJzeW1ib2xcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcIm9iamVjdFwiLFxuICBcInVuZGVmaW5lZFwiLFxuICBcIm51bGxcIixcbiAgXCJiaWdpbnRcIixcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvc2l0b3J5RnJvbVR5cGVNZXRhZGF0YTxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogYW55LFxuICBwcm9wZXJ0eUtleTogc3RyaW5nXG4pOiBSZXBvPE0+IHtcbiAgY29uc3QgdHlwZXMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgIFZhbGlkYXRpb24ua2V5KFxuICAgICAgQXJyYXkuaXNBcnJheShtb2RlbFtwcm9wZXJ0eUtleV0pXG4gICAgICAgID8gVmFsaWRhdGlvbktleXMuTElTVFxuICAgICAgICA6IFZhbGlkYXRpb25LZXlzLlRZUEVcbiAgICApLFxuICAgIG1vZGVsLFxuICAgIHByb3BlcnR5S2V5XG4gICk7XG4gIGNvbnN0IGN1c3RvbVR5cGVzOiBhbnkgPSBBcnJheS5pc0FycmF5KG1vZGVsW3Byb3BlcnR5S2V5XSlcbiAgICA/IHR5cGVzLmNsYXp6XG4gICAgOiB0eXBlcy5jdXN0b21UeXBlcztcbiAgaWYgKCF0eXBlcyB8fCAhY3VzdG9tVHlwZXMpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGZpbmQgdHlwZXMgZGVjb3JhdG9ycyBmb3IgcHJvcGVydHkgJHtwcm9wZXJ0eUtleX1gXG4gICAgKTtcblxuICBjb25zdCBhbGxvd2VkVHlwZXM6IHN0cmluZ1tdID0gQXJyYXkuaXNBcnJheShjdXN0b21UeXBlcylcbiAgICA/IFsuLi5jdXN0b21UeXBlc11cbiAgICA6IFtjdXN0b21UeXBlc107XG4gIGNvbnN0IGNvbnN0cnVjdG9yTmFtZSA9IGFsbG93ZWRUeXBlcy5maW5kKFxuICAgICh0KSA9PiAhY29tbW9tVHlwZXMuaW5jbHVkZXMoYCR7dH1gLnRvTG93ZXJDYXNlKCkpXG4gICk7XG4gIGlmICghY29uc3RydWN0b3JOYW1lKVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYFByb3BlcnR5IGtleSAke3Byb3BlcnR5S2V5fSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY29uc3RydWN0b3IgdHlwZWBcbiAgICApO1xuICBjb25zdCBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8TT4gfCB1bmRlZmluZWQgPSBNb2RlbC5nZXQoY29uc3RydWN0b3JOYW1lKTtcbiAgaWYgKCFjb25zdHJ1Y3RvcilcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gcmVnaXN0ZXJlZCBtb2RlbCBmb3VuZCBmb3IgJHtjb25zdHJ1Y3Rvck5hbWV9YCk7XG5cbiAgcmV0dXJuIFJlcG9zaXRvcnkuZm9yTW9kZWwoY29uc3RydWN0b3IpO1xufVxuIl19
@@ -0,0 +1,15 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { Repo } from "../repository/Repository";
3
+ import { RelationsMetadata } from "./types";
4
+ import { Context } from "@decaf-ts/db-decorators";
5
+ export declare function createOrUpdate<M extends Model>(model: M, context: Context<M>, repository?: Repo<M>): Promise<M>;
6
+ export declare function oneToOneOnCreate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
7
+ export declare function oneToOneOnUpdate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
8
+ export declare function oneToOneOnDelete<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
9
+ export declare function oneToManyOnCreate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
10
+ export declare function oneToManyOnUpdate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
11
+ export declare function oneToManyOnDelete<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
12
+ export declare function getPopulateKey(tableName: string, fieldName: string, id: string | number): string;
13
+ export declare function cacheModelForPopulate<M extends Model>(context: Context<M>, parentModel: M, propertyKey: string, pkValue: string | number, cacheValue: any): Promise<void>;
14
+ export declare function populate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
15
+ export declare function repositoryFromTypeMetadata<M extends Model>(model: any, propertyKey: string): Repo<M>;
@@ -150,5 +150,4 @@ function manyToOne(clazz, cascadeOptions = constants_2.DefaultCascade, populate
150
150
  // afterAll(populate, metadata),
151
151
  (0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(constants_1.PersistenceKeys.MANY_TO_ONE), metadata));
152
152
  }
153
-
154
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFFLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFFBQVEsRUFBRSxRQUFRO0tBQ25CLENBQUM7SUFDRixPQUFPLElBQUEsa0JBQUssRUFDVixJQUFBLDJCQUFJLEVBQUMsMkJBQWUsQ0FBQyxTQUFTLENBQUMsRUFDL0IsSUFBQSwyQkFBSSxFQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELHlDQUF5QztJQUN6Qyx5Q0FBeUM7SUFDekMseUNBQXlDO0lBQ3pDLGdDQUFnQztJQUNoQyxJQUFBLG1DQUFZLEVBQUMsdUJBQVUsQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FDcEUsQ0FBQztBQUNKLENBQUMiLCJmaWxlIjoibW9kZWwvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmZsaWN0RXJyb3IsXG4gIG9uQ3JlYXRlLFxuICBvbkNyZWF0ZVVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIG9uVXBkYXRlLFxuICBhZnRlckFueSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBhcHBseSwgbWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IENhc2NhZGVNZXRhZGF0YSwgSW5kZXhNZXRhZGF0YSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L3R5cGVzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q2FzY2FkZSwgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIENvbnN0cnVjdG9yLFxuICBsaXN0LFxuICBNb2RlbCxcbiAgcHJvcCxcbiAgcHJvcE1ldGFkYXRhLFxuICB0eXBlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0FkYXB0ZXJcIjtcbmltcG9ydCB7IFJlcG8sIFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tIFwiLi4vcXVlcnkvQ29uZGl0aW9uXCI7XG5pbXBvcnQgeyBSZWxhdGlvbnNNZXRhZGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBvbmVUb01hbnlPbkNyZWF0ZSxcbiAgb25lVG9NYW55T25EZWxldGUsXG4gIG9uZVRvTWFueU9uVXBkYXRlLFxuICBvbmVUb09uZU9uQ3JlYXRlLFxuICBvbmVUb09uZU9uRGVsZXRlLFxuICBvbmVUb09uZU9uVXBkYXRlLFxuICBwb3B1bGF0ZSBhcyBwb3AsXG59IGZyb20gXCIuL2NvbnN0cnVjdGlvblwiO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gXCIuL1VzZXJcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9Db250ZXh0XCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2Vycm9yc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGUodGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG1ldGFkYXRhKEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5UQUJMRSksIHRhYmxlTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGEoQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkNPTFVNTiksIGNvbHVtbk5hbWUpO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEluZGV4IERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIHByb3BlcnRpZXMgZGVjb3JhdGVkIHdpbGwgdGhlIGluZGV4IGluIHRoZVxuICogREIgZm9yIHBlcmZvcm1hbmNlIGluIHF1ZXJpZXNcbiAqXG4gKiBAcGFyYW0ge09yZGVyRGlyZWN0aW9uW119IFtkaXJlY3Rpb25zXVxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2NvbXBvc2l0aW9uc11cbiAqXG4gKiBAZnVuY3Rpb24gaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4KGRpcmVjdGlvbnM/OiBPcmRlckRpcmVjdGlvbltdLCBjb21wb3NpdGlvbnM/OiBzdHJpbmdbXSkge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKFxuICAgIFJlcG9zaXRvcnkua2V5KFxuICAgICAgYCR7UGVyc2lzdGVuY2VLZXlzLklOREVYfSR7Y29tcG9zaXRpb25zICYmIGNvbXBvc2l0aW9ucy5sZW5ndGggPyBgLiR7Y29tcG9zaXRpb25zLmpvaW4oXCIuXCIpfWAgOiBcIlwifWBcbiAgICApLFxuICAgIHtcbiAgICAgIGRpcmVjdGlvbnM6IGRpcmVjdGlvbnMsXG4gICAgICBjb21wb3NpdGlvbnM6IGNvbXBvc2l0aW9ucyxcbiAgICB9IGFzIEluZGV4TWV0YWRhdGFcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVuaXF1ZU9uQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuICBZID0gYW55LFxuPih0aGlzOiBSLCBjb250ZXh0OiBDb250ZXh0PE0+LCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCEobW9kZWwgYXMgYW55KVtrZXldKSByZXR1cm47XG4gIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5zZWxlY3QoKVxuICAgIC53aGVyZShDb25kaXRpb24uYXR0cmlidXRlKGtleSkuZXEoKG1vZGVsIGFzIGFueSlba2V5XSkpXG4gICAgLmV4ZWN1dGU8TVtdPigpO1xuICBpZiAoZXhpc3RpbmcubGVuZ3RoKVxuICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgICAgYG1vZGVsIGFscmVhZHkgZXhpc3RzIHdpdGggcHJvcGVydHkgJHtrZXl9IGVxdWFsIHRvICR7SlNPTi5zdHJpbmdpZnkoKG1vZGVsIGFzIGFueSlba2V5XSwgdW5kZWZpbmVkLCAyKX1gXG4gICAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBVbmlxdWUgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVGFncyBhIHByb3BlcnR5IGFzIHVuaXF1ZS5cbiAqICBObyBvdGhlciBlbGVtZW50cyBpbiB0aGF0IHRhYmxlIGNhbiBoYXZlIHRoZSBzYW1lIHByb3BlcnR5IHZhbHVlXG4gKlxuICogQGZ1bmN0aW9uIHVuaXF1ZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6d2FsbGV0LWRiLkRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZSgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlVXBkYXRlKHVuaXF1ZU9uQ3JlYXRlVXBkYXRlKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLlVOSVFVRSksIHt9KVxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlZEJ5T25DcmVhdGVVcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4gIFkgPSBhbnksXG4+KHRoaXM6IFIsIGNvbnRleHQ6IENvbnRleHQ8TT4sIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogTSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB1c2VyOiBVc2VyIHwgdW5kZWZpbmVkID0gY29udGV4dC51c2VyO1xuICBpZiAoIXVzZXIpXG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICBcIlRoaXMgYWRhcHRlciBkb2VzIG5vdCBzdXBwb3J0IHVzZXIgaWRlbnRpZmljYXRpb25cIlxuICAgICk7XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSB1c2VyLmlkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlZEJ5KCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgb25DcmVhdGUoY3JlYXRlZEJ5T25DcmVhdGVVcGRhdGUpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuQ1JFQVRFRF9CWSksIHt9KVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlZEJ5KCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgb25DcmVhdGVVcGRhdGUoY3JlYXRlZEJ5T25DcmVhdGVVcGRhdGUpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuQ1JFQVRFRF9CWSksIHt9KVxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IE9uZSBUbyBPbmUgcmVsYXRpb24gRGVjb3JhdG9yc1xuICpcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8YW55Pn0gY2xhenogdGhlIHtAbGluayBTZXF1ZW5jZX0gdG8gdXNlLiBEZWZhdWx0cyB0byB7QGxpbmsgTm9uZVNlcXVlbmNlfVxuICogQHBhcmFtIHtDYXNjYWRlTWV0YWRhdGF9IFtjYXNjYWRlT3B0aW9uc11cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcG9wdWxhdGUgSWYgdHJ1ZSwgcmVwbGFjZXMgdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhlIGRvY3VtZW50IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcmVjb3JkIGZyb20gdGhlIGRhdGFiYXNlXG4gKlxuICogQGZ1bmN0aW9uIG9uVG9PbmVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOndhbGxldC1kYi5EZWNvcmF0b3JzXG4gKlxuICogQHNlZSBvbmVUb01hbnlcbiAqIEBzZWUgbWFueVRvT25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbmVUb09uZTxNIGV4dGVuZHMgTW9kZWw+KFxuICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gIGNhc2NhZGVPcHRpb25zOiBDYXNjYWRlTWV0YWRhdGEgPSBEZWZhdWx0Q2FzY2FkZSxcbiAgcG9wdWxhdGU6IGJvb2xlYW4gPSB0cnVlXG4pIHtcbiAgTW9kZWwucmVnaXN0ZXIoY2xhenopO1xuICBjb25zdCBtZXRhZGF0YTogUmVsYXRpb25zTWV0YWRhdGEgPSB7XG4gICAgY2xhc3M6IGNsYXp6Lm5hbWUsXG4gICAgY2FzY2FkZTogY2FzY2FkZU9wdGlvbnMsXG4gICAgcG9wdWxhdGU6IHBvcHVsYXRlLFxuICB9O1xuICByZXR1cm4gYXBwbHkoXG4gICAgcHJvcChQZXJzaXN0ZW5jZUtleXMuUkVMQVRJT05TKSxcbiAgICB0eXBlKFtjbGF6ei5uYW1lLCBTdHJpbmcubmFtZSwgTnVtYmVyLm5hbWUsIEJpZ0ludC5uYW1lXSksXG4gICAgb25DcmVhdGUob25lVG9PbmVPbkNyZWF0ZSwgbWV0YWRhdGEpLFxuICAgIG9uVXBkYXRlKG9uZVRvT25lT25VcGRhdGUsIG1ldGFkYXRhKSxcbiAgICBvbkRlbGV0ZShvbmVUb09uZU9uRGVsZXRlLCBtZXRhZGF0YSksXG4gICAgYWZ0ZXJBbnkocG9wLCBtZXRhZGF0YSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5PTkVfVE9fT05FKSwgbWV0YWRhdGEpXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgT25lIFRvIE1hbnkgcmVsYXRpb24gRGVjb3JhdG9yc1xuICpcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8YW55Pn0gY2xhenogdGhlIHtAbGluayBTZXF1ZW5jZX0gdG8gdXNlLiBEZWZhdWx0cyB0byB7QGxpbmsgTm9uZVNlcXVlbmNlfVxuICogQHBhcmFtIHtDYXNjYWRlTWV0YWRhdGF9IFtjYXNjYWRlT3B0aW9uc11cbiAqXG4gKiBAZnVuY3Rpb24gb25lVG9NYW55XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp3YWxsZXQtZGIuRGVjb3JhdG9yc1xuICpcbiAqIEBzZWUgb25lVG9PbmVcbiAqIEBzZWUgbWFueVRvT25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbmVUb01hbnk8TSBleHRlbmRzIE1vZGVsPihcbiAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICBjYXNjYWRlT3B0aW9uczogQ2FzY2FkZU1ldGFkYXRhID0gRGVmYXVsdENhc2NhZGUsXG4gIHBvcHVsYXRlOiBib29sZWFuID0gdHJ1ZVxuKSB7XG4gIE1vZGVsLnJlZ2lzdGVyKGNsYXp6KTtcbiAgY29uc3QgbWV0YWRhdGE6IFJlbGF0aW9uc01ldGFkYXRhID0ge1xuICAgIGNsYXNzOiBjbGF6ei5uYW1lLFxuICAgIGNhc2NhZGU6IGNhc2NhZGVPcHRpb25zLFxuICAgIHBvcHVsYXRlOiBwb3B1bGF0ZSxcbiAgfTtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIHByb3AoUGVyc2lzdGVuY2VLZXlzLlJFTEFUSU9OUyksXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwdXJwb3NlZnVsIG92ZXJyaWRlXG4gICAgbGlzdChbY2xhenosIFN0cmluZywgTnVtYmVyLCBCaWdJbnRdKSxcbiAgICBvbkNyZWF0ZShvbmVUb01hbnlPbkNyZWF0ZSwgbWV0YWRhdGEpLFxuICAgIG9uVXBkYXRlKG9uZVRvTWFueU9uVXBkYXRlLCBtZXRhZGF0YSksXG4gICAgb25EZWxldGUob25lVG9NYW55T25EZWxldGUsIG1ldGFkYXRhKSxcbiAgICBhZnRlckFueShwb3AsIG1ldGFkYXRhKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLk9ORV9UT19NQU5ZKSwgbWV0YWRhdGEpXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTWFueSBUbyBPbmUgcmVsYXRpb24gRGVjb3JhdG9yc1xuICpcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8YW55Pn0gY2xhenogdGhlIHtAbGluayBTZXF1ZW5jZX0gdG8gdXNlLiBEZWZhdWx0cyB0byB7QGxpbmsgTm9uZVNlcXVlbmNlfVxuICogQHBhcmFtIHtDYXNjYWRlTWV0YWRhdGF9IFtjYXNjYWRlT3B0aW9uc11cbiAqXG4gKiBAZnVuY3Rpb24gbWFueVRvT25lXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp3YWxsZXQtZGIuRGVjb3JhdG9yc1xuICpcbiAqIEBzZWUgb25lVG9NYW55XG4gKiBAc2VlIG9uZVRvT25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW55VG9PbmUoXG4gIGNsYXp6OiBDb25zdHJ1Y3Rvcjxhbnk+LFxuICBjYXNjYWRlT3B0aW9uczogQ2FzY2FkZU1ldGFkYXRhID0gRGVmYXVsdENhc2NhZGUsXG4gIHBvcHVsYXRlID0gdHJ1ZVxuKSB7XG4gIE1vZGVsLnJlZ2lzdGVyKGNsYXp6KTtcbiAgY29uc3QgbWV0YWRhdGE6IFJlbGF0aW9uc01ldGFkYXRhID0ge1xuICAgIGNsYXNzOiBjbGF6ei5uYW1lLFxuICAgIGNhc2NhZGU6IGNhc2NhZGVPcHRpb25zLFxuICAgIHBvcHVsYXRlOiBwb3B1bGF0ZSxcbiAgfTtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIHByb3AoUGVyc2lzdGVuY2VLZXlzLlJFTEFUSU9OUyksXG4gICAgdHlwZShbY2xhenoubmFtZSwgU3RyaW5nLm5hbWUsIE51bWJlci5uYW1lLCBCaWdJbnQubmFtZV0pLFxuICAgIC8vIG9uQ3JlYXRlKG9uZVRvTWFueU9uQ3JlYXRlLCBtZXRhZGF0YSksXG4gICAgLy8gb25VcGRhdGUob25lVG9NYW55T25VcGRhdGUsIG1ldGFkYXRhKSxcbiAgICAvLyBvbkRlbGV0ZShvbmVUb01hbnlPbkRlbGV0ZSwgbWV0YWRhdGEpLFxuICAgIC8vIGFmdGVyQWxsKHBvcHVsYXRlLCBtZXRhZGF0YSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5NQU5ZX1RPX09ORSksIG1ldGFkYXRhKVxuICApO1xufVxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcUNBLHNCQUVDO0FBRUQsd0JBRUM7QUFZRCxzQkFVQztBQUVELG9EQWFDO0FBV0Qsd0JBS0M7QUFFRCwwREFXQztBQUVELDhCQUtDO0FBRUQsOEJBS0M7QUFnQkQsNEJBb0JDO0FBZUQsOEJBcUJDO0FBZUQsOEJBb0JDO0FBdE9ELDJEQU9pQztBQUNqQyxxREFBdUQ7QUFDdkQsd0RBQTJEO0FBRTNELHVEQUF5RTtBQUN6RSx5RUFPd0M7QUFDeEMsb0RBQWlEO0FBQ2pELHlEQUE0RDtBQUM1RCxrREFBK0M7QUFFL0MsaURBUXdCO0FBR3hCLGtEQUF5RDtBQUV6RCxTQUFnQixLQUFLLENBQUMsU0FBaUI7SUFDckMsT0FBTyxJQUFBLHFCQUFRLEVBQUMsaUJBQU8sQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFDLFVBQWtCO0lBQ3ZDLE9BQU8sSUFBQSxtQ0FBWSxFQUFDLGlCQUFPLENBQUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLEtBQUssQ0FBQyxVQUE2QixFQUFFLFlBQXVCO0lBQzFFLE9BQU8sSUFBQSxtQ0FBWSxFQUNqQix1QkFBVSxDQUFDLEdBQUcsQ0FDWixHQUFHLDJCQUFlLENBQUMsS0FBSyxHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3JHLEVBQ0Q7UUFDRSxVQUFVLEVBQUUsVUFBVTtR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LENBQUMsQ0FBQztJQUN0QixNQUFNLFFBQVEsR0FBc0I7UUFDbEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFFBQVEsRUFBRSxRQUFRO0tBQ25CLENBQUM7SUFDRixPQUFPLElBQUEsa0JBQUssRUFDVixJQUFBLDJCQUFJLEVBQUMsMkJBQWUsQ0FBQyxTQUFTLENBQUMsRUFDL0IsSUFBQSwyQkFBSSxFQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELHlDQUF5QztJQUN6Qyx5Q0FBeUM7SUFDekMseUNBQXlDO0lBQ3pDLGdDQUFnQztJQUNoQyxJQUFBLG1DQUFZLEVBQUMsdUJBQVUsQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FDcEUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25mbGljdEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgb25DcmVhdGVVcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBvblVwZGF0ZSxcbiAgYWZ0ZXJBbnksXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBDYXNjYWRlTWV0YWRhdGEsIEluZGV4TWV0YWRhdGEgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS90eXBlc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENhc2NhZGUsIE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgbGlzdCxcbiAgTW9kZWwsXG4gIHByb3AsXG4gIHByb3BNZXRhZGF0YSxcbiAgdHlwZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4uL3F1ZXJ5L0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgUmVsYXRpb25zTWV0YWRhdGEgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgb25lVG9NYW55T25DcmVhdGUsXG4gIG9uZVRvTWFueU9uRGVsZXRlLFxuICBvbmVUb01hbnlPblVwZGF0ZSxcbiAgb25lVG9PbmVPbkNyZWF0ZSxcbiAgb25lVG9PbmVPbkRlbGV0ZSxcbiAgb25lVG9PbmVPblVwZGF0ZSxcbiAgcG9wdWxhdGUgYXMgcG9wLFxufSBmcm9tIFwiLi9jb25zdHJ1Y3Rpb25cIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi9Vc2VyXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvQ29udGV4dFwiO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9lcnJvcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBtZXRhZGF0YShBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuVEFCTEUpLCB0YWJsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5DT0xVTU4pLCBjb2x1bW5OYW1lKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBJbmRleCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aWxsIHRoZSBpbmRleCBpbiB0aGVcbiAqIERCIGZvciBwZXJmb3JtYW5jZSBpbiBxdWVyaWVzXG4gKlxuICogQHBhcmFtIHtPcmRlckRpcmVjdGlvbltdfSBbZGlyZWN0aW9uc11cbiAqIEBwYXJhbSB7c3RyaW5nW119IFtjb21wb3NpdGlvbnNdXG4gKlxuICogQGZ1bmN0aW9uIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleChkaXJlY3Rpb25zPzogT3JkZXJEaXJlY3Rpb25bXSwgY29tcG9zaXRpb25zPzogc3RyaW5nW10pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YShcbiAgICBSZXBvc2l0b3J5LmtleShcbiAgICAgIGAke1BlcnNpc3RlbmNlS2V5cy5JTkRFWH0ke2NvbXBvc2l0aW9ucyAmJiBjb21wb3NpdGlvbnMubGVuZ3RoID8gYC4ke2NvbXBvc2l0aW9ucy5qb2luKFwiLlwiKX1gIDogXCJcIn1gXG4gICAgKSxcbiAgICB7XG4gICAgICBkaXJlY3Rpb25zOiBkaXJlY3Rpb25zLFxuICAgICAgY29tcG9zaXRpb25zOiBjb21wb3NpdGlvbnMsXG4gICAgfSBhcyBJbmRleE1ldGFkYXRhXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bmlxdWVPbkNyZWF0ZVVwZGF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgUmVwbzxNPixcbiAgWSA9IGFueSxcbj4odGhpczogUiwgY29udGV4dDogQ29udGV4dDxNPiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghKG1vZGVsIGFzIGFueSlba2V5XSkgcmV0dXJuO1xuICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuc2VsZWN0KClcbiAgICAud2hlcmUoQ29uZGl0aW9uLmF0dHJpYnV0ZShrZXkpLmVxKChtb2RlbCBhcyBhbnkpW2tleV0pKVxuICAgIC5leGVjdXRlPE1bXT4oKTtcbiAgaWYgKGV4aXN0aW5nLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgQ29uZmxpY3RFcnJvcihcbiAgICAgIGBtb2RlbCBhbHJlYWR5IGV4aXN0cyB3aXRoIHByb3BlcnR5ICR7a2V5fSBlcXVhbCB0byAke0pTT04uc3RyaW5naWZ5KChtb2RlbCBhcyBhbnkpW2tleV0sIHVuZGVmaW5lZCwgMil9YFxuICAgICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgVW5pcXVlIERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIFRhZ3MgYSBwcm9wZXJ0eSBhcyB1bmlxdWUuXG4gKiAgTm8gb3RoZXIgZWxlbWVudHMgaW4gdGhhdCB0YWJsZSBjYW4gaGF2ZSB0aGUgc2FtZSBwcm9wZXJ0eSB2YWx1ZVxuICpcbiAqIEBmdW5jdGlvbiB1bmlxdWVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOndhbGxldC1kYi5EZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWUoKSB7XG4gIHJldHVybiBhcHBseShcbiAgICBvbkNyZWF0ZVVwZGF0ZSh1bmlxdWVPbkNyZWF0ZVVwZGF0ZSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5VTklRVUUpLCB7fSlcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZWRCeU9uQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuICBZID0gYW55LFxuPih0aGlzOiBSLCBjb250ZXh0OiBDb250ZXh0PE0+LCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdXNlcjogVXNlciB8IHVuZGVmaW5lZCA9IGNvbnRleHQudXNlcjtcbiAgaWYgKCF1c2VyKVxuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJUaGlzIGFkYXB0ZXIgZG9lcyBub3Qgc3VwcG9ydCB1c2VyIGlkZW50aWZpY2F0aW9uXCJcbiAgICApO1xuICAobW9kZWwgYXMgYW55KVtrZXldID0gdXNlci5pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZWRCeSgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlKGNyZWF0ZWRCeU9uQ3JlYXRlVXBkYXRlKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpLCB7fSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZWRCeSgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlVXBkYXRlKGNyZWF0ZWRCeU9uQ3JlYXRlVXBkYXRlKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpLCB7fSlcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBPbmUgVG8gT25lIHJlbGF0aW9uIERlY29yYXRvcnNcbiAqXG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPGFueT59IGNsYXp6IHRoZSB7QGxpbmsgU2VxdWVuY2V9IHRvIHVzZS4gRGVmYXVsdHMgdG8ge0BsaW5rIE5vbmVTZXF1ZW5jZX1cbiAqIEBwYXJhbSB7Q2FzY2FkZU1ldGFkYXRhfSBbY2FzY2FkZU9wdGlvbnNdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHBvcHVsYXRlIElmIHRydWUsIHJlcGxhY2VzIHRoZSBzcGVjaWZpZWQga2V5IGluIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCBmcm9tIHRoZSBkYXRhYmFzZVxuICpcbiAqIEBmdW5jdGlvbiBvblRvT25lXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp3YWxsZXQtZGIuRGVjb3JhdG9yc1xuICpcbiAqIEBzZWUgb25lVG9NYW55XG4gKiBAc2VlIG1hbnlUb09uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb25lVG9PbmU8TSBleHRlbmRzIE1vZGVsPihcbiAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICBjYXNjYWRlT3B0aW9uczogQ2FzY2FkZU1ldGFkYXRhID0gRGVmYXVsdENhc2NhZGUsXG4gIHBvcHVsYXRlOiBib29sZWFuID0gdHJ1ZVxuKSB7XG4gIE1vZGVsLnJlZ2lzdGVyKGNsYXp6KTtcbiAgY29uc3QgbWV0YWRhdGE6IFJlbGF0aW9uc01ldGFkYXRhID0ge1xuICAgIGNsYXNzOiBjbGF6ei5uYW1lLFxuICAgIGNhc2NhZGU6IGNhc2NhZGVPcHRpb25zLFxuICAgIHBvcHVsYXRlOiBwb3B1bGF0ZSxcbiAgfTtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIHByb3AoUGVyc2lzdGVuY2VLZXlzLlJFTEFUSU9OUyksXG4gICAgdHlwZShbY2xhenoubmFtZSwgU3RyaW5nLm5hbWUsIE51bWJlci5uYW1lLCBCaWdJbnQubmFtZV0pLFxuICAgIG9uQ3JlYXRlKG9uZVRvT25lT25DcmVhdGUsIG1ldGFkYXRhKSxcbiAgICBvblVwZGF0ZShvbmVUb09uZU9uVXBkYXRlLCBtZXRhZGF0YSksXG4gICAgb25EZWxldGUob25lVG9PbmVPbkRlbGV0ZSwgbWV0YWRhdGEpLFxuICAgIGFmdGVyQW55KHBvcCwgbWV0YWRhdGEpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuT05FX1RPX09ORSksIG1ldGFkYXRhKVxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IE9uZSBUbyBNYW55IHJlbGF0aW9uIERlY29yYXRvcnNcbiAqXG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPGFueT59IGNsYXp6IHRoZSB7QGxpbmsgU2VxdWVuY2V9IHRvIHVzZS4gRGVmYXVsdHMgdG8ge0BsaW5rIE5vbmVTZXF1ZW5jZX1cbiAqIEBwYXJhbSB7Q2FzY2FkZU1ldGFkYXRhfSBbY2FzY2FkZU9wdGlvbnNdXG4gKlxuICogQGZ1bmN0aW9uIG9uZVRvTWFueVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6d2FsbGV0LWRiLkRlY29yYXRvcnNcbiAqXG4gKiBAc2VlIG9uZVRvT25lXG4gKiBAc2VlIG1hbnlUb09uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb25lVG9NYW55PE0gZXh0ZW5kcyBNb2RlbD4oXG4gIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgY2FzY2FkZU9wdGlvbnM6IENhc2NhZGVNZXRhZGF0YSA9IERlZmF1bHRDYXNjYWRlLFxuICBwb3B1bGF0ZTogYm9vbGVhbiA9IHRydWVcbikge1xuICBNb2RlbC5yZWdpc3RlcihjbGF6eik7XG4gIGNvbnN0IG1ldGFkYXRhOiBSZWxhdGlvbnNNZXRhZGF0YSA9IHtcbiAgICBjbGFzczogY2xhenoubmFtZSxcbiAgICBjYXNjYWRlOiBjYXNjYWRlT3B0aW9ucyxcbiAgICBwb3B1bGF0ZTogcG9wdWxhdGUsXG4gIH07XG4gIHJldHVybiBhcHBseShcbiAgICBwcm9wKFBlcnNpc3RlbmNlS2V5cy5SRUxBVElPTlMpLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcHVycG9zZWZ1bCBvdmVycmlkZVxuICAgIGxpc3QoW2NsYXp6LCBTdHJpbmcsIE51bWJlciwgQmlnSW50XSksXG4gICAgb25DcmVhdGUob25lVG9NYW55T25DcmVhdGUsIG1ldGFkYXRhKSxcbiAgICBvblVwZGF0ZShvbmVUb01hbnlPblVwZGF0ZSwgbWV0YWRhdGEpLFxuICAgIG9uRGVsZXRlKG9uZVRvTWFueU9uRGVsZXRlLCBtZXRhZGF0YSksXG4gICAgYWZ0ZXJBbnkocG9wLCBtZXRhZGF0YSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5PTkVfVE9fTUFOWSksIG1ldGFkYXRhKVxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IE1hbnkgVG8gT25lIHJlbGF0aW9uIERlY29yYXRvcnNcbiAqXG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPGFueT59IGNsYXp6IHRoZSB7QGxpbmsgU2VxdWVuY2V9IHRvIHVzZS4gRGVmYXVsdHMgdG8ge0BsaW5rIE5vbmVTZXF1ZW5jZX1cbiAqIEBwYXJhbSB7Q2FzY2FkZU1ldGFkYXRhfSBbY2FzY2FkZU9wdGlvbnNdXG4gKlxuICogQGZ1bmN0aW9uIG1hbnlUb09uZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6d2FsbGV0LWRiLkRlY29yYXRvcnNcbiAqXG4gKiBAc2VlIG9uZVRvTWFueVxuICogQHNlZSBvbmVUb09uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFueVRvT25lKFxuICBjbGF6ejogQ29uc3RydWN0b3I8YW55PixcbiAgY2FzY2FkZU9wdGlvbnM6IENhc2NhZGVNZXRhZGF0YSA9IERlZmF1bHRDYXNjYWRlLFxuICBwb3B1bGF0ZSA9IHRydWVcbikge1xuICBNb2RlbC5yZWdpc3RlcihjbGF6eik7XG4gIGNvbnN0IG1ldGFkYXRhOiBSZWxhdGlvbnNNZXRhZGF0YSA9IHtcbiAgICBjbGFzczogY2xhenoubmFtZSxcbiAgICBjYXNjYWRlOiBjYXNjYWRlT3B0aW9ucyxcbiAgICBwb3B1bGF0ZTogcG9wdWxhdGUsXG4gIH07XG4gIHJldHVybiBhcHBseShcbiAgICBwcm9wKFBlcnNpc3RlbmNlS2V5cy5SRUxBVElPTlMpLFxuICAgIHR5cGUoW2NsYXp6Lm5hbWUsIFN0cmluZy5uYW1lLCBOdW1iZXIubmFtZSwgQmlnSW50Lm5hbWVdKSxcbiAgICAvLyBvbkNyZWF0ZShvbmVUb01hbnlPbkNyZWF0ZSwgbWV0YWRhdGEpLFxuICAgIC8vIG9uVXBkYXRlKG9uZVRvTWFueU9uVXBkYXRlLCBtZXRhZGF0YSksXG4gICAgLy8gb25EZWxldGUob25lVG9NYW55T25EZWxldGUsIG1ldGFkYXRhKSxcbiAgICAvLyBhZnRlckFsbChwb3B1bGF0ZSwgbWV0YWRhdGEpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuTUFOWV9UT19PTkUpLCBtZXRhZGF0YSlcbiAgKTtcbn1cbiJdfQ==