bx-rest 1.5.0 → 1.6.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 (181) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/README.en.md +116 -5
  3. package/README.md +117 -5
  4. package/esm2022/functions/errors.mjs +17 -5
  5. package/esm2022/functions/mapResult.mjs +4 -2
  6. package/esm2022/functions/uniqueElementCode.mjs +24 -0
  7. package/esm2022/map/disk.mjs +13 -0
  8. package/esm2022/map/im/recent.mjs +1 -9
  9. package/esm2022/map/task.mjs +11 -5
  10. package/esm2022/map/tasks/task.mjs +3 -3
  11. package/esm2022/map/tasks.mjs +4 -3
  12. package/esm2022/map/user.mjs +5 -4
  13. package/esm2022/public-api.mjs +2 -2
  14. package/esm2022/request-navvy/bizproc.mjs +19 -10
  15. package/esm2022/request-navvy/calendar/event.mjs +1 -9
  16. package/esm2022/request-navvy/disk/operation.mjs +3 -10
  17. package/esm2022/request-navvy/pull/config.mjs +1 -3
  18. package/esm2022/request-navvy/socialnetwork/api/livefeed.mjs +1 -5
  19. package/esm2022/request-navvy/task/operation/elapseditem.mjs +14 -71
  20. package/esm2022/request-navvy/tasks/task.mjs +1 -119
  21. package/esm2022/rest/map.mjs +3 -3
  22. package/esm2022/rest/navvy.mjs +66 -64
  23. package/esm2022/services/base.mjs +7 -7
  24. package/esm2022/services/context.mjs +59 -0
  25. package/esm2022/services/http/HttpBX.mjs +55 -20
  26. package/esm2022/services/http/authRefresh.mjs +25 -23
  27. package/esm2022/services/http/http.mjs +14 -69
  28. package/esm2022/services/http/middleware.mjs +149 -0
  29. package/esm2022/services/http/sessionKey.mjs +16 -5
  30. package/esm2022/services/http/transport.mjs +5 -0
  31. package/esm2022/services/navvy/extends/navvy-pag-base.mjs +63 -9
  32. package/esm2022/services/navvy/navvy-alternative-pagination-navigation.mjs +21 -71
  33. package/esm2022/services/navvy/navvy-pag-nav-result-key-object.mjs +10 -49
  34. package/esm2022/services/navvy/navvy-pag-nav-result-key.mjs +14 -73
  35. package/esm2022/services/navvy/navvy-pag-nav-tasks.mjs +4 -76
  36. package/esm2022/services/navvy/navvy-pag-nav-with-useless-key.mjs +10 -76
  37. package/esm2022/services/navvy/navvy-pag.mjs +7 -65
  38. package/esm2022/services/navvy/navvy-support.mjs +2 -15
  39. package/esm2022/services/navvy.mjs +18 -31
  40. package/esm2022/typification/rest/calendar/event/get.mjs +1 -1
  41. package/esm2022/typification/rest/settings.mjs +1 -1
  42. package/esm2022/typification/rest/tasks/task/get.mjs +1 -1
  43. package/esm2022/typification/rest/user/user.mjs +1 -1
  44. package/esm2022/typification/settings.mjs +1 -1
  45. package/fesm2022/bx-rest.mjs +860 -2038
  46. package/fesm2022/bx-rest.mjs.map +1 -1
  47. package/functions/errors.d.ts +9 -0
  48. package/functions/uniqueElementCode.d.ts +12 -0
  49. package/map/disk.d.ts +10 -0
  50. package/map/task.d.ts +3 -3
  51. package/map/tasks/task.d.ts +1 -1
  52. package/map/tasks.d.ts +1 -1
  53. package/package.json +5 -2
  54. package/public-api.d.ts +7 -3
  55. package/request-navvy/pull/config.d.ts +0 -2
  56. package/rest/map.d.ts +2 -2
  57. package/rest/navvy.d.ts +9 -0
  58. package/services/context.d.ts +43 -0
  59. package/services/http/HttpBX.d.ts +10 -0
  60. package/services/http/authRefresh.d.ts +5 -1
  61. package/services/http/http.d.ts +12 -9
  62. package/services/http/middleware.d.ts +31 -0
  63. package/services/http/sessionKey.d.ts +10 -0
  64. package/services/http/transport.d.ts +28 -0
  65. package/services/navvy/extends/navvy-pag-base.d.ts +16 -2
  66. package/services/navvy/navvy-alternative-pagination-navigation.d.ts +5 -2
  67. package/services/navvy/navvy-pag-nav-result-key-object.d.ts +0 -2
  68. package/services/navvy/navvy-pag-nav-result-key.d.ts +1 -4
  69. package/services/navvy/navvy-pag-nav-tasks.d.ts +2 -9
  70. package/services/navvy/navvy-pag-nav-with-useless-key.d.ts +0 -2
  71. package/services/navvy/navvy-pag.d.ts +0 -2
  72. package/services/navvy/navvy-support.d.ts +0 -10
  73. package/services/navvy.d.ts +1 -0
  74. package/typification/rest/calendar/event/get.d.ts +1 -1
  75. package/typification/rest/settings.d.ts +1 -0
  76. package/typification/rest/user/user.d.ts +3 -3
  77. package/typification/settings.d.ts +34 -0
  78. package/esm2022/functions/errorHandler.mjs +0 -34
  79. package/esm2022/request/app.mjs +0 -13
  80. package/esm2022/request/bizproc/activity.mjs +0 -3
  81. package/esm2022/request/bizproc/event.mjs +0 -3
  82. package/esm2022/request/bizproc/robot.mjs +0 -3
  83. package/esm2022/request/bizproc/task.mjs +0 -3
  84. package/esm2022/request/bizproc/workflow/instance.mjs +0 -3
  85. package/esm2022/request/bizproc/workflow/template.mjs +0 -3
  86. package/esm2022/request/bizproc/workflow.mjs +0 -18
  87. package/esm2022/request/bizproc.mjs +0 -15
  88. package/esm2022/request/department.mjs +0 -26
  89. package/esm2022/request/disk/attachedObject.mjs +0 -14
  90. package/esm2022/request/disk/file.mjs +0 -18
  91. package/esm2022/request/disk/folder.mjs +0 -117
  92. package/esm2022/request/disk.mjs +0 -11
  93. package/esm2022/request/lists/element.mjs +0 -18
  94. package/esm2022/request/lists/field.mjs +0 -35
  95. package/esm2022/request/lists.mjs +0 -86
  96. package/esm2022/request/log/blogcomment.mjs +0 -3
  97. package/esm2022/request/log/blogpost.mjs +0 -18
  98. package/esm2022/request/log.mjs +0 -9
  99. package/esm2022/request/pull/application/config.mjs +0 -11
  100. package/esm2022/request/pull/channel/public.mjs +0 -18
  101. package/esm2022/request/pull/config.mjs +0 -13
  102. package/esm2022/request/pull.mjs +0 -11
  103. package/esm2022/request/server.mjs +0 -14
  104. package/esm2022/request/socialnetwork/api/contentview.mjs +0 -14
  105. package/esm2022/request/socialnetwork/api/livefeed/blogpost/important.mjs +0 -14
  106. package/esm2022/request/socialnetwork/api/livefeed/blogpost.mjs +0 -7
  107. package/esm2022/request/socialnetwork/api/livefeed.mjs +0 -7
  108. package/esm2022/request/socialnetwork/api.mjs +0 -9
  109. package/esm2022/request/socialnetwork.mjs +0 -8
  110. package/esm2022/request/sonet_group.mjs +0 -24
  111. package/esm2022/request/task/commentitem.mjs +0 -32
  112. package/esm2022/request/task/elapseditem.mjs +0 -40
  113. package/esm2022/request/task/item/userfield.mjs +0 -14
  114. package/esm2022/request/task/item.mjs +0 -7
  115. package/esm2022/request/task/planner.mjs +0 -11
  116. package/esm2022/request/task.mjs +0 -13
  117. package/esm2022/request/tasks/task/result.mjs +0 -22
  118. package/esm2022/request/tasks/task.mjs +0 -110
  119. package/esm2022/request/tasks.mjs +0 -7
  120. package/esm2022/request/user/userfield.mjs +0 -14
  121. package/esm2022/request/user.mjs +0 -40
  122. package/esm2022/rest/base.mjs +0 -39
  123. package/esm2022/services/http/HttpData.mjs +0 -77
  124. package/esm2022/services/http/base/base.mjs +0 -4
  125. package/esm2022/services/http/httpNavvy.mjs +0 -14
  126. package/esm2022/typification/base/answers.mjs +0 -438
  127. package/esm2022/typification/base/params.mjs +0 -525
  128. package/esm2022/typification/base/workpiece/methods-list.mjs +0 -2
  129. package/esm2022/typification/base/workpiece/methods.mjs +0 -2
  130. package/functions/errorHandler.d.ts +0 -10
  131. package/request/app.d.ts +0 -8
  132. package/request/bizproc/activity.d.ts +0 -2
  133. package/request/bizproc/event.d.ts +0 -2
  134. package/request/bizproc/robot.d.ts +0 -2
  135. package/request/bizproc/task.d.ts +0 -2
  136. package/request/bizproc/workflow/instance.d.ts +0 -2
  137. package/request/bizproc/workflow/template.d.ts +0 -2
  138. package/request/bizproc/workflow.d.ts +0 -13
  139. package/request/bizproc.d.ts +0 -12
  140. package/request/department.d.ts +0 -18
  141. package/request/disk/attachedObject.d.ts +0 -8
  142. package/request/disk/file.d.ts +0 -10
  143. package/request/disk/folder.d.ts +0 -96
  144. package/request/disk.d.ts +0 -8
  145. package/request/lists/element.d.ts +0 -11
  146. package/request/lists/field.d.ts +0 -11
  147. package/request/lists.d.ts +0 -31
  148. package/request/log/blogcomment.d.ts +0 -2
  149. package/request/log/blogpost.d.ts +0 -11
  150. package/request/log.d.ts +0 -6
  151. package/request/pull/application/config.d.ts +0 -5
  152. package/request/pull/channel/public.d.ts +0 -5
  153. package/request/pull/config.d.ts +0 -7
  154. package/request/pull.d.ts +0 -8
  155. package/request/server.d.ts +0 -7
  156. package/request/socialnetwork/api/contentview.d.ts +0 -6
  157. package/request/socialnetwork/api/livefeed/blogpost/important.d.ts +0 -6
  158. package/request/socialnetwork/api/livefeed/blogpost.d.ts +0 -4
  159. package/request/socialnetwork/api/livefeed.d.ts +0 -4
  160. package/request/socialnetwork/api.d.ts +0 -6
  161. package/request/socialnetwork.d.ts +0 -4
  162. package/request/sonet_group.d.ts +0 -8
  163. package/request/task/commentitem.d.ts +0 -23
  164. package/request/task/elapseditem.d.ts +0 -26
  165. package/request/task/item/userfield.d.ts +0 -6
  166. package/request/task/item.d.ts +0 -4
  167. package/request/task/planner.d.ts +0 -4
  168. package/request/task.d.ts +0 -10
  169. package/request/tasks/task/result.d.ts +0 -13
  170. package/request/tasks/task.d.ts +0 -37
  171. package/request/tasks.d.ts +0 -4
  172. package/request/user/userfield.d.ts +0 -8
  173. package/request/user.d.ts +0 -24
  174. package/rest/base.d.ts +0 -33
  175. package/services/http/HttpData.d.ts +0 -7
  176. package/services/http/base/base.d.ts +0 -7
  177. package/services/http/httpNavvy.d.ts +0 -10
  178. package/typification/base/answers.d.ts +0 -12
  179. package/typification/base/params.d.ts +0 -16
  180. package/typification/base/workpiece/methods-list.d.ts +0 -247
  181. package/typification/base/workpiece/methods.d.ts +0 -20
@@ -26,12 +26,6 @@ export class BXRestNavvyTasksTask {
26
26
  * Переводит задачу в статус «завершена»
27
27
  */
28
28
  complete: [$tasks, $task, $complete],
29
- // counters: {
30
- // /**
31
- // * Получает счетчики пользователя
32
- // */
33
- // get: [$tasks, $task, $counters, $get],
34
- // },
35
29
  /**
36
30
  * Переводит задачу в статус «отложена»
37
31
  */
@@ -44,30 +38,6 @@ export class BXRestNavvyTasksTask {
44
38
  * Возвращает информацию о конкретной задаче
45
39
  */
46
40
  get: [$tasks, $task, $get],
47
- // /**
48
- // * Удаляет задачу
49
- // */
50
- // delete: [$tasks, $task, $delete],
51
- // /**
52
- // * Позволяет отклонить задачу
53
- // */
54
- // disapprove: [$tasks, $task, $disapprove],
55
- // favorite: {
56
- // /**
57
- // * Добавляет задачи в "Избранное"
58
- // */
59
- // add: [$tasks, $task, $favorite, $add],
60
- // /**
61
- // * Удаляет задачи из "Избранного"
62
- // */
63
- // delete: [$tasks, $task, $favorite, $delete],
64
- // },
65
- // files: {
66
- // /**
67
- // * Прикрепляет загруженный на диск файл к задаче
68
- // */
69
- // attach: [$tasks, $task, $files, $attach],
70
- // },
71
41
  /**
72
42
  * Возвращает все доступные поля
73
43
  */
@@ -76,36 +46,10 @@ export class BXRestNavvyTasksTask {
76
46
  * Метод для проверки доступа к задаче
77
47
  */
78
48
  getAccess: [$tasks, $task, $getaccess],
79
- // history: {
80
- // /**
81
- // * Получает историю задачи
82
- // */
83
- // list: [$tasks, $task, $history, $list],
84
- // },
85
49
  /**
86
50
  * Возвращает массив задач, каждая из которых содержит массив полей
87
51
  */
88
52
  list: [$tasks, $task, $list],
89
- // /**
90
- // * Останавливает выполнение задачи, переводя ее в статус "ждет выполнения"
91
- // */
92
- // pause: [$tasks, $task, $pause],
93
- // /**
94
- // * Возобновляет задачу после ее завершения
95
- // */
96
- // renew: [$tasks, $task, $renew],
97
- // /**
98
- // * Переводит задачу в статус «выполняется»
99
- // */
100
- // start: [$tasks, $task, $start],
101
- // /**
102
- // * Позволяет наблюдать за задачей
103
- // */
104
- // startWatch: [$tasks, $task, 'startwatch'],
105
- // /**
106
- // * Останавливает наблюдение за задачей
107
- // */
108
- // stopwatch: [$tasks, $task, 'stopwatch'],
109
53
  /**
110
54
  * Обновляет задачу
111
55
  */
@@ -210,68 +154,6 @@ export class BXRestNavvyTasksTask {
210
154
  list(param = {}) {
211
155
  return this.Navvy.pagNavTasks(this.url.list, param, (BXRestMapTasksTask.list));
212
156
  }
213
- /*
214
- listArray(requestArray: RequestApiTaskListBX = {}) {
215
- return this.list(requestArray).pipe(
216
- map(v => this.http.mapResult(v)),
217
- map(v => (v && v.tasks) ? v.tasks : [])
218
- )
219
- }
220
-
221
- listAll(requestArray: RequestApiTaskListBX = {}, cache = false): Observable<TaskBX[]> {
222
- if (!requestArray.select) {
223
- requestArray.select = this.def.select
224
- if (cache) {
225
- return this.storeTask$.pipe(
226
- take(1),
227
- mergeMap(tasks => {
228
- if (tasks && tasks.data.http.list && requestArray.filter && requestArray.filter.ID) {
229
- const ids = (typeof requestArray.filter.ID === 'number') ? [requestArray.filter.ID] : requestArray.filter.ID
230
- let filter = tasks.data.http.list.filter(i => (i.id) ? ids.includes(i.id) : false)
231
- if (filter.length === ids.length) {
232
- return of(filter)
233
- }
234
- }
235
- return this.getEndListArray(requestArray)
236
- })
237
- )
238
- }
239
- return this.getEndListArray(requestArray)
240
- }
241
- return this.getEndListArray(requestArray)
242
- }
243
-
244
- getEndListArray(requestArray: RequestApiTaskListBX): Observable<TaskBX[]> {
245
- return this.list(requestArray).pipe(
246
- mergeMap((items: AnswerApiTaskBX | undefined): ObservableInput<any> | Observable<AnswerApiTaskBX[]> => {
247
- if (items && items.result && typeof items.result.tasks === 'object') {
248
- const items$ = of(items.result.tasks)
249
- if (items.next) {
250
- this.nowLoad$.next({
251
- total: (items.total) ? items.total : 0,
252
- next: items.next
253
- })
254
- requestArray.start = items.next
255
- return this.getEndListArray(requestArray).pipe(
256
- map(vEnd => {
257
- if (vEnd && items.result.tasks) {
258
- return [...items.result.tasks, ...vEnd]
259
- }
260
- return (items.result.tasks) ? items.result.tasks : []
261
- }))
262
- }
263
- this.nowLoad$.next({
264
- total: 0,
265
- next: 0
266
- })
267
- return items$
268
- } else {
269
- return of([])
270
- }
271
- })
272
- )
273
- }
274
- */
275
157
  /**
276
158
  * Возвращает список полей задачи.
277
159
  */
@@ -351,4 +233,4 @@ export class BXRestNavvyTasksTask {
351
233
  return this.Navvy.simple([$tasks, $task, $unpin], param);
352
234
  }
353
235
  }
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvdGFza3MvdGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQVN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbFQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFN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O0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBOEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgaUJYUmVzdFBhcmFtVGFza0FkZCxcclxuICBpQlhSZXN0UGFyYW1UYXNrc0xpc3QsXHJcbiAgaUJYUmVzdFRhc2tGaWVsZHNOYW1lLFxyXG4gIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyLFxyXG4gIGlCWFJlc3RUYXNrLCBpQlhSZXN0VGFza3NUYXNrR2V0RmllbGRzLCBpQlhSZXN0VGFza3NUYXNrRGVmZXJIdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0dldCwgaUJYUmVzdFRhc2tzVGFza0dldCwgaUJYUmVzdFRhc2tzVGFza0dldEh0dHAsIGlCWFJlc3RUYXNrc1Rhc2tHZXRIdHRwRGVmYXVsdCxcclxuICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tVcGRhdGVGaWVsZHMsXHJcbiAgaUJYUmVzdFRhc2tzVGFza0ZpZWxkc0NhblVwZGF0ZSxcclxuICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tBcHByb3ZlLFxyXG4gIGlCWFJlc3RUYXNrc1Rhc2tBcHByb3ZlSHR0cCxcclxuICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tDb21wbGV0ZSxcclxuICBpQlhSZXN0VGFza3NUYXNrQ29tcGxldGVIdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0RlZmVyLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkLFxyXG4gIGlCWFJlc3RUYXNrc09iamVjdFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3Rhc2tzJ1xyXG5pbXBvcnQgeyBOYXZ2eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25hdnZ5J1xyXG5pbXBvcnQgeyBCWFJlc3RNYXBUYXNrc1Rhc2sgfSBmcm9tICcuLi8uLi9tYXAvdGFza3MvdGFzaydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrc1Rhc2tSZXN1bHQgfSBmcm9tICcuL3Rhc2svcmVzdWx0J1xyXG5pbXBvcnQgY2FtZWxDYXNlIGZyb20gJ2p1c3QtY2FtZWwtY2FzZSdcclxuaW1wb3J0IHtcclxuICBpQlhSZXN0UGFyYW1UYXNrR2V0QWNjZXNzLFxyXG4gIGlCWFJlc3RUYXNrR2V0QWNjZXNzLFxyXG4gIGlCWFJlc3RUYXNrR2V0QWNjZXNzSXRlbVxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3Rhc2snXHJcbmltcG9ydCB7IFRvVXBwZXJDYXNlS2V5cyB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9iYXNlL3VwcGVyLWNhc2Uta2V5cydcclxuaW1wb3J0IHsgT2JqZWN0VG9TbmFrZSB9IGZyb20gJ3RzLWNhc2UtY29udmVydC9saWIvY2FzZUNvbnZlcnQnXHJcbmltcG9ydCB7IEFsbEtleUZyZWUgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vYmFzZS9hbGwta2V5LWZyZWUnXHJcbmltcG9ydCB7ICRhZGQsICRhZGRGcm9tQ29tbWVudCwgJGFwcHJvdmUsICRjb21wbGV0ZSwgJGRlZmVyLCAkZGVsZWdhdGUsICRkZWxldGUsICRkZWxldGVGcm9tQ29tbWVudCwgJGRpc2FwcHJvdmUsICRnZXQsICRnZXRGaWVsZHNFeGFjdCwgJGdldGFjY2VzcywgJGxpc3QsICRtdXRlLCAkcGF1c2UsICRwaW4sICRyZW5ldywgJHJlc3VsdCwgJHN0YXJ0LCAkc3RhcnR3YXRjaCwgJHN0b3B3YXRjaCwgJHRhc2ssICR0YXNrcywgJHVubXV0ZSwgJHVucGluLCAkdXBkYXRlIH0gZnJvbSAnLi4vLi4vY29uc3RzL3BhcnQtbmFtZS1tZXRob2RzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0FjY2VzcyB9IGZyb20gJy4vdGFzay9hY2Nlc3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ2hhdCB9IGZyb20gJy4vdGFzay9jaGF0J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0NvdW50ZXJzIH0gZnJvbSAnLi90YXNrL2NvdW50ZXJzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0Zhdm9yaXRlIH0gZnJvbSAnLi90YXNrL2Zhdm9yaXRlJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpZWxkIH0gZnJvbSAnLi90YXNrL2ZpZWxkJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpbGVzIH0gZnJvbSAnLi90YXNrL2ZpbGVzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0hpc3RvcnkgfSBmcm9tICcuL3Rhc2svaGlzdG9yeSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGaWxlIH0gZnJvbSAnLi90YXNrL2ZpbGUnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnlUYXNrc1Rhc2sge1xyXG5cclxuICB1cmwgPSB7XHJcbiAgICAvKipcclxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQtNCw0YfRg1xyXG4gICAgICovXHJcbiAgICBhZGQ6IFskdGFza3MsICR0YXNrLCAkYWRkXSxcclxuICAgIC8qKlxyXG4gICAgICog0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQuNC90Y/RgtGMINC30LDQtNCw0YfRg1xyXG4gICAgICovXHJcbiAgICBhcHByb3ZlOiBbJHRhc2tzLCAkdGFzaywgJGFwcHJvdmVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9C30LDQstC10YDRiNC10L3QsMK7XHJcbiAgICAgKi9cclxuICAgIGNvbXBsZXRlOiBbJHRhc2tzLCAkdGFzaywgJGNvbXBsZXRlXSxcclxuICAgIC8vIGNvdW50ZXJzOiB7XHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQn9C+0LvRg9GH0LDQtdGCINGB0YfQtdGC0YfQuNC60Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPXHJcbiAgICAvLyAgICAqL1xyXG4gICAgLy8gICBnZXQ6IFskdGFza3MsICR0YXNrLCAkY291bnRlcnMsICRnZXRdLFxyXG4gICAgLy8gfSxcclxuICAgIC8qKlxyXG4gICAgICog0J/QtdGA0LXQstC+0LTQuNGCINC30LDQtNCw0YfRgyDQsiDRgdGC0LDRgtGD0YEgwqvQvtGC0LvQvtC20LXQvdCwwrtcclxuICAgICAqL1xyXG4gICAgZGVmZXI6IFskdGFza3MsICR0YXNrLCAkZGVmZXJdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQnNC10YLQvtC0INC00LvRjyDQtNC10LvQtdCz0LjRgNC+0LLQsNC90LjRjyDQt9Cw0LTQsNGH0LhcclxuICAgICAqL1xyXG4gICAgZGVsZWdhdGU6IFskdGFza3MsICR0YXNrLCAkZGVsZWdhdGVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDQutC+0L3QutGA0LXRgtC90L7QuSDQt9Cw0LTQsNGH0LVcclxuICAgICAqL1xyXG4gICAgZ2V0OiBbJHRhc2tzLCAkdGFzaywgJGdldF0sXHJcbiAgICAvLyAvKipcclxuICAgIC8vICAqINCj0LTQsNC70Y/QtdGCINC30LDQtNCw0YfRg1xyXG4gICAgLy8gICovXHJcbiAgICAvLyBkZWxldGU6IFskdGFza3MsICR0YXNrLCAkZGVsZXRlXSxcclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICog0J/QvtC30LLQvtC70Y/QtdGCINC+0YLQutC70L7QvdC40YLRjCDQt9Cw0LTQsNGH0YNcclxuICAgIC8vICAqL1xyXG4gICAgLy8gZGlzYXBwcm92ZTogWyR0YXNrcywgJHRhc2ssICRkaXNhcHByb3ZlXSxcclxuICAgIC8vIGZhdm9yaXRlOiB7XHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0LfQsNC00LDRh9C4INCyIFwi0JjQt9Cx0YDQsNC90L3QvtC1XCJcclxuICAgIC8vICAgICovXHJcbiAgICAvLyAgIGFkZDogWyR0YXNrcywgJHRhc2ssICRmYXZvcml0ZSwgJGFkZF0sXHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0LTQsNGH0Lgg0LjQtyBcItCY0LfQsdGA0LDQvdC90L7Qs9C+XCJcclxuICAgIC8vICAgICovXHJcbiAgICAvLyAgIGRlbGV0ZTogWyR0YXNrcywgJHRhc2ssICRmYXZvcml0ZSwgJGRlbGV0ZV0sXHJcbiAgICAvLyB9LFxyXG4gICAgLy8gZmlsZXM6IHtcclxuICAgIC8vICAgLyoqXHJcbiAgICAvLyAgICAqINCf0YDQuNC60YDQtdC/0LvRj9C10YIg0LfQsNCz0YDRg9C20LXQvdC90YvQuSDQvdCwINC00LjRgdC6INGE0LDQudC7INC6INC30LDQtNCw0YfQtVxyXG4gICAgLy8gICAgKi9cclxuICAgIC8vICAgYXR0YWNoOiBbJHRhc2tzLCAkdGFzaywgJGZpbGVzLCAkYXR0YWNoXSxcclxuICAgIC8vIH0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINCy0YHQtSDQtNC+0YHRgtGD0L/QvdGL0LUg0L/QvtC70Y9cclxuICAgICAqL1xyXG4gICAgZ2V0RmllbGRzOiBbJHRhc2tzLCAkdGFzaywgJGdldEZpZWxkc0V4YWN0XSxcclxuICAgIC8qKlxyXG4gICAgICog0JzQtdGC0L7QtCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQtNC+0YHRgtGD0L/QsCDQuiDQt9Cw0LTQsNGH0LVcclxuICAgICAqL1xyXG4gICAgZ2V0QWNjZXNzOiBbJHRhc2tzLCAkdGFzaywgJGdldGFjY2Vzc10sXHJcbiAgICAvLyBoaXN0b3J5OiB7XHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQn9C+0LvRg9GH0LDQtdGCINC40YHRgtC+0YDQuNGOINC30LDQtNCw0YfQuFxyXG4gICAgLy8gICAgKi9cclxuICAgIC8vICAgbGlzdDogWyR0YXNrcywgJHRhc2ssICRoaXN0b3J5LCAkbGlzdF0sXHJcbiAgICAvLyB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvNCw0YHRgdC40LIg0LfQsNC00LDRhywg0LrQsNC20LTQsNGPINC40Lcg0LrQvtGC0L7RgNGL0YUg0YHQvtC00LXRgNC20LjRgiDQvNCw0YHRgdC40LIg0L/QvtC70LXQuVxyXG4gICAgICovXHJcbiAgICBsaXN0OiBbJHRhc2tzLCAkdGFzaywgJGxpc3RdLFxyXG4gICAgLy8gLyoqXHJcbiAgICAvLyAgKiDQntGB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstGL0L/QvtC70L3QtdC90LjQtSDQt9Cw0LTQsNGH0LgsINC/0LXRgNC10LLQvtC00Y8g0LXQtSDQsiDRgdGC0LDRgtGD0YEgXCLQttC00LXRgiDQstGL0L/QvtC70L3QtdC90LjRj1wiXHJcbiAgICAvLyAgKi9cclxuICAgIC8vIHBhdXNlOiBbJHRhc2tzLCAkdGFzaywgJHBhdXNlXSxcclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICog0JLQvtC30L7QsdC90L7QstC70Y/QtdGCINC30LDQtNCw0YfRgyDQv9C+0YHQu9C1INC10LUg0LfQsNCy0LXRgNGI0LXQvdC40Y9cclxuICAgIC8vICAqL1xyXG4gICAgLy8gcmVuZXc6IFskdGFza3MsICR0YXNrLCAkcmVuZXddLFxyXG4gICAgLy8gLyoqXHJcbiAgICAvLyAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9Cy0YvQv9C+0LvQvdGP0LXRgtGB0Y/Cu1xyXG4gICAgLy8gICovXHJcbiAgICAvLyBzdGFydDogWyR0YXNrcywgJHRhc2ssICRzdGFydF0sXHJcbiAgICAvLyAvKipcclxuICAgIC8vICAqINCf0L7Qt9Cy0L7Qu9GP0LXRgiDQvdCw0LHQu9GO0LTQsNGC0Ywg0LfQsCDQt9Cw0LTQsNGH0LXQuVxyXG4gICAgLy8gICovXHJcbiAgICAvLyBzdGFydFdhdGNoOiBbJHRhc2tzLCAkdGFzaywgJ3N0YXJ0d2F0Y2gnXSxcclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICog0J7RgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0L3QsNCx0LvRjtC00LXQvdC40LUg0LfQsCDQt9Cw0LTQsNGH0LXQuVxyXG4gICAgLy8gICovXHJcbiAgICAvLyBzdG9wd2F0Y2g6IFskdGFza3MsICR0YXNrLCAnc3RvcHdhdGNoJ10sXHJcbiAgICAvKipcclxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDQt9Cw0LTQsNGH0YNcclxuICAgICAqL1xyXG4gICAgdXBkYXRlOiBbJHRhc2tzLCAkdGFzaywgJHVwZGF0ZV0sXHJcbiAgICByZXN1bHQ6IHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqICDQn9GA0L7RgdC80L7RgtGAINGB0L/QuNGB0LrQsCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC6INC30LDQtNCw0YfQtVxyXG4gICAgICAgKi9cclxuICAgICAgbGlzdDogWyR0YXNrcywgJHRhc2ssICRyZXN1bHQsICRsaXN0XSxcclxuICAgICAgLyoqXHJcbiAgICAgICAqINCh0L7Qt9C00LDQvdC40LUg0YDQtdC30YPQu9GM0YLQsNGC0LAg0LfQsNC00LDRh9C4INC40Lcg0LrQvtC80LzQtdC90YLQsNGA0LjRj1xyXG4gICAgICAgKi9cclxuICAgICAgYWRkRnJvbUNvbW1lbnQ6IFskdGFza3MsICR0YXNrLCAkcmVzdWx0LCAkYWRkRnJvbUNvbW1lbnRdLFxyXG4gICAgICAvKipcclxuICAgICAgICog0KPQtNCw0LvQtdC90LjQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQt9Cw0LTQsNGH0Lgg0L/QviDQutC+0LzQvNC10L3RgtCw0YDQuNGOINC40Lcg0LrQvtGC0L7RgNC+0LPQviDQvtC9INCx0YvQuyDRgdC+0LfQtNCw0L1cclxuICAgICAgICovXHJcbiAgICAgIGRlbGV0ZUZyb21Db21tZW50OiBbJHRhc2tzLCAkdGFzaywgJHJlc3VsdCwgJGRlbGV0ZUZyb21Db21tZW50XSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQoNC10LfRg9C70YzRgtCw0YLRiyDQt9Cw0LTQsNGH0LggKGB0YXNrcy50YXNrLnJlc3VsdC4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzdWx0ID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrUmVzdWx0KClcclxuICAvKipcbiAgICog0J/RgNCw0LLQsCDQtNC+0YHRgtGD0L/QsCDQuiDQt9Cw0LTQsNGH0LUgKGB0YXNrcy50YXNrLmFjY2Vzcy4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrQWNjZXNzKClcclxuICAvKipcbiAgICog0KfQsNGCINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suY2hhdC4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhdCA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0NoYXQoKVxyXG4gIC8qKlxuICAgKiDQodGH0ZHRgtGH0LjQutC4INC30LDQtNCw0YcgKGB0YXNrcy50YXNrLmNvdW50ZXJzLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb3VudGVycyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0NvdW50ZXJzKClcclxuICAvKipcbiAgICog0JjQt9Cx0YDQsNC90L3Ri9C1INC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suZmF2b3JpdGUuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZhdm9yaXRlID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmF2b3JpdGUoKVxyXG4gIC8qKlxuICAgKiDQn9C+0LvRjyDQt9Cw0LTQsNGH0LggKGB0YXNrcy50YXNrLmZpZWxkLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWVsZCA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpZWxkKClcclxuICAvKipcbiAgICog0KTQsNC50LvRiyDQt9Cw0LTQsNGH0LgsIFJFU1QgMy4wIChgdGFza3MudGFzay5maWxlLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmlsZSgpXHJcbiAgLyoqXG4gICAqINCk0LDQudC70Ysg0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5maWxlcy4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZXMgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGaWxlcygpXHJcbiAgLyoqXG4gICAqINCY0YHRgtC+0YDQuNGPINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suaGlzdG9yeS4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaGlzdG9yeSA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0hpc3RvcnkoKVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IE5hdnZ5ID0gbmV3IE5hdnZ5KClcclxuXHJcbiAgYWRkPEN1c3RvbUZpZWxkcyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tBZGQ8Q3VzdG9tRmllbGRzPikge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrR2V0SHR0cERlZmF1bHQ+LFxyXG4gICAgICBpQlhSZXN0VGFzayxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza0FkZDxDdXN0b21GaWVsZHM+XHJcbiAgICA+KFxyXG4gICAgICB0aGlzLnVybC5hZGQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBUYXNrc1Rhc2suYWRkXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiDQv9C10YDQtdC/0LjRgdCw0YLRjCDQvdC+0YDQvNCw0LvRjNC90L5cclxuICAvKipcbiAgICog0J/RgNC40L3QuNC80LDQtdGCINC30LDQtNCw0YfRgy5cbiAgICovXG4gIGFwcHJvdmUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0FwcHJvdmUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0FwcHJvdmVIdHRwPixcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0FwcHJvdmVIdHRwPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrQXBwcm92ZVxyXG4gICAgPih0aGlzLnVybC5hcHByb3ZlLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9C30LDQstC10YDRiNC10L3QsMK7LlxuICAgKi9cbiAgY29tcGxldGUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0NvbXBsZXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tDb21wbGV0ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrQ29tcGxldGVIdHRwPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrQ29tcGxldGVcclxuICAgID4odGhpcy51cmwuY29tcGxldGUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0L7RgtC70L7QttC10L3QsMK7LlxuICAgKi9cbiAgZGVmZXIocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0RlZmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHA+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrRGVmZXJIdHRwPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrRGVmZXJcclxuICAgID4odGhpcy51cmwuZGVmZXIsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlPEN1c3RvbUZpZWxkcyBleHRlbmRzIG9iamVjdD4oXHJcbiAgICB0YXNrOiBBbGxLZXlGcmVlPGlCWFJlc3RUYXNrc1Rhc2tHZXQ8aUJYUmVzdFRhc2tGaWVsZHNOYW1lW10sIEN1c3RvbUZpZWxkcz4+LFxyXG4gICAgdXBkYXRlRmllbGRzOiAoaUJYUmVzdFRhc2tzVGFza0ZpZWxkc0NhblVwZGF0ZSB8IGtleW9mIFRvVXBwZXJDYXNlS2V5czxPYmplY3RUb1NuYWtlPEN1c3RvbUZpZWxkcz4+KVtdXHJcbiAgKSB7XHJcblxyXG4gICAgbGV0IHNlbmRUYXNrOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tVcGRhdGVGaWVsZHMgJiBBbGxLZXlGcmVlPEN1c3RvbUZpZWxkcz4gPSB7fVxyXG4gICAgbGV0IHRhc2tUUzogUmVjb3JkPHN0cmluZywgYW55PiA9IHRhc2tcclxuICAgIGlmICh1cGRhdGVGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IHVwZGF0ZUZpZWxkIG9mIHVwZGF0ZUZpZWxkcykge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyh1cGRhdGVGaWVsZClcclxuICAgICAgICBpZiAodGFza1RTW2NhbWVsQ2FzZShrZXkpXSkge1xyXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBDdXN0b20gZmllbGQga2V5cyBhcmUgc2VsZWN0ZWQgZHluYW1pY2FsbHkuXHJcbiAgICAgICAgICBzZW5kVGFza1trZXldID0gdGFza1RTW2NhbWVsQ2FzZShrZXkpXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoT2JqZWN0LnZhbHVlcyhzZW5kVGFzaykubGVuZ3RoICYmIHRhc2sgJiYgdGFzay5pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHA+LFxyXG4gICAgICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0RlZmVySHR0cD4sXHJcbiAgICAgICAgICBhbnlcclxuICAgICAgICA+KHRoaXMudXJsLnVwZGF0ZSwge3Rhc2tJZDogdGFzay5pZCwgZmllbGRzOiBzZW5kVGFza30pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VwZGF0ZUZpZWxkcyBlbXB0eScpXHJcbiAgfVxyXG5cclxuICBnZXQ8UyBleHRlbmRzIGlCWFJlc3RUYXNrRmllbGRzTmFtZVtdLCBDdXN0b21GaWVsZHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+KHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tHZXQ8Q3VzdG9tRmllbGRzPikge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrR2V0SHR0cDxTLCBDdXN0b21GaWVsZHM+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrR2V0PFMsIEN1c3RvbUZpZWxkcz4sXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0dldDxDdXN0b21GaWVsZHM+XHJcbiAgICA+KFxyXG4gICAgICB0aGlzLnVybC5nZXQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBUYXNrc1Rhc2suZ2V0PFMsIEN1c3RvbUZpZWxkcz5cclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vINCS0L7Qt9C80L7QttC90L4g0LzQvtC20L3QviDQvtCx0L7QudGC0LjRgdGMINCx0LXQtyBcIlMgZXh0ZW5kcyBpQlhSZXN0VGFza0ZpZWxkc05hbWVbXVwiLFxyXG4gIC8vINC90LDQtNC+INGH0YLQviDQsdGLINC/0L7QvdGP0YLRjCDRgtC+INC60LDQuiDQs9C10L3QtdGA0LjRgNC+0LLQsNGC0Ywg0LjQvdGC0LXQudGE0LXQudGBINC90LAg0LvQtdGC0YMg0LjRgdGF0L7QtNGPINC40YUg0LLRhdC+0LTRj9GJ0LjRhSDQtNCw0L3QvdGL0YVcclxuICBsaXN0PFMgZXh0ZW5kcyBpQlhSZXN0VGFza0ZpZWxkc05hbWVbXSwgQ3VzdG9tRmllbGRzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihcclxuICAgIHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc0xpc3Q8Q3VzdG9tRmllbGRzPiA9IHt9XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5wYWdOYXZUYXNrcyhcclxuICAgICAgdGhpcy51cmwubGlzdCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5saXN0PFMsIEN1c3RvbUZpZWxkcz5cclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgbGlzdEFycmF5KHJlcXVlc3RBcnJheTogUmVxdWVzdEFwaVRhc2tMaXN0QlggPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMubGlzdChyZXF1ZXN0QXJyYXkpLnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+IHRoaXMuaHR0cC5tYXBSZXN1bHQodikpLFxyXG4gICAgICBtYXAodiA9PiAodiAmJiB2LnRhc2tzKSA/IHYudGFza3MgOiBbXSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGxpc3RBbGwocmVxdWVzdEFycmF5OiBSZXF1ZXN0QXBpVGFza0xpc3RCWCA9IHt9LCBjYWNoZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxUYXNrQlhbXT4ge1xyXG4gICAgaWYgKCFyZXF1ZXN0QXJyYXkuc2VsZWN0KSB7XHJcbiAgICAgIHJlcXVlc3RBcnJheS5zZWxlY3QgPSB0aGlzLmRlZi5zZWxlY3RcclxuICAgICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVUYXNrJC5waXBlKFxyXG4gICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIG1lcmdlTWFwKHRhc2tzID0+IHtcclxuICAgICAgICAgICAgaWYgKHRhc2tzICYmIHRhc2tzLmRhdGEuaHR0cC5saXN0ICYmIHJlcXVlc3RBcnJheS5maWx0ZXIgJiYgcmVxdWVzdEFycmF5LmZpbHRlci5JRCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGlkcyA9ICh0eXBlb2YgcmVxdWVzdEFycmF5LmZpbHRlci5JRCA9PT0gJ251bWJlcicpID8gW3JlcXVlc3RBcnJheS5maWx0ZXIuSURdIDogcmVxdWVzdEFycmF5LmZpbHRlci5JRFxyXG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSB0YXNrcy5kYXRhLmh0dHAubGlzdC5maWx0ZXIoaSA9PiAoaS5pZCkgPyBpZHMuaW5jbHVkZXMoaS5pZCkgOiBmYWxzZSlcclxuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gaWRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZpbHRlcilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW5kTGlzdEFycmF5KHJlcXVlc3RBcnJheSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEVuZExpc3RBcnJheShyZXF1ZXN0QXJyYXkpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRFbmRMaXN0QXJyYXkocmVxdWVzdEFycmF5KVxyXG4gIH1cclxuXHJcbiAgZ2V0RW5kTGlzdEFycmF5KHJlcXVlc3RBcnJheTogUmVxdWVzdEFwaVRhc2tMaXN0QlgpOiBPYnNlcnZhYmxlPFRhc2tCWFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0KHJlcXVlc3RBcnJheSkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKGl0ZW1zOiBBbnN3ZXJBcGlUYXNrQlggfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlSW5wdXQ8YW55PiB8IE9ic2VydmFibGU8QW5zd2VyQXBpVGFza0JYW10+ID0+IHtcclxuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMucmVzdWx0ICYmIHR5cGVvZiBpdGVtcy5yZXN1bHQudGFza3MgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyQgPSBvZihpdGVtcy5yZXN1bHQudGFza3MpXHJcbiAgICAgICAgICBpZiAoaXRlbXMubmV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vd0xvYWQkLm5leHQoe1xyXG4gICAgICAgICAgICAgIHRvdGFsOiAoaXRlbXMudG90YWwpID8gaXRlbXMudG90YWwgOiAwLFxyXG4gICAgICAgICAgICAgIG5leHQ6IGl0ZW1zLm5leHRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmVxdWVzdEFycmF5LnN0YXJ0ID0gaXRlbXMubmV4dFxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmRMaXN0QXJyYXkocmVxdWVzdEFycmF5KS5waXBlKFxyXG4gICAgICAgICAgICAgIG1hcCh2RW5kID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2RW5kICYmIGl0ZW1zLnJlc3VsdC50YXNrcykge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zLnJlc3VsdC50YXNrcywgLi4udkVuZF1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAoaXRlbXMucmVzdWx0LnRhc2tzKSA/IGl0ZW1zLnJlc3VsdC50YXNrcyA6IFtdXHJcbiAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vd0xvYWQkLm5leHQoe1xyXG4gICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgbmV4dDogMFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHJldHVybiBpdGVtcyRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQv9C+0LvQtdC5INC30LDQtNCw0YfQuC5cbiAgICovXG4gIGdldEZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza3NUYXNrR2V0RmllbGRzPihcclxuICAgICAgdGhpcy51cmwuZ2V0RmllbGRzXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC00L7RgdGC0YPQvyDQuiDQt9Cw0LTQsNGH0LUuXG4gICAqL1xuICBnZXRBY2Nlc3MocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza0dldEFjY2VzcywgUmVjb3JkPG51bWJlciwgaUJYUmVzdFRhc2tHZXRBY2Nlc3NJdGVtPiwgaUJYUmVzdFBhcmFtVGFza0dldEFjY2Vzcz4oXHJcbiAgICAgIHRoaXMudXJsLmdldEFjY2VzcyxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5nZXRBY2Nlc3NcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkZWxldGUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJGRlbGV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70L7QvdGP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkaXNhcHByb3ZlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRkaXNhcHByb3ZlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDRgNC10LbQuNC8IMKr0JHQtdC3INC30LLRg9C60LDCuyDQtNC70Y8g0LfQsNC00LDRh9C4LlxuICAgKi9cbiAgbXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkbXV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YvQv9C+0LvQvdC10L3QuNC1INC30LDQtNCw0YfQuCDQuCDQv9C10YDQtdCy0L7QtNC40YIg0LIg0YHRgtCw0YLRg9GBIMKr0LbQtNGR0YLCuy5cbiAgICovXG4gIHBhdXNlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRwYXVzZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCX0LDQutGA0LXQv9C70Y/QtdGCINC30LDQtNCw0YfRgyDQsiDRgdC/0LjRgdC60LUuXG4gICAqL1xuICBwaW4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9C+0LHQvdC+0LLQu9GP0LXRgiDQt9Cw0LTQsNGH0YMg0L/QvtGB0LvQtSDQt9Cw0LLQtdGA0YjQtdC90LjRjy5cbiAgICovXG4gIHJlbmV3KHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRyZW5ld10sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LLRi9C/0L7Qu9C90Y/QtdGC0YHRj8K7LlxuICAgKi9cbiAgc3RhcnQocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHN0YXJ0XSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RhcnRXYXRjaChwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkc3RhcnR3YXRjaF0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RvcFdhdGNoKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRzdG9wd2F0Y2hdLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQktGL0LrQu9GO0YfQsNC10YIg0YDQtdC20LjQvCDCq9CR0LXQtyDQt9Cy0YPQutCwwrsg0LTQu9GPINC30LDQtNCw0YfQuC5cbiAgICovXG4gIHVubXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkdW5tdXRlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J7RgtC60YDQtdC/0LvRj9C10YIg0LfQsNC00LDRh9GDINCyINGB0L/QuNGB0LrQtS5cbiAgICovXG4gIHVucGluKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICR1bnBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbn1cclxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvdGFza3MvdGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQVN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbFQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFN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TSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBOEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUE4QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUl0QixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBpQlhSZXN0UGFyYW1UYXNrQWRkLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzTGlzdCxcclxuICBpQlhSZXN0VGFza0ZpZWxkc05hbWUsXHJcbiAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXIsXHJcbiAgaUJYUmVzdFRhc2ssIGlCWFJlc3RUYXNrc1Rhc2tHZXRGaWVsZHMsIGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHAsXHJcbiAgaUJYUmVzdFBhcmFtVGFza3NUYXNrR2V0LCBpQlhSZXN0VGFza3NUYXNrR2V0LCBpQlhSZXN0VGFza3NUYXNrR2V0SHR0cCwgaUJYUmVzdFRhc2tzVGFza0dldEh0dHBEZWZhdWx0LFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza1VwZGF0ZUZpZWxkcyxcclxuICBpQlhSZXN0VGFza3NUYXNrRmllbGRzQ2FuVXBkYXRlLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0FwcHJvdmUsXHJcbiAgaUJYUmVzdFRhc2tzVGFza0FwcHJvdmVIdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0NvbXBsZXRlLFxyXG4gIGlCWFJlc3RUYXNrc1Rhc2tDb21wbGV0ZUh0dHAsXHJcbiAgaUJYUmVzdFBhcmFtVGFza3NUYXNrRGVmZXIsXHJcbiAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQsXHJcbiAgaUJYUmVzdFRhc2tzT2JqZWN0XHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFza3MnXHJcbmltcG9ydCB7IE5hdnZ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2dnknXHJcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2tzVGFzayB9IGZyb20gJy4uLy4uL21hcC90YXNrcy90YXNrJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza1Jlc3VsdCB9IGZyb20gJy4vdGFzay9yZXN1bHQnXHJcbmltcG9ydCBjYW1lbENhc2UgZnJvbSAnanVzdC1jYW1lbC1jYXNlJ1xyXG5pbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MsXHJcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3MsXHJcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3NJdGVtXHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFzaydcclxuaW1wb3J0IHsgVG9VcHBlckNhc2VLZXlzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL2Jhc2UvdXBwZXItY2FzZS1rZXlzJ1xyXG5pbXBvcnQgeyBPYmplY3RUb1NuYWtlIH0gZnJvbSAndHMtY2FzZS1jb252ZXJ0L2xpYi9jYXNlQ29udmVydCdcclxuaW1wb3J0IHsgQWxsS2V5RnJlZSB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9iYXNlL2FsbC1rZXktZnJlZSdcclxuaW1wb3J0IHsgJGFkZCwgJGFkZEZyb21Db21tZW50LCAkYXBwcm92ZSwgJGNvbXBsZXRlLCAkZGVmZXIsICRkZWxlZ2F0ZSwgJGRlbGV0ZSwgJGRlbGV0ZUZyb21Db21tZW50LCAkZGlzYXBwcm92ZSwgJGdldCwgJGdldEZpZWxkc0V4YWN0LCAkZ2V0YWNjZXNzLCAkbGlzdCwgJG11dGUsICRwYXVzZSwgJHBpbiwgJHJlbmV3LCAkcmVzdWx0LCAkc3RhcnQsICRzdGFydHdhdGNoLCAkc3RvcHdhdGNoLCAkdGFzaywgJHRhc2tzLCAkdW5tdXRlLCAkdW5waW4sICR1cGRhdGUgfSBmcm9tICcuLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrQWNjZXNzIH0gZnJvbSAnLi90YXNrL2FjY2VzcydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrc1Rhc2tDaGF0IH0gZnJvbSAnLi90YXNrL2NoYXQnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ291bnRlcnMgfSBmcm9tICcuL3Rhc2svY291bnRlcnMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmF2b3JpdGUgfSBmcm9tICcuL3Rhc2svZmF2b3JpdGUnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmllbGQgfSBmcm9tICcuL3Rhc2svZmllbGQnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmlsZXMgfSBmcm9tICcuL3Rhc2svZmlsZXMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrSGlzdG9yeSB9IGZyb20gJy4vdGFzay9oaXN0b3J5J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpbGUgfSBmcm9tICcuL3Rhc2svZmlsZSdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eVRhc2tzVGFzayB7XHJcblxyXG4gIHVybCA9IHtcclxuICAgIC8qKlxyXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC00LDRh9GDXHJcbiAgICAgKi9cclxuICAgIGFkZDogWyR0YXNrcywgJHRhc2ssICRhZGRdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQn9C+0LfQstC+0LvRj9C10YIg0L/RgNC40L3Rj9GC0Ywg0LfQsNC00LDRh9GDXHJcbiAgICAgKi9cclxuICAgIGFwcHJvdmU6IFskdGFza3MsICR0YXNrLCAkYXBwcm92ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LfQsNCy0LXRgNGI0LXQvdCwwrtcclxuICAgICAqL1xyXG4gICAgY29tcGxldGU6IFskdGFza3MsICR0YXNrLCAkY29tcGxldGVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9C+0YLQu9C+0LbQtdC90LDCu1xyXG4gICAgICovXHJcbiAgICBkZWZlcjogWyR0YXNrcywgJHRhc2ssICRkZWZlcl0sXHJcbiAgICAvKipcclxuICAgICAqINCc0LXRgtC+0LQg0LTQu9GPINC00LXQu9C10LPQuNGA0L7QstCw0L3QuNGPINC30LDQtNCw0YfQuFxyXG4gICAgICovXHJcbiAgICBkZWxlZ2F0ZTogWyR0YXNrcywgJHRhc2ssICRkZWxlZ2F0ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC60L7QvdC60YDQtdGC0L3QvtC5INC30LDQtNCw0YfQtVxyXG4gICAgICovXHJcbiAgICBnZXQ6IFskdGFza3MsICR0YXNrLCAkZ2V0XSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LLRgdC1INC00L7RgdGC0YPQv9C90YvQtSDQv9C+0LvRj1xyXG4gICAgICovXHJcbiAgICBnZXRGaWVsZHM6IFskdGFza3MsICR0YXNrLCAkZ2V0RmllbGRzRXhhY3RdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQnNC10YLQvtC0INC00LvRjyDQv9GA0L7QstC10YDQutC4INC00L7RgdGC0YPQv9CwINC6INC30LDQtNCw0YfQtVxyXG4gICAgICovXHJcbiAgICBnZXRBY2Nlc3M6IFskdGFza3MsICR0YXNrLCAkZ2V0YWNjZXNzXSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LzQsNGB0YHQuNCyINC30LDQtNCw0YcsINC60LDQttC00LDRjyDQuNC3INC60L7RgtC+0YDRi9GFINGB0L7QtNC10YDQttC40YIg0LzQsNGB0YHQuNCyINC/0L7Qu9C10LlcclxuICAgICAqL1xyXG4gICAgbGlzdDogWyR0YXNrcywgJHRhc2ssICRsaXN0XSxcclxuICAgIC8qKlxyXG4gICAgICog0J7QsdC90L7QstC70Y/QtdGCINC30LDQtNCw0YfRg1xyXG4gICAgICovXHJcbiAgICB1cGRhdGU6IFskdGFza3MsICR0YXNrLCAkdXBkYXRlXSxcclxuICAgIHJlc3VsdDoge1xyXG4gICAgICAvKipcclxuICAgICAgICogINCf0YDQvtGB0LzQvtGC0YAg0YHQv9C40YHQutCwINGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0Log0LfQsNC00LDRh9C1XHJcbiAgICAgICAqL1xyXG4gICAgICBsaXN0OiBbJHRhc2tzLCAkdGFzaywgJHJlc3VsdCwgJGxpc3RdLFxyXG4gICAgICAvKipcclxuICAgICAgICog0KHQvtC30LTQsNC90LjQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQt9Cw0LTQsNGH0Lgg0LjQtyDQutC+0LzQvNC10L3RgtCw0YDQuNGPXHJcbiAgICAgICAqL1xyXG4gICAgICBhZGRGcm9tQ29tbWVudDogWyR0YXNrcywgJHRhc2ssICRyZXN1bHQsICRhZGRGcm9tQ29tbWVudF0sXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiDQo9C00LDQu9C10L3QuNC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC30LDQtNCw0YfQuCDQv9C+INC60L7QvNC80LXQvdGC0LDRgNC40Y4g0LjQtyDQutC+0YLQvtGA0L7Qs9C+INC+0L0g0LHRi9C7INGB0L7Qt9C00LDQvVxyXG4gICAgICAgKi9cclxuICAgICAgZGVsZXRlRnJvbUNvbW1lbnQ6IFskdGFza3MsICR0YXNrLCAkcmVzdWx0LCAkZGVsZXRlRnJvbUNvbW1lbnRdLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCg0LXQt9GD0LvRjNGC0LDRgtGLINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2sucmVzdWx0LipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXN1bHQgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tSZXN1bHQoKVxyXG4gIC8qKlxuICAgKiDQn9GA0LDQstCwINC00L7RgdGC0YPQv9CwINC6INC30LDQtNCw0YfQtSAoYHRhc2tzLnRhc2suYWNjZXNzLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3MgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tBY2Nlc3MoKVxyXG4gIC8qKlxuICAgKiDQp9Cw0YIg0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5jaGF0LipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjaGF0ID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ2hhdCgpXHJcbiAgLyoqXG4gICAqINCh0YfRkdGC0YfQuNC60Lgg0LfQsNC00LDRhyAoYHRhc2tzLnRhc2suY291bnRlcnMuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvdW50ZXJzID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ291bnRlcnMoKVxyXG4gIC8qKlxuICAgKiDQmNC30LHRgNCw0L3QvdGL0LUg0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5mYXZvcml0ZS4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmF2b3JpdGUgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGYXZvcml0ZSgpXHJcbiAgLyoqXG4gICAqINCf0L7Qu9GPINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suZmllbGQuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmllbGQoKVxyXG4gIC8qKlxuICAgKiDQpNCw0LnQu9GLINC30LDQtNCw0YfQuCwgUkVTVCAzLjAgKGB0YXNrcy50YXNrLmZpbGUuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGUgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGaWxlKClcclxuICAvKipcbiAgICog0KTQsNC50LvRiyDQt9Cw0LTQsNGH0LggKGB0YXNrcy50YXNrLmZpbGVzLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlcyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpbGVzKClcclxuICAvKipcbiAgICog0JjRgdGC0L7RgNC40Y8g0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5oaXN0b3J5LipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBoaXN0b3J5ID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrSGlzdG9yeSgpXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgTmF2dnkgPSBuZXcgTmF2dnkoKVxyXG5cclxuICBhZGQ8Q3VzdG9tRmllbGRzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihwYXJhbTogaUJYUmVzdFBhcmFtVGFza0FkZDxDdXN0b21GaWVsZHM+KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tHZXRIdHRwRGVmYXVsdD4sXHJcbiAgICAgIGlCWFJlc3RUYXNrLFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrQWRkPEN1c3RvbUZpZWxkcz5cclxuICAgID4oXHJcbiAgICAgIHRoaXMudXJsLmFkZCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5hZGRcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vIFRPRE86INC/0LXRgNC10L/QuNGB0LDRgtGMINC90L7RgNC80LDQu9GM0L3QvlxyXG4gIC8qKlxuICAgKiDQn9GA0LjQvdC40LzQsNC10YIg0LfQsNC00LDRh9GDLlxuICAgKi9cbiAgYXBwcm92ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrQXBwcm92ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrQXBwcm92ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrQXBwcm92ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tBcHByb3ZlXHJcbiAgICA+KHRoaXMudXJsLmFwcHJvdmUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LfQsNCy0LXRgNGI0LXQvdCwwrsuXG4gICAqL1xuICBjb21wbGV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrQ29tcGxldGUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0NvbXBsZXRlSHR0cD4sXHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tDb21wbGV0ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tDb21wbGV0ZVxyXG4gICAgPih0aGlzLnVybC5jb21wbGV0ZSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J/QtdGA0LXQstC+0LTQuNGCINC30LDQtNCw0YfRgyDQsiDRgdGC0LDRgtGD0YEgwqvQvtGC0LvQvtC20LXQvdCwwrsuXG4gICAqL1xuICBkZWZlcihwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrRGVmZXIpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0RlZmVySHR0cD4sXHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHA+LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tEZWZlclxyXG4gICAgPih0aGlzLnVybC5kZWZlciwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICB1cGRhdGU8Q3VzdG9tRmllbGRzIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIHRhc2s6IEFsbEtleUZyZWU8aUJYUmVzdFRhc2tzVGFza0dldDxpQlhSZXN0VGFza0ZpZWxkc05hbWVbXSwgQ3VzdG9tRmllbGRzPj4sXHJcbiAgICB1cGRhdGVGaWVsZHM6IChpQlhSZXN0VGFza3NUYXNrRmllbGRzQ2FuVXBkYXRlIHwga2V5b2YgVG9VcHBlckNhc2VLZXlzPE9iamVjdFRvU25ha2U8Q3VzdG9tRmllbGRzPj4pW11cclxuICApIHtcclxuXHJcbiAgICBsZXQgc2VuZFRhc2s6IGlCWFJlc3RQYXJhbVRhc2tzVGFza1VwZGF0ZUZpZWxkcyAmIEFsbEtleUZyZWU8Q3VzdG9tRmllbGRzPiA9IHt9XHJcbiAgICBsZXQgdGFza1RTOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGFza1xyXG4gICAgaWYgKHVwZGF0ZUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgdXBkYXRlRmllbGQgb2YgdXBkYXRlRmllbGRzKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKHVwZGF0ZUZpZWxkKVxyXG4gICAgICAgIGlmICh0YXNrVFNbY2FtZWxDYXNlKGtleSldKSB7XHJcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEN1c3RvbSBmaWVsZCBrZXlzIGFyZSBzZWxlY3RlZCBkeW5hbWljYWxseS5cclxuICAgICAgICAgIHNlbmRUYXNrW2tleV0gPSB0YXNrVFNbY2FtZWxDYXNlKGtleSldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKHNlbmRUYXNrKS5sZW5ndGggJiYgdGFzayAmJiB0YXNrLmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0RlZmVySHR0cD4sXHJcbiAgICAgICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrRGVmZXJIdHRwPixcclxuICAgICAgICAgIGFueVxyXG4gICAgICAgID4odGhpcy51cmwudXBkYXRlLCB7dGFza0lkOiB0YXNrLmlkLCBmaWVsZHM6IHNlbmRUYXNrfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRocm93IG5ldyBFcnJvcigndXBkYXRlRmllbGRzIGVtcHR5JylcclxuICB9XHJcblxyXG4gIGdldDxTIGV4dGVuZHMgaUJYUmVzdFRhc2tGaWVsZHNOYW1lW10sIEN1c3RvbUZpZWxkcyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0dldDxDdXN0b21GaWVsZHM+KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tHZXRIdHRwPFMsIEN1c3RvbUZpZWxkcz4sXHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tHZXQ8UywgQ3VzdG9tRmllbGRzPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrR2V0PEN1c3RvbUZpZWxkcz5cclxuICAgID4oXHJcbiAgICAgIHRoaXMudXJsLmdldCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5nZXQ8UywgQ3VzdG9tRmllbGRzPlxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLy8g0JLQvtC30LzQvtC20L3QviDQvNC+0LbQvdC+INC+0LHQvtC50YLQuNGB0Ywg0LHQtdC3IFwiUyBleHRlbmRzIGlCWFJlc3RUYXNrRmllbGRzTmFtZVtdXCIsXHJcbiAgLy8g0L3QsNC00L4g0YfRgtC+INCx0Ysg0L/QvtC90Y/RgtGMINGC0L4g0LrQsNC6INCz0LXQvdC10YDQuNGA0L7QstCw0YLRjCDQuNC90YLQtdC50YTQtdC50YEg0L3QsCDQu9C10YLRgyDQuNGB0YXQvtC00Y8g0LjRhSDQstGF0L7QtNGP0YnQuNGFINC00LDQvdC90YvRhVxyXG4gIGxpc3Q8UyBleHRlbmRzIGlCWFJlc3RUYXNrRmllbGRzTmFtZVtdLCBDdXN0b21GaWVsZHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+KFxyXG4gICAgcGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzTGlzdDxDdXN0b21GaWVsZHM+ID0ge31cclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnBhZ05hdlRhc2tzKFxyXG4gICAgICB0aGlzLnVybC5saXN0LFxyXG4gICAgICBwYXJhbSxcclxuICAgICAgQlhSZXN0TWFwVGFza3NUYXNrLmxpc3Q8UywgQ3VzdG9tRmllbGRzPlxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQv9C+0LvQtdC5INC30LDQtNCw0YfQuC5cbiAgICovXG4gIGdldEZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza3NUYXNrR2V0RmllbGRzPihcclxuICAgICAgdGhpcy51cmwuZ2V0RmllbGRzXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC00L7RgdGC0YPQvyDQuiDQt9Cw0LTQsNGH0LUuXG4gICAqL1xuICBnZXRBY2Nlc3MocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza0dldEFjY2VzcywgUmVjb3JkPG51bWJlciwgaUJYUmVzdFRhc2tHZXRBY2Nlc3NJdGVtPiwgaUJYUmVzdFBhcmFtVGFza0dldEFjY2Vzcz4oXHJcbiAgICAgIHRoaXMudXJsLmdldEFjY2VzcyxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5nZXRBY2Nlc3NcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkZWxldGUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJGRlbGV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70L7QvdGP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkaXNhcHByb3ZlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRkaXNhcHByb3ZlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDRgNC10LbQuNC8IMKr0JHQtdC3INC30LLRg9C60LDCuyDQtNC70Y8g0LfQsNC00LDRh9C4LlxuICAgKi9cbiAgbXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkbXV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YvQv9C+0LvQvdC10L3QuNC1INC30LDQtNCw0YfQuCDQuCDQv9C10YDQtdCy0L7QtNC40YIg0LIg0YHRgtCw0YLRg9GBIMKr0LbQtNGR0YLCuy5cbiAgICovXG4gIHBhdXNlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRwYXVzZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCX0LDQutGA0LXQv9C70Y/QtdGCINC30LDQtNCw0YfRgyDQsiDRgdC/0LjRgdC60LUuXG4gICAqL1xuICBwaW4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9C+0LHQvdC+0LLQu9GP0LXRgiDQt9Cw0LTQsNGH0YMg0L/QvtGB0LvQtSDQt9Cw0LLQtdGA0YjQtdC90LjRjy5cbiAgICovXG4gIHJlbmV3KHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRyZW5ld10sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LLRi9C/0L7Qu9C90Y/QtdGC0YHRj8K7LlxuICAgKi9cbiAgc3RhcnQocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHN0YXJ0XSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RhcnRXYXRjaChwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkc3RhcnR3YXRjaF0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RvcFdhdGNoKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRzdG9wd2F0Y2hdLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQktGL0LrQu9GO0YfQsNC10YIg0YDQtdC20LjQvCDCq9CR0LXQtyDQt9Cy0YPQutCwwrsg0LTQu9GPINC30LDQtNCw0YfQuC5cbiAgICovXG4gIHVubXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkdW5tdXRlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J7RgtC60YDQtdC/0LvRj9C10YIg0LfQsNC00LDRh9GDINCyINGB0L/QuNGB0LrQtS5cbiAgICovXG4gIHVucGluKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICR1bnBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -2,7 +2,7 @@ import { BXRestMapLists } from '../map/lists';
2
2
  import { BXRestMapUser } from '../map/user';
3
3
  import { BXRestMapSonetGroup } from '../map/sonet_group';
4
4
  import { BXRestMapServer } from '../map/server';
5
- import { BXRestDisk } from '../request/disk';
5
+ import { BXRestMapDisk } from '../map/disk';
6
6
  import { BXRestMapCalendar } from '../map/calendar';
7
7
  import { BXRestMapLog } from '../map/log';
8
8
  import { BXRestMapTask } from '../map/task';
@@ -21,7 +21,7 @@ export class BXRestMap {
21
21
  return BXRestMapLists;
22
22
  }
23
23
  get disk() {
24
- return BXRestDisk;
24
+ return BXRestMapDisk;
25
25
  }
26
26
  get calendar() {
27
27
  return BXRestMapCalendar;
@@ -36,4 +36,4 @@ export class BXRestMap {
36
36
  return BXRestMapTasks;
37
37
  }
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvcmVzdC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTdDLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLElBQVcsSUFBSTtRQUNiLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlhSZXN0TWFwTGlzdHMgfSBmcm9tICcuLi9tYXAvbGlzdHMnXHJcbmltcG9ydCB7IEJYUmVzdE1hcFVzZXIgfSBmcm9tICcuLi9tYXAvdXNlcidcclxuaW1wb3J0IHsgQlhSZXN0TWFwU29uZXRHcm91cCB9IGZyb20gJy4uL21hcC9zb25ldF9ncm91cCdcclxuaW1wb3J0IHsgQlhSZXN0TWFwU2VydmVyIH0gZnJvbSAnLi4vbWFwL3NlcnZlcidcclxuaW1wb3J0IHsgQlhSZXN0RGlzayB9IGZyb20gJy4uL3JlcXVlc3QvZGlzaydcclxuaW1wb3J0IHsgQlhSZXN0TWFwQ2FsZW5kYXIgfSBmcm9tICcuLi9tYXAvY2FsZW5kYXInXHJcbmltcG9ydCB7IEJYUmVzdE1hcExvZyB9IGZyb20gJy4uL21hcC9sb2cnXHJcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2sgfSBmcm9tICcuLi9tYXAvdGFzaydcclxuaW1wb3J0IHsgQlhSZXN0TWFwVGFza3MgfSBmcm9tICcuLi9tYXAvdGFza3MnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TWFwIHtcclxuICBwdWJsaWMgZ2V0IHVzZXIoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwVXNlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc29uZXRfZ3JvdXAoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwU29uZXRHcm91cDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmVyKCkge1xyXG4gICAgcmV0dXJuIEJYUmVzdE1hcFNlcnZlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbGlzdHMoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwTGlzdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2soKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0RGlzaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXIoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwQ2FsZW5kYXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxvZygpIHtcclxuICAgIHJldHVybiBCWFJlc3RNYXBMb2c7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhc2soKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwVGFzaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFza3MoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwVGFza3M7XHJcbiAgfVxyXG59Il19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvcmVzdC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU3QyxNQUFNLE9BQU8sU0FBUztJQUNwQixJQUFXLElBQUk7UUFDYixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJYUmVzdE1hcExpc3RzIH0gZnJvbSAnLi4vbWFwL2xpc3RzJ1xyXG5pbXBvcnQgeyBCWFJlc3RNYXBVc2VyIH0gZnJvbSAnLi4vbWFwL3VzZXInXHJcbmltcG9ydCB7IEJYUmVzdE1hcFNvbmV0R3JvdXAgfSBmcm9tICcuLi9tYXAvc29uZXRfZ3JvdXAnXHJcbmltcG9ydCB7IEJYUmVzdE1hcFNlcnZlciB9IGZyb20gJy4uL21hcC9zZXJ2ZXInXHJcbmltcG9ydCB7IEJYUmVzdE1hcERpc2sgfSBmcm9tICcuLi9tYXAvZGlzaydcclxuaW1wb3J0IHsgQlhSZXN0TWFwQ2FsZW5kYXIgfSBmcm9tICcuLi9tYXAvY2FsZW5kYXInXHJcbmltcG9ydCB7IEJYUmVzdE1hcExvZyB9IGZyb20gJy4uL21hcC9sb2cnXHJcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2sgfSBmcm9tICcuLi9tYXAvdGFzaydcclxuaW1wb3J0IHsgQlhSZXN0TWFwVGFza3MgfSBmcm9tICcuLi9tYXAvdGFza3MnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TWFwIHtcclxuICBwdWJsaWMgZ2V0IHVzZXIoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwVXNlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc29uZXRfZ3JvdXAoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwU29uZXRHcm91cDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmVyKCkge1xyXG4gICAgcmV0dXJuIEJYUmVzdE1hcFNlcnZlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbGlzdHMoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwTGlzdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2soKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwRGlzaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXIoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwQ2FsZW5kYXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxvZygpIHtcclxuICAgIHJldHVybiBCWFJlc3RNYXBMb2c7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhc2soKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwVGFzaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFza3MoKSB7XHJcbiAgICByZXR1cm4gQlhSZXN0TWFwVGFza3M7XHJcbiAgfVxyXG59Il19
@@ -44,70 +44,72 @@ import { BXRestNavvySign } from '../request-navvy/sign/index';
44
44
  import { BXRestNavvyEventLog } from '../request-navvy/eventlog/index';
45
45
  import { BXRestNavvyPlacement } from '../request-navvy/placement';
46
46
  import { BXRestNavvyUserFieldType } from '../request-navvy/userfieldtype';
47
+ import { BXRestContext, enterContext, globalContext, restoreContext } from '../services/context';
47
48
  export class BXRestNavvy {
48
- constructor() {
49
- this.ai = new BXRestNavvyAi();
50
- this.mailService = new BXRestNavvyMailService();
51
- this.messageService = new BXRestNavvyMessageService();
52
- this.userConsent = new BXRestNavvyUserConsent();
53
- this.telephony = new BXRestNavvyTelephony();
54
- this.vote = new BXRestNavvyVote();
55
- this.imConnector = new BXRestNavvyImConnector();
56
- this.entity = new BXRestNavvyEntity();
57
- this.biConnector = new BXRestNavvyBiConnector();
58
- this.voxImplant = new BXRestNavvyVoxImplant();
59
- this.mail = new BXRestNavvyMail();
60
- this.note = new BXRestNavvyNote();
61
- this.documentGenerator = new BXRestNavvyDocumentGenerator();
62
- this.imBot = new BXRestNavvyImBot();
63
- this.booking = new BXRestNavvyBooking();
64
- this.imOpenLines = new BXRestNavvyImOpenLines();
65
- this.landing = new BXRestNavvyLanding();
66
- this.catalog = new BXRestNavvyCatalog();
67
- this.sale = new BXRestNavvySale();
68
- this.sign = new BXRestNavvySign();
69
- this.eventLog = new BXRestNavvyEventLog();
70
- this.placement = new BXRestNavvyPlacement();
71
- this.userFieldType = new BXRestNavvyUserFieldType();
72
- this.user = new BXRestNavvyUser();
73
- this.lists = new BXRestNavvyLists();
74
- this.task = new BXRestNavvyTask();
75
- this.tasks = new BXRestNavvyTasks();
76
- this.disk = new BXRestNavvyDisk();
77
- this.bizProc = new BXRestNavvyBizProc();
78
- this.log = new BXRestNavvyLog();
79
- this.calendar = new BXRestNavvyCalendar();
80
- this.sonet_group = new BXRestNavvySonetGroup();
81
- this.server = new BXRestNavvyServer();
82
- this.department = new BXRestNavvyDepartment();
83
- this.im = new BXRestNavvyIm();
84
- this.app = new BXRestNavvyApp();
85
- this.timeMan = new BXRestNavvyTimeMan();
86
- this.socialNetWork = new BXRestNavvySocialNetWork();
87
- this.pull = new BXRestNavvyPull();
88
- this.crm = new BXRestNavvyCrm();
89
- /** Регистрация обработчиков и работа с онлайн- и офлайн-событиями. */
90
- this.event = new BXRestNavvyEvent();
91
- /** Проверка существования и доступности REST-методов. */
92
- this.method = new BXRestNavvyMethod();
93
- /** Получение описаний кодов доступа. */
94
- this.access = new BXRestNavvyAccess();
95
- /** Проверка доступности возможностей портала. */
96
- this.feature = new BXRestNavvyFeature();
97
- this.Navvy = new Navvy();
98
- // public batch<T, C, M>(param: iBXRestNavvyParamBatch<T, C, M>) {
99
- // const modifiedObject = Object.fromEntries(
100
- // Object.entries(param.cmd).map(([key, value]) => {
101
- // let modifiedValue = value.resultVanilla.arguments
102
- // return [key, modifiedValue]
103
- // })
104
- // )
105
- //
106
- // return this.BXRest.batch({
107
- // halt: param.halt,
108
- // cmd: modifiedObject
109
- // })
110
- // }
49
+ /**
50
+ * @param settings Свои настройки клиента: адрес портала, способ авторизации,
51
+ * заголовки. Все запросы этого клиента идут с ними, даже если глобальные
52
+ * `BXRestSettings` позже изменятся. Так в одном процессе можно работать
53
+ * с несколькими порталами. Без аргумента клиент работает с глобальными
54
+ * `BXRestSettings`, как раньше.
55
+ */
56
+ constructor(settings) {
57
+ // Каждый HTTP-объект запоминает контекст в момент создания, поэтому все
58
+ // разделы создаются, пока включён контекст клиента. Создание идёт в теле
59
+ // конструктора, а не в инициализаторах полей: только так finally вернёт
60
+ // прежний контекст, даже если какой-то раздел бросит исключение. Иначе
61
+ // объекты, созданные приложением позже, ушли бы на портал этого клиента.
62
+ const previous = enterContext(settings ? new BXRestContext(settings) : globalContext);
63
+ try {
64
+ this.ai = new BXRestNavvyAi();
65
+ this.mailService = new BXRestNavvyMailService();
66
+ this.messageService = new BXRestNavvyMessageService();
67
+ this.userConsent = new BXRestNavvyUserConsent();
68
+ this.telephony = new BXRestNavvyTelephony();
69
+ this.vote = new BXRestNavvyVote();
70
+ this.imConnector = new BXRestNavvyImConnector();
71
+ this.entity = new BXRestNavvyEntity();
72
+ this.biConnector = new BXRestNavvyBiConnector();
73
+ this.voxImplant = new BXRestNavvyVoxImplant();
74
+ this.mail = new BXRestNavvyMail();
75
+ this.note = new BXRestNavvyNote();
76
+ this.documentGenerator = new BXRestNavvyDocumentGenerator();
77
+ this.imBot = new BXRestNavvyImBot();
78
+ this.booking = new BXRestNavvyBooking();
79
+ this.imOpenLines = new BXRestNavvyImOpenLines();
80
+ this.landing = new BXRestNavvyLanding();
81
+ this.catalog = new BXRestNavvyCatalog();
82
+ this.sale = new BXRestNavvySale();
83
+ this.sign = new BXRestNavvySign();
84
+ this.eventLog = new BXRestNavvyEventLog();
85
+ this.placement = new BXRestNavvyPlacement();
86
+ this.userFieldType = new BXRestNavvyUserFieldType();
87
+ this.user = new BXRestNavvyUser();
88
+ this.lists = new BXRestNavvyLists();
89
+ this.task = new BXRestNavvyTask();
90
+ this.tasks = new BXRestNavvyTasks();
91
+ this.disk = new BXRestNavvyDisk();
92
+ this.bizProc = new BXRestNavvyBizProc();
93
+ this.log = new BXRestNavvyLog();
94
+ this.calendar = new BXRestNavvyCalendar();
95
+ this.sonet_group = new BXRestNavvySonetGroup();
96
+ this.server = new BXRestNavvyServer();
97
+ this.department = new BXRestNavvyDepartment();
98
+ this.im = new BXRestNavvyIm();
99
+ this.app = new BXRestNavvyApp();
100
+ this.timeMan = new BXRestNavvyTimeMan();
101
+ this.socialNetWork = new BXRestNavvySocialNetWork();
102
+ this.pull = new BXRestNavvyPull();
103
+ this.crm = new BXRestNavvyCrm();
104
+ this.event = new BXRestNavvyEvent();
105
+ this.method = new BXRestNavvyMethod();
106
+ this.access = new BXRestNavvyAccess();
107
+ this.feature = new BXRestNavvyFeature();
108
+ this.Navvy = new Navvy();
109
+ }
110
+ finally {
111
+ restoreContext(previous);
112
+ }
111
113
  }
112
114
  /**
113
115
  * Возвращает базовую информацию о текущем пользователе без scope `user`.
@@ -132,4 +134,4 @@ export class BXRestNavvy {
132
134
  return this.Navvy.simple(['methods']);
133
135
  }
134
136
  }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXN0L25hdnZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVB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TWFwIH0gZnJvbSAnLi4vbWFwL3Jlc3QnXHJcbmltcG9ydCB7IE5hdnZ5IH0gZnJvbSAnLi4vc2VydmljZXMvbmF2dnknXHJcblxyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXIgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5TGlzdHMgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xpc3RzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2sgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3Rhc2snXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3MgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3Rhc2tzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eURpc2sgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2Rpc2snXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Qml6UHJvYyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYml6cHJvYydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlMb2cgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xvZydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDYWxlbmRhciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvY2FsZW5kYXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5U29uZXRHcm91cCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvc29uZXRfZ3JvdXAnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5U2VydmVyIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zZXJ2ZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RGVwYXJ0bWVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZGVwYXJ0bWVudCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlJbSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvaW0nXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5QXBwIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9hcHAnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGltZU1hbiB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGltZW1hbidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTb2NpYWxOZXRXb3JrIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zb2NpYWxuZXR3b3JrJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVB1bGwgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3B1bGwnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNybSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvY3JtJ1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZXZlbnQnXG5pbXBvcnQgeyBpQlhSZXN0UHJvZmlsZSwgaUJYUmVzdFByb2ZpbGVIdHRwIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvcHJvZmlsZSdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5TWV0aG9kIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9tZXRob2QnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUFjY2VzcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYWNjZXNzJ1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlGZWF0dXJlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9mZWF0dXJlJ1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlBaSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYWkvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9tYWlsc2VydmljZSdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5TWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L21lc3NhZ2VzZXJ2aWNlL2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlVc2VyQ29uc2VudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdXNlcmNvbnNlbnQvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRlbGVwaG9ueSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGVsZXBob255L2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlWb3RlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS92b3RlL2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlJbUNvbm5lY3RvciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvaW1jb25uZWN0b3IvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUVudGl0eSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZW50aXR5L2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlCaUNvbm5lY3RvciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYmljb25uZWN0b3IvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVZveEltcGxhbnQgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3ZveGltcGxhbnQvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWwgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L21haWwvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU5vdGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L25vdGUvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eURvY3VtZW50R2VuZXJhdG9yIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9kb2N1bWVudGdlbmVyYXRvci9pbmRleCdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1Cb3QgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltYm90L2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlCb29raW5nIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9ib29raW5nL2luZGV4J1xuaW1wb3J0IHsgQlhSZXN0TmF2dnlJbU9wZW5MaW5lcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvaW1vcGVubGluZXMvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUxhbmRpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xhbmRpbmcvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNhdGFsb2cgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2NhdGFsb2cvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNhbGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NhbGUvaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNpZ24gfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NpZ24vaW5kZXgnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUV2ZW50TG9nIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9ldmVudGxvZy9pbmRleCdcbmltcG9ydCB7IEJYUmVzdE5hdnZ5UGxhY2VtZW50IH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9wbGFjZW1lbnQnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXJGaWVsZFR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXJmaWVsZHR5cGUnXG5pbXBvcnQgeyBpQlhSZXN0UGFyYW1TY29wZSB9IGZyb20gJy4uL3R5cGlmaWNhdGlvbi9yZXN0L2NvbW1vbidcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnkge1xuICBwdWJsaWMgcmVhZG9ubHkgYWkgPSBuZXcgQlhSZXN0TmF2dnlBaSgpXG4gIHB1YmxpYyByZWFkb25seSBtYWlsU2VydmljZSA9IG5ldyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlKClcbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlID0gbmV3IEJYUmVzdE5hdnZ5TWVzc2FnZVNlcnZpY2UoKVxuICBwdWJsaWMgcmVhZG9ubHkgdXNlckNvbnNlbnQgPSBuZXcgQlhSZXN0TmF2dnlVc2VyQ29uc2VudCgpXG4gIHB1YmxpYyByZWFkb25seSB0ZWxlcGhvbnkgPSBuZXcgQlhSZXN0TmF2dnlUZWxlcGhvbnkoKVxuICBwdWJsaWMgcmVhZG9ubHkgdm90ZSA9IG5ldyBCWFJlc3ROYXZ2eVZvdGUoKVxuICBwdWJsaWMgcmVhZG9ubHkgaW1Db25uZWN0b3IgPSBuZXcgQlhSZXN0TmF2dnlJbUNvbm5lY3RvcigpXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdHkgPSBuZXcgQlhSZXN0TmF2dnlFbnRpdHkoKVxuICBwdWJsaWMgcmVhZG9ubHkgYmlDb25uZWN0b3IgPSBuZXcgQlhSZXN0TmF2dnlCaUNvbm5lY3RvcigpXG4gIHB1YmxpYyByZWFkb25seSB2b3hJbXBsYW50ID0gbmV3IEJYUmVzdE5hdnZ5Vm94SW1wbGFudCgpXG4gIHB1YmxpYyByZWFkb25seSBtYWlsID0gbmV3IEJYUmVzdE5hdnZ5TWFpbCgpXG4gIHB1YmxpYyByZWFkb25seSBub3RlID0gbmV3IEJYUmVzdE5hdnZ5Tm90ZSgpXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEdlbmVyYXRvciA9IG5ldyBCWFJlc3ROYXZ2eURvY3VtZW50R2VuZXJhdG9yKClcbiAgcHVibGljIHJlYWRvbmx5IGltQm90ID0gbmV3IEJYUmVzdE5hdnZ5SW1Cb3QoKVxuICBwdWJsaWMgcmVhZG9ubHkgYm9va2luZyA9IG5ldyBCWFJlc3ROYXZ2eUJvb2tpbmcoKVxuICBwdWJsaWMgcmVhZG9ubHkgaW1PcGVuTGluZXMgPSBuZXcgQlhSZXN0TmF2dnlJbU9wZW5MaW5lcygpXG4gIHB1YmxpYyByZWFkb25seSBsYW5kaW5nID0gbmV3IEJYUmVzdE5hdnZ5TGFuZGluZygpXG4gIHB1YmxpYyByZWFkb25seSBjYXRhbG9nID0gbmV3IEJYUmVzdE5hdnZ5Q2F0YWxvZygpXG4gIHB1YmxpYyByZWFkb25seSBzYWxlID0gbmV3IEJYUmVzdE5hdnZ5U2FsZSgpXG4gIHB1YmxpYyByZWFkb25seSBzaWduID0gbmV3IEJYUmVzdE5hdnZ5U2lnbigpXG4gIHB1YmxpYyByZWFkb25seSBldmVudExvZyA9IG5ldyBCWFJlc3ROYXZ2eUV2ZW50TG9nKClcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudCA9IG5ldyBCWFJlc3ROYXZ2eVBsYWNlbWVudCgpXG4gIHB1YmxpYyByZWFkb25seSB1c2VyRmllbGRUeXBlID0gbmV3IEJYUmVzdE5hdnZ5VXNlckZpZWxkVHlwZSgpXG4gIHB1YmxpYyByZWFkb25seSB1c2VyID0gbmV3IEJYUmVzdE5hdnZ5VXNlcigpXHJcbiAgcHVibGljIHJlYWRvbmx5IGxpc3RzID0gbmV3IEJYUmVzdE5hdnZ5TGlzdHMoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0YXNrID0gbmV3IEJYUmVzdE5hdnZ5VGFzaygpXHJcbiAgcHVibGljIHJlYWRvbmx5IHRhc2tzID0gbmV3IEJYUmVzdE5hdnZ5VGFza3MoKVxyXG4gIHB1YmxpYyByZWFkb25seSBkaXNrID0gbmV3IEJYUmVzdE5hdnZ5RGlzaygpXHJcbiAgcHVibGljIHJlYWRvbmx5IGJpelByb2MgPSBuZXcgQlhSZXN0TmF2dnlCaXpQcm9jKClcclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nID0gbmV3IEJYUmVzdE5hdnZ5TG9nKClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FsZW5kYXIgPSBuZXcgQlhSZXN0TmF2dnlDYWxlbmRhcigpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNvbmV0X2dyb3VwID0gbmV3IEJYUmVzdE5hdnZ5U29uZXRHcm91cCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlciA9IG5ldyBCWFJlc3ROYXZ2eVNlcnZlcigpXHJcbiAgcHVibGljIHJlYWRvbmx5IGRlcGFydG1lbnQgPSBuZXcgQlhSZXN0TmF2dnlEZXBhcnRtZW50KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaW0gPSBuZXcgQlhSZXN0TmF2dnlJbSgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGFwcCA9IG5ldyBCWFJlc3ROYXZ2eUFwcCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbWVNYW4gPSBuZXcgQlhSZXN0TmF2dnlUaW1lTWFuKClcclxuICBwdWJsaWMgcmVhZG9ubHkgc29jaWFsTmV0V29yayA9IG5ldyBCWFJlc3ROYXZ2eVNvY2lhbE5ldFdvcmsoKVxyXG4gIHB1YmxpYyByZWFkb25seSBwdWxsID0gbmV3IEJYUmVzdE5hdnZ5UHVsbCgpXG4gIHB1YmxpYyByZWFkb25seSBjcm0gPSBuZXcgQlhSZXN0TmF2dnlDcm0oKVxuICAvKiog0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvtCx0YDQsNCx0L7RgtGH0LjQutC+0LIg0Lgg0YDQsNCx0L7RgtCwINGBINC+0L3Qu9Cw0LnQvS0g0Lgg0L7RhNC70LDQudC9LdGB0L7QsdGL0YLQuNGP0LzQuC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50ID0gbmV3IEJYUmVzdE5hdnZ5RXZlbnQoKVxuICAvKiog0J/RgNC+0LLQtdGA0LrQsCDRgdGD0YnQtdGB0YLQstC+0LLQsNC90LjRjyDQuCDQtNC+0YHRgtGD0L/QvdC+0YHRgtC4IFJFU1Qt0LzQtdGC0L7QtNC+0LIuICovXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2QgPSBuZXcgQlhSZXN0TmF2dnlNZXRob2QoKVxuICAvKiog0J/QvtC70YPRh9C10L3QuNC1INC+0L/QuNGB0LDQvdC40Lkg0LrQvtC00L7QsiDQtNC+0YHRgtGD0L/QsC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VzcyA9IG5ldyBCWFJlc3ROYXZ2eUFjY2VzcygpXG4gIC8qKiDQn9GA0L7QstC10YDQutCwINC00L7RgdGC0YPQv9C90L7RgdGC0Lgg0LLQvtC30LzQvtC20L3QvtGB0YLQtdC5INC/0L7RgNGC0LDQu9CwLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmVhdHVyZSA9IG5ldyBCWFJlc3ROYXZ2eUZlYXR1cmUoKVxuICBwdWJsaWMgcmVhZG9ubHkgTmF2dnkgPSBuZXcgTmF2dnkoKVxuXG4gIC8qKlxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQsdCw0LfQvtCy0YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUg0LHQtdC3IHNjb3BlIGB1c2VyYC5cbiAgICpcbiAgICog0KDQtdC30YPQu9GM0YLQsNGCINGB0L7QtNC10YDQttC40YIg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAsINC40LzRjywg0YTQsNC80LjQu9C40Y4sINC/0YDQuNC30L3QsNC6INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAsXG4gICAqINC/0L7Quywg0YfQsNGB0L7QstC+0Lkg0L/QvtGP0YEg0Lgg0YHQstGP0LfQsNC90L3Ri9C1INC/0L7Qu9GPINC/0YDQvtGE0LjQu9GPLlxuICAgKi9cbiAgcHVibGljIHByb2ZpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPGlCWFJlc3RQcm9maWxlSHR0cCwgaUJYUmVzdFByb2ZpbGU+KFxuICAgICAgWydwcm9maWxlJ10sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBCWFJlc3RNYXAucHJvZmlsZVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDRgtC10LrRg9GJ0LXQs9C+INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgKlxuICAgKiDQn9C10YDQtdC00LDQudGC0LUgYHsgZnVsbDogdHJ1ZSB9YCwg0YfRgtC+0LHRiyDQt9Cw0L/RgNC+0YHQuNGC0Ywg0L/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiDRgNCw0LfRgNC10YjQtdC90LjQuVxuICAgKiDQv9C+0YDRgtCw0LvQsC4g0JHQtdC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINCy0L7Qt9Cy0YDQsNGJ0LDRjtGC0YHRjyDRgNCw0LfRgNC10YjQtdC90LjRjywg0LTQvtGB0YLRg9C/0L3Ri9C1INC/0YDQuNC70L7QttC10L3QuNGOLlxuICAgKi9cbiAgcHVibGljIHNjb3BlKHBhcmFtOiBpQlhSZXN0UGFyYW1TY29wZSA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPHN0cmluZ1tdLCBzdHJpbmdbXSwgaUJYUmVzdFBhcmFtU2NvcGU+KFxuICAgICAgWydzY29wZSddLFxuICAgICAgcGFyYW1cbiAgICApXG4gIH1cblxuICAvKiog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6IFJFU1Qt0LzQtdGC0L7QtNC+0LIsINC00L7RgdGC0YPQv9C90YvRhSDRgtC10LrRg9GJ0LXQvNGDINC/0YDQuNC70L7QttC10L3QuNGOLiAqL1xuICBwdWJsaWMgbWV0aG9kcygpIHtcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8c3RyaW5nW10+KFsnbWV0aG9kcyddKVxuICB9XG5cbiAgLy8gcHVibGljIGJhdGNoPFQsIEMsIE0+KHBhcmFtOiBpQlhSZXN0TmF2dnlQYXJhbUJhdGNoPFQsIEMsIE0+KSB7XG4gIC8vICAgY29uc3QgbW9kaWZpZWRPYmplY3QgPSBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgLy8gICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtLmNtZCkubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAvLyAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IHZhbHVlLnJlc3VsdFZhbmlsbGEuYXJndW1lbnRzXHJcbiAgLy8gICAgICAgcmV0dXJuIFtrZXksIG1vZGlmaWVkVmFsdWVdXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICApXHJcbiAgLy9cclxuICAvLyAgIHJldHVybiB0aGlzLkJYUmVzdC5iYXRjaCh7XHJcbiAgLy8gICAgIGhhbHQ6IHBhcmFtLmhhbHQsXHJcbiAgLy8gICAgIGNtZDogbW9kaWZpZWRPYmplY3RcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG59XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXN0L25hdnZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVB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aUJBQWlCLEVBQUUsQ0FBQTtZQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQTtZQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7UUFDMUIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxTQUFTLENBQUMsRUFDWCxTQUFTLEVBQ1QsU0FBUyxDQUFDLE9BQU8sQ0FDbEIsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxRQUEyQixFQUFFO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLENBQUMsT0FBTyxDQUFDLEVBQ1QsS0FBSyxDQUNOLENBQUE7SUFDSCxDQUFDO0lBRUQscUVBQXFFO0lBQzlELE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0NBZUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCWFJlc3RNYXAgfSBmcm9tICcuLi9tYXAvcmVzdCdcclxuaW1wb3J0IHsgTmF2dnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZ2eSdcclxuXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VXNlciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdXNlcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlMaXN0cyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbGlzdHMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFzayB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGFzaydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGFza3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RGlzayB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZGlzaydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlCaXpQcm9jIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9iaXpwcm9jJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUxvZyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbG9nJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNhbGVuZGFyIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9jYWxlbmRhcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTb25ldEdyb3VwIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zb25ldF9ncm91cCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTZXJ2ZXIgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NlcnZlcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlEZXBhcnRtZW50IH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9kZXBhcnRtZW50J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUltIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9pbSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlBcHAgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2FwcCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUaW1lTWFuIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS90aW1lbWFuJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNvY2lhbE5ldFdvcmsgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NvY2lhbG5ldHdvcmsnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5UHVsbCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvcHVsbCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm0gfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2NybSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZXZlbnQnXHJcbmltcG9ydCB7IGlCWFJlc3RQcm9maWxlLCBpQlhSZXN0UHJvZmlsZUh0dHAgfSBmcm9tICcuLi90eXBpZmljYXRpb24vcmVzdC9wcm9maWxlJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1ldGhvZCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbWV0aG9kJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUFjY2VzcyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvYWNjZXNzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUZlYXR1cmUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ZlYXR1cmUnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5QWkgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2FpL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9tYWlsc2VydmljZSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbWVzc2FnZXNlcnZpY2UvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VXNlckNvbnNlbnQgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXJjb25zZW50L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRlbGVwaG9ueSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvdGVsZXBob255L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVZvdGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3ZvdGUvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1Db25uZWN0b3IgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltY29ubmVjdG9yL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUVudGl0eSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZW50aXR5L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUJpQ29ubmVjdG9yIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9iaWNvbm5lY3Rvci9pbmRleCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlWb3hJbXBsYW50IH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS92b3hpbXBsYW50L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eU1haWwgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L21haWwvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Tm90ZSB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvbm90ZS9pbmRleCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlEb2N1bWVudEdlbmVyYXRvciB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvZG9jdW1lbnRnZW5lcmF0b3IvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1Cb3QgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltYm90L2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUJvb2tpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2Jvb2tpbmcvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5SW1PcGVuTGluZXMgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2ltb3BlbmxpbmVzL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUxhbmRpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2xhbmRpbmcvaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q2F0YWxvZyB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvY2F0YWxvZy9pbmRleCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlTYWxlIH0gZnJvbSAnLi4vcmVxdWVzdC1uYXZ2eS9zYWxlL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVNpZ24gfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3NpZ24vaW5kZXgnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RXZlbnRMb2cgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L2V2ZW50bG9nL2luZGV4J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVBsYWNlbWVudCB9IGZyb20gJy4uL3JlcXVlc3QtbmF2dnkvcGxhY2VtZW50J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXJGaWVsZFR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0LW5hdnZ5L3VzZXJmaWVsZHR5cGUnXHJcbmltcG9ydCB7IGlCWFJlc3RQYXJhbVNjb3BlIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvY29tbW9uJ1xyXG5pbXBvcnQgeyBpQlhSZXN0U2V0dGluZ3MgfSBmcm9tICcuLi90eXBpZmljYXRpb24vc2V0dGluZ3MnXHJcbmltcG9ydCB7IEJYUmVzdENvbnRleHQsIGVudGVyQ29udGV4dCwgZ2xvYmFsQ29udGV4dCwgcmVzdG9yZUNvbnRleHQgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb250ZXh0J1xyXG5cclxuZXhwb3J0IGNsYXNzIEJYUmVzdE5hdnZ5IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgYWk6IEJYUmVzdE5hdnZ5QWlcclxuICBwdWJsaWMgcmVhZG9ubHkgbWFpbFNlcnZpY2U6IEJYUmVzdE5hdnZ5TWFpbFNlcnZpY2VcclxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IEJYUmVzdE5hdnZ5TWVzc2FnZVNlcnZpY2VcclxuICBwdWJsaWMgcmVhZG9ubHkgdXNlckNvbnNlbnQ6IEJYUmVzdE5hdnZ5VXNlckNvbnNlbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgdGVsZXBob255OiBCWFJlc3ROYXZ2eVRlbGVwaG9ueVxyXG4gIHB1YmxpYyByZWFkb25seSB2b3RlOiBCWFJlc3ROYXZ2eVZvdGVcclxuICBwdWJsaWMgcmVhZG9ubHkgaW1Db25uZWN0b3I6IEJYUmVzdE5hdnZ5SW1Db25uZWN0b3JcclxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5OiBCWFJlc3ROYXZ2eUVudGl0eVxyXG4gIHB1YmxpYyByZWFkb25seSBiaUNvbm5lY3RvcjogQlhSZXN0TmF2dnlCaUNvbm5lY3RvclxyXG4gIHB1YmxpYyByZWFkb25seSB2b3hJbXBsYW50OiBCWFJlc3ROYXZ2eVZveEltcGxhbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgbWFpbDogQlhSZXN0TmF2dnlNYWlsXHJcbiAgcHVibGljIHJlYWRvbmx5IG5vdGU6IEJYUmVzdE5hdnZ5Tm90ZVxyXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEdlbmVyYXRvcjogQlhSZXN0TmF2dnlEb2N1bWVudEdlbmVyYXRvclxyXG4gIHB1YmxpYyByZWFkb25seSBpbUJvdDogQlhSZXN0TmF2dnlJbUJvdFxyXG4gIHB1YmxpYyByZWFkb25seSBib29raW5nOiBCWFJlc3ROYXZ2eUJvb2tpbmdcclxuICBwdWJsaWMgcmVhZG9ubHkgaW1PcGVuTGluZXM6IEJYUmVzdE5hdnZ5SW1PcGVuTGluZXNcclxuICBwdWJsaWMgcmVhZG9ubHkgbGFuZGluZzogQlhSZXN0TmF2dnlMYW5kaW5nXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2c6IEJYUmVzdE5hdnZ5Q2F0YWxvZ1xyXG4gIHB1YmxpYyByZWFkb25seSBzYWxlOiBCWFJlc3ROYXZ2eVNhbGVcclxuICBwdWJsaWMgcmVhZG9ubHkgc2lnbjogQlhSZXN0TmF2dnlTaWduXHJcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50TG9nOiBCWFJlc3ROYXZ2eUV2ZW50TG9nXHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudDogQlhSZXN0TmF2dnlQbGFjZW1lbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgdXNlckZpZWxkVHlwZTogQlhSZXN0TmF2dnlVc2VyRmllbGRUeXBlXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXI6IEJYUmVzdE5hdnZ5VXNlclxyXG4gIHB1YmxpYyByZWFkb25seSBsaXN0czogQlhSZXN0TmF2dnlMaXN0c1xyXG4gIHB1YmxpYyByZWFkb25seSB0YXNrOiBCWFJlc3ROYXZ2eVRhc2tcclxuICBwdWJsaWMgcmVhZG9ubHkgdGFza3M6IEJYUmVzdE5hdnZ5VGFza3NcclxuICBwdWJsaWMgcmVhZG9ubHkgZGlzazogQlhSZXN0TmF2dnlEaXNrXHJcbiAgcHVibGljIHJlYWRvbmx5IGJpelByb2M6IEJYUmVzdE5hdnZ5Qml6UHJvY1xyXG4gIHB1YmxpYyByZWFkb25seSBsb2c6IEJYUmVzdE5hdnZ5TG9nXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbGVuZGFyOiBCWFJlc3ROYXZ2eUNhbGVuZGFyXHJcbiAgcHVibGljIHJlYWRvbmx5IHNvbmV0X2dyb3VwOiBCWFJlc3ROYXZ2eVNvbmV0R3JvdXBcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVyOiBCWFJlc3ROYXZ2eVNlcnZlclxyXG4gIHB1YmxpYyByZWFkb25seSBkZXBhcnRtZW50OiBCWFJlc3ROYXZ2eURlcGFydG1lbnRcclxuICBwdWJsaWMgcmVhZG9ubHkgaW06IEJYUmVzdE5hdnZ5SW1cclxuICBwdWJsaWMgcmVhZG9ubHkgYXBwOiBCWFJlc3ROYXZ2eUFwcFxyXG4gIHB1YmxpYyByZWFkb25seSB0aW1lTWFuOiBCWFJlc3ROYXZ2eVRpbWVNYW5cclxuICBwdWJsaWMgcmVhZG9ubHkgc29jaWFsTmV0V29yazogQlhSZXN0TmF2dnlTb2NpYWxOZXRXb3JrXHJcbiAgcHVibGljIHJlYWRvbmx5IHB1bGw6IEJYUmVzdE5hdnZ5UHVsbFxyXG4gIHB1YmxpYyByZWFkb25seSBjcm06IEJYUmVzdE5hdnZ5Q3JtXHJcbiAgLyoqINCg0LXQs9C40YHRgtGA0LDRhtC40Y8g0L7QsdGA0LDQsdC+0YLRh9C40LrQvtCyINC4INGA0LDQsdC+0YLQsCDRgSDQvtC90LvQsNC50L0tINC4INC+0YTQu9Cw0LnQvS3RgdC+0LHRi9GC0LjRj9C80LguICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50OiBCWFJlc3ROYXZ2eUV2ZW50XHJcbiAgLyoqINCf0YDQvtCy0LXRgNC60LAg0YHRg9GJ0LXRgdGC0LLQvtCy0LDQvdC40Y8g0Lgg0LTQvtGB0YLRg9C/0L3QvtGB0YLQuCBSRVNULdC80LXRgtC+0LTQvtCyLiAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2Q6IEJYUmVzdE5hdnZ5TWV0aG9kXHJcbiAgLyoqINCf0L7Qu9GD0YfQtdC90LjQtSDQvtC/0LjRgdCw0L3QuNC5INC60L7QtNC+0LIg0LTQvtGB0YLRg9C/0LAuICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGFjY2VzczogQlhSZXN0TmF2dnlBY2Nlc3NcclxuICAvKiog0J/RgNC+0LLQtdGA0LrQsCDQtNC+0YHRgtGD0L/QvdC+0YHRgtC4INCy0L7Qt9C80L7QttC90L7RgdGC0LXQuSDQv9C+0YDRgtCw0LvQsC4gKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgZmVhdHVyZTogQlhSZXN0TmF2dnlGZWF0dXJlXHJcbiAgcHVibGljIHJlYWRvbmx5IE5hdnZ5OiBOYXZ2eVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gc2V0dGluZ3Mg0KHQstC+0Lgg0L3QsNGB0YLRgNC+0LnQutC4INC60LvQuNC10L3RgtCwOiDQsNC00YDQtdGBINC/0L7RgNGC0LDQu9CwLCDRgdC/0L7RgdC+0LEg0LDQstGC0L7RgNC40LfQsNGG0LjQuCxcclxuICAgKiAgINC30LDQs9C+0LvQvtCy0LrQuC4g0JLRgdC1INC30LDQv9GA0L7RgdGLINGN0YLQvtCz0L4g0LrQu9C40LXQvdGC0LAg0LjQtNGD0YIg0YEg0L3QuNC80LgsINC00LDQttC1INC10YHQu9C4INCz0LvQvtCx0LDQu9GM0L3Ri9C1XHJcbiAgICogICBgQlhSZXN0U2V0dGluZ3NgINC/0L7Qt9C20LUg0LjQt9C80LXQvdGP0YLRgdGPLiDQotCw0Log0LIg0L7QtNC90L7QvCDQv9GA0L7RhtC10YHRgdC1INC80L7QttC90L4g0YDQsNCx0L7RgtCw0YLRjFxyXG4gICAqICAg0YEg0L3QtdGB0LrQvtC70YzQutC40LzQuCDQv9C+0YDRgtCw0LvQsNC80LguINCR0LXQtyDQsNGA0LPRg9C80LXQvdGC0LAg0LrQu9C40LXQvdGCINGA0LDQsdC+0YLQsNC10YIg0YEg0LPQu9C+0LHQsNC70YzQvdGL0LzQuFxyXG4gICAqICAgYEJYUmVzdFNldHRpbmdzYCwg0LrQsNC6INGA0LDQvdGM0YjQtS5cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihzZXR0aW5ncz86IGlCWFJlc3RTZXR0aW5ncykge1xyXG4gICAgLy8g0JrQsNC20LTRi9C5IEhUVFAt0L7QsdGK0LXQutGCINC30LDQv9C+0LzQuNC90LDQtdGCINC60L7QvdGC0LXQutGB0YIg0LIg0LzQvtC80LXQvdGCINGB0L7Qt9C00LDQvdC40Y8sINC/0L7RjdGC0L7QvNGDINCy0YHQtVxyXG4gICAgLy8g0YDQsNC30LTQtdC70Ysg0YHQvtC30LTQsNGO0YLRgdGPLCDQv9C+0LrQsCDQstC60LvRjtGH0ZHQvSDQutC+0L3RgtC10LrRgdGCINC60LvQuNC10L3RgtCwLiDQodC+0LfQtNCw0L3QuNC1INC40LTRkdGCINCyINGC0LXQu9C1XHJcbiAgICAvLyDQutC+0L3RgdGC0YDRg9C60YLQvtGA0LAsINCwINC90LUg0LIg0LjQvdC40YbQuNCw0LvQuNC30LDRgtC+0YDQsNGFINC/0L7Qu9C10Lk6INGC0L7Qu9GM0LrQviDRgtCw0LogZmluYWxseSDQstC10YDQvdGR0YJcclxuICAgIC8vINC/0YDQtdC20L3QuNC5INC60L7QvdGC0LXQutGB0YIsINC00LDQttC1INC10YHQu9C4INC60LDQutC+0Lkt0YLQviDRgNCw0LfQtNC10Lsg0LHRgNC+0YHQuNGCINC40YHQutC70Y7Rh9C10L3QuNC1LiDQmNC90LDRh9C1XHJcbiAgICAvLyDQvtCx0YrQtdC60YLRiywg0YHQvtC30LTQsNC90L3Ri9C1INC/0YDQuNC70L7QttC10L3QuNC10Lwg0L/QvtC30LbQtSwg0YPRiNC70Lgg0LHRiyDQvdCwINC/0L7RgNGC0LDQuyDRjdGC0L7Qs9C+INC60LvQuNC10L3RgtCwLlxyXG4gICAgY29uc3QgcHJldmlvdXMgPSBlbnRlckNvbnRleHQoc2V0dGluZ3MgPyBuZXcgQlhSZXN0Q29udGV4dChzZXR0aW5ncykgOiBnbG9iYWxDb250ZXh0KVxyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5haSA9IG5ldyBCWFJlc3ROYXZ2eUFpKClcclxuICAgICAgdGhpcy5tYWlsU2VydmljZSA9IG5ldyBCWFJlc3ROYXZ2eU1haWxTZXJ2aWNlKClcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZSA9IG5ldyBCWFJlc3ROYXZ2eU1lc3NhZ2VTZXJ2aWNlKClcclxuICAgICAgdGhpcy51c2VyQ29uc2VudCA9IG5ldyBCWFJlc3ROYXZ2eVVzZXJDb25zZW50KClcclxuICAgICAgdGhpcy50ZWxlcGhvbnkgPSBuZXcgQlhSZXN0TmF2dnlUZWxlcGhvbnkoKVxyXG4gICAgICB0aGlzLnZvdGUgPSBuZXcgQlhSZXN0TmF2dnlWb3RlKClcclxuICAgICAgdGhpcy5pbUNvbm5lY3RvciA9IG5ldyBCWFJlc3ROYXZ2eUltQ29ubmVjdG9yKClcclxuICAgICAgdGhpcy5lbnRpdHkgPSBuZXcgQlhSZXN0TmF2dnlFbnRpdHkoKVxyXG4gICAgICB0aGlzLmJpQ29ubmVjdG9yID0gbmV3IEJYUmVzdE5hdnZ5QmlDb25uZWN0b3IoKVxyXG4gICAgICB0aGlzLnZveEltcGxhbnQgPSBuZXcgQlhSZXN0TmF2dnlWb3hJbXBsYW50KClcclxuICAgICAgdGhpcy5tYWlsID0gbmV3IEJYUmVzdE5hdnZ5TWFpbCgpXHJcbiAgICAgIHRoaXMubm90ZSA9IG5ldyBCWFJlc3ROYXZ2eU5vdGUoKVxyXG4gICAgICB0aGlzLmRvY3VtZW50R2VuZXJhdG9yID0gbmV3IEJYUmVzdE5hdnZ5RG9jdW1lbnRHZW5lcmF0b3IoKVxyXG4gICAgICB0aGlzLmltQm90ID0gbmV3IEJYUmVzdE5hdnZ5SW1Cb3QoKVxyXG4gICAgICB0aGlzLmJvb2tpbmcgPSBuZXcgQlhSZXN0TmF2dnlCb29raW5nKClcclxuICAgICAgdGhpcy5pbU9wZW5MaW5lcyA9IG5ldyBCWFJlc3ROYXZ2eUltT3BlbkxpbmVzKClcclxuICAgICAgdGhpcy5sYW5kaW5nID0gbmV3IEJYUmVzdE5hdnZ5TGFuZGluZygpXHJcbiAgICAgIHRoaXMuY2F0YWxvZyA9IG5ldyBCWFJlc3ROYXZ2eUNhdGFsb2coKVxyXG4gICAgICB0aGlzLnNhbGUgPSBuZXcgQlhSZXN0TmF2dnlTYWxlKClcclxuICAgICAgdGhpcy5zaWduID0gbmV3IEJYUmVzdE5hdnZ5U2lnbigpXHJcbiAgICAgIHRoaXMuZXZlbnRMb2cgPSBuZXcgQlhSZXN0TmF2dnlFdmVudExvZygpXHJcbiAgICAgIHRoaXMucGxhY2VtZW50ID0gbmV3IEJYUmVzdE5hdnZ5UGxhY2VtZW50KClcclxuICAgICAgdGhpcy51c2VyRmllbGRUeXBlID0gbmV3IEJYUmVzdE5hdnZ5VXNlckZpZWxkVHlwZSgpXHJcbiAgICAgIHRoaXMudXNlciA9IG5ldyBCWFJlc3ROYXZ2eVVzZXIoKVxyXG4gICAgICB0aGlzLmxpc3RzID0gbmV3IEJYUmVzdE5hdnZ5TGlzdHMoKVxyXG4gICAgICB0aGlzLnRhc2sgPSBuZXcgQlhSZXN0TmF2dnlUYXNrKClcclxuICAgICAgdGhpcy50YXNrcyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzKClcclxuICAgICAgdGhpcy5kaXNrID0gbmV3IEJYUmVzdE5hdnZ5RGlzaygpXHJcbiAgICAgIHRoaXMuYml6UHJvYyA9IG5ldyBCWFJlc3ROYXZ2eUJpelByb2MoKVxyXG4gICAgICB0aGlzLmxvZyA9IG5ldyBCWFJlc3ROYXZ2eUxvZygpXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSBuZXcgQlhSZXN0TmF2dnlDYWxlbmRhcigpXHJcbiAgICAgIHRoaXMuc29uZXRfZ3JvdXAgPSBuZXcgQlhSZXN0TmF2dnlTb25ldEdyb3VwKClcclxuICAgICAgdGhpcy5zZXJ2ZXIgPSBuZXcgQlhSZXN0TmF2dnlTZXJ2ZXIoKVxyXG4gICAgICB0aGlzLmRlcGFydG1lbnQgPSBuZXcgQlhSZXN0TmF2dnlEZXBhcnRtZW50KClcclxuICAgICAgdGhpcy5pbSA9IG5ldyBCWFJlc3ROYXZ2eUltKClcclxuICAgICAgdGhpcy5hcHAgPSBuZXcgQlhSZXN0TmF2dnlBcHAoKVxyXG4gICAgICB0aGlzLnRpbWVNYW4gPSBuZXcgQlhSZXN0TmF2dnlUaW1lTWFuKClcclxuICAgICAgdGhpcy5zb2NpYWxOZXRXb3JrID0gbmV3IEJYUmVzdE5hdnZ5U29jaWFsTmV0V29yaygpXHJcbiAgICAgIHRoaXMucHVsbCA9IG5ldyBCWFJlc3ROYXZ2eVB1bGwoKVxyXG4gICAgICB0aGlzLmNybSA9IG5ldyBCWFJlc3ROYXZ2eUNybSgpXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgQlhSZXN0TmF2dnlFdmVudCgpXHJcbiAgICAgIHRoaXMubWV0aG9kID0gbmV3IEJYUmVzdE5hdnZ5TWV0aG9kKClcclxuICAgICAgdGhpcy5hY2Nlc3MgPSBuZXcgQlhSZXN0TmF2dnlBY2Nlc3MoKVxyXG4gICAgICB0aGlzLmZlYXR1cmUgPSBuZXcgQlhSZXN0TmF2dnlGZWF0dXJlKClcclxuICAgICAgdGhpcy5OYXZ2eSA9IG5ldyBOYXZ2eSgpXHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICByZXN0b3JlQ29udGV4dChwcmV2aW91cylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINCx0LDQt9C+0LLRg9GOINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtSDQsdC10Lcgc2NvcGUgYHVzZXJgLlxyXG4gICAqXHJcbiAgICog0KDQtdC30YPQu9GM0YLQsNGCINGB0L7QtNC10YDQttC40YIg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAsINC40LzRjywg0YTQsNC80LjQu9C40Y4sINC/0YDQuNC30L3QsNC6INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAsXHJcbiAgICog0L/QvtC7LCDRh9Cw0YHQvtCy0L7QuSDQv9C+0Y/RgSDQuCDRgdCy0Y/Qt9Cw0L3QvdGL0LUg0L/QvtC70Y8g0L/RgNC+0YTQuNC70Y8uXHJcbiAgICovXHJcbiAgcHVibGljIHByb2ZpbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8aUJYUmVzdFByb2ZpbGVIdHRwLCBpQlhSZXN0UHJvZmlsZT4oXHJcbiAgICAgIFsncHJvZmlsZSddLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIEJYUmVzdE1hcC5wcm9maWxlXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDRgtC10LrRg9GJ0LXQs9C+INC/0YDQuNC70L7QttC10L3QuNGPLlxyXG4gICAqXHJcbiAgICog0J/QtdGA0LXQtNCw0LnRgtC1IGB7IGZ1bGw6IHRydWUgfWAsINGH0YLQvtCx0Ysg0LfQsNC/0YDQvtGB0LjRgtGMINC/0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0YDQsNC30YDQtdGI0LXQvdC40LlcclxuICAgKiDQv9C+0YDRgtCw0LvQsC4g0JHQtdC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINCy0L7Qt9Cy0YDQsNGJ0LDRjtGC0YHRjyDRgNCw0LfRgNC10YjQtdC90LjRjywg0LTQvtGB0YLRg9C/0L3Ri9C1INC/0YDQuNC70L7QttC10L3QuNGOLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzY29wZShwYXJhbTogaUJYUmVzdFBhcmFtU2NvcGUgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPHN0cmluZ1tdLCBzdHJpbmdbXSwgaUJYUmVzdFBhcmFtU2NvcGU+KFxyXG4gICAgICBbJ3Njb3BlJ10sXHJcbiAgICAgIHBhcmFtXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKiog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6IFJFU1Qt0LzQtdGC0L7QtNC+0LIsINC00L7RgdGC0YPQv9C90YvRhSDRgtC10LrRg9GJ0LXQvNGDINC/0YDQuNC70L7QttC10L3QuNGOLiAqL1xyXG4gIHB1YmxpYyBtZXRob2RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPHN0cmluZ1tdPihbJ21ldGhvZHMnXSlcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBiYXRjaDxULCBDLCBNPihwYXJhbTogaUJYUmVzdE5hdnZ5UGFyYW1CYXRjaDxULCBDLCBNPikge1xyXG4gIC8vICAgY29uc3QgbW9kaWZpZWRPYmplY3QgPSBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgLy8gICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtLmNtZCkubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAvLyAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IHZhbHVlLnJlc3VsdFZhbmlsbGEuYXJndW1lbnRzXHJcbiAgLy8gICAgICAgcmV0dXJuIFtrZXksIG1vZGlmaWVkVmFsdWVdXHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICApXHJcbiAgLy9cclxuICAvLyAgIHJldHVybiB0aGlzLkJYUmVzdC5iYXRjaCh7XHJcbiAgLy8gICAgIGhhbHQ6IHBhcmFtLmhhbHQsXHJcbiAgLy8gICAgIGNtZDogbW9kaWZpZWRPYmplY3RcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==