@gitpod/gitpod-protocol 0.1.5-tweak-workspaceconfig-origin-docs-fork.0 → 0.1.5-update-yarnlock.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/gitpod-schema.json +150 -8
- package/lib/accounting-protocol.d.ts +21 -11
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +44 -33
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +29 -1
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +1 -1
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +5 -6
- package/lib/analytics.d.ts.map +1 -1
- package/lib/analytics.js +1 -1
- package/lib/analytics.js.map +1 -1
- package/lib/attribution.d.ts +25 -0
- package/lib/attribution.d.ts.map +1 -0
- package/lib/attribution.js +58 -0
- package/lib/attribution.js.map +1 -0
- package/lib/auth.d.ts +1 -1
- package/lib/auth.d.ts.map +1 -1
- package/lib/auth.js +1 -1
- package/lib/billing-mode.d.ts +45 -0
- package/lib/billing-mode.d.ts.map +1 -0
- package/lib/billing-mode.js +44 -0
- package/lib/billing-mode.js.map +1 -0
- package/lib/blocked-repositories-protocol.d.ts +13 -0
- package/lib/blocked-repositories-protocol.d.ts.map +1 -0
- package/lib/blocked-repositories-protocol.js +8 -0
- package/lib/blocked-repositories-protocol.js.map +1 -0
- package/lib/context-url.d.ts +19 -7
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +60 -9
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +3 -3
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +20 -12
- package/lib/context-url.spec.js.map +1 -1
- package/lib/encryption/container-module.d.ts +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +2 -2
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +10 -10
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +3 -4
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +2 -2
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +8 -10
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +1 -6
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +2 -21
- package/lib/env.js.map +1 -1
- package/lib/experiments/always-default.d.ts +8 -0
- package/lib/experiments/always-default.d.ts.map +1 -0
- package/lib/experiments/always-default.js +20 -0
- package/lib/experiments/always-default.js.map +1 -0
- package/lib/experiments/configcat-server.d.ts +10 -0
- package/lib/experiments/configcat-server.d.ts.map +1 -0
- package/lib/experiments/configcat-server.js +37 -0
- package/lib/experiments/configcat-server.js.map +1 -0
- package/lib/experiments/configcat.d.ts +21 -0
- package/lib/experiments/configcat.d.ts.map +1 -0
- package/lib/experiments/configcat.js +51 -0
- package/lib/experiments/configcat.js.map +1 -0
- package/lib/experiments/types.d.ts +22 -0
- package/lib/experiments/types.d.ts.map +1 -0
- package/lib/experiments/types.js +10 -0
- package/lib/experiments/types.js.map +1 -0
- package/lib/frontend-dashboard-service.d.ts +99 -0
- package/lib/frontend-dashboard-service.d.ts.map +1 -0
- package/lib/frontend-dashboard-service.js +55 -0
- package/lib/frontend-dashboard-service.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts +1 -1
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +7 -7
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.d.ts +1 -1
- package/lib/gitpod-file-parser.spec.js +43 -40
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +143 -51
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +78 -36
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +2 -1
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +3 -2
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +2 -2
- package/lib/ide-frontend-service.js +1 -1
- package/lib/ide-protocol.d.ts +53 -8
- package/lib/ide-protocol.d.ts.map +1 -1
- package/lib/ide-protocol.js +11 -1
- package/lib/ide-protocol.js.map +1 -1
- package/lib/index.d.ts +17 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +30 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +31 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/license-protocol.d.ts +8 -1
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +1 -1
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +19 -19
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +5 -5
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +10 -7
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +5 -19
- package/lib/messaging/client-call-metrics.d.ts.map +1 -1
- package/lib/messaging/client-call-metrics.js +35 -23
- package/lib/messaging/client-call-metrics.js.map +1 -1
- package/lib/messaging/error.d.ts +12 -2
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +26 -4
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.d.ts +1 -17
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +23 -59
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +1 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +7 -9
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- package/lib/payment-protocol.d.ts +1 -1
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +2 -2
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +13 -4
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +38 -26
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +8 -5
- package/lib/plans.d.ts.map +1 -1
- package/lib/plans.js +227 -172
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +238 -104
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +322 -105
- package/lib/protocol.js.map +1 -1
- package/lib/protocol.spec.d.ts +7 -0
- package/lib/protocol.spec.d.ts.map +1 -0
- package/lib/protocol.spec.js +127 -0
- package/lib/protocol.spec.js.map +1 -0
- package/lib/snapshot-url.d.ts +1 -1
- package/lib/snapshot-url.js +1 -1
- package/lib/snapshot-url.spec.d.ts +1 -1
- package/lib/snapshot-url.spec.js +1 -1
- package/lib/snapshot-url.spec.js.map +1 -1
- package/lib/team-subscription-protocol.d.ts +24 -4
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +25 -6
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +39 -6
- package/lib/teams-projects-protocol.d.ts.map +1 -1
- package/lib/teams-projects-protocol.js +21 -3
- package/lib/teams-projects-protocol.js.map +1 -1
- package/lib/typings/globals.d.ts +7 -3
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/typings/globals.js +1 -1
- package/lib/usage.d.ts +73 -0
- package/lib/usage.d.ts.map +1 -0
- package/lib/usage.js +20 -0
- package/lib/usage.js.map +1 -0
- package/lib/util/analytics.d.ts +1 -1
- package/lib/util/analytics.d.ts.map +1 -1
- package/lib/util/analytics.js +13 -4
- package/lib/util/analytics.js.map +1 -1
- package/lib/util/async-iterator.d.ts +1 -1
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +4 -4
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.d.ts +1 -1
- package/lib/util/cancelable.js +1 -1
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.d.ts +1 -1
- package/lib/util/date-time.js +7 -7
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/debug-app.d.ts +25 -0
- package/lib/util/debug-app.d.ts.map +1 -0
- package/lib/util/debug-app.js +100 -0
- package/lib/util/debug-app.js.map +1 -0
- package/lib/util/deep-partial.d.ts +1 -1
- package/lib/util/deep-partial.js +1 -1
- package/lib/util/deferred.d.ts +1 -1
- package/lib/util/deferred.js +1 -1
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +2 -2
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +5 -3
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +2 -1
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +12 -3
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +6 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +461 -440
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.d.ts +1 -1
- package/lib/util/generate-workspace-id.spec.js +37 -2
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +2 -2
- package/lib/util/gitpod-cookie.d.ts.map +1 -1
- package/lib/util/gitpod-cookie.js +1 -4
- package/lib/util/gitpod-cookie.js.map +1 -1
- package/lib/util/gitpod-host-url.d.ts +12 -5
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +69 -41
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +16 -6
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +21 -1
- package/lib/util/grpc.d.ts.map +1 -1
- package/lib/util/grpc.js +74 -2
- package/lib/util/grpc.js.map +1 -1
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → util/jaeger-client-types.js} +2 -2
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +2 -2
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +32 -26
- package/lib/util/logging.js.map +1 -1
- package/lib/util/logging.spec.d.ts +7 -0
- package/lib/util/logging.spec.d.ts.map +1 -0
- package/lib/util/logging.spec.js +52 -0
- package/lib/util/logging.spec.js.map +1 -0
- package/lib/util/make-link.d.ts +1 -1
- package/lib/util/make-link.js +6 -6
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/nice-grpc.d.ts +9 -0
- package/lib/util/nice-grpc.d.ts.map +1 -0
- package/lib/util/nice-grpc.js +121 -0
- package/lib/util/nice-grpc.js.map +1 -0
- package/lib/util/parse-workspace-id.d.ts +1 -1
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +3 -4
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +1 -1
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.d.ts +1 -1
- package/lib/util/queue.js +1 -1
- package/lib/util/queue.spec.d.ts +1 -1
- package/lib/util/queue.spec.js +10 -7
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- package/lib/util/semaphore.d.ts +1 -1
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js +1 -1
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +1 -1
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts +3 -1
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +16 -4
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts +3 -1
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +35 -1
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +47 -13
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +141 -32
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- package/lib/util/workspace-port-authentication.d.ts +8 -8
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +9 -12
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/webhook-event.d.ts +44 -0
- package/lib/webhook-event.d.ts.map +1 -0
- package/lib/webhook-event.js +8 -0
- package/lib/webhook-event.js.map +1 -0
- package/lib/workspace-class.d.ts +14 -0
- package/lib/workspace-class.d.ts.map +1 -0
- package/lib/workspace-class.js +8 -0
- package/lib/workspace-class.js.map +1 -0
- package/lib/workspace-cluster.d.ts +24 -18
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +22 -2
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +41 -4
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/workspace-instance.js +1 -1
- package/lib/wsready.d.ts +8 -2
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +3 -3
- package/package.json +18 -8
- package/pkg-yarn.lock +11 -6
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +76 -52
- package/src/admin-protocol.ts +59 -19
- package/src/analytics.ts +27 -29
- package/src/attribution.ts +67 -0
- package/src/auth.ts +3 -3
- package/src/billing-mode.ts +84 -0
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +25 -15
- package/src/context-url.ts +93 -37
- package/src/encryption/container-module.ts +3 -4
- package/src/encryption/encryption-engine.spec.ts +10 -9
- package/src/encryption/encryption-engine.ts +21 -17
- package/src/encryption/encryption-service.ts +5 -6
- package/src/encryption/key-provider.ts +17 -20
- package/src/env.ts +2 -25
- package/src/experiments/always-default.ts +24 -0
- package/src/experiments/configcat-server.ts +42 -0
- package/src/experiments/configcat.ts +56 -0
- package/src/experiments/types.ts +34 -0
- package/src/frontend-dashboard-service.ts +148 -0
- package/src/gitpod-file-parser.spec.ts +56 -62
- package/src/gitpod-file-parser.ts +17 -18
- package/src/gitpod-service.ts +315 -136
- package/src/headless-workspace-log.ts +7 -5
- package/src/ide-frontend-service.ts +3 -3
- package/src/ide-protocol.ts +63 -8
- package/src/index.ts +17 -15
- package/src/installation-admin-protocol.ts +45 -0
- package/src/license-protocol.ts +13 -7
- package/src/messaging/browser/connection.ts +45 -47
- package/src/messaging/browser/window-connection.ts +40 -30
- package/src/messaging/client-call-metrics.ts +79 -82
- package/src/messaging/error.ts +37 -8
- package/src/messaging/handler.ts +6 -6
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +23 -30
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +3 -3
- package/src/permission.ts +45 -33
- package/src/plans.ts +257 -190
- package/src/protocol.spec.ts +97 -0
- package/src/protocol.ts +650 -305
- package/src/snapshot-url.spec.ts +10 -8
- package/src/snapshot-url.ts +1 -1
- package/src/team-subscription-protocol.ts +63 -23
- package/src/teams-projects-protocol.ts +60 -12
- package/src/typings/globals.ts +12 -5
- package/src/usage.ts +85 -0
- package/src/util/analytics.ts +47 -25
- package/src/util/async-iterator.ts +5 -6
- package/src/util/cancelable.ts +4 -4
- package/src/util/date-time.ts +9 -9
- package/src/util/debug-app.ts +81 -0
- package/src/util/deep-partial.ts +1 -1
- package/src/util/deferred.ts +7 -7
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +15 -7
- package/src/util/generate-workspace-id.spec.ts +35 -8
- package/src/util/generate-workspace-id.ts +465 -441
- package/src/util/gitpod-cookie.ts +9 -10
- package/src/util/gitpod-host-url.spec.ts +41 -14
- package/src/util/gitpod-host-url.ts +81 -46
- package/src/util/grpc.ts +94 -2
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.spec.ts +23 -0
- package/src/util/logging.ts +61 -43
- package/src/util/make-link.ts +7 -8
- package/src/util/nice-grpc.ts +96 -0
- package/src/util/parse-workspace-id.spec.ts +18 -9
- package/src/util/parse-workspace-id.ts +7 -8
- package/src/util/queue.spec.ts +28 -26
- package/src/util/queue.ts +1 -1
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +5 -7
- package/src/util/skip-if.ts +10 -7
- package/src/util/timeutil.spec.ts +41 -15
- package/src/util/timeutil.ts +28 -12
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +175 -59
- package/src/util/workspace-port-authentication.ts +11 -14
- package/src/webhook-event.ts +55 -0
- package/src/workspace-class.ts +14 -0
- package/src/workspace-cluster.ts +46 -21
- package/src/workspace-instance.ts +84 -22
- package/src/wsready.ts +11 -4
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/email-protocol.d.ts +0 -49
- package/lib/email-protocol.d.ts.map +0 -1
- package/lib/email-protocol.js +0 -28
- package/lib/email-protocol.js.map +0 -1
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -34
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -65
- package/lib/util/repeater.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -31
- package/lib/util/safe-promise.js.map +0 -1
- package/src/email-protocol.ts +0 -66
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/theia-plugins.ts +0 -11
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
- package/src/util/safe-promise.ts +0 -26
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDY3N2JjNTBkMzQ2ZTc0YWU4NDdjMjdiMDc3YTkwZTA2M2UzNGM4ODNkNTUxZjY1YzU2MGVlMjgwOGIyNDVlZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM0MTdmMDhmMGZhODljODRmYTY5ZDhiMDE2ZTljMzMzMTAyMzkzNWI5YjczYTI3YmQ4MzNiNTAyYzM2ZjM2NDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZDgxNzk1NDNkN2M0OGE3ODI0ZDM5NmQyNTAyYWRjNzI3MjJiMDczZWE5Y2NiMWFiMjU3MGZlNTZiYjZjMDQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDU0ZGFlMzRiMjZkZGNjNjMxMjM2MmI0NzcyMDY4OTE4MDdjMzljYjdmY2Y1NDVmN2RiMTYwOGViZTk4ZmEyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmVkZTg1MDkxMGIzZjEzMDZkNWJmMWRjZDQ2NjdmODAwMjZkN2ZhNzNjNmUxYTQ5NTQwYjM2YmFmOGNlMTA3OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9hbHdheXMtZGVmYXVsdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc4YjdhMWM0NDJmMTI0Y2ZiYzI4MmUyOWMyZDNjOTZiMzM0NTljZGZiNzhiN2Y1ODQwZGUxNDYxNzk2NGFjYWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhODhlOGVlYmZkMzg5MDk5MDhlMzA4YzYwODZiZTM0YzFkYzlhYzUzOGJhMzhmODU1ZTkwMzAxYjc0Nzg0OTFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MDEwMzlkZGJiNzZmMmI2OWJhMjQ5YzEyNTIxYWIyOWU0N2FhOTkyYzhlYjA1ZWIwZTE3NzMxNTdlOWY4OTg3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3OTM4NjNjOTYyMDk5ZTE3ZjNiNDBjYWY5ZWUyNjA4ZTk4ZmU5NGZhNWFiYjM5YzRjZmM1NWFmY2RhMTgxMzI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODBmYTc5MDA4ODE2ODE1OTBlNjVhNDUzNGNkNWRmZjY1NjZjZTljMTk2MDhkZjQ3ZDY1ZjA2NTZkODQ5YWIyNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk2MzRlYmZkZDQyYWYyZmFmNjUzZDgzZmI5NjNkOTkzNWMwMDI3MmIzZTM4MTQ3ODFhMWI1OGMzMTQ5Yzk5YWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MjdkYzMwNzc1ODI0MTAyZmMwM2E3N2ZmMTg1Nzc2Y2FkNWY3ZjY2NjhlYTEyMzhhYjlmMTA1MWE1ODFhYjYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZmQ1MjFiNzBiNzczZmI4NDhkMTI2OWRjNzU1YWE0YTY2OTNkYTJiMTgzYTg2ODE0NjNlNTRhYWQwODIzMGY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEwZTEwMWJkZjJjMjdlNGM4MmNmMGE5YWY0MjI2OWU0ZTIxOTM2N2RlODgyNDdlZmRjNDc1MGY2OTUzNDkwN2QiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMzg2N2RjZTZkZDRmOTdhMjlmNGY4ZmZjNzQ4NWU3ZmM5ZGEzYTg4N2JiODc5ZjZhNGM4YTU4N2M1MDU3ZmE3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWFiOGQwOGEzN2I0NjI3NjgwYjkyNjZhY2IxOWE1NjhlZGUzODI2YWU0M2ZmZTEyNjQ4NGI2OWY3OGU2NzU3ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjhlNDI3OTQ5MWZkODBiNmYyMzEwOTY4NWMyZDIyNWQ5NzM5Zjk5NzE1MWZlNjM1MTk3YWVjYTVhYWZjZWUzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzU4YWVlYTY1ZmVkZTQxMGZiOWI3MDU2NThmM2Q5NDIwMDk4YTI0YTE1NTk3NzllMjgwYTVjYjI0ZDYzNDU0NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg2NmZjNzlhYTEzMzYwMTA1ZDQzMTMzYmQ5YTQ4MGUwYzVjZDM0YzdjZDdiZDIxZTE4NWU0Yjg1YzMzZWUyZjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjEzMDM5ZTVmZWExOTAyOTEwNjA1YTM2Y2IyZjVkM2FmMDRlMGU3ZTUwMzM2OTJlM2QxZDllZmE1NzM1ZWNmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hbmFseXRpY3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmEzZjAzZmU4MDY4MDFiNjdiNWQxNjUxN2FhMTk1MWI4YjQ5NmRhODM1YTkwMTZhMjYzOTcyNmNjYmFjNzZjZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2U3NTQ1NjUzNzBiODllZDQ3Y2ZkNjY0MmY4MjcxNjhkYjMyZTBmYjUyZDYyOTBjZjdlZDMzZjk0NzM4NTg0ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzNiYjc0MTI1NWJiNzg0ZWFhNzJlMTY2N2JiNTQ2ZjNiZGM0YWM3MGRkZDVlODcwOWE3M2U1OTI4NGZkMzRiMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy90eXBlcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRiOWVlMzlkNGQ4NTcxMjk0NTJiYTBlOTBjOTU4ODE0NTcyMzQ0NjUwYzA0OGFlNzJlMmRkZTZkNDZlMWU2YWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY2ZmQxNDkxMDU3NjM1NDZkYzM2YTk4NjdlMzQ3MzE5MDM4ZWVmZTQyMjk5NmY2NWNhYzdmMWMxYmZmZWJmZGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmZjN2I2YWJjYTA2M2VjMjVhMGJiNjIxOTdlZDJlOTQwMWUwZDhkMmI0NzFlODUwYjYxZmMyYTdjNjcwYWJlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODg5MjExNmMyMjYyMDYyYjllOWMzMjQwMGQ3YzhhYWViNzZkNjI3ZTg3OTQ5Zjg1NTRhZjhlZjBmN2ZlY2RjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ODJhNzA0YzA3YTE1M2M2YzIyNTNiMDdjMTFlMjU2NTE0NjA5YjdkMGY0NTQwOTc1ZjVjODljMWEyYTlkYTJjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE3NjY1M2M0MGIwMDFmZGU1OGE1OWQyYjI5MmE0ZGNhZDVkMTFkZGM0MGYzMjdkYzdlMzBlYWRmY2I4Yzg4ZTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYmI1YWU1OTk4OGUzNTMwOWMzZTRkYmJhMjdmZmM4YzIzMGY5YjlkZDEzYTJhYzlkZmU1ZTJjZjFlZGJmMDM4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbGFzcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NTJjMWRmNWMyYzE1MDdlMjlkNDY5ZTI0OTE3ZjQ0OWJhMGU1YzliN2E1NzYwMzU5ZjYzOTA5MWIwYWRkMDdiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNDM3MzBkMTc3MGNiNjRjMzM2MzE0M2ZiODg2NzgzMmVlODg3YTQwMWI4ZmI1MDMwMzQ2MmM0OTE2Y2JlOTEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NTBjYzViY2RkYTZkNjJhYWQ5NDc3NjkzNDU4MWQ1ZjEyYzkwY2Y4MWE4YTk3ZDZiZWMyMWE3YmM1ZDYwZWZkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL2NvbmZpZ2NhdC1zZXJ2ZXIuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNmQxZjlhNDBkMmYzMjkxNGVkMDU4ODViOGFkZTQ1NmQ3NDU2MmU0NDZkZTNiYWUwZDNkMDVhNTJmNDgwZTlhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL2NvbmZpZ2NhdC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2RkNzUxNzEzZDJjM2RiOTRjNTFkOWJlYjJhNmJhYmQzOWZjYTI1ODNmYTdlYzBhNWNhZTRlMDQwNDVjYTUwMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTYzOTY1MWZlZjA4YTYxYzY3ZGQwYjkwZDQ3YTVkMTQwMTQ5YzM0YTI1NjNlYTVkYjBlNWVjZjU3MDI1YmExNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZmEyNDg4M2U1MDhjZjM4YmM4ZTY1M2EyMjQzZTMyYTFmNDI5YWE5NGE1ZjZhMmUwNzQxOTA3N2JjMTVmMmQxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmMwYmViOGVmNTA3ZTAwNjJiZTYwOTRmN2JjY2FjNDMwZDFkZGIxMjQyZjhhMjNmMWZlYTljMGI0NWEwNGZmNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NzhmNmVlMDMxNzI5YTQ2ZTk2NjU4MGQ0NjdhNTJmZGYzNDUzMTQ3NDYyMGI3YmM4Y2E2YjI3NTU1ZWEzYzkzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ4MDhmZDI3ODEwZGNhNmY5YjA2NDU2YmYxMzBlZTBlYjFlMjcyNjJmNmNhMGI2MzRmMmQ1MmE1Njc2ZWI3NmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZmVkMmQ5MzU5MGIyMDE4NjcwOTBkOGI4ZjVlYjM3OTc4ZWRhZmI3NTRjOTFmYWQ3ZDdhNGI2ZWZmZTZkYWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkNDE4OTlhYzI5ZTdmYjdlN2NhNzExOWIzZDJiN2UwZDE1MzUxMDY2YzE1YWMzOWQwYmM2OTZmOWY4ZWQ2ZDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd3NyZWFkeS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2OWFmMzY3YTBlNmYzOTI3YWU5OGM0NGM5ZjJhYzQ3Zjg0Mjg1NjQ3OGNjZGI3MzQ2NTViODQ1YmJiNmUxMzAyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmM2JhY2I2ODJjOTBjZjgwZWVhMjJlZWI4NzQyOTA5OTEwMzM1MGNiM2U2ZWU5YWRjMzlmYzEwNTk4NTM4YTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkxMDAyYWUzNGRmMjEzMWY2MDNkZWMyZmMxMzM5Njg5Nzk1YTEwYjdhYWE0ZWY2NzRlYjI4ZGVlN2UxYjNkMWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFiMTliYTVmNmQ5OTNmY2NkNDdlYzZhNjc4ODA1NTMzNmE0MmU2OTIyZmE0Y2JlODljMmI0NzY1ZjMyMjFiMGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmM2MyYzgyZjk0YmYwZWI4YjQwMmY4OTJhMzA5Zjk4NDk0ZjQ3OWYyODNhM2NkMDBkYjdiZGY5ZWJjMjEzN2I5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDUzYjA3MmNkYmQ5MjIzOTU0ZGQ1ZmRhOTJkOTJjOTlmODA5OWQ4ZWFlNTBjZmE2YzRiZjJkYWFkZDA2MWEwYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91c2FnZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMxOWRmZjI5OTFmMDA2MmI5ZTE5ZGMwMTU2NzkxYTM2NmZkM2U2MWRjM2M4ZDI4YTIwMjQyYjcwNzQ2Yjg1OWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXNhZ2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODAzMWQ1OGRjMTg2MzZlOTZiYTA1YjE3ZmVkNjE3OGU0NWQzMTdiNWQwNTJmZTQ4NzBiMmE4YmVjOTgzOTc5OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Zjk0ODVhODBlYzQzMmI1MjEzMzQ4NWNlNzhjMTZlMmUzYzVmZGRmMDkxY2I4ODhlMDVkNDNlOGVhNDhjM2RmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Jsb2NrZWQtcmVwb3NpdG9yaWVzLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiOTA4OGM4ODkyMzQ1NzJmYjg0YTFkNzk3YmMzMjM3ZjBiZTAxZWY2MWY5ZWMzN2Q5YWQwYTc5OTcyNDgyZTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW52LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNmE1YzBmNDk4YzVkNTE5Nzc2Y2JkNDM1YjZjZDhmZDI4MzRmZmRmZWFmZmIwZDg1Yjg1OTU0MGMxYWRjYTZkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDU2MDZkYTJjZjE5MDE3YTdkOGVmODI2NjlhOGFiMDExOTg2ODZlOTEzMDEzNTBhYmU5ZGFhMmQ4OTM2YjYwNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZWJhMmM1NjA2YTk1NTk2ZmQwMjE0ZDg1MzIzM2RiZmI3YTRlNDM1Y2UwY2NmODZlNWJkNjA4Y2E3ZDQ0MjExIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9wcm94eS1mYWN0b3J5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmQxOGFiYTAzNzAxNWM3NzdhOGFkOTY3Y2IxZDFmNzlhMDg5MmE5NGQxNjBkYTY3ZGUzMjcwNGM2ZmUyMTNmYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlhMzNjY2U1Yzg0NDM4YzRhOGY1NjAwMGRiZGY0OTFjYWViZTY1MzZiMzhlMzU0ZjA4MGEwZTQ3OGMzZDRlMDQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MzdjZTcwMDg1NWRhMWZlMWQ3MzNlMDg0OTc2MWU4ZTNkYmJkYzdjZjk0NjEyNjU4NTUxZDk2NDZiN2UwY2QwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2M5ZDE0ZmJjMmI4OGY3ZDdhN2UxY2Y4MTZmODVhYWRmN2M3MDNkYmI2ZDY2NWNhNGY4YjlhNjQ3OTMwOGY1NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzNjZkNWE3MWIyM2E3MzIxZmQxYjhhZDUzOWNmYzM1ZDY5NzY0MTFiYmJmYWQ2OWU2YzYxNzJjYWNhM2U2OTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU5ZWU3NTNiMDZjNjIyZjZlYWUzZGE3NWE5NGRmMGZhMjE3MDE1NTNiZTFiZmExYmJlYjczNTQzZjJkOTQ1ZjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzJmNTZlZTBjNzUzOWMzOWY2OTcxZWU5ZmE4MWMwNDUwZGZmNDRhYTNmMDFkNjY2YzhhZDYyMjliZGYzMzQ2NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkOTkwNTkxNWNjYTk1YTE5ZjU0ZmRmZWRmNzdlZGIyMTI2NWU2MDRmZThiYjY1NGZmZmU4N2IzMjMwZWE3ODcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTgxMjkzMGMwYTIxNDEzYjhkZWEyODM4OWJmZjk2Y2M1MWZhZDczNDlmZWMzNDE4M2Y4NTE2MGI0YjZmNTI4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDk5NzUxM2IyMDFmZDdhNjViNjMwMjA4MDk3N2QzYjdkMWVhYTYzZDU0M2RiM2U4OWVjNjczYjU5NmE2MTY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMWM1ZGY5ZDk5NDkyZmNhYjk0Mzc2OTk2NzUyZjExNzU5M2Q2MzUxZjA2ZWVhMDFmNzdkZTFmMWE3YzI1ODQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMGI2MzcyYjNlYTQ5MjNmYjgyNDBmNDVkN2YyZGJjYWRjYjI3MWQ1MmVmZDUxYzNkODk2M2Y0NDhlZjZmNjIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWIzMzhhYjA2YmI0M2RhYzE4NjY0NmQ5ODJiNjhiNWIxZWJmNGM4NDgzOGU5YWVjZDM2NWZiN2UyZDZkYzdmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYThmZjRjMWQ1NGVjNjhiYjk4ZGJjNjE5YmYwM2ExN2MzZjI4MGMxYWI5NTQ0YmM0NTJiMzMwNzU5MWFkYmJkYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdHRyaWJ1dGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzNlMTBmMmI1NmNmYmYxYzVjM2JjZTk0ODRlMDBmNDZhZjA5ODBlZjQ2NmZmZWI4ODBmOTliMDI1NDdjZmM0ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTA2NDRkYjFiN2NkNzIzZjdlNDQ0OWQxNzExNmZjNmMyMzJlNjQ0YmE5Mzc5OTE4ZTAzOWE2OTBhYWUxNTM1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI3MzJkNTE5Mzc3ZWRjMWI3M2NiMDhmNzA2ZDRhYzJhM2Q4MDdkNGY4NjhiMTZhNTFiM2Q0OTlmYzNmOWQ5ZjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZjUwN2QyNGNjMzEyZDJlMGNkZDY1YWZkMzBkYTk4ZWIyZjM1Y2VkNTE5N2I3MWMxNmFlZmUyODc3N2ExNWU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMxZDM4YjhkYjIzNTg5MjA2MDY0MTg5N2Q2Y2QzOTBkMjM4YTg4YzE3YjdjMGY2NmYwMTc4NTJlMDk2ODExMjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDQzZGNjN2I0MzI0Nzc4MzU1ZDFmMzM5Y2FiYWFkODZiNmFkMTNkYzZmMjZlMzg4OWQ4ZTRhOTNhMTgwN2Q2MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNjMDZhODIwNWIzYjdiYzQxY2IyNDY0NTA3NTE5ZTBjNmYyYmIzMmY4ZDdjZDdlZTkyMTliNGNkZTY5YzE2YTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvYWx3YXlzLWRlZmF1bHQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTU0NTM1NTFkNzBiMjY3M2QwYjUzMGI5NzFjMTMzZDQ5ZmQ1MWVlMWVhMzFlMDZmMDMzYjRjMzI0MmUyMTdhMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEwMjU0OTQ0Zjg3NjZmYjY0ODdkNzM2NzM5YzljODM1Y2ZkMDE2YzI2MmM0OTg4NGIyZGIwY2VmMDgwNWFiYWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YzRhYjE2NzllYWNmYzI4NmU5ZjRiNDQxMTM2MmM2MWVlZDJiMTkwZDk5YmFkY2JmZDBlNTI1ZDRkYTJiM2JlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTk3M2QxZTQwMWFhYzNmMDgzYzY1MDg2ZDMxYWI1MTBkZjVhMzkzOTEzNzUyNTBkNzhlOGMwNjlhMzA1ZTliOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJmMTRiNDhmMTQ5YjUzYWNkNjU4ZjY5MDVjMmEwZDdlZjc1MzM0YWQ2OTIzMmIyN2E5NzM5MGRhN2FiZTc4YzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODUxMjIxODVhZTEzYmE1ODI3NDIwOTc0NWNhMDFkZjc2ZTAyNzkzM2I2YzExOGFjYzJiYTQ3MTFjNTAzNGRjMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGQwYTc1MDM2YTZjYTM4MjYwMmU2YjdkY2I1NWUwM2I3OTVlOWFlMTljZTUwMzZhYzRmOGQ2NzY5MTQwYTliMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlYnVnLWFwcC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWQ1YjFlMzc4NWZkNDdiNDlkNWE4ZmEwOTNkNzg4NmJhYjYyODk3ZTg4NmIzMmZjZWVkMDI3MzE3OGUyZDhlMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyZTVjMzVmMzliOWViMTIxOTE2OTc3MzhlMDc3N2U4ZDIxOTJjYjQwMjU3Yjc1ZThkYWJmNmI4NThiOGMxYTU0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4YjQ2YjdlODlmYmRjZWNlYjdiY2YzOWQwNGMwMWIyNGNlM2YwMTEzYTAxNmVhYThmYzIwMDU1NzQwNmJlNWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YTc0YTg4MWE5OWI2MjcxOWE5ZGExYzFiM2IyNmVlZTIzZTQ5ZTYyYTdlODdjNjc1NTkwZGEwMzk1NmUwOTNiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNGFmMDAzNGM0MTc2YzQwYzdiYmUwYTc1NWI5ZTUxOGNiYjQ4YWE5NTA2Yzg0MWM3OTlkZGVlOTkzZjVhOGMyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg5ZmJjOTU2YzM0YjNkOTgzNTIzZTJkYmEzYzc1ZmNkNzk5YzgyZGE4NDZiOGJhZWExNTdlZWMzNGQ5YzFhZDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOThlY2U1OGU0MmFiNzM0Njg0MDJhZTFmMzQ5NjIxM2Y2YzZlNjAyZDFlNWU1ZDZmMWFhMWJmZDQyODBlMjA4OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWYwNWM3OTIyNGIzMjNkMmYwYzA4NzVlNGU4YmE1YWU0MTRlODczYWM3OWRjNDhmZGZhNTE0OWRkNDliYjYyOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmIzY2RhMTc3OTg1NGNjN2NkYzllYjg1Y2U2YmVhNWQxZTdiZGUxMTRkY2Y2MWJiMmE0M2FmMTRkYWZmN2YxZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDA4NmQwN2FhMDYzMWRkODExNjAwN2E4NTcwMWYzNzkzMGIyNGVjZDI2OTUwMmIxNDM1ODY5ZjE4MzAwNmM3YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODY2MWI2NTU1MmY3YmMyZGViYmU1NTMwYzE4ODEzMTlkZjM5OGFkOTIwY2YyOGRkYWRlMmMwNTQyMmMwNmM5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYTkxYWI1MjQ4MDUxZDVkYzQxMmQ1Y2ZkNjk1ZTc0NmI2Yzc0NDA2YjJlZDQxYThmZDg1MDY1NDI3Mzg5ZmFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2hlYWRsZXNzLXdvcmtzcGFjZS1sb2cuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ1YjdhMDM4ODdhMGM0ZGQ0ZjU0Y2MxNDg3NmNiZGZkNTA5NThkZmQ1NDBiMThjZjdkNjhhYWJjZDdlZjY0MjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXNhZ2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTI0MzIwYzk4YmVlOTM5Nzg4ZTQyODZiZjM4ZGQ5M2UwY2Q5Y2IxOTM5MmQ4OGE3NmM2NzRhM2JkZTYzYWUyZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjA1MTE4MmE4MDAyYWEyZmJiOTc5YmFmNGE5YzM2YmQxOGMwZmNjMTdiZTU0MGQ5Y2M5OTQ3NjJjMjAzNTI3ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWM3YWUzYTA1MGY5ZWM4MzY0NDhlZDc3ZTk0YmZkMmExNDUzMjcwZmZhNTA5NmFhZTVkNjg2ZDg1NDlmYjdlNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBhYWY4NDRmNGVmY2I1MDUyYTRkNzcyNTJkMTRhYzBkOGRiZDYxZWE2NmYxODc1Y2I4ZTg2MzZlMWZjODJmZTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZjBkNzk3NGRhZjMyNTFhNDUwNjY2NTc1OTlhMDY0MTllYjBkZTU2ZTcwMTkxZTRkMzVhNTQwMWJiNTVkNjY0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDA2N2RjODMwYjJhNWRlMGQ1MmU3NGUzMjM4MTI3ZTY3OWE5MzZlMGE3NzBhYWNiY2U2NjE2MmIyMjAwMzE0YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdHRyaWJ1dGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZDMxMGNkYjliNDE4ZDdkNTQ1NWRiZGQzZGIwNTQ1MDA2YzhmODNhYWE2ZWZlNDA1ZjI1OGU5MTNlNGNkOGYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjhhZGZiY2VhZTg4NDMzOTFjYjBjZjZjZjY2MzdmM2UzN2EwMDBlNjc4NzJhMTgwOWVkMTIwMjk5MzJjYjhmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ODc4YmViMGY3Y2VmMmZhODkyNjY1NWU1YzU5OTBjMDlhNmI5YzgwYzA0MTY2MTAyNGJiMGIwYmYyMmM4YTE5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2tpcC1pZi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI3N2JiNTMyZjhhZDJjMmJmZmVkN2ZlMWM1MzI1MjA5YThkNTViN2EzNjRjNjE0YzZkNDRjYTM3MzllN2MwYmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MzRjNTJmZmNjODFiODQ5NzU3NTEzM2I2YzU1YWQzOGFmZTVjZjAwYzRlMWQ5ZTkxMTA3MzczZGM0OWQ4OTYwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2Q2NzE5MjA3YmY5YTg5NjQ0OTdjY2Y4NDVmNGI5OTVmNzEyMTZmMmU3Nzg0ZTk2MDJlYmY1ZjM0OWU2NGJkMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjE4OThmZTUwMzlhMDk2YjhkOTE4NzNlYzdkZWMzZDViMjAzNGU2OTE4YTI5ODU1NjQzM2QxOGNmMDI0ZGE4ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGI5Mjk3MTY3N2I1YjIyOWZiZjY3MWE4NTIyMDM2ZDFiYzg0MmQ5ODZlN2UyYzAyZDdjMzJjYzQwODQzOTY1MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY2MmVkM2IyZDhjOTI4MDExNjI5MWQ5ZWIyODVlYjJiZTBhMWVjMzE0ZGM3NGY3YTc3OGZmNWQ0MzM3NzJlNDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2E0NWUyNWE1ZDFjZWQwOWVmMWI1OGU0YThkOGE5ZTIyMGJlNjRmNDVhZWJjMzEyOGI1NTRkYTRjNDMwODhmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93ZWJob29rLWV2ZW50LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI3NjdlMzE0NGJjMGFkZTllOGY3NjY4ZGE0M2Y0MzFjY2MxMTI1NWY1YmFlNTZiOTIwZjQ1NWMyOTg2NDdhZTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzRkZWNkZDYyMWQ3M2RlYWFmYTY5ZjFhNzUwOTdlNjNkYTUyM2YyMzBlNDE0NDVlMDVlYTY4MGM4NzVkODBmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWU5OTE0ZjdiMmQyYzFmODRiOWIwOTg4NWFhMTM3MWIwODdjMTZiMTc3ZDg0ZjRkMWM2MDRmMmE1YTRjODA5ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTdmZDAyOTNkNTJhMWEyOTBmZDc3MmEyYjc3ZWQ2YzdiOGUyZmY0YjdjZjU1MDRhMzE0MTAzYTExZTAwZmM5NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlkODc1YTNjNmY0OTdlZDFmOWUzYjk4MDAxOTQ1ZjhiZDE5N2IxOTk5ZmI2YWQ4N2UxNzlkNDc3ZDIyZmQ3ODEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2Mzg1ZjIxYjViMmUzOGFhNTdiZDdlNGRlOWUxYjA0YzQzODkyNjg4ZmQ5YzBkZWI3ZWRmMzUzZDhmNWRiYTYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjliZjJhODNiNmIyNzhmZDU1MWJlZTlkNzk1YzMyNDBlOGJjZjQ1NGNkMjdjYTdhMzU3MjJiYzBkMTI0M2EwMTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWJ1Zy1hcHAuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjdhZWUxMDIyY2ZlZWNhYjY5YmEwYzViMDkxNTZiNzBhZjMwODMzNjc0OTc4NmQ1M2NlY2RkYzAzOTM5YWE0YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9ibG9ja2VkLXJlcG9zaXRvcmllcy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhiZDc4ZDkwYzQ5YzA0MDQxMGNmNWU4N2I1YWZlMDRjOTc2ODE4ZjI5NTJiMjZmNmMxZWQyYzg5NTAwMDU3MzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFhYWQzZjE4ZmIwNDlmOWE1MTNjMGM4ODJkYjRhM2IxYTk0ODNiZTNjZTZmNDIxM2M4MGIwMTFiNTFmMjZkMzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMzFlZWMyMjk4ZjZhNWExMjU5YzNhOGFmNWIzY2NjNjM0NWMxYmVkMzhlZWZmMWQxOWVlMTQ2MTI4YzQ4YWIyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg1ZWIzOGMyMWYwYTdiOWZjM2ZiZDcxN2Y3YWFhZTlhZjg2MGU3ZTYwODIwZWQwNWZkNjgzMjc1MmEyNzNkMGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZnJvbnRlbmQtZGFzaGJvYXJkLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTdkNmFkNDljMWZjNTVkNjZlOTNlM2E5ZGE4OGJjNTViMGExZTA5MGQzZmJlZmZkYjBjZDlkY2ZiODFmZGFkOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRhYTdiNTJjYTZiZTE0MTJlMjBlNzJhOWZiYzgzODM0ZDVhZjExNTA2ODIxM2JhNGQ2NzY4YTM5NGUzNWE0YWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTIyYzRmMTczNjc5NWMwMDM2MDRhNWViZmU0MjQ1YWY0NWEyNzc3YmQ1YmI5Njk1MWRkMzA5NjBkOGEzNzQ1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE1NzA5YjM0MTczNWM4NjM3N2MyMWM2YmFmMzlmMmY0M2ZjYmRlMzg0OWQ3NzQ4ZDBmMzM2YjJkNmMxYTJjMDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYzNkYTg1OTZiMWExOTk2OWM0ZWE1MTQyNjZkMTlkNTA3YzM2OWE3ZTk5ZmQ2YjQ5MzQwZmM0ZjJiNzllMWY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Jsb2NrZWQtcmVwb3NpdG9yaWVzLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjOWQ3OTQxZjA5ZjM4MTlkMGRjNmFlYTczM2Q1NTMyZDE2NTY3NGU3OWM0MDk5OWFmMDVkYmQ2OTY5YjIxY2VjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjhlMjkwMTEwYmM3YjZkYmYwMmNlOTYzMzZkNWU2YTdkODY5NjJjZWEyOTlkZjkyMmVhM2M1Njk1N2NmZjYwMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2xhc3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNzNjYTA4MjE1OTc1M2ZmYzcyMzRjMzQ4Yzg2ZDg1YzI5MTQ3ZjcyNzAxOWY0NDgxMzQxYWRlNzIzZWVkN2QxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTYwYjFlOGJjNmEwZmJiMDViMDQ4MGE0NTVmZTkwNWJmZWFhYWZlODI2NDg0ZWRhOTIwMTMxOGMzOWM0ZTVlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiODI2ZDU5MGVlZjNiYjU1NDhkNTMxNjQyNzFkNzgxZTJkMzgyMTY1MWJjMzVhNmZiNGMwYzJlM2RhZDUyYzFjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZmMwNWE0MzdjODQ0ZDY2NjBlYWZkOTJkMmE1YjdhMGY4MDExOTY2NGQyOTM5OTVmZjcwOWNiMGZkNWU1YTAxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYTQxYzAxYTY1YTBjMGU1M2U1NmFlZjhiMWNhMWMwM2QwZTQyMTA1NjgxN2I3N2Y1OTc1N2Q1MGQyZDlmZTQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNWI4YTE4MzZmYWMwNGZjN2EzODYwOGYyNDQ0YmI4NmYzMGU0MmNlMmJkOGIyOGY3YzE1ZWFlYjQ1YzI3Y2IyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NTkzOWZiMWZhYzE3MWVmMmM0YTIxYTE3MjBlYzU0ZTM2NmY0MGFkMGJiMmJiZmNkMDY3ZjdhMDJkMDI4MmY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbmljZS1ncnBjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhiN2JkNmRjYjdjNzBiMDRhMGU5NWUwNzJiNzU0YTkxMzdhYmNlMGViMzZjOGM5NWM0ZDA5MDJhMGJiZjY5OGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTMwNWJiOTQ2ODFhNzFmMTZjYzgwNzU4NjYzMWFiYzhhMDFkZDExN2ExYzc4MDUzZWM0OGVjYjZiNDRiZDJjZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5YzA5NGEyYjUzYjVkMDk2Yjc3NmIxN2FkMWRjZGQ2ZjlmZDdlMmQ4Mjg0YTVhNjEwNGMyYTJmNjUyMmJiZTBhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFhYjY1ODgzYWNjOTRkOTdmMTgyNzkzOWZlYWIyM2VmMGNhOTdjOGVkYzcwYzBkN2Q0NDZhZWMwOWQ4ZGZiYzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDM3YmMwODhiZTRiYjJkZDEzN2NjMmJkODI2MGIxYzRhMmI1NDE5YzZhM2NkZWRlNWIyNGQ5NzdmMGExZDM4OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZDM3MzYyZWVhMjhlYzFhNDQ5ODE5MDgyNWRmMzFhMGNlZWFlMzg3YTdiYmRmYmQyYTA5ZDNhM2QyYzA2MzYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJjNDQwZTQ5MzZkMWNjMzdmODVjYTc4M2EyNDZkNzdiNjg5YzU0MDU4MmVhYjkxZDdlNDE2ZDFiNDdlOThmMWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5YThlNTliYzZiNDA1MGM3NWNlODM2Mjk1MmNiOTdjOTY5NTQ5NjY5MTE1M2ZiY2ExMTc5NjdhODg2YTg5NjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MTcyYWVhOTg5OGZkNzcxNjE4ZGQzODNiMWQwNjM4Y2VlYTZmOGE3MzZiMjBhYWJhYzRlZTU5ZTdhNzZhY2ZhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImViNjYyYjFlZTFkYTI4ZmY4ZWZjZjdkMThhNzI0NGI5ODdhYWM3ZWRjZDg2MGUwNzNhNTMwYmJiODQ3NzliYWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZmEzYTQ3YTYyM2ZmNmRiNTlmNGU0NzQyNzQyODhlZDEzODM3Y2I5OTc0NDVmZGE1NDNkNWViODJmNDRjYjhiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL2NvbmZpZ2NhdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMGQ1ZjgzOTdmY2U2NTBhZjI4NTVkMTZmZDFiNWRiM2RmZTc5MWY1ZjkwNGE3NDliZDVmOTIzMjU1MzMzMjA2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2YzYzYzZTU2N2NlMjBlOWU4MmIyZmExOTA4YWFlZmYyN2EwZGQwZDhkMWE4MWNhNjI3NTc5NzQ1MzYyNDU4NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlmN2E3YmU3ODUwYWJkZWFiNDkwYzYxNjg1MGE3YTJiOGFhMzViOTZmNDkzNGQ0MzdiNGVkZWUwMzBiZGYyZTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2EyNDcwYzA2ZGU2MjAxMTIxNjU3ZjdlNDYwN2FhODE3NTRkNmE4NWI5ZjBkOTdhN2FhNzhlMjZkNTVlZDhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NWYyM2U2ZmU4YzUzMDRhODU1NTgxZjRkM2ZkNmEyNDE3YmNhYzgwMGNmMDY4ZjJhYmE5M2FiMDgxMDUzNTE5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OTE1NzI0Yzg4NDQ0Zjc4NDA5ZmI4ZDhiZjNmOTg4ZjU2YWNiN2M0YmUyNzVmZjhjMzEyYjFkMjc4NmEwZTIzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2E2YmM0MjY1M2IzMDI3NGY5NTQ5ZDg1YjAxZDZmOWQxM2Y3OGE2ZDYyOWVlZGQ3ODU5M2NhNGM1M2M3MzVhMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjk2MWQzMDUwMzJlMTU3YWI2ZTNiYmUzN2I0MWFjNGYxZDQzMGVjNTIxMzY3ZjBhOGYyMjhlYTNlOTdjMDIzNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQ3MWZmMTU0ZjVjYjkxZTNhNTk4ZmZkNWFjMzYxYTE3MTZmYzcwYzhiZmQ5MDEyZDVkMTkyNGM1MmMzNDlkNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWZjYzA5YTg2ZmU0YWM3ODNlOWM2Y2RmMDJlZTk5ZWEzNDYzZjkyMzlhZThiZTgyYjUwNGJjN2E5ZTU0OTQzMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYzc1OGQ2MTQzMDg5ODNlZTA3NjNkYjc2YTU0ZGY0MzkwMDI5NGQ2MDZmMDhlYmZiY2VmMzc1MDk4YWRlYjM2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEyNTcwZDllMDlkMjlmYzY4MmVhZTgyMzY0MDZlOTdmMDA2MzMwNjU0ZjUxMmU0ZjQ1OTE5MTk2MjU3MWY4MmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2E4MzBhZDQzOWNkMjg3NzA0ZjEwZjljYzIyNDJjNGFjMDVjMWU5MWFmMzFkNTUwOTA2NDQ4YjZmOTI1MjMzZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2IzN2FhZThhYTBhNTJmN2I2YzA3ZDViOTI0MzI1MDhjNjYzYjdkMjU3YzMzMDc4Yjg0ZDljYjZjODU3MWZkYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmIxMjlmNThlYjM5MWY3Y2RhYjQ5OWNjYmE5NGRkNTM3M2NhZWJjY2E2Mjg4ZjQxYzdhZjQwNTc3ZDRhN2NjMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjg1Zjg1ZTk5NDg3ZDRmZDhhZWQ5NjZmYjIzMTc5OWUyYTllOWZmNDhlOTRjYmVmY2Y2YzNlZWI3N2NiOTBkNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWI5ZWE1YjA5Y2E3OWViMmE2ZmZiZDNlNDMzYjhmYjkzNDQ1NDAxMDZlMzEwYzhhODY5MjUzN2FlYTExOTU3MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNWI5N2VkNmQzM2IyYWM1ZGYzZGZjNDc1NjgxMzJkMzJlNTEwMWVhZjI4M2M0ZDEzNTM4MTdlNDU0NzY1M2U0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODEwZjI3MjE1YjZkNGVlMmVhZGU2MjU1NDg1NWJlYWQzMmJhYjExN2JiYzM0NTgzOGZlODA3MDY0MDA3MDVkNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2FlOGU1YzZhYzYyYzlkNWZlMmJjNjZiM2ZkZTFhN2NkZmJhYjM4NTRmOTZiY2FlMjI2YmRhYTk0MjliMjcyNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDgwYjEyNGZhNmFjNzEyNzQ2ZjRiM2NiZmJhZTAwYmM0YTgzZWY0ZmE5NDM5N2Q1YTUwYmRlZWI4OWE3ODkyYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OWNiMDAzNzVlN2FmZmU2NDg1OTNjOTlhOWI5NGVlNzhhYzkzMTM1ZTJjNjFhYzc0ZjIzNzRhYTRlMGYzYjQzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL3R5cGVzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MGRkMjZhYzA5OWZmODI0OTM3NTc4NjkxMGZmYzJmZDVhNDRhNzE1NGQ2ZGYwNmE3YTMzMzg2M2Y1ZTQ3MTVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dlYmhvb2stZXZlbnQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDU5ZmYwNmE5N2Q1YjYxZTNlNmRmMmUyNDEzYjBhMjI4ODYyNDUwZmQzZjY3OGYzMDUyZDk1YWMzMjNjYjM2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU3ZDBkMTNlNWExZWEyNDM4OWRkN2ZkMjIwYzViYTcwNWFjOTE5YzYwYjAyNzExZmY1NWYyMzg2NzkyMTVhMTUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZWRlNjQ5MzZlOThjNGU1MGE1OWNjNDM0ZGI4MGE5NWM5YTc0MWMzNzE3YmQ4MWRhOTJjYTVjZjEwZmI1ZGZiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNGIyNWJkNDcxMzAxMjkxMzNmMTM4ZGY5MGM2YjdhYjQwYzIzNmVkY2VhZTRhZGIzODJmZmY0Y2ZhMjc3YWQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhmMjMyNzBlNGQ4NmY0YWM5YTBmMDM2YTIwNjJhYjgzMGQxOTcwNjdiYzFlODg4OTI2ZTllZjk5MTVkMWY5NzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTIxNzY0ZjBhMWU2NTAyNzA2MTc3MjhhMDI1MmZlODQ0Y2NkZjRjNmNkOTM5MTlmZTg4N2ZiN2NiYWEzNzhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlOWY1MjRiMzhlOTM1NzQzZTFhYTc3NDUwZGJjMmMzNmIxYTFjZWRkMDY0NWVhYjhlZjZhYzc3ZjI4YjQ4MzU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDYyZTI3OGE3NDM2Y2NhZDhjM2QyZTRkM2NlMGNiZDQ5MmZlMTJmN2Q2M2I5OWFkYjgzODNjZWQ5M2RhZDllNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODBmYjhlMWZiMGI0OWZmYWI4ZjU0YzE3Y2E4ZTY4OGQyMjliMTBkYjM4ZmZiZmRhMjk4ZjhhY2MwYmU3M2MzYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjMzZGU2Njk3ZTIwZmI1NTg1N2I5MWQ5MWUxZGMyZjE4ZTBjZjQyYzFlMDM0ZDE3OTEyMDI0MWMxOGM2M2M5ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy90eXBlcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNmJlYjY4YmY1MDMxZDk5MWU1YjE4YTJiMmU4N2M4NzU1YTI4OTZmNjY4MmY5MmJhZjJlYTU3OGQ2NDBkMTA4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NzI5ZTNhODMzODBjNmQyMjEyMjI0YTJjZTVmMzAxY2YwMDVkOWYxZTEzNGUwYjgzYTQyMjFiZWJiMDkzOGY2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3Y2Q4NDk1ZGVkNDgwMDc5MjA3ODU4MWQzMjMwNTk2ZjlkYjQ0MTYxNTg0N2MwNTYwNDZiYjU2MTFlNTVkZGUwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzIwYjdlNjFkNTdmMWYyMWNmZTFmMTFhMmIyNWU1ZTM4MGEwZDYwZDY5YWJiYzYyOTllM2FlYThiYjY3YmFkNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZGNkNDY1YWM4M2QxMjBiN2UxNjFmN2RjYmM4ZjZkZTNmNzFjOGFlYWIwYjY0NzMzYWYzOTFjYjFhOTgxYTFjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdlYmQ3NTZlNTAzZjAyMWUzNDgwODM0N2FjNDk3ZjFiNmQwZjMxMTMwYmNhMDkzNzQ4YmRjOThmZTIyNGIyMzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYmlsbGluZy1tb2RlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ2OWFlZGU0MjM3NGVlYWRlNmUxZjQyYjU5MzQ3ZjI4NWI0MTEzNTYwOWYxNzY1NGMyYzA2MWM4YTZmYTBlZTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWYyOThlZDI1ZDM5YmU5YTIyYTExODVhYWM3YzBhOWZmNjFjNDdlNTMxOWVhMjk0Mzk1Mjc5M2M3MjQ5MzQxMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NDY0NzBmYTFkYjg4OGE2ZWIzMzIzZGQ0OWVkMjdkZjE0YzA4OTI3ZTJkNzMxYTcxYzcyNDJmNDBlNGMxZTc5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTQ0YTI2NWNlNjFkNmE5ZDg4NzczMjdjZjAzMTQwMTE5NmUzZjJhNTc5OWY1NTU2NTc2NjA2YzgwZmQyZDhjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY0MmMyY2JkMWNjM2IwYzVmZDAwYzgxODg3MzIxZWI3OTNlNGMxNmE2MzBlNjhjMjJkY2QwYzFmNmQ2M2JkYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ4NjhlYTI5YmY5YzZhYzlhZjQxOWJhNGU1ZTE4OGY5OGVlN2EyNzYxNDIzMzg1NzMyYzA2YWMxMmEwMWE3YzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd2ViaG9vay1ldmVudC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzFlODk5ZDJjNjE2ZWRiYmY4YjcxNGYwZTc2ZDU5OTgyYmJhMDNlODRiYzc3YWM5ZjMyYWE4ZGUzYzZiZDdmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4YzYwMjM1Y2ExMzBlOWQyMDY4YjVhOThkOTcxYTg4NjY2NDA4YjdjZDE2MDM0N2QxYzJhNTBlZTE0ZWI0MWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YjI4ZjEyNzlmZDdlZjAxMDc3ODZiY2QzNzAxOGIwZGYzZmNlY2RkYzNlOTBmMTk2MWM0YzUwZWEwMmQ2YjU3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Zyb250ZW5kLWRhc2hib2FyZC1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImYxMzRlMzBhZDVkMmQxZDRhMzdlOTRlYTNlYThiNWQ5NDJmZjkyMWZjYjIyZGY0YmM4ZDgyYzViYzg4NWI5OGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTU4ZTU1ZTJmODZjMWIyMDE3NjdiYjkyOWI1OTFiYzlhMmI3MTY0NjI0Y2YyNGE5NTUwOGE2MDYxOTA1YWZhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxZjMzODYwNGQyYjdjMGM5OTc2ZGM5NThhNTAzOWE2MTg5NDYxMjA0MWM1Y2NlNjQzODMxNTgyOGI5OTU1OWRiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyN2VlYzIwYjFiYWIyMDJiNjVmNjIwOTFiOWQ1Y2M3ZTU5NTFmYzcyNDNlNWQ3MzRkMTM3ZWYwZWQ5M2Q4YmM3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNWFiY2RmYmJjYWQzNmYzOWJhNTkyN2MwYjE5MGYwMDJhNjk3NDg5YzE1NDdjYWU1ZTNlMDIxYWM1ZmMzMDNlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMzZWRmMWViZTA1ZDNlMGIzMDNlNzAxMDM3OGJlYWFlN2RmN2MxNTAyODFmOTlkOTg0YWI3OWIzYTI2YTdhY2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsYXNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NWM2NmUzZjQ1OGZhNGI1YzYxMTUzZmJiOGY0ZTgwZmQ0ZTVkZTUyMGFlODg0YWExNTY1NzU0MjQ2MjVjZjA5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiYTViZDYxNDkzNDlmNzUxMTVlMjc0OGM1OTlmZDBmZmQ1NmExNWM5OGY4NTY5YTY2YzQ2ZDk4Y2I1N2RlYWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYmlsbGluZy1tb2RlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmUxM2FhM2VlYmQ4MjVjM2UwOGRhNTgzZGYwNjk3OTA3MDlkYTcyNjUwZTg0MDI0YjE4ZDU1MmE0YjgzZmI5MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZlYmI3ZDhkY2ZiODcwYTMwN2QzYWM3OGE5OGYxNTcxNzMxZTkyODY1NjE0YTMwMzJlMzNiNDRjOThmNTZjZTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9uaWNlLWdycGMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2YwZjlmNDRhNTVjYTI3OTVjZWE5ODlmNDczODM5OWE1NWNlZTk5NTViZTFiZjVjMzZhNWI2ZmE5ZTVhZDJiNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2xhc3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTUzYTU0MmNjZDljZDdkYWYyNjU5Y2FiMmVkZDdhMWYyNWJjNGE0Mzg3OGVjYmMxOTgxMTRhMTBkZTRhMDM1OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZlODllOWRkNmVmMzMwMGMzMGFiNTUxNDY2Y2NjYTYwMTZlNDJkNDdiZGE1NTI0MzczMDNlMDUxYWI0Mjc1MDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTFmZDExNTQ3M2YxZDllZTcwYjY2OGEzYmVhZGE5YmY2ZGZkYWMzYjRhMDc5ZjNlNDgzMDQ3MjFiYzIxYTc0ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkwYWVlYTRjYjY3MjJiYTIwM2VhNDcwYjhkMjNkYTgzOGIzZTM1NDJmMTczOWM4NDAzODAyNWRlMGVjNWFlMzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiNTEyOTE4ZDYwYWQyMWQxNmRkMWM3N2Q3OGQ1ZjQ5ZmM0ZWJjMDJjNDBjMmEzMzkxYTRjZWI4NDQ4OTJlZWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZnJvbnRlbmQtZGFzaGJvYXJkLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVmZDFhNmY1YmY5YTU3OGE2MTBjMzE4NmU2N2M5MjMzMjdmMmVmMzU1OWY0MDMxMjZjMDY0MjFiZmMyMjkzMWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzk4ZjBkMzBjOTBhOWMwNTYyY2RkOWZkMzk3ZDk3ZjA1ODUxZjYwODhhZjdkZjgwMmNmNzZkYWI3YzhjMmI4ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVlMjhhMGFjNjM4YTMxYTEwZGQzYTc0MzEzZTI5MDE0YTNlMWRhYTNiM2UwNjQyZmJhNmNlNzI4OWI5ZGY0YTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYjhiNzJhZjBlNTYxOTQ5ZjMwMzg0MWU1YTc4YWQxNDhjYjMxZGQyOWFkYzBkZjU0MmY0ZjIzZjNlNWI1YzdjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhYjg5MjNhNDFkNTVlZDY2MjBmYzdhMjNjNDE5OWRjNWIzODk5OTA4MjRmZjQyNzM2NjI4NmU4N2VhNzk4ZmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGM1NzcyMmVhOTVkNzBiZDI2MzdmOWExZjAxOWQzODlmNzkxZDRjYWI0MGQ1YjVmZDdkMzViYmU4ZGUyOWQyZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwM2FhM2M1OTBmYzdkZGI2YzI1ODljZTkwYmUwZjhkYzYyNDk1NDRiMDkwOWRiZmJlOTQ1Y2M5MTcyYTNjODdmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVidWctYXBwLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmZjZWZiYzEwZjFmNDZiYTlhNzcwMDdhOTgyYmNmYmQwNTJjNWRmNTU1ZDg2YzI5Y2VjZWM5N2RmZDIyZTAyYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvaGFuZGxlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3Mjg3YzRlMGE0MDE3ZTkwOGNiNjYwODhlYWU0M2JlMmVkZWUzYmUxYjAxMGFkYjAyMzc3Mzg0MzExOTUyYmFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNmUwZDNhYzFiMjJkYjMxY2JjY2U0MTk5MTU4MzE4ZWY5YjQwMmVlOTY5YWVmNGM4ZTRkNjVhNjhiMDM3MTJhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTJiNDI4Y2M2YTdlOWIyNTY1YzEyM2M4Yzc0NWQwOTRlMzA1MmE0MzY0MmVjZjliMjk3NDQ0YjBiZGJjMTU0NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNDk1N2NjODA0NDgwZTE2MmYxZWRhYzg3Njg0MzM0NjkwMmNlNGM4MjE4OWM3YTlmMjk0YzIwMDgyNTdkYWY2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlhYTMyODFlY2M3ZjMzMzdkMjMzMTEyMjc3ZjhhNzk2MDBiZjZlNGEwMjg3ZWU3ZmVhYjJjOGRkNTE5OTk5YzEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjQ4MjY2ODEyNjFkYWYwMTBmZDMxOThkYzMxNDRiODZhM2RjYWYzNjE0ODU1NDViY2Y1NWViYzk5YWJlNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkNWY3NzU0ZjY0MGY4ZWRlYzE1Y2JmMmEyOTg2MjRlZTYxZWQzMzdlOTA1YjIzMGQwNDM4MWE5MzBlMmNlNGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvYWx3YXlzLWRlZmF1bHQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWE5MmIxZjFmMzY4YjVlMzg0OTExMjgyMDJlYjMxNzM4MDVlY2JmOGI2NDhiMzg5MDA5MWZhZjNjN2U1MDY2OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDEwMmI5YWRmZDQxNzhmODkzMmM2NWEzOWJmZjYzODdkMWJkNTgwMTU3NWM1ZGIzNzE1YzQ4MDNjMTcyNTk5MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjQ3YzQyYmY3MTIzMmIyODFiMzU2NTU5ZDkyOTA3NjYzMzkwZDc5ZTZlYWE2OGY3MzY5YzJiNGI2MzVlNjQ2NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFjMTMyZmQ1N2RlNTA3ZDc2MTk1OTE1YjNmMWU4YzM4NDlhYTY1MTIyMjNhNTI2NzM2MGNiZjM0YTgzYTNjY2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZGQxMjQzYzM1YmU0ODVlMjIyOTRiZjA0NjBkMGE1MzQ2YmNjMWQ4NmI5OWZjOWY0NDQ0NTA5ZjBmYzMzNDBjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdhOTc3ZTA1OTMzOGY3MTVkZjcxNTcwZGVhZmU5YzI3OWY3ODQwMDBlZmU4ZWQ5NDEzM2YxYzY3OGQxYmFkYzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWYwZDFlM2Q4NGJiNDQzNDA3N2QzYjYwNjZjOTYzYTg5NjQ5YTRiNzRkMTFhYjg1YmVjNWNkOGEyZWI0ZDA1OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYjk1ZWM2ZTMzYTVmNzJhYjZjNTUyMWIxNDRmMjZlYTU4MGQxZjA0MDJjZTEyMDkyM2I4N2JiOGM3YjQ2ZmU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2tpcC1pZi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTAzOTFkZGM5NjkxZTk5YmUzNWNlZGQ1MDdjZmI3MzdmZTUxNmIyZTBhZTA5NzRhZGI3MzIzNzQ5ZWZlOGQ0ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWI3NGQ5NDYzMmMzNjA1YmQ5YWFkYmU5ZDRhMGExNWEzZTA0OWI1ZTQ4MzYwNDQxZmY1MzU3YzJjODdhMDFhNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91c2FnZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGY4NTA4ZDVhZjZlNmY3NzFkMDI3OTkxY2MyM2FkMDcyYWE1N2I3MzVmMjlkNzNmZmQxMDQ4ODczM2E1ZjcwZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNmY5ZTJmNDQzNWRjODFhNGE3ZDhjM2I2ZGM5ZGY3NjJkZmQxOWQzNDFlZDhmMWU0M2YyZTY2MmQyZjY2MGRiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MGFjMzE5NjVjZjdhNDMyM2YzOTRmMWNlODM0MGE4YWEyOTc2ZGY2Y2ZhNjMxZGQwYmY3Y2ViNjFmY2EzYmY2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjVlNjg0MjdiYWZlZTdlYWE4NTE2OWRjMzVhMWI1ZTdkYmZlNmE2M2Y1NGY5YjI3Y2JkMGI2MzMxODRjMmI1ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzMyYzZlZDVmY2RjMGE3OGYxZTNhNThlZjhlNzAwNmEyNGU4MjgwOGM5ODZiY2EyNzhiZWNiZjU5NDFhNjc1NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQtc2VydmVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4NDkwZmM5MWVmY2EzNmE3NDEwOTdiMGViNjJhZGRlNjMyMzdkZGQxMGI1ZWYxYzNhZGY5ZTcyOTQzZDljYmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDJjMmJmZDEyYmZjMGQ4MGFhZGY0YzRhZmI3MGI2NTMwMGVlM2NjN2EyMDZhMjYyYmIyYTUyNGJkYjQ0ZTk5YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy90eXBlcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZDRmYjM1YWEyYjBkNjg2YjI4Mzk1YjVlNDM1MWQwYTAzYTBiMWMzZDhhYjE2ZWIxZDZlY2Y5M2RmMTc0M2Q4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YWJiNDM4ZTlmYzJiZDY3YTZhZDljNTAxNGUwOWU2YTBlZTU5ODg0OThmYjQ0M2ViMTViZGU5MTNkMzc3Yzk0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVidWctYXBwLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQyMWFmMTY1N2M3ODkyMDQ3YzFhOGJkZTRkYjhkMjdjNzMxYjg4YWYyNWU4ZWRiMTdmOWQ1MzBmM2M5YTg2NjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NmRjNzc5NTExMDcxOGQ2ZWE3YjE5ZTFiMDMxN2M3NjBmM2RkZjY3MmMxMTlkNzc3OGM5ZjIyYjlhOGEwZjY0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0M2ZmNDYzYWZlOTc1ZDA1ZWMxZjMyMzdlZTMwZWVhMzUwYjI1NTU5ZmNjMTM0YzI0ZWZhMWU2M2Y1YjdhOWQxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZlM2I1MDNmYTk0NDg0ZTdhODFhNmJlNzNhYjRkNjRjZjVhN2UzZDJlZjNhZTJkMzNjNGIxYzU4OTI3MWE1YzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzkxOGVkMDQyOWI0M2E5YmQ2MTUyNGY2YWM0Y2ZmOTAzN2JlYWE1NjQzYTU1MTI4ZTY5YTAwZTQwODliZmQ3YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9mcm9udGVuZC1kYXNoYm9hcmQtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5M2ZlODFjOGVmNTE4NmE2Y2YyNjc0M2I4MzY1ZmI1NTIzNGIxY2U0MDM2ZWU1NTVjNTIzYzEzZmY3ZDc2OTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI2NjRhYjg1ZjVmZTI3NGMwNjM3ZDUyZWE0YjAyMmNlYzA3MDBjYzdmZjRmZGNhMmQwOTQ2YjE3ZWUwY2Q0NDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjVlODdlNjY1MmNmOTA2MzU1ZjJiNzNkZDBiYTJiYTdjYjVlN2ZmZDE1MzVlN2Y3MTQwMDU2NDkwYTE1MzI2ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2UzODc3ZmE0Mjc4ZDhlMzJmNGJiZjAyM2NmMmU5MmUzNDhiZTZmZmQ2ZDk1ZWVmMDNiNTBjOWRiYjY1MzM5MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjJhZGRjYmE3NzAzOTUwYjExNTZkNzM1NmI5MjdiYWUzODI5OWRiOTU3YTE3ZmQxODQ2MjY0MTQ1OTZlMDUzNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQ0NzhiYTA1MDc2MjM5ZjQwNWUwZjMyNzRiODAyNzY4NDRiZmNhMDFhNTdmMzM2OTczMjRiYjE3ZWIyYjE3OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAxZmFmN2E3MDlhOWE4MmI4NWFmYmM2MDc0NGFlYmRiNWM1YzkyZDlmOWUwODQ5NmJjNDZlMDVhNTdlOTRjMmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTMxNjkyNjE0YmJhNmJiNDJmYmQxZTdlMDc5YzliMGMxMDk5ODY2Zjc4ZGJlYjMzMDY2NTU3ZmRjZWNiYmZiOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc0MzYxM2VkOWNmNWMzMjM4ZGRhMjQxY2NiOTY3OWE4MTg1ZmU5ZmMzZTVlZmY2MzkxNTUxOTgzNmZiYTcyN2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDRjMjBhOWI4MzdiYTNjNWFjODJiOWMxOWUzZDhhYWE1NzA5MDJiYWMxZjhlYWMzYWQ4YTUyNGQwYzhkY2IyOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL25pY2UtZ3JwYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY2YmY3NDk4YTJmM2VkNTI1NDM1MjNiOTg2OTE3Njc4ZjE3Nzc0ZjU3MzZmM2E1M2M2MDBhNDNhNzA1OGQ4YmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZjJkNDY3MzhiOTE3M2QzYjQzZmMzMmUzMjBhYWYxN2JkZmVkMjVkZDk5NjRjZjE3NDA5MjUyMWNkZGJiMjlmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTQyMGFhZDQyZDc3YmMxYjVjOGM1ZWFmNzcxNDk2MjRiN2RiMmFlYmZiMjE4NmIyZjkyYjA1NjA3YjJjNWIxZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVlMDNkYzI0ZGUwODM0ZTEzMjRiYmZjMzhmMTc1ODk1Zjg1ZTJmZGE1YzY0NzFmNTdiMTFlMmRkMWE5OTlmNGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTk0MjIzNTg2Y2E1OGIzM2FjNTNhMTU4NmQ3ODU0YWNiMzcyNjYzOWFjM2VhNjNlZDRmYmQxMjE5OTU1YzdjYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNDZjZGUyNWFlZWMzZjJjMjU3M2MwNzU4MGM0MDE5MGYxMGQ4MmRmMjI2Mjc0YjZjZDI3MDY3ZGNjNjBmMTE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NWU3MWNhZDIyYzA2MDI2NTFlY2IwN2M1ZjhlODQwZjgyNjJmYjVjZTM1NGQ1OTkyN2JhNTg4OTJhYWJlNWVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTY2NTQ3ZWQ2YTk5NjM1MGQ5NmRmNWRiZjA3MTMyN2ViM2M5MDUyMmI4NzU5Njg3OWMxNTdmNzA5ZDE3NjEyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc1MmQyZWU4NDE0ODc2MGYzMmM2OGYwNTdkNmE4YjlhNDA4ZjM4ZDcwMjllN2IwNTMwMjBhMDQyNWQ5ZGIxOTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViMDdjZDI4YmNkNmNiNTQ4NjcxZjMyZDI1NDlhNmM0NjEyY2JjNGIzMzhjOGZiOWRmNzQwMzA3MzhkYzIyNzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY2NWU2OTdjZjBkZjEwOTY0ZDIwMmJmZmE5YWU0MWJhY2IzNmUyOWUxZDY3NTA4ZDYwODIxMzEzMzQyNjVjNDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY3NTM2NWI0MjkzYzc3NDNjYTU0ZmE0ODRiMDZkZWI2NzdiNWZkYjVkY2M0YjhjZDY4ZGVhMTY2NmE2YzMyMWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW52LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTBlNzFkMDE5MjA5NWUwYTdmYzMyMGRmZDRkYjUyNjE0OWRkOGM4MTkwOGQ3ZDRhNTBkZmZhOWM3MjE0YjZiMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0ODFkODAxMDcyM2Q4NDIyMGFlY2E4ZWM0MjRmMjYwZTIwMWU0MmQwODZkZDBhNzc0NjBmOTFiOGUxMTI3YWQzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNzUwZDZlMGQ5ZmZlYmY0OWU4MDIwZDAwM2NjMzViM2RhNDkxNWU3NjkxZThmNTUzZGEwNmRhNjJmNTVjZTNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBkY2QyM2IxMjIzNGQzNGNlZmI0MjZmMWMyNWM3ODllMzk3NzA2Njc3MzA5MGZjYzE2NTllOTY0YjMxYzgzYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd3NyZWFkeS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmU4ODdmYTM2OWY4ZDY4NTU1YzNhNWYyZWJlNjgxMjBjYTdkMzUyZDMzYWU3NmRhYTZjOWI4OTEwMGYyMDJmMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWJjYTJkMjc3ODFhYWQ5OTg4ZTEwYjljYmFhMDBkMGExZGNlNzY0MDI0ZThjMzgwODRiZWQzYjJlZDc0ZjY1OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMzhhODkwYjIyZTA2ZjgzMjk5ZDY0NjgyOWM2ZWMxNDBhYzgyYmFiM2ZjYzJmZGEyMDdkNDI3MDIyZGNhZjU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjYTRhN2M4ZTA3MWRiMGU0MzIxYWFhODFhMTkyOWQ4ODIyZjMwOTkxZjZiMjcxYjM0NmU0YWFiOTIxODZhZjExIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmODNlYzNmYjA3YWYxNjhiYjA0N2Q0YjJjZWUxYWU2YTNiNDU4YzUzMThhYjdlMDJmNDExY2E3MmIyZGVlYTJjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiN2JkOTZkMDA0MjViOGYzYTkzZDA0ODE1YjhkMTE4YWM2MWRmYzBkZjcyN2I0YmZiN2JhM2IzYTdjZWIzZmMzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmNlYjJiODBlY2I2MjFkMDE0OTUyYzczYzFmMzUxMjY0OWRkMjY0YmUwYTQ2N2I4NDIxMDFlYzYyNzZmZGRlYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdHRyaWJ1dGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4ZmQ3ZDdkNGViNDRiY2I1ZDFkM2U4NGQ5YTNlZmY2M2IxNzAxNTNiYjc0OTYzNWJjYjEzYzA0Zjg1ZDc5ZmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzJmZGZhNjQ2NmEzZDQwNDkzMWM3NWY0MTQ4ODU3NzA4ZGY2NjJkMWJjYjM3ODZiZGE4YTFhYmE0NTM3YWMzOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQtc2VydmVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YThkOTNkMjUwYzg2MzVmNDM1Y2EwNmUwYjI5ZmM0MmFkZTQ0ODg5MTU5ZmJiOTNlZjE5YzU3NWNhNmQ5YzVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRmOGQ0MTE2MTFiMGIyMTQ0YjlkOTExMmIxYWRkOWI0MDMyMzlmYzQ4OWM0MzkyMzBiY2E2MmM4MDY1ZWU0M2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmY0NTM3YWYzZThkN2UwMWI3OWNiZTY0YmFmNWQwMTc2NDM0ZWFlNDI0ZDMwZWRjN2Y3MTJmNjI5YzM5ODI1OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU1MDFkMmMyYmIxOWM5YWQwMzFiMDcxZDEwNGIzMmI1YjY2Y2M0YjY2M2RhYmM1NGZlNWY2MzJjZWE0MDcyNTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyOGFjMTQ4OTBkY2U2ZWJjYmIxMjFjNWZiNTdlZDJmMmEwYzI1YTY2MDg3Mzg3YWI2NzU2ODQxMTQ4ZDNmNjE1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU2ZDlkOGQyYWY4OGNhMTcyMjY0ZWQ5MGE5NWRkZmIzNmRlNzFmZDcxNTFhMTQ0YmM2NDYzZTA2ZTVmNmMxMjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYzOWVmNDhkN2UwYTM4ZmRjNmM4YmNlZDJlMmQ4MWQ0MWIyOTRkYmU5YTk5ZDI3ZjVhYjQzNzNlM2YwMGRhNzkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTVmMWE2NWQ4MzM3NmUwMDMzMjgyNGUzYTNkODgzYTYxOTk3ZjUxNzgwOWM1M2E1MWQ0OTU3NzZiMWQ1MzEzMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcwYzVlNTIzMzg0ZTc1YjQzOGM1ZGE5N2I5ZTkyNTkzZWM5ZDNkYjZiMzc5NzdjNDZhNDk4MWY3NGQ2MzBkMjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hbmFseXRpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZTI0ZDAyYmUwYzZlMzA1MmY1ZDhhODgxMDI5Y2ExOGE2Njk3OGNjMDk3OTZlNGM5ZjQzMTdhN2ZkNGMwODJhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkZmU4YzNkNTk4ZjAxNTE0NjQzMjc2ZmQxZDVkNWU4YTUyYzM2N2JkYWQ5OWRmNzgwMTk1YTFhZTBhNzlmNmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU2Yzg2ZmM1ZTVmMDEyZTJkYzcyNWQ5ZmU2NmQ1YjkwODRmZTExYjEwNDFiOGU3YTQzYzUyYzhiMjJhNTJjOWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWQ3YTFlYjAxNzY2YWI5NTA2OWI5NDA1OTgyMmE3MDM3YmJkY2EwMGZmMGI0YTgzNWZmMzZmODA4MmQxMTRiZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDFlMDEyYTcxYmYyZmRmMGI4ZWQ1YmMwNGE0NGRhOTI5NmU4OGEzN2EwMzlhYjQ3OWNkOGViNmQzMzI5OGY2NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNDdlNmM1NDZmNzZhYjBjYjYxMzIwZjE4YjMyNGUwMWExZjQ1NTQyZTM0Nzk3ZTk4ZWFiYjViZTZiMmUyMGJmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjNjNjkwM2Q3MzdlNzNiNzdlYTMyMzgxZWY2ZjVmMjAwYzBjOTIzYWFjODI5M2ExN2MwNjdjZjQ3MTY0ZWNmYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjg2MmE2NjI1YmI2MDFkMThiNjUyNWZhZDhiZjc4MzI2NTUyMjJiYzE5NThlZmM1OWM1YjFhNWEwYWQ4NjE4MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhmYjBiZTBjMmRkNjMxZGNjMjllZDcyZDBlZjg4MTE5ODQwMDRiY2NkMTE5ZmU2YTI0NWRhNDk0MDU1MGE3NTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGNhYTgwODc1OGFkMWEzOGZmZmU4NmViM2JkYTdiZWRmMWZmNzI0Mjc5NTk3ODMzZjM3NmMwNTg0NWM0YTMyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZmQxMWYxNzMyMDZhNmMxOWI3NjVkOGY0OGQxNDNjNTA1YThjZDczYjBjM2QwOTU2ODBiODRkN2Y4Zjc3MWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTRmNmQ5ZjcxYTk3OTljNzk3MTg1N2RhZGE5YzZkODNmNTg0ZTc0MDg5NGUwNTg5ZjZjYjZlOTZiY2YxODFmOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2I4MjdiN2NhNTc3ODA5NzZjN2EyZTY0Nzg5YmMyMzE3ZDJiZThlYjMwMjkyOTE1MDYwYzljM2JhMWZiYWUxMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYWY4NDJmMWY0ODcxMDczMDgxNWQ3NmRmMzA2YTQ5YTFlZGNlODEzOTFmNWI4MTdkMWY2MzZlZjNlMDNhODZjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA1NDk4YWRkYjdjOWFlZWRhNTI5MThiYzVmMGYyZjZhNDE2NTU4MjM2YTY4YWMwYjRkMjg3ZmFlMDIzZDk2NTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjA5NzM3ZWI0ZjI0ODQ3ZWZlZTZlNmNiMzFjNGI3MzBmZWI1NjE3MDBlNDEyODBmY2FmNTlhNDEzZTk0OTU3YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzRkYjY4MzAwZWU0NDI3MzVhNmVlYzMzODBjNjUwZTZmMzVmMDNmMTNhNjE4YTM4ZGE4MjFlNTdmMjcxNzg1MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9iaWxsaW5nLW1vZGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjM3MGI0MGFiOGI2MzE1OGM0MTUzZGEwYzBiYWMzYTFlNDBjZjQ5YjY0MDE3MmE1MDZkYmY2OTcxYzQ1YWVlZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOWU0ZWFjYmRhOTA4NTBiOTdhMzc1NzAwNWY4NWFiMTU5MTA4M2RmZjZiZTYxZDllNDdiNzViNzM0MjAzMWY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F0dHJpYnV0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI2NDYyNmQ5MTM2ZTc1MmY5ZTNjMzZlMjdhMDM3MTdiMTZkYmRkMTFkMGVkMWU0Zjc0ZmJjZDY2OTJhZDRkNDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWRkYjk4YjZmYTE2NTg3M2NkMDNhMDY3ZTA0OTlhMmQxYTlkNGJmY2I2YWRjNDhmZGY0OTIxNjIwMzgyMDE1NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTNkYzBiYTQ5OTYwYjVmOGJiMmM1ODkzZjUyNTllMDg3YTU0ZWQyMTc0OGNhMmUzYzVjM2ZmMmExMWY2MGZjMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkNTBhMGE4YWY0NGEzYWUyNmMwYmVlMjA0YWNkYzM2MzRkOGQ2NGEwMzNlZjFkOTFjNzE0NjM5MWViMGNkZDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZWQ3NjdhYTE0YzY4NDcyYTU4ZTZhMWM5YWM0MTEzYjFjZDhiMWI1MzJlN2IyNWM0ZWQ5YWE2ZTMwMmFkNjYwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL2Fsd2F5cy1kZWZhdWx0LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNDdmNmY3NzM3ODZiMDc2MGFjZTMzNzc5ZmQ2MWFhOGNlZTMyMGY2NzkxNjU4YTI3NmEzNDRjM2Q2YzMyOWVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Jsb2NrZWQtcmVwb3NpdG9yaWVzLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFhZDYwZmQwZTJjNTc3NjJkN2RmYTNmYTJkMmNjNDFlYzI3MGI2OTc0Mzc4OTQxMDhjZDEzN2RjOTg3OTJjODIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0NGZhZDczZDU5ZDg1NDJiYzU5MGRjM2VkYzQ2MDI3ZGJiMTI4ZmVmM2EzYTk4NmNkMjFhZjljZmZkMDVlNDBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzkyNjdlMjIyNzVkZTM1OTA3YTRlOTI4YTQ1NTdjNTQwMDM4MTUwNTM2ZDZkZDc2YjRjYzA5NGI4OTIxZDk2NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MzBlMTE4ZWRhZmExYjk4NjYzNDU4NmVkODZmODFjMjYzYWQyNzZjYWJlYmFjNzIzNzBlY2YyNDk4ZDdkMjQzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzIyZjMzYTc0Nzc1NDAxODVhNjFlYWU2ODdmMjlmMWQzY2FhY2ZhNDQyYzhhNGRkMTNiNmVmNzQ1ZTBmZjhhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiNGQ3NmUyNTlkMDQ3ZmRiMTQ0OTE1OGJiNGRlYTdhNTZlMmIzMjUwOGE1MTgxYTU3Njg3ZDhlMjk2MjkzNDhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2JpbGxpbmctbW9kZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjhiZDRiOTEyZTU1YmU1ZWRmMGE5ZThkMDM4NTI2M2JmMGQ2ZWU1NTMzZTVlZDI3ZGM5MDI4YTVhMDM5Y2E4NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI2ZjgwNGJiYWEwMjAwMGQ5NDVlNWYyOGFiNDM4MjlmMmE3NTIzMjljMDAyZjU5MjIyYzM5OGI5YzI4OGVkMGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiMmQzYmZkZTk5NDU4Mjc5MmNiZGQ3M2QyNGU5M2RhOWEzYjczYTExZWY4ZjUzNTY3NWQ0Mzk2MGFhNjBmYmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMThkZDU2YzIzNWQwNTQ2NWFkZmRiMDk3NGRmZTg5M2NmNTQwZDQ5NzQ5OWVmNDc3OGMyOTc3MDFhMDM3NGNkNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQtc2VydmVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwNmI1OWEzMjVmMDMxZWY4ODI1MzU3MzI0NWEyOWM3OWIzYjJmNDQzMzNhYzE1YzVhZjA5N2FkZTY3MzQ4NTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTU4NWQyMGE0N2EyYmYwOThiNGRjYTI1ZjQwZjZlZTg5NWUxMmRlNjMzY2MyNGY4MWEyOTliNTJlZjE1YmZjMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ5OTU2MjVlNWRhNTUyZGYxNjgyNWZhMWJkZDg5NWYwZTk4ZjcyZWQ0Njk4MWQ1ZWQzNjk3ZjQ4MThmYjcxNzkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2U4ZTI0NjYyNjk3OTc0YzQ4MjNmNjJlZmYxZDE5YzA5OWI0ZWRkZTM2YjFlNTg4OGUzNzFlYmJlZGM0MDVkYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjM1ZDU3OTBmNDE2YjllNjQ4NzQ1MDc3ZWJhYmZhZjI5MzliOTAxMTYxMDgxZmUwOWYxN2ZjYzIxODYwYjVkYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOTk5OWY0ZTZmYWYwYWY3YzM0ZmU0OWFkNDQ0NDJlOTA5ZjYxNWMyZGExNWZhOTUwZGYxZDUzZmEzYzZiMDI3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmZiZDc4ZDNmMWViZmE1NmZjODk4ZGI1YTcyMzhlMjIzOGIxNjc2ZTMxY2ZkNDM4YThmZTVmMDViMDlmMjZmYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiOTIyMDg5MTVmMDY1MGIyODJkMWJkZjRmYTAzZDljODIwMzUyYWViZTg3MGJhMzU5ZGIzMDhlMWQ4M2U2YzAyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjljN2NmMDU2NDYyNjIxYTAyNjYxYWM3MTBkZWE0NDIyMjVjM2VmNzllZmJkMzBiN2RhOTFlMTdlZTc4ZjkzNmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZTY4MTVjM2I2YTg5OWQ2YTFkZDliOTYwMjgzMDAxZTdiNTFkMjQ5NGVjMjcyZTU5YmM3MGI2ZDQ0MmZiOWY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbmljZS1ncnBjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2Y1MDcyODAzMzFlZjdhYTU1ZTJhZDA2MmRjNjJmYWRiM2ZkYjQxNWE2ZDBhMzZiYWNlZjczNGQwOTcxYWQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJkYzZhNzk4YTVmY2UzZTc0MDFhYmFhM2U2MGU4MDY3ZTU3ODFlOTY2N2Y3ZWFiODZjNDYwY2MxNDAzZTRiZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93ZWJob29rLWV2ZW50LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTFiYWVjMzY0NGU0ODIzNzUxZGQ1MjZiNWRjYzBiZDljNjViNjdhZWM3Njg4N2EwNzE4Yjg1MzNjMDJkYzRiYSIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZSI6IHsKICAgICJidWlsZGVyIjogewogICAgICAiaWQiOiAiZ2l0aHViLmNvbS9naXRwb2QtaW8vbGVld2F5OjAuNy4zLTg1MzlkOTJAc2hhMjU2OjVmZjYwOGQwYWM0OWFlMzM2MDIxNGQ1NmExYjNlYjE1NjEzMDljYzMxZDNlNjJhNTdhMjgyZjRmZjVjMDE1ODgiCiAgICB9LAogICAgInJlY2lwZSI6IHsKICAgICAgInR5cGUiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dpdHBvZC1pby9sZWV3YXkvYnVpbGRAeWFybjo3IiwKICAgICAgImRlZmluZWRJbk1hdGVyaWFsIjogMCwKICAgICAgImVudHJ5UG9pbnQiOiAiY29tcG9uZW50cy9naXRwb2QtcHJvdG9jb2w6bGliIiwKICAgICAgImFyZ3VtZW50cyI6IFsKICAgICAgICAibGVld2F5IiwKICAgICAgICAiYnVpbGQiLAogICAgICAgICItLWRvY2tlci1idWlsZC1vcHRpb25zIiwKICAgICAgICAibmV0d29yaz1ob3N0IiwKICAgICAgICAiLS13ZXJmdD10cnVlIiwKICAgICAgICAiLWMiLAogICAgICAgICJyZW1vdGUiLAogICAgICAgICItLWNvdmVyYWdlLW91dHB1dC1wYXRoPS90bXAvdG1wLkFQME5aVjY1MkIiLAogICAgICAgICItRHZlcnNpb249dXBkYXRlLXlhcm5sb2NrLjAiLAogICAgICAgICItRHJlbW92ZVNvdXJjZXM9ZmFsc2UiLAogICAgICAgICItRGltYWdlUmVwb0Jhc2U9ZXUuZ2NyLmlvL2dpdHBvZC1jb3JlLWRldi9idWlsZCIsCiAgICAgICAgIi1EbG9jYWxBcHBWZXJzaW9uPXVua25vd24iLAogICAgICAgICItRFNFR01FTlRfSU9fVE9LRU49WDNiTmF0WVB1ZElKY0N6NmtGbFRuNTRwcnVtUUFxR2giLAogICAgICAgICItRFJFUExJQ0FURURfQVBJX1RPS0VOPWRlYTEwYzhmYjU4NzU1ZmQ1MWFiOTk2Y2NiYWFiODk2MmY1ZTkwNmFiNDQxMmFlNjc3OTk2ZWE3NGU4NWFlMzUiLAogICAgICAgICItRFJFUExJQ0FURURfQVBQPWdpdHBvZCIsCiAgICAgICAgIi1EbnBtUHVibGlzaFRyaWdnZXI9ZmFsc2UiCiAgICAgIF0sCiAgICAgICJlbnZpcm9ubWVudCI6IHsKICAgICAgICAibWFuaWZlc3QiOiB7CiAgICAgICAgICAiYXJjaCI6ICJhbWQ2NCIsCiAgICAgICAgICAiZ28iOiAiZ28gdmVyc2lvbiBnbzEuMTkuMiBsaW51eC9hbWQ2NCIsCiAgICAgICAgICAibm9kZSI6ICJ2MTYuMTkuMCIsCiAgICAgICAgICAib3MiOiAibGludXgiLAogICAgICAgICAgInlhcm4iOiAiMS4yMi4xOSIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAibWV0YWRhdGEiOiB7CiAgICAgICJidWlsZFN0YXJ0ZWRPbiI6ICIyMDIzLTAzLTA2VDA5OjIwOjMzLjU4MjcwNzhaIiwKICAgICAgImJ1aWxkRmluaXNoZWRPbiI6ICIyMDIzLTAzLTA2VDA5OjIwOjU2LjUyNzMxODMzWiIsCiAgICAgICJjb21wbGV0ZW5lc3MiOiB7CiAgICAgICAgImFyZ3VtZW50cyI6IHRydWUsCiAgICAgICAgImVudmlyb25tZW50IjogZmFsc2UsCiAgICAgICAgIm1hdGVyaWFscyI6IHRydWUKICAgICAgfSwKICAgICAgInJlcHJvZHVjaWJsZSI6IGZhbHNlCiAgICB9LAogICAgIm1hdGVyaWFscyI6IFsKICAgICAgewogICAgICAgICJ1cmkiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9naXRwb2QtaW8vZ2l0cG9kLmdpdCIsCiAgICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAgICJzaGEyNTYiOiAiNjdlNzI1ZjIwOGQ1YjVmYjY3NDUzYjNlNGJlMzAzYzExYTY0NGRmMiIKICAgICAgICB9CiAgICAgIH0KICAgIF0KICB9Cn0=","signatures":null}
|
|
2
|
+
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
|
+
import { Plans } from "./plans";
|
|
9
|
+
import { User } from "./protocol";
|
|
10
|
+
import { oneMonthLater } from "./util/timeutil";
|
|
10
11
|
|
|
11
12
|
/*
|
|
12
13
|
* Subscription and acocunting data
|
|
@@ -33,7 +34,7 @@ export interface AccountEntry {
|
|
|
33
34
|
/**
|
|
34
35
|
* credit: end of validity
|
|
35
36
|
*/
|
|
36
|
-
expiryDate?: string;
|
|
37
|
+
expiryDate?: string; // exclusive
|
|
37
38
|
|
|
38
39
|
kind: AccountEntryKind;
|
|
39
40
|
|
|
@@ -46,26 +47,26 @@ export interface AccountEntry {
|
|
|
46
47
|
description?: object;
|
|
47
48
|
}
|
|
48
49
|
export namespace AccountEntry {
|
|
49
|
-
export function create<T extends AccountEntry>(entry: Omit<T,
|
|
50
|
+
export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
|
|
50
51
|
const result = entry as T;
|
|
51
52
|
result.uid = uuidv4();
|
|
52
53
|
return result;
|
|
53
|
-
}
|
|
54
|
+
}
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
export type DebitAccountEntryKind =
|
|
57
|
-
export type AccountEntryKind =
|
|
57
|
+
export type DebitAccountEntryKind = "session" | "expiry" | "loss";
|
|
58
|
+
export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
|
|
58
59
|
|
|
59
60
|
export interface Credit extends AccountEntry {
|
|
60
|
-
kind:
|
|
61
|
+
kind: "credit";
|
|
61
62
|
expiryDate: string;
|
|
62
63
|
}
|
|
63
64
|
export type Debit = LossDebit | ExpiryDebit | SessionDebit;
|
|
64
65
|
export interface LossDebit extends AccountEntry {
|
|
65
|
-
kind:
|
|
66
|
+
kind: "loss";
|
|
66
67
|
}
|
|
67
68
|
export interface ExpiryDebit extends AccountEntry {
|
|
68
|
-
kind:
|
|
69
|
+
kind: "expiry";
|
|
69
70
|
creditId: undefined;
|
|
70
71
|
}
|
|
71
72
|
export interface SessionDebit extends AccountEntry {
|
|
@@ -80,9 +81,7 @@ export interface CreditDescription {
|
|
|
80
81
|
}
|
|
81
82
|
export namespace CreditDescription {
|
|
82
83
|
export function is(obj: any): obj is CreditDescription {
|
|
83
|
-
return !!obj
|
|
84
|
-
&& obj.hasOwnProperty('subscriptionId')
|
|
85
|
-
&& obj.hasOwnProperty('planId');
|
|
84
|
+
return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
export interface SessionDescription {
|
|
@@ -93,11 +92,13 @@ export interface SessionDescription {
|
|
|
93
92
|
}
|
|
94
93
|
export namespace SessionDescription {
|
|
95
94
|
export function is(obj: any): obj is SessionDescription {
|
|
96
|
-
return
|
|
97
|
-
&&
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
return (
|
|
96
|
+
!!obj &&
|
|
97
|
+
obj.hasOwnProperty("contextTitle") &&
|
|
98
|
+
obj.hasOwnProperty("contextUrl") &&
|
|
99
|
+
obj.hasOwnProperty("workspaceId") &&
|
|
100
|
+
obj.hasOwnProperty("workspaceInstanceId")
|
|
101
|
+
);
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
|
|
@@ -111,11 +112,11 @@ export namespace SessionDescription {
|
|
|
111
112
|
export interface Subscription {
|
|
112
113
|
uid: string;
|
|
113
114
|
userId: string;
|
|
114
|
-
startDate: string;
|
|
115
|
+
startDate: string; // inclusive
|
|
115
116
|
/** When the subscription will end (must be >= cancellationDate!) */
|
|
116
|
-
endDate?: string;
|
|
117
|
+
endDate?: string; // exclusive
|
|
117
118
|
/** When the subscription was cancelled */
|
|
118
|
-
cancellationDate?: string;
|
|
119
|
+
cancellationDate?: string; // exclusive
|
|
119
120
|
/** Number of granted hours */
|
|
120
121
|
amount: number;
|
|
121
122
|
/** Number of granted hours for the first month: If this is set, use this value for the first month */
|
|
@@ -124,6 +125,7 @@ export interface Subscription {
|
|
|
124
125
|
paymentReference?: string;
|
|
125
126
|
paymentData?: PaymentData;
|
|
126
127
|
teamSubscriptionSlotId?: string;
|
|
128
|
+
teamMembershipId?: string;
|
|
127
129
|
/** marks the subscription as deleted */
|
|
128
130
|
deleted?: boolean;
|
|
129
131
|
}
|
|
@@ -145,8 +147,7 @@ export interface UserPaidSubscription extends Subscription {
|
|
|
145
147
|
}
|
|
146
148
|
export namespace UserPaidSubscription {
|
|
147
149
|
export function is(data: any): data is UserPaidSubscription {
|
|
148
|
-
return !!data
|
|
149
|
-
&& data.hasOwnProperty('paymentReference');
|
|
150
|
+
return !!data && data.hasOwnProperty("paymentReference");
|
|
150
151
|
}
|
|
151
152
|
}
|
|
152
153
|
|
|
@@ -155,41 +156,56 @@ export interface AssignedTeamSubscription extends Subscription {
|
|
|
155
156
|
}
|
|
156
157
|
export namespace AssignedTeamSubscription {
|
|
157
158
|
export function is(data: any): data is AssignedTeamSubscription {
|
|
158
|
-
return !!data
|
|
159
|
-
|
|
159
|
+
return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface AssignedTeamSubscription2 extends Subscription {
|
|
164
|
+
teamMembershipId: string;
|
|
165
|
+
}
|
|
166
|
+
export namespace AssignedTeamSubscription2 {
|
|
167
|
+
export function is(data: any): data is AssignedTeamSubscription2 {
|
|
168
|
+
return typeof data === "object" && data.hasOwnProperty("teamMembershipId");
|
|
160
169
|
}
|
|
161
170
|
}
|
|
162
171
|
|
|
163
172
|
export namespace Subscription {
|
|
164
|
-
export function create(newSubscription: Omit<Subscription,
|
|
173
|
+
export function create(newSubscription: Omit<Subscription, "uid">) {
|
|
165
174
|
const subscription = newSubscription as Subscription;
|
|
166
175
|
subscription.uid = uuidv4();
|
|
167
176
|
return subscription;
|
|
168
|
-
}
|
|
177
|
+
}
|
|
169
178
|
export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
|
|
170
179
|
s.endDate = endDate || cancellationDate;
|
|
171
180
|
s.cancellationDate = cancellationDate;
|
|
172
|
-
}
|
|
181
|
+
}
|
|
173
182
|
export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
|
|
174
|
-
return
|
|
175
|
-
|
|
176
|
-
&&
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
183
|
+
return (
|
|
184
|
+
!!s1 &&
|
|
185
|
+
!!s2 &&
|
|
186
|
+
s1.userId === s2.userId &&
|
|
187
|
+
s1.planId === s2.planId &&
|
|
188
|
+
s1.startDate === s2.startDate &&
|
|
189
|
+
s1.endDate === s2.endDate &&
|
|
190
|
+
s1.amount === s2.amount &&
|
|
191
|
+
s1.cancellationDate === s2.cancellationDate &&
|
|
192
|
+
s1.deleted === s2.deleted &&
|
|
193
|
+
((s1.paymentData === undefined && s2.paymentData === undefined) ||
|
|
194
|
+
(!!s1.paymentData &&
|
|
195
|
+
!!s2.paymentData &&
|
|
196
|
+
s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
|
|
197
|
+
s1.paymentData.newPlan === s2.paymentData.newPlan))
|
|
198
|
+
);
|
|
199
|
+
}
|
|
187
200
|
export function isActive(s: Subscription, date: string): boolean {
|
|
188
201
|
return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
|
|
189
|
-
}
|
|
202
|
+
}
|
|
203
|
+
export function isCancelled(s: Subscription, date: string): boolean {
|
|
204
|
+
return (!!s.cancellationDate && s.cancellationDate < date) || (!!s.endDate && s.endDate < date); // This edge case is meant to handle bad data: If for whatever reason cancellationDate has not been set: treat endDate as such
|
|
205
|
+
}
|
|
190
206
|
export function isDowngraded(s: Subscription) {
|
|
191
207
|
return s.paymentData && s.paymentData.downgradeDate;
|
|
192
|
-
}
|
|
208
|
+
}
|
|
193
209
|
export function calculateCurrentPeriod(startDate: string, now: Date) {
|
|
194
210
|
let nextStartDate = startDate;
|
|
195
211
|
do {
|
|
@@ -197,19 +213,27 @@ export namespace Subscription {
|
|
|
197
213
|
nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
|
|
198
214
|
} while (nextStartDate < now.toISOString());
|
|
199
215
|
return { startDate, endDate: nextStartDate };
|
|
200
|
-
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export function isOldTeamSubscription(s: Subscription): boolean {
|
|
219
|
+
return Plans.isTeamPlan(s.planId) && !s.teamMembershipId;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export function isTeamSubscription2(s: Subscription): boolean {
|
|
223
|
+
return Plans.isTeamPlan(s.planId) && !!s.teamMembershipId;
|
|
224
|
+
}
|
|
201
225
|
}
|
|
202
226
|
|
|
203
227
|
export type MaybeSubscription = Subscription | undefined;
|
|
204
228
|
|
|
205
229
|
export interface Period {
|
|
206
|
-
startDate: string;
|
|
207
|
-
endDate: string;
|
|
230
|
+
startDate: string; // inclusive
|
|
231
|
+
endDate: string; // exclusive
|
|
208
232
|
}
|
|
209
233
|
|
|
210
234
|
export type MaybePeriod = Period | undefined;
|
|
211
235
|
|
|
212
|
-
export type AccountEntryFixedPeriod = Omit<AccountEntry,
|
|
236
|
+
export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
|
|
213
237
|
export interface AccountStatement extends Period {
|
|
214
238
|
userId: string;
|
|
215
239
|
/**
|
|
@@ -221,9 +245,9 @@ export interface AccountStatement extends Period {
|
|
|
221
245
|
/** Remaining valid hours (accumulated from credits) */
|
|
222
246
|
remainingHours: RemainingHours;
|
|
223
247
|
}
|
|
224
|
-
export type RemainingHours = number |
|
|
248
|
+
export type RemainingHours = number | "unlimited";
|
|
225
249
|
|
|
226
250
|
export interface CreditAlert {
|
|
227
|
-
userId: string
|
|
228
|
-
remainingUsageHours: number
|
|
251
|
+
userId: string;
|
|
252
|
+
remainingUsageHours: number;
|
|
229
253
|
}
|
package/src/admin-protocol.ts
CHANGED
|
@@ -1,27 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol";
|
|
8
|
+
import { BlockedRepository } from "./blocked-repositories-protocol";
|
|
9
|
+
import { FindPrebuildsParams } from "./gitpod-service";
|
|
10
|
+
import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol";
|
|
8
11
|
import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance";
|
|
9
12
|
import { RoleOrPermission } from "./permission";
|
|
10
13
|
import { AccountStatement } from "./accounting-protocol";
|
|
14
|
+
import { BillingMode } from "./billing-mode";
|
|
15
|
+
import { CostCenterJSON, ListUsageRequest, ListUsageResponse } from "./usage";
|
|
16
|
+
import { InstallationAdminSettings, TelemetryData } from "./installation-admin-protocol";
|
|
11
17
|
|
|
12
18
|
export interface AdminServer {
|
|
13
19
|
adminGetUsers(req: AdminGetListRequest<User>): Promise<AdminGetListResult<User>>;
|
|
14
20
|
adminGetUser(id: string): Promise<User>;
|
|
15
21
|
adminBlockUser(req: AdminBlockUserRequest): Promise<User>;
|
|
16
22
|
adminDeleteUser(id: string): Promise<void>;
|
|
23
|
+
adminVerifyUser(id: string): Promise<User>;
|
|
17
24
|
adminModifyRoleOrPermission(req: AdminModifyRoleOrPermissionRequest): Promise<User>;
|
|
18
25
|
adminModifyPermanentWorkspaceFeatureFlag(req: AdminModifyPermanentWorkspaceFeatureFlagRequest): Promise<User>;
|
|
19
26
|
|
|
27
|
+
adminCreateBlockedRepository(urlRegexp: string, blockUser: boolean): Promise<BlockedRepository>;
|
|
28
|
+
adminDeleteBlockedRepository(id: number): Promise<void>;
|
|
29
|
+
adminGetBlockedRepositories(
|
|
30
|
+
req: AdminGetListRequest<BlockedRepository>,
|
|
31
|
+
): Promise<AdminGetListResult<BlockedRepository>>;
|
|
32
|
+
|
|
33
|
+
adminGetTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
|
|
34
|
+
adminGetTeams(req: AdminGetListRequest<Team>): Promise<AdminGetListResult<Team>>;
|
|
35
|
+
adminGetTeamById(id: string): Promise<Team | undefined>;
|
|
36
|
+
adminSetTeamMemberRole(teamId: string, userId: string, role: TeamMemberRole): Promise<void>;
|
|
37
|
+
|
|
20
38
|
adminGetWorkspaces(req: AdminGetWorkspacesRequest): Promise<AdminGetListResult<WorkspaceAndInstance>>;
|
|
21
39
|
adminGetWorkspace(id: string): Promise<WorkspaceAndInstance>;
|
|
22
40
|
adminForceStopWorkspace(id: string): Promise<void>;
|
|
23
41
|
adminRestoreSoftDeletedWorkspace(id: string): Promise<void>;
|
|
24
42
|
|
|
43
|
+
adminGetProjectsBySearchTerm(req: AdminGetListRequest<Project>): Promise<AdminGetListResult<Project>>;
|
|
44
|
+
adminGetProjectById(id: string): Promise<Project | undefined>;
|
|
45
|
+
|
|
46
|
+
adminFindPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
|
|
25
47
|
adminSetLicense(key: string): Promise<void>;
|
|
26
48
|
|
|
27
49
|
adminGetAccountStatement(userId: string): Promise<AccountStatement>;
|
|
@@ -29,43 +51,61 @@ export interface AdminServer {
|
|
|
29
51
|
adminIsStudent(userId: string): Promise<boolean>;
|
|
30
52
|
adminAddStudentEmailDomain(userId: string, domain: string): Promise<void>;
|
|
31
53
|
adminGrantExtraHours(userId: string, extraHours: number): Promise<void>;
|
|
54
|
+
adminGetBillingMode(attributionId: string): Promise<BillingMode>;
|
|
55
|
+
|
|
56
|
+
adminGetSettings(): Promise<InstallationAdminSettings>;
|
|
57
|
+
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
|
|
58
|
+
|
|
59
|
+
adminGetCostCenter(attributionId: string): Promise<CostCenterJSON | undefined>;
|
|
60
|
+
adminSetUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
|
|
61
|
+
|
|
62
|
+
adminListUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
|
|
63
|
+
adminAddUsageCreditNote(attributionId: string, credits: number, note: string): Promise<void>;
|
|
64
|
+
adminGetUsageBalance(attributionId: string): Promise<number>;
|
|
65
|
+
|
|
66
|
+
// Admin Settings
|
|
67
|
+
adminGetSettings(): Promise<InstallationAdminSettings>;
|
|
68
|
+
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
|
|
69
|
+
adminGetTelemetryData(): Promise<TelemetryData>;
|
|
32
70
|
}
|
|
33
71
|
|
|
34
72
|
export interface AdminGetListRequest<T> {
|
|
35
|
-
offset: number
|
|
36
|
-
limit: number
|
|
37
|
-
orderBy: keyof T
|
|
38
|
-
orderDir: "asc" | "desc"
|
|
73
|
+
offset: number;
|
|
74
|
+
limit: number;
|
|
75
|
+
orderBy: keyof T;
|
|
76
|
+
orderDir: "asc" | "desc";
|
|
39
77
|
searchTerm?: string;
|
|
40
78
|
}
|
|
41
79
|
|
|
42
80
|
export interface AdminGetListResult<T> {
|
|
43
|
-
total: number
|
|
44
|
-
rows: T[]
|
|
81
|
+
total: number;
|
|
82
|
+
rows: T[];
|
|
45
83
|
}
|
|
46
84
|
|
|
47
85
|
export interface AdminBlockUserRequest {
|
|
48
|
-
id: string
|
|
49
|
-
blocked: boolean
|
|
86
|
+
id: string;
|
|
87
|
+
blocked: boolean;
|
|
50
88
|
}
|
|
51
89
|
|
|
52
90
|
export interface AdminModifyRoleOrPermissionRequest {
|
|
53
91
|
id: string;
|
|
54
92
|
rpp: {
|
|
55
|
-
r: RoleOrPermission
|
|
56
|
-
add: boolean
|
|
57
|
-
}[]
|
|
93
|
+
r: RoleOrPermission;
|
|
94
|
+
add: boolean;
|
|
95
|
+
}[];
|
|
58
96
|
}
|
|
59
97
|
|
|
60
98
|
export interface AdminModifyPermanentWorkspaceFeatureFlagRequest {
|
|
61
99
|
id: string;
|
|
62
100
|
changes: {
|
|
63
|
-
featureFlag: NamedWorkspaceFeatureFlag
|
|
64
|
-
add: boolean
|
|
65
|
-
}[]
|
|
101
|
+
featureFlag: NamedWorkspaceFeatureFlag;
|
|
102
|
+
add: boolean;
|
|
103
|
+
}[];
|
|
66
104
|
}
|
|
67
105
|
|
|
68
|
-
export interface WorkspaceAndInstance
|
|
106
|
+
export interface WorkspaceAndInstance
|
|
107
|
+
extends Omit<Workspace, "id" | "creationTime">,
|
|
108
|
+
Omit<WorkspaceInstance, "id" | "creationTime"> {
|
|
69
109
|
workspaceId: string;
|
|
70
110
|
workspaceCreationTime: string;
|
|
71
111
|
instanceId: string;
|
|
@@ -78,7 +118,7 @@ export namespace WorkspaceAndInstance {
|
|
|
78
118
|
return {
|
|
79
119
|
id: wai.workspaceId,
|
|
80
120
|
creationTime: wai.workspaceCreationTime,
|
|
81
|
-
...
|
|
121
|
+
...wai,
|
|
82
122
|
};
|
|
83
123
|
}
|
|
84
124
|
|
|
@@ -89,7 +129,7 @@ export namespace WorkspaceAndInstance {
|
|
|
89
129
|
return {
|
|
90
130
|
id: wai.instanceId,
|
|
91
131
|
creationTime: wai.instanceCreationTime,
|
|
92
|
-
...
|
|
132
|
+
...wai,
|
|
93
133
|
};
|
|
94
134
|
}
|
|
95
135
|
}
|
|
@@ -102,4 +142,4 @@ export type AdminGetWorkspacesQuery = {
|
|
|
102
142
|
instanceId?: string;
|
|
103
143
|
workspaceId?: string;
|
|
104
144
|
ownerId?: string;
|
|
105
|
-
};
|
|
145
|
+
};
|