@gitpod/gitpod-protocol 0.1.5-server-vscode-ouath2.17 → 0.1.5-server-vscode-oauth2.14

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 (330) hide show
  1. package/data/gitpod-schema.json +49 -4
  2. package/lib/accounting-protocol.d.ts +10 -11
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +31 -41
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +20 -2
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +2 -13
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +12 -1
  11. package/lib/analytics.d.ts.map +1 -1
  12. package/lib/analytics.js.map +1 -1
  13. package/lib/auth.d.ts.map +1 -1
  14. package/lib/context-url.d.ts +18 -5
  15. package/lib/context-url.d.ts.map +1 -1
  16. package/lib/context-url.js +63 -10
  17. package/lib/context-url.js.map +1 -1
  18. package/lib/context-url.spec.d.ts +2 -0
  19. package/lib/context-url.spec.d.ts.map +1 -1
  20. package/lib/context-url.spec.js +81 -48
  21. package/lib/context-url.spec.js.map +1 -1
  22. package/lib/email-protocol.d.ts +1 -1
  23. package/lib/email-protocol.d.ts.map +1 -1
  24. package/lib/email-protocol.js +4 -4
  25. package/lib/email-protocol.js.map +1 -1
  26. package/lib/encryption/container-module.d.ts.map +1 -1
  27. package/lib/encryption/container-module.js +4 -4
  28. package/lib/encryption/container-module.js.map +1 -1
  29. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  30. package/lib/encryption/encryption-engine.js +25 -26
  31. package/lib/encryption/encryption-engine.js.map +1 -1
  32. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  33. package/lib/encryption/encryption-engine.spec.js +29 -37
  34. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  35. package/lib/encryption/encryption-service.d.ts.map +1 -1
  36. package/lib/encryption/encryption-service.js +30 -44
  37. package/lib/encryption/encryption-service.js.map +1 -1
  38. package/lib/encryption/key-provider.d.ts.map +1 -1
  39. package/lib/encryption/key-provider.js +31 -38
  40. package/lib/encryption/key-provider.js.map +1 -1
  41. package/lib/env.d.ts +1 -2
  42. package/lib/env.d.ts.map +1 -1
  43. package/lib/env.js +17 -19
  44. package/lib/env.js.map +1 -1
  45. package/lib/gitpod-file-parser.d.ts.map +1 -1
  46. package/lib/gitpod-file-parser.js +26 -42
  47. package/lib/gitpod-file-parser.js.map +1 -1
  48. package/lib/gitpod-file-parser.spec.js +145 -142
  49. package/lib/gitpod-file-parser.spec.js.map +1 -1
  50. package/lib/gitpod-service.d.ts +67 -31
  51. package/lib/gitpod-service.d.ts.map +1 -1
  52. package/lib/gitpod-service.js +162 -309
  53. package/lib/gitpod-service.js.map +1 -1
  54. package/lib/headless-workspace-log.d.ts +1 -0
  55. package/lib/headless-workspace-log.d.ts.map +1 -1
  56. package/lib/headless-workspace-log.js +2 -1
  57. package/lib/headless-workspace-log.js.map +1 -1
  58. package/lib/ide-frontend-service.d.ts +1 -1
  59. package/lib/ide-protocol.d.ts +105 -0
  60. package/lib/ide-protocol.d.ts.map +1 -0
  61. package/lib/ide-protocol.js +8 -0
  62. package/lib/ide-protocol.js.map +1 -0
  63. package/lib/index.d.ts +16 -13
  64. package/lib/index.d.ts.map +1 -1
  65. package/lib/index.js +3 -0
  66. package/lib/index.js.map +1 -1
  67. package/lib/installation-admin-protocol.d.ts +27 -0
  68. package/lib/installation-admin-protocol.d.ts.map +1 -0
  69. package/lib/installation-admin-protocol.js +30 -0
  70. package/lib/installation-admin-protocol.js.map +1 -0
  71. package/lib/license-protocol.d.ts.map +1 -1
  72. package/lib/license-protocol.js.map +1 -1
  73. package/lib/messaging/browser/connection.d.ts +3 -3
  74. package/lib/messaging/browser/connection.d.ts.map +1 -1
  75. package/lib/messaging/browser/connection.js +173 -36
  76. package/lib/messaging/browser/connection.js.map +1 -1
  77. package/lib/messaging/browser/window-connection.d.ts +4 -4
  78. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  79. package/lib/messaging/browser/window-connection.js +42 -59
  80. package/lib/messaging/browser/window-connection.js.map +1 -1
  81. package/lib/messaging/client-call-metrics.d.ts +2 -2
  82. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  83. package/lib/messaging/client-call-metrics.js +37 -38
  84. package/lib/messaging/client-call-metrics.js.map +1 -1
  85. package/lib/messaging/error.d.ts +2 -1
  86. package/lib/messaging/error.d.ts.map +1 -1
  87. package/lib/messaging/error.js +4 -2
  88. package/lib/messaging/error.js.map +1 -1
  89. package/lib/messaging/handler.d.ts +10 -0
  90. package/lib/messaging/handler.d.ts.map +1 -1
  91. package/lib/messaging/handler.js +1 -1
  92. package/lib/messaging/node/connection.d.ts +1 -17
  93. package/lib/messaging/node/connection.d.ts.map +1 -1
  94. package/lib/messaging/node/connection.js +24 -60
  95. package/lib/messaging/node/connection.js.map +1 -1
  96. package/lib/messaging/proxy-factory.d.ts +3 -1
  97. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  98. package/lib/messaging/proxy-factory.js +74 -163
  99. package/lib/messaging/proxy-factory.js.map +1 -1
  100. package/lib/oss-allowlist.d.ts +14 -0
  101. package/lib/oss-allowlist.d.ts.map +1 -0
  102. package/lib/oss-allowlist.js +8 -0
  103. package/lib/oss-allowlist.js.map +1 -0
  104. package/lib/payment-protocol.d.ts.map +1 -1
  105. package/lib/payment-protocol.js +1 -1
  106. package/lib/payment-protocol.js.map +1 -1
  107. package/lib/permission.d.ts +9 -4
  108. package/lib/permission.d.ts.map +1 -1
  109. package/lib/permission.js +39 -31
  110. package/lib/permission.js.map +1 -1
  111. package/lib/plans.d.ts +4 -4
  112. package/lib/plans.d.ts.map +1 -1
  113. package/lib/plans.js +225 -209
  114. package/lib/plans.js.map +1 -1
  115. package/lib/protocol.d.ts +83 -78
  116. package/lib/protocol.d.ts.map +1 -1
  117. package/lib/protocol.js +131 -190
  118. package/lib/protocol.js.map +1 -1
  119. package/lib/snapshot-url.d.ts +14 -0
  120. package/lib/snapshot-url.d.ts.map +1 -0
  121. package/lib/snapshot-url.js +26 -0
  122. package/lib/snapshot-url.js.map +1 -0
  123. package/{src/theia-plugins.ts → lib/snapshot-url.spec.d.ts} +2 -6
  124. package/lib/snapshot-url.spec.d.ts.map +1 -0
  125. package/lib/snapshot-url.spec.js +41 -0
  126. package/lib/snapshot-url.spec.js.map +1 -0
  127. package/lib/team-subscription-protocol.d.ts +5 -3
  128. package/lib/team-subscription-protocol.d.ts.map +1 -1
  129. package/lib/team-subscription-protocol.js +17 -17
  130. package/lib/team-subscription-protocol.js.map +1 -1
  131. package/lib/teams-projects-protocol.d.ts +16 -3
  132. package/lib/teams-projects-protocol.d.ts.map +1 -1
  133. package/lib/teams-projects-protocol.js +11 -15
  134. package/lib/teams-projects-protocol.js.map +1 -1
  135. package/lib/typings/globals.d.ts +2 -2
  136. package/lib/typings/globals.d.ts.map +1 -1
  137. package/lib/util/analytics.d.ts.map +1 -1
  138. package/lib/util/analytics.js +44 -26
  139. package/lib/util/analytics.js.map +1 -1
  140. package/lib/util/async-iterator.d.ts.map +1 -1
  141. package/lib/util/async-iterator.js +57 -135
  142. package/lib/util/async-iterator.js.map +1 -1
  143. package/lib/util/cancelable.js +17 -59
  144. package/lib/util/cancelable.js.map +1 -1
  145. package/lib/util/date-time.js +11 -11
  146. package/lib/util/date-time.js.map +1 -1
  147. package/lib/util/deferred.js +10 -12
  148. package/lib/util/deferred.js.map +1 -1
  149. package/lib/util/disposable.d.ts.map +1 -1
  150. package/lib/util/disposable.js +27 -40
  151. package/lib/util/disposable.js.map +1 -1
  152. package/lib/util/event.d.ts.map +1 -1
  153. package/lib/util/event.js +63 -77
  154. package/lib/util/event.js.map +1 -1
  155. package/lib/util/garbage-collected-cache.d.ts +1 -0
  156. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  157. package/lib/util/garbage-collected-cache.js +27 -47
  158. package/lib/util/garbage-collected-cache.js.map +1 -1
  159. package/lib/util/generate-workspace-id.d.ts +1 -1
  160. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  161. package/lib/util/generate-workspace-id.js +460 -499
  162. package/lib/util/generate-workspace-id.js.map +1 -1
  163. package/lib/util/generate-workspace-id.spec.js +61 -78
  164. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  165. package/lib/util/gitpod-cookie.d.ts +20 -0
  166. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  167. package/lib/util/gitpod-cookie.js +41 -0
  168. package/lib/util/gitpod-cookie.js.map +1 -0
  169. package/lib/util/gitpod-host-url.d.ts +1 -1
  170. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  171. package/lib/util/gitpod-host-url.js +106 -114
  172. package/lib/util/gitpod-host-url.js.map +1 -1
  173. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  174. package/lib/util/gitpod-host-url.spec.js +97 -135
  175. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  176. package/lib/util/grpc.d.ts.map +1 -1
  177. package/lib/util/grpc.js +3 -3
  178. package/lib/util/grpc.js.map +1 -1
  179. package/lib/util/jaeger-client-types.d.ts +68 -0
  180. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  181. package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
  182. package/lib/util/jaeger-client-types.js.map +1 -0
  183. package/lib/util/logging.d.ts +33 -33
  184. package/lib/util/logging.d.ts.map +1 -1
  185. package/lib/util/logging.js +87 -129
  186. package/lib/util/logging.js.map +1 -1
  187. package/lib/util/make-link.js +5 -5
  188. package/lib/util/make-link.js.map +1 -1
  189. package/lib/util/parse-workspace-id.d.ts +10 -0
  190. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  191. package/lib/util/parse-workspace-id.js +30 -7
  192. package/lib/util/parse-workspace-id.js.map +1 -1
  193. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  194. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  195. package/lib/util/parse-workspace-id.spec.js +123 -84
  196. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  197. package/lib/util/queue.js +16 -55
  198. package/lib/util/queue.js.map +1 -1
  199. package/lib/util/queue.spec.js +147 -288
  200. package/lib/util/queue.spec.js.map +1 -1
  201. package/lib/util/repeat.d.ts +15 -0
  202. package/lib/util/repeat.d.ts.map +1 -0
  203. package/lib/util/repeat.js +55 -0
  204. package/lib/util/repeat.js.map +1 -0
  205. package/lib/util/semaphore.d.ts.map +1 -1
  206. package/lib/util/semaphore.js +15 -46
  207. package/lib/util/semaphore.js.map +1 -1
  208. package/lib/util/skip-if.d.ts.map +1 -1
  209. package/lib/util/skip-if.js +6 -6
  210. package/lib/util/skip-if.js.map +1 -1
  211. package/lib/util/timeutil.d.ts.map +1 -1
  212. package/lib/util/timeutil.js +16 -16
  213. package/lib/util/timeutil.js.map +1 -1
  214. package/lib/util/timeutil.spec.d.ts.map +1 -1
  215. package/lib/util/timeutil.spec.js +21 -24
  216. package/lib/util/timeutil.spec.js.map +1 -1
  217. package/lib/util/tracing.d.ts +52 -6
  218. package/lib/util/tracing.d.ts.map +1 -1
  219. package/lib/util/tracing.js +199 -64
  220. package/lib/util/tracing.js.map +1 -1
  221. package/lib/util/tracing.spec.d.ts +7 -0
  222. package/lib/util/tracing.spec.d.ts.map +1 -0
  223. package/lib/util/tracing.spec.js +121 -0
  224. package/lib/util/tracing.spec.js.map +1 -0
  225. package/lib/util/workspace-port-authentication.d.ts +7 -7
  226. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  227. package/lib/util/workspace-port-authentication.js +9 -12
  228. package/lib/util/workspace-port-authentication.js.map +1 -1
  229. package/lib/workspace-cluster.d.ts +15 -3
  230. package/lib/workspace-cluster.d.ts.map +1 -1
  231. package/lib/workspace-cluster.js +19 -4
  232. package/lib/workspace-cluster.js.map +1 -1
  233. package/lib/workspace-instance.d.ts +25 -4
  234. package/lib/workspace-instance.d.ts.map +1 -1
  235. package/lib/wsready.d.ts +1 -1
  236. package/lib/wsready.d.ts.map +1 -1
  237. package/lib/wsready.js +2 -2
  238. package/package.json +22 -13
  239. package/pkg-yarn.lock +12 -7
  240. package/provenance-bundle.jsonl +2 -0
  241. package/src/accounting-protocol.ts +53 -53
  242. package/src/admin-protocol.ts +43 -20
  243. package/src/analytics.ts +28 -15
  244. package/src/auth.ts +2 -2
  245. package/src/context-url.spec.ts +37 -9
  246. package/src/context-url.ts +94 -36
  247. package/src/email-protocol.ts +5 -6
  248. package/src/encryption/container-module.ts +2 -3
  249. package/src/encryption/encryption-engine.spec.ts +9 -8
  250. package/src/encryption/encryption-engine.ts +14 -14
  251. package/src/encryption/encryption-service.ts +4 -5
  252. package/src/encryption/key-provider.ts +16 -19
  253. package/src/env.ts +9 -10
  254. package/src/gitpod-file-parser.spec.ts +55 -61
  255. package/src/gitpod-file-parser.ts +16 -17
  256. package/src/gitpod-service.ts +174 -109
  257. package/src/headless-workspace-log.ts +6 -4
  258. package/src/ide-frontend-service.ts +2 -2
  259. package/src/ide-protocol.ts +119 -0
  260. package/src/index.ts +16 -13
  261. package/src/installation-admin-protocol.ts +42 -0
  262. package/src/license-protocol.ts +5 -6
  263. package/src/messaging/browser/connection.ts +185 -21
  264. package/src/messaging/browser/window-connection.ts +39 -29
  265. package/src/messaging/client-call-metrics.ts +70 -71
  266. package/src/messaging/error.ts +6 -5
  267. package/src/messaging/handler.ts +13 -1
  268. package/src/messaging/node/connection.ts +23 -70
  269. package/src/messaging/proxy-factory.ts +32 -33
  270. package/src/oss-allowlist.ts +15 -0
  271. package/src/payment-protocol.ts +2 -2
  272. package/src/permission.ts +40 -33
  273. package/src/plans.ts +236 -189
  274. package/src/protocol.ts +280 -277
  275. package/src/snapshot-url.spec.ts +27 -0
  276. package/src/snapshot-url.ts +27 -0
  277. package/src/team-subscription-protocol.ts +33 -23
  278. package/src/teams-projects-protocol.ts +27 -9
  279. package/src/typings/globals.ts +4 -4
  280. package/src/util/analytics.ts +56 -18
  281. package/src/util/async-iterator.ts +4 -5
  282. package/src/util/cancelable.ts +3 -3
  283. package/src/util/date-time.ts +8 -8
  284. package/src/util/deferred.ts +6 -6
  285. package/src/util/disposable.ts +3 -6
  286. package/src/util/event.ts +9 -11
  287. package/src/util/garbage-collected-cache.ts +9 -6
  288. package/src/util/generate-workspace-id.spec.ts +26 -6
  289. package/src/util/generate-workspace-id.ts +458 -440
  290. package/src/util/gitpod-cookie.ts +38 -0
  291. package/src/util/gitpod-host-url.spec.ts +40 -13
  292. package/src/util/gitpod-host-url.ts +41 -38
  293. package/src/util/grpc.ts +4 -4
  294. package/src/util/jaeger-client-types.ts +102 -0
  295. package/src/util/logging.ts +109 -86
  296. package/src/util/make-link.ts +6 -7
  297. package/src/util/parse-workspace-id.spec.ts +37 -8
  298. package/src/util/parse-workspace-id.ts +32 -7
  299. package/src/util/queue.spec.ts +27 -25
  300. package/src/util/repeat.ts +45 -0
  301. package/src/util/semaphore.ts +4 -6
  302. package/src/util/skip-if.ts +9 -6
  303. package/src/util/timeutil.spec.ts +14 -15
  304. package/src/util/timeutil.ts +15 -11
  305. package/src/util/tracing.spec.ts +88 -0
  306. package/src/util/tracing.ts +202 -31
  307. package/src/util/workspace-port-authentication.ts +10 -13
  308. package/src/workspace-cluster.ts +26 -8
  309. package/src/workspace-instance.ts +53 -23
  310. package/src/wsready.ts +3 -3
  311. package/data/builtin-theia-plugins.json +0 -372
  312. package/lib/messaging/connection-error-handler.d.ts +0 -27
  313. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  314. package/lib/messaging/connection-error-handler.js +0 -46
  315. package/lib/messaging/connection-error-handler.js.map +0 -1
  316. package/lib/theia-plugins.d.ts +0 -11
  317. package/lib/theia-plugins.d.ts.map +0 -1
  318. package/lib/theia-plugins.js.map +0 -1
  319. package/lib/util/repeater.d.ts +0 -22
  320. package/lib/util/repeater.d.ts.map +0 -1
  321. package/lib/util/repeater.js +0 -118
  322. package/lib/util/repeater.js.map +0 -1
  323. package/lib/util/safe-promise.d.ts +0 -11
  324. package/lib/util/safe-promise.d.ts.map +0 -1
  325. package/lib/util/safe-promise.js +0 -34
  326. package/lib/util/safe-promise.js.map +0 -1
  327. package/src/messaging/connection-error-handler.ts +0 -62
  328. package/src/util/jaeger-client.d.ts +0 -105
  329. package/src/util/repeater.ts +0 -49
  330. package/src/util/safe-promise.ts +0 -26
@@ -18,6 +18,10 @@ export interface WorkspaceInstance {
18
18
  status: WorkspaceInstanceStatus;
19
19
  configuration?: WorkspaceInstanceConfiguration;
20
20
  readonly deleted?: boolean;
21
+ /**
22
+ * Contains information about the image build, if there was any
23
+ */
24
+ imageBuildInfo?: ImageBuildInfo;
21
25
  }
22
26
  export interface WorkspaceInstanceStatus {
23
27
  phase: WorkspaceInstancePhase;
@@ -36,16 +40,16 @@ export interface WorkspaceInstanceConditions {
36
40
  failed?: string;
37
41
  timeout?: string;
38
42
  pullingImages?: boolean;
39
- serviceExists?: boolean;
40
43
  deployed?: boolean;
41
44
  neededImageBuild?: boolean;
42
45
  firstUserActivity?: string;
46
+ headlessTaskFailed?: string;
47
+ stoppedByRequest?: boolean;
43
48
  }
44
- export declare type AdmissionLevel = 'owner_only' | 'everyone';
45
- export declare type PortVisibility = 'public' | 'private';
49
+ export declare type AdmissionLevel = "owner_only" | "everyone";
50
+ export declare type PortVisibility = "public" | "private";
46
51
  export interface WorkspaceInstancePort {
47
52
  port: number;
48
- targetPort?: number;
49
53
  visibility?: PortVisibility;
50
54
  url?: string;
51
55
  }
@@ -63,5 +67,22 @@ export interface WorkspaceInstanceConfiguration {
63
67
  theiaVersion?: string;
64
68
  featureFlags?: NamedWorkspaceFeatureFlag[];
65
69
  ideImage: string;
70
+ desktopIdeImage?: string;
71
+ supervisorImage?: string;
72
+ }
73
+ /**
74
+ * Holds information about the image build (if there was one) for this WorkspaceInstance
75
+ */
76
+ export interface ImageBuildInfo {
77
+ log?: ImageBuildLogInfo;
78
+ }
79
+ /**
80
+ * Holds information about how to access logs for this an image build
81
+ */
82
+ export interface ImageBuildLogInfo {
83
+ url: string;
84
+ headers: {
85
+ [key: string]: string;
86
+ };
66
87
  }
67
88
  //# sourceMappingURL=workspace-instance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,EAAE,MAAM,CAAC;IAIf,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,uBAAuB,CAAC;IAKhC,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAG/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,sBAAsB,CAAC;IAG9B,UAAU,EAAE,2BAA2B,CAAC;IAGxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAGvC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAGnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,oBAAY,sBAAsB,GAG9B,SAAS,GAIT,WAAW,GAKX,SAAS,GAKT,UAAU,GAIV,cAAc,GAId,SAAS,GAIT,aAAa,GAGb,UAAU,GAGV,SAAS,CAAC;AAEd,MAAM,WAAW,2BAA2B;IAExC,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,aAAa,CAAC,EAAE,OAAO,CAAA;IAGvB,aAAa,CAAC,EAAE,OAAO,CAAA;IAGvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,oBAAY,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAGvD,oBAAY,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IAElC,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,cAAc,CAAC;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,2BAA2B;IAExC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAG7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAG5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAChC;AAGD,MAAM,WAAW,8BAA8B;IAG3C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAG3C,QAAQ,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,EAAE,MAAM,CAAC;IAIf,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,uBAAuB,CAAC;IAKhC,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAG/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAGD,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,sBAAsB,CAAC;IAG9B,UAAU,EAAE,2BAA2B,CAAC;IAGxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAGvC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAGnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,oBAAY,sBAAsB,GAG5B,SAAS,GAIT,WAAW,GAKX,SAAS,GAKT,UAAU,GAIV,cAAc,GAId,SAAS,GAIT,aAAa,GAGb,UAAU,GAGV,SAAS,CAAC;AAEhB,MAAM,WAAW,2BAA2B;IAGxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAM3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,oBAAY,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAGvD,oBAAY,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IAElC,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,cAAc,CAAC;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,2BAA2B;IAExC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAGD,MAAM,WAAW,8BAA8B;IAG3C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAG3C,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACtC"}
package/lib/wsready.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wsready.d.ts","sourceRoot":"","sources":["../src/wsready.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oBAAY,mBAAmB;IAC3B,uBAAuB,gBAAgB;IACvC,yBAAyB,kBAAkB;IAC3C,sBAAsB,eAAe;CACxC;AACD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,mBAAmB,CAAA;CAC9B"}
1
+ {"version":3,"file":"wsready.d.ts","sourceRoot":"","sources":["../src/wsready.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oBAAY,mBAAmB;IAC3B,uBAAuB,gBAAgB;IACvC,yBAAyB,kBAAkB;IAC3C,sBAAsB,eAAe;CACxC;AACD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,mBAAmB,CAAC;CAC/B"}
package/lib/wsready.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
4
4
  * Licensed under the GNU Affero General Public License (AGPL).
5
5
  * See License-AGPL.txt in the project root for license information.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.WorkspaceInitSource = void 0;
9
- // generated using github.com/32leaves/bel on 2021-08-03 10:42:32.582603295 +0000 UTC m=+0.005734479
9
+ // generated using github.com/32leaves/bel on 2022-02-15 11:53:18.380158212 +0000 UTC m=+0.011913675
10
10
  // DO NOT MODIFY
11
11
  var WorkspaceInitSource;
12
12
  (function (WorkspaceInitSource) {
package/package.json CHANGED
@@ -1,37 +1,45 @@
1
1
  {
2
2
  "dependencies": {
3
+ "@types/react": "17.0.32",
3
4
  "ajv": "^6.5.4",
4
5
  "analytics-node": "^4.0.1",
5
- "inversify": "^5.0.1",
6
- "jaeger-client": "3.17.2",
6
+ "cookie": "^0.4.2",
7
+ "inversify": "^5.1.1",
8
+ "jaeger-client": "^3.18.1",
7
9
  "js-yaml": "^3.10.0",
8
- "opentracing": "^0.14.4",
10
+ "opentracing": "^0.14.5",
9
11
  "prom-client": "^13.2.0",
10
12
  "random-number-csprng": "^1.0.2",
13
+ "react": "17.0.2",
14
+ "react-dom": "17.0.2",
11
15
  "reconnecting-websocket": "^4.4.0",
12
- "reflect-metadata": "^0.1.10",
13
- "uuid": "^3.3.3",
16
+ "reflect-metadata": "^0.1.13",
17
+ "uuid": "^8.3.2",
14
18
  "vscode-jsonrpc": "^5.0.1",
15
- "vscode-languageserver-protocol": "3.15.3",
19
+ "vscode-languageserver-protocol": "3.16.0",
20
+ "vscode-languageserver-types": "3.16.0",
16
21
  "vscode-uri": "^1.0.1",
17
22
  "vscode-ws-jsonrpc": "^0.2.0",
18
23
  "ws": "^7.4.6"
19
24
  },
20
25
  "devDependencies": {
21
- "@types/analytics-node": "^3.1.4",
22
- "@types/chai-subset": "^1.3.1",
26
+ "@types/analytics-node": "^3.1.5",
27
+ "@types/chai-subset": "^1.3.3",
28
+ "@types/cookie": "^0.4.1",
29
+ "@types/jaeger-client": "^3.18.3",
23
30
  "@types/js-yaml": "^3.10.1",
24
31
  "@types/mocha": "^5.2.7",
32
+ "@types/node": "^16.11.6",
25
33
  "@types/random-number-csprng": "^1.0.0",
26
- "@types/uuid": "^3.4.5",
34
+ "@types/uuid": "^8.3.1",
27
35
  "@types/ws": "^5.1.2",
28
- "chai": "^4.1.2",
36
+ "chai": "^4.3.4",
29
37
  "chai-subset": "^1.6.0",
30
38
  "mocha": "^5.0.0",
31
39
  "mocha-typescript": "^1.1.11",
32
40
  "rimraf": "^2.6.2",
33
41
  "ts-node": "^9.0.0",
34
- "typescript": "~4.1.2",
42
+ "typescript": "~4.4.2",
35
43
  "typescript-json-schema": "^0.50.1",
36
44
  "typescript-parser": "^2.6.1"
37
45
  },
@@ -39,7 +47,8 @@
39
47
  "lib",
40
48
  "data/*.json",
41
49
  "src",
42
- "pkg-yarn.lock"
50
+ "pkg-yarn.lock",
51
+ "provenance-bundle.jsonl"
43
52
  ],
44
53
  "license": "UNLICENSED",
45
54
  "main": "./lib/index.js",
@@ -52,5 +61,5 @@
52
61
  "watch": "leeway exec --package .:lib --transitive-dependencies --filter-type yarn --components --parallel -- tsc -w --preserveWatchOutput"
53
62
  },
54
63
  "types": "./lib/index.d.ts",
55
- "version": "0.1.5-server-vscode-ouath2.17"
64
+ "version": "0.1.5-server-vscode-oauth2.14"
56
65
  }
package/pkg-yarn.lock CHANGED
@@ -4,21 +4,26 @@
4
4
 
5
5
  "@gitpod/gitpod-protocol@0.1.5":
6
6
  version "0.1.5"
7
- resolved "file:///tmp/cache/6a9d240013a44be6c25095ee9aceca94f378a3a0.tar.gz"
7
+ resolved "file:///tmp/cache/3fb69d62ce0696b7d49ba715b272c27f17280473.tar.gz"
8
8
  dependencies:
9
+ "@types/react" "17.0.32"
9
10
  ajv "^6.5.4"
10
11
  analytics-node "^4.0.1"
11
- inversify "^5.0.1"
12
- jaeger-client "3.17.2"
12
+ cookie "^0.4.2"
13
+ inversify "^5.1.1"
14
+ jaeger-client "^3.18.1"
13
15
  js-yaml "^3.10.0"
14
- opentracing "^0.14.4"
16
+ opentracing "^0.14.5"
15
17
  prom-client "^13.2.0"
16
18
  random-number-csprng "^1.0.2"
19
+ react "17.0.2"
20
+ react-dom "17.0.2"
17
21
  reconnecting-websocket "^4.4.0"
18
- reflect-metadata "^0.1.10"
19
- uuid "^3.3.3"
22
+ reflect-metadata "^0.1.13"
23
+ uuid "^8.3.2"
20
24
  vscode-jsonrpc "^5.0.1"
21
- vscode-languageserver-protocol "3.15.3"
25
+ vscode-languageserver-protocol "3.16.0"
26
+ vscode-languageserver-types "3.16.0"
22
27
  vscode-uri "^1.0.1"
23
28
  vscode-ws-jsonrpc "^0.2.0"
24
29
  ws "^7.4.6"
@@ -0,0 +1,2 @@
1
+ {"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MDQ1MGVjNGIwZTExZjEwYTY4Nzc4ZDE3ZGUxOTM4NDljMDFmZjQ5M2RhOGE1M2I0MDUwMzU1NjYwYmIxNjg4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzVmOTUzNjJhMGExZWE5NDM1YTg1NzA4ODNiODJhYTFiZWUwZjI2ZTgyMWFkY2JlZDIzZTEzNjQ3MzdkOTgyYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQ3MWZmMTU0ZjVjYjkxZTNhNTk4ZmZkNWFjMzYxYTE3MTZmYzcwYzhiZmQ5MDEyZDVkMTkyNGM1MmMzNDlkNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTc2MTVhYWE3YzdmYTQzNDZlY2M3Njk5ZDJhMGNmMDgzNDZjZGY5YzZlMWE4MzgyZWVmZmE0MmQxOTY3Mzk5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2RhOTVhYjBkMmJmMjRkNzQ0NmZhNTM4YjExZDI5ZDQ5ZDA5NTkwOWMxOTgxZWYyNzhlYjZjNzNhNTE2OGNhNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViODdkNzI4NmE0NzBkODRjYTY0Y2YzN2IxNDVlYzk5OTNkOWJhYzZjNjg1MDEyMDEwNzM1OTBhY2RmMDkzZjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi95YXJuLmxvY2siLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTNjMjg5ZDM2NDYxYjBhNGIxM2RkN2UyMDQ2MWNiZmUwY2UxMTQ4ZGQ2MzNlZWFmNzM0ZGFjYTIzN2I0Y2E4MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjdlZWMyMGIxYmFiMjAyYjY1ZjYyMDkxYjlkNWNjN2U1OTUxZmM3MjQzZTVkNzM0ZDEzN2VmMGVkOTNkOGJjNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAwNjdkYzgzMGIyYTVkZTBkNTJlNzRlMzIzODEyN2U2NzlhOTM2ZTBhNzcwYWFjYmNlNjYxNjJiMjIwMDMxNGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUxYzRmNzJkYWM2N2M0Y2VmODUyNDI3ODFjOTE4ZDNkZjQzMjBjZWEyMDZhZWQ3MThmMWU2YzFkNGYwZTYwMjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU3YzcyZWZkMTVjZWU4OTliNGY0NjI4NzM5NDhjZTdkODlhYzIzZGQ0M2FkY2NlYzM5ZGEwZTcwNzkxMjM1MmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3ZmQwMjkzZDUyYTFhMjkwZmQ3NzJhMmI3N2VkNmM3YjhlMmZmNGI3Y2Y1NTA0YTMxNDEwM2ExMWUwMGZjOTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ4NjhlYTI5YmY5YzZhYzlhZjQxOWJhNGU1ZTE4OGY5OGVlN2EyNzYxNDIzMzg1NzMyYzA2YWMxMmEwMWE3YzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY1MTE1OWYyMmE4YjY2YjJmMWM1ZTY1MWUzOGFhMWY1N2JlNGU2N2I1MjMzMGQwMTZiZDM2ZDE0Zjg1Y2U3NmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTIyYzRmMTczNjc5NWMwMDM2MDRhNWViZmU0MjQ1YWY0NWEyNzc3YmQ1YmI5Njk1MWRkMzA5NjBkOGEzNzQ1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNzA5YjJjZDQwN2Q3MzQwNGU1YmI3NTdmMzRhNTIxMWU5Mzk4NzhiNDRkYTJkZjk0MjJmZWFhODY1YWVhYjU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MzIwNzJhOTA1OGRmNDEyM2ExY2ZjMmYyNmVlNzY4MDY0N2YzNDVlNTc4Y2FlOTNkZDM1YjgxM2M5NGVkZTlkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRjZDEzYzE4Mzg1ODc0Y2ZkYmY4MjVjMTNjYmQyMzZiMjczN2VhYTAzODhmZTFhM2FjZDgwOTEzNjZiYzRkYTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDAyYjUxNTE3NzU5ZmY5MjI4MTNjNmNhMzFhNjRmMWYyNzNmNTk1NGI0YjMzNTBmOWFkMTc3MWJiOTlmYzgzZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQwNTM0ZDU1ODllNWZiNzg1N2U4NDU0ZTI2MzY3OTY0Y2Y4MDEzODZkMWZiOGZjMDUxNWNlMmU0MWIxMDllOGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmMjU5MDg0MmRkNzY3ZWY5MDk1NzZiYmFiODExMDVmNTA0NTk0YjQ2ZWNiYTkyZDZiZmZkZGEwZTY2ZjBlMTA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTkwMDJkOGVkNzIxZGRlNjI1ZWRkYmM0OWJlYTM3ZWY0ODYwZmE0N2U0OWU5NGNjMDk4ZWYxYmI3OTEzNWZkYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZhZjNmN2M2YjA1NWMxZTc4YjM2ZjI0YWVjYTMwMzVjZTMzYTkxMWFhM2EyNjkyNTdmMDFlMjczYmI3ZTI1ZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZGI1ZmJlODQzNTQ1Y2MyMjVhMjUyZTQ0YjQwZTJjNjVlZDdhZGE5ZDBmNmZlNGIwYThkZDBhYjhjZjJhYmEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNzI4ODU0YzZiNTY3MWY2YjIxZWIyZDQzZDMwYzZkMzQ1OGFlNzNiNTE4MTZmN2Q4M2MzNmRkN2M3MTJiMWJhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYWRiOWI5NmI4ZjkyNDNhNjEyMDkzYWRkMDY0NzU4Y2FjMmQwODU2MDg4YTMxZTMyYTdmNmM2MjdiYTc4ZDk2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNDMzMmIyZWM1YzQ2YzdkZmNmMjViMjcyNzIwYjUxYTIxZWUwZDRmODNkZDE3YWQxMzRlYzdmOGM5NjVjMGQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIwNjQ4N2YwMzQyYTBhNWEzNzU5ZjgzOWFlYTM0OWM3NzFjZDc4MzVlYjJkZDRhYjkxMDg1OWQ4MWE3YjI2MjYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIzNDk5YTQ3MThiNzFlNWYxODc1OGM2NDg4YTJkM2E1ZmZkZGIxNzg3ZDM3YWJkOWQxYjdiNzQ2Y2UwYTA3Y2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5ZDg3NWEzYzZmNDk3ZWQxZjllM2I5ODAwMTk0NWY4YmQxOTdiMTk5OWZiNmFkODdlMTc5ZDQ3N2QyMmZkNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2hlYWRsZXNzLXdvcmtzcGFjZS1sb2cuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYTFiYWJiZGUxMDljZjIwNWRhZjgwNDQ5ZDE1NGFlNWNmNTRlNmVhMTY1OTE0ZDY2ZjBkNmM2NDVjNmZhODZkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNTQwZmU1MjhmOGI4YmVjOGY2NjY3NDY2MzI1ODUwYmE5YzBiMDhiNzA0NmI2MjgyMjEyZDBiMmQxN2UxY2FmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMyZjU2ZWUwYzc1MzljMzlmNjk3MWVlOWZhODFjMDQ1MGRmZjQ0YWEzZjAxZDY2NmM4YWQ2MjI5YmRmMzM0NjUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU0ZTU3MmRlZjZjZWQ5M2NhYjcwZmRjZWRiMTZlMTU0YTFiZDU0NzMyMzczZDJkMmZkZThlMTM3NGQ2ZWY0MzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWRmNWJjNTM5MGJkMzlmNGZhMjRjMWRjOGU1NmM2NWE1NWIxYzUzYWQ4N2NhYmMwNTZlZjJhNGQwY2ZkYzI2OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTVmNmY2YWEzNTk0ZDQwNjdmMTFhNjU5ZTllNDZiMWY5OTMyZDk3MzViOTNhYTFiODE1YWU4Y2ZlNzcwZTIwMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZGE1YzEyYjRmN2QwZmM3ZDI4YjJhMGE2MDdkNDI0Yzk2NGE1MmU3OTY0ZjkyZDI5Nzk1N2Q5ZTViNTQ2YzExIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTI2NWY2ODMzM2ViNDI4NzJmMmEyNDY0ZTAxNjRkZTViZjhmZmM0NDYxZGEzZWMxYTE5ZGE0NTQ5ZTQ3MjI2YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4OGU4ZWViZmQzODkwOTkwOGUzMDhjNjA4NmJlMzRjMWRjOWFjNTM4YmEzOGY4NTVlOTAzMDFiNzQ3ODQ5MWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMWZhZjdhNzA5YTlhODJiODVhZmJjNjA3NDRhZWJkYjVjNWM5MmQ5ZjllMDg0OTZiYzQ2ZTA1YTU3ZTk0YzJmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2VtYXBob3JlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZjZkOWY3MWE5Nzk5Yzc5NzE4NTdkYWRhOWM2ZDgzZjU4NGU3NDA4OTRlMDU4OWY2Y2I2ZTk2YmNmMTgxZjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRkODBmYjljMzgwYzdkOTE3MTM3YmMxODE5YTFkYjI1YzRjZTJkMGEwOGU0YzkxN2VlOGUzZWFhODllMGUwMjYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDNhMjFjNmQwYjM4NjZkNTBkNzE1NzU1YWYzMTkyYjViOTM5OThhYmM2NzdhNDE2N2RkYzNjZDRhMTdkMThkMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tc2VydmljZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NWViMzhjMjFmMGE3YjlmYzNmYmQ3MTdmN2FhYWU5YWY4NjBlN2U2MDgyMGVkMDVmZDY4MzI3NTJhMjczZDBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlOWY1MjRiMzhlOTM1NzQzZTFhYTc3NDUwZGJjMmMzNmIxYTFjZWRkMDY0NWVhYjhlZjZhYzc3ZjI4YjQ4MzU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNjM5NjUxZmVmMDhhNjFjNjdkZDBiOTBkNDdhNWQxNDAxNDljMzRhMjU2M2VhNWRiMGU1ZWNmNTcwMjViYTE0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg1OWU5ZGRiZGY0NTg3OGFkM2UyYzFmYTE4MWMwMGY1N2YyZTk5OGUxYWQxMmE1NDQ0YTU5MTRjZGIzZTJiMzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ZmIwYmUwYzJkZDYzMWRjYzI5ZWQ3MmQwZWY4ODExOTg0MDA0YmNjZDExOWZlNmEyNDVkYTQ5NDA1NTBhNzUzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBjM2I2M2RjZTJkZmI5YWNjOTI4NzAwMTkzMDRkMDZkNzE5YzVlY2M1NzdkNmVkY2MzZmJkY2FjYTc3ZjVkZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNDg4NWM0Mjc2ZGUxNWE3ZDMyZmZkY2YzNDRlNmEyNDEzYjk5MWQ0MDM5ZDRhM2M4N2ZiZDg5OTdjYTEyZGZiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5YWQ0ZDg5OWNlNTg4YTBlYTVhNDFjY2IxNjk0ODQ1NWE4M2YwNDU5YWZmNzRiNTI2Y2ZmZDQ0NDRhMzY1YzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYzI3Yzg5YTgxODQwMGUwMmEyNTVmMjk3ZjE3YWIzMGRlZGZkYTYzMjE2MDFhMzk0NTJlODI2ZjVkOTc2M2M2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMGRhNzYzYTQxZTE4ZDUwNTNlNjg4NWRiYjIxOTI1MWQ2NjQ1NmQ3ZGMxZTliNWIzMjdmNTNiNjkwYjY5YTI5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAzMzAwY2M1MTkyZjM2YWQ0N2Y3NTc2MmI0ZThhMWQ4NDlhZmE1N2Y1OTFiZjFkOGVkNDZiYWJlOTExMWJiMWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUwYTY0M2UwYjIzNjdhNDljYTU1NDEwYjhkNDMxOWFlMjFlN2ZkZmZmZDQ4OTk0OWJmYTEyOWU2ODYwZTY2ZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWI5MDRlMTIyOTFkZjA4NWZkOGNjOTYyMDcyZjBlMjBmNzU0M2Y4MGFmYTJmNThkZmEyNzQwMmU4YTU2ODc3ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjM2VkZjFlYmUwNWQzZTBiMzAzZTcwMTAzNzhiZWFhZTdkZjdjMTUwMjgxZjk5ZDk4NGFiNzliM2EyNmE3YWNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F1dGguZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YjM5OGRlNDljYjRkZDI1ZWQyMzczNjgzMzFkN2M0MjVkYjUwY2I4ZTZhZGJkODI4ZWUzZjFmMGMwMTNlYzQ5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE4YmJmOGRjZTljZjUyMjc2OTFhMDZhNGJlN2ViNzU2ZjgxZDE4NDVlMWExOGU1ODA5YzYyMzg5ZTg0OGIzOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEwMzkxZGRjOTY5MWU5OWJlMzVjZWRkNTA3Y2ZiNzM3ZmU1MTZiMmUwYWUwOTc0YWRiNzMyMzc0OWVmZThkNGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NDNkZTE1NTIwMTExNTkxNzJkYmQ1MWQ0YjliZDM2MGNkNTNlZWE2MGNkMWFkMDUxMmUwNDBkMWU0ZDUyZjliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE1ODVkMjBhNDdhMmJmMDk4YjRkY2EyNWY0MGY2ZWU4OTVlMTJkZTYzM2NjMjRmODFhMjk5YjUyZWYxNWJmYzEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkNDE4OTlhYzI5ZTdmYjdlN2NhNzExOWIzZDJiN2UwZDE1MzUxMDY2YzE1YWMzOWQwYmM2OTZmOWY4ZWQ2ZDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZTRhODkyNjI3ZWNhOTBiMTRhNzkzNTViMTVjZGI0NDFhZjA4NzI2ZWM5ZTY3M2Y1OTY0MjRiNTM3NmYyMmY2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmMzU0NTIwZTEzNDZkODY3NGNjZjg1MTA2OTU0NTc5OWUwNGJjZDMyNTM2OTg0ZDA0MjQwNGY4MjIyMTQyMmY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE0MmFlYjU3M2ExNmM0YWRmZTAzM2JjYTkxZTZhMmQyMmU2NTM0Y2JhMGQ4ZTFjMWM0NzRmYzg2NmI3YWNkOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4MGMwMzI2MjhjNmI4MDY0YzFkYTA5N2NkZTAxNmI0MGM0ODFhMGNhMDVhM2E2N2VhZGI4MjBmYWZmZjZjMzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE0YjVlZmI4OGI2YmFjYWEwMzExNjQ0NTAyYzg3ZWZlNTA0NDhmZTczNmVjMjJjNDQ3NmQ2MWM2MTYxZDljZGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGViYTJjNTYwNmE5NTU5NmZkMDIxNGQ4NTMyMzNkYmZiN2E0ZTQzNWNlMGNjZjg2ZTViZDYwOGNhN2Q0NDIxMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2U5ODhjNzMzMzc2YTM5MmJmNGVlYWZhMGFjNzc5NzVjOTdhMjEyN2JmMjdlMmIzYTU1ZjkzNDkxYWJjOTc3NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTYzNWQ0OTk3ZjE0OTFiN2NmMzk4YmUxZmRkMmZkMTMxNDY3YWJlMjUxYWY1ZWZhZGZhMDQyZGM4MTkzYTU1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE2ZDUyYzEyNzQxYmNlMzY4OGJjMTAzYzc2ZWFhMWNiNzNlYTdhY2I2ZTM0OTNmNmVlM2M4Y2VjNzYwNTY3MDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjQ4MjY2ODEyNjFkYWYwMTBmZDMxOThkYzMxNDRiODZhM2RjYWYzNjE0ODU1NDViY2Y1NWViYzk5YWJlNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZjZTIwZTczZWQ5Zjc1YzkyNzZkZGM4YTA0NGM0YjExMDdkNDgwMzY1OTJkM2ZmNDJjMjFiOGYzMzc5MzViYzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE1YjhhMTgzNmZhYzA0ZmM3YTM4NjA4ZjI0NDRiYjg2ZjMwZTQyY2UyYmQ4YjI4ZjdjMTVlYWViNDVjMjdjYjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0NGZhZDczZDU5ZDg1NDJiYzU5MGRjM2VkYzQ2MDI3ZGJiMTI4ZmVmM2EzYTk4NmNkMjFhZjljZmZkMDVlNDBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAyYjUyZDg1ZGFkMWVmOGU5MDEyM2Y3OWE5N2EzZGM1YmI3ZmMyYTZiZTJiMzc1M2U1MmRhMzhiNmVlNDBiN2QiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMxNWVhZTkxOGMyZjY1ZWM5ZDhiMGEzYzEwNWZkNDQ2NWU3MmY5NzRlMzg3MDg4NDUxNzczNmIwZTg2YzkxNzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW52LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFmYjYxMjY4OTI2MGU2OGU3MzRjNmRjZGFiZjg4YTcyY2UxNGM5NjQ1MDUwNGM4NWRkYzMyOWRkMjAzMzhjOGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVjOGEzOTA3M2Y2ZGVmOWZmMjlmMjBlMGY5YzFkNjRjYzNmMTE4NWE1MTdmNmIwMzZmNjRiZTE4Y2U3NzVkMzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYTEwMzk0ODMwMmIyNjJhZWUxNGI1YzAyYmE5OGM5OGE1ZGJiYTEwZjYyM2RkM2E1NmRlNzRjNWE2ZDg5NDY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxZGY2NjJjODMxYzI1ZGVlZDM2MmNlZTg4M2Q1YWQ2NTM1NmY5MTU0ZTUzMzdlMzU3MjIwMWY3NTY1YmJmZWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI5NjFkMzA1MDMyZTE1N2FiNmUzYmJlMzdiNDFhYzRmMWQ0MzBlYzUyMTM2N2YwYThmMjI4ZWEzZTk3YzAyMzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzk4ZjBkMzBjOTBhOWMwNTYyY2RkOWZkMzk3ZDk3ZjA1ODUxZjYwODhhZjdkZjgwMmNmNzZkYWI3YzhjMmI4ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZhM2ViOTE3ZWEzMmVlMDgwOTRjYjY1Mjk5NTNkMzYzYWZhMDU2ODU4M2I5NzM1MTdmMjlkYTM1ZDZmNGE0NDAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ODY3ODhkYzhkYzljMDJkNGQ0NDI3YTZmNjJmNGM3MTg5NjI1YTA3MWE0YjBjOTUyYzhjM2JlZTA4YjU4NjE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImViNTIxZTRjNzZmNjVjZjQxZGQ4OTkzZWU2NDNjMjRhOTZiNzAzMDM2ZTM3NzAwNzY5YTA2YzMzMjA5ZDY3NDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmE2ZDAyZjYyYTBkYjcwNTkwMzBkYWM3NzRlMTBmNTc3MzVkODNkYzcwMjFlOTc3ZTU4NTRkMDBhZmNiMjM3MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM1OGFlZWE2NWZlZGU0MTBmYjliNzA1NjU4ZjNkOTQyMDA5OGEyNGExNTU5Nzc5ZTI4MGE1Y2IyNGQ2MzQ1NDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDJlZDAwYjg5ODI2OTE1ODJlYmU4OTllYTFhODZjMzhjZmE5Y2IzZjNhNTllMWFhYzIzODk0NDQ2ZjliZmVjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRlMmVhMDk4OGJkMDk2ZTY4ZGI0YTNkZmYyZjA2YzM5ZWQ1OTZhMzJlMTAzYWNhYjc0Y2Q2MWE0M2E5ZjAzMzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYwMTAzOWRkYmI3NmYyYjY5YmEyNDljMTI1MjFhYjI5ZTQ3YWE5OTJjOGViMDVlYjBlMTc3MzE1N2U5Zjg5ODciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkZWE2N2FjZWNhMjc0ZWI0YTQ1ZjE0ODYyZmEzMzE3MTQyYTdmMzYxZWNlOWEwNTJmNGQ4OGY1NzY4NjMxYzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4NjJhNjYyNWJiNjAxZDE4YjY1MjVmYWQ4YmY3ODMyNjU1MjIyYmMxOTU4ZWZjNTljNWIxYTVhMGFkODYxODMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzhhNjk3YjRkYmRiNWYxYWE4NTg5NmMxNTdkMjRjZTBkNWQxMTVjNzRmNGFkOGFmNzEyOGQ0M2IwZDU2YTU3OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiZGM2YTc5OGE1ZmNlM2U3NDAxYWJhYTNlNjBlODA2N2U1NzgxZTk2NjdmN2VhYjg2YzQ2MGNjMTQwM2U0YmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmM0NDBlNDkzNmQxY2MzN2Y4NWNhNzgzYTI0NmQ3N2I2ODljNTQwNTgyZWFiOTFkN2U0MTZkMWI0N2U5OGYxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NzdiMzEwMWY2MzdjODNkZmZiYzQzNWRjZTU1NzMxYjUwNzE5NDVmZWU0MjAxNzc4MmZjNDZmZmNmNjhkYjIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkzMTE5ODI0MDQ3ZmEzNjliMmI4Y2U2MGFiYjMxZjVkZjYxZDc4MDgxNDU4ODU1YmY0ODM4MzZhYjRkZmEwZDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMGY2MGUyNDQ3ZjU4M2E2YWI4ZjQ5M2ZlY2ZhOGU5OWY4M2ExMmMzZTM4OWRmZGE1ZGM3YjQzMDE4ZTBkYmU1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWIzMzhhYjA2YmI0M2RhYzE4NjY0NmQ5ODJiNjhiNWIxZWJmNGM4NDgzOGU5YWVjZDM2NWZiN2UyZDZkYzdmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMzFkNzY5MjMyYTRiNDBkYmE4N2NiODg4MWE3NzFmM2JmMWVhZDA5OTYzOTk0MTAxMTcxYjk3MWI4MzFiZjZiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmZiZDc4ZDNmMWViZmE1NmZjODk4ZGI1YTcyMzhlMjIzOGIxNjc2ZTMxY2ZkNDM4YThmZTVmMDViMDlmMjZmYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjRmYTdhMDY4NjljNzg5ZDI3NDZkOTllYmNkY2RhMjg4MWI1NzBlMjk5NTI5NzdlNmI3ZTRiYTdjNTRiNTVlNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMwNjcxNzY5MzQ2M2UxYTNiNjhiZDczZTZhNjg3ODIwMzFjOWFmNTdhZDI2ZTA4YjMxZjBiNjFmNzllOTJlZjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNlMzg3N2ZhNDI3OGQ4ZTMyZjRiYmYwMjNjZjJlOTJlMzQ4YmU2ZmZkNmQ5NWVlZjAzYjUwYzlkYmI2NTMzOTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQwODE1YzhlYzE3NTBhODZkYWY5ZTA5NDNlZDNkMzMxYjA5MTI5YTFkMmU3ZmZmZjU5MmM5OTg1MjI4YjY1ZDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFlOTkxNGY3YjJkMmMxZjg0YjliMDk4ODVhYTEzNzFiMDg3YzE2YjE3N2Q4NGY0ZDFjNjA0ZjJhNWE0YzgwOWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzOWQyOTJkZGI0N2Y2ZjcwNzRmNjY4MmE4NTYxMzE4ZTllYzI1YzNmNTU0YmU4YWZiNTQ4MDYzOGM3NjlmOGFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjRlYWYwOWUyNWNkYjQ2MDM5Y2ZkMDZmNmNhMTFmOTNhZjA3Y2JmZmI2YzNmNmZmOWE5NTQ4OTY1YWNlMDQ2MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRmMGQ3OTc0ZGFmMzI1MWE0NTA2NjY1NzU5OWEwNjQxOWViMGRlNTZlNzAxOTFlNGQzNWE1NDAxYmI1NWQ2NjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMwODRjZTMzYjBjYzdhZjBmYzFiNGQ1ZDNkY2Q2NjYyN2NjNWUwMmNlMjdhNGRkZmEwZTA5ODUxM2UyMzI1NWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQzZTZmYzIxNDE4MzJlZmJkZTFiMDlhODY3NDg3Njc1NWMxODI0MjhjNTlmNWM0ZDBmNDM0NTMxNDQ0NTlmNmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg4Y2I1NTlmNzc2MGE5OTY3MTlhOTIyYjAyYTNkYjVjMTRkOWQ3YjQ5ZWFlM2Q3OGZjOTYzYmY2Yjk4NGE1YjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE5YWI5ZDc2ZmY0YTg4OTc4MjY3MWM3ZjJjZDlkMGU4YzAyMTk1ZTM3NmE2MTdiNGU2OTAzNTQxNzM3YTQyOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMxZWY0MWNjYWMzOTFkYjljNmRiNDEwNTYxZWYwMmFjMTVjMjg0NThjMmUxNjYxMDQwNGE5YjQ5OGJmMDZlZWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNjY1NDdlZDZhOTk2MzUwZDk2ZGY1ZGJmMDcxMzI3ZWIzYzkwNTIyYjg3NTk2ODc5YzE1N2Y3MDlkMTc2MTIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2E2YmM0MjY1M2IzMDI3NGY5NTQ5ZDg1YjAxZDZmOWQxM2Y3OGE2ZDYyOWVlZGQ3ODU5M2NhNGM1M2M3MzVhMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3OTdmOGU5NDQ2YTgyZTMzNWE0M2ZmMjFmNDQxMGU1NmY1NTQ4NjkwM2IxYThlYzYxNGIwNWExYmQ3YTUzODE0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYjliYmRiY2U0N2M0ZGIzMjM0YzRiMDdhZTM0ZGE3N2ZmNjkyYTQxODI3NTkzZDk5NTU5NjE0MDFkNjBlYjZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjYzZTJlZDIwOTY1YTg3ODBlMDIyYWIwMjE2MjcyMjMyYzJmM2MwNzVlN2Y0ZWZhNTIxODU4MWNjMjE3NjAzMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODgyOGZmYjQ5MWIyMDFmZTNhY2I2YmEzMDc5Y2Q4MDZmZjQ5N2UyOGU4MDcxZDliMjFiNmU2MzNlZjhlZjM5NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNjExYmYzNTNhZDBmYjMxYzJiYjQ3ODQ1NDc5YWU5YWRlY2FkMjk0Zjc1ZDI3NzE3NTAzMmE3ZjExMTRlNDY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmUxMjEyMmVkNmQ4NDA4ODFhMDgyNWU3M2JmNWRjNjE5ZjRlMjVkODZlM2QxNDIxMTU2ODM1MWUzYjFiN2I1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTNlOTA3YTM4M2MxYzM5ODc2NzAyMWVmYjViZjFjMzc4MTc0MDI0NGU3MjJjZmI4NjMxYTVmNWFkYjUxYTcxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1MmVmYWRmNTZhNWVkZDdmYzgyZWViOTgzNDJhZDJmYjA2ZmYxYzY4ZWE4Y2UzMjFiMTU4YjMxY2I5MmRmZDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY2YmMyM2JiMDU4ZTc4OTNjYjk0ZDk1YmE0NzQ4NDcyMGRlYzk0ODdhZGY2MWM3ZDA4NzQ0YzBmNDM4YjA1OGQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJiYmNkYmQxOTU0YjE0NDQ3ZDEyNjQ3M2JjNDFiYjAzYzEyZWZlOWUyNjEwMWMyNTRhODYxN2E1ODFjOWNlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGIyZDNiZmRlOTk0NTgyNzkyY2JkZDczZDI0ZTkzZGE5YTNiNzNhMTFlZjhmNTM1Njc1ZDQzOTYwYWE2MGZiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzc4OGYyMzEwNjAzOGM1ZjM5N2RiZjRjM2ZjZjY5YTUzZWJjMTkzYTM2YzhkODcxNzRjMzdhNWY0ZTI1ZDQxYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWIxOWJhNWY2ZDk5M2ZjY2Q0N2VjNmE2Nzg4MDU1MzM2YTQyZTY5MjJmYTRjYmU4OWMyYjQ3NjVmMzIyMWIwYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjc1MzY1YjQyOTNjNzc0M2NhNTRmYTQ4NGIwNmRlYjY3N2I1ZmRiNWRjYzRiOGNkNjhkZWExNjY2YTZjMzIxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmE0NGEyNjVjZTYxZDZhOWQ4ODc3MzI3Y2YwMzE0MDExOTZlM2YyYTU3OTlmNTU1NjU3NjYwNmM4MGZkMmQ4YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGRkNzYyY2JjNGI1MTBiMWVlODQ4NWJjMjg4ODdiOTc2MGRkZmU4OTRhNWMzZTM4ZDdlODdkZDBmYTJiODM5NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxM2FkOTAzZjk4OWU5ODk4OGVmN2M1NWYwYWI0ODM1ZDhhODgxMGUzM2RkNWU4MTZhYWI1NDEyMTI1MjQ5MTg3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxODQ4NzkwYmIzZWMxNTg5MjA5Yjk4MzZlMzI5NmY3NzMzOGE1OTg3OWYwYWZmZWRiMjg5Mzc4Y2Y5YjI4MDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3NTBkNmUwZDlmZmViZjQ5ZTgwMjBkMDAzY2MzNWIzZGE0OTE1ZTc2OTFlOGY1NTNkYTA2ZGE2MmY1NWNlM2MiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjhiNDZiN2U4OWZiZGNlY2ViN2JjZjM5ZDA0YzAxYjI0Y2UzZjAxMTNhMDE2ZWFhOGZjMjAwNTU3NDA2YmU1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWU2ZWYyYzExMDIwNDdmZmZiYWQyY2EwMzUyNGVlOGY0MGVkNTU5ZmQ3NzQwZjEyYTA4NmVlNGNiYzU1NTE1NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjZmZDE0OTEwNTc2MzU0NmRjMzZhOTg2N2UzNDczMTkwMzhlZWZlNDIyOTk2ZjY1Y2FjN2YxYzFiZmZlYmZkZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg2ZGM3Nzk1MTEwNzE4ZDZlYTdiMTllMWIwMzE3Yzc2MGYzZGRmNjcyYzExOWQ3Nzc4YzlmMjJiOWE4YTBmNjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTNkNTI3OGE3NDlhZThlMDllYWFlZWNlMDJhNTM4YTIwNzkxOGU4MDdmODZiN2IyYjZmMjI2MzU4NjQ3YmU4MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNkNjcxOTIwN2JmOWE4OTY0NDk3Y2NmODQ1ZjRiOTk1ZjcxMjE2ZjJlNzc4NGU5NjAyZWJmNWYzNDllNjRiZDAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYmI1YWU1OTk4OGUzNTMwOWMzZTRkYmJhMjdmZmM4YzIzMGY5YjlkZDEzYTJhYzlkZmU1ZTJjZjFlZGJmMDM4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYzZhZDI1NWM3Y2NkOWM0NWZlNDFiMzU3OTM3YmZhMzY0NjUwMGI2MGExNTZiZDJlYmU2YzQyNTZjMDM4YTcxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjE3NGFiNmMwODZlYjhiNTdlMzY0YjkxNTNiN2ZkZWFlOWZlYTMwMTliMGJkYjYyMTlkOTA2MjVhNjEyNTkwNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9vc3MtYWxsb3dsaXN0LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MTAwMmFlMzRkZjIxMzFmNjAzZGVjMmZjMTMzOTY4OTc5NWExMGI3YWFhNGVmNjc0ZWIyOGRlZTdlMWIzZDFiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MGEyZDYyNjgwMTU5MmNiYmIzZDMxMzEwMzcyNjFiNmI1MWI1Y2ZjMmMyOTU0ZTIzYzUyZWQxZDMwZGI0NjIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzY4YWUxMjAwNTk4MTllMGVjNmZmM2E0ODdmODQ4MzhhOTZiZmM3MWU3OTBjZWRmZGM3ZTJlOTIzN2Q5NTZjZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTMwMzllNWZlYTE5MDI5MTA2MDVhMzZjYjJmNWQzYWYwNGUwZTdlNTAzMzY5MmUzZDFkOWVmYTU3MzVlY2YzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F1dGguanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzJkZDY3MDU2NGMwNDJlZTAzZmE4MDJiMGE3ZTNkYjM2YTM4MDFiMzdkYWYzYzA4NTEyODBiMzViNzE4OTJjYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjYmI4YjYwZTZmNWE3Y2JhNWVmNWI1NzUzYTM2ZmRjNjhhYTMyY2ZkMmU5ZWMyNTk5MGMzY2Y2ODVkNDEwODQ5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzMzFiYTIwZWIzMzI0ZDA3NDIwMWZmMjIxOGFiYzBlM2NkMTRmOTJlNDViMjM1YWUzMmY0MTQ5YThhNDM0MzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjJiNTVkMjY2ZDQzY2NlZGRiOTA1NWJmODNlMDQ5MDU5YjZjYzk4OGMzN2UxNGZkN2U0ZjYwYzY2YzViNGMwYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYTA3ZDgxZWYxMjRiOTAxMTYyMzAzMDlhMDBkZjNjN2FkZmYzNGY0NWRmNTBhNzMyNTE4ODc3YWQwMDA0MDVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWFiOGQwOGEzN2I0NjI3NjgwYjkyNjZhY2IxOWE1NjhlZGUzODI2YWU0M2ZmZTEyNjQ4NGI2OWY3OGU2NzU3ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhmNDFmZGRiMjlmNTRiZGVmNjYxMWYxZDJkMTk2YTM0ZDhiYjBkZmI0YzE4ZDUxZDQ5MTBjOWQ5NzA4ZTFiNzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzkyNTBiMTRhMTUyYTdmNDI3ZmVhMzg1YzdjZWNlNWUzNmRiOGE2ZTMxMGIxMjM5YzZlYjE4ODFkZTk1NTE5OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjYWFlN2MxNzk3ZWNiZjNhZDU1MzZhMzE4MTI5MjRmMjUwM2YyODQ0Y2ZkYzBlNGNhNDc1NDI0ZDVlNzY2YzEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhOTc5ZjdmNTM3MTg1ODYxZjkwZmVlOGQzM2YyOWNhZmI2ZDljMzAwYTk3ODQyY2FmOTUwM2QwOGY3M2YzZjVjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YTA1NjRlMDUzMzY1YmYxZDJjZWIxYzY3YjNkY2E1NDU2MzYxMTliM2NlNTVjZjI3OGI3NWQ5ZTBmZTFkYjA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzODZmNDBiODdmOGRiYWIwNThmNTVhZmEyNTI1ZmNlMjc5NTdlMjVjODQ0MmIxMDc5NGZlNmQ1NjBlYWE5NWE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc5YjMzNzUwYmY2NmU3MDc5NjA3NDdiMjkxMjgxODcyZTZlZTk2YmU0NzM2N2VkZTIzMWY0M2I1Mzc4NGRkNDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjY0ZTc4NDQ2M2EwZWYwMWQxYjliYzE5MWI3Y2UyMTEzYzEzZjkyZTgyYmEwMTQzZTJhYjJjMDU0MWJhZjI1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkOTkwNTkxNWNjYTk1YTE5ZjU0ZmRmZWRmNzdlZGIyMTI2NWU2MDRmZThiYjY1NGZmZmU4N2IzMjMwZWE3ODcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4NzhiZWIwZjdjZWYyZmE4OTI2NjU1ZTVjNTk5MGMwOWE2YjljODBjMDQxNjYxMDI0YmIwYjBiZjIyYzhhMTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4NWY4NWU5OTQ4N2Q0ZmQ4YWVkOTY2ZmIyMzE3OTllMmE5ZTlmZjQ4ZTk0Y2JlZmNmNmMzZWViNzdjYjkwZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWRkYjk4YjZmYTE2NTg3M2NkMDNhMDY3ZTA0OTlhMmQxYTlkNGJmY2I2YWRjNDhmZGY0OTIxNjIwMzgyMDE1NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhMzk2NGIzMzE3NzcxYzBhMTk5MGZjNTdhZjlmYmZmM2JmMmQ2Njk1NzgyNDk1MjE2YjQxZTMwOTI4YWFlNTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhOGM2MDIzNWNhMTMwZTlkMjA2OGI1YTk4ZDk3MWE4ODY2NjQwOGI3Y2QxNjAzNDdkMWMyYTUwZWUxNGViNDFlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDUzYjA3MmNkYmQ5MjIzOTU0ZGQ1ZmRhOTJkOTJjOTlmODA5OWQ4ZWFlNTBjZmE2YzRiZjJkYWFkZDA2MWEwYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkMThhYmEwMzcwMTVjNzc3YThhZDk2N2NiMWQxZjc5YTA4OTJhOTRkMTYwZGE2N2RlMzI3MDRjNmZlMjEzZmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRjNzJlMzcyM2RiZDlkZjUyY2ZmZTY4Y2NiOGU5N2QzNjllZjdkYjFhMjNiNWU1ZTE2Y2Q5YzViNzA0MzM4ZjgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjg2NjFiNjU1NTJmN2JjMmRlYmJlNTUzMGMxODgxMzE5ZGYzOThhZDkyMGNmMjhkZGFkZTJjMDU0MjJjMDZjOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjdhMGY4OTViMzU5YmZiYWQwOTYwMjQ3MDk0YWU0YjZmMTZlOWZhODNjMjBlZjNiNzcyOTdjMDFlZjk3NTM2ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEzODY3ZGNlNmRkNGY5N2EyOWY0ZjhmZmM3NDg1ZTdmYzlkYTNhODg3YmI4NzlmNmE0YzhhNTg3YzUwNTdmYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkMmM3NTFhZTdhMTgxZWFmM2ZkZTM5ZDgzYjVkNmVmMWE5MTU5YjIwMDRkMDUzMzlkMzdlNTkwN2IzNjE2MWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2E0NWUyNWE1ZDFjZWQwOWVmMWI1OGU0YThkOGE5ZTIyMGJlNjRmNDVhZWJjMzEyOGI1NTRkYTRjNDMwODhmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNDUxMzA5NjM3ZTNkNzAxZGIwOGZjOGI1OWQ4YWZmYWY5OWZhYjFjNGU2YzMwZTVkZmFiNzA1MGMzZTEwMzhjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYTg0OGE4YzRjYjI5ZDM3YWFhOWM5ODZmNTE0ZGFmMDZiZGVmNjQ0Mzc1MDhiYTY4YTk0YzQxODExODc2NGU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhYjg5MjNhNDFkNTVlZDY2MjBmYzdhMjNjNDE5OWRjNWIzODk5OTA4MjRmZjQyNzM2NjI4NmU4N2VhNzk4ZmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjI0OThhZGQyMjJkMTIwNmMwOGU1NmM0OWZjYWJmZjQyZThhODc1YzgyZTViMDJkOGNhN2I0MjQyNTQ4ODdhOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiMTk1Mzk1NWVkMTY3NTlmMDI2MWIwZTgyZGEzZjNmMmI2ZWFhYzA2MmY1NDhhYmM5ZDc5MWEyYTUyZWM0MjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhN2NhNjAzNGI5NTdmZTI4NWY3NmYxY2RjNDUyMDU5NDhkYmY5YTczMDExOGMzMjkyNjBmYWQzODQ5NTdmZTg2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTRmZDExZjE3MzIwNmE2YzE5Yjc2NWQ4ZjQ4ZDE0M2M1MDVhOGNkNzNiMGMzZDA5NTY4MGI4NGQ3ZjhmNzcxYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNhZWVhZWU4OGNkN2IxNjI5Nzc5NDhjNTRjYTczYjkzMWNkZjgzZjAwOWYxYjdlMGUzYjY2M2E2MTIwMmNhYzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQxZTAxMmE3MWJmMmZkZjBiOGVkNWJjMDRhNDRkYTkyOTZlODhhMzdhMDM5YWI0NzljZDhlYjZkMzMyOThmNjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxODY5MmYzNmFkM2ExMTA5MzhjYjBkYWU2Nzc0OTYxN2RkYzJhZDU3ZGYzZTNmNzgxNWQzZTYxOWJlMTJlNjJlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY0NzFlYWRkNTczMGU2YWIxYWJkN2M1ZGJjNjZkZWExNGMzMDNiYzExMjBiMGIwOWNjYTA2YTQ3NDRhNTQ5MDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODhhZDVlZTRjNDMwMDFlMTQ5NDFjYmRkMDM0MzI3NjcxYTk3NjdiZjU4ZTVmNWFiYjlkMzkzZDM2MTEyYjBhNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODg5MjExNmMyMjYyMDYyYjllOWMzMjQwMGQ3YzhhYWViNzZkNjI3ZTg3OTQ5Zjg1NTRhZjhlZjBmN2ZlY2RjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjc3ZTkzZDNjZmU0MDM4MjRiZTkxYjU0YTEwMjEwZGYzZDYxOTVhZGM0MmZlMGQwY2VkNjlmZWE4NTYxOTFhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmRlYzIyODg0ZmNiZTEyZWU0ODNkOTNjZWQyMmUyYjk4YmU2MTNhNWYwOWY3NjI1Zjc2MTMxNzUxZTIzMjk1OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2JmNjNiY2VmNzNlYmZkNjk1MDYxZDY4NGJjN2NhMzgwMDQ2OGFlOWU2MDQ2Njg1ZWI0Y2FiNzgwYjhlNGI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGQ0Nzc5YmViYWI4ZmZjZGM4OTZiYmY4ODMwZDQwOGQ0ZTEyOTBiZjhlNjUxNTM1ZmFhNGMwYmZiOTM5NDU5MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjViZjNjMmJiMDZmMjllYTliZDg4MjExODcwZTE3NzJjNTA1ZWVmODI2Njk2ZjJlNjZjY2EwZjNjMjQzYTgxOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYWFjYTcwOWNkMzdkMTA4ZTViYzA1NmJiZjU0OTNmYTc4YjIyMzkyYTgyNGQ4ZTJmMWU4MjAzNTFjYTM0MWVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhiYzg0ZjUxNTEzYjQ1MTE3NTllMjc4NDU2MzQwMWNjYzk3NjI5NWU5NzU0YzhjZjUwNGRjODUwODcyMDYxYjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjRiYWQyNDg2OTUzZWRhMWQ1NmI1YTZjZWM5ZGExZTMyYmVhYzU0YTA0ZTFhMGMzNDM0MTYxYzRhNzYwMDU5NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkxZDIzYTAzYTA4NGM0YTZiODA2ZjU4ZjEyODNkNzBhYzVlMDdhNGU3NjlkMmIyYzk3NjIxNzUyNDNmZTYyMDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYmU5MjkyZGQ3NjQ0NjFhNWRlZDJlMjczYzEyYmM3MGQ5ZWNkYWI2ZmUwZWIxZTgxNjQ2OWY3ZGY2MDVmZTM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzU1MTQ5ZmU4MzEzYjA2YjQxMjFmMmNmZDIwMDkyZGYxOTAxZDY1N2FiOTBlYzgyZDY5OTA2ZjQ5MjA1OWJiOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbWFpbC1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NDg5ZDQwNWQ4NzZlYTNkZTQzNDU1YmQxMzI0YzgyMTBlNzk5NDhjYzMyZWU4OWVhNjU1ODVlMDVkY2E5NmZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYjUxMjkxOGQ2MGFkMjFkMTZkZDFjNzdkNzhkNWY0OWZjNGViYzAyYzQwYzJhMzM5MWE0Y2ViODQ0ODkyZWVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmRmNTIyNWE4NmRkZWFiYzU1ZDQ2NWFlZWUyZWM0YzIzMzgxNWFhMjFkM2Q2ZTE1YjdkNTZiNzhlYmE4Njk0MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY3Y2MwYTY4MjVmMzk2NGM3MDgwOWU5YzY5MmIyMjU1ZmIzM2I2ZGI1MGQ1NTAxNTg2YmI3ZDkyMTAzODJjNzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGRkYzA3NGFhZThlNDdjYzUyNmY3MTdiYTY4MjRlN2RlNDUzNzlhNzU0OThjNjBlOGNkMWIwODRmYmZhNjJmYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMGJlYTVjNDVlY2IxMGFmZmNkOGIyMTA3N2FkNmZjNWY0ZTViNTJiNjBlOGM0MGVhMGQzMjVmMzZhNzM0NzFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkY2Q0NjVhYzgzZDEyMGI3ZTE2MWY3ZGNiYzhmNmRlM2Y3MWM4YWVhYjBiNjQ3MzNhZjM5MWNiMWE5ODFhMWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzI4N2M0ZTBhNDAxN2U5MDhjYjY2MDg4ZWFlNDNiZTJlZGVlM2JlMWIwMTBhZGIwMjM3NzM4NDMxMTk1MmJhZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM0ZWFjOGVhMjBhYTU1NjQ3MjkxNGI3ZGFiYjFmNWFkMTcxYjQzMmYxODk5NTk0ODNiOTRmYzI2NjRkMTUxNmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YWM4ZDQ3ZWY2ZDQ2NzIyZTlkYWRjZjZhOGE3NjU1MGIzZWFmMTY0OWRkNDlmMTVjODZhOWM1NWZiYTUyM2M0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODA0YzRhYzQ1YTUzNmM0NGY1YTY2NjRmYjk1NDFlOTUyZDcyMDBhODBkNjI3YThmZGM2ZDhjNmRmMzgzMGQwYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDNmZjQ2M2FmZTk3NWQwNWVjMWYzMjM3ZWUzMGVlYTM1MGIyNTU1OWZjYzEzNGMyNGVmYTFlNjNmNWI3YTlkMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFhZDNmMThmYjA0OWY5YTUxM2MwYzg4MmRiNGEzYjFhOTQ4M2JlM2NlNmY0MjEzYzgwYjAxMWI1MWYyNmQzNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU1MGNlZTcwYzMxY2FlNDM2NzIyYjE0OTdhOTUxZTAzYjJkMWY0ZjNmMjc5ZGZlY2YwYzhmYzBlOTBlYjgzODQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2E5NzdlMDU5MzM4ZjcxNWRmNzE1NzBkZWFmZTljMjc5Zjc4NDAwMGVmZThlZDk0MTMzZjFjNjc4ZDFiYWRjNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOGRkNTZjMjM1ZDA1NDY1YWRmZGIwOTc0ZGZlODkzY2Y1NDBkNDk3NDk5ZWY0Nzc4YzI5NzcwMWEwMzc0Y2Q1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlhYmYzYjU3YmM4MzQ2MjcyZTE0ZTQyYTIyYWZmZTIwOWRjNjNjYmU5NWM5MjAyN2E2NGM2MjRkYTAwNWY3NjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDgwOGZkMjc4MTBkY2E2ZjliMDY0NTZiZjEzMGVlMGViMWUyNzI2MmY2Y2EwYjYzNGYyZDUyYTU2NzZlYjc2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOThjZGU1NzVkZDdmMTgxMTQwMzQ5YjIxNTE5NzE5ZGNlM2ZkYjExYjYxYzI0ODk2NzExMTgzMGQ0OWFiMTYzYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYzNmMWE5Y2UyYjU5ZmJmMWJlNGM2MDljZDNhODlhOGVlN2Y1ZWY5N2NjMWQwODNkNjA3YWU5Y2NiOTcwNWNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiYTViZDYxNDkzNDlmNzUxMTVlMjc0OGM1OTlmZDBmZmQ1NmExNWM5OGY4NTY5YTY2YzQ2ZDk4Y2I1N2RlYWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MDk3NDA3YjM4N2I0MjNhOTE4OWUwZmNlNzQyOTk3NjkwMDJiYjViN2QzNWRjYTRkYzZjM2M1YjFlNzcxNjJmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZmQ1MjFiNzBiNzczZmI4NDhkMTI2OWRjNzU1YWE0YTY2OTNkYTJiMTgzYTg2ODE0NjNlNTRhYWQwODIzMGY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWNjOTA5YTUyYTU5MzIwNmMwM2Q2YWMxNWZkOTY4MmQwNTc4MTRjNzRmM2I5ZmE5ZTViMWE4NjBlNWEzNWFiNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NmQ5ZDhkMmFmODhjYTE3MjI2NGVkOTBhOTVkZGZiMzZkZTcxZmQ3MTUxYTE0NGJjNjQ2M2UwNmU1ZjZjMTI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Y2YxMzYwNmJmNDU4YjgyZDVhYzliMDdjYmRhYWUzZDE0OTg5Y2QyNTkyNTM0M2NiYzYyNjhjZThlZmI1YTI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkNGU5M2QxMGE0ZGY0ZjljNGE1NjhiZGNiNTZlMWJjMzExMWYyMmY1N2NhODM5ZmY4MGYzMTM3YzdkMTZmZTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsdXN0ZXIuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2N2QxYmY3OWM3ZmFkNTUzMTI0YzY0MmEyMjI4Mjk3OTA3MDY0NmEwNzMwMzVjM2RkODEyYzQxYWUzMWY5MzZjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTY0YTI5MzFjMTc5M2RkZWE1YTg2ZjI1NzZjZmJlNDNiMzJhZTAyMGY2ZGE5NThhZTRmNjkwNWY5ZjUxZjIxMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZTg4N2ZhMzY5ZjhkNjg1NTVjM2E1ZjJlYmU2ODEyMGNhN2QzNTJkMzNhZTc2ZGFhNmM5Yjg5MTAwZjIwMmYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhlOGQ4YzFhNGZkN2NlMjlkMDlkMWQwM2YxOWVkM2JhNDAzYjg3NGFmMGUxYTZiMThjZmExYmVmNTFjYmZkOTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJhYTg2OWVkMzk4MGI2YTBmN2NjOTcyMDdjZTkxZjI5ZjdjZGMyZTM3NzI2YjNiNTcxN2QwZjYyYzJlMTA1MTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGY5MjExNGQ3ZGVlNjFlNTZmNGZkYWJkOTJiZTI4YjQ2OWQ3YTEwY2U4MWU2NDJkM2NlNGY1MjU1MmM4ZjYyZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NzAyZjQ4OTIwZTkxYTIxZWNlYWY5MzNlNzMxNTNkYTUxMTBmYzI3YTY5M2VlYTUwMmFkNmI4OTIxZjBkYTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZiNzBkYjg1OGRlNTc0NjMwZmI1NTgwMWUzNDAzMjE5NTEzYTMwOTRhM2VmMGNkOTMwODQ5MzgzMWNlMzRkNmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU4Zjk1MDAwYTk0ZTM5Njk4MTBmYjAwNGVhOTU0ZTYzZWY1MTAwMzgxNDFjNGRhZTBkYTE0NjQ5ZjJjYjIxNTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDlhZmRlMDkwNGRlZTMxMTY0YzA2ZDA0YjY3ZWM3Y2Y0OTg2Y2RkMDNkYmY2ZDRkYjZhMWE2YmExNjhkZjc3MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDliYWJjNWI0OTM2MDM5NzVkODhkYWZkZWM0ZWI5MTVmNTUxNGQ4ZjBhMjZiZjRkZjBiNjhiMDUwZTJiMzU2MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTk1OTBhYzM1YWQ0MTM5YjM0Yjk0ZjJlNTRhZjczODBjM2E4M2I0MTA5YTEzOTFkYzk5YjA4ZmZiY2Q1NTEwNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTkxNTcyNGM4ODQ0NGY3ODQwOWZiOGQ4YmYzZjk4OGY1NmFjYjdjNGJlMjc1ZmY4YzMxMmIxZDI3ODZhMGUyMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hY2NvdW50aW5nLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNWMzYmRlN2Y5YjU5YjI4ZDUzNjg5MGY1MWMwNDA1YWYzYjZlNjllZDFkOGMyZDkyYThiMmY5YTY3MGM1NGUxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY0MmMyY2JkMWNjM2IwYzVmZDAwYzgxODg3MzIxZWI3OTNlNGMxNmE2MzBlNjhjMjJkY2QwYzFmNmQ2M2JkYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMmI0MjhjYzZhN2U5YjI1NjVjMTIzYzhjNzQ1ZDA5NGUzMDUyYTQzNjQyZWNmOWIyOTc0NDRiMGJkYmMxNTQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ3YTNhYWQ0ZjlhMmMxNWM4MTI0NmMwMWMwNjkxZTU5MzNhOWJjYmM2NzFiZjU4ODY0MDU2NGQ4MjQ1Y2JlZDIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImYzYmFjYjY4MmM5MGNmODBlZWEyMmVlYjg3NDI5MDk5MTAzMzUwY2IzZTZlZTlhZGMzOWZjMTA1OTg1MzhhOWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZDQwYTU0YmFkMjM4YTYyNzM4YWEwNGZlNDg2N2NjMGM4MTNkOWMxYWFiMjBhMWUyOGFhOThlYjZiMDUxMTBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjc3YzNhZmUzNGViZWRhYzMyNTQ5YzQxMWRhZTAwMTJjYzg4YjIzY2JmNjk4MWUzNDExNjUwMDI2NzcyZmViZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5YTlkYjM2MzU2ZGY5OTEzMmUyNWZiNmZhZWRjNGE3ZDM4Nzc4MTEzY2FlMDM0N2VmMTJjMmQ1ZWM3NGRhY2IzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2VtYXBob3JlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYjllYTViMDljYTc5ZWIyYTZmZmJkM2U0MzNiOGZiOTM0NDU0MDEwNmUzMTBjOGE4NjkyNTM3YWVhMTE5NTcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwN2NjOTdlZWNjYTdhYzQxZWJhN2Q1M2FlMzhmODI4ZTYzNzUxNTMyMGM4NjRlM2FjYTc2ODMxMGNiYzg1MmM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZDcxYjJjMmI4Mjg0ZjIwZTg4YzcyMjcwOTc5YjY4ZTVmODk5OGRmODM2ZTg3YzczYzNkYzgyN2FlNmU3MDgwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFkNjNlMDFhNDRjOTZmYWFkOTUxYTQ0ZTdmM2QwMzMyMTU2NjM3MTQ2ODc2M2ZlY2M4NmFkOGM1ODI4ZDdlNzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE0MzczMGQxNzcwY2I2NGMzMzYzMTQzZmI4ODY3ODMyZWU4ODdhNDAxYjhmYjUwMzAzNDYyYzQ5MTZjYmU5MTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkODRjYWY3OWVmYzc5OTI0ZDRkYjVmZGZkNjBmYzk5Y2ExZmM3MGYyM2VmYjE4NjY1MzFiMWJiZDRhYzE3OWYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE3NGE4ODFhOTliNjI3MTlhOWRhMWMxYjNiMjZlZWUyM2U0OWU2MmE3ZTg3YzY3NTU5MGRhMDM5NTZlMDkzYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI0NDhkOWEyNTdiNzQyNWE3ODRjMjRlM2RkM2YwNDY0NmZkZmU4MmY2MmI3YzhlMTVlOWJiZTVlN2U4ZjM0MWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNkN2JjNzFkMjFiZWJhOTNlNDU5YjcyNjllZTU0MmJiZWI0NjczNzdhNzRiOTdkYmQ5MWQxNDRmNGI3ODZlYTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjg2NmVkN2YxMGI2NjJkZWJmNzkzNjY0MDAxMmNmMmEwMjQ2Zjc5ZjU1ODEwOGYzY2M0NzdhNDgzNDM3NTkxYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4MmYyNjhhMWY2YmRjNjI4YmM2MjkxNjkzZTQxNmU2NjgwNWRiMzY3NDNmMDhlNjFkNDI2MGJkYzA1YzYzMDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTAxZmJmODI3ZDBiMGU4MzZiNzZlZmM3OTNhZTQ1ODM5ZmRiMWU4YTY1MjZhM2YyNzAxNmQ1NzVlNGYzODdlNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmE5MWFiNTI0ODA1MWQ1ZGM0MTJkNWNmZDY5NWU3NDZiNmM3NDQwNmIyZWQ0MWE4ZmQ4NTA2NTQyNzM4OWZhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxMjE3NjRmMGExZTY1MDI3MDYxNzcyOGEwMjUyZmU4NDRjY2RmNGM2Y2Q5MzkxOWZlODg3ZmI3Y2JhYTM3OGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmZjN2I2YWJjYTA2M2VjMjVhMGJiNjIxOTdlZDJlOTQwMWUwZDhkMmI0NzFlODUwYjYxZmMyYTdjNjcwYWJlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3dvcmtzcGFjZS1wb3J0LWF1dGhlbnRpY2F0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjU2OWM2ZDc1YWE0ODM1YjI5MjA3YmZlYjVlMmMzOTNkYzJhNWRjNTNkZjE0ZDVjNWVhMDM5NDg4ZmI2MDI0YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzZiNmU5MmVhNTg1YzE4ZmNhOWU0NTIyZTVmZWI2ZDUyNWQ1MTQ0OGY2OTdjMTE3OGFiNWZiNmY1NzBiMmZlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3dvcmtzcGFjZS1wb3J0LWF1dGhlbnRpY2F0aW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhZjA4NzEwNTc4MTAwNjBiN2VkNzVkNjAzYjQ0ZTExMmZmZGYxYTQ0NDY1ZTVhYTIwZTI3MjNkMjVhZDAyNjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NWRiYTdiZTE4ZDAxZThmNGU3ZjdjNmJiMDE1NzI0N2IxZWRkNjhhZDY3YzA3MjJhNThjMGU1ZGVjOTE3YzVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Nzc3ZmJlZjg3NzQyMDZlNzUzMzZmMWY4ZjZmZjlmZGYyOTFiNTMxMTA1NWViNTI2YWFmYWMyYjVjZWUyM2FkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzQ0MjQ3OWZhNTMxNmVmZjYwOTY5NTY5Nzc2YzdmMTc3ZWFiYTcwMDA3MDhlMWE4ZWJjZWMwYjRjMWY5ZmQ1MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjY2ZWUwYTAzOWFjNTgzOGEyNTlkODM1NDQwMDkxOWNkMDRlMGVhODIxYWU5NDBmYzNhMmM2ZDljMDBkMWRmNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0OTM5NDBlZGVkY2NiZmM0YTM0ZjgzYTM5MGM2ZWEwNGUwNDY5MWM5NTk5YmMzMjBiMTU3YTI3ZGMxOTJlMjZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2YyZDQ2NzM4YjkxNzNkM2I0M2ZjMzJlMzIwYWFmMTdiZGZlZDI1ZGQ5OTY0Y2YxNzQwOTI1MjFjZGRiYjI5ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjExM2IwZTY1OTViNGMwZjk1YzUzOGIxNWY1NWM1MjJmNDE4NDJmNjFhNDhlZmY4ODVkNGM4MDlkYmE5NzA4ODIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTc2NjUzYzQwYjAwMWZkZTU4YTU5ZDJiMjkyYTRkY2FkNWQxMWRkYzQwZjMyN2RjN2UzMGVhZGZjYjhjODhlMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOTk5OWY0ZTZmYWYwYWY3YzM0ZmU0OWFkNDQ0NDJlOTA5ZjYxNWMyZGExNWZhOTUwZGYxZDUzZmEzYzZiMDI3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2hlYWRsZXNzLXdvcmtzcGFjZS1sb2cuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ1YjdhMDM4ODdhMGM0ZGQ0ZjU0Y2MxNDg3NmNiZGZkNTA5NThkZmQ1NDBiMThjZjdkNjhhYWJjZDdlZjY0MjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MjJmMzNhNzQ3NzU0MDE4NWE2MWVhZTY4N2YyOWYxZDNjYWFjZmE0NDJjOGE0ZGQxM2I2ZWY3NDVlMGZmOGFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMjAyZWIwYTMyYzAyZTg4YjNjYjllM2MyNzYwNTY0ODQ5OWRjYjgwZDE0YzAxNWQ0MGQ0MDI0NzEwMTdlNGEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YjJhNDkyOGU0MDQ3MGVkMGFhN2E1NGM2MGExZGI4ZTg5YWRjNTMzMDQ4MjBmMjJjYWY0YzljY2RkMTk2NjRhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYyMmY0OTY0MTRhZGMwMjk4NTgxNjFiMDFjNTkyZjIwMTlmZTQ3NmY3MTk0ODYyNDIyNDNmZDc2NTRlNjg1MjgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NDkyNmNmM2QwOTg3ZjQzY2I0NzQzZjFiZDEzMTRlYjU5MmQ0OGNlMTM0OGQ2YmYyODIzNTNjNzAxYmJhZWEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYzVhMmJjMTUyNGFjMWU5NjkzOGYyNDVkOGY3MGY5MmZlMzBhZmNmMmFlMmJiYTg2M2UzNDBlZTk1OTA0ZDI1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkMGRlNjY4ODVhMDAyODRjOWQxMDA0ZGRkYTBlYzhhZDVmMmM4YmU4ZDE5MDJkZjJjMjIwNjU1MDAxNTBkN2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDVlNjgxMTM4MjcwNTFjZGQ5MTk1N2QyOWFlNjNhODFlZDBlODQ3YmE4OTE5YzdiZjhmOTdlOWJmNjlhMGQ0YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdiMjhmMTI3OWZkN2VmMDEwNzc4NmJjZDM3MDE4YjBkZjNmY2VjZGRjM2U5MGYxOTYxYzRjNTBlYTAyZDZiNTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YzRhYjE2NzllYWNmYzI4NmU5ZjRiNDQxMTM2MmM2MWVlZDJiMTkwZDk5YmFkY2JmZDBlNTI1ZDRkYTJiM2JlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM5MThlZDA0MjliNDNhOWJkNjE1MjRmNmFjNGNmZjkwMzdiZWFhNTY0M2E1NTEyOGU2OWEwMGU0MDg5YmZkN2MiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGUiOiB7CiAgICAiYnVpbGRlciI6IHsKICAgICAgImlkIjogImdpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheTowLjIuMTctM2ViZmIyYUBzaGEyNTY6Yjk2MjllMmQwNDMyYWRlYTFiZTdkZGRiMzYwM2UzNmQ5ZjY5YjA5ZDg5ODVmNzI1MjU3YWRhYWRlNTFkNGE0MCIKICAgIH0sCiAgICAicmVjaXBlIjogewogICAgICAidHlwZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheS9idWlsZEB5YXJuOjciLAogICAgICAiZGVmaW5lZEluTWF0ZXJpYWwiOiAwLAogICAgICAiZW50cnlQb2ludCI6ICJjb21wb25lbnRzL2dpdHBvZC1wcm90b2NvbDpsaWIiLAogICAgICAiYXJndW1lbnRzIjogWwogICAgICAgICJsZWV3YXkiLAogICAgICAgICJidWlsZCIsCiAgICAgICAgIi0tZG9ja2VyLWJ1aWxkLW9wdGlvbnMiLAogICAgICAgICJuZXR3b3JrPWhvc3QiLAogICAgICAgICItLXdlcmZ0PXRydWUiLAogICAgICAgICItYyIsCiAgICAgICAgInJlbW90ZSIsCiAgICAgICAgIi0tZG9udC1yZXRhZyIsCiAgICAgICAgIi0tY292ZXJhZ2Utb3V0cHV0LXBhdGg9L3RtcC90bXAuOEV1WDhMeFVQTiIsCiAgICAgICAgIi1EdmVyc2lvbj1zZXJ2ZXItdnNjb2RlLW9hdXRoMi4xNCIsCiAgICAgICAgIi1EcmVtb3ZlU291cmNlcz1mYWxzZSIsCiAgICAgICAgIi1EaW1hZ2VSZXBvQmFzZT1ldS5nY3IuaW8vZ2l0cG9kLWNvcmUtZGV2L2J1aWxkIiwKICAgICAgICAiLURsb2NhbEFwcFZlcnNpb249dW5rbm93biIsCiAgICAgICAgIi1EU0VHTUVOVF9JT19UT0tFTj1YM2JOYXRZUHVkSUpjQ3o2a0ZsVG41NHBydW1RQXFHaCIsCiAgICAgICAgIi1EUkVQTElDQVRFRF9BUElfVE9LRU49OGFlMGMyNzM4ZDRlZWE3MzA4ZmY1YTlhOGM1NDY1MzdjMWI1ZDhjNmRhNmExMjdhMjZiMTI1ODg2YjU4Nzc4NCIsCiAgICAgICAgIi1EUkVQTElDQVRFRF9BUFA9Z2l0cG9kIiwKICAgICAgICAiLURucG1QdWJsaXNoVHJpZ2dlcj1mYWxzZSIsCiAgICAgICAgIi1EamJNYXJrZXRwbGFjZVB1Ymxpc2hUcmlnZ2VyPWZhbHNlIgogICAgICBdLAogICAgICAiZW52aXJvbm1lbnQiOiB7CiAgICAgICAgIm1hbmlmZXN0IjogewogICAgICAgICAgImFyY2giOiAiYW1kNjQiLAogICAgICAgICAgImdvIjogImdvIHZlcnNpb24gZ28xLjE3LjUgbGludXgvYW1kNjQiLAogICAgICAgICAgIm5vZGUiOiAidjE2LjE0LjAiLAogICAgICAgICAgIm9zIjogImxpbnV4IiwKICAgICAgICAgICJ5YXJuIjogIjEuMjIuMTgiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgIm1ldGFkYXRhIjogewogICAgICAiYnVpbGRTdGFydGVkT24iOiAiMjAyMi0wNC0wNlQwOToxMzowOS4yMTA2MTQ3NjJaIiwKICAgICAgImJ1aWxkRmluaXNoZWRPbiI6ICIyMDIyLTA0LTA2VDA5OjEzOjQyLjg4NTg5NDE0N1oiLAogICAgICAiY29tcGxldGVuZXNzIjogewogICAgICAgICJhcmd1bWVudHMiOiB0cnVlLAogICAgICAgICJlbnZpcm9ubWVudCI6IGZhbHNlLAogICAgICAgICJtYXRlcmlhbHMiOiB0cnVlCiAgICAgIH0sCiAgICAgICJyZXByb2R1Y2libGUiOiBmYWxzZQogICAgfSwKICAgICJtYXRlcmlhbHMiOiBbCiAgICAgIHsKICAgICAgICAidXJpIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL2dpdHBvZC5naXQiLAogICAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgICAic2hhMjU2IjogIjcxYzgzY2IzMmRjYWRjNGZhNjhjMDBmYjZkYzdhMWMxYmEwZDIxMzgiCiAgICAgICAgfQogICAgICB9CiAgICBdCiAgfQp9","signatures":null}
2
+
@@ -4,9 +4,9 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- import * as uuidv4 from 'uuid/v4';
8
- import { User } from './protocol';
9
- import { oneMonthLater } from './util/timeutil';
7
+ import { v4 as uuidv4 } from "uuid";
8
+ import { User } from "./protocol";
9
+ import { oneMonthLater } from "./util/timeutil";
10
10
 
11
11
  /*
12
12
  * Subscription and acocunting data
@@ -33,7 +33,7 @@ export interface AccountEntry {
33
33
  /**
34
34
  * credit: end of validity
35
35
  */
36
- expiryDate?: string; // exclusive
36
+ expiryDate?: string; // exclusive
37
37
 
38
38
  kind: AccountEntryKind;
39
39
 
@@ -46,26 +46,26 @@ export interface AccountEntry {
46
46
  description?: object;
47
47
  }
48
48
  export namespace AccountEntry {
49
- export function create<T extends AccountEntry>(entry: Omit<T, 'uid'>): T {
49
+ export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
50
50
  const result = entry as T;
51
51
  result.uid = uuidv4();
52
52
  return result;
53
- };
53
+ }
54
54
  }
55
55
 
56
- export type DebitAccountEntryKind = 'session' | 'expiry' | 'loss';
57
- export type AccountEntryKind = 'credit' | DebitAccountEntryKind | 'carry' | 'open';
56
+ export type DebitAccountEntryKind = "session" | "expiry" | "loss";
57
+ export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
58
58
 
59
59
  export interface Credit extends AccountEntry {
60
- kind: 'credit';
60
+ kind: "credit";
61
61
  expiryDate: string;
62
62
  }
63
63
  export type Debit = LossDebit | ExpiryDebit | SessionDebit;
64
64
  export interface LossDebit extends AccountEntry {
65
- kind: 'loss';
65
+ kind: "loss";
66
66
  }
67
67
  export interface ExpiryDebit extends AccountEntry {
68
- kind: 'expiry';
68
+ kind: "expiry";
69
69
  creditId: undefined;
70
70
  }
71
71
  export interface SessionDebit extends AccountEntry {
@@ -80,9 +80,7 @@ export interface CreditDescription {
80
80
  }
81
81
  export namespace CreditDescription {
82
82
  export function is(obj: any): obj is CreditDescription {
83
- return !!obj
84
- && obj.hasOwnProperty('subscriptionId')
85
- && obj.hasOwnProperty('planId');
83
+ return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
86
84
  }
87
85
  }
88
86
  export interface SessionDescription {
@@ -90,16 +88,16 @@ export interface SessionDescription {
90
88
  contextUrl: string;
91
89
  workspaceId: string;
92
90
  workspaceInstanceId: string;
93
- private: boolean;
94
91
  }
95
92
  export namespace SessionDescription {
96
93
  export function is(obj: any): obj is SessionDescription {
97
- return !!obj
98
- && obj.hasOwnProperty('contextTitle')
99
- && obj.hasOwnProperty('contextUrl')
100
- && obj.hasOwnProperty('workspaceId')
101
- && obj.hasOwnProperty('workspaceInstanceId')
102
- && obj.hasOwnProperty('private');
94
+ return (
95
+ !!obj &&
96
+ obj.hasOwnProperty("contextTitle") &&
97
+ obj.hasOwnProperty("contextUrl") &&
98
+ obj.hasOwnProperty("workspaceId") &&
99
+ obj.hasOwnProperty("workspaceInstanceId")
100
+ );
103
101
  }
104
102
  }
105
103
 
@@ -113,11 +111,11 @@ export namespace SessionDescription {
113
111
  export interface Subscription {
114
112
  uid: string;
115
113
  userId: string;
116
- startDate: string; // inclusive
114
+ startDate: string; // inclusive
117
115
  /** When the subscription will end (must be >= cancellationDate!) */
118
- endDate?: string; // exclusive
116
+ endDate?: string; // exclusive
119
117
  /** When the subscription was cancelled */
120
- cancellationDate?: string; // exclusive
118
+ cancellationDate?: string; // exclusive
121
119
  /** Number of granted hours */
122
120
  amount: number;
123
121
  /** Number of granted hours for the first month: If this is set, use this value for the first month */
@@ -147,8 +145,7 @@ export interface UserPaidSubscription extends Subscription {
147
145
  }
148
146
  export namespace UserPaidSubscription {
149
147
  export function is(data: any): data is UserPaidSubscription {
150
- return !!data
151
- && data.hasOwnProperty('paymentReference');
148
+ return !!data && data.hasOwnProperty("paymentReference");
152
149
  }
153
150
  }
154
151
 
@@ -157,41 +154,44 @@ export interface AssignedTeamSubscription extends Subscription {
157
154
  }
158
155
  export namespace AssignedTeamSubscription {
159
156
  export function is(data: any): data is AssignedTeamSubscription {
160
- return !!data
161
- && data.hasOwnProperty('teamSubscriptionSlotId');
157
+ return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
162
158
  }
163
159
  }
164
160
 
165
161
  export namespace Subscription {
166
- export function create(newSubscription: Omit<Subscription, 'uid'>) {
162
+ export function create(newSubscription: Omit<Subscription, "uid">) {
167
163
  const subscription = newSubscription as Subscription;
168
164
  subscription.uid = uuidv4();
169
165
  return subscription;
170
- };
166
+ }
171
167
  export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
172
168
  s.endDate = endDate || cancellationDate;
173
169
  s.cancellationDate = cancellationDate;
174
- };
170
+ }
175
171
  export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
176
- return !!s1 && !!s2
177
- && s1.userId === s2.userId
178
- && s1.planId === s2.planId
179
- && s1.startDate === s2.startDate
180
- && s1.endDate === s2.endDate
181
- && s1.amount === s2.amount
182
- && s1.cancellationDate === s2.cancellationDate
183
- && s1.deleted === s2.deleted
184
- && ((s1.paymentData === undefined && s2.paymentData === undefined)
185
- || (!!s1.paymentData && !!s2.paymentData
186
- && s1.paymentData.downgradeDate === s2.paymentData.downgradeDate
187
- && s1.paymentData.newPlan === s2.paymentData.newPlan));
188
- };
172
+ return (
173
+ !!s1 &&
174
+ !!s2 &&
175
+ s1.userId === s2.userId &&
176
+ s1.planId === s2.planId &&
177
+ s1.startDate === s2.startDate &&
178
+ s1.endDate === s2.endDate &&
179
+ s1.amount === s2.amount &&
180
+ s1.cancellationDate === s2.cancellationDate &&
181
+ s1.deleted === s2.deleted &&
182
+ ((s1.paymentData === undefined && s2.paymentData === undefined) ||
183
+ (!!s1.paymentData &&
184
+ !!s2.paymentData &&
185
+ s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
186
+ s1.paymentData.newPlan === s2.paymentData.newPlan))
187
+ );
188
+ }
189
189
  export function isActive(s: Subscription, date: string): boolean {
190
190
  return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
191
- };
191
+ }
192
192
  export function isDowngraded(s: Subscription) {
193
193
  return s.paymentData && s.paymentData.downgradeDate;
194
- };
194
+ }
195
195
  export function calculateCurrentPeriod(startDate: string, now: Date) {
196
196
  let nextStartDate = startDate;
197
197
  do {
@@ -199,19 +199,19 @@ export namespace Subscription {
199
199
  nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
200
200
  } while (nextStartDate < now.toISOString());
201
201
  return { startDate, endDate: nextStartDate };
202
- };
202
+ }
203
203
  }
204
204
 
205
205
  export type MaybeSubscription = Subscription | undefined;
206
206
 
207
207
  export interface Period {
208
- startDate: string; // inclusive
209
- endDate: string; // exclusive
208
+ startDate: string; // inclusive
209
+ endDate: string; // exclusive
210
210
  }
211
211
 
212
212
  export type MaybePeriod = Period | undefined;
213
213
 
214
- export type AccountEntryFixedPeriod = Omit<AccountEntry, 'uid'> & { expiryDate: string };
214
+ export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
215
215
  export interface AccountStatement extends Period {
216
216
  userId: string;
217
217
  /**
@@ -223,9 +223,9 @@ export interface AccountStatement extends Period {
223
223
  /** Remaining valid hours (accumulated from credits) */
224
224
  remainingHours: RemainingHours;
225
225
  }
226
- export type RemainingHours = number | 'unlimited';
226
+ export type RemainingHours = number | "unlimited";
227
227
 
228
228
  export interface CreditAlert {
229
- userId: string,
230
- remainingUsageHours: number
229
+ userId: string;
230
+ remainingUsageHours: number;
231
231
  }