terraform-cdk-serverless-github-actions-runner-controller 0.0.7 → 0.0.9

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/lib/lib/gcp.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Construct } from 'constructs';
1
+ import { Construct } from "constructs";
2
2
  export declare class Gcp extends Construct {
3
3
  constructor(scope: Construct, id: string);
4
4
  }
package/lib/lib/gcp.js CHANGED
@@ -18,72 +18,72 @@ const variables_1 = require("./variables");
18
18
  class Gcp extends constructs_1.Construct {
19
19
  constructor(scope, id) {
20
20
  super(scope, id);
21
- const location = 'europe-north1';
22
- const project = 'gha-runner-example';
23
- new provider_1.GoogleProvider(this, 'google', {
21
+ const location = "europe-north1";
22
+ const project = "gha-runner-example";
23
+ new provider_1.GoogleProvider(this, "google", {
24
24
  project,
25
25
  region: location,
26
26
  });
27
- new provider_2.NullProvider(this, 'null');
27
+ new provider_2.NullProvider(this, "null");
28
28
  const { pat, githubConfigUrl } = (0, variables_1.commonVariables)(this);
29
- const registry = new artifact_registry_repository_1.ArtifactRegistryRepository(this, 'registry', {
30
- format: 'DOCKER',
31
- mode: 'REMOTE_REPOSITORY',
32
- repositoryId: 'gha-runner-test',
33
- description: 'Repository to host run and resulting images from GHA runs',
29
+ const registry = new artifact_registry_repository_1.ArtifactRegistryRepository(this, "registry", {
30
+ format: "DOCKER",
31
+ mode: "REMOTE_REPOSITORY",
32
+ repositoryId: "gha-runner-test",
33
+ description: "Repository to host run and resulting images from GHA runs",
34
34
  remoteRepositoryConfig: {
35
35
  dockerRepository: {
36
36
  customRepository: {
37
- uri: 'https://ghcr.io',
37
+ uri: "https://ghcr.io",
38
38
  },
39
39
  },
40
40
  },
41
41
  });
42
- const jobSa = new service_account_1.ServiceAccount(this, 'jobServiceAccount', {
43
- accountId: 'gha-runner-job-sa',
42
+ const jobSa = new service_account_1.ServiceAccount(this, "jobServiceAccount", {
43
+ accountId: "gha-runner-job-sa",
44
44
  });
45
- const runnerRole = new project_iam_custom_role_1.ProjectIamCustomRole(this, 'runnerRole', {
46
- roleId: 'ghaRunnerRole',
47
- title: 'GHA Runner Role',
45
+ const runnerRole = new project_iam_custom_role_1.ProjectIamCustomRole(this, "runnerRole", {
46
+ roleId: "ghaRunnerRole",
47
+ title: "GHA Runner Role",
48
48
  permissions: [
49
- 'artifactregistry.dockerimages.get',
50
- 'artifactregistry.dockerimages.list',
51
- 'run.jobs.run',
52
- 'run.jobs.create',
53
- 'run.jobs.delete',
54
- 'run.jobs.list',
49
+ "artifactregistry.dockerimages.get",
50
+ "artifactregistry.dockerimages.list",
51
+ "run.jobs.run",
52
+ "run.jobs.create",
53
+ "run.jobs.delete",
54
+ "run.jobs.list",
55
55
  // Needed for waiting
56
- 'run.executions.get',
56
+ "run.executions.get",
57
57
  ],
58
58
  });
59
- const jobPolicyMember = new cdktf_1.TerraformLocal(this, 'ghaMember', `serviceAccount:${jobSa.email}`);
60
- new project_iam_member_1.ProjectIamMember(this, 'runnerRoleBinding', {
59
+ const jobPolicyMember = new cdktf_1.TerraformLocal(this, "ghaMember", `serviceAccount:${jobSa.email}`);
60
+ new project_iam_member_1.ProjectIamMember(this, "runnerRoleBinding", {
61
61
  member: jobPolicyMember.toString(),
62
62
  project,
63
63
  role: runnerRole.id,
64
64
  });
65
- new project_iam_member_1.ProjectIamMember(this, 'runnerRoleBindingStorage', {
65
+ new project_iam_member_1.ProjectIamMember(this, "runnerRoleBindingStorage", {
66
66
  member: jobPolicyMember.toString(),
67
67
  project,
68
- role: 'roles/storage.admin',
68
+ role: "roles/storage.admin",
69
69
  });
70
- new project_iam_member_1.ProjectIamMember(this, 'runnerRoleBindingRunServiceAgent', {
70
+ new project_iam_member_1.ProjectIamMember(this, "runnerRoleBindingRunServiceAgent", {
71
71
  member: jobPolicyMember.toString(),
72
72
  project,
73
- role: 'roles/run.serviceAgent',
73
+ role: "roles/run.serviceAgent",
74
74
  });
75
- new project_iam_member_1.ProjectIamMember(this, 'runnerRoleBindingRunViewer', {
75
+ new project_iam_member_1.ProjectIamMember(this, "runnerRoleBindingRunViewer", {
76
76
  member: jobPolicyMember.toString(),
77
77
  project,
78
- role: 'roles/run.viewer',
78
+ role: "roles/run.viewer",
79
79
  });
80
- const storageName = 'gha-runner-job-externals';
81
- const createBucket = new cdktf_1.TerraformLocal(this, 'bucketModification', `CLOUDSDK_CORE_DISABLE_PROMPTS=1 gcloud alpha storage buckets create gs://${storageName} --project=${project} --location=${location} --uniform-bucket-level-access --enable-hierarchical-namespace`);
80
+ const storageName = "gha-runner-job-externals";
81
+ const createBucket = new cdktf_1.TerraformLocal(this, "bucketModification", `CLOUDSDK_CORE_DISABLE_PROMPTS=1 gcloud alpha storage buckets create gs://${storageName} --project=${project} --location=${location} --uniform-bucket-level-access --enable-hierarchical-namespace`);
82
82
  // Hierarchial namespaces can't be enabled with Terraform.
83
- const bucketCreation = new resource_1.Resource(this, 'gcloud', {
83
+ const bucketCreation = new resource_1.Resource(this, "gcloud", {
84
84
  provisioners: [
85
85
  {
86
- type: 'local-exec',
86
+ type: "local-exec",
87
87
  command: createBucket.fqn,
88
88
  },
89
89
  ],
@@ -92,9 +92,9 @@ class Gcp extends constructs_1.Construct {
92
92
  },
93
93
  });
94
94
  // TODO: check caching https://cloud.google.com/artifact-registry/docs/pull-cached-dockerhub-images
95
- const runnerJob = new cloud_run_v2_job_1.CloudRunV2Job(this, 'ghaJob', {
95
+ const runnerJob = new cloud_run_v2_job_1.CloudRunV2Job(this, "ghaJob", {
96
96
  deletionProtection: false,
97
- name: 'gha-runner-job',
97
+ name: "gha-runner-job",
98
98
  location,
99
99
  template: {
100
100
  template: {
@@ -103,41 +103,41 @@ class Gcp extends constructs_1.Construct {
103
103
  image: `${registry.location}-docker.pkg.dev/${project}/${registry.repositoryId}/hi-fi/actions-runner:cr`,
104
104
  env: [
105
105
  {
106
- name: 'CLOUDSDK_RUN_REGION',
106
+ name: "CLOUDSDK_RUN_REGION",
107
107
  value: location,
108
108
  },
109
109
  {
110
- name: 'GOOGLE_CLOUD_PROJECT',
110
+ name: "GOOGLE_CLOUD_PROJECT",
111
111
  value: project,
112
112
  },
113
113
  {
114
- name: 'EXTERNAL_STORAGE_NAME',
114
+ name: "EXTERNAL_STORAGE_NAME",
115
115
  value: storageName,
116
116
  },
117
117
  // FUSE mounts directory as root with 777 fo directories and 555 for other files. As path is owned always by root, utime or permission change is not possible. These options prevent tar to try those
118
118
  {
119
- name: 'TAR_OPTIONS',
120
- value: '--touch --no-overwrite-dir --no-same-owner',
119
+ name: "TAR_OPTIONS",
120
+ value: "--touch --no-overwrite-dir --no-same-owner",
121
121
  },
122
122
  ],
123
123
  volumeMounts: [
124
124
  {
125
- name: 'externals',
126
- mountPath: '/home/runner/_work/externals',
125
+ name: "externals",
126
+ mountPath: "/home/runner/_work/externals",
127
127
  },
128
128
  ],
129
- command: ['/home/runner/ephemeral_runner.sh'],
129
+ command: ["/home/runner/ephemeral_runner.sh"],
130
130
  resources: {
131
131
  limits: {
132
- cpu: '1',
133
- memory: '2Gi',
132
+ cpu: "1",
133
+ memory: "2Gi",
134
134
  },
135
135
  },
136
136
  },
137
137
  ],
138
138
  volumes: [
139
139
  {
140
- name: 'externals',
140
+ name: "externals",
141
141
  gcs: {
142
142
  bucket: storageName,
143
143
  },
@@ -149,52 +149,52 @@ class Gcp extends constructs_1.Construct {
149
149
  },
150
150
  dependsOn: [bucketCreation],
151
151
  });
152
- const autoscalerSa = new service_account_1.ServiceAccount(this, 'autoscalerServiceAccount', {
153
- accountId: 'autoscaler-sa',
152
+ const autoscalerSa = new service_account_1.ServiceAccount(this, "autoscalerServiceAccount", {
153
+ accountId: "autoscaler-sa",
154
154
  });
155
- new project_iam_custom_role_1.ProjectIamCustomRole(this, 'autoscalerRole', {
156
- roleId: 'ghaAutoscalerRole',
157
- title: 'GHA Autoscaler Role',
155
+ new project_iam_custom_role_1.ProjectIamCustomRole(this, "autoscalerRole", {
156
+ roleId: "ghaAutoscalerRole",
157
+ title: "GHA Autoscaler Role",
158
158
  permissions: [
159
- 'artifactregistry.dockerimages.get',
160
- 'artifactregistry.dockerimages.list',
161
- 'run.jobs.run',
162
- 'run.jobs.create',
163
- 'run.jobs.delete',
159
+ "artifactregistry.dockerimages.get",
160
+ "artifactregistry.dockerimages.list",
161
+ "run.jobs.run",
162
+ "run.jobs.create",
163
+ "run.jobs.delete",
164
164
  ],
165
165
  });
166
- const autoscalerPolicyMember = new cdktf_1.TerraformLocal(this, 'autoscalerMember', `serviceAccount:${autoscalerSa.email}`);
166
+ const autoscalerPolicyMember = new cdktf_1.TerraformLocal(this, "autoscalerMember", `serviceAccount:${autoscalerSa.email}`);
167
167
  // TODO: replace 2 following with more specific ones.
168
- new project_iam_member_1.ProjectIamMember(this, 'autoscalerRoleBindingRun', {
168
+ new project_iam_member_1.ProjectIamMember(this, "autoscalerRoleBindingRun", {
169
169
  member: autoscalerPolicyMember.toString(),
170
170
  project,
171
- role: 'roles/run.developer',
171
+ role: "roles/run.developer",
172
172
  });
173
- new project_iam_member_1.ProjectIamMember(this, 'autoscalerRoleBindingStorage', {
173
+ new project_iam_member_1.ProjectIamMember(this, "autoscalerRoleBindingStorage", {
174
174
  member: autoscalerPolicyMember.toString(),
175
175
  project,
176
- role: 'roles/storage.admin',
176
+ role: "roles/storage.admin",
177
177
  });
178
- new project_iam_member_1.ProjectIamMember(this, 'autoscalerRoleBindingRunServiceAgent', {
178
+ new project_iam_member_1.ProjectIamMember(this, "autoscalerRoleBindingRunServiceAgent", {
179
179
  member: autoscalerPolicyMember.toString(),
180
180
  project,
181
- role: 'roles/run.serviceAgent',
181
+ role: "roles/run.serviceAgent",
182
182
  });
183
- new cloud_run_service_1.CloudRunService(this, 'autoscalerService', {
183
+ new cloud_run_service_1.CloudRunService(this, "autoscalerService", {
184
184
  location,
185
- name: 'gha-autoscaler',
185
+ name: "gha-autoscaler",
186
186
  metadata: {
187
187
  annotations: {
188
- 'run.googleapis.com/ingress': 'internal',
188
+ "run.googleapis.com/ingress": "internal",
189
189
  },
190
190
  },
191
191
  template: {
192
192
  metadata: {
193
193
  annotations: {
194
- 'autoscaling.knative.dev/maxScale': '1',
195
- 'autoscaling.knative.dev/minScale': '1',
196
- 'run.googleapis.com/cpu-throttling': 'false',
197
- 'run.googleapis.com/startup-cpu-boost': 'false',
194
+ "autoscaling.knative.dev/maxScale": "1",
195
+ "autoscaling.knative.dev/minScale": "1",
196
+ "run.googleapis.com/cpu-throttling": "false",
197
+ "run.googleapis.com/startup-cpu-boost": "false",
198
198
  },
199
199
  },
200
200
  spec: {
@@ -204,35 +204,35 @@ class Gcp extends constructs_1.Construct {
204
204
  image: `${registry.location}-docker.pkg.dev/${project}/${registry.repositoryId}/hi-fi/gha-runners-on-managed-env:test`,
205
205
  env: [
206
206
  {
207
- name: 'PAT',
207
+ name: "PAT",
208
208
  value: pat.value,
209
209
  },
210
210
  {
211
- name: 'GITHUB_CONFIG_URL',
211
+ name: "GITHUB_CONFIG_URL",
212
212
  value: githubConfigUrl.value,
213
213
  },
214
214
  {
215
- name: 'JOB_NAME',
215
+ name: "JOB_NAME",
216
216
  value: runnerJob.name,
217
217
  },
218
218
  {
219
- name: 'SCALE_SET_NAME',
220
- value: 'cr-runner-set',
219
+ name: "SCALE_SET_NAME",
220
+ value: "cr-runner-set",
221
221
  },
222
222
  {
223
- name: 'CLOUDSDK_RUN_REGION',
223
+ name: "CLOUDSDK_RUN_REGION",
224
224
  value: location,
225
225
  },
226
226
  {
227
- name: 'GOOGLE_CLOUD_PROJECT',
227
+ name: "GOOGLE_CLOUD_PROJECT",
228
228
  value: project,
229
229
  },
230
230
  ],
231
231
  resources: {
232
232
  // Service would work for much lower, but these are minimum values for "always on" mode
233
233
  limits: {
234
- cpu: '1000m',
235
- memory: '512Mi',
234
+ cpu: "1000m",
235
+ memory: "512Mi",
236
236
  },
237
237
  },
238
238
  },
@@ -245,5 +245,5 @@ class Gcp extends constructs_1.Construct {
245
245
  }
246
246
  exports.Gcp = Gcp;
247
247
  _a = JSII_RTTI_SYMBOL_1;
248
- Gcp[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Gcp", version: "0.0.7" };
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2NwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9nY3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwR0FBb0c7QUFDcEcsb0ZBQThFO0FBQzlFLGtGQUEyRTtBQUMzRSxnR0FBeUY7QUFDekYsc0ZBQWdGO0FBQ2hGLGtFQUFvRTtBQUNwRSxnRkFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLGdFQUE0RDtBQUM1RCxpQ0FBc0M7QUFDdEMsMkNBQXNDO0FBQ3RDLDJDQUE2QztBQUU3QyxNQUFhLEdBQUksU0FBUSxzQkFBUztJQUNoQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQTtRQUNoQyxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQTtRQUVwQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNqQyxPQUFPO1lBQ1AsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQyxDQUFBO1FBRUYsSUFBSSx1QkFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUU5QixNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlEQUEwQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEUsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixZQUFZLEVBQUUsaUJBQWlCO1lBQy9CLFdBQVcsRUFBRSwyREFBMkQ7WUFDeEUsc0JBQXNCLEVBQUU7Z0JBQ3RCLGdCQUFnQixFQUFFO29CQUNoQixnQkFBZ0IsRUFBRTt3QkFDaEIsR0FBRyxFQUFFLGlCQUFpQjtxQkFDdkI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0s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Q0FDekIsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLO2lDQUM3QjtnQ0FDRDtvQ0FDRSxJQUFJLEVBQUUsVUFBVTtvQ0FDaEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJO2lDQUN0QjtnQ0FDRDtvQ0FDRSxJQUFJLEVBQUUsZ0JBQWdCO29DQUN0QixLQUFLLEVBQUUsZUFBZTtpQ0FDdkI7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLHFCQUFxQjtvQ0FDM0IsS0FBSyxFQUFFLFFBQVE7aUNBQ2hCO2dDQUNEO29DQUNFLElBQUksRUFBRSxzQkFBc0I7b0NBQzVCLEtBQUssRUFBRSxPQUFPO2lDQUNmOzZCQUNGOzRCQUNELFNBQVMsRUFBRTtnQ0FDVCx1RkFBdUY7Z0NBQ3ZGLE1BQU0sRUFBRTtvQ0FDTixHQUFHLEVBQUUsT0FBTztvQ0FDWixNQUFNLEVBQUUsT0FBTztpQ0FDaEI7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEtBQUs7aUJBQ3ZDO2FBQ0Y7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDOztBQXBRSCxrQkFxUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFJlZ2lzdHJ5UmVwb3NpdG9yeSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1nb29nbGUvbGliL2FydGlmYWN0LXJlZ2lzdHJ5LXJlcG9zaXRvcnknXG5pbXBvcnQgeyBDbG91ZFJ1blNlcnZpY2UgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9jbG91ZC1ydW4tc2VydmljZSdcbmltcG9ydCB7IENsb3VkUnVuVjJKb2IgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9jbG91ZC1ydW4tdjItam9iJ1xuaW1wb3J0IHsgUHJvamVjdElhbUN1c3RvbVJvbGUgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9wcm9qZWN0LWlhbS1jdXN0b20tcm9sZSdcbmltcG9ydCB7IFByb2plY3RJYW1NZW1iZXIgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9wcm9qZWN0LWlhbS1tZW1iZXInXG5pbXBvcnQgeyBHb29nbGVQcm92aWRlciB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1nb29nbGUvbGliL3Byb3ZpZGVyJ1xuaW1wb3J0IHsgU2VydmljZUFjY291bnQgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9zZXJ2aWNlLWFjY291bnQnXG5pbXBvcnQgeyBOdWxsUHJvdmlkZXIgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItbnVsbC9saWIvcHJvdmlkZXInXG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1udWxsL2xpYi9yZXNvdXJjZSdcbmltcG9ydCB7IFRlcnJhZm9ybUxvY2FsIH0gZnJvbSAnY2RrdGYnXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJ1xuaW1wb3J0IHsgY29tbW9uVmFyaWFibGVzIH0gZnJvbSAnLi92YXJpYWJsZXMnXG5cbmV4cG9ydCBjbGFzcyBHY3AgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSAnZXVyb3BlLW5vcnRoMSdcbiAgICBjb25zdCBwcm9qZWN0ID0gJ2doYS1ydW5uZXItZXhhbXBsZSdcblxuICAgIG5ldyBHb29nbGVQcm92aWRlcih0aGlzLCAnZ29vZ2xlJywge1xuICAgICAgcHJvamVjdCxcbiAgICAgIHJlZ2lvbjogbG9jYXRpb24sXG4gICAgfSlcblxuICAgIG5ldyBOdWxsUHJvdmlkZXIodGhpcywgJ251bGwnKVxuXG4gICAgY29uc3QgeyBwYXQsIGdpdGh1YkNvbmZpZ1VybCB9ID0gY29tbW9uVmFyaWFibGVzKHRoaXMpXG5cbiAgICBjb25zdCByZWdpc3RyeSA9IG5ldyBBcnRpZmFjdFJlZ2lzdHJ5UmVwb3NpdG9yeSh0aGlzLCAncmVnaXN0cnknLCB7XG4gICAgICBmb3JtYXQ6ICdET0NLRVInLFxuICAgICAgbW9kZTogJ1JFTU9URV9SRVBPU0lUT1JZJyxcbiAgICAgIHJlcG9zaXRvcnlJZDogJ2doYS1ydW5uZXItdGVzdCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1JlcG9zaXRvcnkgdG8gaG9zdCBydW4gYW5kIHJlc3VsdGluZyBpbWFnZXMgZnJvbSBHSEEgcnVucycsXG4gICAgICByZW1vdGVSZXBvc2l0b3J5Q29uZmlnOiB7XG4gICAgICAgIGRvY2tlclJlcG9zaXRvcnk6IHtcbiAgICAgICAgICBjdXN0b21SZXBvc2l0b3J5OiB7XG4gICAgICAgICAgICB1cmk6ICdodHRwczovL2doY3IuaW8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBqb2JTYSA9IG5ldyBTZXJ2aWNlQWNjb3VudCh0aGlzLCAnam9iU2VydmljZUFjY291bnQnLCB7XG4gICAgICBhY2NvdW50SWQ6ICdnaGEtcnVubmVyLWpvYi1zYScsXG4gICAgfSlcblxuICAgIGNvbnN0IHJ1bm5lclJvbGUgPSBuZXcgUHJvamVjdElhbUN1c3RvbVJvbGUodGhpcywgJ3J1bm5lclJvbGUnLCB7XG4gICAgICByb2xlSWQ6ICdnaGFSdW5uZXJSb2xlJyxcbiAgICAgIHRpdGxlOiAnR0hBIFJ1bm5lciBSb2xlJyxcbiAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICdhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5nZXQnLFxuICAgICAgICAnYXJ0aWZhY3RyZWdpc3RyeS5kb2NrZXJpbWFnZXMubGlzdCcsXG4gICAgICAgICdydW4uam9icy5ydW4nLFxuICAgICAgICAncnVuLmpvYnMuY3JlYXRlJyxcbiAgICAgICAgJ3J1bi5qb2JzLmRlbGV0ZScsXG4gICAgICAgICdydW4uam9icy5saXN0JyxcbiAgICAgICAgLy8gTmVlZGVkIGZvciB3YWl0aW5nXG4gICAgICAgICdydW4uZXhlY3V0aW9ucy5nZXQnLFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgY29uc3Qgam9iUG9saWN5TWVtYmVyID0gbmV3IFRlcnJhZm9ybUxvY2FsKFxuICAgICAgdGhpcyxcbiAgICAgICdnaGFNZW1iZXInLFxuICAgICAgYHNlcnZpY2VBY2NvdW50OiR7am9iU2EuZW1haWx9YCxcbiAgICApXG5cbiAgICBuZXcgUHJvamVjdElhbU1lbWJlcih0aGlzLCAncnVubmVyUm9sZUJpbmRpbmcnLCB7XG4gICAgICBtZW1iZXI6IGpvYlBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6IHJ1bm5lclJvbGUuaWQsXG4gICAgfSlcblxuICAgIG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsICdydW5uZXJSb2xlQmluZGluZ1N0b3JhZ2UnLCB7XG4gICAgICBtZW1iZXI6IGpvYlBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6ICdyb2xlcy9zdG9yYWdlLmFkbWluJyxcbiAgICB9KVxuXG4gICAgbmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgJ3J1bm5lclJvbGVCaW5kaW5nUnVuU2VydmljZUFnZW50Jywge1xuICAgICAgbWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcbiAgICAgIHByb2plY3QsXG4gICAgICByb2xlOiAncm9sZXMvcnVuLnNlcnZpY2VBZ2VudCcsXG4gICAgfSlcblxuICAgIG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsICdydW5uZXJSb2xlQmluZGluZ1J1blZpZXdlcicsIHtcbiAgICAgIG1lbWJlcjogam9iUG9saWN5TWVtYmVyLnRvU3RyaW5nKCksXG4gICAgICBwcm9qZWN0LFxuICAgICAgcm9sZTogJ3JvbGVzL3J1bi52aWV3ZXInLFxuICAgIH0pXG5cbiAgICBjb25zdCBzdG9yYWdlTmFtZSA9ICdnaGEtcnVubmVyLWpvYi1leHRlcm5hbHMnXG4gICAgY29uc3QgY3JlYXRlQnVja2V0ID0gbmV3IFRlcnJhZm9ybUxvY2FsKFxuICAgICAgdGhpcyxcbiAgICAgICdidWNrZXRNb2RpZmljYXRpb24nLFxuICAgICAgYENMT1VEU0RLX0NPUkVfRElTQUJMRV9QUk9NUFRTPTEgZ2Nsb3VkIGFscGhhIHN0b3JhZ2UgYnVja2V0cyBjcmVhdGUgZ3M6Ly8ke3N0b3JhZ2VOYW1lfSAtLXByb2plY3Q9JHtwcm9qZWN0fSAtLWxvY2F0aW9uPSR7bG9jYXRpb259IC0tdW5pZm9ybS1idWNrZXQtbGV2ZWwtYWNjZXNzIC0tZW5hYmxlLWhpZXJhcmNoaWNhbC1uYW1lc3BhY2VgLFxuICAgIClcblxuICAgIC8vIEhpZXJhcmNoaWFsIG5hbWVzcGFjZXMgY2FuJ3QgYmUgZW5hYmxlZCB3aXRoIFRlcnJhZm9ybS5cbiAgICBjb25zdCBidWNrZXRDcmVhdGlvbiA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnZ2Nsb3VkJywge1xuICAgICAgcHJvdmlzaW9uZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbG9jYWwtZXhlYycsXG4gICAgICAgICAgY29tbWFuZDogY3JlYXRlQnVja2V0LmZxbixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBmcW46IGNyZWF0ZUJ1Y2tldC5mcW4sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICAvLyBUT0RPOiBjaGVjayBjYWNoaW5nIGh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9hcnRpZmFjdC1yZWdpc3RyeS9kb2NzL3B1bGwtY2FjaGVkLWRvY2tlcmh1Yi1pbWFnZXNcbiAgICBjb25zdCBydW5uZXJKb2IgPSBuZXcgQ2xvdWRSdW5WMkpvYih0aGlzLCAnZ2hhSm9iJywge1xuICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBmYWxzZSxcbiAgICAgIG5hbWU6ICdnaGEtcnVubmVyLWpvYicsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgY29udGFpbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbWFnZTogYCR7cmVnaXN0cnkubG9jYXRpb259LWRvY2tlci5wa2cuZGV2LyR7cHJvamVjdH0vJHtyZWdpc3RyeS5yZXBvc2l0b3J5SWR9L2hpLWZpL2FjdGlvbnMtcnVubmVyOmNyYCxcbiAgICAgICAgICAgICAgZW52OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0NMT1VEU0RLX1JVTl9SRUdJT04nLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0dPT0dMRV9DTE9VRF9QUk9KRUNUJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9qZWN0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0VYVEVSTkFMX1NUT1JBR0VfTkFNRScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogc3RvcmFnZU5hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBGVVNFIG1vdW50cyBkaXJlY3RvcnkgYXMgcm9vdCB3aXRoIDc3NyBmbyBkaXJlY3RvcmllcyBhbmQgNTU1IGZvciBvdGhlciBmaWxlcy4gQXMgcGF0aCBpcyBvd25lZCBhbHdheXMgYnkgcm9vdCwgdXRpbWUgb3IgcGVybWlzc2lvbiBjaGFuZ2UgaXMgbm90IHBvc3NpYmxlLiBUaGVzZSBvcHRpb25zIHByZXZlbnQgdGFyIHRvIHRyeSB0aG9zZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdUQVJfT1BUSU9OUycsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogJy0tdG91Y2ggLS1uby1vdmVyd3JpdGUtZGlyIC0tbm8tc2FtZS1vd25lcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdm9sdW1lTW91bnRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ2V4dGVybmFscycsXG4gICAgICAgICAgICAgICAgICBtb3VudFBhdGg6ICcvaG9tZS9ydW5uZXIvX3dvcmsvZXh0ZXJuYWxzJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBjb21tYW5kOiBbJy9ob21lL3J1bm5lci9lcGhlbWVyYWxfcnVubmVyLnNoJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICAgICAgY3B1OiAnMScsXG4gICAgICAgICAgICAgICAgICBtZW1vcnk6ICcyR2knLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdm9sdW1lczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZXh0ZXJuYWxzJyxcbiAgICAgICAgICAgICAgZ2NzOiB7XG4gICAgICAgICAgICAgICAgYnVja2V0OiBzdG9yYWdlTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiAwLFxuICAgICAgICAgIHNlcnZpY2VBY2NvdW50OiBqb2JTYS5lbWFpbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRzT246IFtidWNrZXRDcmVhdGlvbl0sXG4gICAgfSlcblxuICAgIGNvbnN0IGF1dG9zY2FsZXJTYSA9IG5ldyBTZXJ2aWNlQWNjb3VudCh0aGlzLCAnYXV0b3NjYWxlclNlcnZpY2VBY2NvdW50Jywge1xuICAgICAgYWNjb3VudElkOiAnYXV0b3NjYWxlci1zYScsXG4gICAgfSlcblxuICAgIG5ldyBQcm9qZWN0SWFtQ3VzdG9tUm9sZSh0aGlzLCAnYXV0b3NjYWxlclJvbGUnLCB7XG4gICAgICByb2xlSWQ6ICdnaGFBdXRvc2NhbGVyUm9sZScsXG4gICAgICB0aXRsZTogJ0dIQSBBdXRvc2NhbGVyIFJvbGUnLFxuICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgJ2FydGlmYWN0cmVnaXN0cnkuZG9ja2VyaW1hZ2VzLmdldCcsXG4gICAgICAgICdhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5saXN0JyxcbiAgICAgICAgJ3J1bi5qb2JzLnJ1bicsXG4gICAgICAgICdydW4uam9icy5jcmVhdGUnLFxuICAgICAgICAncnVuLmpvYnMuZGVsZXRlJyxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIGNvbnN0IGF1dG9zY2FsZXJQb2xpY3lNZW1iZXIgPSBuZXcgVGVycmFmb3JtTG9jYWwoXG4gICAgICB0aGlzLFxuICAgICAgJ2F1dG9zY2FsZXJNZW1iZXInLFxuICAgICAgYHNlcnZpY2VBY2NvdW50OiR7YXV0b3NjYWxlclNhLmVtYWlsfWAsXG4gICAgKVxuXG4gICAgLy8gVE9ETzogcmVwbGFjZSAyIGZvbGxvd2luZyB3aXRoIG1vcmUgc3BlY2lmaWMgb25lcy5cbiAgICBuZXcgUHJvamVjdElhbU1lbWJlcih0aGlzLCAnYXV0b3NjYWxlclJvbGVCaW5kaW5nUnVuJywge1xuICAgICAgbWVtYmVyOiBhdXRvc2NhbGVyUG9saWN5TWVtYmVyLnRvU3RyaW5nKCksXG4gICAgICBwcm9qZWN0LFxuICAgICAgcm9sZTogJ3JvbGVzL3J1bi5kZXZlbG9wZXInLFxuICAgIH0pXG5cbiAgICBuZXcgUHJvamVjdElhbU1lbWJlcih0aGlzLCAnYXV0b3NjYWxlclJvbGVCaW5kaW5nU3RvcmFnZScsIHtcbiAgICAgIG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6ICdyb2xlcy9zdG9yYWdlLmFkbWluJyxcbiAgICB9KVxuXG4gICAgbmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgJ2F1dG9zY2FsZXJSb2xlQmluZGluZ1J1blNlcnZpY2VBZ2VudCcsIHtcbiAgICAgIG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6ICdyb2xlcy9ydW4uc2VydmljZUFnZW50JyxcbiAgICB9KVxuXG4gICAgbmV3IENsb3VkUnVuU2VydmljZSh0aGlzLCAnYXV0b3NjYWxlclNlcnZpY2UnLCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hbWU6ICdnaGEtYXV0b3NjYWxlcicsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgICdydW4uZ29vZ2xlYXBpcy5jb20vaW5ncmVzcyc6ICdpbnRlcm5hbCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgICAgJ2F1dG9zY2FsaW5nLmtuYXRpdmUuZGV2L21heFNjYWxlJzogJzEnLFxuICAgICAgICAgICAgJ2F1dG9zY2FsaW5nLmtuYXRpdmUuZGV2L21pblNjYWxlJzogJzEnLFxuICAgICAgICAgICAgJ3J1bi5nb29nbGVhcGlzLmNvbS9jcHUtdGhyb3R0bGluZyc6ICdmYWxzZScsXG4gICAgICAgICAgICAncnVuLmdvb2dsZWFwaXMuY29tL3N0YXJ0dXAtY3B1LWJvb3N0JzogJ2ZhbHNlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGVjOiB7XG4gICAgICAgICAgY29udGFpbmVyQ29uY3VycmVuY3k6IDEsXG4gICAgICAgICAgY29udGFpbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbWFnZTogYCR7cmVnaXN0cnkubG9jYXRpb259LWRvY2tlci5wa2cuZGV2LyR7cHJvamVjdH0vJHtyZWdpc3RyeS5yZXBvc2l0b3J5SWR9L2hpLWZpL2doYS1ydW5uZXJzLW9uLW1hbmFnZWQtZW52OnRlc3RgLFxuICAgICAgICAgICAgICBlbnY6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnUEFUJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXQudmFsdWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnR0lUSFVCX0NPTkZJR19VUkwnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGdpdGh1YkNvbmZpZ1VybC52YWx1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdKT0JfTkFNRScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcnVubmVySm9iLm5hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnU0NBTEVfU0VUX05BTUUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICdjci1ydW5uZXItc2V0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdDTE9VRFNES19SVU5fUkVHSU9OJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdHT09HTEVfQ0xPVURfUFJPSkVDVCcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvamVjdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICAgICAgICAvLyBTZXJ2aWNlIHdvdWxkIHdvcmsgZm9yIG11Y2ggbG93ZXIsIGJ1dCB0aGVzZSBhcmUgbWluaW11bSB2YWx1ZXMgZm9yIFwiYWx3YXlzIG9uXCIgbW9kZVxuICAgICAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICAgICAgY3B1OiAnMTAwMG0nLFxuICAgICAgICAgICAgICAgICAgbWVtb3J5OiAnNTEyTWknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2VydmljZUFjY291bnROYW1lOiBhdXRvc2NhbGVyU2EuZW1haWwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
248
+ Gcp[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Gcp", version: "0.0.9" };
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2NwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9nY3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwR0FBcUc7QUFDckcsb0ZBQStFO0FBQy9FLGtGQUE0RTtBQUM1RSxnR0FBMEY7QUFDMUYsc0ZBQWlGO0FBQ2pGLGtFQUFxRTtBQUNyRSxnRkFBNEU7QUFDNUUsZ0VBQWlFO0FBQ2pFLGdFQUE2RDtBQUM3RCxpQ0FBdUM7QUFDdkMsMkNBQXVDO0FBQ3ZDLDJDQUE4QztBQUU5QyxNQUFhLEdBQUksU0FBUSxzQkFBUztJQUNqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN2QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQztRQUVyQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNsQyxPQUFPO1lBQ1AsTUFBTSxFQUFFLFFBQVE7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQixNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlEQUEwQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDakUsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixZQUFZLEVBQUUsaUJBQWlCO1lBQy9CLFdBQVcsRUFBRSwyREFBMkQ7WUFDeEUsc0JBQXNCLEVBQUU7Z0JBQ3ZCLGdCQUFnQixFQUFFO29CQUNqQixnQkFBZ0IsRUFBRTt3QkFDakIsR0FBRyxFQUFFLGlCQUFpQjtxQkFDdEI7aUJBQ0Q7YUFDRDtTQUNELENBQUMsQ0FBQztRQUVILE1BQU0s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QUN6QixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7aUNBQzVCO2dDQUNEO29DQUNDLElBQUksRUFBRSxVQUFVO29DQUNoQixLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUk7aUNBQ3JCO2dDQUNEO29DQUNDLElBQUksRUFBRSxnQkFBZ0I7b0NBQ3RCLEtBQUssRUFBRSxlQUFlO2lDQUN0QjtnQ0FDRDtvQ0FDQyxJQUFJLEVBQUUscUJBQXFCO29DQUMzQixLQUFLLEVBQUUsUUFBUTtpQ0FDZjtnQ0FDRDtvQ0FDQyxJQUFJLEVBQUUsc0JBQXNCO29DQUM1QixLQUFLLEVBQUUsT0FBTztpQ0FDZDs2QkFDRDs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1YsdUZBQXVGO2dDQUN2RixNQUFNLEVBQUU7b0NBQ1AsR0FBRyxFQUFFLE9BQU87b0NBQ1osTUFBTSxFQUFFLE9BQU87aUNBQ2Y7NkJBQ0Q7eUJBQ0Q7cUJBQ0Q7b0JBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEtBQUs7aUJBQ3RDO2FBQ0Q7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDOztBQXBRRixrQkFxUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFJlZ2lzdHJ5UmVwb3NpdG9yeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9hcnRpZmFjdC1yZWdpc3RyeS1yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDbG91ZFJ1blNlcnZpY2UgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvY2xvdWQtcnVuLXNlcnZpY2VcIjtcbmltcG9ydCB7IENsb3VkUnVuVjJKb2IgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvY2xvdWQtcnVuLXYyLWpvYlwiO1xuaW1wb3J0IHsgUHJvamVjdElhbUN1c3RvbVJvbGUgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvcHJvamVjdC1pYW0tY3VzdG9tLXJvbGVcIjtcbmltcG9ydCB7IFByb2plY3RJYW1NZW1iZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvcHJvamVjdC1pYW0tbWVtYmVyXCI7XG5pbXBvcnQgeyBHb29nbGVQcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgU2VydmljZUFjY291bnQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvc2VydmljZS1hY2NvdW50XCI7XG5pbXBvcnQgeyBOdWxsUHJvdmlkZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLW51bGwvbGliL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItbnVsbC9saWIvcmVzb3VyY2VcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUxvY2FsIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY29tbW9uVmFyaWFibGVzIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBHY3AgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdGNvbnN0IGxvY2F0aW9uID0gXCJldXJvcGUtbm9ydGgxXCI7XG5cdFx0Y29uc3QgcHJvamVjdCA9IFwiZ2hhLXJ1bm5lci1leGFtcGxlXCI7XG5cblx0XHRuZXcgR29vZ2xlUHJvdmlkZXIodGhpcywgXCJnb29nbGVcIiwge1xuXHRcdFx0cHJvamVjdCxcblx0XHRcdHJlZ2lvbjogbG9jYXRpb24sXG5cdFx0fSk7XG5cblx0XHRuZXcgTnVsbFByb3ZpZGVyKHRoaXMsIFwibnVsbFwiKTtcblxuXHRcdGNvbnN0IHsgcGF0LCBnaXRodWJDb25maWdVcmwgfSA9IGNvbW1vblZhcmlhYmxlcyh0aGlzKTtcblxuXHRcdGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IEFydGlmYWN0UmVnaXN0cnlSZXBvc2l0b3J5KHRoaXMsIFwicmVnaXN0cnlcIiwge1xuXHRcdFx0Zm9ybWF0OiBcIkRPQ0tFUlwiLFxuXHRcdFx0bW9kZTogXCJSRU1PVEVfUkVQT1NJVE9SWVwiLFxuXHRcdFx0cmVwb3NpdG9yeUlkOiBcImdoYS1ydW5uZXItdGVzdFwiLFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiUmVwb3NpdG9yeSB0byBob3N0IHJ1biBhbmQgcmVzdWx0aW5nIGltYWdlcyBmcm9tIEdIQSBydW5zXCIsXG5cdFx0XHRyZW1vdGVSZXBvc2l0b3J5Q29uZmlnOiB7XG5cdFx0XHRcdGRvY2tlclJlcG9zaXRvcnk6IHtcblx0XHRcdFx0XHRjdXN0b21SZXBvc2l0b3J5OiB7XG5cdFx0XHRcdFx0XHR1cmk6IFwiaHR0cHM6Ly9naGNyLmlvXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBqb2JTYSA9IG5ldyBTZXJ2aWNlQWNjb3VudCh0aGlzLCBcImpvYlNlcnZpY2VBY2NvdW50XCIsIHtcblx0XHRcdGFjY291bnRJZDogXCJnaGEtcnVubmVyLWpvYi1zYVwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcnVubmVyUm9sZSA9IG5ldyBQcm9qZWN0SWFtQ3VzdG9tUm9sZSh0aGlzLCBcInJ1bm5lclJvbGVcIiwge1xuXHRcdFx0cm9sZUlkOiBcImdoYVJ1bm5lclJvbGVcIixcblx0XHRcdHRpdGxlOiBcIkdIQSBSdW5uZXIgUm9sZVwiLFxuXHRcdFx0cGVybWlzc2lvbnM6IFtcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5nZXRcIixcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5saXN0XCIsXG5cdFx0XHRcdFwicnVuLmpvYnMucnVuXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuY3JlYXRlXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuZGVsZXRlXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMubGlzdFwiLFxuXHRcdFx0XHQvLyBOZWVkZWQgZm9yIHdhaXRpbmdcblx0XHRcdFx0XCJydW4uZXhlY3V0aW9ucy5nZXRcIixcblx0XHRcdF0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBqb2JQb2xpY3lNZW1iZXIgPSBuZXcgVGVycmFmb3JtTG9jYWwoXG5cdFx0XHR0aGlzLFxuXHRcdFx0XCJnaGFNZW1iZXJcIixcblx0XHRcdGBzZXJ2aWNlQWNjb3VudDoke2pvYlNhLmVtYWlsfWAsXG5cdFx0KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwicnVubmVyUm9sZUJpbmRpbmdcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBydW5uZXJSb2xlLmlkLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgXCJydW5uZXJSb2xlQmluZGluZ1N0b3JhZ2VcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBcInJvbGVzL3N0b3JhZ2UuYWRtaW5cIixcblx0XHR9KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwicnVubmVyUm9sZUJpbmRpbmdSdW5TZXJ2aWNlQWdlbnRcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBcInJvbGVzL3J1bi5zZXJ2aWNlQWdlbnRcIixcblx0XHR9KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwicnVubmVyUm9sZUJpbmRpbmdSdW5WaWV3ZXJcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBcInJvbGVzL3J1bi52aWV3ZXJcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHN0b3JhZ2VOYW1lID0gXCJnaGEtcnVubmVyLWpvYi1leHRlcm5hbHNcIjtcblx0XHRjb25zdCBjcmVhdGVCdWNrZXQgPSBuZXcgVGVycmFmb3JtTG9jYWwoXG5cdFx0XHR0aGlzLFxuXHRcdFx0XCJidWNrZXRNb2RpZmljYXRpb25cIixcblx0XHRcdGBDTE9VRFNES19DT1JFX0RJU0FCTEVfUFJPTVBUUz0xIGdjbG91ZCBhbHBoYSBzdG9yYWdlIGJ1Y2tldHMgY3JlYXRlIGdzOi8vJHtzdG9yYWdlTmFtZX0gLS1wcm9qZWN0PSR7cHJvamVjdH0gLS1sb2NhdGlvbj0ke2xvY2F0aW9ufSAtLXVuaWZvcm0tYnVja2V0LWxldmVsLWFjY2VzcyAtLWVuYWJsZS1oaWVyYXJjaGljYWwtbmFtZXNwYWNlYCxcblx0XHQpO1xuXG5cdFx0Ly8gSGllcmFyY2hpYWwgbmFtZXNwYWNlcyBjYW4ndCBiZSBlbmFibGVkIHdpdGggVGVycmFmb3JtLlxuXHRcdGNvbnN0IGJ1Y2tldENyZWF0aW9uID0gbmV3IFJlc291cmNlKHRoaXMsIFwiZ2Nsb3VkXCIsIHtcblx0XHRcdHByb3Zpc2lvbmVyczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogXCJsb2NhbC1leGVjXCIsXG5cdFx0XHRcdFx0Y29tbWFuZDogY3JlYXRlQnVja2V0LmZxbixcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHR0cmlnZ2Vyczoge1xuXHRcdFx0XHRmcW46IGNyZWF0ZUJ1Y2tldC5mcW4sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Ly8gVE9ETzogY2hlY2sgY2FjaGluZyBodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vYXJ0aWZhY3QtcmVnaXN0cnkvZG9jcy9wdWxsLWNhY2hlZC1kb2NrZXJodWItaW1hZ2VzXG5cdFx0Y29uc3QgcnVubmVySm9iID0gbmV3IENsb3VkUnVuVjJKb2IodGhpcywgXCJnaGFKb2JcIiwge1xuXHRcdFx0ZGVsZXRpb25Qcm90ZWN0aW9uOiBmYWxzZSxcblx0XHRcdG5hbWU6IFwiZ2hhLXJ1bm5lci1qb2JcIixcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0XHRjb250YWluZXJzOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGltYWdlOiBgJHtyZWdpc3RyeS5sb2NhdGlvbn0tZG9ja2VyLnBrZy5kZXYvJHtwcm9qZWN0fS8ke3JlZ2lzdHJ5LnJlcG9zaXRvcnlJZH0vaGktZmkvYWN0aW9ucy1ydW5uZXI6Y3JgLFxuXHRcdFx0XHRcdFx0XHRlbnY6IFtcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIkNMT1VEU0RLX1JVTl9SRUdJT05cIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBsb2NhdGlvbixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiR09PR0xFX0NMT1VEX1BST0pFQ1RcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBwcm9qZWN0LFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJFWFRFUk5BTF9TVE9SQUdFX05BTUVcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzdG9yYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdC8vIEZVU0UgbW91bnRzIGRpcmVjdG9yeSBhcyByb290IHdpdGggNzc3IGZvIGRpcmVjdG9yaWVzIGFuZCA1NTUgZm9yIG90aGVyIGZpbGVzLiBBcyBwYXRoIGlzIG93bmVkIGFsd2F5cyBieSByb290LCB1dGltZSBvciBwZXJtaXNzaW9uIGNoYW5nZSBpcyBub3QgcG9zc2libGUuIFRoZXNlIG9wdGlvbnMgcHJldmVudCB0YXIgdG8gdHJ5IHRob3NlXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJUQVJfT1BUSU9OU1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFwiLS10b3VjaCAtLW5vLW92ZXJ3cml0ZS1kaXIgLS1uby1zYW1lLW93bmVyXCIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0dm9sdW1lTW91bnRzOiBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJleHRlcm5hbHNcIixcblx0XHRcdFx0XHRcdFx0XHRcdG1vdW50UGF0aDogXCIvaG9tZS9ydW5uZXIvX3dvcmsvZXh0ZXJuYWxzXCIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0Y29tbWFuZDogW1wiL2hvbWUvcnVubmVyL2VwaGVtZXJhbF9ydW5uZXIuc2hcIl0sXG5cdFx0XHRcdFx0XHRcdHJlc291cmNlczoge1xuXHRcdFx0XHRcdFx0XHRcdGxpbWl0czoge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3B1OiBcIjFcIixcblx0XHRcdFx0XHRcdFx0XHRcdG1lbW9yeTogXCIyR2lcIixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdHZvbHVtZXM6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogXCJleHRlcm5hbHNcIixcblx0XHRcdFx0XHRcdFx0Z2NzOiB7XG5cdFx0XHRcdFx0XHRcdFx0YnVja2V0OiBzdG9yYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRtYXhSZXRyaWVzOiAwLFxuXHRcdFx0XHRcdHNlcnZpY2VBY2NvdW50OiBqb2JTYS5lbWFpbCxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRkZXBlbmRzT246IFtidWNrZXRDcmVhdGlvbl0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBhdXRvc2NhbGVyU2EgPSBuZXcgU2VydmljZUFjY291bnQodGhpcywgXCJhdXRvc2NhbGVyU2VydmljZUFjY291bnRcIiwge1xuXHRcdFx0YWNjb3VudElkOiBcImF1dG9zY2FsZXItc2FcIixcblx0XHR9KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtQ3VzdG9tUm9sZSh0aGlzLCBcImF1dG9zY2FsZXJSb2xlXCIsIHtcblx0XHRcdHJvbGVJZDogXCJnaGFBdXRvc2NhbGVyUm9sZVwiLFxuXHRcdFx0dGl0bGU6IFwiR0hBIEF1dG9zY2FsZXIgUm9sZVwiLFxuXHRcdFx0cGVybWlzc2lvbnM6IFtcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5nZXRcIixcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5saXN0XCIsXG5cdFx0XHRcdFwicnVuLmpvYnMucnVuXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuY3JlYXRlXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuZGVsZXRlXCIsXG5cdFx0XHRdLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgYXV0b3NjYWxlclBvbGljeU1lbWJlciA9IG5ldyBUZXJyYWZvcm1Mb2NhbChcblx0XHRcdHRoaXMsXG5cdFx0XHRcImF1dG9zY2FsZXJNZW1iZXJcIixcblx0XHRcdGBzZXJ2aWNlQWNjb3VudDoke2F1dG9zY2FsZXJTYS5lbWFpbH1gLFxuXHRcdCk7XG5cblx0XHQvLyBUT0RPOiByZXBsYWNlIDIgZm9sbG93aW5nIHdpdGggbW9yZSBzcGVjaWZpYyBvbmVzLlxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwiYXV0b3NjYWxlclJvbGVCaW5kaW5nUnVuXCIsIHtcblx0XHRcdG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuXHRcdFx0cHJvamVjdCxcblx0XHRcdHJvbGU6IFwicm9sZXMvcnVuLmRldmVsb3BlclwiLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgXCJhdXRvc2NhbGVyUm9sZUJpbmRpbmdTdG9yYWdlXCIsIHtcblx0XHRcdG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuXHRcdFx0cHJvamVjdCxcblx0XHRcdHJvbGU6IFwicm9sZXMvc3RvcmFnZS5hZG1pblwiLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgXCJhdXRvc2NhbGVyUm9sZUJpbmRpbmdSdW5TZXJ2aWNlQWdlbnRcIiwge1xuXHRcdFx0bWVtYmVyOiBhdXRvc2NhbGVyUG9saWN5TWVtYmVyLnRvU3RyaW5nKCksXG5cdFx0XHRwcm9qZWN0LFxuXHRcdFx0cm9sZTogXCJyb2xlcy9ydW4uc2VydmljZUFnZW50XCIsXG5cdFx0fSk7XG5cblx0XHRuZXcgQ2xvdWRSdW5TZXJ2aWNlKHRoaXMsIFwiYXV0b3NjYWxlclNlcnZpY2VcIiwge1xuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRuYW1lOiBcImdoYS1hdXRvc2NhbGVyXCIsXG5cdFx0XHRtZXRhZGF0YToge1xuXHRcdFx0XHRhbm5vdGF0aW9uczoge1xuXHRcdFx0XHRcdFwicnVuLmdvb2dsZWFwaXMuY29tL2luZ3Jlc3NcIjogXCJpbnRlcm5hbFwiLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHRlbXBsYXRlOiB7XG5cdFx0XHRcdG1ldGFkYXRhOiB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbnM6IHtcblx0XHRcdFx0XHRcdFwiYXV0b3NjYWxpbmcua25hdGl2ZS5kZXYvbWF4U2NhbGVcIjogXCIxXCIsXG5cdFx0XHRcdFx0XHRcImF1dG9zY2FsaW5nLmtuYXRpdmUuZGV2L21pblNjYWxlXCI6IFwiMVwiLFxuXHRcdFx0XHRcdFx0XCJydW4uZ29vZ2xlYXBpcy5jb20vY3B1LXRocm90dGxpbmdcIjogXCJmYWxzZVwiLFxuXHRcdFx0XHRcdFx0XCJydW4uZ29vZ2xlYXBpcy5jb20vc3RhcnR1cC1jcHUtYm9vc3RcIjogXCJmYWxzZVwiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNwZWM6IHtcblx0XHRcdFx0XHRjb250YWluZXJDb25jdXJyZW5jeTogMSxcblx0XHRcdFx0XHRjb250YWluZXJzOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGltYWdlOiBgJHtyZWdpc3RyeS5sb2NhdGlvbn0tZG9ja2VyLnBrZy5kZXYvJHtwcm9qZWN0fS8ke3JlZ2lzdHJ5LnJlcG9zaXRvcnlJZH0vaGktZmkvZ2hhLXJ1bm5lcnMtb24tbWFuYWdlZC1lbnY6dGVzdGAsXG5cdFx0XHRcdFx0XHRcdGVudjogW1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiUEFUXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcGF0LnZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJHSVRIVUJfQ09ORklHX1VSTFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGdpdGh1YkNvbmZpZ1VybC52YWx1ZSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiSk9CX05BTUVcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBydW5uZXJKb2IubmFtZSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiU0NBTEVfU0VUX05BTUVcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBcImNyLXJ1bm5lci1zZXRcIixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiQ0xPVURTREtfUlVOX1JFR0lPTlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGxvY2F0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJHT09HTEVfQ0xPVURfUFJPSkVDVFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHByb2plY3QsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0cmVzb3VyY2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2VydmljZSB3b3VsZCB3b3JrIGZvciBtdWNoIGxvd2VyLCBidXQgdGhlc2UgYXJlIG1pbmltdW0gdmFsdWVzIGZvciBcImFsd2F5cyBvblwiIG1vZGVcblx0XHRcdFx0XHRcdFx0XHRsaW1pdHM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNwdTogXCIxMDAwbVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWVtb3J5OiBcIjUxMk1pXCIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRzZXJ2aWNlQWNjb3VudE5hbWU6IGF1dG9zY2FsZXJTYS5lbWFpbCxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
- import { TerraformVariable } from 'cdktf';
2
- import { Construct } from 'constructs';
1
+ import { TerraformVariable } from "cdktf";
2
+ import type { Construct } from "constructs";
3
3
  export interface Variables {
4
4
  pat: TerraformVariable;
5
5
  githubConfigUrl: TerraformVariable;
@@ -3,26 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.commonVariables = commonVariables;
4
4
  const cdktf_1 = require("cdktf");
5
5
  function commonVariables(scope) {
6
- const pat = new cdktf_1.TerraformVariable(scope, 'personal_access_token', {
7
- description: 'Github PAT with Actions:Read and Admin:Read+Write scopes',
6
+ const pat = new cdktf_1.TerraformVariable(scope, "personal_access_token", {
7
+ description: "Github PAT with Actions:Read and Admin:Read+Write scopes",
8
8
  nullable: false,
9
9
  sensitive: true,
10
10
  });
11
- pat.overrideLogicalId('personal_access_token');
12
- const githubConfigUrl = new cdktf_1.TerraformVariable(scope, 'github_config_url', {
13
- description: 'Github URL where runners should register to. Format https://<GitHub host>/<your_enterprise/org/repo>',
11
+ pat.overrideLogicalId("personal_access_token");
12
+ const githubConfigUrl = new cdktf_1.TerraformVariable(scope, "github_config_url", {
13
+ description: "Github URL where runners should register to. Format https://<GitHub host>/<your_enterprise/org/repo>",
14
14
  nullable: false,
15
15
  });
16
- githubConfigUrl.overrideLogicalId('github_config_url');
17
- const autoscalerImage = new cdktf_1.TerraformVariable(scope, 'autoscaler_image', {
18
- description: 'Autoscaler image triggering runners',
19
- default: 'ghcr.io/hi-fi/gha-runners-on-managed-env:ebe559da0d51e04eff903f0a04de09da93f4614f',
16
+ githubConfigUrl.overrideLogicalId("github_config_url");
17
+ const autoscalerImage = new cdktf_1.TerraformVariable(scope, "autoscaler_image", {
18
+ description: "Autoscaler image triggering runners",
19
+ default: "ghcr.io/hi-fi/gha-runners-on-managed-env:ebe559da0d51e04eff903f0a04de09da93f4614f",
20
20
  });
21
- autoscalerImage.overrideLogicalId('autoscaler_image');
21
+ autoscalerImage.overrideLogicalId("autoscaler_image");
22
22
  return {
23
23
  pat,
24
24
  githubConfigUrl,
25
25
  autoscalerImage,
26
26
  };
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSwwQ0E4QkM7QUF2Q0QsaUNBQXlDO0FBU3pDLFNBQWdCLGVBQWUsQ0FBQyxLQUFnQjtJQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLHlCQUFpQixDQUFDLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtRQUNoRSxXQUFXLEVBQUUsMERBQTBEO1FBQ3ZFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLENBQUE7SUFFOUMsTUFBTSxlQUFlLEdBQUcsSUFBSSx5QkFBaUIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7UUFDeEUsV0FBVyxFQUNULHNHQUFzRztRQUN4RyxRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDLENBQUE7SUFFRixlQUFlLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUV0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLHlCQUFpQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtRQUN2RSxXQUFXLEVBQUUscUNBQXFDO1FBQ2xELE9BQU8sRUFDTCxtRkFBbUY7S0FDdEYsQ0FBQyxDQUFBO0lBRUYsZUFBZSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFFckQsT0FBTztRQUNMLEdBQUc7UUFDSCxlQUFlO1FBQ2YsZUFBZTtLQUNoQixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlcnJhZm9ybVZhcmlhYmxlIH0gZnJvbSAnY2RrdGYnXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlcyB7XG4gIHBhdDogVGVycmFmb3JtVmFyaWFibGVcbiAgZ2l0aHViQ29uZmlnVXJsOiBUZXJyYWZvcm1WYXJpYWJsZVxuICBhdXRvc2NhbGVySW1hZ2U6IFRlcnJhZm9ybVZhcmlhYmxlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21tb25WYXJpYWJsZXMoc2NvcGU6IENvbnN0cnVjdCk6IFZhcmlhYmxlcyB7XG4gIGNvbnN0IHBhdCA9IG5ldyBUZXJyYWZvcm1WYXJpYWJsZShzY29wZSwgJ3BlcnNvbmFsX2FjY2Vzc190b2tlbicsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0dpdGh1YiBQQVQgd2l0aCBBY3Rpb25zOlJlYWQgYW5kIEFkbWluOlJlYWQrV3JpdGUgc2NvcGVzJyxcbiAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgc2Vuc2l0aXZlOiB0cnVlLFxuICB9KVxuXG4gIHBhdC5vdmVycmlkZUxvZ2ljYWxJZCgncGVyc29uYWxfYWNjZXNzX3Rva2VuJylcblxuICBjb25zdCBnaXRodWJDb25maWdVcmwgPSBuZXcgVGVycmFmb3JtVmFyaWFibGUoc2NvcGUsICdnaXRodWJfY29uZmlnX3VybCcsIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdHaXRodWIgVVJMIHdoZXJlIHJ1bm5lcnMgc2hvdWxkIHJlZ2lzdGVyIHRvLiBGb3JtYXQgaHR0cHM6Ly88R2l0SHViIGhvc3Q+Lzx5b3VyX2VudGVycHJpc2Uvb3JnL3JlcG8+JyxcbiAgICBudWxsYWJsZTogZmFsc2UsXG4gIH0pXG5cbiAgZ2l0aHViQ29uZmlnVXJsLm92ZXJyaWRlTG9naWNhbElkKCdnaXRodWJfY29uZmlnX3VybCcpXG5cbiAgY29uc3QgYXV0b3NjYWxlckltYWdlID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCAnYXV0b3NjYWxlcl9pbWFnZScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ0F1dG9zY2FsZXIgaW1hZ2UgdHJpZ2dlcmluZyBydW5uZXJzJyxcbiAgICBkZWZhdWx0OlxuICAgICAgJ2doY3IuaW8vaGktZmkvZ2hhLXJ1bm5lcnMtb24tbWFuYWdlZC1lbnY6ZWJlNTU5ZGEwZDUxZTA0ZWZmOTAzZjBhMDRkZTA5ZGE5M2Y0NjE0ZicsXG4gIH0pXG5cbiAgYXV0b3NjYWxlckltYWdlLm92ZXJyaWRlTG9naWNhbElkKCdhdXRvc2NhbGVyX2ltYWdlJylcblxuICByZXR1cm4ge1xuICAgIHBhdCxcbiAgICBnaXRodWJDb25maWdVcmwsXG4gICAgYXV0b3NjYWxlckltYWdlLFxuICB9XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSwwQ0E4QkM7QUF2Q0QsaUNBQTBDO0FBUzFDLFNBQWdCLGVBQWUsQ0FBQyxLQUFnQjtJQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLHlCQUFpQixDQUFDLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtRQUNqRSxXQUFXLEVBQUUsMERBQTBEO1FBQ3ZFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUUvQyxNQUFNLGVBQWUsR0FBRyxJQUFJLHlCQUFpQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUN6RSxXQUFXLEVBQ1Ysc0dBQXNHO1FBQ3ZHLFFBQVEsRUFBRSxLQUFLO0tBQ2YsQ0FBQyxDQUFDO0lBRUgsZUFBZSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFdkQsTUFBTSxlQUFlLEdBQUcsSUFBSSx5QkFBaUIsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7UUFDeEUsV0FBVyxFQUFFLHFDQUFxQztRQUNsRCxPQUFPLEVBQ04sbUZBQW1GO0tBQ3BGLENBQUMsQ0FBQztJQUVILGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRELE9BQU87UUFDTixHQUFHO1FBQ0gsZUFBZTtRQUNmLGVBQWU7S0FDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlcnJhZm9ybVZhcmlhYmxlIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzIHtcblx0cGF0OiBUZXJyYWZvcm1WYXJpYWJsZTtcblx0Z2l0aHViQ29uZmlnVXJsOiBUZXJyYWZvcm1WYXJpYWJsZTtcblx0YXV0b3NjYWxlckltYWdlOiBUZXJyYWZvcm1WYXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1vblZhcmlhYmxlcyhzY29wZTogQ29uc3RydWN0KTogVmFyaWFibGVzIHtcblx0Y29uc3QgcGF0ID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCBcInBlcnNvbmFsX2FjY2Vzc190b2tlblwiLCB7XG5cdFx0ZGVzY3JpcHRpb246IFwiR2l0aHViIFBBVCB3aXRoIEFjdGlvbnM6UmVhZCBhbmQgQWRtaW46UmVhZCtXcml0ZSBzY29wZXNcIixcblx0XHRudWxsYWJsZTogZmFsc2UsXG5cdFx0c2Vuc2l0aXZlOiB0cnVlLFxuXHR9KTtcblxuXHRwYXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJwZXJzb25hbF9hY2Nlc3NfdG9rZW5cIik7XG5cblx0Y29uc3QgZ2l0aHViQ29uZmlnVXJsID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCBcImdpdGh1Yl9jb25maWdfdXJsXCIsIHtcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiR2l0aHViIFVSTCB3aGVyZSBydW5uZXJzIHNob3VsZCByZWdpc3RlciB0by4gRm9ybWF0IGh0dHBzOi8vPEdpdEh1YiBob3N0Pi88eW91cl9lbnRlcnByaXNlL29yZy9yZXBvPlwiLFxuXHRcdG51bGxhYmxlOiBmYWxzZSxcblx0fSk7XG5cblx0Z2l0aHViQ29uZmlnVXJsLm92ZXJyaWRlTG9naWNhbElkKFwiZ2l0aHViX2NvbmZpZ191cmxcIik7XG5cblx0Y29uc3QgYXV0b3NjYWxlckltYWdlID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCBcImF1dG9zY2FsZXJfaW1hZ2VcIiwge1xuXHRcdGRlc2NyaXB0aW9uOiBcIkF1dG9zY2FsZXIgaW1hZ2UgdHJpZ2dlcmluZyBydW5uZXJzXCIsXG5cdFx0ZGVmYXVsdDpcblx0XHRcdFwiZ2hjci5pby9oaS1maS9naGEtcnVubmVycy1vbi1tYW5hZ2VkLWVudjplYmU1NTlkYTBkNTFlMDRlZmY5MDNmMGEwNGRlMDlkYTkzZjQ2MTRmXCIsXG5cdH0pO1xuXG5cdGF1dG9zY2FsZXJJbWFnZS5vdmVycmlkZUxvZ2ljYWxJZChcImF1dG9zY2FsZXJfaW1hZ2VcIik7XG5cblx0cmV0dXJuIHtcblx0XHRwYXQsXG5cdFx0Z2l0aHViQ29uZmlnVXJsLFxuXHRcdGF1dG9zY2FsZXJJbWFnZSxcblx0fTtcbn1cbiJdfQ==
package/lib/tfModules.js CHANGED
@@ -8,41 +8,41 @@ const gcp_1 = require("./lib/gcp");
8
8
  class AzureContainerAppsArc extends tf_module_stack_1.TFModuleStack {
9
9
  constructor(scope, id) {
10
10
  super(scope, id);
11
- new azure_1.Azure(this, 'aca');
11
+ new azure_1.Azure(this, "aca");
12
12
  }
13
13
  }
14
14
  class ElasticContainerServiceArc extends tf_module_stack_1.TFModuleStack {
15
15
  constructor(scope, id) {
16
16
  super(scope, id);
17
- const clusterName = new tf_module_stack_1.TFModuleVariable(this, 'ecs_cluster_name', {
18
- description: 'Name of the ECS cluster to create',
17
+ const clusterName = new tf_module_stack_1.TFModuleVariable(this, "ecs_cluster_name", {
18
+ description: "Name of the ECS cluster to create",
19
19
  }).stringValue;
20
20
  const filterType = cdktf_1.VariableType.list(cdktf_1.VariableType.object({
21
21
  name: cdktf_1.VariableType.STRING,
22
22
  values: cdktf_1.VariableType.list(cdktf_1.VariableType.STRING),
23
23
  }));
24
- const securityGroupFilters = new tf_module_stack_1.TFModuleVariable(this, 'ecs_security_group_filters', {
24
+ const securityGroupFilters = new tf_module_stack_1.TFModuleVariable(this, "ecs_security_group_filters", {
25
25
  type: filterType,
26
- description: 'Filters for security groups',
26
+ description: "Filters for security groups",
27
27
  default: [],
28
28
  }).value;
29
- const subnetFilters = new tf_module_stack_1.TFModuleVariable(this, 'ecs_subnet_filters', {
29
+ const subnetFilters = new tf_module_stack_1.TFModuleVariable(this, "ecs_subnet_filters", {
30
30
  type: filterType,
31
- description: 'Filters for security groups',
31
+ description: "Filters for security groups",
32
32
  default: [],
33
33
  }).value;
34
34
  const securityGroupFiltersIterator = cdktf_1.DynamicListTerraformIterator.fromList(securityGroupFilters);
35
35
  const subnetFiltersIterator = cdktf_1.DynamicListTerraformIterator.fromList(subnetFilters);
36
- new aws_1.Aws(this, 'aws', {
36
+ new aws_1.Aws(this, "aws", {
37
37
  clusterName,
38
38
  containerSupport: false,
39
39
  securityGroupFilters: securityGroupFiltersIterator.dynamic({
40
- name: securityGroupFiltersIterator.getString('name'),
41
- values: securityGroupFiltersIterator.getList('values'),
40
+ name: securityGroupFiltersIterator.getString("name"),
41
+ values: securityGroupFiltersIterator.getList("values"),
42
42
  }),
43
43
  subnetFilters: subnetFiltersIterator.dynamic({
44
- name: subnetFiltersIterator.getString('name'),
45
- values: subnetFiltersIterator.getList('values'),
44
+ name: subnetFiltersIterator.getString("name"),
45
+ values: subnetFiltersIterator.getList("values"),
46
46
  }),
47
47
  });
48
48
  }
@@ -50,15 +50,15 @@ class ElasticContainerServiceArc extends tf_module_stack_1.TFModuleStack {
50
50
  class CloudRunArc extends tf_module_stack_1.TFModuleStack {
51
51
  constructor(scope, id) {
52
52
  super(scope, id);
53
- new gcp_1.Gcp(this, 'cr');
53
+ new gcp_1.Gcp(this, "cr");
54
54
  }
55
55
  }
56
56
  const app = new cdktf_1.App();
57
57
  // This is the name the module can be found under.
58
58
  // We expect a "my-awesome-module.md" file in this directory.
59
59
  // The README.md file will be generated from this file.
60
- new AzureContainerAppsArc(app, 'azure-container-apps');
61
- new ElasticContainerServiceArc(app, 'elastic-container-service');
62
- new CloudRunArc(app, 'google-cloud-run');
60
+ new AzureContainerAppsArc(app, "azure-container-apps");
61
+ new ElasticContainerServiceArc(app, "elastic-container-service");
62
+ new CloudRunArc(app, "google-cloud-run");
63
63
  app.synth();
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZNb2R1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RmTW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDREQUF3RTtBQUN4RSxpQ0FBdUU7QUFFdkUsbUNBQStCO0FBQy9CLHVDQUFtQztBQUNuQyxtQ0FBK0I7QUFFL0IsTUFBTSxxQkFBc0IsU0FBUSwrQkFBYTtJQUMvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLDBCQUEyQixTQUFRLCtCQUFhO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDakUsV0FBVyxFQUFFLG1DQUFtQztTQUNqRCxDQUFDLENBQUMsV0FBVyxDQUFBO1FBRWQsTUFBTSxVQUFVLEdBQUcsb0JBQVksQ0FBQyxJQUFJLENBQ2xDLG9CQUFZLENBQUMsTUFBTSxDQUFDO1lBQ2xCLElBQUksRUFBRSxvQkFBWSxDQUFDLE1BQU07WUFDekIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFZLENBQUMsTUFBTSxDQUFDO1NBQy9DLENBQUMsQ0FDSCxDQUFBO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGtDQUFnQixDQUMvQyxJQUFJLEVBQ0osNEJBQTRCLEVBQzVCO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQ0YsQ0FBQyxLQUFLLENBQUE7UUFFUCxNQUFNLGFBQWEsR0FBRyxJQUFJLGtDQUFnQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNyRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUVSLE1BQU0sNEJBQTRCLEdBQ2hDLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzdELE1BQU0scUJBQXFCLEdBQ3pCLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUV0RCxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ25CLFdBQVc7WUFDWCxnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLG9CQUFvQixFQUFFLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztnQkFDekQsSUFBSSxFQUFFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BELE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQ3ZELENBQUM7WUFDRixhQUFhLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO2dCQUMzQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDN0MsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7YUFDaEQsQ0FBQztTQUNILENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sV0FBWSxTQUFRLCtCQUFhO0lBQ3JDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxTQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3JCLENBQUM7Q0FDRjtBQUVELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBRyxFQUFFLENBQUE7QUFDckIsa0RBQWtEO0FBQ2xELDZEQUE2RDtBQUM3RCx1REFBdUQ7QUFDdkQsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUMsQ0FBQTtBQUN0RCxJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO0FBQ2hFLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0FBRXhDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRGTW9kdWxlU3RhY2ssIFRGTW9kdWxlVmFyaWFibGUgfSBmcm9tICdAY2RrdGYvdGYtbW9kdWxlLXN0YWNrJ1xuaW1wb3J0IHsgQXBwLCBEeW5hbWljTGlzdFRlcnJhZm9ybUl0ZXJhdG9yLCBWYXJpYWJsZVR5cGUgfSBmcm9tICdjZGt0ZidcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnXG5pbXBvcnQgeyBBd3MgfSBmcm9tICcuL2xpYi9hd3MnXG5pbXBvcnQgeyBBenVyZSB9IGZyb20gJy4vbGliL2F6dXJlJ1xuaW1wb3J0IHsgR2NwIH0gZnJvbSAnLi9saWIvZ2NwJ1xuXG5jbGFzcyBBenVyZUNvbnRhaW5lckFwcHNBcmMgZXh0ZW5kcyBURk1vZHVsZVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIG5ldyBBenVyZSh0aGlzLCAnYWNhJylcbiAgfVxufVxuXG5jbGFzcyBFbGFzdGljQ29udGFpbmVyU2VydmljZUFyYyBleHRlbmRzIFRGTW9kdWxlU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgY2x1c3Rlck5hbWUgPSBuZXcgVEZNb2R1bGVWYXJpYWJsZSh0aGlzLCAnZWNzX2NsdXN0ZXJfbmFtZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgRUNTIGNsdXN0ZXIgdG8gY3JlYXRlJyxcbiAgICB9KS5zdHJpbmdWYWx1ZVxuXG4gICAgY29uc3QgZmlsdGVyVHlwZSA9IFZhcmlhYmxlVHlwZS5saXN0KFxuICAgICAgVmFyaWFibGVUeXBlLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IFZhcmlhYmxlVHlwZS5TVFJJTkcsXG4gICAgICAgIHZhbHVlczogVmFyaWFibGVUeXBlLmxpc3QoVmFyaWFibGVUeXBlLlNUUklORyksXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwRmlsdGVycyA9IG5ldyBURk1vZHVsZVZhcmlhYmxlKFxuICAgICAgdGhpcyxcbiAgICAgICdlY3Nfc2VjdXJpdHlfZ3JvdXBfZmlsdGVycycsXG4gICAgICB7XG4gICAgICAgIHR5cGU6IGZpbHRlclR5cGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmlsdGVycyBmb3Igc2VjdXJpdHkgZ3JvdXBzJyxcbiAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICB9LFxuICAgICkudmFsdWVcblxuICAgIGNvbnN0IHN1Ym5ldEZpbHRlcnMgPSBuZXcgVEZNb2R1bGVWYXJpYWJsZSh0aGlzLCAnZWNzX3N1Ym5ldF9maWx0ZXJzJywge1xuICAgICAgdHlwZTogZmlsdGVyVHlwZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRmlsdGVycyBmb3Igc2VjdXJpdHkgZ3JvdXBzJyxcbiAgICAgIGRlZmF1bHQ6IFtdLFxuICAgIH0pLnZhbHVlXG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwRmlsdGVyc0l0ZXJhdG9yID1cbiAgICAgIER5bmFtaWNMaXN0VGVycmFmb3JtSXRlcmF0b3IuZnJvbUxpc3Qoc2VjdXJpdHlHcm91cEZpbHRlcnMpXG4gICAgY29uc3Qgc3VibmV0RmlsdGVyc0l0ZXJhdG9yID1cbiAgICAgIER5bmFtaWNMaXN0VGVycmFmb3JtSXRlcmF0b3IuZnJvbUxpc3Qoc3VibmV0RmlsdGVycylcblxuICAgIG5ldyBBd3ModGhpcywgJ2F3cycsIHtcbiAgICAgIGNsdXN0ZXJOYW1lLFxuICAgICAgY29udGFpbmVyU3VwcG9ydDogZmFsc2UsXG4gICAgICBzZWN1cml0eUdyb3VwRmlsdGVyczogc2VjdXJpdHlHcm91cEZpbHRlcnNJdGVyYXRvci5keW5hbWljKHtcbiAgICAgICAgbmFtZTogc2VjdXJpdHlHcm91cEZpbHRlcnNJdGVyYXRvci5nZXRTdHJpbmcoJ25hbWUnKSxcbiAgICAgICAgdmFsdWVzOiBzZWN1cml0eUdyb3VwRmlsdGVyc0l0ZXJhdG9yLmdldExpc3QoJ3ZhbHVlcycpLFxuICAgICAgfSksXG4gICAgICBzdWJuZXRGaWx0ZXJzOiBzdWJuZXRGaWx0ZXJzSXRlcmF0b3IuZHluYW1pYyh7XG4gICAgICAgIG5hbWU6IHN1Ym5ldEZpbHRlcnNJdGVyYXRvci5nZXRTdHJpbmcoJ25hbWUnKSxcbiAgICAgICAgdmFsdWVzOiBzdWJuZXRGaWx0ZXJzSXRlcmF0b3IuZ2V0TGlzdCgndmFsdWVzJyksXG4gICAgICB9KSxcbiAgICB9KVxuICB9XG59XG5cbmNsYXNzIENsb3VkUnVuQXJjIGV4dGVuZHMgVEZNb2R1bGVTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBuZXcgR2NwKHRoaXMsICdjcicpXG4gIH1cbn1cblxuY29uc3QgYXBwID0gbmV3IEFwcCgpXG4vLyBUaGlzIGlzIHRoZSBuYW1lIHRoZSBtb2R1bGUgY2FuIGJlIGZvdW5kIHVuZGVyLlxuLy8gV2UgZXhwZWN0IGEgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBUaGUgUkVBRE1FLm1kIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUuXG5uZXcgQXp1cmVDb250YWluZXJBcHBzQXJjKGFwcCwgJ2F6dXJlLWNvbnRhaW5lci1hcHBzJylcbm5ldyBFbGFzdGljQ29udGFpbmVyU2VydmljZUFyYyhhcHAsICdlbGFzdGljLWNvbnRhaW5lci1zZXJ2aWNlJylcbm5ldyBDbG91ZFJ1bkFyYyhhcHAsICdnb29nbGUtY2xvdWQtcnVuJylcblxuYXBwLnN5bnRoKClcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZNb2R1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RmTW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDREQUF5RTtBQUN6RSxpQ0FBd0U7QUFFeEUsbUNBQWdDO0FBQ2hDLHVDQUFvQztBQUNwQyxtQ0FBZ0M7QUFFaEMsTUFBTSxxQkFBc0IsU0FBUSwrQkFBYTtJQUNoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN2QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0Q7QUFFRCxNQUFNLDBCQUEyQixTQUFRLCtCQUFhO0lBQ3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3ZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDbEUsV0FBVyxFQUFFLG1DQUFtQztTQUNoRCxDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWYsTUFBTSxVQUFVLEdBQUcsb0JBQVksQ0FBQyxJQUFJLENBQ25DLG9CQUFZLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxvQkFBWSxDQUFDLE1BQU07WUFDekIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFZLENBQUMsTUFBTSxDQUFDO1NBQzlDLENBQUMsQ0FDRixDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGtDQUFnQixDQUNoRCxJQUFJLEVBQ0osNEJBQTRCLEVBQzVCO1lBQ0MsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxPQUFPLEVBQUUsRUFBRTtTQUNYLENBQ0QsQ0FBQyxLQUFLLENBQUM7UUFFUixNQUFNLGFBQWEsR0FBRyxJQUFJLGtDQUFnQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUN0RSxJQUFJLEVBQUUsVUFBVTtZQUNoQixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLE9BQU8sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVULE1BQU0sNEJBQTRCLEdBQ2pDLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0scUJBQXFCLEdBQzFCLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVc7WUFDWCxnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLG9CQUFvQixFQUFFLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztnQkFDMUQsSUFBSSxFQUFFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BELE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQ3RELENBQUM7WUFDRixhQUFhLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxJQUFJLEVBQUUscUJBQXFCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDN0MsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7YUFDL0MsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRDtBQUVELE1BQU0sV0FBWSxTQUFRLCtCQUFhO0lBQ3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3ZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxTQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRDtBQUVELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBRyxFQUFFLENBQUM7QUFDdEIsa0RBQWtEO0FBQ2xELDZEQUE2RDtBQUM3RCx1REFBdUQ7QUFDdkQsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUN2RCxJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0FBQ2pFLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBRXpDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRGTW9kdWxlU3RhY2ssIFRGTW9kdWxlVmFyaWFibGUgfSBmcm9tIFwiQGNka3RmL3RmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgQXBwLCBEeW5hbWljTGlzdFRlcnJhZm9ybUl0ZXJhdG9yLCBWYXJpYWJsZVR5cGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3cyB9IGZyb20gXCIuL2xpYi9hd3NcIjtcbmltcG9ydCB7IEF6dXJlIH0gZnJvbSBcIi4vbGliL2F6dXJlXCI7XG5pbXBvcnQgeyBHY3AgfSBmcm9tIFwiLi9saWIvZ2NwXCI7XG5cbmNsYXNzIEF6dXJlQ29udGFpbmVyQXBwc0FyYyBleHRlbmRzIFRGTW9kdWxlU3RhY2sge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdG5ldyBBenVyZSh0aGlzLCBcImFjYVwiKTtcblx0fVxufVxuXG5jbGFzcyBFbGFzdGljQ29udGFpbmVyU2VydmljZUFyYyBleHRlbmRzIFRGTW9kdWxlU3RhY2sge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdGNvbnN0IGNsdXN0ZXJOYW1lID0gbmV3IFRGTW9kdWxlVmFyaWFibGUodGhpcywgXCJlY3NfY2x1c3Rlcl9uYW1lXCIsIHtcblx0XHRcdGRlc2NyaXB0aW9uOiBcIk5hbWUgb2YgdGhlIEVDUyBjbHVzdGVyIHRvIGNyZWF0ZVwiLFxuXHRcdH0pLnN0cmluZ1ZhbHVlO1xuXG5cdFx0Y29uc3QgZmlsdGVyVHlwZSA9IFZhcmlhYmxlVHlwZS5saXN0KFxuXHRcdFx0VmFyaWFibGVUeXBlLm9iamVjdCh7XG5cdFx0XHRcdG5hbWU6IFZhcmlhYmxlVHlwZS5TVFJJTkcsXG5cdFx0XHRcdHZhbHVlczogVmFyaWFibGVUeXBlLmxpc3QoVmFyaWFibGVUeXBlLlNUUklORyksXG5cdFx0XHR9KSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2VjdXJpdHlHcm91cEZpbHRlcnMgPSBuZXcgVEZNb2R1bGVWYXJpYWJsZShcblx0XHRcdHRoaXMsXG5cdFx0XHRcImVjc19zZWN1cml0eV9ncm91cF9maWx0ZXJzXCIsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IGZpbHRlclR5cGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBcIkZpbHRlcnMgZm9yIHNlY3VyaXR5IGdyb3Vwc1wiLFxuXHRcdFx0XHRkZWZhdWx0OiBbXSxcblx0XHRcdH0sXG5cdFx0KS52YWx1ZTtcblxuXHRcdGNvbnN0IHN1Ym5ldEZpbHRlcnMgPSBuZXcgVEZNb2R1bGVWYXJpYWJsZSh0aGlzLCBcImVjc19zdWJuZXRfZmlsdGVyc1wiLCB7XG5cdFx0XHR0eXBlOiBmaWx0ZXJUeXBlLFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiRmlsdGVycyBmb3Igc2VjdXJpdHkgZ3JvdXBzXCIsXG5cdFx0XHRkZWZhdWx0OiBbXSxcblx0XHR9KS52YWx1ZTtcblxuXHRcdGNvbnN0IHNlY3VyaXR5R3JvdXBGaWx0ZXJzSXRlcmF0b3IgPVxuXHRcdFx0RHluYW1pY0xpc3RUZXJyYWZvcm1JdGVyYXRvci5mcm9tTGlzdChzZWN1cml0eUdyb3VwRmlsdGVycyk7XG5cdFx0Y29uc3Qgc3VibmV0RmlsdGVyc0l0ZXJhdG9yID1cblx0XHRcdER5bmFtaWNMaXN0VGVycmFmb3JtSXRlcmF0b3IuZnJvbUxpc3Qoc3VibmV0RmlsdGVycyk7XG5cblx0XHRuZXcgQXdzKHRoaXMsIFwiYXdzXCIsIHtcblx0XHRcdGNsdXN0ZXJOYW1lLFxuXHRcdFx0Y29udGFpbmVyU3VwcG9ydDogZmFsc2UsXG5cdFx0XHRzZWN1cml0eUdyb3VwRmlsdGVyczogc2VjdXJpdHlHcm91cEZpbHRlcnNJdGVyYXRvci5keW5hbWljKHtcblx0XHRcdFx0bmFtZTogc2VjdXJpdHlHcm91cEZpbHRlcnNJdGVyYXRvci5nZXRTdHJpbmcoXCJuYW1lXCIpLFxuXHRcdFx0XHR2YWx1ZXM6IHNlY3VyaXR5R3JvdXBGaWx0ZXJzSXRlcmF0b3IuZ2V0TGlzdChcInZhbHVlc1wiKSxcblx0XHRcdH0pLFxuXHRcdFx0c3VibmV0RmlsdGVyczogc3VibmV0RmlsdGVyc0l0ZXJhdG9yLmR5bmFtaWMoe1xuXHRcdFx0XHRuYW1lOiBzdWJuZXRGaWx0ZXJzSXRlcmF0b3IuZ2V0U3RyaW5nKFwibmFtZVwiKSxcblx0XHRcdFx0dmFsdWVzOiBzdWJuZXRGaWx0ZXJzSXRlcmF0b3IuZ2V0TGlzdChcInZhbHVlc1wiKSxcblx0XHRcdH0pLFxuXHRcdH0pO1xuXHR9XG59XG5cbmNsYXNzIENsb3VkUnVuQXJjIGV4dGVuZHMgVEZNb2R1bGVTdGFjayB7XG5cdGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcblx0XHRzdXBlcihzY29wZSwgaWQpO1xuXG5cdFx0bmV3IEdjcCh0aGlzLCBcImNyXCIpO1xuXHR9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuXG4vLyBXZSBleHBlY3QgYSBcIm15LWF3ZXNvbWUtbW9kdWxlLm1kXCIgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS5cbi8vIFRoZSBSRUFETUUubWQgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZCBmcm9tIHRoaXMgZmlsZS5cbm5ldyBBenVyZUNvbnRhaW5lckFwcHNBcmMoYXBwLCBcImF6dXJlLWNvbnRhaW5lci1hcHBzXCIpO1xubmV3IEVsYXN0aWNDb250YWluZXJTZXJ2aWNlQXJjKGFwcCwgXCJlbGFzdGljLWNvbnRhaW5lci1zZXJ2aWNlXCIpO1xubmV3IENsb3VkUnVuQXJjKGFwcCwgXCJnb29nbGUtY2xvdWQtcnVuXCIpO1xuXG5hcHAuc3ludGgoKTtcbiJdfQ==