@gitpod/gitpod-protocol 0.1.5-wth-update-mysql-dependencies-2.31 → 0.1.5-wth-test.80

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 (295) hide show
  1. package/data/gitpod-schema.json +25 -24
  2. package/lib/accounting-protocol.d.ts +3 -6
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +10 -16
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +26 -4
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +15 -0
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +44 -0
  11. package/lib/analytics.d.ts.map +1 -0
  12. package/lib/analytics.js +10 -0
  13. package/lib/analytics.js.map +1 -0
  14. package/lib/context-url.d.ts +31 -0
  15. package/lib/context-url.d.ts.map +1 -0
  16. package/lib/context-url.js +102 -0
  17. package/lib/context-url.js.map +1 -0
  18. package/lib/context-url.spec.d.ts +14 -0
  19. package/lib/context-url.spec.d.ts.map +1 -0
  20. package/lib/context-url.spec.js +94 -0
  21. package/lib/context-url.spec.js.map +1 -0
  22. package/lib/email-protocol.d.ts +1 -2
  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.js +5 -4
  27. package/lib/encryption/container-module.js.map +1 -1
  28. package/lib/encryption/encryption-engine.js +19 -20
  29. package/lib/encryption/encryption-engine.js.map +1 -1
  30. package/lib/encryption/encryption-engine.spec.js +29 -36
  31. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  32. package/lib/encryption/encryption-service.js +29 -43
  33. package/lib/encryption/encryption-service.js.map +1 -1
  34. package/lib/encryption/key-provider.js +25 -30
  35. package/lib/encryption/key-provider.js.map +1 -1
  36. package/lib/env.d.ts +1 -2
  37. package/lib/env.d.ts.map +1 -1
  38. package/lib/env.js +20 -21
  39. package/lib/env.js.map +1 -1
  40. package/lib/gitpod-file-parser.js +25 -41
  41. package/lib/gitpod-file-parser.js.map +1 -1
  42. package/lib/gitpod-file-parser.spec.js +116 -116
  43. package/lib/gitpod-file-parser.spec.js.map +1 -1
  44. package/lib/gitpod-service.d.ts +124 -22
  45. package/lib/gitpod-service.d.ts.map +1 -1
  46. package/lib/gitpod-service.js +169 -278
  47. package/lib/gitpod-service.js.map +1 -1
  48. package/lib/headless-workspace-log.d.ts +8 -11
  49. package/lib/headless-workspace-log.d.ts.map +1 -1
  50. package/lib/headless-workspace-log.js +4 -7
  51. package/lib/headless-workspace-log.js.map +1 -1
  52. package/lib/ide-protocol.d.ts +105 -0
  53. package/lib/ide-protocol.d.ts.map +1 -0
  54. package/lib/ide-protocol.js +8 -0
  55. package/lib/ide-protocol.js.map +1 -0
  56. package/lib/index.d.ts +6 -0
  57. package/lib/index.d.ts.map +1 -1
  58. package/lib/index.js +7 -1
  59. package/lib/index.js.map +1 -1
  60. package/lib/installation-admin-protocol.d.ts +27 -0
  61. package/lib/installation-admin-protocol.d.ts.map +1 -0
  62. package/lib/installation-admin-protocol.js +30 -0
  63. package/lib/installation-admin-protocol.js.map +1 -0
  64. package/lib/messaging/browser/connection.d.ts +5 -3
  65. package/lib/messaging/browser/connection.d.ts.map +1 -1
  66. package/lib/messaging/browser/connection.js +183 -33
  67. package/lib/messaging/browser/connection.js.map +1 -1
  68. package/lib/messaging/browser/window-connection.js +35 -55
  69. package/lib/messaging/browser/window-connection.js.map +1 -1
  70. package/lib/messaging/client-call-metrics.d.ts +35 -0
  71. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  72. package/lib/messaging/client-call-metrics.js +83 -0
  73. package/lib/messaging/client-call-metrics.js.map +1 -0
  74. package/lib/messaging/error.d.ts +3 -1
  75. package/lib/messaging/error.d.ts.map +1 -1
  76. package/lib/messaging/error.js +6 -2
  77. package/lib/messaging/error.js.map +1 -1
  78. package/lib/messaging/handler.d.ts +10 -0
  79. package/lib/messaging/handler.d.ts.map +1 -1
  80. package/lib/messaging/node/connection.d.ts +1 -17
  81. package/lib/messaging/node/connection.d.ts.map +1 -1
  82. package/lib/messaging/node/connection.js +23 -59
  83. package/lib/messaging/node/connection.js.map +1 -1
  84. package/lib/messaging/proxy-factory.d.ts +2 -0
  85. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  86. package/lib/messaging/proxy-factory.js +74 -159
  87. package/lib/messaging/proxy-factory.js.map +1 -1
  88. package/lib/oss-allowlist.d.ts +14 -0
  89. package/lib/oss-allowlist.d.ts.map +1 -0
  90. package/lib/oss-allowlist.js +8 -0
  91. package/lib/oss-allowlist.js.map +1 -0
  92. package/lib/permission.d.ts +8 -1
  93. package/lib/permission.d.ts.map +1 -1
  94. package/lib/permission.js +36 -15
  95. package/lib/permission.js.map +1 -1
  96. package/lib/plans.d.ts +210 -0
  97. package/lib/plans.d.ts.map +1 -0
  98. package/lib/plans.js +570 -0
  99. package/lib/plans.js.map +1 -0
  100. package/lib/protocol.d.ts +121 -54
  101. package/lib/protocol.d.ts.map +1 -1
  102. package/lib/protocol.js +117 -131
  103. package/lib/protocol.js.map +1 -1
  104. package/lib/snapshot-url.d.ts +14 -0
  105. package/lib/snapshot-url.d.ts.map +1 -0
  106. package/lib/snapshot-url.js +26 -0
  107. package/lib/snapshot-url.js.map +1 -0
  108. package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
  109. package/lib/snapshot-url.spec.d.ts.map +1 -0
  110. package/lib/snapshot-url.spec.js +41 -0
  111. package/lib/snapshot-url.spec.js.map +1 -0
  112. package/lib/team-subscription-protocol.d.ts +4 -4
  113. package/lib/team-subscription-protocol.d.ts.map +1 -1
  114. package/lib/team-subscription-protocol.js +15 -12
  115. package/lib/team-subscription-protocol.js.map +1 -1
  116. package/lib/teams-projects-protocol.d.ts +113 -0
  117. package/lib/teams-projects-protocol.d.ts.map +1 -0
  118. package/lib/teams-projects-protocol.js +30 -0
  119. package/lib/teams-projects-protocol.js.map +1 -0
  120. package/lib/util/analytics.d.ts +8 -0
  121. package/lib/util/analytics.d.ts.map +1 -0
  122. package/lib/util/analytics.js +88 -0
  123. package/lib/util/analytics.js.map +1 -0
  124. package/lib/util/async-iterator.js +55 -133
  125. package/lib/util/async-iterator.js.map +1 -1
  126. package/lib/util/cancelable.js +17 -59
  127. package/lib/util/cancelable.js.map +1 -1
  128. package/lib/util/date-time.js +8 -8
  129. package/lib/util/date-time.js.map +1 -1
  130. package/lib/util/deferred.js +10 -12
  131. package/lib/util/deferred.js.map +1 -1
  132. package/lib/util/disposable.js +26 -39
  133. package/lib/util/disposable.js.map +1 -1
  134. package/lib/util/event.js +58 -74
  135. package/lib/util/event.js.map +1 -1
  136. package/lib/util/garbage-collected-cache.d.ts +1 -0
  137. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  138. package/lib/util/garbage-collected-cache.js +26 -46
  139. package/lib/util/garbage-collected-cache.js.map +1 -1
  140. package/lib/util/generate-workspace-id.d.ts +1 -1
  141. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  142. package/lib/util/generate-workspace-id.js +31 -68
  143. package/lib/util/generate-workspace-id.js.map +1 -1
  144. package/lib/util/generate-workspace-id.spec.js +57 -78
  145. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  146. package/lib/util/gitpod-cookie.d.ts +20 -0
  147. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  148. package/lib/util/gitpod-cookie.js +44 -0
  149. package/lib/util/gitpod-cookie.js.map +1 -0
  150. package/lib/util/gitpod-host-url.d.ts +1 -2
  151. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  152. package/lib/util/gitpod-host-url.js +95 -98
  153. package/lib/util/gitpod-host-url.js.map +1 -1
  154. package/lib/util/gitpod-host-url.spec.d.ts +7 -1
  155. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  156. package/lib/util/gitpod-host-url.spec.js +103 -31
  157. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  158. package/lib/util/grpc.d.ts +15 -0
  159. package/lib/util/grpc.d.ts.map +1 -0
  160. package/lib/util/grpc.js +18 -0
  161. package/lib/util/grpc.js.map +1 -0
  162. package/lib/util/jaeger-client-types.d.ts +68 -0
  163. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  164. package/lib/util/{without.js → jaeger-client-types.js} +1 -1
  165. package/lib/util/jaeger-client-types.js.map +1 -0
  166. package/lib/util/logging.d.ts +49 -33
  167. package/lib/util/logging.d.ts.map +1 -1
  168. package/lib/util/logging.js +107 -110
  169. package/lib/util/logging.js.map +1 -1
  170. package/lib/util/make-link.js +2 -2
  171. package/lib/util/make-link.js.map +1 -1
  172. package/lib/util/parse-workspace-id.d.ts +10 -0
  173. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  174. package/lib/util/parse-workspace-id.js +32 -7
  175. package/lib/util/parse-workspace-id.js.map +1 -1
  176. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  177. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  178. package/lib/util/parse-workspace-id.spec.js +123 -84
  179. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  180. package/lib/util/queue.js +16 -55
  181. package/lib/util/queue.js.map +1 -1
  182. package/lib/util/queue.spec.js +144 -288
  183. package/lib/util/queue.spec.js.map +1 -1
  184. package/lib/util/repeat.d.ts +15 -0
  185. package/lib/util/repeat.d.ts.map +1 -0
  186. package/lib/util/repeat.js +55 -0
  187. package/lib/util/repeat.js.map +1 -0
  188. package/lib/util/semaphore.js +15 -46
  189. package/lib/util/semaphore.js.map +1 -1
  190. package/lib/util/skip-if.js +6 -6
  191. package/lib/util/skip-if.js.map +1 -1
  192. package/lib/util/timeutil.js +28 -16
  193. package/lib/util/timeutil.js.map +1 -1
  194. package/lib/util/timeutil.spec.js +21 -24
  195. package/lib/util/timeutil.spec.js.map +1 -1
  196. package/lib/util/tracing.d.ts +51 -5
  197. package/lib/util/tracing.d.ts.map +1 -1
  198. package/lib/util/tracing.js +197 -62
  199. package/lib/util/tracing.js.map +1 -1
  200. package/lib/util/tracing.spec.d.ts +7 -0
  201. package/lib/util/tracing.spec.d.ts.map +1 -0
  202. package/lib/util/tracing.spec.js +121 -0
  203. package/lib/util/tracing.spec.js.map +1 -0
  204. package/lib/util/workspace-port-authentication.js +3 -2
  205. package/lib/util/workspace-port-authentication.js.map +1 -1
  206. package/lib/workspace-cluster.d.ts +76 -0
  207. package/lib/workspace-cluster.d.ts.map +1 -0
  208. package/lib/workspace-cluster.js +33 -0
  209. package/lib/workspace-cluster.js.map +1 -0
  210. package/lib/workspace-instance.d.ts +24 -2
  211. package/lib/workspace-instance.d.ts.map +1 -1
  212. package/lib/wsready.d.ts +1 -1
  213. package/lib/wsready.js +2 -2
  214. package/package.json +31 -17
  215. package/pkg-yarn.lock +17 -9
  216. package/provenance-bundle.jsonl +2 -0
  217. package/src/accounting-protocol.ts +4 -10
  218. package/src/admin-protocol.ts +47 -5
  219. package/src/analytics.ts +52 -0
  220. package/src/context-url.spec.ts +53 -0
  221. package/src/context-url.ts +107 -0
  222. package/src/email-protocol.ts +2 -3
  223. package/src/env.ts +10 -10
  224. package/src/gitpod-service.ts +181 -44
  225. package/src/headless-workspace-log.ts +7 -11
  226. package/src/ide-frontend-service.ts +1 -1
  227. package/src/ide-protocol.ts +119 -0
  228. package/src/index.ts +7 -1
  229. package/src/installation-admin-protocol.ts +42 -0
  230. package/src/messaging/browser/connection.ts +195 -14
  231. package/src/messaging/client-call-metrics.ts +97 -0
  232. package/src/messaging/error.ts +8 -2
  233. package/src/messaging/handler.ts +12 -0
  234. package/src/messaging/node/connection.ts +21 -68
  235. package/src/messaging/proxy-factory.ts +14 -6
  236. package/src/oss-allowlist.ts +15 -0
  237. package/src/permission.ts +24 -4
  238. package/src/plans.ts +632 -0
  239. package/src/protocol.ts +196 -85
  240. package/src/snapshot-url.spec.ts +25 -0
  241. package/src/snapshot-url.ts +27 -0
  242. package/src/team-subscription-protocol.ts +7 -5
  243. package/src/teams-projects-protocol.ts +147 -0
  244. package/src/util/analytics.ts +105 -0
  245. package/src/util/deferred.ts +1 -1
  246. package/src/util/garbage-collected-cache.ts +9 -3
  247. package/src/util/generate-workspace-id.spec.ts +20 -3
  248. package/src/util/generate-workspace-id.ts +22 -2
  249. package/src/util/gitpod-cookie.ts +39 -0
  250. package/src/util/gitpod-host-url.spec.ts +25 -1
  251. package/src/util/gitpod-host-url.ts +22 -13
  252. package/src/util/grpc.ts +15 -0
  253. package/src/util/jaeger-client-types.ts +102 -0
  254. package/src/util/logging.ts +102 -38
  255. package/src/util/parse-workspace-id.spec.ts +21 -1
  256. package/src/util/parse-workspace-id.ts +32 -6
  257. package/src/util/queue.spec.ts +1 -1
  258. package/src/util/repeat.ts +45 -0
  259. package/src/util/semaphore.ts +2 -2
  260. package/src/util/skip-if.ts +1 -1
  261. package/src/util/timeutil.ts +4 -4
  262. package/src/util/tracing.spec.ts +83 -0
  263. package/src/util/tracing.ts +183 -17
  264. package/src/workspace-cluster.ts +104 -0
  265. package/src/workspace-instance.ts +45 -13
  266. package/src/wsready.ts +2 -2
  267. package/lib/messaging/connection-error-handler.d.ts +0 -27
  268. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  269. package/lib/messaging/connection-error-handler.js +0 -46
  270. package/lib/messaging/connection-error-handler.js.map +0 -1
  271. package/lib/util/context-url.d.ts +0 -13
  272. package/lib/util/context-url.d.ts.map +0 -1
  273. package/lib/util/context-url.js +0 -26
  274. package/lib/util/context-url.js.map +0 -1
  275. package/lib/util/context-url.spec.d.ts +0 -10
  276. package/lib/util/context-url.spec.d.ts.map +0 -1
  277. package/lib/util/context-url.spec.js +0 -52
  278. package/lib/util/context-url.spec.js.map +0 -1
  279. package/lib/util/repeater.d.ts +0 -22
  280. package/lib/util/repeater.d.ts.map +0 -1
  281. package/lib/util/repeater.js +0 -118
  282. package/lib/util/repeater.js.map +0 -1
  283. package/lib/util/safe-promise.d.ts +0 -11
  284. package/lib/util/safe-promise.d.ts.map +0 -1
  285. package/lib/util/safe-promise.js +0 -34
  286. package/lib/util/safe-promise.js.map +0 -1
  287. package/lib/util/without.d.ts +0 -7
  288. package/lib/util/without.d.ts.map +0 -1
  289. package/lib/util/without.js.map +0 -1
  290. package/src/messaging/connection-error-handler.ts +0 -62
  291. package/src/util/context-url.spec.ts +0 -25
  292. package/src/util/context-url.ts +0 -23
  293. package/src/util/jaeger-client.d.ts +0 -105
  294. package/src/util/repeater.ts +0 -49
  295. package/src/util/safe-promise.ts +0 -26
@@ -10,6 +10,7 @@ export interface WorkspaceInstance {
10
10
  creationTime: string;
11
11
  deployedTime?: string;
12
12
  startedTime?: string;
13
+ stoppingTime?: string;
13
14
  stoppedTime?: string;
14
15
  ideUrl: string;
15
16
  region: string;
@@ -17,6 +18,10 @@ export interface WorkspaceInstance {
17
18
  status: WorkspaceInstanceStatus;
18
19
  configuration?: WorkspaceInstanceConfiguration;
19
20
  readonly deleted?: boolean;
21
+ /**
22
+ * Contains information about the image build, if there was any
23
+ */
24
+ imageBuildInfo?: ImageBuildInfo;
20
25
  }
21
26
  export interface WorkspaceInstanceStatus {
22
27
  phase: WorkspaceInstancePhase;
@@ -35,16 +40,16 @@ export interface WorkspaceInstanceConditions {
35
40
  failed?: string;
36
41
  timeout?: string;
37
42
  pullingImages?: boolean;
38
- serviceExists?: boolean;
39
43
  deployed?: boolean;
40
44
  neededImageBuild?: boolean;
41
45
  firstUserActivity?: string;
46
+ headlessTaskFailed?: string;
47
+ stoppedByRequest?: boolean;
42
48
  }
43
49
  export declare type AdmissionLevel = 'owner_only' | 'everyone';
44
50
  export declare type PortVisibility = 'public' | 'private';
45
51
  export interface WorkspaceInstancePort {
46
52
  port: number;
47
- targetPort?: number;
48
53
  visibility?: PortVisibility;
49
54
  url?: string;
50
55
  }
@@ -62,5 +67,22 @@ export interface WorkspaceInstanceConfiguration {
62
67
  theiaVersion?: string;
63
68
  featureFlags?: NamedWorkspaceFeatureFlag[];
64
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
+ };
65
87
  }
66
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,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAGf,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;IACF,cAAc,CAAC,EAAE,cAAc,CAAC;CACpC;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,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,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,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;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAA;IAGxB,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) 2020 Gitpod GmbH. All rights reserved.
2
+ * Copyright (c) 2021 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
  */
package/lib/wsready.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
+ * Copyright (c) 2021 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 2020-06-11 14:47:30.351829728 +0000 UTC m=+0.002956090
9
+ // generated using github.com/32leaves/bel on 2021-11-04 12:16:53.917570766 +0000 UTC m=+0.006002884
10
10
  // DO NOT MODIFY
11
11
  var WorkspaceInitSource;
12
12
  (function (WorkspaceInitSource) {
package/package.json CHANGED
@@ -1,40 +1,54 @@
1
1
  {
2
2
  "dependencies": {
3
+ "@types/react": "17.0.32",
3
4
  "ajv": "^6.5.4",
4
- "inversify": "^5.0.1",
5
- "jaeger-client": "3.17.2",
5
+ "analytics-node": "^4.0.1",
6
+ "cookie": "^0.4.2",
7
+ "inversify": "^5.1.1",
8
+ "jaeger-client": "^3.18.1",
6
9
  "js-yaml": "^3.10.0",
7
- "opentracing": "^0.14.4",
8
- "prom-client": "^10.2.0",
10
+ "opentracing": "^0.14.5",
11
+ "prom-client": "^13.2.0",
9
12
  "random-number-csprng": "^1.0.2",
10
- "reconnecting-websocket": "^4.2.0",
11
- "reflect-metadata": "^0.1.10",
12
- "uuid": "^3.3.3",
13
+ "react": "17.0.2",
14
+ "react-dom": "17.0.2",
15
+ "reconnecting-websocket": "^4.4.0",
16
+ "reflect-metadata": "^0.1.13",
17
+ "uuid": "^8.3.2",
18
+ "vscode-jsonrpc": "^5.0.1",
19
+ "vscode-languageserver-protocol": "3.16.0",
20
+ "vscode-languageserver-types": "3.16.0",
13
21
  "vscode-uri": "^1.0.1",
14
22
  "vscode-ws-jsonrpc": "^0.2.0",
15
- "ws": "^5.2.2"
23
+ "ws": "^7.4.6"
16
24
  },
17
25
  "devDependencies": {
18
- "@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",
19
30
  "@types/js-yaml": "^3.10.1",
31
+ "@types/mocha": "^5.2.7",
32
+ "@types/node": "^16.11.6",
20
33
  "@types/random-number-csprng": "^1.0.0",
21
- "@types/uuid": "^3.4.5",
34
+ "@types/uuid": "^8.3.1",
22
35
  "@types/ws": "^5.1.2",
23
- "chai": "^4.1.2",
36
+ "chai": "^4.3.4",
24
37
  "chai-subset": "^1.6.0",
25
38
  "mocha": "^5.0.0",
26
39
  "mocha-typescript": "^1.1.11",
27
40
  "rimraf": "^2.6.2",
28
41
  "ts-node": "^9.0.0",
29
- "typescript": "^3.9.3",
30
- "typescript-json-schema": "^0.43.0",
42
+ "typescript": "~4.4.2",
43
+ "typescript-json-schema": "^0.50.1",
31
44
  "typescript-parser": "^2.6.1"
32
45
  },
33
46
  "files": [
34
47
  "lib",
35
48
  "data/*.json",
36
49
  "src",
37
- "pkg-yarn.lock"
50
+ "pkg-yarn.lock",
51
+ "provenance-bundle.jsonl"
38
52
  ],
39
53
  "license": "UNLICENSED",
40
54
  "main": "./lib/index.js",
@@ -43,9 +57,9 @@
43
57
  "build": "tsc",
44
58
  "clean": "rimraf lib",
45
59
  "prepare": "yarn run clean && yarn run build",
46
- "test": "mocha --opts mocha.opts '**/*.spec.ts'",
60
+ "test": "mocha --opts mocha.opts './**/*.spec.ts' --exclude './node_modules/**'",
47
61
  "watch": "leeway exec --package .:lib --transitive-dependencies --filter-type yarn --components --parallel -- tsc -w --preserveWatchOutput"
48
62
  },
49
63
  "types": "./lib/index.d.ts",
50
- "version": "0.1.5-wth-update-mysql-dependencies-2.31"
51
- }
64
+ "version": "0.1.5-wth-test.80"
65
+ }
package/pkg-yarn.lock CHANGED
@@ -4,19 +4,27 @@
4
4
 
5
5
  "@gitpod/gitpod-protocol@0.1.5":
6
6
  version "0.1.5"
7
- resolved "file:///tmp/cache/adf0781237130b8c45d4ec6ab5e558f25a633351.tar.gz"
7
+ resolved "file:///tmp/cache/28784f8a438ac0813e16d080ce1a86725b7c79a3.tar.gz"
8
8
  dependencies:
9
+ "@types/react" "17.0.32"
9
10
  ajv "^6.5.4"
10
- inversify "^5.0.1"
11
- jaeger-client "3.17.2"
11
+ analytics-node "^4.0.1"
12
+ cookie "^0.4.2"
13
+ inversify "^5.1.1"
14
+ jaeger-client "^3.18.1"
12
15
  js-yaml "^3.10.0"
13
- opentracing "^0.14.4"
14
- prom-client "^10.2.0"
16
+ opentracing "^0.14.5"
17
+ prom-client "^13.2.0"
15
18
  random-number-csprng "^1.0.2"
16
- reconnecting-websocket "^4.2.0"
17
- reflect-metadata "^0.1.10"
18
- uuid "^3.3.3"
19
+ react "17.0.2"
20
+ react-dom "17.0.2"
21
+ reconnecting-websocket "^4.4.0"
22
+ reflect-metadata "^0.1.13"
23
+ uuid "^8.3.2"
24
+ vscode-jsonrpc "^5.0.1"
25
+ vscode-languageserver-protocol "3.16.0"
26
+ vscode-languageserver-types "3.16.0"
19
27
  vscode-uri "^1.0.1"
20
28
  vscode-ws-jsonrpc "^0.2.0"
21
- ws "^5.2.2"
29
+ ws "^7.4.6"
22
30
 
@@ -0,0 +1,2 @@
1
+ {"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkOTkwNTkxNWNjYTk1YTE5ZjU0ZmRmZWRmNzdlZGIyMTI2NWU2MDRmZThiYjY1NGZmZmU4N2IzMjMwZWE3ODcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjRlYWYwOWUyNWNkYjQ2MDM5Y2ZkMDZmNmNhMTFmOTNhZjA3Y2JmZmI2YzNmNmZmOWE5NTQ4OTY1YWNlMDQ2MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMjEwMjBhY2IxOTZlYmFjOGM0OTU3MDU2NGM0NGFmN2QzNjE2Y2M3MzFlYmQyYTZiMWQ1M2ViOGNiOWRmYTIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc0MDVmZjk5OGFiZjk4ZDQwMWIxZTU0ZWU4YzU3YmUwNTI3ZDYzZTViZTIyMmQwNmZhNTg0OTY0MDNhNDU1OWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWU4NTI0YWFjNDQwYWI2ZmUzMzk2MTI2YTdjNzc2ZWRjMzk3NWE1MzNiODJlY2I4MThiOTgyNmMyMjkwOGE2ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY3Y2MwYTY4MjVmMzk2NGM3MDgwOWU5YzY5MmIyMjU1ZmIzM2I2ZGI1MGQ1NTAxNTg2YmI3ZDkyMTAzODJjNzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjgzNmFkZjEyNTYzMjQ4OTlmNDEwYzdkNWY4ZTQzMDJkZDBkZjdhMWY1MDA4YTFkNjdmYjliZTQ1NzY5OGM1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWQwMDgzOWFkYjFmMmNmYzFkMTFhZjQ1YWZmMzRlODQxMjNiZjYwZmRmMzEyZTNmNTE2N2VlMTU3ZjU4Y2E1OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzQzMWQ3YTA2OGRkZWE3NTE4NTI5NDcyNDgzOGFmYmUxZTQ5YTM3ZGI5ZjQxOTA3ODJhZDc0ZmY0OGU4MTk3NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvaGFuZGxlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0OTIxZjg5Yjc0YzYyZmNiZTFjN2RmMDA4YTkyOGJlM2ZiZTliZmIzODljMDllM2Q1NDY4ODIyODE4NTE0ZDYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ4NDdmZDNjYmRhNjczMGY3ODhjYjdiZjA2NDlmMGNlYTk2MDljZjE3M2RhZDRkZWM0MGUzMjUwN2JjNzU0ZGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMyNTVmYTBkNzc4OGY0MzVjZDA4NTI5NTI5ZWI5OWUzZjVhM2QxZmE1MjUyOGFmNTY0N2MwZWNkODFjZGQ5NGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNjc3NmVlMjJmZmM0MGMwZjkwNWJlMGQ2ZTEyOTM4YzRhOWY3NjdmMDMzN2M0ZTY2YzExNWJlOTEzNDllODZjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU2ZDlkOGQyYWY4OGNhMTcyMjY0ZWQ5MGE5NWRkZmIzNmRlNzFmZDcxNTFhMTQ0YmM2NDYzZTA2ZTVmNmMxMjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjkwNTlhZGMzOWZjYjU0MjExM2QyY2NiMjg3NTJkODYyYjViNjNjZTViYWUxZDZlODU5Mzg1MDQzYjlhNGU5NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxODY5NzFjNDhhNmQxNDYzZDhjODVhYjFkODc2ZmQ0MzdkMDcyMTg4NzY4MzE2Njc1OTQ1ZTk5MzM2NDdlZmYwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3ZmIyNGVkOGZiN2YyOTRlY2ZkOTcyZmQzYmNiN2E5N2ZhNzk4M2E4Nzk2NGJlZWQzMGIzMzEwNDczY2IzMzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzk3ZjhlOTQ0NmE4MmUzMzVhNDNmZjIxZjQ0MTBlNTZmNTU0ODY5MDNiMWE4ZWM2MTRiMDVhMWJkN2E1MzgxNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1ODI4YzIwODMxMTI3ZjU1ZTQ3ZGZkNzhiNWNjNzU5MDI2MDRkMDRlOTMyYjNkY2E1YWE5Mzk4NTE5YzMyY2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE5YWI5ZDc2ZmY0YTg4OTc4MjY3MWM3ZjJjZDlkMGU4YzAyMTk1ZTM3NmE2MTdiNGU2OTAzNTQxNzM3YTQyOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRjYjliZGVlMjFhMzVlNWVhYWUyNmIzYmRlMzRhN2YwYjFiNzI5ODRmOGQ3MjY4ZDY2YWI1ZWI5MzU1OGU0MmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxNGFhMjU2NTY0ZDUzNzlmMzMzNzhhODZkMDk5OTYwNTM4MDYwNmRiNWU3Mjk5MDg5Nzk1NDJkNWY1MThiMTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhODhlOGVlYmZkMzg5MDk5MDhlMzA4YzYwODZiZTM0YzFkYzlhYzUzOGJhMzhmODU1ZTkwMzAxYjc0Nzg0OTFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhOWZkZDY4MTJjZjQ0NTE0OTJiYzQyZDMyMDNjZjFhMjM0YmVmNWE1Njc2MmRkZDMzMDcxZTlmNjBjOWEwN2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhN2NhNjAzNGI5NTdmZTI4NWY3NmYxY2RjNDUyMDU5NDhkYmY5YTczMDExOGMzMjkyNjBmYWQzODQ5NTdmZTg2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhODJmZDE3NjJhNjk3ZWY1NGI4NWY3MmFjNTM0NTE2Y2JkNzJiYWQzNzkyM2UwMjg4ZTE0YzBmZTQ5ODk3MDhhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzOGFkOGE5ZjY0ZTViODczMTE4OWI2MDUwNGJiYmEzNTNiMDcyY2NmYzNlZGU4OGFjZGM0NGE4ZTlkNjZlZWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk1N2I5ODkyN2RhZDBhOTdkZjQyM2NiOGUwYTFmNjBjMDlkY2ZmOTI4MWQxN2JmMmI0ZWJjMjMyMmViZmI5ZjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3Y2JhYzk2MTNlZDQwMDIzMWExNmNjYmU5ZDg5MWUyZDZhYmU4Mjc0Yjc3MGI1YjZkMjBhMzQ2MDA2NGM1OTk2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE5OTk5ZjRlNmZhZjBhZjdjMzRmZTQ5YWQ0NDQ0MmU5MDlmNjE1YzJkYTE1ZmE5NTBkZjFkNTNmYTNjNmIwMjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzkyNTBiMTRhMTUyYTdmNDI3ZmVhMzg1YzdjZWNlNWUzNmRiOGE2ZTMxMGIxMjM5YzZlYjE4ODFkZTk1NTE5OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODBmNmQ2MjM2OWZhZTM2ZmViODY2ZjFkMDkxODlhMTlkNjBkOTlhMzlmMzg5ZWQ3ODVmZjQ0YjU3NzkxNTRhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk2NGEyOTMxYzE3OTNkZGVhNWE4NmYyNTc2Y2ZiZTQzYjMyYWUwMjBmNmRhOTU4YWU0ZjY5MDVmOWY1MWYyMTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDkzZDk2MjliZmUxNmJiNGZjZDg1NDExZjYxNmZkYjZhYmRkYzA0ZGJlY2ZhYjE2OTE3MGU4YTI1OGQyOTBiNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFiNWU3ZGM1MDlmZDIzYmQzNDEyMzIxODgxMWUwMDVhODMxODNiZDM0ODQ4ZWIxYzk1ZmYzNmVlYzg2NGFiNWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDUzNGQ1NTg5ZTVmYjc4NTdlODQ1NGUyNjM2Nzk2NGNmODAxMzg2ZDFmYjhmYzA1MTVjZTJlNDFiMTA5ZThlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F1dGguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4ODkyMTE2YzIyNjIwNjJiOWU5YzMyNDAwZDdjOGFhZWI3NmQ2MjdlODc5NDlmODU1NGFmOGVmMGY3ZmVjZGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YzJmMjU5NjdmODVhZDc2M2IxMGRlOWUxNjQ2N2Y2N2FjNzM2OWYwOTE4NDYzYjg4NjUyNzUzNmNjNTZkZTk4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJjNDQwZTQ5MzZkMWNjMzdmODVjYTc4M2EyNDZkNzdiNjg5YzU0MDU4MmVhYjkxZDdlNDE2ZDFiNDdlOThmMWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3NjJiMTA2NWNkOTUyYzliNzNmYjc2ZTM0YzUxOTNjMTAxNjZmMzk5YTM3OWEyNTAyOTNmZjhjNjkxMDJmMjU3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4Y2YwMDcyODBiNjMxZTdhNDI1OGFiYTE3MDYwZDJjYjdiYThmY2U3MDMyYTA4YmYwMTdjZTVlYzNkZTQ2MjNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNDM3MzBkMTc3MGNiNjRjMzM2MzE0M2ZiODg2NzgzMmVlODg3YTQwMWI4ZmI1MDMwMzQ2MmM0OTE2Y2JlOTEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ZTJjMGRmZGU5NzAyYTJiODU5NzM4NzNlOGNiNjAzZGFjMmJkNjAyODc1NDgyNjNiMGMzMzYyOTY2ZGQwMGM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmM2JhY2I2ODJjOTBjZjgwZWVhMjJlZWI4NzQyOTA5OTEwMzM1MGNiM2U2ZWU5YWRjMzlmYzEwNTk4NTM4YTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNlNDI0YjE2MzAzNmNhNTJlOGZlNjc4M2UzZTJiYzcxMWMxOTFjZTMwZTY2MzE1ZDFjNWM1NmQ3YTdkMDU1ZWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjg3OGJlYjBmN2NlZjJmYTg5MjY2NTVlNWM1OTkwYzA5YTZiOWM4MGMwNDE2NjEwMjRiYjBiMGJmMjJjOGExOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRhYjJiYmU1YjUyMThkMjYwYjgxZGQ5YjU0OTcwZmIwYzk1OWRiMjA2MzFmOGJlODlmNTkwMjFhODQwMmE1MzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2E0NWUyNWE1ZDFjZWQwOWVmMWI1OGU0YThkOGE5ZTIyMGJlNjRmNDVhZWJjMzEyOGI1NTRkYTRjNDMwODhmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiMmFiNmY3MTE4NzJjZjM1YmMwNGE2NzI5MWY3ZGMzMjBiZjNjYTQ0ZDliNGVmNTIwZDlhZTAxMTY3ZGY2MTNiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjlhMWY1MGZjMWZjZjM2NmMwMzExMjFiNjVlZjYyMjk1ZGNjOWRiMjljOTk2ZmNkMjBmN2U4NjMxNGYzZGY1NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjU5NmQxZTQ0MDA4YThmZjJjMTM5YjI1N2Q0OTFkZTJkMGI4MGNiYjA3YTdmYTdjMTMyMTBjNDFhMWEwMThhMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTJiNjhjNWZkNTlmOWUzYmFmYzAxYWM4Njg1ZmIwNjlmYTEyNTkxMTAyNjg0N2E2N2FlMWQwZGQ3Y2ExZDhkMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMGJlYTVjNDVlY2IxMGFmZmNkOGIyMTA3N2FkNmZjNWY0ZTViNTJiNjBlOGM0MGVhMGQzMjVmMzZhNzM0NzFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmMxYzdkMzk3ZmNmYmViNjE2OTZmNjcyYTE2NmNiNTRlZTE0OGRhNWQ1NTVjYzUzNzc3NTVkZDg2MGJiM2E0ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZDM3OTRiYjY0OTFhOTFiY2QxNDAwNzQ1ZWI3Zjc0MDg4M2FiMTQ1NGE5ZTllMzg5NjEyNTEwYzMwODFhNWVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTllY2IyMDI5ZGYxYzViMmI3N2UwNWUwNDQ1YmMwNTFkNWY2YjQ2ZjIwMjU1MWM2MmI3NjJmN2E2MGM4NzkxNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmRlYTY3YWNlY2EyNzRlYjRhNDVmMTQ4NjJmYTMzMTcxNDJhN2YzNjFlY2U5YTA1MmY0ZDg4ZjU3Njg2MzFjNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMzc4M2ZjOGJiMTBmNDYwODllYWM4NGE1MTdkZDM2NWFlOWMxNmY4Yjg3ODZiYmY0MmFiNmZmYmVhZjRkOTZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU2YjgzZTUxNzcxOTRiNjJhNDY0MTM3M2Q3MmYzMDIwODFjODg5NTM3MWNiOTAxMTUzNzI1ZmQ4Yzc5MWZjYzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NDNkZTE1NTIwMTExNTkxNzJkYmQ1MWQ0YjliZDM2MGNkNTNlZWE2MGNkMWFkMDUxMmUwNDBkMWU0ZDUyZjliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OTE1NzI0Yzg4NDQ0Zjc4NDA5ZmI4ZDhiZjNmOTg4ZjU2YWNiN2M0YmUyNzVmZjhjMzEyYjFkMjc4NmEwZTIzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjI1OTA4NDJkZDc2N2VmOTA5NTc2YmJhYjgxMTA1ZjUwNDU5NGI0NmVjYmE5MmQ2YmZmZGRhMGU2NmYwZTEwNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmM0MDg5YzkwZTcyNDNhNTQyNzY5OTJlMTAyNDEwNDc5ODhjZDAxMTlhMThhNjU1MWRhZjMxMTU1NTc5OTQ4NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjExNTViN2MxN2FkZjUyZGNkMWI5YmI3ZTYwMDNiOWVjZjIzOGE3OTNjMjgyYTFkYmM5OTEyMTQyZjUwNjEyMjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2JiOGI2MGU2ZjVhN2NiYTVlZjViNTc1M2EzNmZkYzY4YWEzMmNmZDJlOWVjMjU5OTBjM2NmNjg1ZDQxMDg0OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI3MTNjMDM0MmU2ZmFiOGUyM2ZhNTIwMDFiNmE0NTdlY2MzNzdmMWUyZjNhMjNiNjA5NDdmNGJjZTUwYWJmMmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5ZDg3NWEzYzZmNDk3ZWQxZjllM2I5ODAwMTk0NWY4YmQxOTdiMTk5OWZiNmFkODdlMTc5ZDQ3N2QyMmZkNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTU0ZDMwZmZlZjlhOGFlMWY4ZTI4MTE0NWM1MzFhYmNjY2QxMDJlZGQ0MjRlMTYzYTY3YjAyNTEyMGI4YTA5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImYyOTgyY2QwYmIwZjgxNWVkY2JjYzMxZWY3ZGU0YWFkMzExM2UwNjYyMmNlOTZmOWE4MDZlM2E1NTc0MTNmMmEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZiNjIwNDI0ZDcwZTM4ODBiMzI0OWZjN2I3OGZhZjk5OTRjZGI1ZDU0Njk4OTQwNDdhOWZmMTJhZTljMDQ0MWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjY0ZTc4NDQ2M2EwZWYwMWQxYjliYzE5MWI3Y2UyMTEzYzEzZjkyZTgyYmEwMTQzZTJhYjJjMDU0MWJhZjI1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDFiNWQ1OWI0ZjdhZGZlN2Y4YzE3MWQ2YWE4N2RlZTEwYTBjOWViNTYxMzI2NDdlZTMxM2JkZjUxOTY2ZTk4MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmEyOGI5Y2NiYmE3NDQwOTc3MTgwNDBkMjE1NjFiN2ZiNTE3NDRiYzQ1ZDM3YTM0N2ZlZmFjMDRmMWNmMjk1ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ZjBjZjQzOTIwMWU5NzQ4NGM0MGFlYzYxMjY4YmZkZTllODc5ZjBkN2I2MmFkY2ZmNWY5MzlkOTMzYTM3MDVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM3YTI3MTEzNDczMDBlYWUzNWRiZmY4OTIyZDY5NGYwOTE3ZTc2ZGQ5MzFjMTk3NjA1NTYxNjA2ZmY4MjFlMTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzJmNTZlZTBjNzUzOWMzOWY2OTcxZWU5ZmE4MWMwNDUwZGZmNDRhYTNmMDFkNjY2YzhhZDYyMjliZGYzMzQ2NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODBkZWY0MDAzZWMwM2Q5YzQzZDNmYWQ0YWVmYmFmOTE4MjNkNWVjMDBlNmYzYjk0MmM2MmU4YTc2YTQxOTRhMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3YTI3MzFkMzViYzYzYmM5ZDMzZTg3ZmNjYTM1N2Y2NzNkY2MzMGEwMDFjYzQ1MWRkOGEwZDA3YTZlOTE5OWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDI0ZTQyNDhjYTQwYzRiZWFjYTJkOWIxNWUzYzc3NjkyZjlkMThkYTI5ZTcyZDZjNDM5NzBmZTMxYjEwOTNiNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90aGVpYS1wbHVnaW5zLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxMDFhZGFiYjIyNTRmNTE2ODJjYjNkYTAzZjliNGE2NGM1YTNlNjgyMGIzMzA3ZDg4NzNkYzE2ZDEwZDE0NmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU5ZTM0NzM2MmNhNzQ5NzAwYjE2NDJhNzY1ZTJkNjYwMWJmYmU2MGVmYWVkNmExZjkxMTliNjgzZTlkNjc1ZDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUwYTY0M2UwYjIzNjdhNDljYTU1NDEwYjhkNDMxOWFlMjFlN2ZkZmZmZDQ4OTk0OWJmYTEyOWU2ODYwZTY2ZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODlmMzQxNTlkMDM0ODU3NzUxNTMxODUxYWE2MDQ5NDg4Y2M2ZWE2YmJkYTMzNDRiZDUyNGM0NDY1MGM4OWRhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYjcwZGI4NThkZTU3NDYzMGZiNTU4MDFlMzQwMzIxOTUxM2EzMDk0YTNlZjBjZDkzMDg0OTM4MzFjZTM0ZDZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTVjY2NiODgyN2Q3YTkwZDViY2NiZDkwNTYwODY5MmFhMDUzZjJjMDQzODZkZmNlNWRlZmQwYTNiYjE2MzdkNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVkZTJlZGIzNTZjNjE5YjMwOTE4ZjZkMThmNWNkOTFiOWY0ZTcwM2ZkMWZlZDViNTVmZjA5M2YzZDUzMWQxODgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU4MTFhYTc1M2YxZTk1ZTdiODU5NGI0MTY4MmMzY2QxNGI2YzQ0Yjk1Y2FiY2EzYTI5ZGZhMzkyYjlkZWJiZjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcxNzg1YzQxNjAzOGMyZjcyZDE5NzE5Mjk5Mzk0OTE4MmRmNjlkZmNkYjJiMDZkNjQxODhiNzFhODQ1M2VlMDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNjVhMmJkYzIwYjY1M2JjNTQzNDdjYTMzZDM1OGQyMjEyMDA4OWU3Y2U1YzVjMTZjYTgxMzIyMzkxZGEwNzFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhkMjYyN2E0ZmYyYzA4MWI4ZDQ3YmNjMzYwZmQ5YzU3ZjQ5NGI0ZThkM2YyNmIzN2U3OTM2M2Q2N2E2YzQxZTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE1MzJiM2ZkZTVhOGM5NzQwNWQwNzlmODZhYTNiYWUxZWFlZmRiYzRjN2ZiMGRjYWVjYzJlNTVjYTk3ZTAzOTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlmOGUyYzAyYjMzMmJjYWJmNGIwOWJlZjVhZWNiYzlkMTEzMWY3MTNkODJiNTc2NTVhN2Y0Nzg4NDI3OTczMGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDZkNjRlZWQ3MGQzNzc4OThjOGJmOGY0MWZkMzhhZjgzYzk4N2M4MDQ1OTY4MjAyODU2YTIwYzQ1ZTEyYzViMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMGU0MDZhY2FiNTY1NWE2OGQxNTViM2E3ZDQwYWRmOTlkZDg1NWZkNjI5MWU1NmQyNjM2MzhlNjRkMTJjYjYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg3OTgxZGU2MDk1NTI4Y2NhNzUwYjlmMDQyOWNmYzBkMzZhODRlNGI0MjE3YzM3OGFiZDk0NWIxNTQ0Yjg2MTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkMmM3NTFhZTdhMTgxZWFmM2ZkZTM5ZDgzYjVkNmVmMWE5MTU5YjIwMDRkMDUzMzlkMzdlNTkwN2IzNjE2MWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YTQyYWViNTczYTE2YzRhZGZlMDMzYmNhOTFlNmEyZDIyZTY1MzRjYmEwZDhlMWMxYzQ3NGZjODY2YjdhY2Q4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDdlNjkwNjk0ZGQyZDM4MWZhZDI3MmNjODU3NDdmNWM2ODRkNzkwZWZhNWQ0YjRiZjBjMWZmMDRmNzA2OGQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGUyZWEwOTg4YmQwOTZlNjhkYjRhM2RmZjJmMDZjMzllZDU5NmEzMmUxMDNhY2FiNzRjZDYxYTQzYTlmMDMzOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbWFpbC1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmRiMTNlNTE1ZTJjYjE4YWZmOGQ1NmIxNzgxYzNjMzk0YjZmMmU2YjE5OTJhYTA2NGZlYWQ2ODI0NjZkYjliYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZWY4NmZkNTMwMDhmNDQ4ZWFkM2Y5MDQwYzE4ZTcwOTVmN2JiYjI5NTgyMTVjNzc2ZjJjOWYzYjRmM2QyYWRhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNGZhN2EwNjg2OWM3ODlkMjc0NmQ5OWViY2RjZGEyODgxYjU3MGUyOTk1Mjk3N2U2YjdlNGJhN2M1NGI1NWU1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYTg0OGE4YzRjYjI5ZDM3YWFhOWM5ODZmNTE0ZGFmMDZiZGVmNjQ0Mzc1MDhiYTY4YTk0YzQxODExODc2NGU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM4YTY5N2I0ZGJkYjVmMWFhODU4OTZjMTU3ZDI0Y2UwZDVkMTE1Yzc0ZjRhZDhhZjcxMjhkNDNiMGQ1NmE1NzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwY2JmNjIwMjJiNjU2MTZjNWExZWMwZDU5YmVjODExNjg1ZmVhYmUyMWIwMzg0YzhiOWVhZjVlNzQxYWIyM2ZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgxZTk5MzAwYmVhZWU2ZjM3ZjA2MGM5Njk1ODU3ZjM4MTM0ODIzM2FmYmRhNTc2Mzk2ZTEzOGJkNjgxNWQ3OTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiZDU1MWRlYjg0MjRjNDVlOTNhOTFkOGFlYWZiMjRmNDQ2NTg3MjNjZjk2MmY4MTZiNzg4MWI4ZWViMTU2ZDVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhODQwZTI1NWJlMDcxMjlhNDAwYjc5Y2NkZjFmZGM4MzM0ODU3ZjAzYzQzZGZiY2NkMWZjYTE1MmJjOGY0ZmE1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjc3ZTkzZDNjZmU0MDM4MjRiZTkxYjU0YTEwMjEwZGYzZDYxOTVhZGM0MmZlMGQwY2VkNjlmZWE4NTYxOTFhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM1OGFlZWE2NWZlZGU0MTBmYjliNzA1NjU4ZjNkOTQyMDA5OGEyNGExNTU5Nzc5ZTI4MGE1Y2IyNGQ2MzQ1NDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdmZmVlNzc1NjZkZjNhNzljOGMwODhhZmE4NGM4NWU0ZDg0MDg0MDM4ODFlMzIzMmYyNGExMTY4YjAzNjRlYTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ5YmFiYzViNDkzNjAzOTc1ZDg4ZGFmZGVjNGViOTE1ZjU1MTRkOGYwYTI2YmY0ZGYwYjY4YjA1MGUyYjM1NjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNDU5ZmYxZjIxYTBiYjJmZTJhNmEwM2RjYzQyNjUyODQ2Mjk3ZjllZDI2ODJiNTU2YmU0ODE1MTQ1OTk2NmQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNTIzNTc2Yzk0NTljZjg1ZDY2YTdlYTZjNjI4Mzc2ZDc2MGJiMjg1YWExNjc2MTRmODhlZjRhMWE4YThjM2IyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMDk5Nzk2OWFhYTQ3NTA2Mjg1YzE4MmRmYzU4OTgwOWRlYmVjNzUxZWE1Mjc2MzM1NjZhYmZmZmI3ZWJlNDMwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F1dGguZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YjM5OGRlNDljYjRkZDI1ZWQyMzczNjgzMzFkN2M0MjVkYjUwY2I4ZTZhZGJkODI4ZWUzZjFmMGMwMTNlYzQ5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFhOTM4NjFmZWQxZmQwZWUzYmVkOTQ3MDJiZjBlNGI2ODU4MDA1Y2E1NjY0YzMwMGE2N2YyZWY1MjZiMDIwY2MiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYjBmYzhkZjk3NDg4MDBmZGI2MjQ0MTE4OTIyMjMwODEwYjZlZmQ2YWQ4NmE2MzQxNzhlZjMwY2YwNjk5MDRmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2hlYWRsZXNzLXdvcmtzcGFjZS1sb2cuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmRmMmYxZmI5YTA2ODY2OWYzMmYzNTg4MDA3MzgwYjg1YWM1NzlhYjRhMmFjMDA3NjRiNmYwODg5YTliNmY3ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJiNmZhNWQzYjhiMzFiNjllOWY0OGE5YTIxMWQyNGNkODc4YTEwYjY5ZjIyMTViYjAxYmUyMjg0YzI0NmUyMDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZmEzNWI5OWEyYjk2ZWU3YzJiNDhjZjA5MDM5NTNlNjAyOTEzZTE4OTkyZWFiMTZjYTFiODcyYzQwMjE3NjViIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjOTIzNDIwN2NjMzgzNjVlN2FhNThmOWZmNWQ3N2RlMDg2ODM3ZjhkMGRmYzM0OWRhMzYwMzg2NmIxZDczZTM5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhM2VlNTNhM2JmYTYzY2U5NTJiNzExYzI1ZGIwMDYwZDJjOTI2MTQ1ZjY4OWU5NDEzODA0NzI4MzFmMmIzMTQzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNGI1ZWZiODhiNmJhY2FhMDMxMTY0NDUwMmM4N2VmZTUwNDQ4ZmU3MzZlYzIyYzQ0NzZkNjFjNjE2MWQ5Y2RlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDgxNWM4ZWMxNzUwYTg2ZGFmOWUwOTQzZWQzZDMzMWIwOTEyOWExZDJlN2ZmZmY1OTJjOTk4NTIyOGI2NWQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMmU5NDA0YzIwYmFiNGE4MWVlODM0ZTA4YThlNDg3NWZiMzFjMGQ2MWFmMTk5NTFkNTg0OGFjYThlYzg5NWNlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzI2MmM3NDI2MjE4Yzk2NzA5YTJjYzY2OGYxMjdlM2M4NDgxMDE0ZTUwNTlkMDVhZTI5MDdjNWU2MWJhNjY0OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQyMWNmYzIyZjRhMTE2YmJmYzdhZTgwYmRkYWViZGJiODlhOWJjZjM5YWNmMjk1Yjk4NDc4NjM5ODNmYjQ2MzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNjkzY2ExMjIyOGM4NjUyYWI1ZWMwYmEyZWM1NzM3MTJhNTk1NjdmNTY5MDQ5ZmVmZmNiOTRiNWMyZmJiNTZiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc1Y2JkODAzNmEyYTdiNmM3N2RlYzU5YzE5NzhmYWFhNjk1N2NiOWZlNThkNTViNDkwMWIzN2U2ZGU3YTNiNGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2IzZDkxOGU0MjUyNDczZmVlM2E1MzJkMTEyYzJkOGIzOWZmMGI0MTNkZGY4YzA1MWI2YTUyMzUwNDJkYTZjYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hY2NvdW50aW5nLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4Yjg5ZTlkZmJhMGUzN2U0ZTg1MjM1NmEzYjhiMzcyOWFhZWYyZTliM2M1OTBhODIwMzFhZTE3N2E3ZmZlYmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZjIxZGQ2Y2ZiMmYxNGY4OTg0MWMxYmE3NWQ1MWU4MDZkNWQwNjljNTJiZTdhYzc4YTI0ZWI1NDlkMjM2NTI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmQxZTJhMGZmODllZmMwZTEwYmFlOWE5YjA3Y2YwNGU5ZmE0N2QyMDQxOTllYWU3MzQ1M2JjYjMyZTViMmZmZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1MzMzNmEyY2RmYWEzZDIxNmRjYWVjZDgzYjg1NmIxZGMxNjRjZGI2NTZjNmZjZWFkMjBiMjI0ZTI3NjQ1MWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MjJmMzNhNzQ3NzU0MDE4NWE2MWVhZTY4N2YyOWYxZDNjYWFjZmE0NDJjOGE0ZGQxM2I2ZWY3NDVlMGZmOGFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZjZTIwZTczZWQ5Zjc1YzkyNzZkZGM4YTA0NGM0YjExMDdkNDgwMzY1OTJkM2ZmNDJjMjFiOGYzMzc5MzViYzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJiYmNkYmQxOTU0YjE0NDQ3ZDEyNjQ3M2JjNDFiYjAzYzEyZWZlOWUyNjEwMWMyNTRhODYxN2E1ODFjOWNlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZjVmYzQyZmM5YmI1ZmFkMTgyOGM0MmU3YTdhN2QxZGFjMzQxY2ExOWY3MTAzODNmNmMxMmU2NDc2N2M1OWJkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzODZmNDBiODdmOGRiYWIwNThmNTVhZmEyNTI1ZmNlMjc5NTdlMjVjODQ0MmIxMDc5NGZlNmQ1NjBlYWE5NWE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzQ0MjQ3OWZhNTMxNmVmZjYwOTY5NTY5Nzc2YzdmMTc3ZWFiYTcwMDA3MDhlMWE4ZWJjZWMwYjRjMWY5ZmQ1MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjc3NTg4NDg2OTcxY2RjN2YzNDIxNGRjN2I4ZTg4YTY1ZjhhMWY5ZmIzODVkMzRmOGQ5YTZmMzA4MTBkZGRmZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFhZDNmMThmYjA0OWY5YTUxM2MwYzg4MmRiNGEzYjFhOTQ4M2JlM2NlNmY0MjEzYzgwYjAxMWI1MWYyNmQzNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNWU2ODExMzgyNzA1MWNkZDkxOTU3ZDI5YWU2M2E4MWVkMGU4NDdiYTg5MTljN2JmOGY5N2U5YmY2OWEwZDRhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YzhhMzkwNzNmNmRlZjlmZjI5ZjIwZTBmOWMxZDY0Y2MzZjExODVhNTE3ZjZiMDM2ZjY0YmUxOGNlNzc1ZDM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRmYTY0OWE5ZWM0ZmM3ZGFkMTU5YzU4YjgwN2RkNzJlMmEzNWJjZTlkZTY1N2ZlNWJkZWQ1NDc3MTcwY2MyMzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MDcxNmQ4MjY4MWY5ODdlYjNlNTRiN2RhZDIxOTA2Y2JiODhmZGYxNGVjYjI3ODVlNDdlNzZiNTkyMTA5N2EwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2tpcC1pZi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiMzQ5OWE0NzE4YjcxZTVmMTg3NThjNjQ4OGEyZDNhNWZmZGRiMTc4N2QzN2FiZDlkMWI3Yjc0NmNlMGEwN2NhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODZkYzc3OTUxMTA3MThkNmVhN2IxOWUxYjAzMTdjNzYwZjNkZGY2NzJjMTE5ZDc3NzhjOWYyMmI5YThhMGY2NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNTJkNjVmOGIyYzAyYWUzMTA0NWZhOWI1NDBhOTFmZmU4NDgzMGE1MmY0NWQwYWFlMGY4NTc3ZDBjMmU1YmE0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YTA1NjRlMDUzMzY1YmYxZDJjZWIxYzY3YjNkY2E1NDU2MzYxMTliM2NlNTVjZjI3OGI3NWQ5ZTBmZTFkYjA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE3NGE4ODFhOTliNjI3MTlhOWRhMWMxYjNiMjZlZWUyM2U0OWU2MmE3ZTg3YzY3NTU5MGRhMDM5NTZlMDkzYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMDk1NzcyYjVjYzhlZWZlNWM0M2E5YWQ2YTU0OTZjMWVjMmExMTc1YzJiZjhkNjM4NTM2ZDkzYTRkYjI1NjA4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9wcm94eS1mYWN0b3J5LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU1OGNhNDAxMTIwMzg5MGRhZDExYTkwNDZmYWFjMzQxYjU0MmMzNmQ0ZjNiNTg2NmY0NWU0NDY2NGY2ODBkODUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxZjhiNDc0OTgyNjM2YzU4MTk4MWU1NjRhY2Q4NjI4YjZlZjM0ZmE4ZDEzYzE3ZjExMTg3Y2ViMzgyMjVhYzI1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY0MmMyY2JkMWNjM2IwYzVmZDAwYzgxODg3MzIxZWI3OTNlNGMxNmE2MzBlNjhjMjJkY2QwYzFmNmQ2M2JkYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmRkNjcwNTY0YzA0MmVlMDNmYTgwMmIwYTdlM2RiMzZhMzgwMWIzN2RhZjNjMDg1MTI4MGIzNWI3MTg5MmNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkzMTE5ODI0MDQ3ZmEzNjliMmI4Y2U2MGFiYjMxZjVkZjYxZDc4MDgxNDU4ODU1YmY0ODM4MzZhYjRkZmEwZDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU1N2FhYTNjYTJiNzQ4NGMxYjVlYjJkZDFlMWZlZGUyMGU1MjRjNzA2Y2UxMTZlYmZiNDRjNGE3NDgzMjU4YjUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ODFmOTRkOTdmNzNiNDAwNjE1N2IyODMwYTJhNDZiZDJjYzU3N2NkNzllNmU2NzM0OGQ0MDIzZjI5NzdmYjM1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTc3MDk2MDEzOWExYjdmMmUyMzJlZTcyNGU3NDkyZTMxNjlhNWMyNzFiMDg2NzM0ZGU3YzU1NWI0NzNjMWE0ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNDM0ZWE2YTYzZmIyYzU2MDRlODg1NzQ5MGZiNTRlZTk3MTVhYjIzODEwMDZhMThhYjUwZmQ0MTQwMWRmMTVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYWE4NjllZDM5ODBiNmEwZjdjYzk3MjA3Y2U5MWYyOWY3Y2RjMmUzNzcyNmIzYjU3MTdkMGY2MmMyZTEwNTE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImViY2I1YTIxNWM3Y2UxNzM5MDQ5YmE0ZTcxNGY1N2FmOTc4MzlkZDk1OWQ0MjdmNTdjYjRmOTcwMGM5OGNiZGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg4Y2I1NTlmNzc2MGE5OTY3MTlhOTIyYjAyYTNkYjVjMTRkOWQ3YjQ5ZWFlM2Q3OGZjOTYzYmY2Yjk4NGE1YjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTU0NGM0NjZkYjk1OWU3MTk5NGNjNjUxNjY2YWMxZjE1YmYwZTcxNTZkYTAxMzczNTFmZDkwZTk5NDJmMDMxZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDYyNzJjNjZmM2NkYjcyYTBjNmNhMmFkODRjMGU4ZDljZjUwZDZlNmI5MDYyZWFkZGFiZjcwNWMzNzkxNjY3MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDFmYmY4MjdkMGIwZTgzNmI3NmVmYzc5M2FlNDU4MzlmZGIxZThhNjUyNmEzZjI3MDE2ZDU3NWU0ZjM4N2U1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzYTIxYzZkMGIzODY2ZDUwZDcxNTc1NWFmMzE5MmI1YjkzOTk4YWJjNjc3YTQxNjdkZGMzY2Q0YTE3ZDE4ZDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk4Y2RlNTc1ZGQ3ZjE4MTE0MDM0OWIyMTUxOTcxOWRjZTNmZGIxMWI2MWMyNDg5NjcxMTE4MzBkNDlhYjE2M2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiN2FmOTMwM2UyNGMzMjVmYzk5NmY4MzVlZWZkNzM2MTk4ODdkOWFmOWVmN2MxNjJjNGZiOTc5MWUwM2YzMTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjNDUyM2Q1OWEzNWFkNTljYTFlNjlkZWYxOWE4ZjFjMDBiMDdjMmJkNDFiMThlZDg1YzExZjJhNWQ1ODNjNDg0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxMzAzOWU1ZmVhMTkwMjkxMDYwNWEzNmNiMmY1ZDNhZjA0ZTBlN2U1MDMzNjkyZTNkMWQ5ZWZhNTczNWVjZjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk3NzdmYmVmODc3NDIwNmU3NTMzNmYxZjhmNmZmOWZkZjI5MWI1MzExMDU1ZWI1MjZhYWZhYzJiNWNlZTIzYWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGQ5ZTkyNjk0NmYyYWU3OWNiMDA0NDc2MWIwZTc5NDMzNDM4OGFiOTNkMmRiNzA1YTYyZDg5NzU4ZTA1MmE1MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWViOTllY2JhNTFiZjYyODNkZTRmNGE4OTA0MGQxNmQzZjBmMmY5YjJmMjc5M2NkZDE3YWZkYmM3ZTUwOWM5NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFiMjZiYzBkODdlMzhmMmQwZWM2MzhhMjRiZTBmMDY5MGE2MWJhMzExZThlMjdjZGJjYjA1ODBlZmY0MjljNDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjRiYWQyNDg2OTUzZWRhMWQ1NmI1YTZjZWM5ZGExZTMyYmVhYzU0YTA0ZTFhMGMzNDM0MTYxYzRhNzYwMDU5NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZGY1YmM1MzkwYmQzOWY0ZmEyNGMxZGM4ZTU2YzY1YTU1YjFjNTNhZDg3Y2FiYzA1NmVmMmE0ZDBjZmRjMjY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAxNjIyMWM2YWU5OGI2YjJkOGQzYjE0ODRlMmM1NDI3OTVlYjc5YzU3ZDMzYWYwNmVkNTljMWM5Y2Y3YmNkMDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlhZGMwYmI3MTYwMWU4MWU0YmYzZGRjYWI3NGMzYTA4YzQ3ZDQ0ZTIyOTI1YzljOTFlMGVhYjhlOTdiMWNhYmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNTBjZWU3MGMzMWNhZTQzNjcyMmIxNDk3YTk1MWUwM2IyZDFmNGYzZjI3OWRmZWNmMGM4ZmMwZTkwZWI4Mzg0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGU2NTIwOGZlN2QwZDMwM2QyMmZmMjc2ODNiYzY0NGEwYTRmOTUwYTMwZGY3NDk4N2NjNWQyZjY0YzNkOTBlYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NzAyZjQ4OTIwZTkxYTIxZWNlYWY5MzNlNzMxNTNkYTUxMTBmYzI3YTY5M2VlYTUwMmFkNmI4OTIxZjBkYTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjVkYmE3YmUxOGQwMWU4ZjRlN2Y3YzZiYjAxNTcyNDdiMWVkZDY4YWQ2N2MwNzIyYTU4YzBlNWRlYzkxN2M1ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2OGRlYmRkYzIyMWQ2M2EyMjkxMzMwMWMzNGQ1ODliNGRhMjU3MGIxNmE0YWUxOWYxMDNjZjg0MDRjNGNkNDZhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiMDFiMDc1MDYzOWJlM2Y3Y2ZjMmY1NGVjYjhhMGIwZWYwMDI4NjIyY2M4NzNkZDljMTJhOGVkOTY2NWMxMDhjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM1ODdkNDg0ZTA2NTdhMDgwM2FlZmFiZTUwNzI3Y2VjODAzZmJlMzQ5YzUxYzkwNTdlMzQwYzBlZTRhZDhiMDAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODA0NTBlYzRiMGUxMWYxMGE2ODc3OGQxN2RlMTkzODQ5YzAxZmY0OTNkYThhNTNiNDA1MDM1NTY2MGJiMTY4OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWM2OWQzOWJlMTEzMDk0MjlhMTZiMzFjMTYwZDNjNDAzMDJmNzEzYzYwMzRhZTEyNmFhYzJiZTQ1ZDM4ZGNiZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MTUwMWQ1N2U3YTEzNDg5MzFjOTNhNDNhZjI0NTkxYTZjZTM2YzRjYzdhMzE3YzBhYzUyN2RmYzEwOTFkYTYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNWE2ZWRkNmQzMWFjNzdkNGZjN2RhOTU3MzEyNzU1MzRkMTliMmFmYjIxZDExODU5YTI3NWY0NjcwYmY3NDc1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMjAyZWIwYTMyYzAyZTg4YjNjYjllM2MyNzYwNTY0ODQ5OWRjYjgwZDE0YzAxNWQ0MGQ0MDI0NzEwMTdlNGEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWFiOGQwOGEzN2I0NjI3NjgwYjkyNjZhY2IxOWE1NjhlZGUzODI2YWU0M2ZmZTEyNjQ4NGI2OWY3OGU2NzU3ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90aGVpYS1wbHVnaW5zLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGM1MzQwN2ZiZDVkZjhmOGMyYmNmOTQyNDM4NzM4M2M1NjM5MTIzYWNjNTJiZjEzOGVkODk2NzEwOTE1YWZmOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1Nzg1M2Q3YjdlNTFkNmEzNDYxNGMyZWFhNzQ5ZGVjMWE0MDJiNmRiODU4YzAzYTk3ZGE2ODJhYTI4NjEwYWJiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDQ2MjAxZDlhMmQ1YTQ3ZDI3OWUwOGE5ZWJjNDE0ODE0OTJlNmJkZTE3MjZmNTg3YTM4MjY2ZWFkNjZlNTg3NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4YmM4NGY1MTUxM2I0NTExNzU5ZTI3ODQ1NjM0MDFjY2M5NzYyOTVlOTc1NGM4Y2Y1MDRkYzg1MDg3MjA2MWIyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYjE5YmE1ZjZkOTkzZmNjZDQ3ZWM2YTY3ODgwNTUzMzZhNDJlNjkyMmZhNGNiZTg5YzJiNDc2NWYzMjIxYjBiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2FlZWFlZTg4Y2Q3YjE2Mjk3Nzk0OGM1NGNhNzNiOTMxY2RmODNmMDA5ZjFiN2UwZTNiNjYzYTYxMjAyY2FjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYjFkOWE1NmJlOWFjM2UzNjZiN2NlMmVlY2VkNDNjOTAzNmQzZGM4YjllYTIxMjFkNzY4MmIxMzFmMjUzYmI1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMjgyNDkyZmUxMWI3NWYzNTY5ZjlkZDkzMjcxZjM0MDY5MzU5MWU0M2YwZTg3MDY5ZmFjMzg1ZmJjYjBlZTMxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI5ZmZhM2Y0YzhlN2IzM2I1YjJmYWUzNGYxM2E4NTdlZWM5NzYwZmM5ODc3NGRjOTNmYjQxZmUwODcyNTE4YTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NDk2YjA4NDhiYWJkNmFiNjllMGMwNjRkNDFmZjJlMGI1MzAwZGVjMjc1NWE2MDYxZTQ4NzhkZTBiOGFjNWVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMGZmNzA3MGEwY2FiYjBhZWUzOGQ1NjA3Y2JlMDBkZGM0ZjY5N2M1OTBmNTZjOTczZGM5NGY5ODlhNjE1MTgzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOThmZTBlZmIzMmYwNzc0NWE2ZmMyZmQ1MzRlMTFjYjU4MzBlNzVlNmY3YWI2M2I4YTE4YzlhZWVlZTlkNzFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjMwNjUzNWM1MjdjZTY3OTJjNDYwMzVjZjlhN2QyOGFmZjFkZmM1ODU4ZDgwYzg0YWFlNzM0ZDM1YzljMjcxMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZlZDgzODkxN2UzZGE0MDY5ZGEwMjRkMmQ0ZjFhZDBmNDNhMDY5MDUzOGNjNjg4ODkxMjI1YWE5NjZhMDYwOTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjAwNTRjOWFhOTRkOWIzNjZmNjFmZWZjMGM5OGNlNDE0NTI3NzI4ZmUwNDJjZjM1OGRlNzAxMzc1MzU2ZTI0NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiZWRhNWQxYzJhNzA3YWVmNGJhNWMzZTFhNDIzM2Y3ZDllNGE1MGUzMWFhYmYzZGJiOTljODg0NjJlOTg2ZmU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2Q2NzE5MjA3YmY5YTg5NjQ0OTdjY2Y4NDVmNGI5OTVmNzEyMTZmMmU3Nzg0ZTk2MDJlYmY1ZjM0OWU2NGJkMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJiMTJiMTk3ZjhhNjNmOTY4M2M0ZWY0MDQ5ODZkOWIzMWFiZTYwODUwZTJlN2VjNTBjOTRiNGY2OWNmNjZjYzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDU0MGVjNzhlOTUwY2I3MzdmMmI2M2M4ODJhODZkOTM5ODEyYzY2MTJlZTRmMmUzYWM3N2EyNjVmOTMzMjc2MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVkNDBhNTRiYWQyMzhhNjI3MzhhYTA0ZmU0ODY3Y2MwYzgxM2Q5YzFhYWIyMGExZTI4YWE5OGViNmIwNTExMGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGhlaWEtcGx1Z2lucy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjExYTE1YzM0NTVlY2E3MzNlODc3ZWYxNzkxZDI5NjQ5MjZkMmEzMTU0N2Q1NGM4ZjljMGMwNjIyNmUyM2U2NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWZhMjMyMGE0NWQwNmQwZWI1MDM4ZTM4ZGZiY2I4OWZiNDMwZTFlMDZjZjQxZTdkMzI3ZDY1NjNmMmYyYzZjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmM2NhNGJkMGU5MGFkMDc0NzgwY2M2NjlhZmFhZjEwOTQ2ZTZlZDU1N2U1NDc2M2M5YWQ5N2VhNDlkZTdlY2MwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTQ0YTI2NWNlNjFkNmE5ZDg4NzczMjdjZjAzMTQwMTE5NmUzZjJhNTc5OWY1NTU2NTc2NjA2YzgwZmQyZDhjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NzdlN2I2Y2IzYmVlYTAxYWU0ZDM3NWFkNDkzYWY2N2E0MWIzMzM4NzI3MGY5NTQxZDNjODUzZjIyZjY2N2UwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMWM0ZjcyZGFjNjdjNGNlZjg1MjQyNzgxYzkxOGQzZGY0MzIwY2VhMjA2YWVkNzE4ZjFlNmMxZDRmMGU2MDIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2RhOTVhYjBkMmJmMjRkNzQ0NmZhNTM4YjExZDI5ZDQ5ZDA5NTkwOWMxOTgxZWYyNzhlYjZjNzNhNTE2OGNhNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTYyNTQxNjY1ODUxMDAyZjQ4NTMyYTVjYjg4MTk5Y2JkOTY5Y2VlMTU4MDUxZTU0NjU4YjAzZmNlY2JiYzg4MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM2OGFlMTIwMDU5ODE5ZTBlYzZmZjNhNDg3Zjg0ODM4YTk2YmZjNzFlNzkwY2VkZmRjN2UyZTkyMzdkOTU2Y2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU3YzcyZWZkMTVjZWU4OTliNGY0NjI4NzM5NDhjZTdkODlhYzIzZGQ0M2FkY2NlYzM5ZGEwZTcwNzkxMjM1MmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE3ZmNlMDRkMmM4MGFkYmI2YmJmYTdmZjFiOTgzOTgyMDU2MmFjNDIzN2MzOTgyZmY2MjZkNzFjMDZiZDFlMTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY4ZGM1NmI1MGUxZGE2MzhkYThmZGYxZjc3YTMxOGIxNTFkMzhiNzNkOTY2NjBjNTg5YjAzNzdiNjM0MmYyYWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGJlOTk3MDU3NWJmMzAwOTZmZTI1NWFlNWUyOWUyY2VmNjkyMzgyODU2MTZmMGNlNDFmZmJiNGM2N2MzMDU2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWQ5MDFiM2JlMGQwOGRjOTNiMmE5YmM3Y2JhYzlmZmM0YzczMzRhYzNmM2JmZDQ2MjQ3NDM2YTcyOGJkNjdjNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhjNjFkN2RkZWZlODUzNGQ0ZmZmMGI3NzgyZTZhNGEzZTQ2NzY3ZDcxZjY4YTMwNTU4NDI4ZmM5ZmQ5YWU5NTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkODRjYWY3OWVmYzc5OTI0ZDRkYjVmZGZkNjBmYzk5Y2ExZmM3MGYyM2VmYjE4NjY1MzFiMWJiZDRhYzE3OWYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJhNmQwMmY2MmEwZGI3MDU5MDMwZGFjNzc0ZTEwZjU3NzM1ZDgzZGM3MDIxZTk3N2U1ODU0ZDAwYWZjYjIzNzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NTRlYjNlYzU1YmM4ZDc5ZThjNmU5MzNhYzQ0MTU3YmRiZWQzOGI2NmFkNzNiM2E0ZmRjYTRhYjQ2OTJlY2EwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEzYmIxZTU1MGJkMGEzZTlmODMxMzA0ZDc0MGNmZWE3Y2NkZDcwZWQ0YTAzZjAwYTBjMDE5YzYzMjIwYzI0YTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MGRkZjFiM2M1MmMzZjdlY2NmZGIyNmRlZGM4MTkwZDkwMTJhZDg4MmJjOTMzYjhjZTVjZjZjMzYyOWEwNDFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkxMDAyYWUzNGRmMjEzMWY2MDNkZWMyZmMxMzM5Njg5Nzk1YTEwYjdhYWE0ZWY2NzRlYjI4ZGVlN2UxYjNkMWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJjMjVjYmQzMGI0MzJhYzk2MDJjYTA5M2E1YTM3NmU0YjA1Mjc2MTdjZmE1NTNhOGM1ZTUyOGZkM2ViYTZkNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRjNzc0MWRkMzk4NDk5NzJjOTVlOWQxYTc5ZjU1ZWM4OTY5NmRlYzdhNDc2OWUxY2Q2N2E0NTE0NWM2OTEwYWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRmZDY3MTYxNDAzN2VmMjcxZWVlMzVhMGJjZGNkMzM4ODdmYTdkYjQwNWJjMTY5NmYxMjMyZTQzYjJlMTVmODQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBjNmFkMjU1YzdjY2Q5YzQ1ZmU0MWIzNTc5MzdiZmEzNjQ2NTAwYjYwYTE1NmJkMmViZTZjNDI1NmMwMzhhNzEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlY2E4YTA4Y2MyZjJiYWEyMGRlMTk3NWM3ZmU2NmExN2JjZTcxYzUyOTY4MzNmZmQzNzI4MzVlYjI4ZWNmMjhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMTM2NDVmN2U0ODM0ZTNmZTYxMzY1ZDVkMjVjYmVlMTUxNDU0N2FiNjgzMzYyYzAxZjU3YTg5ZTVkYjZlOGQzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI0MzQ0ZWVhNDc0ZmU5Nzk5ODdjOWJmZWY5NTFmYTM4OGRjNTJkZGU1ZTE1ZWZjY2ZhMjIwNmMxNzczZjEwZDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYzgyODA2ZGNkZTFmYTljODk4NzY2Mjg2NzViZjA3NTJiMmQxZWE1ZDJkM2RhYTgyYzFjZDllNjhmMDE1ZDQ0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEwZDlmYzcwZDA0NGNlMDAxYmVkZjk1NTI0NTlmMjVhY2JmZWI4Njk2NGRjY2IxYzc1M2E1NjRmYWI0MzMyMmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMmUyY2MxODVkODRkMmU4YjI5ODNjNGI2YWU5ODE0YjNiYTIxNDhlMDQyZTA5NWQ2ZTM2ZjI0MmRhZTFmNzdmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIveWFybi5sb2NrIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUzYzI4OWQzNjQ2MWIwYTRiMTNkZDdlMjA0NjFjYmZlMGNlMTE0OGRkNjMzZWVhZjczNGRhY2EyMzdiNGNhODMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzI5MDU2MjFhNGNlNTZkZmExZDVkZTFmNjg1NDEwOWNjNGI5MDVlMWE0Y2RlMmMwNTMzYTYyNWI5ZjY0NDcxMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGM3MmUzNzIzZGJkOWRmNTJjZmZlNjhjY2I4ZTk3ZDM2OWVmN2RiMWEyM2I1ZTVlMTZjZDljNWI3MDQzMzhmOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMyN2Y4NjJjNTRlNzljZDZlODMzNjcyOGU2YmZhZmQ5YzcwNWU3OTEzYThkOWI0M2M3Yzk1OTM5ZTNiNzc5ZDIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODlhMDY2ZTc5ZDRlZjhmYWQ0N2ViNjllZjkxMWVmOTAwMzljNzJlZDE2ODg4YzhkNDFjMDRmYTI2YTFkYjY5NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODU4MmMxOTFjNDM2MjQwNGU3ODc1M2ZhMDE1NWFhZjMyOWEzODYyYjAzODgzYTAyOTQ3N2I0ZTZmNjA5ZGQwNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2Q0MTg5OWFjMjllN2ZiN2U3Y2E3MTE5YjNkMmI3ZTBkMTUzNTEwNjZjMTVhYzM5ZDBiYzY5NmY5ZjhlZDZkOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDdiMjFkOWNmMjNhZjU0ZDRkNTEyNjEyZjEyMTEzZWMyOTYwODM5ZjNkMmZjYmY5ZDE1N2Q5OTUzYjBhNGQ4YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc0ZWYyYmQxOWZmNjQ3YzQ3NDgwODkyMDQyNzIyZjEzYWQyY2NjM2NmYTk2YzliODI4MjUyODJmODk1NWNlM2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZTVjYjMyNzYzMzQ3YjkyNzEwMzY4MmNiYWQwNDY4ZWIwZmIxZTkzODY3OWM0NDY0NTYwOTdmNWRkZTA3NjlhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMWUwMTJhNzFiZjJmZGYwYjhlZDViYzA0YTQ0ZGE5Mjk2ZTg4YTM3YTAzOWFiNDc5Y2Q4ZWI2ZDMzMjk4ZjY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZTNhN2NlYmI0YjA4ZjI4NTQ3Zjg5YmZjNGU2YWMzNjZmODY1YjI5MzY0ZmFhNWU1ZmJmNDllNWJlY2ZhMWQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZGRkYmI0YWY0OWI2NzljZTQ1YmQ2OTI1MDNlNWI3NTQ0NDdjZDRhMTk2ZjVkNTY4MGJjYzQ1N2Y1NWRkYWRmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9wcm94eS1mYWN0b3J5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDMzOGEzOTAwNjQ1OTAwNGY5NDc5YmE4MGJmMGI2M2EyMDcxNDcxZDM0MDAyMjYyZjRjODM3NzQzZGE5NDZmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NzQwZWY2MWExNjIyZTM5YjExZWVjZDc1MmEyMjQ3NWI5NTRlNWVmNzVlMjFhZDdlMWEyN2Y1YzY1OTJhM2NlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MGEyZDYyNjgwMTU5MmNiYmIzZDMxMzEwMzcyNjFiNmI1MWI1Y2ZjMmMyOTU0ZTIzYzUyZWQxZDMwZGI0NjIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ4MDhmZDI3ODEwZGNhNmY5YjA2NDU2YmYxMzBlZTBlYjFlMjcyNjJmNmNhMGI2MzRmMmQ1MmE1Njc2ZWI3NmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRkNzFiMmMyYjgyODRmMjBlODhjNzIyNzA5NzliNjhlNWY4OTk4ZGY4MzZlODdjNzNjM2RjODI3YWU2ZTcwODAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGhlaWEtcGx1Z2lucy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxODBiNzQ2YzQ1YjMwYTU1Yjg4NmNkMDU1NGVlNzMyNGI1YjhhMjhiYjhmMzA5MDgwMTk2MDE3ZmQwYzQxZTVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA5YWZkZTA5MDRkZWUzMTE2NGMwNmQwNGI2N2VjN2NmNDk4NmNkZDAzZGJmNmQ0ZGI2YTFhNmJhMTY4ZGY3NzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjMzYWM1OTIwZGEyNDRiODYzMzg3NDkyNGU4ZTM2ODA1Zjg4YzQ4MGViNTE4YjliNjBhMzI0YzIwMzE4ZDdlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNzA5YjJjZDQwN2Q3MzQwNGU1YmI3NTdmMzRhNTIxMWU5Mzk4NzhiNDRkYTJkZjk0MjJmZWFhODY1YWVhYjU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Blcm1pc3Npb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWU4NjY3OTgzOTBhY2UzMjdmNTU5YjFiMWRjYTVlOWEyZjVmY2FiNGQ2MGQ5NWY4NjFkOWU2ZGRhMzk0NmEwOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhOGJiZjhkY2U5Y2Y1MjI3NjkxYTA2YTRiZTdlYjc1NmY4MWQxODQ1ZTFhMThlNTgwOWM2MjM4OWU4NDhiMzkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk5NTkwYWMzNWFkNDEzOWIzNGI5NGYyZTU0YWY3MzgwYzNhODNiNDEwOWExMzkxZGM5OWIwOGZmYmNkNTUxMDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE2Mzk2NTFmZWYwOGE2MWM2N2RkMGI5MGQ0N2E1ZDE0MDE0OWMzNGEyNTYzZWE1ZGIwZTVlY2Y1NzAyNWJhMTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTFhM2FhMjk4YzI3NjY0OGM3YWMyNGE4NDExNWJmNWM4ZDczNzVmMWJmYzM1NzI4MmYxY2I0MzhjNTg5ODQ4MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAwNjdkYzgzMGIyYTVkZTBkNTJlNzRlMzIzODEyN2U2NzlhOTM2ZTBhNzcwYWFjYmNlNjYxNjJiMjIwMDMxNGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNjQ4ZTYyNTIzODAzNGRiYmEyNDJlOWJiOWJiOWIwNjIzMmQ3N2MzOGE1MTdmYmZlYjg3NzNjMmQwYmYyNzczIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTYxMTQ3MzM3YTViZjZlZWQ4NDJlNmE0Y2IwMGRjYzU4YTNjNTM1ZTE1NDU0NDg4NWRhYmQ5YjYyZTAxZjZkNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjI3YWYxZjM1NTZkYmFkNzM1OGVkMjVjZGNhZTY1ZjEyYjUzOThjNjNiNWFmOWIzMzliNDRhZjc4ZDNhZWYyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWQxMzRkYTk1MDczM2QxYjQwYjk0OGE5ZjZiYTRiYWQ5NTQ5NzdiMmE0YzYxMzQ0NmM2OGFmZjAxOWEzMmJlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NDFlMjM2MTAzNzNjZWRlYWVmYWEzYzJmMDQ3NDlhYTU1Y2E3OGEzYzVlYmQ5NTg4YWZiMjg5MDg1YjU1ZGZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTY2NTQ3ZWQ2YTk5NjM1MGQ5NmRmNWRiZjA3MTMyN2ViM2M5MDUyMmI4NzU5Njg3OWMxNTdmNzA5ZDE3NjEyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YTRjN2UxODUxODllNDEwZWFmMDY4OWY5NmRhMTNiZTg5NjUwNWNjNjQxZmYyY2M4ODg0MDNlMDkzYzcxNjZjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTRmZjdjNDMwNjMxMzQ2NTk3MTcyYWIxYjFlMWYyMGNhY2YwYjNkNzViYmNkMmZkNWE3ODA3MzZjYjFkZjhhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZTg4N2ZhMzY5ZjhkNjg1NTVjM2E1ZjJlYmU2ODEyMGNhN2QzNTJkMzNhZTc2ZGFhNmM5Yjg5MTAwZjIwMmYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGRiNWZiZTg0MzU0NWNjMjI1YTI1MmU0NGI0MGUyYzY1ZWQ3YWRhOWQwZjZmZTRiMGE4ZGQwYWI4Y2YyYWJhMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MGYyOWM4OTZhNmI4ZTZiMTcyNzk2ZWRiNTMyN2Y2OWUwY2IzZDMwZDQ2NjUxYzg5N2M2YzBlOWNhMWI2NTAxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQxY2ZhYTIwNjNlZTBjOWZmY2JkYWI3MDUzMmNmN2UzYzJkNmY0YTFlYzJiNjZhZDIwZjBkOTVlZTI0YTE5NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZDA0ZTNjOWQxMWYxOGQ3YWNmM2ZhZDA3MTlmYmVkNDFjZTNlM2U4ZTk4YzJlMTc1ZGJhOTM2NmQwNzUzNWVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMwMjRiNGM1MTUyNTFlMmExOTc3ZDQ3ZTE5M2Q5ZDI0ZmFlNTAxZmUwNmJjZTFmOTljNTU3YzhkMWE0YzU1NzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZjYWFmMGY0ZmUwOTk3OTgxY2NmNDMwMzljZjBlNWE3YTM5NTUzMWM0MDkxNjc5ZGJiZGY1ZmI1M2FlODRlYTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMjY1ZjY4MzMzZWI0Mjg3MmYyYTI0NjRlMDE2NGRlNWJmOGZmYzQ0NjFkYTNlYzFhMTlkYTQ1NDllNDcyMjZhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxZTZlZjJjMTEwMjA0N2ZmZmJhZDJjYTAzNTI0ZWU4ZjQwZWQ1NTlmZDc3NDBmMTJhMDg2ZWU0Y2JjNTU1MTU3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNDYzZWMyZjA5MTlkZTAyMTJmNzFmMDRmMzRjMWE3ZjcyNzc4MWE0MzU1ZWE4NGM5Mjg0MzU0Njg5YTE1MjVhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZhYjI2ZWJhNGYxMTA0M2RlMDgyYjNiYjAyZTE0NmNkYjZhOWY1NzQwMGI0OTBhNmQ2NWVjMGZlYzM1OTUyMDQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0NDFmMGMzYTc2YWRiZGQ2MWI4YjI5YmU0MjUzZDFkOGQ1MzBkODk4MDk0NzRiYTg3YTY2YjZiM2VlNzkwNTg5IgogICAgICB9CiAgICB9CiAgXSwKICAicHJlZGljYXRlIjogewogICAgImJ1aWxkZXIiOiB7CiAgICAgICJpZCI6ICJnaXRodWIuY29tL2dpdHBvZC1pby9sZWV3YXk6MC4yLjE3LTNlYmZiMmFAc2hhMjU2OmI5NjI5ZTJkMDQzMmFkZWExYmU3ZGRkYjM2MDNlMzZkOWY2OWIwOWQ4OTg1ZjcyNTI1N2FkYWFkZTUxZDRhNDAiCiAgICB9LAogICAgInJlY2lwZSI6IHsKICAgICAgInR5cGUiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dpdHBvZC1pby9sZWV3YXkvYnVpbGRAeWFybjo3IiwKICAgICAgImRlZmluZWRJbk1hdGVyaWFsIjogMCwKICAgICAgImVudHJ5UG9pbnQiOiAiY29tcG9uZW50cy9naXRwb2QtcHJvdG9jb2w6bGliIiwKICAgICAgImFyZ3VtZW50cyI6IFsKICAgICAgICAibGVld2F5IiwKICAgICAgICAiYnVpbGQiLAogICAgICAgICItLWRvY2tlci1idWlsZC1vcHRpb25zIiwKICAgICAgICAibmV0d29yaz1ob3N0IiwKICAgICAgICAiLS13ZXJmdD10cnVlIiwKICAgICAgICAiLWMiLAogICAgICAgICJyZW1vdGUiLAogICAgICAgICItLWRvbnQtcmV0YWciLAogICAgICAgICItLWNvdmVyYWdlLW91dHB1dC1wYXRoPS90bXAvdG1wLmhHSU50MjVFYzciLAogICAgICAgICItRHZlcnNpb249d3RoLXRlc3QuODAiLAogICAgICAgICItRHJlbW92ZVNvdXJjZXM9ZmFsc2UiLAogICAgICAgICItRGltYWdlUmVwb0Jhc2U9ZXUuZ2NyLmlvL2dpdHBvZC1jb3JlLWRldi9idWlsZCIsCiAgICAgICAgIi1EbG9jYWxBcHBWZXJzaW9uPXVua25vd24iLAogICAgICAgICItRFNFR01FTlRfSU9fVE9LRU49WDNiTmF0WVB1ZElKY0N6NmtGbFRuNTRwcnVtUUFxR2giLAogICAgICAgICItRG5wbVB1Ymxpc2hUcmlnZ2VyPWZhbHNlIiwKICAgICAgICAiLURqYk1hcmtldHBsYWNlUHVibGlzaFRyaWdnZXI9ZmFsc2UiCiAgICAgIF0sCiAgICAgICJlbnZpcm9ubWVudCI6IHsKICAgICAgICAibWFuaWZlc3QiOiB7CiAgICAgICAgICAiYXJjaCI6ICJhbWQ2NCIsCiAgICAgICAgICAiZ28iOiAiZ28gdmVyc2lvbiBnbzEuMTcuNSBsaW51eC9hbWQ2NCIsCiAgICAgICAgICAibm9kZSI6ICJ2MTYuMTQuMCIsCiAgICAgICAgICAib3MiOiAibGludXgiLAogICAgICAgICAgInlhcm4iOiAiMS4yMi4xNyIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAibWV0YWRhdGEiOiB7CiAgICAgICJidWlsZFN0YXJ0ZWRPbiI6ICIyMDIyLTAzLTAyVDExOjUwOjExLjk2NDM1ODY4M1oiLAogICAgICAiYnVpbGRGaW5pc2hlZE9uIjogIjIwMjItMDMtMDJUMTE6NTA6MzMuMzg1MzA2NzIxWiIsCiAgICAgICJjb21wbGV0ZW5lc3MiOiB7CiAgICAgICAgImFyZ3VtZW50cyI6IHRydWUsCiAgICAgICAgImVudmlyb25tZW50IjogZmFsc2UsCiAgICAgICAgIm1hdGVyaWFscyI6IHRydWUKICAgICAgfSwKICAgICAgInJlcHJvZHVjaWJsZSI6IGZhbHNlCiAgICB9LAogICAgIm1hdGVyaWFscyI6IFsKICAgICAgewogICAgICAgICJ1cmkiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9naXRwb2QtaW8vZ2l0cG9kLmdpdCIsCiAgICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAgICJzaGEyNTYiOiAiNmRmY2E0NjVhYmMzZDNmMTVhYWQyOTFmZGIyMjRhMWE0NDVkNDc0NCIKICAgICAgICB9CiAgICAgIH0KICAgIF0KICB9Cn0=","signatures":null}
2
+
@@ -4,8 +4,7 @@
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 { Without } from "./util/without";
7
+ import { v4 as uuidv4 } from 'uuid';
9
8
  import { User } from './protocol';
10
9
  import { oneMonthLater } from './util/timeutil';
11
10
 
@@ -47,7 +46,7 @@ export interface AccountEntry {
47
46
  description?: object;
48
47
  }
49
48
  export namespace AccountEntry {
50
- export function create<T extends AccountEntry>(entry: Without<T, 'uid'>): T {
49
+ export function create<T extends AccountEntry>(entry: Omit<T, 'uid'>): T {
51
50
  const result = entry as T;
52
51
  result.uid = uuidv4();
53
52
  return result;
@@ -91,7 +90,6 @@ export interface SessionDescription {
91
90
  contextUrl: string;
92
91
  workspaceId: string;
93
92
  workspaceInstanceId: string;
94
- private: boolean;
95
93
  }
96
94
  export namespace SessionDescription {
97
95
  export function is(obj: any): obj is SessionDescription {
@@ -100,7 +98,6 @@ export namespace SessionDescription {
100
98
  && obj.hasOwnProperty('contextUrl')
101
99
  && obj.hasOwnProperty('workspaceId')
102
100
  && obj.hasOwnProperty('workspaceInstanceId')
103
- && obj.hasOwnProperty('private');
104
101
  }
105
102
  }
106
103
 
@@ -164,7 +161,7 @@ export namespace AssignedTeamSubscription {
164
161
  }
165
162
 
166
163
  export namespace Subscription {
167
- export function create(newSubscription: Without<Subscription, 'uid'>) {
164
+ export function create(newSubscription: Omit<Subscription, 'uid'>) {
168
165
  const subscription = newSubscription as Subscription;
169
166
  subscription.uid = uuidv4();
170
167
  return subscription;
@@ -193,9 +190,6 @@ export namespace Subscription {
193
190
  export function isDowngraded(s: Subscription) {
194
191
  return s.paymentData && s.paymentData.downgradeDate;
195
192
  };
196
- export function isCancelled(s: Subscription) {
197
- return !!s.cancellationDate;
198
- };
199
193
  export function calculateCurrentPeriod(startDate: string, now: Date) {
200
194
  let nextStartDate = startDate;
201
195
  do {
@@ -215,7 +209,7 @@ export interface Period {
215
209
 
216
210
  export type MaybePeriod = Period | undefined;
217
211
 
218
- export type AccountEntryFixedPeriod = Without<AccountEntry, 'uid'> & { expiryDate: string };
212
+ export type AccountEntryFixedPeriod = Omit<AccountEntry, 'uid'> & { expiryDate: string };
219
213
  export interface AccountStatement extends Period {
220
214
  userId: string;
221
215
  /**
@@ -5,10 +5,12 @@
5
5
  */
6
6
 
7
7
  import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol";
8
- import { Without } from "./util/without";
8
+ import { FindPrebuildsParams } from "./gitpod-service";
9
+ import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol"
9
10
  import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance";
10
11
  import { RoleOrPermission } from "./permission";
11
12
  import { AccountStatement } from "./accounting-protocol";
13
+ import { InstallationAdminSettings } from "./installation-admin-protocol";
12
14
 
13
15
  export interface AdminServer {
14
16
  adminGetUsers(req: AdminGetListRequest<User>): Promise<AdminGetListResult<User>>;
@@ -18,16 +20,30 @@ export interface AdminServer {
18
20
  adminModifyRoleOrPermission(req: AdminModifyRoleOrPermissionRequest): Promise<User>;
19
21
  adminModifyPermanentWorkspaceFeatureFlag(req: AdminModifyPermanentWorkspaceFeatureFlagRequest): Promise<User>;
20
22
 
23
+ adminGetTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
24
+ adminGetTeams(req: AdminGetListRequest<Team>): Promise<AdminGetListResult<Team>>;
25
+ adminGetTeamById(id: string): Promise<Team | undefined>;
26
+ adminSetTeamMemberRole(teamId: string, userId: string, role: TeamMemberRole): Promise<void>;
27
+
21
28
  adminGetWorkspaces(req: AdminGetWorkspacesRequest): Promise<AdminGetListResult<WorkspaceAndInstance>>;
22
29
  adminGetWorkspace(id: string): Promise<WorkspaceAndInstance>;
23
30
  adminForceStopWorkspace(id: string): Promise<void>;
31
+ adminRestoreSoftDeletedWorkspace(id: string): Promise<void>;
32
+
33
+ adminGetProjectsBySearchTerm(req: AdminGetListRequest<Project>): Promise<AdminGetListResult<Project>>;
34
+ adminGetProjectById(id: string): Promise<Project | undefined>;
24
35
 
36
+ adminFindPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
25
37
  adminSetLicense(key: string): Promise<void>;
26
38
 
27
39
  adminGetAccountStatement(userId: string): Promise<AccountStatement>;
28
40
  adminSetProfessionalOpenSource(userId: string, shouldGetProfOSS: boolean): Promise<void>;
29
41
  adminIsStudent(userId: string): Promise<boolean>;
30
42
  adminAddStudentEmailDomain(userId: string, domain: string): Promise<void>;
43
+ adminGrantExtraHours(userId: string, extraHours: number): Promise<void>;
44
+
45
+ adminGetSettings(): Promise<InstallationAdminSettings>
46
+ adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>
31
47
  }
32
48
 
33
49
  export interface AdminGetListRequest<T> {
@@ -64,7 +80,7 @@ export interface AdminModifyPermanentWorkspaceFeatureFlagRequest {
64
80
  }[]
65
81
  }
66
82
 
67
- export interface WorkspaceAndInstance extends Without<Workspace, "id"|"creationTime">, Without<WorkspaceInstance, "id"|"creationTime"> {
83
+ export interface WorkspaceAndInstance extends Omit<Workspace, "id" | "creationTime">, Omit<WorkspaceInstance, "id" | "creationTime"> {
68
84
  workspaceId: string;
69
85
  workspaceCreationTime: string;
70
86
  instanceId: string;
@@ -72,6 +88,32 @@ export interface WorkspaceAndInstance extends Without<Workspace, "id"|"creationT
72
88
  phase: WorkspaceInstancePhase;
73
89
  }
74
90
 
75
- export interface AdminGetWorkspacesRequest extends AdminGetListRequest<WorkspaceAndInstance> {
76
- ownerId?: string
77
- }
91
+ export namespace WorkspaceAndInstance {
92
+ export function toWorkspace(wai: WorkspaceAndInstance): Workspace {
93
+ return {
94
+ id: wai.workspaceId,
95
+ creationTime: wai.workspaceCreationTime,
96
+ ...wai
97
+ };
98
+ }
99
+
100
+ export function toInstance(wai: WorkspaceAndInstance): WorkspaceInstance | undefined {
101
+ if (!wai.instanceId) {
102
+ return undefined;
103
+ }
104
+ return {
105
+ id: wai.instanceId,
106
+ creationTime: wai.instanceCreationTime,
107
+ ...wai
108
+ };
109
+ }
110
+ }
111
+
112
+ export type AdminGetWorkspacesRequest = AdminGetListRequest<WorkspaceAndInstance> & AdminGetWorkspacesQuery;
113
+ /** The fields are meant to be used either OR (not combined) */
114
+ export type AdminGetWorkspacesQuery = {
115
+ /** we use this field in case we have a UUIDv4 and don't know whether it's an (old) workspace or instance id */
116
+ instanceIdOrWorkspaceId?: string;
117
+ instanceId?: string;
118
+ workspaceId?: string;
119
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License-AGPL.txt in the project root for license information.
5
+ */
6
+
7
+
8
+ export const IAnalyticsWriter = Symbol("IAnalyticsWriter");
9
+
10
+ type Identity =
11
+ | { userId: string | number; anonymousId?: string | number }
12
+ | { userId?: string | number; anonymousId: string | number };
13
+
14
+ interface Message {
15
+ messageId?: string;
16
+ }
17
+
18
+ export type IdentifyMessage = Message & Identity & {
19
+ traits?: any;
20
+ timestamp?: Date;
21
+ context?: any;
22
+ };
23
+
24
+ export type TrackMessage = Message & Identity & {
25
+ event: string;
26
+ properties?: any;
27
+ timestamp?: Date;
28
+ context?: any;
29
+ };
30
+
31
+ export type PageMessage = Message & Identity & {
32
+ properties?: any;
33
+ timestamp?: Date;
34
+ context?: any;
35
+ };
36
+
37
+ export type RemoteTrackMessage = Omit<TrackMessage, "timestamp" | "userId">;
38
+ export type RemotePageMessage = Omit<PageMessage, "timestamp" | "userId"> & {
39
+ includePII?: boolean;
40
+ };
41
+
42
+ export type RemoteIdentifyMessage = Omit<IdentifyMessage, "timestamp" | "userId">;
43
+
44
+ export interface IAnalyticsWriter {
45
+
46
+ identify(msg: IdentifyMessage): void;
47
+
48
+ track(msg: TrackMessage): void;
49
+
50
+ page(msg: PageMessage): void;
51
+
52
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License-AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import * as chai from 'chai';
8
+ import { suite, test } from 'mocha-typescript';
9
+ import { Workspace } from '.';
10
+ import { ContextURL } from './context-url';
11
+ const expect = chai.expect;
12
+
13
+ type WsContextUrl = Pick<Workspace, "context" | "contextURL">;
14
+
15
+ @suite
16
+ export class ContextUrlTest {
17
+
18
+ @test public parseContextUrl_withEnvVar() {
19
+ const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/https://github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
20
+ expect(actual?.host).to.equal("github.com");
21
+ expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
22
+ }
23
+
24
+ @test public parseContextUrl_withEnvVar_withoutSchema() {
25
+ const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
26
+ expect(actual?.host).to.equal("github.com");
27
+ expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
28
+ }
29
+
30
+ @test public parseContextUrl_withEnvVar_sshUrl() {
31
+ const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/git@github.com:gitpod-io/gitpod-test-repo.git", context: {} } as WsContextUrl);
32
+ expect(actual?.host).to.equal("github.com");
33
+ expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo.git");
34
+ }
35
+
36
+ @test public parseContextUrl_withPrebuild() {
37
+ const actual = ContextURL.getNormalizedURL({ contextURL: "prebuild/https://github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
38
+ expect(actual?.host).to.equal("github.com");
39
+ expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
40
+ }
41
+
42
+ @test public parseContextUrl_withPrebuild_withoutSchema() {
43
+ const actual = ContextURL.getNormalizedURL({ contextURL: "prebuild/github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
44
+ expect(actual?.host).to.equal("github.com");
45
+ expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
46
+ }
47
+
48
+ @test public parseContextUrl_badUrl() {
49
+ const actual = ContextURL.getNormalizedURL({ contextURL: "[Object object]", context: {} } as WsContextUrl);
50
+ expect(actual).to.be.undefined;
51
+ }
52
+ }
53
+ module.exports = new ContextUrlTest()