angular-odata 0.127.0 → 0.128.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/esm2022/lib/annotations.mjs +140 -0
  2. package/esm2022/lib/api.mjs +209 -164
  3. package/esm2022/lib/cache/cache.mjs +1 -1
  4. package/esm2022/lib/cache/memory.mjs +1 -1
  5. package/esm2022/lib/client.mjs +4 -44
  6. package/esm2022/lib/constants.mjs +4 -1
  7. package/esm2022/lib/index.mjs +3 -1
  8. package/esm2022/lib/loaders.mjs +23 -17
  9. package/esm2022/lib/metadata/csdl/csdl-annotation.mjs +95 -0
  10. package/esm2022/lib/metadata/csdl/csdl-entity-container.mjs +27 -0
  11. package/esm2022/lib/metadata/csdl/csdl-entity-set.mjs +24 -0
  12. package/esm2022/lib/metadata/csdl/csdl-enum-type.mjs +37 -0
  13. package/esm2022/lib/metadata/csdl/csdl-function-action.mjs +94 -0
  14. package/esm2022/lib/metadata/csdl/csdl-navigation-property-binding.mjs +7 -0
  15. package/esm2022/lib/metadata/csdl/csdl-reference.mjs +23 -0
  16. package/esm2022/lib/metadata/csdl/csdl-schema.mjs +39 -0
  17. package/esm2022/lib/metadata/csdl/csdl-singleton.mjs +15 -0
  18. package/esm2022/lib/metadata/csdl/csdl-structural-property.mjs +70 -0
  19. package/esm2022/lib/metadata/csdl/csdl-structured-type.mjs +92 -0
  20. package/esm2022/lib/metadata/csdl/csdl-type-definition.mjs +15 -0
  21. package/esm2022/lib/metadata/index.mjs +3 -0
  22. package/esm2022/lib/metadata/metadata.mjs +14 -0
  23. package/esm2022/lib/metadata/parser.mjs +563 -0
  24. package/esm2022/lib/models/collection.mjs +98 -140
  25. package/esm2022/lib/models/model.mjs +38 -45
  26. package/esm2022/lib/models/options.mjs +127 -117
  27. package/esm2022/lib/module.mjs +3 -3
  28. package/esm2022/lib/resources/index.mjs +2 -2
  29. package/esm2022/lib/resources/options.mjs +56 -0
  30. package/esm2022/lib/resources/path/handlers.mjs +14 -4
  31. package/esm2022/lib/resources/path/segments.mjs +6 -4
  32. package/esm2022/lib/resources/query/builder.mjs +5 -5
  33. package/esm2022/lib/resources/query/expressions/apply.mjs +81 -14
  34. package/esm2022/lib/resources/query/expressions/base.mjs +1 -1
  35. package/esm2022/lib/resources/query/expressions/compute.mjs +1 -1
  36. package/esm2022/lib/resources/query/expressions/count.mjs +1 -1
  37. package/esm2022/lib/resources/query/expressions/expand.mjs +1 -1
  38. package/esm2022/lib/resources/query/expressions/filter.mjs +1 -1
  39. package/esm2022/lib/resources/query/expressions/orderby.mjs +2 -2
  40. package/esm2022/lib/resources/query/expressions/search.mjs +1 -1
  41. package/esm2022/lib/resources/query/expressions/select.mjs +5 -1
  42. package/esm2022/lib/resources/query/expressions/syntax.mjs +18 -7
  43. package/esm2022/lib/resources/query/handlers.mjs +1 -1
  44. package/esm2022/lib/resources/query/options.mjs +1 -1
  45. package/esm2022/lib/resources/request.mjs +5 -5
  46. package/esm2022/lib/resources/resource.mjs +107 -82
  47. package/esm2022/lib/resources/response.mjs +174 -0
  48. package/esm2022/lib/resources/types/action.mjs +29 -26
  49. package/esm2022/lib/resources/types/batch.mjs +1 -1
  50. package/esm2022/lib/resources/types/count.mjs +7 -7
  51. package/esm2022/lib/resources/types/entity-set.mjs +37 -24
  52. package/esm2022/lib/resources/types/entity.mjs +14 -11
  53. package/esm2022/lib/resources/types/function.mjs +25 -28
  54. package/esm2022/lib/resources/types/metadata.mjs +9 -5
  55. package/esm2022/lib/resources/types/navigation-property.mjs +36 -30
  56. package/esm2022/lib/resources/types/property.mjs +31 -49
  57. package/esm2022/lib/resources/types/reference.mjs +3 -4
  58. package/esm2022/lib/resources/types/singleton.mjs +11 -7
  59. package/esm2022/lib/resources/types/value.mjs +16 -12
  60. package/esm2022/lib/schema/callable.mjs +10 -10
  61. package/esm2022/lib/schema/element.mjs +15 -9
  62. package/esm2022/lib/schema/entity-container.mjs +4 -2
  63. package/esm2022/lib/schema/enum-type.mjs +6 -7
  64. package/esm2022/lib/schema/index.mjs +2 -1
  65. package/esm2022/lib/schema/parsers/callable.mjs +10 -7
  66. package/esm2022/lib/schema/parsers/edm.mjs +6 -4
  67. package/esm2022/lib/schema/parsers/enum-type.mjs +10 -10
  68. package/esm2022/lib/schema/parsers/structured-type.mjs +19 -19
  69. package/esm2022/lib/schema/schema.mjs +18 -34
  70. package/esm2022/lib/schema/singleton.mjs +9 -0
  71. package/esm2022/lib/schema/structured-type.mjs +18 -23
  72. package/esm2022/lib/services/base.mjs +1 -1
  73. package/esm2022/lib/services/entity-set.mjs +12 -2
  74. package/esm2022/lib/services/entity.mjs +2 -2
  75. package/esm2022/lib/services/factory.mjs +18 -7
  76. package/esm2022/lib/services/singleton.mjs +8 -2
  77. package/esm2022/lib/settings.mjs +7 -99
  78. package/esm2022/lib/types.mjs +1 -1
  79. package/esm2022/lib/utils/http.mjs +1 -1
  80. package/fesm2022/angular-odata.mjs +2286 -1951
  81. package/fesm2022/angular-odata.mjs.map +1 -1
  82. package/lib/{resources/responses/annotations.d.ts → annotations.d.ts} +2 -2
  83. package/lib/api.d.ts +29 -26
  84. package/lib/cache/memory.d.ts +1 -1
  85. package/lib/client.d.ts +0 -20
  86. package/lib/constants.d.ts +3 -0
  87. package/lib/index.d.ts +1 -0
  88. package/lib/loaders.d.ts +7 -1
  89. package/lib/metadata/csdl/csdl-annotation.d.ts +123 -0
  90. package/lib/metadata/csdl/csdl-entity-container.d.ts +26 -0
  91. package/lib/metadata/csdl/csdl-entity-set.d.ts +20 -0
  92. package/lib/metadata/csdl/csdl-enum-type.d.ts +29 -0
  93. package/lib/metadata/csdl/csdl-function-action.d.ts +105 -0
  94. package/lib/metadata/csdl/csdl-navigation-property-binding.d.ts +8 -0
  95. package/lib/metadata/csdl/csdl-reference.d.ts +30 -0
  96. package/lib/metadata/csdl/csdl-schema.d.ts +34 -0
  97. package/lib/metadata/csdl/csdl-singleton.d.ts +16 -0
  98. package/lib/metadata/csdl/csdl-structural-property.d.ts +70 -0
  99. package/lib/metadata/csdl/csdl-structured-type.d.ts +73 -0
  100. package/lib/metadata/csdl/csdl-type-definition.d.ts +22 -0
  101. package/lib/metadata/index.d.ts +2 -0
  102. package/lib/metadata/metadata.d.ts +10 -0
  103. package/lib/{resources/responses/metadata.d.ts → metadata/parser.d.ts} +19 -7
  104. package/lib/models/collection.d.ts +4 -3
  105. package/lib/models/model.d.ts +15 -23
  106. package/lib/models/options.d.ts +37 -23
  107. package/lib/resources/index.d.ts +1 -1
  108. package/lib/resources/{responses/options.d.ts → options.d.ts} +2 -2
  109. package/lib/resources/path/handlers.d.ts +4 -2
  110. package/lib/resources/path/segments.d.ts +3 -1
  111. package/lib/resources/query/expressions/apply.d.ts +37 -15
  112. package/lib/resources/query/expressions/base.d.ts +1 -1
  113. package/lib/resources/query/expressions/compute.d.ts +2 -2
  114. package/lib/resources/query/expressions/count.d.ts +1 -1
  115. package/lib/resources/query/expressions/expand.d.ts +1 -1
  116. package/lib/resources/query/expressions/filter.d.ts +1 -1
  117. package/lib/resources/query/expressions/orderby.d.ts +5 -4
  118. package/lib/resources/query/expressions/search.d.ts +1 -1
  119. package/lib/resources/query/expressions/select.d.ts +2 -1
  120. package/lib/resources/query/expressions/syntax.d.ts +6 -3
  121. package/lib/resources/resource.d.ts +27 -15
  122. package/lib/resources/{responses/response.d.ts → response.d.ts} +17 -5
  123. package/lib/resources/types/action.d.ts +12 -10
  124. package/lib/resources/types/batch.d.ts +3 -2
  125. package/lib/resources/types/count.d.ts +1 -5
  126. package/lib/resources/types/entity-set.d.ts +13 -6
  127. package/lib/resources/types/entity.d.ts +3 -4
  128. package/lib/resources/types/function.d.ts +11 -11
  129. package/lib/resources/types/metadata.d.ts +1 -1
  130. package/lib/resources/types/navigation-property.d.ts +13 -7
  131. package/lib/resources/types/property.d.ts +15 -8
  132. package/lib/resources/types/reference.d.ts +2 -4
  133. package/lib/resources/types/singleton.d.ts +4 -6
  134. package/lib/resources/types/value.d.ts +2 -6
  135. package/lib/schema/callable.d.ts +5 -7
  136. package/lib/schema/element.d.ts +11 -4
  137. package/lib/schema/entity-container.d.ts +2 -0
  138. package/lib/schema/enum-type.d.ts +4 -7
  139. package/lib/schema/index.d.ts +1 -0
  140. package/lib/schema/parsers/callable.d.ts +7 -8
  141. package/lib/schema/parsers/enum-type.d.ts +2 -4
  142. package/lib/schema/parsers/structured-type.d.ts +6 -8
  143. package/lib/schema/schema.d.ts +6 -9
  144. package/lib/schema/singleton.d.ts +10 -0
  145. package/lib/schema/structured-type.d.ts +5 -8
  146. package/lib/services/entity-set.d.ts +7 -3
  147. package/lib/services/factory.d.ts +14 -2
  148. package/lib/services/singleton.d.ts +4 -2
  149. package/lib/settings.d.ts +0 -10
  150. package/lib/types.d.ts +12 -3
  151. package/package.json +5 -1
  152. package/schematics/apigen/angular/api-config.d.ts +15 -0
  153. package/schematics/apigen/angular/api-config.js +34 -0
  154. package/schematics/apigen/angular/api-config.js.map +1 -0
  155. package/schematics/apigen/angular/base.d.ts +51 -0
  156. package/schematics/apigen/angular/base.js +200 -0
  157. package/schematics/apigen/angular/base.js.map +1 -0
  158. package/schematics/apigen/angular/entity.d.ts +24 -0
  159. package/schematics/apigen/angular/entity.js +71 -0
  160. package/schematics/apigen/angular/entity.js.map +1 -0
  161. package/schematics/apigen/angular/enum.d.ts +25 -0
  162. package/schematics/apigen/angular/enum.js +56 -0
  163. package/schematics/apigen/angular/enum.js.map +1 -0
  164. package/schematics/apigen/angular/import.d.ts +6 -0
  165. package/schematics/apigen/angular/import.js +18 -0
  166. package/schematics/apigen/angular/import.js.map +1 -0
  167. package/schematics/apigen/angular/module.d.ts +18 -0
  168. package/schematics/apigen/angular/module.js +41 -0
  169. package/schematics/apigen/angular/module.js.map +1 -0
  170. package/schematics/apigen/angular/service.d.ts +20 -0
  171. package/schematics/apigen/angular/service.js +76 -0
  172. package/schematics/apigen/angular/service.js.map +1 -0
  173. package/schematics/apigen/files/api-config/__fileName__.ts +9 -0
  174. package/schematics/apigen/files/entity/__fileName__.ts +7 -0
  175. package/schematics/apigen/files/entitycontainer-service/__fileName__.ts +18 -0
  176. package/schematics/apigen/files/entityset-service/__fileName__.ts +27 -0
  177. package/schematics/apigen/files/enum/__fileName__.ts +4 -0
  178. package/schematics/apigen/files/index/__fileName__.ts +2 -0
  179. package/schematics/apigen/files/module/__fileName__.ts +9 -0
  180. package/schematics/apigen/files/singleton-service/__fileName__.ts +18 -0
  181. package/schematics/apigen/index.d.ts +3 -0
  182. package/schematics/apigen/index.js +106 -0
  183. package/schematics/apigen/index.js.map +1 -0
  184. package/schematics/apigen/metadata/csdl/csdl-annotation.d.ts +120 -0
  185. package/schematics/apigen/metadata/csdl/csdl-annotation.js +98 -0
  186. package/schematics/apigen/metadata/csdl/csdl-annotation.js.map +1 -0
  187. package/schematics/apigen/metadata/csdl/csdl-entity-container.d.ts +26 -0
  188. package/schematics/apigen/metadata/csdl/csdl-entity-container.js +30 -0
  189. package/schematics/apigen/metadata/csdl/csdl-entity-container.js.map +1 -0
  190. package/schematics/apigen/metadata/csdl/csdl-entity-set.d.ts +20 -0
  191. package/schematics/apigen/metadata/csdl/csdl-entity-set.js +26 -0
  192. package/schematics/apigen/metadata/csdl/csdl-entity-set.js.map +1 -0
  193. package/schematics/apigen/metadata/csdl/csdl-enum-type.d.ts +28 -0
  194. package/schematics/apigen/metadata/csdl/csdl-enum-type.js +33 -0
  195. package/schematics/apigen/metadata/csdl/csdl-enum-type.js.map +1 -0
  196. package/schematics/apigen/metadata/csdl/csdl-function-action.d.ts +103 -0
  197. package/schematics/apigen/metadata/csdl/csdl-function-action.js +84 -0
  198. package/schematics/apigen/metadata/csdl/csdl-function-action.js.map +1 -0
  199. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.d.ts +8 -0
  200. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.js +11 -0
  201. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.js.map +1 -0
  202. package/schematics/apigen/metadata/csdl/csdl-reference.d.ts +30 -0
  203. package/schematics/apigen/metadata/csdl/csdl-reference.js +29 -0
  204. package/schematics/apigen/metadata/csdl/csdl-reference.js.map +1 -0
  205. package/schematics/apigen/metadata/csdl/csdl-schema.d.ts +32 -0
  206. package/schematics/apigen/metadata/csdl/csdl-schema.js +26 -0
  207. package/schematics/apigen/metadata/csdl/csdl-schema.js.map +1 -0
  208. package/schematics/apigen/metadata/csdl/csdl-singleton.d.ts +18 -0
  209. package/schematics/apigen/metadata/csdl/csdl-singleton.js +25 -0
  210. package/schematics/apigen/metadata/csdl/csdl-singleton.js.map +1 -0
  211. package/schematics/apigen/metadata/csdl/csdl-structural-property.d.ts +63 -0
  212. package/schematics/apigen/metadata/csdl/csdl-structural-property.js +50 -0
  213. package/schematics/apigen/metadata/csdl/csdl-structural-property.js.map +1 -0
  214. package/schematics/apigen/metadata/csdl/csdl-structured-type.d.ts +64 -0
  215. package/schematics/apigen/metadata/csdl/csdl-structured-type.js +71 -0
  216. package/schematics/apigen/metadata/csdl/csdl-structured-type.js.map +1 -0
  217. package/schematics/apigen/metadata/csdl/csdl-type-definition.d.ts +22 -0
  218. package/schematics/apigen/metadata/csdl/csdl-type-definition.js +19 -0
  219. package/schematics/apigen/metadata/csdl/csdl-type-definition.js.map +1 -0
  220. package/schematics/apigen/metadata/index.d.ts +1 -0
  221. package/schematics/apigen/metadata/index.js +18 -0
  222. package/schematics/apigen/metadata/index.js.map +1 -0
  223. package/schematics/apigen/metadata/metadata.d.ts +11 -0
  224. package/schematics/apigen/metadata/metadata.js +30 -0
  225. package/schematics/apigen/metadata/metadata.js.map +1 -0
  226. package/schematics/apigen/metadata/parser.d.ts +110 -0
  227. package/schematics/apigen/metadata/parser.js +568 -0
  228. package/schematics/apigen/metadata/parser.js.map +1 -0
  229. package/schematics/apigen/schema.d.ts +8 -0
  230. package/schematics/apigen/schema.js +3 -0
  231. package/schematics/apigen/schema.js.map +1 -0
  232. package/schematics/apigen/schema.json +36 -0
  233. package/schematics/apigen/utils.d.ts +1 -0
  234. package/schematics/apigen/utils.js +75 -0
  235. package/schematics/apigen/utils.js.map +1 -0
  236. package/schematics/collection.json +14 -0
  237. package/schematics/ng-add/index.d.ts +2 -0
  238. package/schematics/ng-add/index.js +13 -0
  239. package/schematics/ng-add/index.js.map +1 -0
  240. package/schematics/random.d.ts +1 -0
  241. package/schematics/random.js +604 -0
  242. package/schematics/random.js.map +1 -0
  243. package/esm2022/lib/resources/responses/annotations.mjs +0 -140
  244. package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +0 -33
  245. package/esm2022/lib/resources/responses/csdl/csdl-entity-container.mjs +0 -11
  246. package/esm2022/lib/resources/responses/csdl/csdl-entity-set.mjs +0 -9
  247. package/esm2022/lib/resources/responses/csdl/csdl-enum-type.mjs +0 -15
  248. package/esm2022/lib/resources/responses/csdl/csdl-function-action.mjs +0 -56
  249. package/esm2022/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +0 -7
  250. package/esm2022/lib/resources/responses/csdl/csdl-reference.mjs +0 -23
  251. package/esm2022/lib/resources/responses/csdl/csdl-schema.mjs +0 -18
  252. package/esm2022/lib/resources/responses/csdl/csdl-singleton.mjs +0 -8
  253. package/esm2022/lib/resources/responses/csdl/csdl-structural-property.mjs +0 -39
  254. package/esm2022/lib/resources/responses/csdl/csdl-structured-type.mjs +0 -34
  255. package/esm2022/lib/resources/responses/csdl/csdl-type-definition.mjs +0 -14
  256. package/esm2022/lib/resources/responses/index.mjs +0 -5
  257. package/esm2022/lib/resources/responses/metadata.mjs +0 -547
  258. package/esm2022/lib/resources/responses/options.mjs +0 -56
  259. package/esm2022/lib/resources/responses/response.mjs +0 -174
  260. package/esm2022/lib/resources/responses/types.mjs +0 -2
  261. package/lib/resources/responses/csdl/csdl-annotation.d.ts +0 -27
  262. package/lib/resources/responses/csdl/csdl-entity-container.d.ts +0 -12
  263. package/lib/resources/responses/csdl/csdl-entity-set.d.ts +0 -8
  264. package/lib/resources/responses/csdl/csdl-enum-type.d.ts +0 -12
  265. package/lib/resources/responses/csdl/csdl-function-action.d.ts +0 -49
  266. package/lib/resources/responses/csdl/csdl-navigation-property-binding.d.ts +0 -5
  267. package/lib/resources/responses/csdl/csdl-reference.d.ts +0 -18
  268. package/lib/resources/responses/csdl/csdl-schema.d.ts +0 -20
  269. package/lib/resources/responses/csdl/csdl-singleton.d.ts +0 -7
  270. package/lib/resources/responses/csdl/csdl-structural-property.d.ts +0 -31
  271. package/lib/resources/responses/csdl/csdl-structured-type.d.ts +0 -27
  272. package/lib/resources/responses/csdl/csdl-type-definition.d.ts +0 -11
  273. package/lib/resources/responses/index.d.ts +0 -4
  274. package/lib/resources/responses/types.d.ts +0 -13
@@ -172,4 +172,4 @@ export class ODataCache {
172
172
  return res$;
173
173
  }
174
174
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvY2FjaGUvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFnQjlDLE1BQU0sT0FBZ0IsVUFBVTtJQUk5QixZQUFZLEVBQUUsT0FBTyxHQUFHLGVBQWUsRUFBd0I7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztJQUN6RCxDQUFDO0lBS0Q7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxHQUFzQjtRQUMxQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVM7Z0JBQ2xDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQVksQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELENBQUMsU0FBUyxDQUFDLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxD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QkFDakMsUUFBUSxFQUFFO2lCQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxRQUFRLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ0FDSEVfS0VZX1NFUEFSQVRPUiwgREVGQVVMVF9USU1FT1VUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhQmF0Y2hSZXNvdXJjZSwgT0RhdGFSZXF1ZXN0LCBPRGF0YVJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IENhY2hlLCBQYXRoU2VnbWVudCB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBBIGNhY2hlIGVudHJ5IHRoYXQgaG9sZHMgYSBwYXlsb2FkLCBhIGxhc3QgcmVhZCB0aW1lLCBhbmQgYSB0aW1lb3V0IGZvciB0aGUgZW50cnkuXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB0byBjYWNoZS5cbiAqIEBwYXJhbSBsYXN0UmVhZCBUaGUgbGFzdCByZWFkIHRpbWUuXG4gKiBAcGFyYW0gdGltZW91dCBUaGUgdGltZW91dC5cbiAqIEBwYXJhbSB0YWdzIFNvbWUgdGFncyB0byBpZGVudGlmeSB0aGUgZW50cnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0RhdGFDYWNoZUVudHJ5PFQ+IHtcbiAgcGF5bG9hZDogVDtcbiAgbGFzdFJlYWQ6IG51bWJlcjtcbiAgdGltZW91dDogbnVtYmVyO1xuICB0YWdzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQ2FjaGUgaW1wbGVtZW50cyBDYWNoZSB7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgZW50cmllczogTWFwPHN0cmluZywgT0RhdGFDYWNoZUVudHJ5PGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKHsgdGltZW91dCA9IERFRkFVTFRfVElNRU9VVCB9OiB7IHRpbWVvdXQ/OiBudW1iZXIgfSkge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcDxzdHJpbmcsIE9EYXRhQ2FjaGVFbnRyeTxhbnk+PigpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0UmVzcG9uc2UocmVxOiBPRGF0YVJlcXVlc3Q8YW55Pik6IE9EYXRhUmVzcG9uc2U8YW55PiB8IHVuZGVmaW5lZDtcbiAgYWJzdHJhY3QgcHV0UmVzcG9uc2UocmVxOiBPRGF0YVJlcXVlc3Q8YW55PiwgcmVzOiBPRGF0YVJlc3BvbnNlPGFueT4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBVc2luZyB0aGUgcmVzb3VyY2Ugb24gdGhlIHJlcXVlc3QgYnVpbGQgYW4gYXJyYXkgb2Ygc3RyaW5nIHRvIGlkZW50aWZ5IHRoZSBzY29wZSBvZiB0aGUgcmVxdWVzdFxuICAgKiBAcGFyYW0gcmVxIFRoZSByZXF1ZXN0IHdpdGggdGhlIHJlc291cmNlIHRvIGJ1aWxkIHRoZSBzY29wZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBzdHJpbmcgdG8gaWRlbnRpZnkgdGhlIHNjb3BlIG9mIHRoZSByZXF1ZXN0XG4gICAqL1xuICBzY29wZShyZXE6IE9EYXRhUmVxdWVzdDxhbnk+KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gcmVxLnJlc291cmNlLmNsb25lU2VnbWVudHMoKTtcbiAgICByZXR1cm4gc2VnbWVudHMuc2VnbWVudHMoeyBrZXk6IHRydWUgfSkucmVkdWNlKFxuICAgICAgKGFjYywgcykgPT4ge1xuICAgICAgICBpZiAocy5uYW1lID09PSBQYXRoU2VnbWVudC5lbnRpdHlTZXQpXG4gICAgICAgICAgYWNjID0gWy4uLmFjYywgcy5wYXRoKCkgYXMgc3RyaW5nXTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICBbJ3JlcXVlc3QnXSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzaW5nIHRoZSBvZGF0YSBjb250ZXh0IG9uIHRoZSByZXNwb25zZSBidWlsZCBhbiBhcnJheSBvZiBzdHJpbmcgdG8gaWRlbnRpZnkgdGhlIHRhZ3Mgb2YgdGhlIHJlc3BvbnNlXG4gICAqIEBwYXJhbSByZXMgVGhlIHJlc3BvbnNlIHRvIGJ1aWxkIHRoZSB0YWdzXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHN0cmluZyB0byBpZGVudGlmeSB0aGUgdGFncyBvZiB0aGUgcmVzcG9uc2VcbiAgICovXG4gIHRhZ3MocmVzOiBPRGF0YVJlc3BvbnNlPGFueT4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgdGFncyA9IFtdO1xuICAgIGNvbnN0IGNvbnRleHQgPSByZXMuY29udGV4dDtcbiAgICBpZiAoY29udGV4dC5lbnRpdHlTZXQpIHtcbiAgICAgIHRhZ3MucHVzaChcbiAgICAgICAgY29udGV4dC5rZXlcbiAgICAgICAgICA/IGAke2NvbnRleHQuZW50aXR5U2V0fSgke2NvbnRleHQua2V5fSlgXG4gICAgICAgICAgOiBjb250ZXh0LmVudGl0eVNldCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0LnR5cGUpIHRhZ3MucHVzaChjb250ZXh0LnR5cGUpO1xuICAgIHJldHVybiB0YWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIGVudHJ5IGZyb20gYSBwYXlsb2FkIGFuZCBzb21lIG9wdGlvbnNcbiAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgdG8gc3RvcmUgaW4gdGhlIGNhY2hlXG4gICAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lb3V0IGZvciB0aGUgZW50cnlcbiAgICogQHBhcmFtIHRhZ3MgVGhlIHRhZ3MgZm9yIHRoZSBlbnRyeVxuICAgKiBAcmV0dXJucyBUaGUgZW50cnkgdG8gc3RvcmUgaW4gdGhlIGNhY2hlXG4gICAqL1xuICBidWlsZEVudHJ5PFQ+KFxuICAgIHBheWxvYWQ6IFQsXG4gICAgeyB0aW1lb3V0LCB0YWdzIH06IHsgdGltZW91dD86IG51bWJlcjsgdGFncz86IHN0cmluZ1tdIH0sXG4gICk6IE9EYXRhQ2FjaGVFbnRyeTxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBheWxvYWQsXG4gICAgICBsYXN0UmVhZDogRGF0ZS5ub3coKSxcbiAgICAgIHRpbWVvdXQ6IHRpbWVvdXQgfHwgdGhpcy50aW1lb3V0LFxuICAgICAgdGFnczogdGFncyB8fCBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEga2V5IGZyb20gc3RvcmUgYW4gZW50cnkgaW4gdGhlIGNhY2hlXG4gICAqIEBwYXJhbSBuYW1lcyBUaGUgbmFtZXMgb2YgdGhlIGVudHJ5XG4gICAqIEByZXR1cm5zIFRoZSBrZXkgZm9yIHRoZSBlbnRyeVxuICAgKi9cbiAgYnVpbGRLZXkobmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZXMuam9pbihDQUNIRV9LRVlfU0VQQVJBVE9SKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXQgc29tZSBwYXlsb2FkIGluIHRoZSBjYWNoZVxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBmb3IgdGhlIGVudHJ5XG4gICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHRvIHN0b3JlIGluIHRoZSBjYWNoZVxuICAgKiBAcGFyYW0gdGltZW91dCBUaGUgdGltZW91dCBmb3IgdGhlIGVudHJ5XG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgZm9yIHRoZSBlbnRyeVxuICAgKiBAcGFyYW0gdGFncyBUaGUgdGFncyBmb3IgdGhlIGVudHJ5XG4gICAqL1xuICBwdXQ8VD4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBheWxvYWQ6IFQsXG4gICAge1xuICAgICAgdGltZW91dCxcbiAgICAgIHNjb3BlLFxuICAgICAgdGFncyxcbiAgICB9OiB7IHRpbWVvdXQ/OiBudW1iZXI7IHNjb3BlPzogc3RyaW5nW107IHRhZ3M/OiBzdHJpbmdbXSB9ID0ge30sXG4gICkge1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5idWlsZEVudHJ5PFQ+KHBheWxvYWQsIHsgdGltZW91dCwgdGFncyB9KTtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkS2V5KFsuLi4oc2NvcGUgfHwgW10pLCBuYW1lXSk7XG4gICAgdGhpcy5lbnRyaWVzLnNldChrZXksIGVudHJ5KTtcbiAgICB0aGlzLmZvcmdldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcGF5bG9hZCBmcm9tIHRoZSBjYWNoZSBpZiBpdCBleGlzdHMgYW5kIGlzIG5vdCBleHBpcmVkXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBlbnRyeVxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIG9mIHRoZSBlbnRyeVxuICAgKiBAcmV0dXJucyBUaGUgcGF5bG9hZCBvZiB0aGUgZW50cnlcbiAgICovXG4gIGdldDxUPihuYW1lOiBzdHJpbmcsIHsgc2NvcGUgfTogeyBzY29wZT86IHN0cmluZ1tdIH0gPSB7fSk6IFQge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRLZXkoWy4uLihzY29wZSB8fCBbXSksIG5hbWVdKTtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllcy5nZXQoa2V5KTtcbiAgICByZXR1cm4gZW50cnkgIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5pc0V4cGlyZWQoZW50cnkpXG4gICAgICA/IGVudHJ5LnBheWxvYWRcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgY2FjaGUgZW50cmllcyB0aGF0IGFyZSBtYXRjaGluZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIGZvcmdldFxuICAgKi9cbiAgZm9yZ2V0KHtcbiAgICBuYW1lLFxuICAgIHNjb3BlID0gW10sXG4gICAgdGFncyA9IFtdLFxuICB9OiB7IG5hbWU/OiBzdHJpbmc7IHNjb3BlPzogc3RyaW5nW107IHRhZ3M/OiBzdHJpbmdbXSB9ID0ge30pIHtcbiAgICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSBzY29wZS5wdXNoKG5hbWUpO1xuICAgIGNvbnN0IGtleSA9IHNjb3BlLmxlbmd0aCA+IDAgPyB0aGlzLmJ1aWxkS2V5KHNjb3BlKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGspID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5pc0V4cGlyZWQoZW50cnkpIHx8IC8vIEV4cGlyZWRcbiAgICAgICAgKGtleSAhPT0gdW5kZWZpbmVkICYmIGsuc3RhcnRzV2l0aChrZXkpKSB8fCAvLyBLZXlcbiAgICAgICAgKHRhZ3MubGVuZ3RoID4gMCAmJiB0YWdzLnNvbWUoKHQpID0+IGVudHJ5LnRhZ3MuaW5kZXhPZih0KSAhPT0gLTEpKSAvLyBUYWdzXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmRlbGV0ZShrKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGNhY2hlIGVudHJpZXNcbiAgICovXG4gIGZsdXNoKCkge1xuICAgIHRoaXMuZW50cmllcyA9IG5ldyBNYXA8c3RyaW5nLCBPRGF0YUNhY2hlRW50cnk8YW55Pj4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgZW50cnkgaXMgZXhwaXJlZFxuICAgKiBAcGFyYW0gZW50cnkgVGhlIGNhY2hlIGVudHJ5XG4gICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgZW50cnkgaXMgZXhwaXJlZFxuICAgKi9cbiAgaXNFeHBpcmVkKGVudHJ5OiBPRGF0YUNhY2hlRW50cnk8YW55Pikge1xuICAgIHJldHVybiBlbnRyeS5sYXN0UmVhZCA8IERhdGUubm93KCkgLSAoZW50cnkudGltZW91dCB8fCB0aGlzLnRpbWVvdXQpICogMTAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2luZyB0aGUgcmVxdWVzdCwgaGFuZGxlIHRoZSBmZXRjaGluZyBvZiB0aGUgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlcSBUaGUgcmVxdWVzdCB0byBmZXRjaFxuICAgKiBAcGFyYW0gcmVzJCBPYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgaGFuZGxlUmVxdWVzdChcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxhbnk+LFxuICAgIHJlcyQ6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxhbnk+PixcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPGFueT4+IHtcbiAgICByZXR1cm4gcmVxLmlzRmV0Y2goKVxuICAgICAgPyB0aGlzLmhhbmRsZUZldGNoKHJlcSwgcmVzJClcbiAgICAgIDogcmVxLmlzTXV0YXRlKClcbiAgICAgID8gdGhpcy5oYW5kbGVNdXRhdGUocmVxLCByZXMkKVxuICAgICAgOiByZXMkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGZXRjaChcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxhbnk+LFxuICAgIHJlcyQ6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxhbnk+PixcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPGFueT4+IHtcbiAgICBjb25zdCBwb2xpY3kgPSByZXEuZmV0Y2hQb2xpY3k7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5nZXRSZXNwb25zZShyZXEpO1xuICAgIGlmIChwb2xpY3kgPT09ICduby1jYWNoZScpIHtcbiAgICAgIHJldHVybiByZXMkO1xuICAgIH1cbiAgICBpZiAocG9saWN5ID09PSAnY2FjaGUtb25seScpIHtcbiAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgcmV0dXJuIG9mKGNhY2hlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ05vIENhY2hlZCcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgcG9saWN5ID09PSAnY2FjaGUtZmlyc3QnIHx8XG4gICAgICBwb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycgfHxcbiAgICAgIHBvbGljeSA9PT0gJ25ldHdvcmstb25seSdcbiAgICApIHtcbiAgICAgIHJlcyQgPSByZXMkLnBpcGUoXG4gICAgICAgIHRhcCgocmVzOiBPRGF0YVJlc3BvbnNlPGFueT4pID0+IHtcbiAgICAgICAgICBpZiAocmVzLm9wdGlvbnMuY2FjaGVhYmlsaXR5ICE9PSAnbm8tc3RvcmUnKVxuICAgICAgICAgICAgdGhpcy5wdXRSZXNwb25zZShyZXEsIHJlcyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZCAhPT0gdW5kZWZpbmVkICYmIHBvbGljeSAhPT0gJ25ldHdvcmstb25seSdcbiAgICAgID8gcG9saWN5ID09PSAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgICAgID8gcmVzJC5waXBlKHN0YXJ0V2l0aChjYWNoZWQpKVxuICAgICAgICA6IG9mKGNhY2hlZClcbiAgICAgIDogcmVzJDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXV0YXRlKFxuICAgIHJlcTogT0RhdGFSZXF1ZXN0PGFueT4sXG4gICAgcmVzJDogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPGFueT4+LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8YW55Pj4ge1xuICAgIGNvbnN0IHJlcXVlc3RzID0gcmVxLmlzQmF0Y2goKVxuICAgICAgPyAocmVxLnJlc291cmNlIGFzIE9EYXRhQmF0Y2hSZXNvdXJjZSlcbiAgICAgICAgICAucmVxdWVzdHMoKVxuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIuaXNNdXRhdGUoKSlcbiAgICAgIDogW3JlcV07XG4gICAgZm9yICh2YXIgciBvZiByZXF1ZXN0cykge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLnNjb3BlKHIpO1xuICAgICAgdGhpcy5mb3JnZXQoeyBzY29wZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcyQ7XG4gIH1cbn1cbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvY2FjaGUvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFnQjlDLE1BQU0sT0FBZ0IsVUFBVTtJQUk5QixZQUFZLEVBQUUsT0FBTyxHQUFHLGVBQWUsRUFBd0I7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztJQUN6RCxDQUFDO0lBS0Q7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxHQUFzQjtRQUMxQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVM7Z0JBQ2xDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQVksQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELENBQUMsU0FBUyxDQUFDLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxD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QUNqQyxRQUFRLEVBQUU7aUJBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixLQUFLLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDQUNIRV9LRVlfU0VQQVJBVE9SLCBERUZBVUxUX1RJTUVPVVQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT0RhdGFCYXRjaFJlc291cmNlLCBPRGF0YVJlcXVlc3QsIE9EYXRhUmVzcG9uc2UgfSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ2FjaGUsIFBhdGhTZWdtZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIEEgY2FjaGUgZW50cnkgdGhhdCBob2xkcyBhIHBheWxvYWQsIGEgbGFzdCByZWFkIHRpbWUsIGFuZCBhIHRpbWVvdXQgZm9yIHRoZSBlbnRyeS5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHRvIGNhY2hlLlxuICogQHBhcmFtIGxhc3RSZWFkIFRoZSBsYXN0IHJlYWQgdGltZS5cbiAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHRhZ3MgU29tZSB0YWdzIHRvIGlkZW50aWZ5IHRoZSBlbnRyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPRGF0YUNhY2hlRW50cnk8VD4ge1xuICBwYXlsb2FkOiBUO1xuICBsYXN0UmVhZDogbnVtYmVyO1xuICB0aW1lb3V0OiBudW1iZXI7XG4gIHRhZ3M6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFDYWNoZSBpbXBsZW1lbnRzIENhY2hlIHtcbiAgdGltZW91dDogbnVtYmVyO1xuICBlbnRyaWVzOiBNYXA8c3RyaW5nLCBPRGF0YUNhY2hlRW50cnk8YW55Pj47XG5cbiAgY29uc3RydWN0b3IoeyB0aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUIH06IHsgdGltZW91dD86IG51bWJlciB9KSB7XG4gICAgdGhpcy50aW1lb3V0ID0gdGltZW91dDtcbiAgICB0aGlzLmVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgT0RhdGFDYWNoZUVudHJ5PGFueT4+KCk7XG4gIH1cblxuICBhYnN0cmFjdCBnZXRSZXNwb25zZShyZXE6IE9EYXRhUmVxdWVzdDxhbnk+KTogT0RhdGFSZXNwb25zZTxhbnk+IHwgdW5kZWZpbmVkO1xuICBhYnN0cmFjdCBwdXRSZXNwb25zZShyZXE6IE9EYXRhUmVxdWVzdDxhbnk+LCByZXM6IE9EYXRhUmVzcG9uc2U8YW55Pik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVzaW5nIHRoZSByZXNvdXJjZSBvbiB0aGUgcmVxdWVzdCBidWlsZCBhbiBhcnJheSBvZiBzdHJpbmcgdG8gaWRlbnRpZnkgdGhlIHNjb3BlIG9mIHRoZSByZXF1ZXN0XG4gICAqIEBwYXJhbSByZXEgVGhlIHJlcXVlc3Qgd2l0aCB0aGUgcmVzb3VyY2UgdG8gYnVpbGQgdGhlIHNjb3BlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHN0cmluZyB0byBpZGVudGlmeSB0aGUgc2NvcGUgb2YgdGhlIHJlcXVlc3RcbiAgICovXG4gIHNjb3BlKHJlcTogT0RhdGFSZXF1ZXN0PGFueT4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSByZXEucmVzb3VyY2UuY2xvbmVTZWdtZW50cygpO1xuICAgIHJldHVybiBzZWdtZW50cy5zZWdtZW50cyh7IGtleTogdHJ1ZSB9KS5yZWR1Y2UoXG4gICAgICAoYWNjLCBzKSA9PiB7XG4gICAgICAgIGlmIChzLm5hbWUgPT09IFBhdGhTZWdtZW50LmVudGl0eVNldClcbiAgICAgICAgICBhY2MgPSBbLi4uYWNjLCBzLnBhdGgoKSBhcyBzdHJpbmddO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIFsncmVxdWVzdCddLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXNpbmcgdGhlIG9kYXRhIGNvbnRleHQgb24gdGhlIHJlc3BvbnNlIGJ1aWxkIGFuIGFycmF5IG9mIHN0cmluZyB0byBpZGVudGlmeSB0aGUgdGFncyBvZiB0aGUgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlcyBUaGUgcmVzcG9uc2UgdG8gYnVpbGQgdGhlIHRhZ3NcbiAgICogQHJldHVybnMgQXJyYXkgb2Ygc3RyaW5nIHRvIGlkZW50aWZ5IHRoZSB0YWdzIG9mIHRoZSByZXNwb25zZVxuICAgKi9cbiAgdGFncyhyZXM6IE9EYXRhUmVzcG9uc2U8YW55Pik6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB0YWdzID0gW107XG4gICAgY29uc3QgY29udGV4dCA9IHJlcy5jb250ZXh0O1xuICAgIGlmIChjb250ZXh0LmVudGl0eVNldCkge1xuICAgICAgdGFncy5wdXNoKFxuICAgICAgICBjb250ZXh0LmtleVxuICAgICAgICAgID8gYCR7Y29udGV4dC5lbnRpdHlTZXR9KCR7Y29udGV4dC5rZXl9KWBcbiAgICAgICAgICA6IGNvbnRleHQuZW50aXR5U2V0LFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQudHlwZSkgdGFncy5wdXNoKGNvbnRleHQudHlwZSk7XG4gICAgcmV0dXJuIHRhZ3M7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW4gZW50cnkgZnJvbSBhIHBheWxvYWQgYW5kIHNvbWUgb3B0aW9uc1xuICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB0byBzdG9yZSBpbiB0aGUgY2FjaGVcbiAgICogQHBhcmFtIHRpbWVvdXQgVGhlIHRpbWVvdXQgZm9yIHRoZSBlbnRyeVxuICAgKiBAcGFyYW0gdGFncyBUaGUgdGFncyBmb3IgdGhlIGVudHJ5XG4gICAqIEByZXR1cm5zIFRoZSBlbnRyeSB0byBzdG9yZSBpbiB0aGUgY2FjaGVcbiAgICovXG4gIGJ1aWxkRW50cnk8VD4oXG4gICAgcGF5bG9hZDogVCxcbiAgICB7IHRpbWVvdXQsIHRhZ3MgfTogeyB0aW1lb3V0PzogbnVtYmVyOyB0YWdzPzogc3RyaW5nW10gfSxcbiAgKTogT0RhdGFDYWNoZUVudHJ5PFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF5bG9hZCxcbiAgICAgIGxhc3RSZWFkOiBEYXRlLm5vdygpLFxuICAgICAgdGltZW91dDogdGltZW91dCB8fCB0aGlzLnRpbWVvdXQsXG4gICAgICB0YWdzOiB0YWdzIHx8IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBrZXkgZnJvbSBzdG9yZSBhbiBlbnRyeSBpbiB0aGUgY2FjaGVcbiAgICogQHBhcmFtIG5hbWVzIFRoZSBuYW1lcyBvZiB0aGUgZW50cnlcbiAgICogQHJldHVybnMgVGhlIGtleSBmb3IgdGhlIGVudHJ5XG4gICAqL1xuICBidWlsZEtleShuYW1lczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lcy5qb2luKENBQ0hFX0tFWV9TRVBBUkFUT1IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1dCBzb21lIHBheWxvYWQgaW4gdGhlIGNhY2hlXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIGZvciB0aGUgZW50cnlcbiAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgdG8gc3RvcmUgaW4gdGhlIGNhY2hlXG4gICAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lb3V0IGZvciB0aGUgZW50cnlcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBmb3IgdGhlIGVudHJ5XG4gICAqIEBwYXJhbSB0YWdzIFRoZSB0YWdzIGZvciB0aGUgZW50cnlcbiAgICovXG4gIHB1dDxUPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogVCxcbiAgICB7XG4gICAgICB0aW1lb3V0LFxuICAgICAgc2NvcGUsXG4gICAgICB0YWdzLFxuICAgIH06IHsgdGltZW91dD86IG51bWJlcjsgc2NvcGU/OiBzdHJpbmdbXTsgdGFncz86IHN0cmluZ1tdIH0gPSB7fSxcbiAgKSB7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzLmJ1aWxkRW50cnk8VD4ocGF5bG9hZCwgeyB0aW1lb3V0LCB0YWdzIH0pO1xuICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRLZXkoWy4uLihzY29wZSB8fCBbXSksIG5hbWVdKTtcbiAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgZW50cnkpO1xuICAgIHRoaXMuZm9yZ2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBwYXlsb2FkIGZyb20gdGhlIGNhY2hlIGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90IGV4cGlyZWRcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudHJ5XG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgb2YgdGhlIGVudHJ5XG4gICAqIEByZXR1cm5zIFRoZSBwYXlsb2FkIG9mIHRoZSBlbnRyeVxuICAgKi9cbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZywgeyBzY29wZSB9OiB7IHNjb3BlPzogc3RyaW5nW10gfSA9IHt9KTogVCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5idWlsZEtleShbLi4uKHNjb3BlIHx8IFtdKSwgbmFtZV0pO1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChrZXkpO1xuICAgIHJldHVybiBlbnRyeSAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzRXhwaXJlZChlbnRyeSlcbiAgICAgID8gZW50cnkucGF5bG9hZFxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFsbCBjYWNoZSBlbnRyaWVzIHRoYXQgYXJlIG1hdGNoaW5nIHdpdGggdGhlIGdpdmVuIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdG8gZm9yZ2V0XG4gICAqL1xuICBmb3JnZXQoe1xuICAgIG5hbWUsXG4gICAgc2NvcGUgPSBbXSxcbiAgICB0YWdzID0gW10sXG4gIH06IHsgbmFtZT86IHN0cmluZzsgc2NvcGU/OiBzdHJpbmdbXTsgdGFncz86IHN0cmluZ1tdIH0gPSB7fSkge1xuICAgIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHNjb3BlLnB1c2gobmFtZSk7XG4gICAgY29uc3Qga2V5ID0gc2NvcGUubGVuZ3RoID4gMCA/IHRoaXMuYnVpbGRLZXkoc2NvcGUpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKChlbnRyeSwgaykgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmlzRXhwaXJlZChlbnRyeSkgfHwgLy8gRXhwaXJlZFxuICAgICAgICAoa2V5ICE9PSB1bmRlZmluZWQgJiYgay5zdGFydHNXaXRoKGtleSkpIHx8IC8vIEtleVxuICAgICAgICAodGFncy5sZW5ndGggPiAwICYmIHRhZ3Muc29tZSgodCkgPT4gZW50cnkudGFncy5pbmRleE9mKHQpICE9PSAtMSkpIC8vIFRhZ3NcbiAgICAgICkge1xuICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGspO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgY2FjaGUgZW50cmllc1xuICAgKi9cbiAgZmx1c2goKSB7XG4gICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcDxzdHJpbmcsIE9EYXRhQ2FjaGVFbnRyeTxhbnk+PigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBlbnRyeSBpcyBleHBpcmVkXG4gICAqIEBwYXJhbSBlbnRyeSBUaGUgY2FjaGUgZW50cnlcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBlbnRyeSBpcyBleHBpcmVkXG4gICAqL1xuICBpc0V4cGlyZWQoZW50cnk6IE9EYXRhQ2FjaGVFbnRyeTxhbnk+KSB7XG4gICAgcmV0dXJuIGVudHJ5Lmxhc3RSZWFkIDwgRGF0ZS5ub3coKSAtIChlbnRyeS50aW1lb3V0IHx8IHRoaXMudGltZW91dCkgKiAxMDAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzaW5nIHRoZSByZXF1ZXN0LCBoYW5kbGUgdGhlIGZldGNoaW5nIG9mIHRoZSByZXNwb25zZVxuICAgKiBAcGFyYW0gcmVxIFRoZSByZXF1ZXN0IHRvIGZldGNoXG4gICAqIEBwYXJhbSByZXMkIE9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVSZXF1ZXN0KFxuICAgIHJlcTogT0RhdGFSZXF1ZXN0PGFueT4sXG4gICAgcmVzJDogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPGFueT4+LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiByZXEuaXNGZXRjaCgpXG4gICAgICA/IHRoaXMuaGFuZGxlRmV0Y2gocmVxLCByZXMkKVxuICAgICAgOiByZXEuaXNNdXRhdGUoKVxuICAgICAgICA/IHRoaXMuaGFuZGxlTXV0YXRlKHJlcSwgcmVzJClcbiAgICAgICAgOiByZXMkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGZXRjaChcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxhbnk+LFxuICAgIHJlcyQ6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxhbnk+PixcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPGFueT4+IHtcbiAgICBjb25zdCBwb2xpY3kgPSByZXEuZmV0Y2hQb2xpY3k7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5nZXRSZXNwb25zZShyZXEpO1xuICAgIGlmIChwb2xpY3kgPT09ICduby1jYWNoZScpIHtcbiAgICAgIHJldHVybiByZXMkO1xuICAgIH1cbiAgICBpZiAocG9saWN5ID09PSAnY2FjaGUtb25seScpIHtcbiAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgcmV0dXJuIG9mKGNhY2hlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ05vIENhY2hlZCcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgcG9saWN5ID09PSAnY2FjaGUtZmlyc3QnIHx8XG4gICAgICBwb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycgfHxcbiAgICAgIHBvbGljeSA9PT0gJ25ldHdvcmstb25seSdcbiAgICApIHtcbiAgICAgIHJlcyQgPSByZXMkLnBpcGUoXG4gICAgICAgIHRhcCgocmVzOiBPRGF0YVJlc3BvbnNlPGFueT4pID0+IHtcbiAgICAgICAgICBpZiAocmVzLm9wdGlvbnMuY2FjaGVhYmlsaXR5ICE9PSAnbm8tc3RvcmUnKVxuICAgICAgICAgICAgdGhpcy5wdXRSZXNwb25zZShyZXEsIHJlcyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZCAhPT0gdW5kZWZpbmVkICYmIHBvbGljeSAhPT0gJ25ldHdvcmstb25seSdcbiAgICAgID8gcG9saWN5ID09PSAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgICAgID8gcmVzJC5waXBlKHN0YXJ0V2l0aChjYWNoZWQpKVxuICAgICAgICA6IG9mKGNhY2hlZClcbiAgICAgIDogcmVzJDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXV0YXRlKFxuICAgIHJlcTogT0RhdGFSZXF1ZXN0PGFueT4sXG4gICAgcmVzJDogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPGFueT4+LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8YW55Pj4ge1xuICAgIGNvbnN0IHJlcXVlc3RzID0gcmVxLmlzQmF0Y2goKVxuICAgICAgPyAocmVxLnJlc291cmNlIGFzIE9EYXRhQmF0Y2hSZXNvdXJjZSlcbiAgICAgICAgICAucmVxdWVzdHMoKVxuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIuaXNNdXRhdGUoKSlcbiAgICAgIDogW3JlcV07XG4gICAgZm9yICh2YXIgciBvZiByZXF1ZXN0cykge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLnNjb3BlKHIpO1xuICAgICAgdGhpcy5mb3JnZXQoeyBzY29wZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcyQ7XG4gIH1cbn1cbiJdfQ==
@@ -27,4 +27,4 @@ export class ODataInMemoryCache extends ODataCache {
27
27
  return this.get(req.cacheKey, { scope });
28
28
  }
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL2NhY2hlL21lbW9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxVQUFVO0lBQ2hELFlBQVksRUFBRSxPQUFPLEtBQTJCLEVBQUU7UUFDaEQsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFzQixFQUFFLEdBQXVCO1FBQ3pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQzFCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDM0IsS0FBSztZQUNMLElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFzQjtRQUNoQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9EYXRhUmVxdWVzdCwgT0RhdGFSZXNwb25zZSB9IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPRGF0YUNhY2hlIH0gZnJvbSAnLi9jYWNoZSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUluTWVtb3J5Q2FjaGUgZXh0ZW5kcyBPRGF0YUNhY2hlIHtcbiAgY29uc3RydWN0b3IoeyB0aW1lb3V0IH06IHsgdGltZW91dD86IG51bWJlciB9ID0ge30pIHtcbiAgICBzdXBlcih7IHRpbWVvdXQgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgdGhlIHJlc3BvbnNlIGluIHRoZSBjYWNoZVxuICAgKiBAcGFyYW0gcmVxIFRoZSByZXF1ZXN0IHdpdGggdGhlIHJlc291cmNlIHRvIHN0b3JlIHRoZSByZXNwb25zZVxuICAgKiBAcGFyYW0gcmVzIFRoZSByZXNwb25zZSB0byBzdG9yZSBpbiB0aGUgY2FjaGVcbiAgICovXG4gIHB1dFJlc3BvbnNlKHJlcTogT0RhdGFSZXF1ZXN0PGFueT4sIHJlczogT0RhdGFSZXNwb25zZTxhbnk+KSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZShyZXEpO1xuICAgIGxldCB0YWdzID0gdGhpcy50YWdzKHJlcyk7XG4gICAgdGhpcy5wdXQocmVxLmNhY2hlS2V5LCByZXMsIHtcbiAgICAgIHRpbWVvdXQ6IHJlcy5vcHRpb25zLm1heEFnZSxcbiAgICAgIHNjb3BlLFxuICAgICAgdGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlIHRoZSByZXNwb25zZSBmcm9tIHRoZSBjYWNoZVxuICAgKiBAcGFyYW0gcmVxIFRoZSByZXF1ZXN0IHdpdGggdGhlIHJlc291cmNlIHRvIGdldCB0aGUgcmVzcG9uc2VcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIGNhY2hlXG4gICAqL1xuICBnZXRSZXNwb25zZShyZXE6IE9EYXRhUmVxdWVzdDxhbnk+KTogT0RhdGFSZXNwb25zZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKHJlcSk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHJlcS5jYWNoZUtleSwgeyBzY29wZSB9KTtcbiAgfVxufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL2NhY2hlL21lbW9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxVQUFVO0lBQ2hELFlBQVksRUFBRSxPQUFPLEtBQTJCLEVBQUU7UUFDaEQsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFzQixFQUFFLEdBQXVCO1FBQ3pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQzFCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDM0IsS0FBSztZQUNMLElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFzQjtRQUNoQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YVJlcXVlc3QsIE9EYXRhUmVzcG9uc2UgfSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgT0RhdGFDYWNoZSB9IGZyb20gJy4vY2FjaGUnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFJbk1lbW9yeUNhY2hlIGV4dGVuZHMgT0RhdGFDYWNoZSB7XG4gIGNvbnN0cnVjdG9yKHsgdGltZW91dCB9OiB7IHRpbWVvdXQ/OiBudW1iZXIgfSA9IHt9KSB7XG4gICAgc3VwZXIoeyB0aW1lb3V0IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSByZXNwb25zZSBpbiB0aGUgY2FjaGVcbiAgICogQHBhcmFtIHJlcSBUaGUgcmVxdWVzdCB3aXRoIHRoZSByZXNvdXJjZSB0byBzdG9yZSB0aGUgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlcyBUaGUgcmVzcG9uc2UgdG8gc3RvcmUgaW4gdGhlIGNhY2hlXG4gICAqL1xuICBwdXRSZXNwb25zZShyZXE6IE9EYXRhUmVxdWVzdDxhbnk+LCByZXM6IE9EYXRhUmVzcG9uc2U8YW55Pikge1xuICAgIGxldCBzY29wZSA9IHRoaXMuc2NvcGUocmVxKTtcbiAgICBsZXQgdGFncyA9IHRoaXMudGFncyhyZXMpO1xuICAgIHRoaXMucHV0KHJlcS5jYWNoZUtleSwgcmVzLCB7XG4gICAgICB0aW1lb3V0OiByZXMub3B0aW9ucy5tYXhBZ2UsXG4gICAgICBzY29wZSxcbiAgICAgIHRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZSB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgY2FjaGVcbiAgICogQHBhcmFtIHJlcSBUaGUgcmVxdWVzdCB3aXRoIHRoZSByZXNvdXJjZSB0byBnZXQgdGhlIHJlc3BvbnNlXG4gICAqIEByZXR1cm5zIFRoZSByZXNwb25zZSBmcm9tIHRoZSBjYWNoZVxuICAgKi9cbiAgZ2V0UmVzcG9uc2UocmVxOiBPRGF0YVJlcXVlc3Q8YW55Pik6IE9EYXRhUmVzcG9uc2U8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZShyZXEpO1xuICAgIHJldHVybiB0aGlzLmdldChyZXEuY2FjaGVLZXksIHsgc2NvcGUgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -22,8 +22,8 @@ export class ODataClient {
22
22
  constructor(http, loader) {
23
23
  this.http = http;
24
24
  this.loader = loader;
25
- this.loader.loadConfigs().subscribe((config) => {
26
- this.settings = new ODataSettings(config);
25
+ this.loader.loadConfigs().subscribe((configs) => {
26
+ this.settings = new ODataSettings(configs);
27
27
  this.settings.configure({
28
28
  requester: (req) => this.http.request(req.method, `${req.url}`, {
29
29
  body: req.body,
@@ -53,7 +53,7 @@ export class ODataClient {
53
53
  api =
54
54
  this.settings.findApiByName(value) ||
55
55
  this.settings.findApiForType(value);
56
- return api || this.settings.defaultApi();
56
+ return api ?? this.settings.defaultApi();
57
57
  }
58
58
  defaultApi() {
59
59
  return this.settings.defaultApi();
@@ -114,46 +114,6 @@ export class ODataClient {
114
114
  collectionForType(type) {
115
115
  return this.settings.collectionForType(type);
116
116
  }
117
- /**
118
- * Resolve the service for the given string type.
119
- * @param type The string type of the service.
120
- * @returns The service for the given type.
121
- */
122
- serviceForType(type) {
123
- //return this.injector.get(this.settings!.serviceForType(type));
124
- return undefined;
125
- }
126
- /**
127
- * Resolve the service for the given string entity type.
128
- * @param type The string entity type binding to the service.
129
- * @returns The service for the given entity type.
130
- */
131
- serviceForEntityType(type) {
132
- //return this.injector.get(this.settings!.serviceForEntityType(type));
133
- return undefined;
134
- }
135
- enumTypeByName(name) {
136
- return this.settings.enumTypeByName(name);
137
- }
138
- structuredTypeByName(name) {
139
- return this.settings.structuredTypeByName(name);
140
- }
141
- callableByName(name) {
142
- return this.settings.callableByName(name);
143
- }
144
- entitySetByName(name) {
145
- return this.settings.entitySetByName(name);
146
- }
147
- modelByName(name) {
148
- return this.settings.modelByName(name);
149
- }
150
- collectionByName(name) {
151
- return this.settings.collectionByName(name);
152
- }
153
- serviceByName(name) {
154
- //return this.injector.get(this.settings!.serviceByName(name));
155
- return undefined;
156
- }
157
117
  fromJson(json, apiNameOrType) {
158
118
  return this.apiFor(apiNameOrType).fromJson(json);
159
119
  }
@@ -249,4 +209,4 @@ export class ODataClient {
249
209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ODataClient, decorators: [{
250
210
  type: Injectable
251
211
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ODataConfigLoader }] });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxFQVVMLGFBQWEsR0FJZCxNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFFM0MsU0FBUyxPQUFPLENBQ2QsT0FHQyxFQUNELElBQWM7SUFFZCxPQUFPO1FBQ0wsSUFBSTtRQUNKLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7UUFDaEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1FBQ3RDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNsQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7S0FDekMsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLElBQWdCLEVBQ2hCLE1BQXlCO1FBRHpCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFFakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dC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LENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0F2MkNVLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgT0RhdGFDb25maWdMb2FkZXIgfSBmcm9tICcuL2xvYWRlcnMnO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uLCBPRGF0YU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgT0RhdGFBY3Rpb25SZXNvdXJjZSxcbiAgT0RhdGFCYXRjaFJlc291cmNlLFxuICBPRGF0YUVudGl0eVJlc291cmNlLFxuICBPRGF0YUVudGl0eVNldFJlc291cmNlLFxuICBPRGF0YUZ1bmN0aW9uUmVzb3VyY2UsXG4gIE9EYXRhTWV0YWRhdGFSZXNvdXJjZSxcbiAgT0RhdGFOYXZpZ2F0aW9uUHJvcGVydHlSZXNvdXJjZSxcbiAgT0RhdGFPcHRpb25zLFxuICBPRGF0YVJlcXVlc3QsXG4gIE9EYXRhUmVzb3VyY2UsXG4gIE9EYXRhUmVzcG9uc2UsXG4gIE9EYXRhU2VnbWVudCxcbiAgT0RhdGFTaW5nbGV0b25SZXNvdXJjZSxcbn0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXgnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9lbnRpdHknO1xuaW1wb3J0IHsgT0RhdGFTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuXG5mdW5jdGlvbiBhZGRCb2R5PFQ+KFxuICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICB9LFxuICBib2R5OiBUIHwgbnVsbCxcbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgYm9keSxcbiAgICBldGFnOiBvcHRpb25zLmV0YWcsXG4gICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgIG9ic2VydmU6IG9wdGlvbnMub2JzZXJ2ZSxcbiAgICBwYXJhbXM6IG9wdGlvbnMucGFyYW1zLFxuICAgIHJlcG9ydFByb2dyZXNzOiBvcHRpb25zLnJlcG9ydFByb2dyZXNzLFxuICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgd2l0aENyZWRlbnRpYWxzOiBvcHRpb25zLndpdGhDcmVkZW50aWFscyxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9EYXRhQ2xpZW50IHtcbiAgc2V0dGluZ3M/OiBPRGF0YVNldHRpbmdzO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsb2FkZXI6IE9EYXRhQ29uZmlnTG9hZGVyLFxuICApIHtcbiAgICB0aGlzLmxvYWRlci5sb2FkQ29uZmlncygpLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XG4gICAgICB0aGlzLnNldHRpbmdzID0gbmV3IE9EYXRhU2V0dGluZ3MoY29uZmlnKTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuY29uZmlndXJlKHtcbiAgICAgICAgcmVxdWVzdGVyOiAocmVxOiBPRGF0YVJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8YW55PiA9PlxuICAgICAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0KHJlcS5tZXRob2QsIGAke3JlcS51cmx9YCwge1xuICAgICAgICAgICAgYm9keTogcmVxLmJvZHksXG4gICAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICAgICAgb2JzZXJ2ZTogcmVxLm9ic2VydmUsXG4gICAgICAgICAgICBwYXJhbXM6IHJlcS5wYXJhbXMsXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVxLnJlcG9ydFByb2dyZXNzLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiByZXEucmVzcG9uc2VUeXBlLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiByZXEud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyNyZWdpb24gUmVzb2x2ZSBCdWlsZGluZyBCbG9ja3NcbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGFwaSBmb3IgdGhlIGdpdmVuIHZhbHVlLlxuICAgKiBXaGVyZSB2YWx1ZSBpczogc3RyaW5nIHR5cGUgb3IgYW4gc3RyaW5nIG5hbWUgb3IgYW4gaW5zdGFuY2Ugb2YgcmVzb3VyY2UuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVzb2x2ZS5cbiAgICogQHJldHVybnMgVGhlIGFwaSBmb3IgdGhlIHZhbHVlLlxuICAgKi9cbiAgYXBpRm9yKHZhbHVlPzogT0RhdGFSZXNvdXJjZTxhbnk+IHwgc3RyaW5nKTogT0RhdGFBcGkge1xuICAgIGxldCBhcGk6IE9EYXRhQXBpIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9EYXRhUmVzb3VyY2UpXG4gICAgICBhcGkgPSB0aGlzLnNldHRpbmdzIS5maW5kQXBpRm9yVHlwZXModmFsdWUudHlwZXMoKSk7XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgIGFwaSA9XG4gICAgICAgIHRoaXMuc2V0dGluZ3MhLmZpbmRBcGlCeU5hbWUodmFsdWUpIHx8XG4gICAgICAgIHRoaXMuc2V0dGluZ3MhLmZpbmRBcGlGb3JUeXBlKHZhbHVlKTtcbiAgICByZXR1cm4gYXBpIHx8IHRoaXMuc2V0dGluZ3MhLmRlZmF1bHRBcGkoKTtcbiAgfVxuXG4gIGRlZmF1bHRBcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLmRlZmF1bHRBcGkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBwYXJzZXIgZm9yIHRoZSBnaXZlbiBzdHJpbmcgdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHN0cmluZyB0eXBlIG9mIHRoZSBwYXJzZXIuXG4gICAqIEByZXR1cm5zIFRoZSBwYXJzZXIgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgcGFyc2VyRm9yVHlwZTxUPih0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEucGFyc2VyRm9yVHlwZTxUPih0eXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBlbnVtIHR5cGUgZm9yIHRoZSBnaXZlbiBzdHJpbmcgdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHN0cmluZyB0eXBlIG9mIHRoZSBlbnVtIHR5cGUuXG4gICAqIEByZXR1cm5zIFRoZSBlbnVtIHR5cGUgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgZW51bVR5cGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5lbnVtVHlwZUZvclR5cGU8VD4odHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgc3RydWN0dXJlZCB0eXBlIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBzdHJpbmcgdHlwZSBvZiB0aGUgc3RydWN0dXJlZCB0eXBlLlxuICAgKiBAcmV0dXJucyBUaGUgc3RydWN0dXJlZCB0eXBlIGZvciB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIHN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEuc3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGNhbGxhYmxlIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBzdHJpbmcgdHlwZSBvZiB0aGUgY2FsbGFibGUuXG4gICAqIEByZXR1cm5zIFRoZSBjYWxsYWJsZSBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBjYWxsYWJsZUZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLmNhbGxhYmxlRm9yVHlwZTxUPih0eXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBlbnRpdHkgc2V0IGZvciB0aGUgZ2l2ZW4gc3RyaW5nIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBzdHJpbmcgdHlwZSBvZiB0aGUgZW50aXR5IHNldC5cbiAgICogQHJldHVybnMgVGhlIGVudGl0eSBzZXQgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgZW50aXR5U2V0Rm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEuZW50aXR5U2V0Rm9yVHlwZSh0eXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBtb2RlbCBmb3IgdGhlIGdpdmVuIHN0cmluZyB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgc3RyaW5nIHR5cGUgb2YgdGhlIG1vZGVsLlxuICAgKiBAcmV0dXJucyBUaGUgbW9kZWwgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgbW9kZWxGb3JUeXBlKHR5cGU6IHN0cmluZyk6IHR5cGVvZiBPRGF0YU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEubW9kZWxGb3JUeXBlKHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGNvbGxlY3Rpb24gZm9yIHRoZSBnaXZlbiBzdHJpbmcgdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHN0cmluZyB0eXBlIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgKiBAcmV0dXJucyBUaGUgY29sbGVjdGlvbiBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBjb2xsZWN0aW9uRm9yVHlwZSh0eXBlOiBzdHJpbmcpOiB0eXBlb2YgT0RhdGFDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEuY29sbGVjdGlvbkZvclR5cGUodHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgc2VydmljZSBmb3IgdGhlIGdpdmVuIHN0cmluZyB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgc3RyaW5nIHR5cGUgb2YgdGhlIHNlcnZpY2UuXG4gICAqIEByZXR1cm5zIFRoZSBzZXJ2aWNlIGZvciB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIHNlcnZpY2VGb3JUeXBlKHR5cGU6IHN0cmluZyk6IE9EYXRhRW50aXR5U2VydmljZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAvL3JldHVybiB0aGlzLmluamVjdG9yLmdldCh0aGlzLnNldHRpbmdzIS5zZXJ2aWNlRm9yVHlwZSh0eXBlKSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBzZXJ2aWNlIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGVudGl0eSB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgc3RyaW5nIGVudGl0eSB0eXBlIGJpbmRpbmcgdG8gdGhlIHNlcnZpY2UuXG4gICAqIEByZXR1cm5zIFRoZSBzZXJ2aWNlIGZvciB0aGUgZ2l2ZW4gZW50aXR5IHR5cGUuXG4gICAqL1xuICBzZXJ2aWNlRm9yRW50aXR5VHlwZSh0eXBlOiBzdHJpbmcpOiBPRGF0YUVudGl0eVNlcnZpY2U8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgLy9yZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQodGhpcy5zZXR0aW5ncyEuc2VydmljZUZvckVudGl0eVR5cGUodHlwZSkpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBlbnVtVHlwZUJ5TmFtZTxUPihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEuZW51bVR5cGVCeU5hbWU8VD4obmFtZSk7XG4gIH1cbiAgc3RydWN0dXJlZFR5cGVCeU5hbWU8VD4obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLnN0cnVjdHVyZWRUeXBlQnlOYW1lPFQ+KG5hbWUpO1xuICB9XG4gIGNhbGxhYmxlQnlOYW1lPFQ+KG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5jYWxsYWJsZUJ5TmFtZTxUPihuYW1lKTtcbiAgfVxuICBlbnRpdHlTZXRCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLmVudGl0eVNldEJ5TmFtZShuYW1lKTtcbiAgfVxuICBtb2RlbEJ5TmFtZShuYW1lOiBzdHJpbmcpOiB0eXBlb2YgT0RhdGFNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLm1vZGVsQnlOYW1lKG5hbWUpO1xuICB9XG4gIGNvbGxlY3Rpb25CeU5hbWUobmFtZTogc3RyaW5nKTogdHlwZW9mIE9EYXRhQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLmNvbGxlY3Rpb25CeU5hbWUobmFtZSk7XG4gIH1cbiAgc2VydmljZUJ5TmFtZShuYW1lOiBzdHJpbmcpOiBPRGF0YUVudGl0eVNlcnZpY2U8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgLy9yZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQodGhpcy5zZXR0aW5ncyEuc2VydmljZUJ5TmFtZShuYW1lKSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQVBJIFJlc291cmNlIFByb3h5IE1ldGhvZHNcbiAgZnJvbUpzb248RT4oXG4gICAganNvbjogeyBzZWdtZW50czogT0RhdGFTZWdtZW50W107IG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IH0sXG4gICAgYXBpTmFtZU9yVHlwZT86IHN0cmluZyxcbiAgKTpcbiAgICB8IE9EYXRhRW50aXR5UmVzb3VyY2U8RT5cbiAgICB8IE9EYXRhRW50aXR5U2V0UmVzb3VyY2U8RT5cbiAgICB8IE9EYXRhTmF2aWdhdGlvblByb3BlcnR5UmVzb3VyY2U8RT5cbiAgICB8IE9EYXRhU2luZ2xldG9uUmVzb3VyY2U8RT47XG4gIGZyb21Kc29uKFxuICAgIGpzb246IHsgc2VnbWVudHM6IE9EYXRhU2VnbWVudFtdOyBvcHRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB9LFxuICAgIGFwaU5hbWVPclR5cGU/OiBzdHJpbmcsXG4gICkge1xuICAgIHJldHVybiB0aGlzLmFwaUZvcihhcGlOYW1lT3JUeXBlKS5mcm9tSnNvbjxhbnk+KGpzb24pO1xuICB9XG5cbiAgLy8gUmVxdWVzdHNcbiAgLyoqXG4gICAqIEJ1aWxkIGEgcmVzb3VyY2UgZm9yIHRoZSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIGFwaU5hbWUgVGhlIG5hbWUgb2YgdGhlIEFQSS5cbiAgICogQHJldHVybnMgVGhlIG1ldGFkYXRhIHJlc291cmNlLlxuICAgKi9cbiAgbWV0YWRhdGEoYXBpTmFtZT86IHN0cmluZyk6IE9EYXRhTWV0YWRhdGFSZXNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWUpLm1ldGFkYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSByZXNvdXJjZSBmb3IgdGhlIGJhdGNoLlxuICAgKiBAcGFyYW0gYXBpTmFtZSBUaGUgbmFtZSBvZiB0aGUgQVBJLlxuICAgKiBAcmV0dXJucyBUaGUgYmF0Y2ggcmVzb3VyY2UuXG4gICAqL1xuICBiYXRjaChhcGlOYW1lPzogc3RyaW5nKTogT0RhdGFCYXRjaFJlc291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5hcGlGb3IoYXBpTmFtZSkuYmF0Y2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHJlc291cmNlIGZvciB0aGUgc2luZ2xldG9uLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBzaW5nbGV0b24uXG4gICAqIEBwYXJhbSBhcGlOYW1lT3JUeXBlIFRoZSBuYW1lIG9mIHRoZSBBUEkgb3IgdGhlIHR5cGUgb2YgdGhlIHNpbmdsZXRvbi5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZXRvbiByZXNvdXJjZS5cbiAgICovXG4gIHNpbmdsZXRvbjxUPihwYXRoOiBzdHJpbmcsIGFwaU5hbWVPclR5cGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlGb3IoYXBpTmFtZU9yVHlwZSkuc2luZ2xldG9uPFQ+KHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgcmVzb3VyY2UgZm9yIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yVHlwZSBUaGUgbmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgZW50aXR5IHNldCByZXNvdXJjZS5cbiAgICovXG4gIGVudGl0eVNldDxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yVHlwZT86IHN0cmluZyxcbiAgKTogT0RhdGFFbnRpdHlTZXRSZXNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWVPclR5cGUpLmVudGl0eVNldDxUPihwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHJlc291cmNlIGZvciB1bmJvdW5kIGFjdGlvbi5cbiAgICogQHBhcmFtIHBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgYWN0aW9uLlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yVHlwZSBUaGUgbmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkuXG4gICAqIEByZXR1cm5zIFRoZSB1bmJvdW5kIGFjdGlvbiByZXNvdXJjZS5cbiAgICovXG4gIGFjdGlvbjxQLCBSPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yVHlwZT86IHN0cmluZyxcbiAgKTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWVPclR5cGUpLmFjdGlvbjxQLCBSPihwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHJlc291cmNlIGZvciB1bmJvdW5kIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGFwaU5hbWVPclR5cGUgVGhlIG5hbWUgb2YgdGhlIEFQSSBvciB0aGUgdHlwZSBvZiB0aGUgY2FsbGFibGUuXG4gICAqIEByZXR1cm5zIFRoZSB1bmJvdW5kIGZ1bmN0aW9uIHJlc291cmNlLlxuICAgKi9cbiAgZnVuY3Rpb248UCwgUj4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGFwaU5hbWVPclR5cGU/OiBzdHJpbmcsXG4gICk6IE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWVPclR5cGUpLmZ1bmN0aW9uPFAsIFI+KHBhdGgpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vIFJlcXVlc3QgaGVhZGVycywgZ2V0LCBwb3N0LCBwdXQsIHBhdGNoLi4uIGV0Y1xuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG5cbiAgcmVxdWVzdDxSPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxSPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxBcnJheUJ1ZmZlcj4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8T2JqZWN0Pj47XG5cbiAgcmVxdWVzdDxSPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxSPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICByZXF1ZXN0PFI+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxSPjtcblxuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGFwaSA9IHRoaXMuYXBpRm9yKHJlc291cmNlKTtcblxuICAgIHJldHVybiBhcGkucmVxdWVzdChtZXRob2QsIHJlc291cmNlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBkZWxldGUoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgZGVsZXRlPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxzdHJpbmc+PjtcblxuICBkZWxldGUoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxPYmplY3Q+PjtcblxuICBkZWxldGU8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxUPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAgZGVsZXRlPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ0RFTEVURScsIHJlc291cmNlLCBhZGRCb2R5PGFueT4ob3B0aW9ucywgbnVsbCkpO1xuICB9XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGdldChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBnZXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEJsb2I+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIGdldChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIGdldDxUPihcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPFQ+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICBnZXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignR0VUJywgcmVzb3VyY2UsIG9wdGlvbnMgYXMgYW55KTtcbiAgfVxuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICBoZWFkKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBoZWFkKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXJyYXlCdWZmZXI+PjtcblxuICBoZWFkKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PE9iamVjdD4+O1xuXG4gIGhlYWQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QmxvYj4+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxPYmplY3Q+PjtcblxuICBoZWFkPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8VD4+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICBoZWFkPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICB9ID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxhbnk+KCdIRUFEJywgcmVzb3VyY2UsIG9wdGlvbnMgYXMgYW55KTtcbiAgfVxuXG4gIGpzb25wKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgY2FsbGJhY2tQYXJhbTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAganNvbnA8VD4ocmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PiwgY2FsbGJhY2tQYXJhbTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPjtcblxuICBqc29ucDxUPihyZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LCBjYWxsYmFja1BhcmFtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ0pTT05QJywgcmVzb3VyY2UsIHtcbiAgICAgIGJvZHk6IG51bGwsXG4gICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuYXBwZW5kKGNhbGxiYWNrUGFyYW0sICdKU09OUF9DQUxMQkFDSycpLFxuICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xuXG4gIG9wdGlvbnMoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuXG4gIG9wdGlvbnMoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgb3B0aW9uczxUPihcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIG9wdGlvbnM8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxUPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIG9wdGlvbnM8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ09QVElPTlMnLCByZXNvdXJjZSwgb3B0aW9ucyBhcyBhbnkpO1xuICB9XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+O1xuXG4gIHBhdGNoKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHBhdGNoKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIHBhdGNoKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgcGF0Y2g8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIHBhdGNoPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxUPj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIHBhdGNoPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ1BBVENIJywgcmVzb3VyY2UsIGFkZEJvZHkob3B0aW9ucywgYm9keSkpO1xuICB9XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHBvc3QoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBwb3N0PFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEJsb2I+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIHBvc3QoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIHBvc3Q8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPFQ+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICBwb3N0PFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignUE9TVCcsIHJlc291cmNlLCBhZGRCb2R5KG9wdGlvbnMsIGJvZHkpKTtcbiAgfVxuXG4gIHB1dChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+O1xuXG4gIHB1dChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBwdXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEJsb2I+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxPYmplY3Q+PjtcblxuICBwdXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPFQ+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIHB1dDxUPihcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIHB1dChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignUFVUJywgcmVzb3VyY2UsIGFkZEJvZHkob3B0aW9ucywgYm9keSkpO1xuICB9XG59XG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxFQVVMLGFBQWEsR0FJZCxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFFM0MsU0FBUyxPQUFPLENBQ2QsT0FHQyxFQUNELElBQWM7SUFFZCxPQUFPO1FBQ0wsSUFBSTtRQUNKLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7UUFDaEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1FBQ3RDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNsQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7S0FDekMsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLElBQWdCLEVBQ2hCLE1BQXlCO1FBRHpCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFFakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFzQixFQUFtQixFQUFFLENBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87b0JBQ3BCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQkFDcEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO29CQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07b0JBQ2xCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztvQkFDbEMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO29CQUM5QixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7aUJBQ3JDLENBQUM7YUFDTCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUM7SUFDakM7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBbUM7UUFDeEMsSUFBSSxHQUFHLEdBQXlCLFNBQVMsQ0FBQztRQUMxQyxJQUFJLEtBQUssWUFBWSxhQUFhO1lBQ2hDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNqRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFDaEMsR0FBRztnQkFDRCxJQUFJLENBQUMsUUFBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7b0JBQ25DLElBQUksQ0FBQyxRQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUksSUFBWTtRQUMzQixPQUFPLElBQUksQ0FBQyxRQUFTLENBQUMsYUFBYSxDQUFJLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFJLElBQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDLGVBQWUsQ0FBSSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFJLElBQVk7UUFDbkMsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDLHFCQUFxQixDQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFJLElBQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDLGVBQWUsQ0FBSSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLElBQVk7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLElBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFZRCxRQUFRLENBQ04sSUFBb0UsRUFDcEUsYUFBc0I7UUFFdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVztJQUNYOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQWdCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUksSUFBWSxFQUFFLGFBQXNCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUksSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUNQLElBQVksRUFDWixhQUFzQjtRQUV0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FDSixJQUFZLEVBQ1osYUFBc0I7UUFFdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBTyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQ04sSUFBWSxFQUNaLGFBQXNCO1FBRXRCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQU8sSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQTBKRCxPQUFPLENBQ0wsTUFBYyxFQUNkLFFBQTRCLEVBQzVCLE9BSUM7UUFFRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUEwSEQsTUFBTSxDQUNKLFFBQTRCLEVBQzVCLFVBR0ksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBTSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBTSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBMEhELEdBQUcsQ0FDRCxRQUE0QixFQUM1QixVQUdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBMEhELElBQUksQ0FDRixRQUE0QixFQUM1QixVQUdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBU0QsS0FBSyxDQUFJLFFBQTRCLEVBQUUsYUFBcUI7UUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFNLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDMUMsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDO1lBQ2hFLE9BQU8sRUFBRSxNQUFNO1lBQ2YsWUFBWSxFQUFFLE1BQU07U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWtJRCxPQUFPLENBQ0wsUUFBNEIsRUFDNUIsVUFHSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFNLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBYyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQXlJRCxLQUFLLENBQ0gsUUFBNEIsRUFDNUIsSUFBZ0IsRUFDaEIsVUFHSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFNLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUF5SUQsSUFBSSxDQUNGLFFBQTRCLEVBQzVCLElBQWdCLEVBQ2hCLFVBR0ksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBTSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBeUlELEdBQUcsQ0FDRCxRQUE0QixFQUM1QixJQUFnQixFQUNoQixVQUdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0E1ekNVLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgT0RhdGFDb25maWdMb2FkZXIgfSBmcm9tICcuL2xvYWRlcnMnO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uLCBPRGF0YU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgT0RhdGFBY3Rpb25SZXNvdXJjZSxcbiAgT0RhdGFCYXRjaFJlc291cmNlLFxuICBPRGF0YUVudGl0eVJlc291cmNlLFxuICBPRGF0YUVudGl0eVNldFJlc291cmNlLFxuICBPRGF0YUZ1bmN0aW9uUmVzb3VyY2UsXG4gIE9EYXRhTWV0YWRhdGFSZXNvdXJjZSxcbiAgT0RhdGFOYXZpZ2F0aW9uUHJvcGVydHlSZXNvdXJjZSxcbiAgT0RhdGFPcHRpb25zLFxuICBPRGF0YVJlcXVlc3QsXG4gIE9EYXRhUmVzb3VyY2UsXG4gIE9EYXRhUmVzcG9uc2UsXG4gIE9EYXRhU2VnbWVudCxcbiAgT0RhdGFTaW5nbGV0b25SZXNvdXJjZSxcbn0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXgnO1xuaW1wb3J0IHsgT0RhdGFTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuXG5mdW5jdGlvbiBhZGRCb2R5PFQ+KFxuICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICB9LFxuICBib2R5OiBUIHwgbnVsbCxcbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgYm9keSxcbiAgICBldGFnOiBvcHRpb25zLmV0YWcsXG4gICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgIG9ic2VydmU6IG9wdGlvbnMub2JzZXJ2ZSxcbiAgICBwYXJhbXM6IG9wdGlvbnMucGFyYW1zLFxuICAgIHJlcG9ydFByb2dyZXNzOiBvcHRpb25zLnJlcG9ydFByb2dyZXNzLFxuICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgd2l0aENyZWRlbnRpYWxzOiBvcHRpb25zLndpdGhDcmVkZW50aWFscyxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9EYXRhQ2xpZW50IHtcbiAgc2V0dGluZ3M/OiBPRGF0YVNldHRpbmdzO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsb2FkZXI6IE9EYXRhQ29uZmlnTG9hZGVyLFxuICApIHtcbiAgICB0aGlzLmxvYWRlci5sb2FkQ29uZmlncygpLnN1YnNjcmliZSgoY29uZmlncykgPT4ge1xuICAgICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBPRGF0YVNldHRpbmdzKGNvbmZpZ3MpO1xuICAgICAgdGhpcy5zZXR0aW5ncy5jb25maWd1cmUoe1xuICAgICAgICByZXF1ZXN0ZXI6IChyZXE6IE9EYXRhUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxhbnk+ID0+XG4gICAgICAgICAgdGhpcy5odHRwLnJlcXVlc3QocmVxLm1ldGhvZCwgYCR7cmVxLnVybH1gLCB7XG4gICAgICAgICAgICBib2R5OiByZXEuYm9keSxcbiAgICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgICAgICBvYnNlcnZlOiByZXEub2JzZXJ2ZSxcbiAgICAgICAgICAgIHBhcmFtczogcmVxLnBhcmFtcyxcbiAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXEucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6IHJlcS5yZXNwb25zZVR5cGUsXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHJlcS53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBSZXNvbHZlIEJ1aWxkaW5nIEJsb2Nrc1xuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgYXBpIGZvciB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqIFdoZXJlIHZhbHVlIGlzOiBzdHJpbmcgdHlwZSBvciBhbiBzdHJpbmcgbmFtZSBvciBhbiBpbnN0YW5jZSBvZiByZXNvdXJjZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXNvbHZlLlxuICAgKiBAcmV0dXJucyBUaGUgYXBpIGZvciB0aGUgdmFsdWUuXG4gICAqL1xuICBhcGlGb3IodmFsdWU/OiBPRGF0YVJlc291cmNlPGFueT4gfCBzdHJpbmcpOiBPRGF0YUFwaSB7XG4gICAgbGV0IGFwaTogT0RhdGFBcGkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT0RhdGFSZXNvdXJjZSlcbiAgICAgIGFwaSA9IHRoaXMuc2V0dGluZ3MhLmZpbmRBcGlGb3JUeXBlcyh2YWx1ZS50eXBlcygpKTtcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgYXBpID1cbiAgICAgICAgdGhpcy5zZXR0aW5ncyEuZmluZEFwaUJ5TmFtZSh2YWx1ZSkgfHxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyEuZmluZEFwaUZvclR5cGUodmFsdWUpO1xuICAgIHJldHVybiBhcGkgPz8gdGhpcy5zZXR0aW5ncyEuZGVmYXVsdEFwaSgpO1xuICB9XG5cbiAgZGVmYXVsdEFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEuZGVmYXVsdEFwaSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIHBhcnNlciBmb3IgdGhlIGdpdmVuIHN0cmluZyB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgc3RyaW5nIHR5cGUgb2YgdGhlIHBhcnNlci5cbiAgICogQHJldHVybnMgVGhlIHBhcnNlciBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBwYXJzZXJGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5wYXJzZXJGb3JUeXBlPFQ+KHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGVudW0gdHlwZSBmb3IgdGhlIGdpdmVuIHN0cmluZyB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgc3RyaW5nIHR5cGUgb2YgdGhlIGVudW0gdHlwZS5cbiAgICogQHJldHVybnMgVGhlIGVudW0gdHlwZSBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBlbnVtVHlwZUZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MhLmVudW1UeXBlRm9yVHlwZTxUPih0eXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiBzdHJpbmcgdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHN0cmluZyB0eXBlIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEByZXR1cm5zIFRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgc3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5zdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgY2FsbGFibGUgZm9yIHRoZSBnaXZlbiBzdHJpbmcgdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHN0cmluZyB0eXBlIG9mIHRoZSBjYWxsYWJsZS5cbiAgICogQHJldHVybnMgVGhlIGNhbGxhYmxlIGZvciB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIGNhbGxhYmxlRm9yVHlwZTxUPih0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncyEuY2FsbGFibGVGb3JUeXBlPFQ+KHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGVudGl0eSBzZXQgZm9yIHRoZSBnaXZlbiBzdHJpbmcgdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHN0cmluZyB0eXBlIG9mIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgZW50aXR5IHNldCBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBlbnRpdHlTZXRGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5lbnRpdHlTZXRGb3JUeXBlKHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIG1vZGVsIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBzdHJpbmcgdHlwZSBvZiB0aGUgbW9kZWwuXG4gICAqIEByZXR1cm5zIFRoZSBtb2RlbCBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBtb2RlbEZvclR5cGUodHlwZTogc3RyaW5nKTogdHlwZW9mIE9EYXRhTW9kZWwge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5tb2RlbEZvclR5cGUodHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgY29sbGVjdGlvbiBmb3IgdGhlIGdpdmVuIHN0cmluZyB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgc3RyaW5nIHR5cGUgb2YgdGhlIGNvbGxlY3Rpb24uXG4gICAqIEByZXR1cm5zIFRoZSBjb2xsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIGNvbGxlY3Rpb25Gb3JUeXBlKHR5cGU6IHN0cmluZyk6IHR5cGVvZiBPRGF0YUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzIS5jb2xsZWN0aW9uRm9yVHlwZSh0eXBlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQVBJIFJlc291cmNlIFByb3h5IE1ldGhvZHNcbiAgZnJvbUpzb248RT4oXG4gICAganNvbjogeyBzZWdtZW50czogT0RhdGFTZWdtZW50W107IG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IH0sXG4gICAgYXBpTmFtZU9yVHlwZT86IHN0cmluZyxcbiAgKTpcbiAgICB8IE9EYXRhRW50aXR5UmVzb3VyY2U8RT5cbiAgICB8IE9EYXRhRW50aXR5U2V0UmVzb3VyY2U8RT5cbiAgICB8IE9EYXRhTmF2aWdhdGlvblByb3BlcnR5UmVzb3VyY2U8RT5cbiAgICB8IE9EYXRhU2luZ2xldG9uUmVzb3VyY2U8RT47XG4gIGZyb21Kc29uKFxuICAgIGpzb246IHsgc2VnbWVudHM6IE9EYXRhU2VnbWVudFtdOyBvcHRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB9LFxuICAgIGFwaU5hbWVPclR5cGU/OiBzdHJpbmcsXG4gICkge1xuICAgIHJldHVybiB0aGlzLmFwaUZvcihhcGlOYW1lT3JUeXBlKS5mcm9tSnNvbjxhbnk+KGpzb24pO1xuICB9XG5cbiAgLy8gUmVxdWVzdHNcbiAgLyoqXG4gICAqIEJ1aWxkIGEgcmVzb3VyY2UgZm9yIHRoZSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIGFwaU5hbWUgVGhlIG5hbWUgb2YgdGhlIEFQSS5cbiAgICogQHJldHVybnMgVGhlIG1ldGFkYXRhIHJlc291cmNlLlxuICAgKi9cbiAgbWV0YWRhdGEoYXBpTmFtZT86IHN0cmluZyk6IE9EYXRhTWV0YWRhdGFSZXNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWUpLm1ldGFkYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSByZXNvdXJjZSBmb3IgdGhlIGJhdGNoLlxuICAgKiBAcGFyYW0gYXBpTmFtZSBUaGUgbmFtZSBvZiB0aGUgQVBJLlxuICAgKiBAcmV0dXJucyBUaGUgYmF0Y2ggcmVzb3VyY2UuXG4gICAqL1xuICBiYXRjaChhcGlOYW1lPzogc3RyaW5nKTogT0RhdGFCYXRjaFJlc291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5hcGlGb3IoYXBpTmFtZSkuYmF0Y2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHJlc291cmNlIGZvciB0aGUgc2luZ2xldG9uLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBzaW5nbGV0b24uXG4gICAqIEBwYXJhbSBhcGlOYW1lT3JUeXBlIFRoZSBuYW1lIG9mIHRoZSBBUEkgb3IgdGhlIHR5cGUgb2YgdGhlIHNpbmdsZXRvbi5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZXRvbiByZXNvdXJjZS5cbiAgICovXG4gIHNpbmdsZXRvbjxUPihwYXRoOiBzdHJpbmcsIGFwaU5hbWVPclR5cGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlGb3IoYXBpTmFtZU9yVHlwZSkuc2luZ2xldG9uPFQ+KHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgcmVzb3VyY2UgZm9yIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yVHlwZSBUaGUgbmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgZW50aXR5IHNldCByZXNvdXJjZS5cbiAgICovXG4gIGVudGl0eVNldDxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yVHlwZT86IHN0cmluZyxcbiAgKTogT0RhdGFFbnRpdHlTZXRSZXNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWVPclR5cGUpLmVudGl0eVNldDxUPihwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHJlc291cmNlIGZvciB1bmJvdW5kIGFjdGlvbi5cbiAgICogQHBhcmFtIHBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgYWN0aW9uLlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yVHlwZSBUaGUgbmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkuXG4gICAqIEByZXR1cm5zIFRoZSB1bmJvdW5kIGFjdGlvbiByZXNvdXJjZS5cbiAgICovXG4gIGFjdGlvbjxQLCBSPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yVHlwZT86IHN0cmluZyxcbiAgKTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWVPclR5cGUpLmFjdGlvbjxQLCBSPihwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHJlc291cmNlIGZvciB1bmJvdW5kIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGFwaU5hbWVPclR5cGUgVGhlIG5hbWUgb2YgdGhlIEFQSSBvciB0aGUgdHlwZSBvZiB0aGUgY2FsbGFibGUuXG4gICAqIEByZXR1cm5zIFRoZSB1bmJvdW5kIGZ1bmN0aW9uIHJlc291cmNlLlxuICAgKi9cbiAgZnVuY3Rpb248UCwgUj4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGFwaU5hbWVPclR5cGU/OiBzdHJpbmcsXG4gICk6IE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpRm9yKGFwaU5hbWVPclR5cGUpLmZ1bmN0aW9uPFAsIFI+KHBhdGgpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vIFJlcXVlc3QgaGVhZGVycywgZ2V0LCBwb3N0LCBwdXQsIHBhdGNoLi4uIGV0Y1xuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG5cbiAgcmVxdWVzdDxSPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxSPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxBcnJheUJ1ZmZlcj4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5OiBhbnkgfCBudWxsO1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8T2JqZWN0Pj47XG5cbiAgcmVxdWVzdDxSPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxSPj47XG5cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk6IGFueSB8IG51bGw7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICByZXF1ZXN0PFI+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxSPjtcblxuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keTogYW55IHwgbnVsbDtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGFwaSA9IHRoaXMuYXBpRm9yKHJlc291cmNlKTtcblxuICAgIHJldHVybiBhcGkucmVxdWVzdChtZXRob2QsIHJlc291cmNlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBkZWxldGUoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgZGVsZXRlPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxzdHJpbmc+PjtcblxuICBkZWxldGUoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxPYmplY3Q+PjtcblxuICBkZWxldGU8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxUPj47XG5cbiAgZGVsZXRlKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAgZGVsZXRlPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIGRlbGV0ZShcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ0RFTEVURScsIHJlc291cmNlLCBhZGRCb2R5PGFueT4ob3B0aW9ucywgbnVsbCkpO1xuICB9XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGdldChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBnZXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEJsb2I+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIGdldChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIGdldDxUPihcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPFQ+PjtcblxuICBnZXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICBnZXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgZ2V0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignR0VUJywgcmVzb3VyY2UsIG9wdGlvbnMgYXMgYW55KTtcbiAgfVxuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICBoZWFkKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBoZWFkKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXJyYXlCdWZmZXI+PjtcblxuICBoZWFkKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PE9iamVjdD4+O1xuXG4gIGhlYWQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgaGVhZChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QmxvYj4+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxPYmplY3Q+PjtcblxuICBoZWFkPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8VD4+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICBoZWFkPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIGhlYWQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICB9ID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxhbnk+KCdIRUFEJywgcmVzb3VyY2UsIG9wdGlvbnMgYXMgYW55KTtcbiAgfVxuXG4gIGpzb25wKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgY2FsbGJhY2tQYXJhbTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAganNvbnA8VD4ocmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PiwgY2FsbGJhY2tQYXJhbTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPjtcblxuICBqc29ucDxUPihyZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LCBjYWxsYmFja1BhcmFtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ0pTT05QJywgcmVzb3VyY2UsIHtcbiAgICAgIGJvZHk6IG51bGwsXG4gICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuYXBwZW5kKGNhbGxiYWNrUGFyYW0sICdKU09OUF9DQUxMQkFDSycpLFxuICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xuXG4gIG9wdGlvbnMoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuXG4gIG9wdGlvbnMoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgb3B0aW9uczxUPihcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBvcHRpb25zKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIG9wdGlvbnM8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxUPj47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIG9wdGlvbnM8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgb3B0aW9ucyhcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ09QVElPTlMnLCByZXNvdXJjZSwgb3B0aW9ucyBhcyBhbnkpO1xuICB9XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+O1xuXG4gIHBhdGNoKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHBhdGNoKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIHBhdGNoKFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgcGF0Y2g8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBwYXRjaChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxCbG9iPj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIHBhdGNoPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxUPj47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIHBhdGNoPFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgcGF0Y2goXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ1BBVENIJywgcmVzb3VyY2UsIGFkZEJvZHkob3B0aW9ucywgYm9keSkpO1xuICB9XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHBvc3QoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBwb3N0PFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEJsb2I+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIHBvc3QoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIHBvc3Q8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPFQ+PjtcblxuICBwb3N0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICBwb3N0PFQ+KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgcG9zdChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignUE9TVCcsIHJlc291cmNlLCBhZGRCb2R5KG9wdGlvbnMsIGJvZHkpKTtcbiAgfVxuXG4gIHB1dChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+O1xuXG4gIHB1dChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICBwdXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPEJsb2I+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgcHV0KFxuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFSZXNwb25zZTxPYmplY3Q+PjtcblxuICBwdXQ8VD4oXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVJlc3BvbnNlPFQ+PjtcblxuICBwdXQoXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIHB1dDxUPihcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIHB1dChcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignUFVUJywgcmVzb3VyY2UsIGFkZEJvZHkob3B0aW9ucywgYm9keSkpO1xuICB9XG59XG4iXX0=
@@ -48,7 +48,10 @@ export const RETRY_AFTER_HEADERS = [RETRY_AFTER, RETRY_AFTER.toLowerCase()];
48
48
  // HTTP HEADER VALUES
49
49
  export const APPLICATION_JSON = 'application/json';
50
50
  export const APPLICATION_HTTP = 'application/http';
51
+ export const APPLICATION_XHTML = 'application/xhtml+xml';
52
+ export const APPLICATION_XML = 'application/xml';
51
53
  export const TEXT_PLAIN = 'text/plain';
54
+ export const CONTENT_TYPE_ANY = '*/*';
52
55
  export const MULTIPART_MIXED = 'multipart/mixed';
53
56
  export const MULTIPART_MIXED_BOUNDARY = 'multipart/mixed;boundary=';
54
57
  export const CONTENT_TRANSFER_ENCODING = 'Content-Transfer-Encoding';
@@ -89,4 +92,4 @@ export const OPTIMISTIC_CONCURRENCY = /.*OptimisticConcurrency$/;
89
92
  export const DESCRIPTION = /.*Description$/;
90
93
  export const LONG_DESCRIPTION = /.*LongDescription$/;
91
94
  export const OPTIONARL_PARAMETER = /.*OptionalParameter$/;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUM7QUFFcEMsV0FBVztBQUNYLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFFM0MsZUFBZTtBQUNmLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxhQUFhO0lBQ2IsYUFBYSxDQUFDLFdBQVcsRUFBRTtDQUM1QixDQUFD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O0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDOUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFFdkMsU0FBUztBQUNULE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQztBQUVwQyxzREFBc0Q7QUFDdEQsOEZBQThGO0FBRTlGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLG9CQUFvQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0ICRJRCA9ICckaWQnO1xuZXhwb3J0IGNvbnN0IE9EQVRBX0lEID0gJ0BvZGF0YS5pZCc7XG5cbi8vIFNFR01FTlRTXG5leHBvcnQgY29uc3QgJE1FVEFEQVRBID0gJyRtZXRhZGF0YSc7XG5leHBvcnQgY29uc3QgJEJBVENIID0gJyRiYXRjaCc7XG5leHBvcnQgY29uc3QgJFJFRiA9ICckcmVmJztcbmV4cG9ydCBjb25zdCAkVkFMVUUgPSAnJHZhbHVlJztcbmV4cG9ydCBjb25zdCAkQ09VTlQgPSAnJGNvdW50JztcbmV4cG9ydCBjb25zdCAkUVVFUlkgPSAnJHF1ZXJ5JztcbmV4cG9ydCBjb25zdCAkSU5MSU5FQ09VTlQgPSAnJGlubGluZWNvdW50JztcblxuLy8gSFRUUCBIRUFERVJTXG5leHBvcnQgY29uc3QgSUZfTUFUQ0hfSEVBREVSID0gJ0lmLU1hdGNoJztcbmV4cG9ydCBjb25zdCBJRl9OT05FX01BVENIX0hFQURFUiA9ICdJZi1Ob25lLU1hdGNoJztcbmV4cG9ydCBjb25zdCBDT05URU5UX1RZUEUgPSAnQ29udGVudC1UeXBlJztcbmV4cG9ydCBjb25zdCBIVFRQMTEgPSAnSFRUUC8xLjEnO1xuZXhwb3J0IGNvbnN0IEFDQ0VQVCA9ICdBY2NlcHQnO1xuZXhwb3J0IGNvbnN0IFBSRUZFUiA9ICdQcmVmZXInO1xuZXhwb3J0IGNvbnN0IENBQ0hFX0NPTlRST0wgPSAnQ2FjaGUtQ29udHJvbCc7XG5leHBvcnQgY29uc3QgQ0FDSEVfQ09OVFJPTF9IRUFERVJTID0gW1xuICBDQUNIRV9DT05UUk9MLFxuICBDQUNIRV9DT05UUk9MLnRvTG93ZXJDYXNlKCksXG5dO1xuZXhwb3J0IGNvbnN0IE9EQVRBX1ZFUlNJT04gPSAnT0RhdGEtVmVyc2lvbic7XG5leHBvcnQgY29uc3QgT0RBVEFfVkVSU0lPTl9IRUFERVJTID0gW1xuICBPREFUQV9WRVJTSU9OLFxuICBPREFUQV9WRVJTSU9OLnRvTG93ZXJDYXNlKCksXG4gICdkYXRhc2VydmljZXZlcnNpb24nLFxuXTtcbmV4cG9ydCBjb25zdCBMT0NBVElPTl9IRUFERVIgPSAnTG9jYXRpb24nO1xuZXhwb3J0IGNvbnN0IExPQ0FUSU9OX0hFQURFUlMgPSBbXG4gIExPQ0FUSU9OX0hFQURFUixcbiAgTE9DQVRJT05fSEVBREVSLnRvTG93ZXJDYXNlKCksXG5dO1xuZXhwb3J0IGNvbnN0IE9EQVRBX0VOVElUWUlEID0gJ09EYXRhLUVudGl0eUlkJztcbmV4cG9ydCBjb25zdCBPREFUQV9FTlRJVFlJRF9IRUFERVJTID0gW1xuICBPREFUQV9FTlRJVFlJRCxcbiAgT0RBVEFfRU5USVRZSUQudG9Mb3dlckNhc2UoKSxcbl07XG5leHBvcnQgY29uc3QgUFJFRkVSRU5DRV9BUFBMSUVEID0gJ1ByZWZlcmVuY2UtQXBwbGllZCc7XG5leHBvcnQgY29uc3QgUFJFRkVSRU5DRV9BUFBMSUVEX0hFQURFUlMgPSBbXG4gIFBSRUZFUkVOQ0VfQVBQTElFRCxcbiAgUFJFRkVSRU5DRV9BUFBMSUVELnRvTG93ZXJDYXNlKCksXG5dO1xuZXhwb3J0IGNvbnN0IEVUQUdfSEVBREVSID0gJ0VUYWcnO1xuZXhwb3J0IGNvbnN0IEVUQUdfSEVBREVSUyA9IFtFVEFHX0hFQURFUiwgRVRBR19IRUFERVIudG9Mb3dlckNhc2UoKV07XG5cbmV4cG9ydCBjb25zdCBSRVRSWV9BRlRFUiA9ICdSZXRyeS1BZnRlcic7XG5leHBvcnQgY29uc3QgUkVUUllfQUZURVJfSEVBREVSUyA9IFtSRVRSWV9BRlRFUiwgUkVUUllfQUZURVIudG9Mb3dlckNhc2UoKV07XG5cbi8vIEhUVFAgSEVBREVSIFZBTFVFU1xuZXhwb3J0IGNvbnN0IEFQUExJQ0FUSU9OX0pTT04gPSAnYXBwbGljYXRpb24vanNvbic7XG5leHBvcnQgY29uc3QgQVBQTElDQVRJT05fSFRUUCA9ICdhcHBsaWNhdGlvbi9odHRwJztcbmV4cG9ydCBjb25zdCBURVhUX1BMQUlOID0gJ3RleHQvcGxhaW4nO1xuZXhwb3J0IGNvbnN0IE1VTFRJUEFSVF9NSVhFRCA9ICdtdWx0aXBhcnQvbWl4ZWQnO1xuZXhwb3J0IGNvbnN0IE1VTFRJUEFSVF9NSVhFRF9CT1VOREFSWSA9ICdtdWx0aXBhcnQvbWl4ZWQ7Ym91bmRhcnk9JztcbmV4cG9ydCBjb25zdCBDT05URU5UX1RSQU5TRkVSX0VOQ09ESU5HID0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnO1xuZXhwb3J0IGNvbnN0IENPTlRFTlRfSUQgPSAnQ29udGVudC1JRCc7XG5leHBvcnQgY29uc3QgTUFYX0FHRSA9ICdtYXgtYWdlJztcblxuLy8gVkVSU0lPTlNcbmV4cG9ydCBjb25zdCBWRVJTSU9OXzRfMCA9ICc0LjAnO1xuZXhwb3J0IGNvbnN0IFZFUlNJT05fM18wID0gJzMuMCc7XG5leHBvcnQgY29uc3QgVkVSU0lPTl8yXzAgPSAnMi4wJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZFUlNJT04gPSBWRVJTSU9OXzRfMDtcblxuZXhwb3J0IGNvbnN0IEJJTkFSWSA9ICdiaW5hcnknO1xuZXhwb3J0IGNvbnN0IEJPVU5EQVJZX1BSRUZJWF9TVUZGSVggPSAnLS0nO1xuZXhwb3J0IGNvbnN0IEJBVENIX1BSRUZJWCA9ICdiYXRjaF8nO1xuZXhwb3J0IGNvbnN0IENIQU5HRVNFVF9QUkVGSVggPSAnY2hhbmdlc2V0Xyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NRVRBREFUQSA9ICdtaW5pbWFsJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NUUklQX01FVEFEQVRBID0gJ2Z1bGwnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRkVUQ0hfUE9MSUNZID0gJ25ldHdvcmstb25seSc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FT1VUID0gNjA7IC8vIFRpbWUgaW4gc2Vjb25kc1xuZXhwb3J0IGNvbnN0IENBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSID0gJ2JpbmRpbmdQYXJhbWV0ZXInO1xuZXhwb3J0IGNvbnN0IFhTU0lfUFJFRklYID0gL15cXClcXF1cXH0nLD9cXG4vO1xuXG4vLyBVUkwgUEFSVFNcbmV4cG9ydCBjb25zdCBRVUVSWV9TRVBBUkFUT1IgPSAnPyc7XG5leHBvcnQgY29uc3QgUEFSQU1fU0VQQVJBVE9SID0gJyYnO1xuZXhwb3J0IGNvbnN0IFZBTFVFX1NFUEFSQVRPUiA9ICc9JztcbmV4cG9ydCBjb25zdCBQQVRIX1NFUEFSQVRPUiA9ICcvJztcbmV4cG9ydCBjb25zdCBPREFUQV9QQVJBTV9QUkVGSVggPSAnJCc7XG5leHBvcnQgY29uc3QgT0RBVEFfQUxJQVNfUFJFRklYID0gJ0AnO1xuXG5leHBvcnQgY29uc3QgTkVXTElORSA9ICdcXHJcXG4nO1xuZXhwb3J0IGNvbnN0IE5FV0xJTkVfUkVHRVhQID0gL1xccj9cXG4vO1xuZXhwb3J0IGNvbnN0IENBQ0hFX0tFWV9TRVBBUkFUT1IgPSAnOic7XG5cbi8vIE1vZGVsc1xuZXhwb3J0IGNvbnN0IENJRF9GSUVMRF9OQU1FID0gJ19jaWQnO1xuZXhwb3J0IGNvbnN0IEVWRU5UX1NQTElUVEVSID0gL1xccysvO1xuXG4vLyBTdGFuZGFyZCB2b2NhYnVsYXJpZXMgZm9yIGFubm90YXRpbmcgT0RhdGEgc2VydmljZXNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNpcy10Y3Mvb2RhdGEtdm9jYWJ1bGFyaWVzL2Jsb2IvbWFpbi92b2NhYnVsYXJpZXMvT3JnLk9EYXRhLkNvcmUuVjEubWRcblxuZXhwb3J0IGNvbnN0IENPTVBVVEVEID0gLy4qQ29tcHV0ZWQkLztcbmV4cG9ydCBjb25zdCBPUFRJTUlTVElDX0NPTkNVUlJFTkNZID0gLy4qT3B0aW1pc3RpY0NvbmN1cnJlbmN5JC87XG5leHBvcnQgY29uc3QgREVTQ1JJUFRJT04gPSAvLipEZXNjcmlwdGlvbiQvO1xuZXhwb3J0IGNvbnN0IExPTkdfREVTQ1JJUFRJT04gPSAvLipMb25nRGVzY3JpcHRpb24kLztcbmV4cG9ydCBjb25zdCBPUFRJT05BUkxfUEFSQU1FVEVSID0gLy4qT3B0aW9uYWxQYXJhbWV0ZXIkLztcbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUM7QUFFcEMsV0FBVztBQUNYLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFFM0MsZUFBZTtBQUNmLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxhQUFhO0lBQ2IsYUFBYSxDQUFDLFdBQVcsRUFBRTtDQUM1QixDQUFD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QUM3RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDO0FBRTFDLFlBQVk7QUFDWixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFFdEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQztBQUM5QixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUV2QyxTQUFTO0FBQ1QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBRXBDLHNEQUFzRDtBQUN0RCw4RkFBOEY7QUFFOUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRywwQkFBMEIsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgJElEID0gJyRpZCc7XG5leHBvcnQgY29uc3QgT0RBVEFfSUQgPSAnQG9kYXRhLmlkJztcblxuLy8gU0VHTUVOVFNcbmV4cG9ydCBjb25zdCAkTUVUQURBVEEgPSAnJG1ldGFkYXRhJztcbmV4cG9ydCBjb25zdCAkQkFUQ0ggPSAnJGJhdGNoJztcbmV4cG9ydCBjb25zdCAkUkVGID0gJyRyZWYnO1xuZXhwb3J0IGNvbnN0ICRWQUxVRSA9ICckdmFsdWUnO1xuZXhwb3J0IGNvbnN0ICRDT1VOVCA9ICckY291bnQnO1xuZXhwb3J0IGNvbnN0ICRRVUVSWSA9ICckcXVlcnknO1xuZXhwb3J0IGNvbnN0ICRJTkxJTkVDT1VOVCA9ICckaW5saW5lY291bnQnO1xuXG4vLyBIVFRQIEhFQURFUlNcbmV4cG9ydCBjb25zdCBJRl9NQVRDSF9IRUFERVIgPSAnSWYtTWF0Y2gnO1xuZXhwb3J0IGNvbnN0IElGX05PTkVfTUFUQ0hfSEVBREVSID0gJ0lmLU5vbmUtTWF0Y2gnO1xuZXhwb3J0IGNvbnN0IENPTlRFTlRfVFlQRSA9ICdDb250ZW50LVR5cGUnO1xuZXhwb3J0IGNvbnN0IEhUVFAxMSA9ICdIVFRQLzEuMSc7XG5leHBvcnQgY29uc3QgQUNDRVBUID0gJ0FjY2VwdCc7XG5leHBvcnQgY29uc3QgUFJFRkVSID0gJ1ByZWZlcic7XG5leHBvcnQgY29uc3QgQ0FDSEVfQ09OVFJPTCA9ICdDYWNoZS1Db250cm9sJztcbmV4cG9ydCBjb25zdCBDQUNIRV9DT05UUk9MX0hFQURFUlMgPSBbXG4gIENBQ0hFX0NPTlRST0wsXG4gIENBQ0hFX0NPTlRST0wudG9Mb3dlckNhc2UoKSxcbl07XG5leHBvcnQgY29uc3QgT0RBVEFfVkVSU0lPTiA9ICdPRGF0YS1WZXJzaW9uJztcbmV4cG9ydCBjb25zdCBPREFUQV9WRVJTSU9OX0hFQURFUlMgPSBbXG4gIE9EQVRBX1ZFUlNJT04sXG4gIE9EQVRBX1ZFUlNJT04udG9Mb3dlckNhc2UoKSxcbiAgJ2RhdGFzZXJ2aWNldmVyc2lvbicsXG5dO1xuZXhwb3J0IGNvbnN0IExPQ0FUSU9OX0hFQURFUiA9ICdMb2NhdGlvbic7XG5leHBvcnQgY29uc3QgTE9DQVRJT05fSEVBREVSUyA9IFtcbiAgTE9DQVRJT05fSEVBREVSLFxuICBMT0NBVElPTl9IRUFERVIudG9Mb3dlckNhc2UoKSxcbl07XG5leHBvcnQgY29uc3QgT0RBVEFfRU5USVRZSUQgPSAnT0RhdGEtRW50aXR5SWQnO1xuZXhwb3J0IGNvbnN0IE9EQVRBX0VOVElUWUlEX0hFQURFUlMgPSBbXG4gIE9EQVRBX0VOVElUWUlELFxuICBPREFUQV9FTlRJVFlJRC50b0xvd2VyQ2FzZSgpLFxuXTtcbmV4cG9ydCBjb25zdCBQUkVGRVJFTkNFX0FQUExJRUQgPSAnUHJlZmVyZW5jZS1BcHBsaWVkJztcbmV4cG9ydCBjb25zdCBQUkVGRVJFTkNFX0FQUExJRURfSEVBREVSUyA9IFtcbiAgUFJFRkVSRU5DRV9BUFBMSUVELFxuICBQUkVGRVJFTkNFX0FQUExJRUQudG9Mb3dlckNhc2UoKSxcbl07XG5leHBvcnQgY29uc3QgRVRBR19IRUFERVIgPSAnRVRhZyc7XG5leHBvcnQgY29uc3QgRVRBR19IRUFERVJTID0gW0VUQUdfSEVBREVSLCBFVEFHX0hFQURFUi50b0xvd2VyQ2FzZSgpXTtcblxuZXhwb3J0IGNvbnN0IFJFVFJZX0FGVEVSID0gJ1JldHJ5LUFmdGVyJztcbmV4cG9ydCBjb25zdCBSRVRSWV9BRlRFUl9IRUFERVJTID0gW1JFVFJZX0FGVEVSLCBSRVRSWV9BRlRFUi50b0xvd2VyQ2FzZSgpXTtcblxuLy8gSFRUUCBIRUFERVIgVkFMVUVTXG5leHBvcnQgY29uc3QgQVBQTElDQVRJT05fSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJztcbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTl9IVFRQID0gJ2FwcGxpY2F0aW9uL2h0dHAnO1xuZXhwb3J0IGNvbnN0IEFQUExJQ0FUSU9OX1hIVE1MID0gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCc7XG5leHBvcnQgY29uc3QgQVBQTElDQVRJT05fWE1MID0gJ2FwcGxpY2F0aW9uL3htbCc7XG5leHBvcnQgY29uc3QgVEVYVF9QTEFJTiA9ICd0ZXh0L3BsYWluJztcbmV4cG9ydCBjb25zdCBDT05URU5UX1RZUEVfQU5ZID0gJyovKic7XG5leHBvcnQgY29uc3QgTVVMVElQQVJUX01JWEVEID0gJ211bHRpcGFydC9taXhlZCc7XG5leHBvcnQgY29uc3QgTVVMVElQQVJUX01JWEVEX0JPVU5EQVJZID0gJ211bHRpcGFydC9taXhlZDtib3VuZGFyeT0nO1xuZXhwb3J0IGNvbnN0IENPTlRFTlRfVFJBTlNGRVJfRU5DT0RJTkcgPSAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyc7XG5leHBvcnQgY29uc3QgQ09OVEVOVF9JRCA9ICdDb250ZW50LUlEJztcbmV4cG9ydCBjb25zdCBNQVhfQUdFID0gJ21heC1hZ2UnO1xuXG4vLyBWRVJTSU9OU1xuZXhwb3J0IGNvbnN0IFZFUlNJT05fNF8wID0gJzQuMCc7XG5leHBvcnQgY29uc3QgVkVSU0lPTl8zXzAgPSAnMy4wJztcbmV4cG9ydCBjb25zdCBWRVJTSU9OXzJfMCA9ICcyLjAnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkVSU0lPTiA9IFZFUlNJT05fNF8wO1xuXG5leHBvcnQgY29uc3QgQklOQVJZID0gJ2JpbmFyeSc7XG5leHBvcnQgY29uc3QgQk9VTkRBUllfUFJFRklYX1NVRkZJWCA9ICctLSc7XG5leHBvcnQgY29uc3QgQkFUQ0hfUFJFRklYID0gJ2JhdGNoXyc7XG5leHBvcnQgY29uc3QgQ0hBTkdFU0VUX1BSRUZJWCA9ICdjaGFuZ2VzZXRfJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01FVEFEQVRBID0gJ21pbmltYWwnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RSSVBfTUVUQURBVEEgPSAnZnVsbCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GRVRDSF9QT0xJQ1kgPSAnbmV0d29yay1vbmx5JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVPVVQgPSA2MDsgLy8gVGltZSBpbiBzZWNvbmRzXG5leHBvcnQgY29uc3QgQ0FMTEFCTEVfQklORElOR19QQVJBTUVURVIgPSAnYmluZGluZ1BhcmFtZXRlcic7XG5leHBvcnQgY29uc3QgWFNTSV9QUkVGSVggPSAvXlxcKVxcXVxcfScsP1xcbi87XG5cbi8vIFVSTCBQQVJUU1xuZXhwb3J0IGNvbnN0IFFVRVJZX1NFUEFSQVRPUiA9ICc/JztcbmV4cG9ydCBjb25zdCBQQVJBTV9TRVBBUkFUT1IgPSAnJic7XG5leHBvcnQgY29uc3QgVkFMVUVfU0VQQVJBVE9SID0gJz0nO1xuZXhwb3J0IGNvbnN0IFBBVEhfU0VQQVJBVE9SID0gJy8nO1xuZXhwb3J0IGNvbnN0IE9EQVRBX1BBUkFNX1BSRUZJWCA9ICckJztcbmV4cG9ydCBjb25zdCBPREFUQV9BTElBU19QUkVGSVggPSAnQCc7XG5cbmV4cG9ydCBjb25zdCBORVdMSU5FID0gJ1xcclxcbic7XG5leHBvcnQgY29uc3QgTkVXTElORV9SRUdFWFAgPSAvXFxyP1xcbi87XG5leHBvcnQgY29uc3QgQ0FDSEVfS0VZX1NFUEFSQVRPUiA9ICc6JztcblxuLy8gTW9kZWxzXG5leHBvcnQgY29uc3QgQ0lEX0ZJRUxEX05BTUUgPSAnX2NpZCc7XG5leHBvcnQgY29uc3QgRVZFTlRfU1BMSVRURVIgPSAvXFxzKy87XG5cbi8vIFN0YW5kYXJkIHZvY2FidWxhcmllcyBmb3IgYW5ub3RhdGluZyBPRGF0YSBzZXJ2aWNlc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL29hc2lzLXRjcy9vZGF0YS12b2NhYnVsYXJpZXMvYmxvYi9tYWluL3ZvY2FidWxhcmllcy9PcmcuT0RhdGEuQ29yZS5WMS5tZFxuXG5leHBvcnQgY29uc3QgQ09NUFVURUQgPSAvLipDb21wdXRlZCQvO1xuZXhwb3J0IGNvbnN0IE9QVElNSVNUSUNfQ09OQ1VSUkVOQ1kgPSAvLipPcHRpbWlzdGljQ29uY3VycmVuY3kkLztcbmV4cG9ydCBjb25zdCBERVNDUklQVElPTiA9IC8uKkRlc2NyaXB0aW9uJC87XG5leHBvcnQgY29uc3QgTE9OR19ERVNDUklQVElPTiA9IC8uKkxvbmdEZXNjcmlwdGlvbiQvO1xuZXhwb3J0IGNvbnN0IE9QVElPTkFSTF9QQVJBTUVURVIgPSAvLipPcHRpb25hbFBhcmFtZXRlciQvO1xuIl19
@@ -16,4 +16,6 @@ export * from './models/index';
16
16
  export * from './resources/index';
17
17
  // Cache
18
18
  export * from './cache/index';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUM7QUFFMUIsUUFBUTtBQUNSLGNBQWMsZUFBZSxDQUFDO0FBRTlCLFdBQVc7QUFDWCxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLFNBQVM7QUFDVCxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLFNBQVM7QUFDVCxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLFlBQVk7QUFDWixjQUFjLG1CQUFtQixDQUFDO0FBRWxDLFFBQVE7QUFDUixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXR0aW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRlcnMnO1xuXG4vLyBVdGlsc1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pbmRleCc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2luZGV4JztcblxuLy8gU2NoZW1hXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS9pbmRleCc7XG5cbi8vIE1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvaW5kZXgnO1xuXG4vLyBSZXNvdXJjZXNcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2VzL2luZGV4JztcblxuLy8gQ2FjaGVcbmV4cG9ydCAqIGZyb20gJy4vY2FjaGUvaW5kZXgnO1xuIl19
19
+ // Metadata
20
+ export * from './metadata/index';
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUM7QUFFMUIsUUFBUTtBQUNSLGNBQWMsZUFBZSxDQUFDO0FBRTlCLFdBQVc7QUFDWCxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLFNBQVM7QUFDVCxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLFNBQVM7QUFDVCxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLFlBQVk7QUFDWixjQUFjLG1CQUFtQixDQUFDO0FBRWxDLFFBQVE7QUFDUixjQUFjLGVBQWUsQ0FBQztBQUU5QixXQUFXO0FBQ1gsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXR0aW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRlcnMnO1xuXG4vLyBVdGlsc1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pbmRleCc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2luZGV4JztcblxuLy8gU2NoZW1hXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS9pbmRleCc7XG5cbi8vIE1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvaW5kZXgnO1xuXG4vLyBSZXNvdXJjZXNcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2VzL2luZGV4JztcblxuLy8gQ2FjaGVcbmV4cG9ydCAqIGZyb20gJy4vY2FjaGUvaW5kZXgnO1xuXG4vLyBNZXRhZGF0YVxuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS9pbmRleCc7XG4iXX0=
@@ -1,5 +1,5 @@
1
- import { forkJoin, of } from 'rxjs';
2
- import { map } from 'rxjs/operators';
1
+ import { forkJoin, map, of } from 'rxjs';
2
+ import { ODataMetadataParser } from './metadata';
3
3
  export class ODataConfigLoader {
4
4
  }
5
5
  export class ODataConfigSyncLoader {
@@ -7,10 +7,9 @@ export class ODataConfigSyncLoader {
7
7
  this.passedConfigs = passedConfigs;
8
8
  }
9
9
  loadConfigs() {
10
- if (Array.isArray(this.passedConfigs)) {
11
- return of(this.passedConfigs);
12
- }
13
- return of([this.passedConfigs]);
10
+ return Array.isArray(this.passedConfigs)
11
+ ? of(this.passedConfigs)
12
+ : of([this.passedConfigs]);
14
13
  }
15
14
  }
16
15
  export class ODataConfigAsyncLoader {
@@ -18,16 +17,23 @@ export class ODataConfigAsyncLoader {
18
17
  this.configs$ = configs$;
19
18
  }
20
19
  loadConfigs() {
21
- if (Array.isArray(this.configs$)) {
22
- return forkJoin(this.configs$);
23
- }
24
- const singleConfigOrArray = this.configs$;
25
- return singleConfigOrArray.pipe(map((value) => {
26
- if (Array.isArray(value)) {
27
- return value;
28
- }
29
- return [value];
30
- }));
20
+ return Array.isArray(this.configs$)
21
+ ? forkJoin(this.configs$)
22
+ : this.configs$.pipe(map((value) => Array.isArray(value)
23
+ ? value
24
+ : [value]));
31
25
  }
32
26
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxNQUFNLE9BQWdCLGlCQUFpQjtDQUV0QztBQUVELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBNkIsYUFBc0M7UUFBdEMsa0JBQWEsR0FBYixhQUFhLENBQXlCO0lBQUcsQ0FBQztJQUV2RSxXQUFXO1FBQ1QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNyQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDL0I7UUFFRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDbUIsUUFHVTtRQUhWLGFBQVEsR0FBUixRQUFRLENBR0U7SUFDMUIsQ0FBQztJQUVKLFdBQVc7UUFDVCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoQztRQUVELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQStCLENBQUM7UUFFakUsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxLQUFvQixDQUFDO2FBQzdCO1lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBZ0IsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcGlDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQ29uZmlnTG9hZGVyIHtcbiAgYWJzdHJhY3QgbG9hZENvbmZpZ3MoKTogT2JzZXJ2YWJsZTxBcGlDb25maWdbXT47XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUNvbmZpZ1N5bmNMb2FkZXIgaW1wbGVtZW50cyBPRGF0YUNvbmZpZ0xvYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFzc2VkQ29uZmlnczogQXBpQ29uZmlnIHwgQXBpQ29uZmlnW10pIHt9XG5cbiAgbG9hZENvbmZpZ3MoKTogT2JzZXJ2YWJsZTxBcGlDb25maWdbXT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucGFzc2VkQ29uZmlncykpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBhc3NlZENvbmZpZ3MpO1xuICAgIH1cblxuICAgIHJldHVybiBvZihbdGhpcy5wYXNzZWRDb25maWdzXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhQ29uZmlnQXN5bmNMb2FkZXIgaW1wbGVtZW50cyBPRGF0YUNvbmZpZ0xvYWRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlncyQ6XG4gICAgICB8IE9ic2VydmFibGU8QXBpQ29uZmlnPlxuICAgICAgfCBPYnNlcnZhYmxlPEFwaUNvbmZpZz5bXVxuICAgICAgfCBPYnNlcnZhYmxlPEFwaUNvbmZpZ1tdPlxuICApIHt9XG5cbiAgbG9hZENvbmZpZ3MoKTogT2JzZXJ2YWJsZTxBcGlDb25maWdbXT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29uZmlncyQpKSB7XG4gICAgICByZXR1cm4gZm9ya0pvaW4odGhpcy5jb25maWdzJCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2luZ2xlQ29uZmlnT3JBcnJheSA9IHRoaXMuY29uZmlncyQgYXMgT2JzZXJ2YWJsZTx1bmtub3duPjtcblxuICAgIHJldHVybiBzaW5nbGVDb25maWdPckFycmF5LnBpcGUoXG4gICAgICBtYXAoKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZSBhcyBBcGlDb25maWdbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbdmFsdWVdIGFzIEFwaUNvbmZpZ1tdO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
27
+ export class ODataMetadataLoader {
28
+ constructor(sources$, baseConfigs) {
29
+ this.sources$ = sources$;
30
+ this.baseConfigs = baseConfigs;
31
+ }
32
+ loadConfigs() {
33
+ const configs = Array.isArray(this.baseConfigs)
34
+ ? this.baseConfigs
35
+ : [this.baseConfigs];
36
+ return this.sources$.pipe(map((source) => (Array.isArray(source) ? source : [source]).map((m, i) => new ODataMetadataParser(m).metadata().toConfig(configs[i] ?? {}))));
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQsTUFBTSxPQUFnQixpQkFBaUI7Q0FFdEM7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQTZCLGFBQXNDO1FBQXRDLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtJQUFHLENBQUM7SUFFdkUsV0FBVztRQUNULE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNtQixRQUVzQjtRQUZ0QixhQUFRLEdBQVIsUUFBUSxDQUVjO0lBQ3RDLENBQUM7SUFFSixXQUFXO1FBQ1QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBZ0QsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xCLENBQUMsQ0FBRSxLQUFxQjtnQkFDeEIsQ0FBQyxDQUFFLENBQUMsS0FBSyxDQUFpQixDQUM3QixDQUNGLENBQUM7SUFDUixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLFFBQXVDLEVBQ3ZDLFdBQW9DO1FBRHBDLGFBQVEsR0FBUixRQUFRLENBQStCO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtJQUNwRCxDQUFDO0lBRUosV0FBVztRQUNULE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDbEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDdkQsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUNqRSxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE9EYXRhTWV0YWRhdGFQYXJzZXIgfSBmcm9tICcuL21ldGFkYXRhJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQ29uZmlnTG9hZGVyIHtcbiAgYWJzdHJhY3QgbG9hZENvbmZpZ3MoKTogT2JzZXJ2YWJsZTxBcGlDb25maWdbXT47XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUNvbmZpZ1N5bmNMb2FkZXIgaW1wbGVtZW50cyBPRGF0YUNvbmZpZ0xvYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFzc2VkQ29uZmlnczogQXBpQ29uZmlnIHwgQXBpQ29uZmlnW10pIHt9XG5cbiAgbG9hZENvbmZpZ3MoKTogT2JzZXJ2YWJsZTxBcGlDb25maWdbXT4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucGFzc2VkQ29uZmlncylcbiAgICAgID8gb2YodGhpcy5wYXNzZWRDb25maWdzKVxuICAgICAgOiBvZihbdGhpcy5wYXNzZWRDb25maWdzXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhQ29uZmlnQXN5bmNMb2FkZXIgaW1wbGVtZW50cyBPRGF0YUNvbmZpZ0xvYWRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlncyQ6XG4gICAgICB8IE9ic2VydmFibGU8QXBpQ29uZmlnPltdXG4gICAgICB8IE9ic2VydmFibGU8QXBpQ29uZmlnIHwgQXBpQ29uZmlnW10+LFxuICApIHt9XG5cbiAgbG9hZENvbmZpZ3MoKTogT2JzZXJ2YWJsZTxBcGlDb25maWdbXT4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuY29uZmlncyQpXG4gICAgICA/IGZvcmtKb2luKHRoaXMuY29uZmlncyQpXG4gICAgICA6ICh0aGlzLmNvbmZpZ3MkIGFzIE9ic2VydmFibGU8QXBpQ29uZmlnIHwgQXBpQ29uZmlnW10+KS5waXBlKFxuICAgICAgICAgIG1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgICA/ICh2YWx1ZSBhcyBBcGlDb25maWdbXSlcbiAgICAgICAgICAgICAgOiAoW3ZhbHVlXSBhcyBBcGlDb25maWdbXSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFNZXRhZGF0YUxvYWRlciBpbXBsZW1lbnRzIE9EYXRhQ29uZmlnTG9hZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2VzJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBiYXNlQ29uZmlnczogQXBpQ29uZmlnIHwgQXBpQ29uZmlnW10sXG4gICkge31cblxuICBsb2FkQ29uZmlncygpOiBPYnNlcnZhYmxlPEFwaUNvbmZpZ1tdPiB7XG4gICAgY29uc3QgY29uZmlncyA9IEFycmF5LmlzQXJyYXkodGhpcy5iYXNlQ29uZmlncylcbiAgICAgID8gdGhpcy5iYXNlQ29uZmlnc1xuICAgICAgOiBbdGhpcy5iYXNlQ29uZmlnc107XG4gICAgcmV0dXJuIHRoaXMuc291cmNlcyQucGlwZShcbiAgICAgIG1hcCgoc291cmNlKSA9PlxuICAgICAgICAoQXJyYXkuaXNBcnJheShzb3VyY2UpID8gc291cmNlIDogW3NvdXJjZV0pLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICBuZXcgT0RhdGFNZXRhZGF0YVBhcnNlcihtKS5tZXRhZGF0YSgpLnRvQ29uZmlnKGNvbmZpZ3NbaV0gPz8ge30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG4iXX0=