@pipeline-builder/pipeline-core 4.4.10 → 4.4.12
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/config/config-types.d.ts +0 -36
- package/lib/config/config-types.js +1 -1
- package/lib/config/infrastructure-config.js +1 -3
- package/lib/core/pipeline-helpers.d.ts +26 -3
- package/lib/core/pipeline-helpers.js +62 -131
- package/lib/core/plugin-lookup-envelope.d.ts +44 -1
- package/lib/core/plugin-lookup-envelope.js +58 -3
- package/lib/core/self-mutation.d.ts +31 -0
- package/lib/core/self-mutation.js +36 -0
- package/lib/core/step-manifest.d.ts +36 -0
- package/lib/core/step-manifest.js +8 -2
- package/lib/handlers/bundle/index.mjs +20 -20
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -2
- package/lib/pipeline/pipeline-builder.d.ts +19 -0
- package/lib/pipeline/pipeline-builder.js +67 -21
- package/lib/pipeline/plugin-lookup.d.ts +5 -9
- package/lib/pipeline/plugin-lookup.js +6 -10
- package/lib/pipeline/stage-builder.d.ts +4 -1
- package/lib/pipeline/stage-builder.js +4 -1
- package/lib/pipeline/step-manifest-recorder.d.ts +10 -1
- package/lib/pipeline/step-manifest-recorder.js +30 -3
- package/lib/pipeline/step-types.d.ts +9 -1
- package/lib/pipeline/step-types.js +1 -1
- package/lib/testing/exports.json +10 -0
- package/package.json +4 -4
|
@@ -124,16 +124,12 @@ export declare class PluginLookup extends Construct {
|
|
|
124
124
|
* Synth plugin with pipeline-manager commands. Cold-start bootstrap for
|
|
125
125
|
* the synth step when pre-resolution by `pipeline-manager pipeline synth/deploy`
|
|
126
126
|
* didn't populate `resolvedPlugins` for the synth plugin. Runs on the
|
|
127
|
-
*
|
|
128
|
-
* and self-bootstraps the real synth
|
|
129
|
-
* `pipeline-manager pipeline synth --id ${PIPELINE_ID}`.
|
|
127
|
+
* resolved toolchain release's `pipeline-bootstrap` image (the pipeline's
|
|
128
|
+
* `resolvedBootstrap`, pinned by digest) and self-bootstraps the real synth
|
|
129
|
+
* via `pipeline-manager pipeline synth --id ${PIPELINE_ID}`.
|
|
130
130
|
*
|
|
131
|
-
* No `installCommands`: the
|
|
132
|
-
* baked in
|
|
133
|
-
* operator points CODEBUILD_DEFAULT_IMAGE at an image lacking it (e.g.
|
|
134
|
-
* vanilla aws/codebuild/standard:7.0), this step exits 127 — fix that
|
|
135
|
-
* by using an image with pipeline-manager rather than papering over it
|
|
136
|
-
* with a per-build `npm install -g`.
|
|
131
|
+
* No `installCommands`: the bootstrap image has the release's pinned
|
|
132
|
+
* `pipeline-manager` baked in — that is what the image is for.
|
|
137
133
|
*
|
|
138
134
|
* TLS is VERIFIED by default: this lookup returns the image digests every
|
|
139
135
|
* step is pinned to, so an unverified connection would let a MITM choose what
|
|
@@ -350,16 +350,12 @@ export class PluginLookup extends Construct {
|
|
|
350
350
|
* Synth plugin with pipeline-manager commands. Cold-start bootstrap for
|
|
351
351
|
* the synth step when pre-resolution by `pipeline-manager pipeline synth/deploy`
|
|
352
352
|
* didn't populate `resolvedPlugins` for the synth plugin. Runs on the
|
|
353
|
-
*
|
|
354
|
-
* and self-bootstraps the real synth
|
|
355
|
-
* `pipeline-manager pipeline synth --id ${PIPELINE_ID}`.
|
|
353
|
+
* resolved toolchain release's `pipeline-bootstrap` image (the pipeline's
|
|
354
|
+
* `resolvedBootstrap`, pinned by digest) and self-bootstraps the real synth
|
|
355
|
+
* via `pipeline-manager pipeline synth --id ${PIPELINE_ID}`.
|
|
356
356
|
*
|
|
357
|
-
* No `installCommands`: the
|
|
358
|
-
* baked in
|
|
359
|
-
* operator points CODEBUILD_DEFAULT_IMAGE at an image lacking it (e.g.
|
|
360
|
-
* vanilla aws/codebuild/standard:7.0), this step exits 127 — fix that
|
|
361
|
-
* by using an image with pipeline-manager rather than papering over it
|
|
362
|
-
* with a per-build `npm install -g`.
|
|
357
|
+
* No `installCommands`: the bootstrap image has the release's pinned
|
|
358
|
+
* `pipeline-manager` baked in — that is what the image is for.
|
|
363
359
|
*
|
|
364
360
|
* TLS is VERIFIED by default: this lookup returns the image digests every
|
|
365
361
|
* step is pinned to, so an unverified connection would let a MITM choose what
|
|
@@ -381,4 +377,4 @@ export class PluginLookup extends Construct {
|
|
|
381
377
|
};
|
|
382
378
|
}
|
|
383
379
|
}
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxvb2t1cC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3BsdWdpbi1sb29rdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBC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LHNCQUFzQixFQUFFLFNBQVM7WUFDakMsUUFBUSxFQUFFO2dCQUNSLDJGQUEyRixPQUFPLEVBQUU7YUFDckc7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBTWVNURU1fT1JHX0lEIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5GaWx0ZXIsIFBsdWdpbiB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGEnO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIFRva2VuLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgRWZmZWN0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBSdW50aW1lLCBBcmNoaXRlY3R1cmUsIEZ1bmN0aW9uLCBDb2RlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vc3RlcC10eXBlcy5qcyc7XG5pbXBvcnQgeyBDb25maWcsIENvcmVDb25zdGFudHMgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZy5qcyc7XG5pbXBvcnQgeyBsYW1iZGFSdW50aW1lIH0gZnJvbSAnLi4vY29uZmlnL2F3cy1jb25maWctY2RrLmpzJztcbmltcG9ydCB7IFVuaXF1ZUlkIH0gZnJvbSAnLi4vY29yZS9pZC1nZW5lcmF0b3IuanMnO1xuaW1wb3J0IHsgUExBVEZPUk1fQ0FfQlVORExFX0VOViwgcGxhdGZvcm1DYUJ1bmRsZSwgcGxhdGZvcm1UbHNWZXJpZnkgfSBmcm9tICcuLi9jb3JlL3BsYXRmb3JtLXRscy5qcyc7XG5pbXBvcnQgeyBwbHVnaW5BcnRpZmFjdEFsaWFzLCBwbHVnaW5Mb29rdXBGaWx0ZXIgfSBmcm9tICcuLi9jb3JlL3BsdWdpbi1jb250cmFjdC5qcyc7XG5pbXBvcnQgeyBQTEFDRUhPTERFUl9QTFVHSU5fSUQgfSBmcm9tICcuLi9jb3JlL3N0ZXAtbWFuaWZlc3QuanMnO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ3BsdWdpbi1sb29rdXAnKTtcblxuLy8gRVNNLXNhZmUgbW9kdWxlIGRpcmVjdG9yeSAodGhlIHBhY2thZ2UgaXMgYHR5cGU6IG1vZHVsZWA7IGBfX2Rpcm5hbWVgIGlzXG4vLyBub3QgZGVmaW5lZCB1bmRlciBFUyBtb2R1bGVzKS5cbmNvbnN0IE1PRFVMRV9ESVIgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbmludGVyZmFjZSBJbnB1dFByb3BzIHtcbiAgcmVhZG9ubHkgYmFzZVVSTDogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW5GaWx0ZXI6IFBsdWdpbkZpbHRlcjtcbiAgLyoqIFRoZSBzdGVwJ3MgbGFiZWwgKGBwbHVnaW5TdGVwTGFiZWxgKSDigJQgc2VudCBhcyB0aGUgbG9va3VwIGBjb250ZXh0LnN0ZXBLZXlzYCAoY29udHJhY3QgQzEpLiAqL1xuICByZWFkb25seSBzdGVwS2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIFBsdWdpbkxvb2t1cCBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Mb29rdXBQcm9wcyB7XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBwcm9qZWN0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVuaXF1ZUlkOiBVbmlxdWVJZDtcbiAgLyoqIE9yZ2FuaXphdGlvbiBJRCBmb3IgcmVzb2x2aW5nIHBlci1vcmcgc2VjcmV0cyBmcm9tIFNlY3JldHMgTWFuYWdlciAqL1xuICByZWFkb25seSBvcmdJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBsYXRmb3JtIHBpcGVsaW5lIGlkLiBTZW50IGFzIGxvb2t1cCBgY29udGV4dGAgc28gdGhlIHBsdWdpbiBzZXJ2aWNlIHJlY29yZHNcbiAgICogdGhlIHdhcm5pbmdzIGl0IHJldHVybnMgYWdhaW5zdCBlYWNoIChwaXBlbGluZSwgc3RlcCk7IG9taXR0ZWQgd2hlbiB1bmtub3duLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcnVudGltZT86IFJ1bnRpbWU7XG4gIC8qKiBMYW1iZGEgdGltZW91dCAoZGVmYXVsdDogMzBzKSAqL1xuICByZWFkb25seSB0aW1lb3V0PzogRHVyYXRpb247XG4gIC8qKiBMYW1iZGEgbWVtb3J5IGluIE1CIChkZWZhdWx0OiA1MTIpICovXG4gIHJlYWRvbmx5IG1lbW9yeVNpemU/OiBudW1iZXI7XG4gIC8qKiBMYW1iZGEgQ1BVIGFyY2hpdGVjdHVyZSAoZGVmYXVsdDogQVJNXzY0KSAqL1xuICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmU7XG4gIC8qKiBSZXNlcnZlZCBjb25jdXJyZW50IGV4ZWN1dGlvbnMgZm9yIHRoZSBsb29rdXAgTGFtYmRhIChkZWZhdWx0OiAzMCkgKi9cbiAgcmVhZG9ubHkgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFBsdWdpbnMgcHJlLXJlc29sdmVkIGJ5IGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoYCBmcm9tIHRoZSBwbGF0Zm9ybSBBUEkuXG4gICAqIEtleWVkIGJ5IGBhbGlhcyB8fCBuYW1lYCAobWF0Y2hlcyB0aGUgY29uc3RydWN0J3Mgbm9ybWFsaXplKCkgb3V0cHV0KS5cbiAgICogV2hlbiBhIGxvb2t1cCBoaXRzIHRoaXMgbWFwLCBgcGx1Z2luKClgIHJldHVybnMgdGhlIHJlc29sdmVkIFBsdWdpblxuICAgKiBkaXJlY3RseSDigJQgbm8gY3VzdG9tIHJlc291cmNlIGlzIGNyZWF0ZWQuIFRoaXMgaXMgd2hhdCBtYWtlcyB0aGVcbiAgICogbmFtZSwgdmVyc2lvbiwgY29tbWFuZHMsIGVudiwgZXRjLiBhdmFpbGFibGUgYXQgc3ludGggdGltZSBzbyB0aGUgcmVzdWx0aW5nXG4gICAqIENGTiB0ZW1wbGF0ZSBzaGlwcyB3aXRoIHRoZSByZWFsIHZhbHVlcyBiYWtlZCBpbi5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkUGx1Z2lucz86IFJlY29yZDxzdHJpbmcsIFBsdWdpbj47XG59XG5cbi8qKlxuICogQ0RLIENvbnN0cnVjdCByZXNwb25zaWJsZSBmb3IgbG9va2luZyB1cCBwbHVnaW4gY29uZmlndXJhdGlvbnMgZnJvbSBhbiBleHRlcm5hbCBwbGF0Zm9ybVxuICogdXNpbmcgQVdTIENsb3VkRm9ybWF0aW9uIEN1c3RvbSBSZXNvdXJjZXMgYmFja2VkIGJ5IGEgTGFtYmRhIGZ1bmN0aW9uLlxuICpcbiAqIFRoaXMgY29uc3RydWN0IGNyZWF0ZXM6XG4gKiAtIEEgTGFtYmRhIGZ1bmN0aW9uIChwbHVnaW4tbG9va3VwLWhhbmRsZXIpIHRoYXQgZmV0Y2hlcyBwbHVnaW4gY29uZmlnc1xuICogLSBBIENsb3VkV2F0Y2ggTG9nIEdyb3VwIGZvciB0aGUgTGFtYmRhXG4gKiAtIEEgQ3VzdG9tIFJlc291cmNlIFByb3ZpZGVyIHRoYXQgaW52b2tlcyB0aGUgTGFtYmRhXG4gKiAtIEFuIElBTSBwb2xpY3kgZ3JhbnRpbmcgdGhlIExhbWJkYSBhY2Nlc3MgdG8gdGhlIGNyZWRlbnRpYWxzIHNlY3JldFxuICpcbiAqICMjIFByZXJlcXVpc2l0ZXNcbiAqXG4gKiBCZWZvcmUgZGVwbG95aW5nLCBzdG9yZSBhIEpXVCB0b2tlbiBpbiBTZWNyZXRzIE1hbmFnZXI6XG4gKiBgYGBzaFxuICogcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbiAtLWRheXMgMzAgLS1yZWdpb24gPHJlZ2lvbj5cbiAqIGBgYFxuICpcbiAqIFRoZSBMYW1iZGEgcmVzb2x2ZXMgdGhlIHNlY3JldCBieSBuYW1lIGF0IHJ1bnRpbWU6XG4gKiBge1NFQ1JFVFNfUEFUSF9QUkVGSVh9L3tvcmdJZH0vcGxhdGZvcm1gXG4gKlxuICogQHNlZSBoYW5kbGVycy9wbHVnaW4tbG9va3VwLWhhbmRsZXIudHMgZm9yIHRoZSBMYW1iZGEgaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbkxvb2t1cCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VuaXF1ZUlkOiBVbmlxdWVJZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvdmlkZXI6IFByb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wbGF0Zm9ybVVybDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydW50aW1lOiBSdW50aW1lO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0OiBEdXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVtb3J5U2l6ZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucz86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3JnSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BpcGVsaW5lSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc29sdmVkUGx1Z2lucz86IFJlY29yZDxzdHJpbmcsIFBsdWdpbj47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBsdWdpbkxvb2t1cFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmICghcHJvcHMub3JnYW5pemF0aW9uIHx8ICFwcm9wcy5wcm9qZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0JvdGggb3JnYW5pemF0aW9uIGFuZCBwcm9qZWN0IGFyZSByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl91bmlxdWVJZCA9IHByb3BzLnVuaXF1ZUlkO1xuICAgIHRoaXMuX3BsYXRmb3JtVXJsID0gcHJvcHMucGxhdGZvcm1Vcmw7XG4gICAgdGhpcy5fb3JnSWQgPSBwcm9wcy5vcmdJZDtcbiAgICB0aGlzLl9waXBlbGluZUlkID0gcHJvcHMucGlwZWxpbmVJZDtcbiAgICB0aGlzLl9ydW50aW1lID0gcHJvcHMucnVudGltZSA/PyBsYW1iZGFSdW50aW1lKCdub2RlanMyNi54Jyk7XG4gICAgdGhpcy5fdGltZW91dCA9IHByb3BzLnRpbWVvdXQgPz8gRHVyYXRpb24uc2Vjb25kcygzMCk7XG4gICAgdGhpcy5fbWVtb3J5U2l6ZSA9IHByb3BzLm1lbW9yeVNpemUgPz8gQ29uZmlnLmdldCgnYXdzJykubGFtYmRhLm1lbW9yeVNpemU7XG4gICAgdGhpcy5fYXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IEFyY2hpdGVjdHVyZS5BUk1fNjQ7XG4gICAgdGhpcy5fcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucyA9IHByb3BzLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM7XG4gICAgdGhpcy5fcmVzb2x2ZWRQbHVnaW5zID0gcHJvcHMucmVzb2x2ZWRQbHVnaW5zO1xuXG4gICAgY29uc3Qgb25FdmVudEhhbmRsZXIgPSB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9uKCk7XG5cbiAgICAvLyBMb2ctZ3JvdXAgc3RyYXRlZ3k6XG4gICAgLy8gICBQcmV2aW91cyBjb2RlIGNyZWF0ZWQgYW4gYEFXUzo6TG9nczo6TG9nR3JvdXBgIHJlc291cmNlIHdpdGggYW5cbiAgICAvLyAgIEVYUExJQ0lUIG5hbWUgKGAvYXdzL2xhbWJkYS9wbHVnaW4tbG9va3VwLU5gKS4gVGhhdCBicmVha3MgZXZlcnlcbiAgICAvLyAgIHJlLWRlcGxveSBhZnRlciBhIHJvbGxlZC1iYWNrIHN0YWNrOiBBV1MgYXV0by1jcmVhdGVzIHRoZSBncm91cCBvblxuICAgIC8vICAgZmlyc3QgTGFtYmRhIGludm9jYXRpb24sIHRoZSByb2xsYmFjayBsZWF2ZXMgaXQgYXMgYW4gb3JwaGFuLCBhbmRcbiAgICAvLyAgIHRoZSBuZXh0IENESyBydW4gZmFpbHMgd2l0aCBcIlJlc291cmNlIC4uLiBhbHJlYWR5IGV4aXN0c1wiIGJlY2F1c2VcbiAgICAvLyAgIHRoZSBleHBsaWNpdCBuYW1lIGNvbGxpZGVzIHdpdGggdGhlIG9ycGhhbi5cbiAgICAvL1xuICAgIC8vICAgRml4OiB1c2UgYExvZ0dyb3VwLmZyb21Mb2dHcm91cE5hbWUoKWAgdG8gYWRvcHQtb3ItcGFzcy10aHJvdWdoLlxuICAgIC8vICAgSWYgdGhlIGdyb3VwIGV4aXN0cywgQ0RLIHJlZmVyZW5jZXMgaXQgd2l0aG91dCB0cnlpbmcgdG8gcmVjcmVhdGUuXG4gICAgLy8gICBJZiBpdCBkb2Vzbid0LCBBV1MgTGFtYmRhIGF1dG8tY3JlYXRlcyBpdCBvbiBmaXJzdCBpbnZvY2F0aW9uLlxuICAgIC8vICAgUmV0ZW50aW9uIGlzIHRoZW4gc2V0IHZpYSBhIHNlcGFyYXRlIHJldGVudGlvbi1wb2xpY3kgY3VzdG9tXG4gICAgLy8gICByZXNvdXJjZSB3aGljaCBpcyBpZGVtcG90ZW50IChzYWZlIHRvIGFwcGx5IHRvIGV4aXN0aW5nIGdyb3VwcykuXG4gICAgY29uc3QgbG9nR3JvdXBOYW1lID0gYC9hd3MvbGFtYmRhLyR7dGhpcy5fdW5pcXVlSWQuZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKS5yZXBsYWNlKC86L2csICctJyl9YDtcbiAgICBjb25zdCBsb2dHcm91cCA9IExvZ0dyb3VwLmZyb21Mb2dHcm91cE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5fdW5pcXVlSWQuZ2VuZXJhdGUoJ2xvZzpncm91cCcpLFxuICAgICAgbG9nR3JvdXBOYW1lLFxuICAgICk7XG5cbiAgICB0aGlzLl9wcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCB0aGlzLl91bmlxdWVJZC5nZW5lcmF0ZSgncmVzb3VyY2U6cHJvdmlkZXInKSwge1xuICAgICAgb25FdmVudEhhbmRsZXIsXG4gICAgICBsb2dHcm91cCxcbiAgICB9KTtcblxuICAgIGxvZy5kZWJ1ZyhgUGx1Z2luTG9va3VwIGluaXRpYWxpemVkIGZvciAke3Byb3BzLm9yZ2FuaXphdGlvbn0vJHtwcm9wcy5wcm9qZWN0fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIGFuZCByZXNvbHZlcyBwbHVnaW4gY29uZmlndXJhdGlvbiB1c2luZyBlaXRoZXIgYSBzaW1wbGUgbmFtZSBvciBmdWxsIFBsdWdpbk9wdGlvbnMgb2JqZWN0XG4gICAqIER1cmluZyBzeW50aGVzaXMsIGlmIHRoZSB2YWx1ZSBpcyB1bnJlc29sdmVkICh0b2tlbiksIHJldHVybnMgZmFsbGJhY2sgcGx1Z2luXG4gICAqIER1cmluZyBkZXBsb3ltZW50LCBhdHRlbXB0cyB0byBwYXJzZSB0aGUgYWN0dWFsIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICogQHBhcmFtIHBsdWdpbiAtIFBsdWdpbiBuYW1lIChzdHJpbmcpIG9yIGNvbXBsZXRlIFBsdWdpbk9wdGlvbnMgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gc3RlcEtleSAtIFRoZSBzdGVwJ3MgbGFiZWwgKGBwbHVnaW5TdGVwTGFiZWxgOiBgc3ludGhgIG9yXG4gICAqICAgYDxzdGFnZT4vPGFsaWFzID8/IG5hbWU+YCkuIFRoZSBkZXBsb3ktdGltZSBsb29rdXAgcmVwb3J0cyBpdHMgd2FybmluZ3NcbiAgICogICBhZ2FpbnN0IGl0LCBzbyBpdCBtdXN0IG1hdGNoIHRoZSBzdGVwIG1hbmlmZXN0J3MgYW5kIHRoZSBzZWN1cml0eSB2aWV3J3Mga2V5LlxuICAgKiBAcmV0dXJucyBSZXNvbHZlZCBQbHVnaW4gb2JqZWN0IG9yIGZhbGxiYWNrIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHBsdWdpbihwbHVnaW46IHN0cmluZyB8IFBsdWdpbk9wdGlvbnMsIHN0ZXBLZXk/OiBzdHJpbmcpOiBQbHVnaW4ge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5ub3JtYWxpemUocGx1Z2luKTtcblxuICAgIC8vIFByZS1yZXNvbHZlZCBieSBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aGAgZnJvbSB0aGUgcGxhdGZvcm0gQVBJLlxuICAgIC8vIFNraXAgdGhlIGN1c3RvbSByZXNvdXJjZSBlbnRpcmVseSDigJQgd2UgYWxyZWFkeSBrbm93IHRoZSBwbHVnaW4nc1xuICAgIC8vIG5hbWUsIHZlcnNpb24sIGNvbW1hbmRzLCBlbnYsIGV0Yy4gYXQgc3ludGggdGltZSwgc28gdGhlIHJlc3VsdGluZyBDRk5cbiAgICAvLyB0ZW1wbGF0ZSBjYW4gc2hpcCB3aXRoIHRoZSByZWFsIENvZGVCdWlsZCBpbWFnZSBiYWtlZCBpbi5cbiAgICBjb25zdCBjYWNoZUtleSA9IHByb3BzLmFsaWFzIHx8IHByb3BzLm5hbWU7XG4gICAgY29uc3QgcHJlUmVzb2x2ZWQgPSB0aGlzLl9yZXNvbHZlZFBsdWdpbnM/LltjYWNoZUtleV0gYXMgKFBsdWdpbiAmIHsgcHVibGlzaGVyPzogc3RyaW5nIHwgbnVsbCB9KSB8IHVuZGVmaW5lZDtcbiAgICAvLyBUaGUgbWFwIGlzIGtleWVkIGJ5IEFMSUFTLCBzbyBjaGVjayBpdCBhY3R1YWxseSBob2xkcyBUSElTIHBsdWdpbi4gVHdvXG4gICAgLy8gc3RlcHMgc2hhcmluZyBhbiBhbGlhcyBhY3Jvc3MgZGlmZmVyZW50IHBsdWdpbnMgd291bGQgb3RoZXJ3aXNlIGdldCB0aGVcbiAgICAvLyBmaXJzdCBvbmUncyByZWNvcmQgYmFjayDigJQgdGhlIHNlY29uZCBzdGVwIHNpbGVudGx5IHJ1bm5pbmcgdGhlIHdyb25nXG4gICAgLy8gaW1hZ2UgYW5kIGNvbW1hbmRzLiBUaGUgQ0xJIHJlZnVzZXMgc3VjaCBhIHBpcGVsaW5lIHRvbzsgdGhpcyBjb3ZlcnMgYW55IG90aGVyXG4gICAgLy8gY2FsbGVyIHRoYXQgc3VwcGxpZXMgYHJlc29sdmVkUGx1Z2luc2AuXG4gICAgLy8gQ29tcGFyZSBhZ2FpbnN0IHRoZSBuYW1lIHRoZSBsb29rdXAgYWN0dWFsbHkgVEFSR0VURUQ6IGFuIGV4cGxpY2l0XG4gICAgLy8gYGZpbHRlci5uYW1lYCBvdmVycmlkZXMgdGhlIHJlZidzIGBuYW1lYCBieSBkZXNpZ24sIGFuZCB0aGF0IGlzIG5vdCBhXG4gICAgLy8gY29sbGlzaW9uLlxuICAgIGNvbnN0IHRhcmdldE5hbWUgPSAocHJvcHMuZmlsdGVyIGFzIHsgbmFtZT86IHN0cmluZyB9IHwgdW5kZWZpbmVkKT8ubmFtZSA/PyBwcm9wcy5uYW1lO1xuICAgIGlmIChwcmVSZXNvbHZlZCAmJiBwcmVSZXNvbHZlZC5uYW1lICE9PSB0YXJnZXROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBQbHVnaW4gYWxpYXMgXCIke2NhY2hlS2V5fVwiIHJlc29sdmVzIHRvIFwiJHtwcmVSZXNvbHZlZC5uYW1lfVwiLCBub3QgXCIke3RhcmdldE5hbWV9XCIuIGBcbiAgICAgICAgKyAnRWFjaCBhbGlhcyBtdXN0IG5hbWUgZXhhY3RseSBvbmUgcGx1Z2luLicsXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBBIHF1YWxpZmllZCByZWZlcmVuY2UgbXVzdCBoYXZlIHJlc29sdmVkIHRvIFRIQVQgcHVibGlzaGVyJ3MgbGlzdGluZ1xuICAgIC8vIChhbiB1bnF1YWxpZmllZCBvbmUgbWF5IHJlc29sdmUgdG8gdGhlIG9yZydzIG93biBwbHVnaW4gb3IgdGhlIE9mZmljaWFsXG4gICAgLy8gbGlzdGluZykuXG4gICAgaWYgKHByZVJlc29sdmVkICYmIHByb3BzLnB1Ymxpc2hlciAmJiBwcmVSZXNvbHZlZC5wdWJsaXNoZXIgIT09IHByb3BzLnB1Ymxpc2hlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUGx1Z2luIGFsaWFzIFwiJHtjYWNoZUtleX1cIiByZXNvbHZlcyB0byAke3ByZVJlc29sdmVkLnB1Ymxpc2hlciA/IGAke3ByZVJlc29sdmVkLnB1Ymxpc2hlcn0vYCA6ICd5b3VyIG9yZ2FuaXphdGlvblxcJ3MgJ30ke3ByZVJlc29sdmVkLm5hbWV9LCBgXG4gICAgICAgICsgYG5vdCAke3Byb3BzLnB1Ymxpc2hlcn0vJHt0YXJnZXROYW1lfS4gRWFjaCBhbGlhcyBtdXN0IG5hbWUgZXhhY3RseSBvbmUgcGx1Z2luLmAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocHJlUmVzb2x2ZWQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUGx1Z2luIFwiJHtwcm9wcy5uYW1lfVwiIHByZS1yZXNvbHZlZCAoYWxpYXM9JHtjYWNoZUtleX0pIOKAlCBza2lwcGluZyBjdXN0b20gcmVzb3VyY2VgKTtcbiAgICAgIHJldHVybiBwcmVSZXNvbHZlZDtcbiAgICB9XG5cbiAgICBjb25zdCBjdXN0b20gPSB0aGlzLmNyZWF0ZUN1c3RvbVJlc291cmNlKHByb3BzLCBzdGVwS2V5KTtcbiAgICBjb25zdCBlbmNvZGVkID0gY3VzdG9tLmdldEF0dFN0cmluZygnUmVzdWx0VmFsdWUnKTtcblxuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZW5jb2RlZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUGx1Z2luIFwiJHtwcm9wcy5uYW1lfVwiIHZhbHVlIGlzIHVucmVzb2x2ZWQgKHRva2VuKSBkdXJpbmcgc3ludGhlc2lzIOKAlCB1c2luZyBmYWxsYmFjay4gVGhlIGFjdHVhbCBwbHVnaW4gd2lsbCBiZSByZXNvbHZlZCBhdCBkZXBsb3ltZW50IHRpbWUuYCk7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gQnVmZmVyLmZyb20oZW5jb2RlZCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjb2RlZCk7XG5cbiAgICAgIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgIWRhdGEubmFtZSB8fCAhQXJyYXkuaXNBcnJheShkYXRhLmNvbW1hbmRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGx1Z2luIHJlc3BvbnNlOiBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkcyAobmFtZSwgY29tbWFuZHMpJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhIGFzIFBsdWdpbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHBsdWdpbiBcIiR7cHJvcHMubmFtZX1cIiBkYXRhOiAke2Vycm9yTXNnfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBzZXJ2ZXMgYXMgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIuXG4gICAqXG4gICAqIEpXVCB0b2tlbiBpcyBzdG9yZWQgaW4gYSBwcmUtZXhpc3RpbmcgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBhdFxuICAgKiBge1NFQ1JFVFNfUEFUSF9QUkVGSVh9L3tvcmdJZH0vcGxhdGZvcm1gLiBUaGUgTGFtYmRhIHJlc29sdmVzIHRoZVxuICAgKiBzZWNyZXQgYnkgbmFtZSBhdCBydW50aW1lIHVzaW5nIGBDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVhgLlxuICAgKlxuICAgKiBDcmVhdGUgdGhlIHNlY3JldCBiZWZvcmUgZGVwbG95aW5nIHdpdGg6XG4gICAqICAgcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbiAtLWRheXMgMzAgLS1yZWdpb24gPHJlZ2lvbj5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlTGFtYmRhRnVuY3Rpb24oKTogRnVuY3Rpb24ge1xuICAgIGlmICghdGhpcy5fb3JnSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3JnSWQgaXMgcmVxdWlyZWQgZm9yIFBsdWdpbkxvb2t1cCDigJQgbmVlZGVkIHRvIHJlc29sdmUgdGhlIHBlci1vcmcgcGxhdGZvcm0gc2VjcmV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNlY3JldE5hbWUgPSBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgodGhpcy5fb3JnSWQsICdwbGF0Zm9ybScpO1xuICAgIGNvbnN0IGNhQnVuZGxlID0gcGxhdGZvcm1DYUJ1bmRsZSgpO1xuXG4gICAgLy8gUFJFQlVJTFQgYXQgcmVsZWFzZSAoc2VlIGAucHJvamVucmMudHNgLCBwaXBlbGluZS1jb3JlIHBvc3QtY29tcGlsZSksIG5vdFxuICAgIC8vIGJ1aWx0IGhlcmUuXG4gICAgLy9cbiAgICAvLyBUaGlzIHdhcyBhIGBOb2RlanNGdW5jdGlvbmAsIHdoaWNoIGJ1bmRsZXMgd2l0aCBlc2J1aWxkIGR1cmluZyBzeW50aCBvblxuICAgIC8vIHdoaWNoZXZlciBtYWNoaW5lIHJ1bnMgdGhlIGRlcGxveSBhbmQgdGhlcmVmb3JlIHJlcXVpcmVzIGFcbiAgICAvLyBgZGVwc0xvY2tGaWxlUGF0aGAuIFRoZSBzdHViIGxvY2sgdGhhdCBzYXRpc2ZpZWQgaXQgd2FzIG5hbWVkXG4gICAgLy8gYHBucG0tbG9jay55YW1sYCwgYW5kIGBwbnBtIHBhY2tgIHN0cmlwcyBmaWxlcyBieSB0aGF0IG5hbWUg4oCUIHNvIG5vXG4gICAgLy8gcHVibGlzaGVkIGNvcHkgb2YgdGhlIENMSSBldmVyIGhhZCBpdCBhbmQgZXZlcnkgZGVwbG95IGRpZWQgYXQgc3ludGguXG4gICAgLy9cbiAgICAvLyBTaGlwcGluZyB0aGUgYnVuZGxlIGluc3RlYWQgY29zdHMgbm90aGluZyB0aGF0IHdhcyBiZWluZyB1c2VkOiB0aGVcbiAgICAvLyBidW5kbGluZyBvcHRpb25zIHdlcmUgYWxsIHN0YXRpYywgc28gZWFjaCBtYWNoaW5lIHdhcyByZWJ1aWxkaW5nIGFcbiAgICAvLyBieXRlLWlkZW50aWNhbCBhcnRpZmFjdC4gSXQgYWxzbyB0YWtlcyBlc2J1aWxkIG9mZiB0aGUgZGVwbG95IHBhdGhcbiAgICAvLyBlbnRpcmVseSwgd2hpY2ggaXMgd2hhdCB0aGUgQ29kZUJ1aWxkIGJvb3RzdHJhcCBpbWFnZSB3YXMgY2FycnlpbmcgaXQgZm9yLlxuICAgIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKHRoaXMsIHRoaXMuX3VuaXF1ZUlkLmdlbmVyYXRlKCdvbmV2ZW50OmhhbmRsZXInKSwge1xuICAgICAgcnVudGltZTogdGhpcy5fcnVudGltZSxcbiAgICAgIHRpbWVvdXQ6IHRoaXMuX3RpbWVvdXQsXG4gICAgICBtZW1vcnlTaXplOiB0aGlzLl9tZW1vcnlTaXplLFxuICAgICAgYXJjaGl0ZWN0dXJlOiB0aGlzLl9hcmNoaXRlY3R1cmUsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChqb2luKE1PRFVMRV9ESVIsICcvLi4vaGFuZGxlcnMvYnVuZGxlJykpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogdGhpcy5fcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFBMQVRGT1JNX1NFQ1JFVF9OQU1FOiBzZWNyZXROYW1lLFxuICAgICAgICAvLyBQTEFURk9STV9UTFNfVkVSSUZZPWZhbHNlOiBhIGRldiBwbGF0Zm9ybSBvbiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLlxuICAgICAgICAuLi4oIXBsYXRmb3JtVGxzVmVyaWZ5KCkgJiYge1xuICAgICAgICAgIE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ6ICcwJyxcbiAgICAgICAgfSksXG4gICAgICAgIC8vIFByaXZhdGUtQ0EgcGxhdGZvcm06IHZlcmlmeSBhZ2FpbnN0IHRoZSBDQSBpbnN0ZWFkIChjb3JlL3BsYXRmb3JtLXRscy50cykuXG4gICAgICAgIC4uLihjYUJ1bmRsZSAmJiB7IFtQTEFURk9STV9DQV9CVU5ETEVfRU5WXTogY2FCdW5kbGUgfSksXG4gICAgICAgIC8vIFRoZSBsb29rdXAgcmVwb3J0cyBpdHMgd2FybmluZ3MgYWdhaW5zdCB0aGlzIHBpcGVsaW5lIChjb250cmFjdCBDMSkuXG4gICAgICAgIC4uLih0aGlzLl9waXBlbGluZUlkICYmIHsgUElQRUxJTkVfSUQ6IHRoaXMuX3BpcGVsaW5lSWQgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gR3JhbnQgdGhlIExhbWJkYSBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIHBlci1vcmcgcGxhdGZvcm0gc2VjcmV0LlxuICAgIC8vIFRoZSB3aWxkY2FyZCBzdWZmaXggaGFuZGxlcyB0aGUgNi1jaGFyIHJhbmRvbSBJRCB0aGF0IFNlY3JldHMgTWFuYWdlciBhcHBlbmRzLlxuICAgIGZuLmFkZFRvUm9sZVBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VjcmV0c21hbmFnZXI6KjoqOnNlY3JldDoke3NlY3JldE5hbWV9LSpgXSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gZm47XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGRlZmF1bHQgcGx1Z2luIGZpbHRlci5cbiAgICogQWNjZXNzIGNvbnRyb2wgKG9yZ0lkIHNjb3BpbmcsIHB1YmxpYy9wcml2YXRlIHZpc2liaWxpdHkpIGlzIGhhbmRsZWQgYnlcbiAgICogdGhlIHBsYXRmb3JtJ3MgYWNjZXNzIGNvbnRyb2wgcXVlcnkgYnVpbGRlciBiYXNlZCBvbiB0aGUgSldUJ3Mgb3JnYW5pemF0aW9uSWQuXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZShwbHVnaW46IHN0cmluZyB8IFBsdWdpbk9wdGlvbnMpOiBQbHVnaW5PcHRpb25zIHtcbiAgICBjb25zdCByZWY6IFBsdWdpbk9wdGlvbnMgPSB0eXBlb2YgcGx1Z2luID09PSAnc3RyaW5nJyA/IHsgbmFtZTogcGx1Z2luIH0gOiBwbHVnaW47XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHJlZi5uYW1lLFxuICAgICAgLi4uKHJlZi5wdWJsaXNoZXIgPyB7IHB1Ymxpc2hlcjogcmVmLnB1Ymxpc2hlciB9IDoge30pLFxuICAgICAgLy8gVGhlIHJlc29sdmVyIGNhY2hlIGtleTogdGhlIGV4cGxpY2l0IGFsaWFzLCBlbHNlIGBbPHB1Ymxpc2hlcj4tXTxuYW1lPi1hbGlhc2AuXG4gICAgICBhbGlhczogcGx1Z2luQXJ0aWZhY3RBbGlhcyhyZWYpLFxuICAgICAgLy8gVGhlIHNhbWUgZmlsdGVyIHRoZSBDTEkgcHJlLXJlc29sdmVyIGFuZCB0aGUgcGlwZWxpbmUgc2VydmljZSdzXG4gICAgICAvLyBjb250cmFjdCBjaGVjayBzZW5kIChgcGx1Z2luTG9va3VwRmlsdGVyYCk6IG5hbWUgKyBwdWJsaXNoZXIsIHRoZW5cbiAgICAgIC8vIHRoZSByZWZlcmVuY2UncyBvd24gZmlsdGVyLCBlbHNlIHRoZSBkZWZhdWx0IHZlcnNpb24uXG4gICAgICBmaWx0ZXI6IHBsdWdpbkxvb2t1cEZpbHRlcih7IG5hbWU6IHJlZi5uYW1lLCBwdWJsaXNoZXI6IHJlZi5wdWJsaXNoZXIsIGZpbHRlcjogcmVmLmZpbHRlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB9KSBhcyBQbHVnaW5GaWx0ZXIsXG4gICAgICBtZXRhZGF0YTogcmVmLm1ldGFkYXRhLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIEN1c3RvbVJlc291cmNlIGluc3RhbmNlIHRoYXQgdHJpZ2dlcnMgcGx1Z2luIGxvb2t1cCBkdXJpbmcgZGVwbG95bWVudFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDdXN0b21SZXNvdXJjZShwcm9wczogUGx1Z2luT3B0aW9ucywgc3RlcEtleT86IHN0cmluZyk6IEN1c3RvbVJlc291cmNlIHtcbiAgICBjb25zdCByZXNvdXJjZUlkID0gdGhpcy5fdW5pcXVlSWQuZ2VuZXJhdGUocHJvcHMuYWxpYXMgfHwgcHJvcHMubmFtZSk7XG5cbiAgICByZXR1cm4gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIHJlc291cmNlSWQsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5fcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpQbHVnaW5Mb29rdXAnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBiYXNlVVJMOiB0aGlzLl9wbGF0Zm9ybVVybCxcbiAgICAgICAgcGx1Z2luRmlsdGVyOiBwcm9wcy5maWx0ZXIsXG4gICAgICAgIC4uLihzdGVwS2V5ID8geyBzdGVwS2V5IH0gOiB7fSksXG4gICAgICB9IGFzIElucHV0UHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKiogQmFzZSBwbHVnaW4gc2hhcGUgd2l0aCBuby1vcCBkZWZhdWx0cyBmb3IgZmllbGRzIENESyBkb2Vzbid0IHVzZS4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgYmFzZVBsdWdpbigpOiBQbHVnaW4ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBQTEFDRUhPTERFUl9QTFVHSU5fSUQsXG4gICAgICBvcmdJZDogU1lTVEVNX09SR19JRCxcbiAgICAgIGNyZWF0ZWRCeTogJ3N5c3RlbScsXG4gICAgICBjcmVhdGVkQXQ6IG5vdyxcbiAgICAgIHVwZGF0ZWRCeTogJ3N5c3RlbScsXG4gICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgIG5hbWU6ICdmYWxsYmFjaycsXG4gICAgICBkZXNjcmlwdGlvbjogbnVsbCxcbiAgICAgIGtleXdvcmRzOiBbXSxcbiAgICAgIGNhdGVnb3J5OiAndW5rbm93bicsXG4gICAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgcGx1Z2luVHlwZTogJ0NvZGVCdWlsZFN0ZXAnLFxuICAgICAgY29tcHV0ZVR5cGU6ICdTTUFMTCcsXG4gICAgICB0aW1lb3V0OiBudWxsLFxuICAgICAgZmFpbHVyZUJlaGF2aW9yOiAnZmFpbCcsXG4gICAgICBzZWNyZXRzOiBbXSxcbiAgICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6ICdjZGsub3V0JyxcbiAgICAgIGVudjoge30sXG4gICAgICBidWlsZEFyZ3M6IHt9LFxuICAgICAgaW5zdGFsbENvbW1hbmRzOiBbXSxcbiAgICAgIGNvbW1hbmRzOiBbXSxcbiAgICAgIGRvY2tlcmZpbGU6IG51bGwsXG4gICAgICBidWlsZFR5cGU6ICdtZXRhZGF0YV9vbmx5JyxcbiAgICAgIGltYWdlRGlnZXN0OiBudWxsLFxuICAgICAgaW1hZ2VTb3VyY2U6IG51bGwsXG4gICAgICBvd25lcklkOiBudWxsLFxuICAgICAgb3duZXJUeXBlOiBudWxsLFxuICAgICAgbGlmZWN5Y2xlOiAncHJvZHVjdGlvbicsXG4gICAgICBjcml0aWNhbGl0eTogbnVsbCxcbiAgICAgIGxhYmVsczoge30sXG4gICAgICBsaW5rczogW10sXG4gICAgICB2aXNpYmlsaXR5OiAncHVibGljJyxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIGRlbGV0ZWRBdDogbnVsbCxcbiAgICAgIGRlbGV0ZWRCeTogbnVsbCxcbiAgICAgIHB1cmdlQWZ0ZXI6IG51bGwsXG4gICAgICBxdW90YVJlc2V0QXQ6IG51bGwsXG4gICAgICBzdW1tYXJ5OiBudWxsLFxuICAgICAgZGlzcGxheU5hbWU6IG51bGwsXG4gICAgICBkb2N1bWVudGF0aW9uVXJsOiBudWxsLFxuICAgICAgbWV0YWRhdGFTb3VyY2VzOiB7fSxcbiAgICAgIHJlcXVpcmVkTWV0YWRhdGE6IFtdLFxuICAgICAgcmVxdWlyZWRWYXJzOiBbXSxcbiAgICAgIG1ldGFkYXRhVHlwZXM6IHt9LFxuICAgICAgdmFyc1R5cGVzOiB7fSxcbiAgICAgIHNtb2tlVGVzdDogbnVsbCxcbiAgICAgIG5ldHdvcmtFZ3Jlc3M6IFtdLFxuICAgICAgcmVhZG1lTWQ6IG51bGwsXG4gICAgICByZWFkbWVIdG1sOiBudWxsLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIGNoYW5nZWxvZzogbnVsbCxcbiAgICAgIGhvbWVwYWdlVXJsOiBudWxsLFxuICAgICAgc291cmNlVXJsOiBudWxsLFxuICAgICAgaWNvbjogbnVsbCxcbiAgICAgIHVwbG9hZGVkSWNvbjogbnVsbCxcbiAgICAgIHZ1bG5Dcml0aWNhbDogbnVsbCxcbiAgICAgIHZ1bG5IaWdoOiBudWxsLFxuICAgICAgdnVsbk1lZGl1bTogbnVsbCxcbiAgICAgIHZ1bG5Mb3c6IG51bGwsXG4gICAgICB2dWxuQ3JpdGljYWxGaXhhYmxlOiBudWxsLFxuICAgICAgdnVsbkhpZ2hGaXhhYmxlOiBudWxsLFxuICAgICAgc2Nhbm5lZEF0OiBudWxsLFxuICAgICAgc2NhblN1bW1hcnk6IG51bGwsXG4gICAgICBzY2FuRmxhZ2dlZEF0OiBudWxsLFxuICAgICAgc2NhbkZsYWc6IG51bGwsXG4gICAgICBydW5Bc1Jvb3Q6IG51bGwsXG4gICAgICBicmVha2luZzogZmFsc2UsXG4gICAgICBmcm96ZW5BdDogbnVsbCxcbiAgICAgIHlhbmtlZEF0OiBudWxsLFxuICAgICAgeWFua1JlYXNvbjogbnVsbCxcbiAgICAgIGRlcHJlY2F0ZWRBdDogbnVsbCxcbiAgICAgIGRlcHJlY2F0aW9uTWVzc2FnZTogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZhbGxiYWNrIGZvciBhIHBsdWdpbiB3aG9zZSBsb29rdXAgcmV0dXJuZWQgbm8gcmVjb3JkIChub3QgaW4gdGhlIHBsYXRmb3JtXG4gICAqIGNhdGFsb2cgZm9yIHRoaXMgb3JnKSBhbmQgc28gY291bGQgbm90IGJlIHByZS1yZXNvbHZlZCBhdCBzeW50aC5cbiAgICpcbiAgICogVGhpcyBzdGVwIEZBSUxTIHRoZSBidWlsZCAoZXhpdCAxKSBvbiBwdXJwb3NlLiBUaGUgcHJldmlvdXMgYmVoYXZpb3VyIOKAlFxuICAgKiBgZWNobyBcIuKAplwiICYmIGV4aXQgMGAg4oCUIHdhcyBhIGZhbHNlIHBvc2l0aXZlOiBhbiB1bnJlc29sdmVkIHNlY3VyaXR5L3F1YWxpdHlcbiAgICogc3RlcCAoZGVwZW5kZW5jeS1jaGVjaywgc2VtZ3JlcCwgc3BvdGJ1Z3MsIOKApikgcmVwb3J0ZWQgdGhlIHN0YWdlIGdyZWVuIHdoaWxlXG4gICAqIHJ1bm5pbmcgbm90aGluZywgZ2l2aW5nIGZhbHNlIGFzc3VyYW5jZSB0aGF0IHNjYW5zL2J1aWxkcyBoYWQgcGFzc2VkLiBBXG4gICAqIHBsdWdpbiBzdGVwIHRoYXQgY2FuJ3QgcnVuIGl0cyBwbHVnaW4gbXVzdCBnbyByZWQsIGNvbnNpc3RlbnQgd2l0aFxuICAgKiBgYmFzZVBsdWdpbigpLmZhaWx1cmVCZWhhdmlvciA9PT0gJ2ZhaWwnYC4gVGhlIG1lc3NhZ2UgaXMgYWN0aW9uYWJsZSBzbyB0aGVcbiAgICogb3BlcmF0b3Iga25vd3MgdGhlIGNhdGFsb2cgaXMgZW1wdHkvaW5jb21wbGV0ZSwgbm90IHRoYXQgdGhlIHRvb2wgY3Jhc2hlZC5cbiAgICovXG4gIHByaXZhdGUgZmFsbGJhY2soKTogUGx1Z2luIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uUGx1Z2luTG9va3VwLmJhc2VQbHVnaW4oKSxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICdlY2hvIFwiRVJST1I6IHBsdWdpbiBsb29rdXAgcmV0dXJuZWQgbm8gcmVjb3JkIOKAlCB0aGlzIHBsdWdpbiBpcyBub3QgaW4gdGhlIHBsYXRmb3JtIGNhdGFsb2cgZm9yIHRoaXMgb3JnLCBzbyB0aGUgc3RlcCBjYW5ub3QgcnVuLlwiID4mMicsXG4gICAgICAgICdlY2hvIFwiVGhpcyBzdGVwIGZhaWxzIGluc3RlYWQgb2YgcGFzc2luZyBhcyBhIG5vLW9wIChhbiB1bnJlc29sdmVkIHBsdWdpbiByZXBvcnRpbmcgc3VjY2VzcyB3b3VsZCBiZSBhIGZhbHNlLXBvc2l0aXZlIGdyZWVuKS5cIiA+JjInLFxuICAgICAgICAnZWNobyBcIkZpeDogbG9hZCB0aGUgcGx1Z2luIGludG8gdGhlIHBsYXRmb3JtIChkZXBsb3kvYmluL2xvYWQtcGx1Z2lucy5zaCksIHRoZW4gcmUtcnVuIHRoZSBwaXBlbGluZS5cIiA+JjInLFxuICAgICAgICAnZXhpdCAxJyxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW50aCBwbHVnaW4gd2l0aCBwaXBlbGluZS1tYW5hZ2VyIGNvbW1hbmRzLiBDb2xkLXN0YXJ0IGJvb3RzdHJhcCBmb3JcbiAgICogdGhlIHN5bnRoIHN0ZXAgd2hlbiBwcmUtcmVzb2x1dGlvbiBieSBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aC9kZXBsb3lgXG4gICAqIGRpZG4ndCBwb3B1bGF0ZSBgcmVzb2x2ZWRQbHVnaW5zYCBmb3IgdGhlIHN5bnRoIHBsdWdpbi4gUnVucyBvbiB0aGVcbiAgICogY29uZmlndXJlZCBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VgIChkZWZhdWx0IGBwaXBlbGluZS1ib290c3RyYXA6MS4wYClcbiAgICogYW5kIHNlbGYtYm9vdHN0cmFwcyB0aGUgcmVhbCBzeW50aCB2aWFcbiAgICogYHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGggLS1pZCAke1BJUEVMSU5FX0lEfWAuXG4gICAqXG4gICAqIE5vIGBpbnN0YWxsQ29tbWFuZHNgOiB0aGUgZGVmYXVsdCBpbWFnZSBhbHJlYWR5IGhhcyBgcGlwZWxpbmUtbWFuYWdlcmBcbiAgICogYmFrZWQgaW4gKHRoYXQncyB0aGUgd2hvbGUgcG9pbnQgb2YgYHBpcGVsaW5lLWJvb3RzdHJhcDoxLjBgKS4gSWYgdGhlXG4gICAqIG9wZXJhdG9yIHBvaW50cyBDT0RFQlVJTERfREVGQVVMVF9JTUFHRSBhdCBhbiBpbWFnZSBsYWNraW5nIGl0IChlLmcuXG4gICAqIHZhbmlsbGEgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjApLCB0aGlzIHN0ZXAgZXhpdHMgMTI3IOKAlCBmaXggdGhhdFxuICAgKiBieSB1c2luZyBhbiBpbWFnZSB3aXRoIHBpcGVsaW5lLW1hbmFnZXIgcmF0aGVyIHRoYW4gcGFwZXJpbmcgb3ZlciBpdFxuICAgKiB3aXRoIGEgcGVyLWJ1aWxkIGBucG0gaW5zdGFsbCAtZ2AuXG4gICAqXG4gICAqIFRMUyBpcyBWRVJJRklFRCBieSBkZWZhdWx0OiB0aGlzIGxvb2t1cCByZXR1cm5zIHRoZSBpbWFnZSBkaWdlc3RzIGV2ZXJ5XG4gICAqIHN0ZXAgaXMgcGlubmVkIHRvLCBzbyBhbiB1bnZlcmlmaWVkIGNvbm5lY3Rpb24gd291bGQgbGV0IGEgTUlUTSBjaG9vc2Ugd2hhdFxuICAgKiBydW5zLiBBIHByaXZhdGUtQ0EgcGxhdGZvcm0gaXMgdHJ1c3RlZCB0aHJvdWdoIGBQTEFURk9STV9DQV9CVU5ETEVgLCB3aGljaFxuICAgKiB0aGUgc3ludGggcHJvcGFnYXRlcyBpbnRvIGV2ZXJ5IENvZGVCdWlsZCBzdGVwLiBPbmx5IGFuIGV4cGxpY2l0XG4gICAqIGBQTEFURk9STV9UTFNfVkVSSUZZPWZhbHNlYCBhdCBzeW50aCB0aW1lIChhIGRldiBwbGF0Zm9ybSBvbiBhIHNlbGYtc2lnbmVkXG4gICAqIGNlcnRpZmljYXRlKSBhZGRzIGAtLW5vLXZlcmlmeS1zc2xgIOKAlCBhbmQgdGhlIENMSSByZWZ1c2VzIHRoYXQgaW5cbiAgICogcHJvZHVjdGlvbi4gU2VlIGNvcmUvcGxhdGZvcm0tdGxzLnRzLlxuICAgKi9cbiAgcHVibGljIGJvb3RzdHJhcCgpOiBQbHVnaW4ge1xuICAgIGNvbnN0IHRsc0ZsYWcgPSBwbGF0Zm9ybVRsc1ZlcmlmeSgpID8gJycgOiAnIC0tbm8tdmVyaWZ5LXNzbCc7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlBsdWdpbkxvb2t1cC5iYXNlUGx1Z2luKCksXG4gICAgICBuYW1lOiAnY2RrLXN5bnRoJyxcbiAgICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6ICdjZGsub3V0JyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgIGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoIC0taWQgXFwke1BJUEVMSU5FX0lEfSAtLXN0b3JlLXRva2VucyAtLXF1aWV0IC0tbm8tbm90aWNlcyR7dGxzRmxhZ31gLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxvb2t1cC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3BsdWdpbi1sb29rdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBC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QXNCLEVBQUUsU0FBUztZQUNqQyxRQUFRLEVBQUU7Z0JBQ1IsMkZBQTJGLE9BQU8sRUFBRTthQUNyRztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIFNZU1RFTV9PUkdfSUQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkZpbHRlciwgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgVG9rZW4sIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUsIEFyY2hpdGVjdHVyZSwgRnVuY3Rpb24sIENvZGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IExvZ0dyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi9zdGVwLXR5cGVzLmpzJztcbmltcG9ydCB7IENvbmZpZywgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnLmpzJztcbmltcG9ydCB7IGxhbWJkYVJ1bnRpbWUgfSBmcm9tICcuLi9jb25maWcvYXdzLWNvbmZpZy1jZGsuanMnO1xuaW1wb3J0IHsgVW5pcXVlSWQgfSBmcm9tICcuLi9jb3JlL2lkLWdlbmVyYXRvci5qcyc7XG5pbXBvcnQgeyBQTEFURk9STV9DQV9CVU5ETEVfRU5WLCBwbGF0Zm9ybUNhQnVuZGxlLCBwbGF0Zm9ybVRsc1ZlcmlmeSB9IGZyb20gJy4uL2NvcmUvcGxhdGZvcm0tdGxzLmpzJztcbmltcG9ydCB7IHBsdWdpbkFydGlmYWN0QWxpYXMsIHBsdWdpbkxvb2t1cEZpbHRlciB9IGZyb20gJy4uL2NvcmUvcGx1Z2luLWNvbnRyYWN0LmpzJztcbmltcG9ydCB7IFBMQUNFSE9MREVSX1BMVUdJTl9JRCB9IGZyb20gJy4uL2NvcmUvc3RlcC1tYW5pZmVzdC5qcyc7XG5cbmNvbnN0IGxvZyA9IGNyZWF0ZUxvZ2dlcigncGx1Z2luLWxvb2t1cCcpO1xuXG4vLyBFU00tc2FmZSBtb2R1bGUgZGlyZWN0b3J5ICh0aGUgcGFja2FnZSBpcyBgdHlwZTogbW9kdWxlYDsgYF9fZGlybmFtZWAgaXNcbi8vIG5vdCBkZWZpbmVkIHVuZGVyIEVTIG1vZHVsZXMpLlxuY29uc3QgTU9EVUxFX0RJUiA9IGRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuaW50ZXJmYWNlIElucHV0UHJvcHMge1xuICByZWFkb25seSBiYXNlVVJMOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsdWdpbkZpbHRlcjogUGx1Z2luRmlsdGVyO1xuICAvKiogVGhlIHN0ZXAncyBsYWJlbCAoYHBsdWdpblN0ZXBMYWJlbGApIOKAlCBzZW50IGFzIHRoZSBsb29rdXAgYGNvbnRleHQuc3RlcEtleXNgIChjb250cmFjdCBDMSkuICovXG4gIHJlYWRvbmx5IHN0ZXBLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgUGx1Z2luTG9va3VwIGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkxvb2t1cFByb3BzIHtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb2plY3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcGxhdGZvcm1Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgdW5pcXVlSWQ6IFVuaXF1ZUlkO1xuICAvKiogT3JnYW5pemF0aW9uIElEIGZvciByZXNvbHZpbmcgcGVyLW9yZyBzZWNyZXRzIGZyb20gU2VjcmV0cyBNYW5hZ2VyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuICAvKipcbiAgICogUGxhdGZvcm0gcGlwZWxpbmUgaWQuIFNlbnQgYXMgbG9va3VwIGBjb250ZXh0YCBzbyB0aGUgcGx1Z2luIHNlcnZpY2UgcmVjb3Jkc1xuICAgKiB0aGUgd2FybmluZ3MgaXQgcmV0dXJucyBhZ2FpbnN0IGVhY2ggKHBpcGVsaW5lLCBzdGVwKTsgb21pdHRlZCB3aGVuIHVua25vd24uXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZTtcbiAgLyoqIExhbWJkYSB0aW1lb3V0IChkZWZhdWx0OiAzMHMpICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBEdXJhdGlvbjtcbiAgLyoqIExhbWJkYSBtZW1vcnkgaW4gTUIgKGRlZmF1bHQ6IDUxMikgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U2l6ZT86IG51bWJlcjtcbiAgLyoqIExhbWJkYSBDUFUgYXJjaGl0ZWN0dXJlIChkZWZhdWx0OiBBUk1fNjQpICovXG4gIHJlYWRvbmx5IGFyY2hpdGVjdHVyZT86IEFyY2hpdGVjdHVyZTtcbiAgLyoqIFJlc2VydmVkIGNvbmN1cnJlbnQgZXhlY3V0aW9ucyBmb3IgdGhlIGxvb2t1cCBMYW1iZGEgKGRlZmF1bHQ6IDMwKSAqL1xuICByZWFkb25seSByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zPzogbnVtYmVyO1xuICAvKipcbiAgICogUGx1Z2lucyBwcmUtcmVzb2x2ZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGhgIGZyb20gdGhlIHBsYXRmb3JtIEFQSS5cbiAgICogS2V5ZWQgYnkgYGFsaWFzIHx8IG5hbWVgIChtYXRjaGVzIHRoZSBjb25zdHJ1Y3QncyBub3JtYWxpemUoKSBvdXRwdXQpLlxuICAgKiBXaGVuIGEgbG9va3VwIGhpdHMgdGhpcyBtYXAsIGBwbHVnaW4oKWAgcmV0dXJucyB0aGUgcmVzb2x2ZWQgUGx1Z2luXG4gICAqIGRpcmVjdGx5IOKAlCBubyBjdXN0b20gcmVzb3VyY2UgaXMgY3JlYXRlZC4gVGhpcyBpcyB3aGF0IG1ha2VzIHRoZVxuICAgKiBuYW1lLCB2ZXJzaW9uLCBjb21tYW5kcywgZW52LCBldGMuIGF2YWlsYWJsZSBhdCBzeW50aCB0aW1lIHNvIHRoZSByZXN1bHRpbmdcbiAgICogQ0ZOIHRlbXBsYXRlIHNoaXBzIHdpdGggdGhlIHJlYWwgdmFsdWVzIGJha2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRQbHVnaW5zPzogUmVjb3JkPHN0cmluZywgUGx1Z2luPjtcbn1cblxuLyoqXG4gKiBDREsgQ29uc3RydWN0IHJlc3BvbnNpYmxlIGZvciBsb29raW5nIHVwIHBsdWdpbiBjb25maWd1cmF0aW9ucyBmcm9tIGFuIGV4dGVybmFsIHBsYXRmb3JtXG4gKiB1c2luZyBBV1MgQ2xvdWRGb3JtYXRpb24gQ3VzdG9tIFJlc291cmNlcyBiYWNrZWQgYnkgYSBMYW1iZGEgZnVuY3Rpb24uXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgY3JlYXRlczpcbiAqIC0gQSBMYW1iZGEgZnVuY3Rpb24gKHBsdWdpbi1sb29rdXAtaGFuZGxlcikgdGhhdCBmZXRjaGVzIHBsdWdpbiBjb25maWdzXG4gKiAtIEEgQ2xvdWRXYXRjaCBMb2cgR3JvdXAgZm9yIHRoZSBMYW1iZGFcbiAqIC0gQSBDdXN0b20gUmVzb3VyY2UgUHJvdmlkZXIgdGhhdCBpbnZva2VzIHRoZSBMYW1iZGFcbiAqIC0gQW4gSUFNIHBvbGljeSBncmFudGluZyB0aGUgTGFtYmRhIGFjY2VzcyB0byB0aGUgY3JlZGVudGlhbHMgc2VjcmV0XG4gKlxuICogIyMgUHJlcmVxdWlzaXRlc1xuICpcbiAqIEJlZm9yZSBkZXBsb3lpbmcsIHN0b3JlIGEgSldUIHRva2VuIGluIFNlY3JldHMgTWFuYWdlcjpcbiAqIGBgYHNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiA8cmVnaW9uPlxuICogYGBgXG4gKlxuICogVGhlIExhbWJkYSByZXNvbHZlcyB0aGUgc2VjcmV0IGJ5IG5hbWUgYXQgcnVudGltZTpcbiAqIGB7U0VDUkVUU19QQVRIX1BSRUZJWH0ve29yZ0lkfS9wbGF0Zm9ybWBcbiAqXG4gKiBAc2VlIGhhbmRsZXJzL3BsdWdpbi1sb29rdXAtaGFuZGxlci50cyBmb3IgdGhlIExhbWJkYSBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luTG9va3VwIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdW5pcXVlSWQ6IFVuaXF1ZUlkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm92aWRlcjogUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bnRpbWU6IFJ1bnRpbWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXQ6IER1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZW1vcnlTaXplOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zPzogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcmdJZD86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfcGlwZWxpbmVJZD86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb2x2ZWRQbHVnaW5zPzogUmVjb3JkPHN0cmluZywgUGx1Z2luPjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGx1Z2luTG9va3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKCFwcm9wcy5vcmdhbml6YXRpb24gfHwgIXByb3BzLnByb2plY3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQm90aCBvcmdhbml6YXRpb24gYW5kIHByb2plY3QgYXJlIHJlcXVpcmVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuX3VuaXF1ZUlkID0gcHJvcHMudW5pcXVlSWQ7XG4gICAgdGhpcy5fcGxhdGZvcm1VcmwgPSBwcm9wcy5wbGF0Zm9ybVVybDtcbiAgICB0aGlzLl9vcmdJZCA9IHByb3BzLm9yZ0lkO1xuICAgIHRoaXMuX3BpcGVsaW5lSWQgPSBwcm9wcy5waXBlbGluZUlkO1xuICAgIHRoaXMuX3J1bnRpbWUgPSBwcm9wcy5ydW50aW1lID8/IGxhbWJkYVJ1bnRpbWUoJ25vZGVqczI2LngnKTtcbiAgICB0aGlzLl90aW1lb3V0ID0gcHJvcHMudGltZW91dCA/PyBEdXJhdGlvbi5zZWNvbmRzKDMwKTtcbiAgICB0aGlzLl9tZW1vcnlTaXplID0gcHJvcHMubWVtb3J5U2l6ZSA/PyBDb25maWcuZ2V0KCdhd3MnKS5sYW1iZGEubWVtb3J5U2l6ZTtcbiAgICB0aGlzLl9hcmNoaXRlY3R1cmUgPSBwcm9wcy5hcmNoaXRlY3R1cmUgPz8gQXJjaGl0ZWN0dXJlLkFSTV82NDtcbiAgICB0aGlzLl9yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zID0gcHJvcHMucmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucztcbiAgICB0aGlzLl9yZXNvbHZlZFBsdWdpbnMgPSBwcm9wcy5yZXNvbHZlZFBsdWdpbnM7XG5cbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlciA9IHRoaXMuY3JlYXRlTGFtYmRhRnVuY3Rpb24oKTtcblxuICAgIC8vIExvZy1ncm91cCBzdHJhdGVneTpcbiAgICAvLyAgIFByZXZpb3VzIGNvZGUgY3JlYXRlZCBhbiBgQVdTOjpMb2dzOjpMb2dHcm91cGAgcmVzb3VyY2Ugd2l0aCBhblxuICAgIC8vICAgRVhQTElDSVQgbmFtZSAoYC9hd3MvbGFtYmRhL3BsdWdpbi1sb29rdXAtTmApLiBUaGF0IGJyZWFrcyBldmVyeVxuICAgIC8vICAgcmUtZGVwbG95IGFmdGVyIGEgcm9sbGVkLWJhY2sgc3RhY2s6IEFXUyBhdXRvLWNyZWF0ZXMgdGhlIGdyb3VwIG9uXG4gICAgLy8gICBmaXJzdCBMYW1iZGEgaW52b2NhdGlvbiwgdGhlIHJvbGxiYWNrIGxlYXZlcyBpdCBhcyBhbiBvcnBoYW4sIGFuZFxuICAgIC8vICAgdGhlIG5leHQgQ0RLIHJ1biBmYWlscyB3aXRoIFwiUmVzb3VyY2UgLi4uIGFscmVhZHkgZXhpc3RzXCIgYmVjYXVzZVxuICAgIC8vICAgdGhlIGV4cGxpY2l0IG5hbWUgY29sbGlkZXMgd2l0aCB0aGUgb3JwaGFuLlxuICAgIC8vXG4gICAgLy8gICBGaXg6IHVzZSBgTG9nR3JvdXAuZnJvbUxvZ0dyb3VwTmFtZSgpYCB0byBhZG9wdC1vci1wYXNzLXRocm91Z2guXG4gICAgLy8gICBJZiB0aGUgZ3JvdXAgZXhpc3RzLCBDREsgcmVmZXJlbmNlcyBpdCB3aXRob3V0IHRyeWluZyB0byByZWNyZWF0ZS5cbiAgICAvLyAgIElmIGl0IGRvZXNuJ3QsIEFXUyBMYW1iZGEgYXV0by1jcmVhdGVzIGl0IG9uIGZpcnN0IGludm9jYXRpb24uXG4gICAgLy8gICBSZXRlbnRpb24gaXMgdGhlbiBzZXQgdmlhIGEgc2VwYXJhdGUgcmV0ZW50aW9uLXBvbGljeSBjdXN0b21cbiAgICAvLyAgIHJlc291cmNlIHdoaWNoIGlzIGlkZW1wb3RlbnQgKHNhZmUgdG8gYXBwbHkgdG8gZXhpc3RpbmcgZ3JvdXBzKS5cbiAgICBjb25zdCBsb2dHcm91cE5hbWUgPSBgL2F3cy9sYW1iZGEvJHt0aGlzLl91bmlxdWVJZC5nZW5lcmF0ZSgncGx1Z2luOmxvb2t1cCcpLnJlcGxhY2UoLzovZywgJy0nKX1gO1xuICAgIGNvbnN0IGxvZ0dyb3VwID0gTG9nR3JvdXAuZnJvbUxvZ0dyb3VwTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLl91bmlxdWVJZC5nZW5lcmF0ZSgnbG9nOmdyb3VwJyksXG4gICAgICBsb2dHcm91cE5hbWUsXG4gICAgKTtcblxuICAgIHRoaXMuX3Byb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHRoaXMsIHRoaXMuX3VuaXF1ZUlkLmdlbmVyYXRlKCdyZXNvdXJjZTpwcm92aWRlcicpLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcixcbiAgICAgIGxvZ0dyb3VwLFxuICAgIH0pO1xuXG4gICAgbG9nLmRlYnVnKGBQbHVnaW5Mb29rdXAgaW5pdGlhbGl6ZWQgZm9yICR7cHJvcHMub3JnYW5pemF0aW9ufS8ke3Byb3BzLnByb2plY3R9YCk7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgdXAgYW5kIHJlc29sdmVzIHBsdWdpbiBjb25maWd1cmF0aW9uIHVzaW5nIGVpdGhlciBhIHNpbXBsZSBuYW1lIG9yIGZ1bGwgUGx1Z2luT3B0aW9ucyBvYmplY3RcbiAgICogRHVyaW5nIHN5bnRoZXNpcywgaWYgdGhlIHZhbHVlIGlzIHVucmVzb2x2ZWQgKHRva2VuKSwgcmV0dXJucyBmYWxsYmFjayBwbHVnaW5cbiAgICogRHVyaW5nIGRlcGxveW1lbnQsIGF0dGVtcHRzIHRvIHBhcnNlIHRoZSBhY3R1YWwgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGN1c3RvbSByZXNvdXJjZVxuICAgKiBAcGFyYW0gcGx1Z2luIC0gUGx1Z2luIG5hbWUgKHN0cmluZykgb3IgY29tcGxldGUgUGx1Z2luT3B0aW9ucyBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBzdGVwS2V5IC0gVGhlIHN0ZXAncyBsYWJlbCAoYHBsdWdpblN0ZXBMYWJlbGA6IGBzeW50aGAgb3JcbiAgICogICBgPHN0YWdlPi88YWxpYXMgPz8gbmFtZT5gKS4gVGhlIGRlcGxveS10aW1lIGxvb2t1cCByZXBvcnRzIGl0cyB3YXJuaW5nc1xuICAgKiAgIGFnYWluc3QgaXQsIHNvIGl0IG11c3QgbWF0Y2ggdGhlIHN0ZXAgbWFuaWZlc3QncyBhbmQgdGhlIHNlY3VyaXR5IHZpZXcncyBrZXkuXG4gICAqIEByZXR1cm5zIFJlc29sdmVkIFBsdWdpbiBvYmplY3Qgb3IgZmFsbGJhY2sgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgcGx1Z2luKHBsdWdpbjogc3RyaW5nIHwgUGx1Z2luT3B0aW9ucywgc3RlcEtleT86IHN0cmluZyk6IFBsdWdpbiB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLm5vcm1hbGl6ZShwbHVnaW4pO1xuXG4gICAgLy8gUHJlLXJlc29sdmVkIGJ5IGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoYCBmcm9tIHRoZSBwbGF0Zm9ybSBBUEkuXG4gICAgLy8gU2tpcCB0aGUgY3VzdG9tIHJlc291cmNlIGVudGlyZWx5IOKAlCB3ZSBhbHJlYWR5IGtub3cgdGhlIHBsdWdpbidzXG4gICAgLy8gbmFtZSwgdmVyc2lvbiwgY29tbWFuZHMsIGVudiwgZXRjLiBhdCBzeW50aCB0aW1lLCBzbyB0aGUgcmVzdWx0aW5nIENGTlxuICAgIC8vIHRlbXBsYXRlIGNhbiBzaGlwIHdpdGggdGhlIHJlYWwgQ29kZUJ1aWxkIGltYWdlIGJha2VkIGluLlxuICAgIGNvbnN0IGNhY2hlS2V5ID0gcHJvcHMuYWxpYXMgfHwgcHJvcHMubmFtZTtcbiAgICBjb25zdCBwcmVSZXNvbHZlZCA9IHRoaXMuX3Jlc29sdmVkUGx1Z2lucz8uW2NhY2hlS2V5XSBhcyAoUGx1Z2luICYgeyBwdWJsaXNoZXI/OiBzdHJpbmcgfCBudWxsIH0pIHwgdW5kZWZpbmVkO1xuICAgIC8vIFRoZSBtYXAgaXMga2V5ZWQgYnkgQUxJQVMsIHNvIGNoZWNrIGl0IGFjdHVhbGx5IGhvbGRzIFRISVMgcGx1Z2luLiBUd29cbiAgICAvLyBzdGVwcyBzaGFyaW5nIGFuIGFsaWFzIGFjcm9zcyBkaWZmZXJlbnQgcGx1Z2lucyB3b3VsZCBvdGhlcndpc2UgZ2V0IHRoZVxuICAgIC8vIGZpcnN0IG9uZSdzIHJlY29yZCBiYWNrIOKAlCB0aGUgc2Vjb25kIHN0ZXAgc2lsZW50bHkgcnVubmluZyB0aGUgd3JvbmdcbiAgICAvLyBpbWFnZSBhbmQgY29tbWFuZHMuIFRoZSBDTEkgcmVmdXNlcyBzdWNoIGEgcGlwZWxpbmUgdG9vOyB0aGlzIGNvdmVycyBhbnkgb3RoZXJcbiAgICAvLyBjYWxsZXIgdGhhdCBzdXBwbGllcyBgcmVzb2x2ZWRQbHVnaW5zYC5cbiAgICAvLyBDb21wYXJlIGFnYWluc3QgdGhlIG5hbWUgdGhlIGxvb2t1cCBhY3R1YWxseSBUQVJHRVRFRDogYW4gZXhwbGljaXRcbiAgICAvLyBgZmlsdGVyLm5hbWVgIG92ZXJyaWRlcyB0aGUgcmVmJ3MgYG5hbWVgIGJ5IGRlc2lnbiwgYW5kIHRoYXQgaXMgbm90IGFcbiAgICAvLyBjb2xsaXNpb24uXG4gICAgY29uc3QgdGFyZ2V0TmFtZSA9IChwcm9wcy5maWx0ZXIgYXMgeyBuYW1lPzogc3RyaW5nIH0gfCB1bmRlZmluZWQpPy5uYW1lID8/IHByb3BzLm5hbWU7XG4gICAgaWYgKHByZVJlc29sdmVkICYmIHByZVJlc29sdmVkLm5hbWUgIT09IHRhcmdldE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFBsdWdpbiBhbGlhcyBcIiR7Y2FjaGVLZXl9XCIgcmVzb2x2ZXMgdG8gXCIke3ByZVJlc29sdmVkLm5hbWV9XCIsIG5vdCBcIiR7dGFyZ2V0TmFtZX1cIi4gYFxuICAgICAgICArICdFYWNoIGFsaWFzIG11c3QgbmFtZSBleGFjdGx5IG9uZSBwbHVnaW4uJyxcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIEEgcXVhbGlmaWVkIHJlZmVyZW5jZSBtdXN0IGhhdmUgcmVzb2x2ZWQgdG8gVEhBVCBwdWJsaXNoZXIncyBsaXN0aW5nXG4gICAgLy8gKGFuIHVucXVhbGlmaWVkIG9uZSBtYXkgcmVzb2x2ZSB0byB0aGUgb3JnJ3Mgb3duIHBsdWdpbiBvciB0aGUgT2ZmaWNpYWxcbiAgICAvLyBsaXN0aW5nKS5cbiAgICBpZiAocHJlUmVzb2x2ZWQgJiYgcHJvcHMucHVibGlzaGVyICYmIHByZVJlc29sdmVkLnB1Ymxpc2hlciAhPT0gcHJvcHMucHVibGlzaGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBQbHVnaW4gYWxpYXMgXCIke2NhY2hlS2V5fVwiIHJlc29sdmVzIHRvICR7cHJlUmVzb2x2ZWQucHVibGlzaGVyID8gYCR7cHJlUmVzb2x2ZWQucHVibGlzaGVyfS9gIDogJ3lvdXIgb3JnYW5pemF0aW9uXFwncyAnfSR7cHJlUmVzb2x2ZWQubmFtZX0sIGBcbiAgICAgICAgKyBgbm90ICR7cHJvcHMucHVibGlzaGVyfS8ke3RhcmdldE5hbWV9LiBFYWNoIGFsaWFzIG11c3QgbmFtZSBleGFjdGx5IG9uZSBwbHVnaW4uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwcmVSZXNvbHZlZCkge1xuICAgICAgbG9nLmRlYnVnKGBQbHVnaW4gXCIke3Byb3BzLm5hbWV9XCIgcHJlLXJlc29sdmVkIChhbGlhcz0ke2NhY2hlS2V5fSkg4oCUIHNraXBwaW5nIGN1c3RvbSByZXNvdXJjZWApO1xuICAgICAgcmV0dXJuIHByZVJlc29sdmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMuY3JlYXRlQ3VzdG9tUmVzb3VyY2UocHJvcHMsIHN0ZXBLZXkpO1xuICAgIGNvbnN0IGVuY29kZWQgPSBjdXN0b20uZ2V0QXR0U3RyaW5nKCdSZXN1bHRWYWx1ZScpO1xuXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChlbmNvZGVkKSkge1xuICAgICAgbG9nLmRlYnVnKGBQbHVnaW4gXCIke3Byb3BzLm5hbWV9XCIgdmFsdWUgaXMgdW5yZXNvbHZlZCAodG9rZW4pIGR1cmluZyBzeW50aGVzaXMg4oCUIHVzaW5nIGZhbGxiYWNrLiBUaGUgYWN0dWFsIHBsdWdpbiB3aWxsIGJlIHJlc29sdmVkIGF0IGRlcGxveW1lbnQgdGltZS5gKTtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBCdWZmZXIuZnJvbShlbmNvZGVkLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNvZGVkKTtcblxuICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fCAhZGF0YS5uYW1lIHx8ICFBcnJheS5pc0FycmF5KGRhdGEuY29tbWFuZHMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwbHVnaW4gcmVzcG9uc2U6IG1pc3NpbmcgcmVxdWlyZWQgZmllbGRzIChuYW1lLCBjb21tYW5kcyknKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGEgYXMgUGx1Z2luO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1zZyA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgcGx1Z2luIFwiJHtwcm9wcy5uYW1lfVwiIGRhdGE6ICR7ZXJyb3JNc2d9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIExhbWJkYSBmdW5jdGlvbiB0aGF0IHNlcnZlcyBhcyB0aGUgZXZlbnQgaGFuZGxlciBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlci5cbiAgICpcbiAgICogSldUIHRva2VuIGlzIHN0b3JlZCBpbiBhIHByZS1leGlzdGluZyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGF0XG4gICAqIGB7U0VDUkVUU19QQVRIX1BSRUZJWH0ve29yZ0lkfS9wbGF0Zm9ybWAuIFRoZSBMYW1iZGEgcmVzb2x2ZXMgdGhlXG4gICAqIHNlY3JldCBieSBuYW1lIGF0IHJ1bnRpbWUgdXNpbmcgYENvcmVDb25zdGFudHMuU0VDUkVUU19QQVRIX1BSRUZJWGAuXG4gICAqXG4gICAqIENyZWF0ZSB0aGUgc2VjcmV0IGJlZm9yZSBkZXBsb3lpbmcgd2l0aDpcbiAgICogICBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiA8cmVnaW9uPlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFGdW5jdGlvbigpOiBGdW5jdGlvbiB7XG4gICAgaWYgKCF0aGlzLl9vcmdJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcmdJZCBpcyByZXF1aXJlZCBmb3IgUGx1Z2luTG9va3VwIOKAlCBuZWVkZWQgdG8gcmVzb2x2ZSB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBzZWNyZXQnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aCh0aGlzLl9vcmdJZCwgJ3BsYXRmb3JtJyk7XG4gICAgY29uc3QgY2FCdW5kbGUgPSBwbGF0Zm9ybUNhQnVuZGxlKCk7XG5cbiAgICAvLyBQUkVCVUlMVCBhdCByZWxlYXNlIChzZWUgYC5wcm9qZW5yYy50c2AsIHBpcGVsaW5lLWNvcmUgcG9zdC1jb21waWxlKSwgbm90XG4gICAgLy8gYnVpbHQgaGVyZS5cbiAgICAvL1xuICAgIC8vIFRoaXMgd2FzIGEgYE5vZGVqc0Z1bmN0aW9uYCwgd2hpY2ggYnVuZGxlcyB3aXRoIGVzYnVpbGQgZHVyaW5nIHN5bnRoIG9uXG4gICAgLy8gd2hpY2hldmVyIG1hY2hpbmUgcnVucyB0aGUgZGVwbG95IGFuZCB0aGVyZWZvcmUgcmVxdWlyZXMgYVxuICAgIC8vIGBkZXBzTG9ja0ZpbGVQYXRoYC4gVGhlIHN0dWIgbG9jayB0aGF0IHNhdGlzZmllZCBpdCB3YXMgbmFtZWRcbiAgICAvLyBgcG5wbS1sb2NrLnlhbWxgLCBhbmQgYHBucG0gcGFja2Agc3RyaXBzIGZpbGVzIGJ5IHRoYXQgbmFtZSDigJQgc28gbm9cbiAgICAvLyBwdWJsaXNoZWQgY29weSBvZiB0aGUgQ0xJIGV2ZXIgaGFkIGl0IGFuZCBldmVyeSBkZXBsb3kgZGllZCBhdCBzeW50aC5cbiAgICAvL1xuICAgIC8vIFNoaXBwaW5nIHRoZSBidW5kbGUgaW5zdGVhZCBjb3N0cyBub3RoaW5nIHRoYXQgd2FzIGJlaW5nIHVzZWQ6IHRoZVxuICAgIC8vIGJ1bmRsaW5nIG9wdGlvbnMgd2VyZSBhbGwgc3RhdGljLCBzbyBlYWNoIG1hY2hpbmUgd2FzIHJlYnVpbGRpbmcgYVxuICAgIC8vIGJ5dGUtaWRlbnRpY2FsIGFydGlmYWN0LiBJdCBhbHNvIHRha2VzIGVzYnVpbGQgb2ZmIHRoZSBkZXBsb3kgcGF0aFxuICAgIC8vIGVudGlyZWx5LCB3aGljaCBpcyB3aGF0IHRoZSBDb2RlQnVpbGQgYm9vdHN0cmFwIGltYWdlIHdhcyBjYXJyeWluZyBpdCBmb3IuXG4gICAgY29uc3QgZm4gPSBuZXcgRnVuY3Rpb24odGhpcywgdGhpcy5fdW5pcXVlSWQuZ2VuZXJhdGUoJ29uZXZlbnQ6aGFuZGxlcicpLCB7XG4gICAgICBydW50aW1lOiB0aGlzLl9ydW50aW1lLFxuICAgICAgdGltZW91dDogdGhpcy5fdGltZW91dCxcbiAgICAgIG1lbW9yeVNpemU6IHRoaXMuX21lbW9yeVNpemUsXG4gICAgICBhcmNoaXRlY3R1cmU6IHRoaXMuX2FyY2hpdGVjdHVyZSxcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oTU9EVUxFX0RJUiwgJy8uLi9oYW5kbGVycy9idW5kbGUnKSksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiB0aGlzLl9yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgUExBVEZPUk1fU0VDUkVUX05BTUU6IHNlY3JldE5hbWUsXG4gICAgICAgIC8vIFBMQVRGT1JNX1RMU19WRVJJRlk9ZmFsc2U6IGEgZGV2IHBsYXRmb3JtIG9uIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUuXG4gICAgICAgIC4uLighcGxhdGZvcm1UbHNWZXJpZnkoKSAmJiB7XG4gICAgICAgICAgTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRDogJzAnLFxuICAgICAgICB9KSxcbiAgICAgICAgLy8gUHJpdmF0ZS1DQSBwbGF0Zm9ybTogdmVyaWZ5IGFnYWluc3QgdGhlIENBIGluc3RlYWQgKGNvcmUvcGxhdGZvcm0tdGxzLnRzKS5cbiAgICAgICAgLi4uKGNhQnVuZGxlICYmIHsgW1BMQVRGT1JNX0NBX0JVTkRMRV9FTlZdOiBjYUJ1bmRsZSB9KSxcbiAgICAgICAgLy8gVGhlIGxvb2t1cCByZXBvcnRzIGl0cyB3YXJuaW5ncyBhZ2FpbnN0IHRoaXMgcGlwZWxpbmUgKGNvbnRyYWN0IEMxKS5cbiAgICAgICAgLi4uKHRoaXMuX3BpcGVsaW5lSWQgJiYgeyBQSVBFTElORV9JRDogdGhpcy5fcGlwZWxpbmVJZCB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCB0aGUgTGFtYmRhIHBlcm1pc3Npb24gdG8gcmVhZCB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBzZWNyZXQuXG4gICAgLy8gVGhlIHdpbGRjYXJkIHN1ZmZpeCBoYW5kbGVzIHRoZSA2LWNoYXIgcmFuZG9tIElEIHRoYXQgU2VjcmV0cyBNYW5hZ2VyIGFwcGVuZHMuXG4gICAgZm4uYWRkVG9Sb2xlUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJ10sXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoqOio6c2VjcmV0OiR7c2VjcmV0TmFtZX0tKmBdLFxuICAgIH0pKTtcblxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgZGVmYXVsdCBwbHVnaW4gZmlsdGVyLlxuICAgKiBBY2Nlc3MgY29udHJvbCAob3JnSWQgc2NvcGluZywgcHVibGljL3ByaXZhdGUgdmlzaWJpbGl0eSkgaXMgaGFuZGxlZCBieVxuICAgKiB0aGUgcGxhdGZvcm0ncyBhY2Nlc3MgY29udHJvbCBxdWVyeSBidWlsZGVyIGJhc2VkIG9uIHRoZSBKV1QncyBvcmdhbml6YXRpb25JZC5cbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplKHBsdWdpbjogc3RyaW5nIHwgUGx1Z2luT3B0aW9ucyk6IFBsdWdpbk9wdGlvbnMge1xuICAgIGNvbnN0IHJlZjogUGx1Z2luT3B0aW9ucyA9IHR5cGVvZiBwbHVnaW4gPT09ICdzdHJpbmcnID8geyBuYW1lOiBwbHVnaW4gfSA6IHBsdWdpbjtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcmVmLm5hbWUsXG4gICAgICAuLi4ocmVmLnB1Ymxpc2hlciA/IHsgcHVibGlzaGVyOiByZWYucHVibGlzaGVyIH0gOiB7fSksXG4gICAgICAvLyBUaGUgcmVzb2x2ZXIgY2FjaGUga2V5OiB0aGUgZXhwbGljaXQgYWxpYXMsIGVsc2UgYFs8cHVibGlzaGVyPi1dPG5hbWU+LWFsaWFzYC5cbiAgICAgIGFsaWFzOiBwbHVnaW5BcnRpZmFjdEFsaWFzKHJlZiksXG4gICAgICAvLyBUaGUgc2FtZSBmaWx0ZXIgdGhlIENMSSBwcmUtcmVzb2x2ZXIgYW5kIHRoZSBwaXBlbGluZSBzZXJ2aWNlJ3NcbiAgICAgIC8vIGNvbnRyYWN0IGNoZWNrIHNlbmQgKGBwbHVnaW5Mb29rdXBGaWx0ZXJgKTogbmFtZSArIHB1Ymxpc2hlciwgdGhlblxuICAgICAgLy8gdGhlIHJlZmVyZW5jZSdzIG93biBmaWx0ZXIsIGVsc2UgdGhlIGRlZmF1bHQgdmVyc2lvbi5cbiAgICAgIGZpbHRlcjogcGx1Z2luTG9va3VwRmlsdGVyKHsgbmFtZTogcmVmLm5hbWUsIHB1Ymxpc2hlcjogcmVmLnB1Ymxpc2hlciwgZmlsdGVyOiByZWYuZmlsdGVyIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIH0pIGFzIFBsdWdpbkZpbHRlcixcbiAgICAgIG1ldGFkYXRhOiByZWYubWV0YWRhdGEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ3VzdG9tUmVzb3VyY2UgaW5zdGFuY2UgdGhhdCB0cmlnZ2VycyBwbHVnaW4gbG9va3VwIGR1cmluZyBkZXBsb3ltZW50XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUN1c3RvbVJlc291cmNlKHByb3BzOiBQbHVnaW5PcHRpb25zLCBzdGVwS2V5Pzogc3RyaW5nKTogQ3VzdG9tUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlc291cmNlSWQgPSB0aGlzLl91bmlxdWVJZC5nZW5lcmF0ZShwcm9wcy5hbGlhcyB8fCBwcm9wcy5uYW1lKTtcblxuICAgIHJldHVybiBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgcmVzb3VyY2VJZCwge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLl9wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OlBsdWdpbkxvb2t1cCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGJhc2VVUkw6IHRoaXMuX3BsYXRmb3JtVXJsLFxuICAgICAgICBwbHVnaW5GaWx0ZXI6IHByb3BzLmZpbHRlcixcbiAgICAgICAgLi4uKHN0ZXBLZXkgPyB7IHN0ZXBLZXkgfSA6IHt9KSxcbiAgICAgIH0gYXMgSW5wdXRQcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBCYXNlIHBsdWdpbiBzaGFwZSB3aXRoIG5vLW9wIGRlZmF1bHRzIGZvciBmaWVsZHMgQ0RLIGRvZXNuJ3QgdXNlLiAqL1xuICBwcml2YXRlIHN0YXRpYyBiYXNlUGx1Z2luKCk6IFBsdWdpbiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IFBMQUNFSE9MREVSX1BMVUdJTl9JRCxcbiAgICAgIG9yZ0lkOiBTWVNURU1fT1JHX0lELFxuICAgICAgY3JlYXRlZEJ5OiAnc3lzdGVtJyxcbiAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgdXBkYXRlZEJ5OiAnc3lzdGVtJyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgbmFtZTogJ2ZhbGxiYWNrJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBudWxsLFxuICAgICAga2V5d29yZHM6IFtdLFxuICAgICAgY2F0ZWdvcnk6ICd1bmtub3duJyxcbiAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICBtZXRhZGF0YToge30sXG4gICAgICBwbHVnaW5UeXBlOiAnQ29kZUJ1aWxkU3RlcCcsXG4gICAgICBjb21wdXRlVHlwZTogJ1NNQUxMJyxcbiAgICAgIHRpbWVvdXQ6IG51bGwsXG4gICAgICBmYWlsdXJlQmVoYXZpb3I6ICdmYWlsJyxcbiAgICAgIHNlY3JldHM6IFtdLFxuICAgICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogJ2Nkay5vdXQnLFxuICAgICAgZW52OiB7fSxcbiAgICAgIGJ1aWxkQXJnczoge30sXG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtdLFxuICAgICAgY29tbWFuZHM6IFtdLFxuICAgICAgZG9ja2VyZmlsZTogbnVsbCxcbiAgICAgIGJ1aWxkVHlwZTogJ21ldGFkYXRhX29ubHknLFxuICAgICAgaW1hZ2VEaWdlc3Q6IG51bGwsXG4gICAgICBpbWFnZVNvdXJjZTogbnVsbCxcbiAgICAgIG93bmVySWQ6IG51bGwsXG4gICAgICBvd25lclR5cGU6IG51bGwsXG4gICAgICBsaWZlY3ljbGU6ICdwcm9kdWN0aW9uJyxcbiAgICAgIGNyaXRpY2FsaXR5OiBudWxsLFxuICAgICAgbGFiZWxzOiB7fSxcbiAgICAgIGxpbmtzOiBbXSxcbiAgICAgIHZpc2liaWxpdHk6ICdwdWJsaWMnLFxuICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgZGVsZXRlZEF0OiBudWxsLFxuICAgICAgZGVsZXRlZEJ5OiBudWxsLFxuICAgICAgcHVyZ2VBZnRlcjogbnVsbCxcbiAgICAgIHF1b3RhUmVzZXRBdDogbnVsbCxcbiAgICAgIHN1bW1hcnk6IG51bGwsXG4gICAgICBkaXNwbGF5TmFtZTogbnVsbCxcbiAgICAgIGRvY3VtZW50YXRpb25Vcmw6IG51bGwsXG4gICAgICBtZXRhZGF0YVNvdXJjZXM6IHt9LFxuICAgICAgcmVxdWlyZWRNZXRhZGF0YTogW10sXG4gICAgICByZXF1aXJlZFZhcnM6IFtdLFxuICAgICAgbWV0YWRhdGFUeXBlczoge30sXG4gICAgICB2YXJzVHlwZXM6IHt9LFxuICAgICAgc21va2VUZXN0OiBudWxsLFxuICAgICAgbmV0d29ya0VncmVzczogW10sXG4gICAgICByZWFkbWVNZDogbnVsbCxcbiAgICAgIHJlYWRtZUh0bWw6IG51bGwsXG4gICAgICBsaWNlbnNlOiBudWxsLFxuICAgICAgY2hhbmdlbG9nOiBudWxsLFxuICAgICAgaG9tZXBhZ2VVcmw6IG51bGwsXG4gICAgICBzb3VyY2VVcmw6IG51bGwsXG4gICAgICBpY29uOiBudWxsLFxuICAgICAgdXBsb2FkZWRJY29uOiBudWxsLFxuICAgICAgdnVsbkNyaXRpY2FsOiBudWxsLFxuICAgICAgdnVsbkhpZ2g6IG51bGwsXG4gICAgICB2dWxuTWVkaXVtOiBudWxsLFxuICAgICAgdnVsbkxvdzogbnVsbCxcbiAgICAgIHZ1bG5Dcml0aWNhbEZpeGFibGU6IG51bGwsXG4gICAgICB2dWxuSGlnaEZpeGFibGU6IG51bGwsXG4gICAgICBzY2FubmVkQXQ6IG51bGwsXG4gICAgICBzY2FuU3VtbWFyeTogbnVsbCxcbiAgICAgIHNjYW5GbGFnZ2VkQXQ6IG51bGwsXG4gICAgICBzY2FuRmxhZzogbnVsbCxcbiAgICAgIHJ1bkFzUm9vdDogbnVsbCxcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICAgIGZyb3plbkF0OiBudWxsLFxuICAgICAgeWFua2VkQXQ6IG51bGwsXG4gICAgICB5YW5rUmVhc29uOiBudWxsLFxuICAgICAgZGVwcmVjYXRlZEF0OiBudWxsLFxuICAgICAgZGVwcmVjYXRpb25NZXNzYWdlOiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRmFsbGJhY2sgZm9yIGEgcGx1Z2luIHdob3NlIGxvb2t1cCByZXR1cm5lZCBubyByZWNvcmQgKG5vdCBpbiB0aGUgcGxhdGZvcm1cbiAgICogY2F0YWxvZyBmb3IgdGhpcyBvcmcpIGFuZCBzbyBjb3VsZCBub3QgYmUgcHJlLXJlc29sdmVkIGF0IHN5bnRoLlxuICAgKlxuICAgKiBUaGlzIHN0ZXAgRkFJTFMgdGhlIGJ1aWxkIChleGl0IDEpIG9uIHB1cnBvc2UuIFRoZSBwcmV2aW91cyBiZWhhdmlvdXIg4oCUXG4gICAqIGBlY2hvIFwi4oCmXCIgJiYgZXhpdCAwYCDigJQgd2FzIGEgZmFsc2UgcG9zaXRpdmU6IGFuIHVucmVzb2x2ZWQgc2VjdXJpdHkvcXVhbGl0eVxuICAgKiBzdGVwIChkZXBlbmRlbmN5LWNoZWNrLCBzZW1ncmVwLCBzcG90YnVncywg4oCmKSByZXBvcnRlZCB0aGUgc3RhZ2UgZ3JlZW4gd2hpbGVcbiAgICogcnVubmluZyBub3RoaW5nLCBnaXZpbmcgZmFsc2UgYXNzdXJhbmNlIHRoYXQgc2NhbnMvYnVpbGRzIGhhZCBwYXNzZWQuIEFcbiAgICogcGx1Z2luIHN0ZXAgdGhhdCBjYW4ndCBydW4gaXRzIHBsdWdpbiBtdXN0IGdvIHJlZCwgY29uc2lzdGVudCB3aXRoXG4gICAqIGBiYXNlUGx1Z2luKCkuZmFpbHVyZUJlaGF2aW9yID09PSAnZmFpbCdgLiBUaGUgbWVzc2FnZSBpcyBhY3Rpb25hYmxlIHNvIHRoZVxuICAgKiBvcGVyYXRvciBrbm93cyB0aGUgY2F0YWxvZyBpcyBlbXB0eS9pbmNvbXBsZXRlLCBub3QgdGhhdCB0aGUgdG9vbCBjcmFzaGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBmYWxsYmFjaygpOiBQbHVnaW4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5QbHVnaW5Mb29rdXAuYmFzZVBsdWdpbigpLFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgJ2VjaG8gXCJFUlJPUjogcGx1Z2luIGxvb2t1cCByZXR1cm5lZCBubyByZWNvcmQg4oCUIHRoaXMgcGx1Z2luIGlzIG5vdCBpbiB0aGUgcGxhdGZvcm0gY2F0YWxvZyBmb3IgdGhpcyBvcmcsIHNvIHRoZSBzdGVwIGNhbm5vdCBydW4uXCIgPiYyJyxcbiAgICAgICAgJ2VjaG8gXCJUaGlzIHN0ZXAgZmFpbHMgaW5zdGVhZCBvZiBwYXNzaW5nIGFzIGEgbm8tb3AgKGFuIHVucmVzb2x2ZWQgcGx1Z2luIHJlcG9ydGluZyBzdWNjZXNzIHdvdWxkIGJlIGEgZmFsc2UtcG9zaXRpdmUgZ3JlZW4pLlwiID4mMicsXG4gICAgICAgICdlY2hvIFwiRml4OiBsb2FkIHRoZSBwbHVnaW4gaW50byB0aGUgcGxhdGZvcm0gKGRlcGxveS9iaW4vbG9hZC1wbHVnaW5zLnNoKSwgdGhlbiByZS1ydW4gdGhlIHBpcGVsaW5lLlwiID4mMicsXG4gICAgICAgICdleGl0IDEnLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bnRoIHBsdWdpbiB3aXRoIHBpcGVsaW5lLW1hbmFnZXIgY29tbWFuZHMuIENvbGQtc3RhcnQgYm9vdHN0cmFwIGZvclxuICAgKiB0aGUgc3ludGggc3RlcCB3aGVuIHByZS1yZXNvbHV0aW9uIGJ5IGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoL2RlcGxveWBcbiAgICogZGlkbid0IHBvcHVsYXRlIGByZXNvbHZlZFBsdWdpbnNgIGZvciB0aGUgc3ludGggcGx1Z2luLiBSdW5zIG9uIHRoZVxuICAgKiByZXNvbHZlZCB0b29sY2hhaW4gcmVsZWFzZSdzIGBwaXBlbGluZS1ib290c3RyYXBgIGltYWdlICh0aGUgcGlwZWxpbmUnc1xuICAgKiBgcmVzb2x2ZWRCb290c3RyYXBgLCBwaW5uZWQgYnkgZGlnZXN0KSBhbmQgc2VsZi1ib290c3RyYXBzIHRoZSByZWFsIHN5bnRoXG4gICAqIHZpYSBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aCAtLWlkICR7UElQRUxJTkVfSUR9YC5cbiAgICpcbiAgICogTm8gYGluc3RhbGxDb21tYW5kc2A6IHRoZSBib290c3RyYXAgaW1hZ2UgaGFzIHRoZSByZWxlYXNlJ3MgcGlubmVkXG4gICAqIGBwaXBlbGluZS1tYW5hZ2VyYCBiYWtlZCBpbiDigJQgdGhhdCBpcyB3aGF0IHRoZSBpbWFnZSBpcyBmb3IuXG4gICAqXG4gICAqIFRMUyBpcyBWRVJJRklFRCBieSBkZWZhdWx0OiB0aGlzIGxvb2t1cCByZXR1cm5zIHRoZSBpbWFnZSBkaWdlc3RzIGV2ZXJ5XG4gICAqIHN0ZXAgaXMgcGlubmVkIHRvLCBzbyBhbiB1bnZlcmlmaWVkIGNvbm5lY3Rpb24gd291bGQgbGV0IGEgTUlUTSBjaG9vc2Ugd2hhdFxuICAgKiBydW5zLiBBIHByaXZhdGUtQ0EgcGxhdGZvcm0gaXMgdHJ1c3RlZCB0aHJvdWdoIGBQTEFURk9STV9DQV9CVU5ETEVgLCB3aGljaFxuICAgKiB0aGUgc3ludGggcHJvcGFnYXRlcyBpbnRvIGV2ZXJ5IENvZGVCdWlsZCBzdGVwLiBPbmx5IGFuIGV4cGxpY2l0XG4gICAqIGBQTEFURk9STV9UTFNfVkVSSUZZPWZhbHNlYCBhdCBzeW50aCB0aW1lIChhIGRldiBwbGF0Zm9ybSBvbiBhIHNlbGYtc2lnbmVkXG4gICAqIGNlcnRpZmljYXRlKSBhZGRzIGAtLW5vLXZlcmlmeS1zc2xgIOKAlCBhbmQgdGhlIENMSSByZWZ1c2VzIHRoYXQgaW5cbiAgICogcHJvZHVjdGlvbi4gU2VlIGNvcmUvcGxhdGZvcm0tdGxzLnRzLlxuICAgKi9cbiAgcHVibGljIGJvb3RzdHJhcCgpOiBQbHVnaW4ge1xuICAgIGNvbnN0IHRsc0ZsYWcgPSBwbGF0Zm9ybVRsc1ZlcmlmeSgpID8gJycgOiAnIC0tbm8tdmVyaWZ5LXNzbCc7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlBsdWdpbkxvb2t1cC5iYXNlUGx1Z2luKCksXG4gICAgICBuYW1lOiAnY2RrLXN5bnRoJyxcbiAgICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6ICdjZGsub3V0JyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgIGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoIC0taWQgXFwke1BJUEVMSU5FX0lEfSAtLXN0b3JlLXRva2VucyAtLXF1aWV0IC0tbm8tbm90aWNlcyR7dGxzRmxhZ31gLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComputeType as CdkComputeType } from 'aws-cdk-lib/aws-codebuild';
|
|
1
|
+
import type { ComputeType as CdkComputeType, IBuildImage } from 'aws-cdk-lib/aws-codebuild';
|
|
2
2
|
import { CodePipeline } from 'aws-cdk-lib/pipelines';
|
|
3
3
|
import { Construct } from 'constructs';
|
|
4
4
|
import { codePipelineStageName } from './deploy-attribution.js';
|
|
@@ -26,6 +26,8 @@ export interface StageBuilderProps {
|
|
|
26
26
|
readonly artifactManager?: ArtifactManager;
|
|
27
27
|
/** Tenant identifier for resolving per-org secrets from AWS Secrets Manager */
|
|
28
28
|
readonly orgId?: string;
|
|
29
|
+
/** The image plugin-less steps run on (the resolved `pipeline-bootstrap`; see `resolveDefaultBuildImage`). */
|
|
30
|
+
readonly defaultBuildImage?: IBuildImage;
|
|
29
31
|
/**
|
|
30
32
|
* Pipeline-level scope used to resolve `{{ pipeline.* }}` template tokens
|
|
31
33
|
* inside plugin specs. Required — passed through to `createCodeBuildStep`
|
|
@@ -76,6 +78,7 @@ export declare class StageBuilder {
|
|
|
76
78
|
private readonly defaultComputeType?;
|
|
77
79
|
private readonly artifactManager?;
|
|
78
80
|
private readonly orgId?;
|
|
81
|
+
private readonly defaultBuildImage?;
|
|
79
82
|
private readonly pipelineScope;
|
|
80
83
|
private readonly stepManifest?;
|
|
81
84
|
private readonly runtimeVulnCheck?;
|
|
@@ -46,6 +46,7 @@ export class StageBuilder {
|
|
|
46
46
|
defaultComputeType;
|
|
47
47
|
artifactManager;
|
|
48
48
|
orgId;
|
|
49
|
+
defaultBuildImage;
|
|
49
50
|
pipelineScope;
|
|
50
51
|
stepManifest;
|
|
51
52
|
runtimeVulnCheck;
|
|
@@ -57,6 +58,7 @@ export class StageBuilder {
|
|
|
57
58
|
this.defaultComputeType = props.defaultComputeType;
|
|
58
59
|
this.artifactManager = props.artifactManager;
|
|
59
60
|
this.orgId = props.orgId;
|
|
61
|
+
this.defaultBuildImage = props.defaultBuildImage;
|
|
60
62
|
this.pipelineScope = props.pipelineScope;
|
|
61
63
|
this.stepManifest = props.stepManifest;
|
|
62
64
|
this.runtimeVulnCheck = props.runtimeVulnCheck;
|
|
@@ -156,6 +158,7 @@ export class StageBuilder {
|
|
|
156
158
|
// A scan/security-category plugin can never be downgraded from 'fail' — see resolveFailureBehavior.
|
|
157
159
|
failureBehavior: resolveFailureBehavior(plugin.category, stepConfig.failureBehavior ?? plugin.failureBehavior),
|
|
158
160
|
orgId: this.orgId,
|
|
161
|
+
defaultBuildImage: this.defaultBuildImage,
|
|
159
162
|
pipelineScope: this.pipelineScope,
|
|
160
163
|
});
|
|
161
164
|
this.stepManifest?.record(step, plugin, stepKey);
|
|
@@ -173,4 +176,4 @@ export class StageBuilder {
|
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
}
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYnVpbGRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3N0YWdlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUUsT0FBTyxFQUF3QixNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDhCQUE4QixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBOEMzSixtRkFBbUY7QUFDbkYsZ0ZBQWdGO0FBQ2hGLHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztBQUVqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNOLEtBQUssQ0FBWTtJQUNqQixZQUFZLENBQWU7SUFDM0IsUUFBUSxDQUFXO0lBQ25CLGNBQWMsQ0FBZTtJQUM3QixrQkFBa0IsQ0FBa0I7SUFDcEMsZUFBZSxDQUFtQjtJQUNsQyxLQUFLLENBQVU7SUFDZixhQUFhLENBQTBCO0lBQ3ZDLFlBQVksQ0FBd0I7SUFD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LFVBQVUsQ0FBQyxtQkFBbUI7WUFDbkQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWTtZQUNyQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUc7WUFDbkIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTO1lBQzFELG9HQUFvRztZQUNwRyxlQUFlLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDOUcsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNsQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxRQUFzQixFQUFFLE1BQXNCO1FBQ3RELEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IENvbXB1dGVUeXBlIGFzIENka0NvbXB1dGVUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgeyBDb2RlUGlwZWxpbmUgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBjb2RlUGlwZWxpbmVTdGFnZU5hbWUgfSBmcm9tICcuL2RlcGxveS1hdHRyaWJ1dGlvbi5qcyc7XG5pbXBvcnQgeyBQbHVnaW5Mb29rdXAgfSBmcm9tICcuL3BsdWdpbi1sb29rdXAuanMnO1xuaW1wb3J0IHsgY3JlYXRlUnVudGltZVZ1bG5DaGVja1N0ZXAgfSBmcm9tICcuL3J1bnRpbWUtdnVsbi1jaGVjay1zdGVwLmpzJztcbmltcG9ydCB0eXBlIHsgU3RlcE1hbmlmZXN0UmVjb3JkZXIgfSBmcm9tICcuL3N0ZXAtbWFuaWZlc3QtcmVjb3JkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU9wdGlvbnMgfSBmcm9tICcuL3N0ZXAtdHlwZXMuanMnO1xuaW1wb3J0IHsgdHlwZSBBcnRpZmFjdE1hbmFnZXIgfSBmcm9tICcuLi9jb3JlL2FydGlmYWN0LW1hbmFnZXIuanMnO1xuaW1wb3J0IHsgVW5pcXVlSWQgfSBmcm9tICcuLi9jb3JlL2lkLWdlbmVyYXRvci5qcyc7XG5pbXBvcnQgeyBtZXJnZSwgcmVzb2x2ZUZhaWx1cmVCZWhhdmlvciB9IGZyb20gJy4uL2NvcmUvbWV0YWRhdGEtaGVscGVycy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2RlQnVpbGRTdGVwIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS1oZWxwZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgeyBhc3NlcnRQbHVnaW5Db250cmFjdCwgY29udHJhY3RTY29wZUZyb21UZW1wbGF0ZVNjb3BlLCBwbHVnaW5BcnRpZmFjdEFsaWFzLCBwbHVnaW5TdGVwSWRBbGlhcywgcGx1Z2luU3RlcExhYmVsIH0gZnJvbSAnLi4vY29yZS9wbHVnaW4tY29udHJhY3QuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW50aW1lQ2hlY2tTdGVwIH0gZnJvbSAnLi4vY29yZS9ydW50aW1lLWNoZWNrLmpzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBTdGFnZUJ1aWxkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZUJ1aWxkZXJQcm9wcyB7XG4gIC8qKiBDREsgY29uc3RydWN0IHNjb3BlIGZvciBjcmVhdGluZyBjaGlsZCBjb25zdHJ1Y3RzICovXG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgLyoqIFBsdWdpbiBsb29rdXAgc2VydmljZSBmb3IgcmVzb2x2aW5nIHBsdWdpbiByZWZlcmVuY2VzIHRvIENESyBjb25zdHJ1Y3RzICovXG4gIHJlYWRvbmx5IHBsdWdpbkxvb2t1cDogUGx1Z2luTG9va3VwO1xuXG4gIC8qKiBVbmlxdWUgSUQgZ2VuZXJhdG9yIGZvciBjcmVhdGluZyBkZXRlcm1pbmlzdGljIGNvbnN0cnVjdCBJRHMgKi9cbiAgcmVhZG9ubHkgdW5pcXVlSWQ6IFVuaXF1ZUlkO1xuXG4gIC8qKiBHbG9iYWwgbWV0YWRhdGEgaW5oZXJpdGVkIGJ5IGFsbCBzdGFnZSBzdGVwcyAqL1xuICByZWFkb25seSBnbG9iYWxNZXRhZGF0YTogTWV0YURhdGFUeXBlO1xuXG4gIC8qKiBEZWZhdWx0IENvZGVCdWlsZCBjb21wdXRlIHR5cGUgZm9yIHN0ZXBzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBvbmUgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbXB1dGVUeXBlPzogQ2RrQ29tcHV0ZVR5cGU7XG5cbiAgLyoqIEFydGlmYWN0IG1hbmFnZXIgZm9yIHJlc29sdmluZyBpbnB1dCBhcnRpZmFjdCBrZXlzIHRvIEZpbGVTZXRzICovXG4gIHJlYWRvbmx5IGFydGlmYWN0TWFuYWdlcj86IEFydGlmYWN0TWFuYWdlcjtcblxuICAvKiogVGVuYW50IGlkZW50aWZpZXIgZm9yIHJlc29sdmluZyBwZXItb3JnIHNlY3JldHMgZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQaXBlbGluZS1sZXZlbCBzY29wZSB1c2VkIHRvIHJlc29sdmUgYHt7IHBpcGVsaW5lLiogfX1gIHRlbXBsYXRlIHRva2Vuc1xuICAgKiBpbnNpZGUgcGx1Z2luIHNwZWNzLiBSZXF1aXJlZCDigJQgcGFzc2VkIHRocm91Z2ggdG8gYGNyZWF0ZUNvZGVCdWlsZFN0ZXBgXG4gICAqIG9uIGV2ZXJ5IHN0ZXAuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZVNjb3BlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKiogUmVjb3JkcyBlYWNoIHN0ZXAncyByZXNvbHZlZCBwbHVnaW4gZm9yIHRoZSBzdGVwIG1hbmlmZXN0LiAqL1xuICByZWFkb25seSBzdGVwTWFuaWZlc3Q/OiBTdGVwTWFuaWZlc3RSZWNvcmRlcjtcblxuICAvKipcbiAgICogU2V0IHdoZW4gdGhlIHBpcGVsaW5lIG9wdGVkIGluIHRvIHRoZSBydW4tdGltZSB2dWxuZXJhYmlsaXR5IGNoZWNrXG4gICAqIChgUlVOVElNRV9WVUxOX0NIRUNLX0tFWWApOiBlYWNoIHN0YWdlIHRoZW4gZ2V0cyBhIHJlcG9ydC1vbmx5IHZlcmlmeSBzdGVwLlxuICAgKiBDYXJyaWVzIHRoZSBvcmcgcGxhdGZvcm0gc2VjcmV0IHRoZSB2ZXJpZnkgc3RlcCBhdXRoZW50aWNhdGVzIHdpdGguXG4gICAqL1xuICByZWFkb25seSBydW50aW1lVnVsbkNoZWNrPzogeyByZWFkb25seSBwbGF0Zm9ybVNlY3JldE5hbWU6IHN0cmluZyB9O1xufVxuXG4vLyBgY29kZVBpcGVsaW5lU3RhZ2VOYW1lYCBtb3ZlZCB0byB0aGUgQ0RLLWZyZWUgYGRlcGxveS1hdHRyaWJ1dGlvbi50c2Agc28gdGhlIEFQSVxuLy8gY2FuIGRlcml2ZSBgcGIuZGVwbG95c2Agd2l0aG91dCBwdWxsaW5nIGF3cy1jZGstbGliOyByZS1leHBvcnRlZCBoZXJlIGJlY2F1c2Vcbi8vIHN0YWdlIGNvbnN0cnVjdGlvbiBpcyB3aGVyZSBjYWxsZXJzIGV4cGVjdCB0byBmaW5kIGl0LlxuZXhwb3J0IHsgY29kZVBpcGVsaW5lU3RhZ2VOYW1lIH07XG5cbi8qKlxuICogQnVpbGRzIGFuZCBhZGRzIHBpcGVsaW5lIHN0YWdlcyAod2F2ZXMpIHRvIGEgQ29kZVBpcGVsaW5lLlxuICpcbiAqIEVhY2ggc3RhZ2UgaXMgcmVzb2x2ZWQgZnJvbSBoaWdoLWxldmVsIGNvbmZpZ3VyYXRpb24gKHBsdWdpbiBuYW1lcylcbiAqIGludG8gQ0RLIENvZGVCdWlsZCBzdGVwcyB2aWEgUGx1Z2luTG9va3VwLCB0aGVuIGFkZGVkIGFzIGEgd2F2ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc3RhZ2VCdWlsZGVyID0gbmV3IFN0YWdlQnVpbGRlcih7XG4gKiAgIHNjb3BlOiB0aGlzLFxuICogICBwbHVnaW5Mb29rdXAsXG4gKiAgIHVuaXF1ZUlkLFxuICogICBnbG9iYWxNZXRhZGF0YTogbWVyZ2VkTWV0YWRhdGEsXG4gKiB9KTtcbiAqIHN0YWdlQnVpbGRlci5hZGRTdGFnZShwaXBlbGluZSwge1xuICogICBzdGFnZU5hbWU6ICdJbnRlZ3JhdGlvbiBUZXN0cycsXG4gKiAgIGFsaWFzOiAnaW50ZWdyYXRpb24nLFxuICogICBzdGVwczogW1xuICogICAgIHsgcGx1Z2luOiB7IG5hbWU6ICdqZXN0LWludGVncmF0aW9uJyB9IH0sXG4gKiAgICAgeyBwbHVnaW46IHsgbmFtZTogJ2UyZS10ZXN0cycsIGFsaWFzOiAnY3lwcmVzcycgfSB9LFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWdlQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2NvcGU6IENvbnN0cnVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5Mb29rdXA6IFBsdWdpbkxvb2t1cDtcbiAgcHJpdmF0ZSByZWFkb25seSB1bmlxdWVJZDogVW5pcXVlSWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsTWV0YWRhdGE6IE1ldGFEYXRhVHlwZTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0Q29tcHV0ZVR5cGU/OiBDZGtDb21wdXRlVHlwZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcnRpZmFjdE1hbmFnZXI/OiBBcnRpZmFjdE1hbmFnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGlwZWxpbmVTY29wZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RlcE1hbmlmZXN0PzogU3RlcE1hbmlmZXN0UmVjb3JkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZVZ1bG5DaGVjaz86IHsgcmVhZG9ubHkgcGxhdGZvcm1TZWNyZXROYW1lOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU3RhZ2VCdWlsZGVyUHJvcHMpIHtcbiAgICB0aGlzLnNjb3BlID0gcHJvcHMuc2NvcGU7XG4gICAgdGhpcy5wbHVnaW5Mb29rdXAgPSBwcm9wcy5wbHVnaW5Mb29rdXA7XG4gICAgdGhpcy51bmlxdWVJZCA9IHByb3BzLnVuaXF1ZUlkO1xuICAgIHRoaXMuZ2xvYmFsTWV0YWRhdGEgPSBwcm9wcy5nbG9iYWxNZXRhZGF0YTtcbiAgICB0aGlzLmRlZmF1bHRDb21wdXRlVHlwZSA9IHByb3BzLmRlZmF1bHRDb21wdXRlVHlwZTtcbiAgICB0aGlzLmFydGlmYWN0TWFuYWdlciA9IHByb3BzLmFydGlmYWN0TWFuYWdlcjtcbiAgICB0aGlzLm9yZ0lkID0gcHJvcHMub3JnSWQ7XG4gICAgdGhpcy5waXBlbGluZVNjb3BlID0gcHJvcHMucGlwZWxpbmVTY29wZTtcbiAgICB0aGlzLnN0ZXBNYW5pZmVzdCA9IHByb3BzLnN0ZXBNYW5pZmVzdDtcbiAgICB0aGlzLnJ1bnRpbWVWdWxuQ2hlY2sgPSBwcm9wcy5ydW50aW1lVnVsbkNoZWNrO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgc3RhZ2UncyBwbHVnaW4tYmFzZWQgc3RlcCBjb25maWdzIGludG8gQ29kZUJ1aWxkIHN0ZXBzXG4gICAqIGFuZCBhZGRzIHRoZW0gYXMgYSB3YXZlIHRvIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIGFkZFN0YWdlKHBpcGVsaW5lOiBDb2RlUGlwZWxpbmUsIHN0YWdlOiBTdGFnZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFnZUFsaWFzID0gY29kZVBpcGVsaW5lU3RhZ2VOYW1lKHN0YWdlKTtcbiAgICBjb25zdCBjaGVja2VkOiBSdW50aW1lQ2hlY2tTdGVwW10gPSBbXTtcblxuICAgIGNvbnN0IHByZVN0ZXBzID0gc3RhZ2Uuc3RlcHNcbiAgICAgIC5maWx0ZXIocyA9PiAocy5wb3NpdGlvbiA/PyAncHJlJykgPT09ICdwcmUnKVxuICAgICAgLm1hcChzID0+IHRoaXMucmVzb2x2ZVN0ZXAocywgc3RhZ2Uuc3RhZ2VOYW1lLCBzdGFnZUFsaWFzLCBjaGVja2VkKSk7XG4gICAgY29uc3QgcG9zdFN0ZXBzID0gc3RhZ2Uuc3RlcHNcbiAgICAgIC5maWx0ZXIocyA9PiBzLnBvc2l0aW9uID09PSAncG9zdCcpXG4gICAgICAubWFwKHMgPT4gdGhpcy5yZXNvbHZlU3RlcChzLCBzdGFnZS5zdGFnZU5hbWUsIHN0YWdlQWxpYXMsIGNoZWNrZWQpKTtcblxuICAgIC8vIFJ1bi10aW1lIGNoZWNrOiBvbmUgdmVyaWZ5IHN0ZXAgcGVyIHN0YWdlLCBydW5uaW5nIEJFU0lERSB0aGUgc3RhZ2Unc1xuICAgIC8vIHN0ZXBzIOKAlCBpdCByZXBvcnRzIHRoZSBpbWFnZXMnIGN1cnJlbnQgdnVsbmVyYWJpbGl0eSBzdGF0ZSBpbnRvIHRoZSBidWlsZFxuICAgIC8vIGxvZyBhbmQgbmV2ZXIgZ2F0ZXMgdGhlbS4gQSBzdGFnZSB3aXRoIG5vIGltYWdlLWJhY2tlZCBzdGVwIGhhcyBub3RoaW5nXG4gICAgLy8gdG8gYXNrIGFib3V0LlxuICAgIGlmICh0aGlzLnJ1bnRpbWVWdWxuQ2hlY2sgJiYgY2hlY2tlZC5sZW5ndGggPiAwKSB7XG4gICAgICBwcmVTdGVwcy51bnNoaWZ0KGNyZWF0ZVJ1bnRpbWVWdWxuQ2hlY2tTdGVwKHtcbiAgICAgICAgaWQ6IHRoaXMudW5pcXVlSWQuZ2VuZXJhdGUoYHN0YWdlOiR7c3RhZ2VBbGlhc306cnVudGltZS12dWxuLWNoZWNrYCksXG4gICAgICAgIHN0ZXBzOiBjaGVja2VkLFxuICAgICAgICBwbGF0Zm9ybVNlY3JldE5hbWU6IHRoaXMucnVudGltZVZ1bG5DaGVjay5wbGF0Zm9ybVNlY3JldE5hbWUsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgcGlwZWxpbmUuYWRkV2F2ZShzdGFnZUFsaWFzLCB7XG4gICAgICAuLi4ocHJlU3RlcHMubGVuZ3RoID4gMCAmJiB7IHByZTogcHJlU3RlcHMgfSksXG4gICAgICAuLi4ocG9zdFN0ZXBzLmxlbmd0aCA+IDAgJiYgeyBwb3N0OiBwb3N0U3RlcHMgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVTdGVwKFxuICAgIHN0ZXBDb25maWc6IFN0YWdlT3B0aW9uc1snc3RlcHMnXVtudW1iZXJdLFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlQWxpYXM6IHN0cmluZyxcbiAgICBjaGVja2VkOiBSdW50aW1lQ2hlY2tTdGVwW10sXG4gICkge1xuICAgIC8vIFRoZSBzdGVwIGxhYmVsIGV2ZXJ5IHBlci1zdGVwIHJlY29yZCBrZXlzIG9uIChsb29rdXAgY29udGV4dCwgbWFuaWZlc3QsXG4gICAgLy8gcnVudGltZSBjaGVjaykg4oCUIHdoYXQgdGhlIHBsYXRmb3JtJ3Mgc2VjdXJpdHkgdmlldyBqb2lucyB0aGVtIGJ5LlxuICAgIGNvbnN0IHN0ZXBLZXkgPSBwbHVnaW5TdGVwTGFiZWwoc3RhZ2VOYW1lLCBzdGVwQ29uZmlnLnBsdWdpbik7XG4gICAgY29uc3QgcGx1Z2luID0gdGhpcy5wbHVnaW5Mb29rdXAucGx1Z2luKHN0ZXBDb25maWcucGx1Z2luLCBzdGVwS2V5KTtcbiAgICAvLyBDb250cmFjdDogdGhlIHBpcGVsaW5lIG11c3Qgc3VwcGx5IHRoZSBwbHVnaW4ncyByZXF1aXJlZFxuICAgIC8vIG1ldGFkYXRhL3ZhcnMgd2l0aCB0aGUgZGVjbGFyZWQgdHlwZXMuIFRoZSBBUEkgcmVmdXNlcyBzdWNoIGEgcGlwZWxpbmVcbiAgICAvLyBhdCBjcmVhdGUvdXBkYXRlOyB0aGlzIHN0b3BzIG9uZSB0aGF0IHJlYWNoZWQgc3ludGggYW5vdGhlciB3YXkuXG4gICAgYXNzZXJ0UGx1Z2luQ29udHJhY3QocGx1Z2luLCBjb250cmFjdFNjb3BlRnJvbVRlbXBsYXRlU2NvcGUodGhpcy5waXBlbGluZVNjb3BlKSxcbiAgICAgIGAke3N0YWdlTmFtZX0vJHtwbHVnaW5TdGVwSWRBbGlhcyhzdGVwQ29uZmlnLnBsdWdpbil9YCk7XG4gICAgLy8gUGVyLXN0ZXAgcGx1Z2luIGNvbmZpZyBsaXZlcyBvbiB0aGUgcGx1Z2luIHJlZmVyZW5jZSAoYHBsdWdpbi5tZXRhZGF0YWAg4oCUXG4gICAgLy8gZS5nLiBKQVZBX1ZFUlNJT04vS09UTElOX1ZFUlNJT04vY29tcHV0ZXR5cGUgb3ZlcnJpZGVzKS4gcGx1Z2luTG9va3VwLnBsdWdpbigpXG4gICAgLy8gcmV0dXJucyB0aGUgcmVzb2x2ZWQgQ0FUQUxPRyBwbHVnaW4gYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgbWV0YWRhdGEgaW4gdGhlXG4gICAgLy8gcHJlLXJlc29sdmVkIHBhdGgsIHNvIG1lcmdlIGl0IGhlcmUgdG9vIOKAlCBvdGhlcndpc2UgcGVyLXN0ZXAgb3ZlcnJpZGVzIGFyZVxuICAgIC8vIHNpbGVudGx5IGlnbm9yZWQgYW5kIHRoZSBidWlsZCBmYWxscyBiYWNrIHRvIHBsdWdpbiBkZWZhdWx0cy5cbiAgICAvLyBPcmRlciAobGFzdCB3aW5zKTogZ2xvYmFsIDwgcGx1Z2luLXJlZiBtZXRhZGF0YSA8IHN0ZXAtbGV2ZWwgbWV0YWRhdGEuXG4gICAgY29uc3Qgc3RlcE1ldGFkYXRhID0gbWVyZ2UodGhpcy5nbG9iYWxNZXRhZGF0YSwgc3RlcENvbmZpZy5wbHVnaW4ubWV0YWRhdGEgPz8ge30sIHN0ZXBDb25maWcubWV0YWRhdGEgPz8ge30pO1xuICAgIC8vIFRXTyBkaWZmZXJlbnQgaWRlbnRpdGllcywgZGVsaWJlcmF0ZWx5IGtlcHQgYXBhcnQ6XG4gICAgLy8gIC0gYHN0ZXBJZEFsaWFzYCBuYW1lcyB0aGUgQ0RLIGNvbnN0cnVjdC4gRm9yIGFuIHVucXVhbGlmaWVkIHJlZmVyZW5jZVxuICAgIC8vICAgIGl0IHN0YXlzIGFzIGl0IGFsd2F5cyB3YXMgKGBhbGlhcyA/PyBuYW1lYCksIGJlY2F1c2UgY2hhbmdpbmcgaXRcbiAgICAvLyAgICByZW5hbWVzIHRoZSBDb2RlQnVpbGQgcHJvamVjdCdzIGxvZ2ljYWwgaWQgYW5kIENsb3VkRm9ybWF0aW9uIHdvdWxkXG4gICAgLy8gICAgUkVQTEFDRSBldmVyeSB1bmFsaWFzZWQgc3RlcCdzIHByb2plY3Qgb24gdGhlIG5leHQgZGVwbG95IOKAlCBmb3Igbm9cbiAgICAvLyAgICBiZW5lZml0LiBBIGBwdWJsaXNoZXJgIHJlZmVyZW5jZSBhZGRzIHRoZSBwdWJsaXNoZXIuXG4gICAgLy8gIC0gYHBsdWdpbkFsaWFzYCBpcyB0aGUgQVJUSUZBQ1QtS0VZIHNlZ21lbnQgYW5kIG11c3QgZm9sbG93IHRoZSBvbmUgcnVsZVxuICAgIC8vICAgIGV2ZXJ5IGtleSBjb25zdW1lciB1c2VzIChgcGx1Z2luQXJ0aWZhY3RBbGlhc2ApLiBSZXVzaW5nIHRoZSBjb25zdHJ1Y3RcbiAgICAvLyAgICB2YWx1ZSB3b3VsZCByZWdpc3RlciBg4oCmOm5vZGVqcy1idWlsZDpkaXN0YCBmb3IgYW4gdW5hbGlhc2VkIHN0ZXAgd2hpbGVcbiAgICAvLyAgICB0aGUgVUkgYXNrcyBmb3IgYOKApjpub2RlanMtYnVpbGQtYWxpYXM6ZGlzdGAsIGFuZCBzeW50aCB3b3VsZCBmYWlsLlxuICAgIGNvbnN0IHN0ZXBJZEFsaWFzID0gcGx1Z2luU3RlcElkQWxpYXMoc3RlcENvbmZpZy5wbHVnaW4pO1xuICAgIGNvbnN0IHBsdWdpbkFsaWFzID0gcGx1Z2luQXJ0aWZhY3RBbGlhcyhzdGVwQ29uZmlnLnBsdWdpbik7XG5cbiAgICBpZiAoc3RlcENvbmZpZy5pbnB1dEFydGlmYWN0ICYmICF0aGlzLmFydGlmYWN0TWFuYWdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU3RlcCBcIiR7c3RlcElkQWxpYXN9XCIgcmVxdWlyZXMgaW5wdXRBcnRpZmFjdCBidXQgbm8gYXJ0aWZhY3RNYW5hZ2VyIGlzIGNvbmZpZ3VyZWQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChzdGVwQ29uZmlnLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz8ubGVuZ3RoICYmICF0aGlzLmFydGlmYWN0TWFuYWdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU3RlcCBcIiR7c3RlcElkQWxpYXN9XCIgcmVxdWlyZXMgYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzIGJ1dCBubyBhcnRpZmFjdE1hbmFnZXIgaXMgY29uZmlndXJlZC5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dCA9IHN0ZXBDb25maWcuaW5wdXRBcnRpZmFjdCAmJiB0aGlzLmFydGlmYWN0TWFuYWdlclxuICAgICAgPyB0aGlzLmFydGlmYWN0TWFuYWdlci5nZXRPdXRwdXQoc3RlcENvbmZpZy5pbnB1dEFydGlmYWN0KVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsSW5wdXRzID0gc3RlcENvbmZpZy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/Lmxlbmd0aCAmJiB0aGlzLmFydGlmYWN0TWFuYWdlclxuICAgICAgPyBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIHN0ZXBDb25maWcuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzLm1hcCgoeyBhcnRpZmFjdCwgZGlyZWN0b3J5IH0pID0+IFtcbiAgICAgICAgICBkaXJlY3RvcnkgfHwgYXJ0aWZhY3Qub3V0cHV0RGlyZWN0b3J5LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RNYW5hZ2VyIS5nZXRPdXRwdXQoYXJ0aWZhY3QpLFxuICAgICAgICBdKSxcbiAgICAgIClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc3RlcCA9IGNyZWF0ZUNvZGVCdWlsZFN0ZXAoe1xuICAgICAgaWQ6IHRoaXMudW5pcXVlSWQuZ2VuZXJhdGUoYHN0YWdlOiR7c3RhZ2VBbGlhc306JHtzdGVwSWRBbGlhc31gKSxcbiAgICAgIHVuaXF1ZUlkOiB0aGlzLnVuaXF1ZUlkLFxuICAgICAgcGx1Z2luLFxuICAgICAgbWV0YWRhdGE6IHN0ZXBNZXRhZGF0YSxcbiAgICAgIG5ldHdvcms6IHN0ZXBDb25maWcubmV0d29yayxcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlLFxuICAgICAgZGVmYXVsdENvbXB1dGVUeXBlOiB0aGlzLmRlZmF1bHRDb21wdXRlVHlwZSxcbiAgICAgIGlucHV0LFxuICAgICAgYWRkaXRpb25hbElucHV0cyxcbiAgICAgIGFydGlmYWN0TWFuYWdlcjogdGhpcy5hcnRpZmFjdE1hbmFnZXIsXG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGFnZUFsaWFzLFxuICAgICAgcGx1Z2luQWxpYXMsXG4gICAgICBwcmVJbnN0YWxsQ29tbWFuZHM6IHN0ZXBDb25maWcucHJlSW5zdGFsbENvbW1hbmRzLFxuICAgICAgcG9zdEluc3RhbGxDb21tYW5kczogc3RlcENvbmZpZy5wb3N0SW5zdGFsbENvbW1hbmRzLFxuICAgICAgcHJlQ29tbWFuZHM6IHN0ZXBDb25maWcucHJlQ29tbWFuZHMsXG4gICAgICBwb3N0Q29tbWFuZHM6IHN0ZXBDb25maWcucG9zdENvbW1hbmRzLFxuICAgICAgZW52OiBzdGVwQ29uZmlnLmVudixcbiAgICAgIHRpbWVvdXQ6IHN0ZXBDb25maWcudGltZW91dCA/PyBwbHVnaW4udGltZW91dCA/PyB1bmRlZmluZWQsXG4gICAgICAvLyBBIHNjYW4vc2VjdXJpdHktY2F0ZWdvcnkgcGx1Z2luIGNhbiBuZXZlciBiZSBkb3duZ3JhZGVkIGZyb20gJ2ZhaWwnIOKAlCBzZWUgcmVzb2x2ZUZhaWx1cmVCZWhhdmlvci5cbiAgICAgIGZhaWx1cmVCZWhhdmlvcjogcmVzb2x2ZUZhaWx1cmVCZWhhdmlvcihwbHVnaW4uY2F0ZWdvcnksIHN0ZXBDb25maWcuZmFpbHVyZUJlaGF2aW9yID8/IHBsdWdpbi5mYWlsdXJlQmVoYXZpb3IpLFxuICAgICAgb3JnSWQ6IHRoaXMub3JnSWQsXG4gICAgICBwaXBlbGluZVNjb3BlOiB0aGlzLnBpcGVsaW5lU2NvcGUsXG4gICAgfSk7XG4gICAgdGhpcy5zdGVwTWFuaWZlc3Q/LnJlY29yZChzdGVwLCBwbHVnaW4sIHN0ZXBLZXkpO1xuICAgIGlmIChwbHVnaW4uaW1hZ2VEaWdlc3QgJiYgcGx1Z2luLmJ1aWxkVHlwZSAhPT0gJ21ldGFkYXRhX29ubHknKSB7XG4gICAgICBjaGVja2VkLnB1c2goeyBzdGVwS2V5LCBpbWFnZURpZ2VzdDogcGx1Z2luLmltYWdlRGlnZXN0IH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbmQgYWRkcyBtdWx0aXBsZSBzdGFnZXMgYXMgd2F2ZXMgdG8gdGhlIHBpcGVsaW5lLCBpbiBvcmRlci5cbiAgICovXG4gIGFkZFN0YWdlcyhwaXBlbGluZTogQ29kZVBpcGVsaW5lLCBzdGFnZXM6IFN0YWdlT3B0aW9uc1tdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIHRoaXMuYWRkU3RhZ2UocGlwZWxpbmUsIHN0YWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYnVpbGRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3N0YWdlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUUsT0FBTyxFQUF3QixNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDhCQUE4QixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBaUQzSixtRkFBbUY7QUFDbkYsZ0ZBQWdGO0FBQ2hGLHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztBQUVqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNOLEtBQUssQ0FBWTtJQUNqQixZQUFZLENBQWU7SUFDM0IsUUFBUSxDQUFXO0lBQ25CLGNBQWMsQ0FBZTtJQUM3QixrQkFBa0IsQ0FBa0I7SUFDcEMsZUFBZSxDQUFtQjtJQUNsQyxLQUFLLENBQVU7SUFDZixpQkFBaUIsQ0FBZTtJQUNoQyxhQUFhLENBQTBCO0lB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cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSBhcyBDZGtDb21wdXRlVHlwZSwgSUJ1aWxkSW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IENvZGVQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGNvZGVQaXBlbGluZVN0YWdlTmFtZSB9IGZyb20gJy4vZGVwbG95LWF0dHJpYnV0aW9uLmpzJztcbmltcG9ydCB7IFBsdWdpbkxvb2t1cCB9IGZyb20gJy4vcGx1Z2luLWxvb2t1cC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVSdW50aW1lVnVsbkNoZWNrU3RlcCB9IGZyb20gJy4vcnVudGltZS12dWxuLWNoZWNrLXN0ZXAuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGVwTWFuaWZlc3RSZWNvcmRlciB9IGZyb20gJy4vc3RlcC1tYW5pZmVzdC1yZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWdlT3B0aW9ucyB9IGZyb20gJy4vc3RlcC10eXBlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIEFydGlmYWN0TWFuYWdlciB9IGZyb20gJy4uL2NvcmUvYXJ0aWZhY3QtbWFuYWdlci5qcyc7XG5pbXBvcnQgeyBVbmlxdWVJZCB9IGZyb20gJy4uL2NvcmUvaWQtZ2VuZXJhdG9yLmpzJztcbmltcG9ydCB7IG1lcmdlLCByZXNvbHZlRmFpbHVyZUJlaGF2aW9yIH0gZnJvbSAnLi4vY29yZS9tZXRhZGF0YS1oZWxwZXJzLmpzJztcbmltcG9ydCB7IGNyZWF0ZUNvZGVCdWlsZFN0ZXAgfSBmcm9tICcuLi9jb3JlL3BpcGVsaW5lLWhlbHBlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhRGF0YVR5cGUgfSBmcm9tICcuLi9jb3JlL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB7IGFzc2VydFBsdWdpbkNvbnRyYWN0LCBjb250cmFjdFNjb3BlRnJvbVRlbXBsYXRlU2NvcGUsIHBsdWdpbkFydGlmYWN0QWxpYXMsIHBsdWdpblN0ZXBJZEFsaWFzLCBwbHVnaW5TdGVwTGFiZWwgfSBmcm9tICcuLi9jb3JlL3BsdWdpbi1jb250cmFjdC5qcyc7XG5pbXBvcnQgdHlwZSB7IFJ1bnRpbWVDaGVja1N0ZXAgfSBmcm9tICcuLi9jb3JlL3J1bnRpbWUtY2hlY2suanMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFN0YWdlQnVpbGRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQnVpbGRlclByb3BzIHtcbiAgLyoqIENESyBjb25zdHJ1Y3Qgc2NvcGUgZm9yIGNyZWF0aW5nIGNoaWxkIGNvbnN0cnVjdHMgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IENvbnN0cnVjdDtcblxuICAvKiogUGx1Z2luIGxvb2t1cCBzZXJ2aWNlIGZvciByZXNvbHZpbmcgcGx1Z2luIHJlZmVyZW5jZXMgdG8gQ0RLIGNvbnN0cnVjdHMgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTG9va3VwOiBQbHVnaW5Mb29rdXA7XG5cbiAgLyoqIFVuaXF1ZSBJRCBnZW5lcmF0b3IgZm9yIGNyZWF0aW5nIGRldGVybWluaXN0aWMgY29uc3RydWN0IElEcyAqL1xuICByZWFkb25seSB1bmlxdWVJZDogVW5pcXVlSWQ7XG5cbiAgLyoqIEdsb2JhbCBtZXRhZGF0YSBpbmhlcml0ZWQgYnkgYWxsIHN0YWdlIHN0ZXBzICovXG4gIHJlYWRvbmx5IGdsb2JhbE1ldGFkYXRhOiBNZXRhRGF0YVR5cGU7XG5cbiAgLyoqIERlZmF1bHQgQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSBmb3Igc3RlcHMgdGhhdCBkb24ndCBzcGVjaWZ5IG9uZSAqL1xuICByZWFkb25seSBkZWZhdWx0Q29tcHV0ZVR5cGU/OiBDZGtDb21wdXRlVHlwZTtcblxuICAvKiogQXJ0aWZhY3QgbWFuYWdlciBmb3IgcmVzb2x2aW5nIGlucHV0IGFydGlmYWN0IGtleXMgdG8gRmlsZVNldHMgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RNYW5hZ2VyPzogQXJ0aWZhY3RNYW5hZ2VyO1xuXG4gIC8qKiBUZW5hbnQgaWRlbnRpZmllciBmb3IgcmVzb2x2aW5nIHBlci1vcmcgc2VjcmV0cyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBpbWFnZSBwbHVnaW4tbGVzcyBzdGVwcyBydW4gb24gKHRoZSByZXNvbHZlZCBgcGlwZWxpbmUtYm9vdHN0cmFwYDsgc2VlIGByZXNvbHZlRGVmYXVsdEJ1aWxkSW1hZ2VgKS4gKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJ1aWxkSW1hZ2U/OiBJQnVpbGRJbWFnZTtcblxuICAvKipcbiAgICogUGlwZWxpbmUtbGV2ZWwgc2NvcGUgdXNlZCB0byByZXNvbHZlIGB7eyBwaXBlbGluZS4qIH19YCB0ZW1wbGF0ZSB0b2tlbnNcbiAgICogaW5zaWRlIHBsdWdpbiBzcGVjcy4gUmVxdWlyZWQg4oCUIHBhc3NlZCB0aHJvdWdoIHRvIGBjcmVhdGVDb2RlQnVpbGRTdGVwYFxuICAgKiBvbiBldmVyeSBzdGVwLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVTY29wZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqIFJlY29yZHMgZWFjaCBzdGVwJ3MgcmVzb2x2ZWQgcGx1Z2luIGZvciB0aGUgc3RlcCBtYW5pZmVzdC4gKi9cbiAgcmVhZG9ubHkgc3RlcE1hbmlmZXN0PzogU3RlcE1hbmlmZXN0UmVjb3JkZXI7XG5cbiAgLyoqXG4gICAqIFNldCB3aGVuIHRoZSBwaXBlbGluZSBvcHRlZCBpbiB0byB0aGUgcnVuLXRpbWUgdnVsbmVyYWJpbGl0eSBjaGVja1xuICAgKiAoYFJVTlRJTUVfVlVMTl9DSEVDS19LRVlgKTogZWFjaCBzdGFnZSB0aGVuIGdldHMgYSByZXBvcnQtb25seSB2ZXJpZnkgc3RlcC5cbiAgICogQ2FycmllcyB0aGUgb3JnIHBsYXRmb3JtIHNlY3JldCB0aGUgdmVyaWZ5IHN0ZXAgYXV0aGVudGljYXRlcyB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZVZ1bG5DaGVjaz86IHsgcmVhZG9ubHkgcGxhdGZvcm1TZWNyZXROYW1lOiBzdHJpbmcgfTtcbn1cblxuLy8gYGNvZGVQaXBlbGluZVN0YWdlTmFtZWAgbW92ZWQgdG8gdGhlIENESy1mcmVlIGBkZXBsb3ktYXR0cmlidXRpb24udHNgIHNvIHRoZSBBUElcbi8vIGNhbiBkZXJpdmUgYHBiLmRlcGxveXNgIHdpdGhvdXQgcHVsbGluZyBhd3MtY2RrLWxpYjsgcmUtZXhwb3J0ZWQgaGVyZSBiZWNhdXNlXG4vLyBzdGFnZSBjb25zdHJ1Y3Rpb24gaXMgd2hlcmUgY2FsbGVycyBleHBlY3QgdG8gZmluZCBpdC5cbmV4cG9ydCB7IGNvZGVQaXBlbGluZVN0YWdlTmFtZSB9O1xuXG4vKipcbiAqIEJ1aWxkcyBhbmQgYWRkcyBwaXBlbGluZSBzdGFnZXMgKHdhdmVzKSB0byBhIENvZGVQaXBlbGluZS5cbiAqXG4gKiBFYWNoIHN0YWdlIGlzIHJlc29sdmVkIGZyb20gaGlnaC1sZXZlbCBjb25maWd1cmF0aW9uIChwbHVnaW4gbmFtZXMpXG4gKiBpbnRvIENESyBDb2RlQnVpbGQgc3RlcHMgdmlhIFBsdWdpbkxvb2t1cCwgdGhlbiBhZGRlZCBhcyBhIHdhdmUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHN0YWdlQnVpbGRlciA9IG5ldyBTdGFnZUJ1aWxkZXIoe1xuICogICBzY29wZTogdGhpcyxcbiAqICAgcGx1Z2luTG9va3VwLFxuICogICB1bmlxdWVJZCxcbiAqICAgZ2xvYmFsTWV0YWRhdGE6IG1lcmdlZE1ldGFkYXRhLFxuICogfSk7XG4gKiBzdGFnZUJ1aWxkZXIuYWRkU3RhZ2UocGlwZWxpbmUsIHtcbiAqICAgc3RhZ2VOYW1lOiAnSW50ZWdyYXRpb24gVGVzdHMnLFxuICogICBhbGlhczogJ2ludGVncmF0aW9uJyxcbiAqICAgc3RlcHM6IFtcbiAqICAgICB7IHBsdWdpbjogeyBuYW1lOiAnamVzdC1pbnRlZ3JhdGlvbicgfSB9LFxuICogICAgIHsgcGx1Z2luOiB7IG5hbWU6ICdlMmUtdGVzdHMnLCBhbGlhczogJ2N5cHJlc3MnIH0gfSxcbiAqICAgXSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFnZUJ1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTG9va3VwOiBQbHVnaW5Mb29rdXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5pcXVlSWQ6IFVuaXF1ZUlkO1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbE1ldGFkYXRhOiBNZXRhRGF0YVR5cGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdENvbXB1dGVUeXBlPzogQ2RrQ29tcHV0ZVR5cGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXJ0aWZhY3RNYW5hZ2VyPzogQXJ0aWZhY3RNYW5hZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRCdWlsZEltYWdlPzogSUJ1aWxkSW1hZ2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGlwZWxpbmVTY29wZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RlcE1hbmlmZXN0PzogU3RlcE1hbmlmZXN0UmVjb3JkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZVZ1bG5DaGVjaz86IHsgcmVhZG9ubHkgcGxhdGZvcm1TZWNyZXROYW1lOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU3RhZ2VCdWlsZGVyUHJvcHMpIHtcbiAgICB0aGlzLnNjb3BlID0gcHJvcHMuc2NvcGU7XG4gICAgdGhpcy5wbHVnaW5Mb29rdXAgPSBwcm9wcy5wbHVnaW5Mb29rdXA7XG4gICAgdGhpcy51bmlxdWVJZCA9IHByb3BzLnVuaXF1ZUlkO1xuICAgIHRoaXMuZ2xvYmFsTWV0YWRhdGEgPSBwcm9wcy5nbG9iYWxNZXRhZGF0YTtcbiAgICB0aGlzLmRlZmF1bHRDb21wdXRlVHlwZSA9IHByb3BzLmRlZmF1bHRDb21wdXRlVHlwZTtcbiAgICB0aGlzLmFydGlmYWN0TWFuYWdlciA9IHByb3BzLmFydGlmYWN0TWFuYWdlcjtcbiAgICB0aGlzLm9yZ0lkID0gcHJvcHMub3JnSWQ7XG4gICAgdGhpcy5kZWZhdWx0QnVpbGRJbWFnZSA9IHByb3BzLmRlZmF1bHRCdWlsZEltYWdlO1xuICAgIHRoaXMucGlwZWxpbmVTY29wZSA9IHByb3BzLnBpcGVsaW5lU2NvcGU7XG4gICAgdGhpcy5zdGVwTWFuaWZlc3QgPSBwcm9wcy5zdGVwTWFuaWZlc3Q7XG4gICAgdGhpcy5ydW50aW1lVnVsbkNoZWNrID0gcHJvcHMucnVudGltZVZ1bG5DaGVjaztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIHN0YWdlJ3MgcGx1Z2luLWJhc2VkIHN0ZXAgY29uZmlncyBpbnRvIENvZGVCdWlsZCBzdGVwc1xuICAgKiBhbmQgYWRkcyB0aGVtIGFzIGEgd2F2ZSB0byB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBhZGRTdGFnZShwaXBlbGluZTogQ29kZVBpcGVsaW5lLCBzdGFnZTogU3RhZ2VPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhZ2VBbGlhcyA9IGNvZGVQaXBlbGluZVN0YWdlTmFtZShzdGFnZSk7XG4gICAgY29uc3QgY2hlY2tlZDogUnVudGltZUNoZWNrU3RlcFtdID0gW107XG5cbiAgICBjb25zdCBwcmVTdGVwcyA9IHN0YWdlLnN0ZXBzXG4gICAgICAuZmlsdGVyKHMgPT4gKHMucG9zaXRpb24gPz8gJ3ByZScpID09PSAncHJlJylcbiAgICAgIC5tYXAocyA9PiB0aGlzLnJlc29sdmVTdGVwKHMsIHN0YWdlLnN0YWdlTmFtZSwgc3RhZ2VBbGlhcywgY2hlY2tlZCkpO1xuICAgIGNvbnN0IHBvc3RTdGVwcyA9IHN0YWdlLnN0ZXBzXG4gICAgICAuZmlsdGVyKHMgPT4gcy5wb3NpdGlvbiA9PT0gJ3Bvc3QnKVxuICAgICAgLm1hcChzID0+IHRoaXMucmVzb2x2ZVN0ZXAocywgc3RhZ2Uuc3RhZ2VOYW1lLCBzdGFnZUFsaWFzLCBjaGVja2VkKSk7XG5cbiAgICAvLyBSdW4tdGltZSBjaGVjazogb25lIHZlcmlmeSBzdGVwIHBlciBzdGFnZSwgcnVubmluZyBCRVNJREUgdGhlIHN0YWdlJ3NcbiAgICAvLyBzdGVwcyDigJQgaXQgcmVwb3J0cyB0aGUgaW1hZ2VzJyBjdXJyZW50IHZ1bG5lcmFiaWxpdHkgc3RhdGUgaW50byB0aGUgYnVpbGRcbiAgICAvLyBsb2cgYW5kIG5ldmVyIGdhdGVzIHRoZW0uIEEgc3RhZ2Ugd2l0aCBubyBpbWFnZS1iYWNrZWQgc3RlcCBoYXMgbm90aGluZ1xuICAgIC8vIHRvIGFzayBhYm91dC5cbiAgICBpZiAodGhpcy5ydW50aW1lVnVsbkNoZWNrICYmIGNoZWNrZWQubGVuZ3RoID4gMCkge1xuICAgICAgcHJlU3RlcHMudW5zaGlmdChjcmVhdGVSdW50aW1lVnVsbkNoZWNrU3RlcCh7XG4gICAgICAgIGlkOiB0aGlzLnVuaXF1ZUlkLmdlbmVyYXRlKGBzdGFnZToke3N0YWdlQWxpYXN9OnJ1bnRpbWUtdnVsbi1jaGVja2ApLFxuICAgICAgICBzdGVwczogY2hlY2tlZCxcbiAgICAgICAgcGxhdGZvcm1TZWNyZXROYW1lOiB0aGlzLnJ1bnRpbWVWdWxuQ2hlY2sucGxhdGZvcm1TZWNyZXROYW1lLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHBpcGVsaW5lLmFkZFdhdmUoc3RhZ2VBbGlhcywge1xuICAgICAgLi4uKHByZVN0ZXBzLmxlbmd0aCA+IDAgJiYgeyBwcmU6IHByZVN0ZXBzIH0pLFxuICAgICAgLi4uKHBvc3RTdGVwcy5sZW5ndGggPiAwICYmIHsgcG9zdDogcG9zdFN0ZXBzIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU3RlcChcbiAgICBzdGVwQ29uZmlnOiBTdGFnZU9wdGlvbnNbJ3N0ZXBzJ11bbnVtYmVyXSxcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUFsaWFzOiBzdHJpbmcsXG4gICAgY2hlY2tlZDogUnVudGltZUNoZWNrU3RlcFtdLFxuICApIHtcbiAgICAvLyBUaGUgc3RlcCBsYWJlbCBldmVyeSBwZXItc3RlcCByZWNvcmQga2V5cyBvbiAobG9va3VwIGNvbnRleHQsIG1hbmlmZXN0LFxuICAgIC8vIHJ1bnRpbWUgY2hlY2spIOKAlCB3aGF0IHRoZSBwbGF0Zm9ybSdzIHNlY3VyaXR5IHZpZXcgam9pbnMgdGhlbSBieS5cbiAgICBjb25zdCBzdGVwS2V5ID0gcGx1Z2luU3RlcExhYmVsKHN0YWdlTmFtZSwgc3RlcENvbmZpZy5wbHVnaW4pO1xuICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMucGx1Z2luTG9va3VwLnBsdWdpbihzdGVwQ29uZmlnLnBsdWdpbiwgc3RlcEtleSk7XG4gICAgLy8gQ29udHJhY3Q6IHRoZSBwaXBlbGluZSBtdXN0IHN1cHBseSB0aGUgcGx1Z2luJ3MgcmVxdWlyZWRcbiAgICAvLyBtZXRhZGF0YS92YXJzIHdpdGggdGhlIGRlY2xhcmVkIHR5cGVzLiBUaGUgQVBJIHJlZnVzZXMgc3VjaCBhIHBpcGVsaW5lXG4gICAgLy8gYXQgY3JlYXRlL3VwZGF0ZTsgdGhpcyBzdG9wcyBvbmUgdGhhdCByZWFjaGVkIHN5bnRoIGFub3RoZXIgd2F5LlxuICAgIGFzc2VydFBsdWdpbkNvbnRyYWN0KHBsdWdpbiwgY29udHJhY3RTY29wZUZyb21UZW1wbGF0ZVNjb3BlKHRoaXMucGlwZWxpbmVTY29wZSksXG4gICAgICBgJHtzdGFnZU5hbWV9LyR7cGx1Z2luU3RlcElkQWxpYXMoc3RlcENvbmZpZy5wbHVnaW4pfWApO1xuICAgIC8vIFBlci1zdGVwIHBsdWdpbiBjb25maWcgbGl2ZXMgb24gdGhlIHBsdWdpbiByZWZlcmVuY2UgKGBwbHVnaW4ubWV0YWRhdGFgIOKAlFxuICAgIC8vIGUuZy4gSkFWQV9WRVJTSU9OL0tPVExJTl9WRVJTSU9OL2NvbXB1dGV0eXBlIG92ZXJyaWRlcykuIHBsdWdpbkxvb2t1cC5wbHVnaW4oKVxuICAgIC8vIHJldHVybnMgdGhlIHJlc29sdmVkIENBVEFMT0cgcGx1Z2luIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIG1ldGFkYXRhIGluIHRoZVxuICAgIC8vIHByZS1yZXNvbHZlZCBwYXRoLCBzbyBtZXJnZSBpdCBoZXJlIHRvbyDigJQgb3RoZXJ3aXNlIHBlci1zdGVwIG92ZXJyaWRlcyBhcmVcbiAgICAvLyBzaWxlbnRseSBpZ25vcmVkIGFuZCB0aGUgYnVpbGQgZmFsbHMgYmFjayB0byBwbHVnaW4gZGVmYXVsdHMuXG4gICAgLy8gT3JkZXIgKGxhc3Qgd2lucyk6IGdsb2JhbCA8IHBsdWdpbi1yZWYgbWV0YWRhdGEgPCBzdGVwLWxldmVsIG1ldGFkYXRhLlxuICAgIGNvbnN0IHN0ZXBNZXRhZGF0YSA9IG1lcmdlKHRoaXMuZ2xvYmFsTWV0YWRhdGEsIHN0ZXBDb25maWcucGx1Z2luLm1ldGFkYXRhID8/IHt9LCBzdGVwQ29uZmlnLm1ldGFkYXRhID8/IHt9KTtcbiAgICAvLyBUV08gZGlmZmVyZW50IGlkZW50aXRpZXMsIGRlbGliZXJhdGVseSBrZXB0IGFwYXJ0OlxuICAgIC8vICAtIGBzdGVwSWRBbGlhc2AgbmFtZXMgdGhlIENESyBjb25zdHJ1Y3QuIEZvciBhbiB1bnF1YWxpZmllZCByZWZlcmVuY2VcbiAgICAvLyAgICBpdCBzdGF5cyBhcyBpdCBhbHdheXMgd2FzIChgYWxpYXMgPz8gbmFtZWApLCBiZWNhdXNlIGNoYW5naW5nIGl0XG4gICAgLy8gICAgcmVuYW1lcyB0aGUgQ29kZUJ1aWxkIHByb2plY3QncyBsb2dpY2FsIGlkIGFuZCBDbG91ZEZvcm1hdGlvbiB3b3VsZFxuICAgIC8vICAgIFJFUExBQ0UgZXZlcnkgdW5hbGlhc2VkIHN0ZXAncyBwcm9qZWN0IG9uIHRoZSBuZXh0IGRlcGxveSDigJQgZm9yIG5vXG4gICAgLy8gICAgYmVuZWZpdC4gQSBgcHVibGlzaGVyYCByZWZlcmVuY2UgYWRkcyB0aGUgcHVibGlzaGVyLlxuICAgIC8vICAtIGBwbHVnaW5BbGlhc2AgaXMgdGhlIEFSVElGQUNULUtFWSBzZWdtZW50IGFuZCBtdXN0IGZvbGxvdyB0aGUgb25lIHJ1bGVcbiAgICAvLyAgICBldmVyeSBrZXkgY29uc3VtZXIgdXNlcyAoYHBsdWdpbkFydGlmYWN0QWxpYXNgKS4gUmV1c2luZyB0aGUgY29uc3RydWN0XG4gICAgLy8gICAgdmFsdWUgd291bGQgcmVnaXN0ZXIgYOKApjpub2RlanMtYnVpbGQ6ZGlzdGAgZm9yIGFuIHVuYWxpYXNlZCBzdGVwIHdoaWxlXG4gICAgLy8gICAgdGhlIFVJIGFza3MgZm9yIGDigKY6bm9kZWpzLWJ1aWxkLWFsaWFzOmRpc3RgLCBhbmQgc3ludGggd291bGQgZmFpbC5cbiAgICBjb25zdCBzdGVwSWRBbGlhcyA9IHBsdWdpblN0ZXBJZEFsaWFzKHN0ZXBDb25maWcucGx1Z2luKTtcbiAgICBjb25zdCBwbHVnaW5BbGlhcyA9IHBsdWdpbkFydGlmYWN0QWxpYXMoc3RlcENvbmZpZy5wbHVnaW4pO1xuXG4gICAgaWYgKHN0ZXBDb25maWcuaW5wdXRBcnRpZmFjdCAmJiAhdGhpcy5hcnRpZmFjdE1hbmFnZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFN0ZXAgXCIke3N0ZXBJZEFsaWFzfVwiIHJlcXVpcmVzIGlucHV0QXJ0aWZhY3QgYnV0IG5vIGFydGlmYWN0TWFuYWdlciBpcyBjb25maWd1cmVkLmAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc3RlcENvbmZpZy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/Lmxlbmd0aCAmJiAhdGhpcy5hcnRpZmFjdE1hbmFnZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFN0ZXAgXCIke3N0ZXBJZEFsaWFzfVwiIHJlcXVpcmVzIGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyBidXQgbm8gYXJ0aWZhY3RNYW5hZ2VyIGlzIGNvbmZpZ3VyZWQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQgPSBzdGVwQ29uZmlnLmlucHV0QXJ0aWZhY3QgJiYgdGhpcy5hcnRpZmFjdE1hbmFnZXJcbiAgICAgID8gdGhpcy5hcnRpZmFjdE1hbmFnZXIuZ2V0T3V0cHV0KHN0ZXBDb25maWcuaW5wdXRBcnRpZmFjdClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbElucHV0cyA9IHN0ZXBDb25maWcuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzPy5sZW5ndGggJiYgdGhpcy5hcnRpZmFjdE1hbmFnZXJcbiAgICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBzdGVwQ29uZmlnLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cy5tYXAoKHsgYXJ0aWZhY3QsIGRpcmVjdG9yeSB9KSA9PiBbXG4gICAgICAgICAgZGlyZWN0b3J5IHx8IGFydGlmYWN0Lm91dHB1dERpcmVjdG9yeSxcbiAgICAgICAgICB0aGlzLmFydGlmYWN0TWFuYWdlciEuZ2V0T3V0cHV0KGFydGlmYWN0KSxcbiAgICAgICAgXSksXG4gICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHN0ZXAgPSBjcmVhdGVDb2RlQnVpbGRTdGVwKHtcbiAgICAgIGlkOiB0aGlzLnVuaXF1ZUlkLmdlbmVyYXRlKGBzdGFnZToke3N0YWdlQWxpYXN9OiR7c3RlcElkQWxpYXN9YCksXG4gICAgICB1bmlxdWVJZDogdGhpcy51bmlxdWVJZCxcbiAgICAgIHBsdWdpbixcbiAgICAgIG1ldGFkYXRhOiBzdGVwTWV0YWRhdGEsXG4gICAgICBuZXR3b3JrOiBzdGVwQ29uZmlnLm5ldHdvcmssXG4gICAgICBzY29wZTogdGhpcy5zY29wZSxcbiAgICAgIGRlZmF1bHRDb21wdXRlVHlwZTogdGhpcy5kZWZhdWx0Q29tcHV0ZVR5cGUsXG4gICAgICBpbnB1dCxcbiAgICAgIGFkZGl0aW9uYWxJbnB1dHMsXG4gICAgICBhcnRpZmFjdE1hbmFnZXI6IHRoaXMuYXJ0aWZhY3RNYW5hZ2VyLFxuICAgICAgc3RhZ2VOYW1lLFxuICAgICAgc3RhZ2VBbGlhcyxcbiAgICAgIHBsdWdpbkFsaWFzLFxuICAgICAgcHJlSW5zdGFsbENvbW1hbmRzOiBzdGVwQ29uZmlnLnByZUluc3RhbGxDb21tYW5kcyxcbiAgICAgIHBvc3RJbnN0YWxsQ29tbWFuZHM6IHN0ZXBDb25maWcucG9zdEluc3RhbGxDb21tYW5kcyxcbiAgICAgIHByZUNvbW1hbmRzOiBzdGVwQ29uZmlnLnByZUNvbW1hbmRzLFxuICAgICAgcG9zdENvbW1hbmRzOiBzdGVwQ29uZmlnLnBvc3RDb21tYW5kcyxcbiAgICAgIGVudjogc3RlcENvbmZpZy5lbnYsXG4gICAgICB0aW1lb3V0OiBzdGVwQ29uZmlnLnRpbWVvdXQgPz8gcGx1Z2luLnRpbWVvdXQgPz8gdW5kZWZpbmVkLFxuICAgICAgLy8gQSBzY2FuL3NlY3VyaXR5LWNhdGVnb3J5IHBsdWdpbiBjYW4gbmV2ZXIgYmUgZG93bmdyYWRlZCBmcm9tICdmYWlsJyDigJQgc2VlIHJlc29sdmVGYWlsdXJlQmVoYXZpb3IuXG4gICAgICBmYWlsdXJlQmVoYXZpb3I6IHJlc29sdmVGYWlsdXJlQmVoYXZpb3IocGx1Z2luLmNhdGVnb3J5LCBzdGVwQ29uZmlnLmZhaWx1cmVCZWhhdmlvciA/PyBwbHVnaW4uZmFpbHVyZUJlaGF2aW9yKSxcbiAgICAgIG9yZ0lkOiB0aGlzLm9yZ0lkLFxuICAgICAgZGVmYXVsdEJ1aWxkSW1hZ2U6IHRoaXMuZGVmYXVsdEJ1aWxkSW1hZ2UsXG4gICAgICBwaXBlbGluZVNjb3BlOiB0aGlzLnBpcGVsaW5lU2NvcGUsXG4gICAgfSk7XG4gICAgdGhpcy5zdGVwTWFuaWZlc3Q/LnJlY29yZChzdGVwLCBwbHVnaW4sIHN0ZXBLZXkpO1xuICAgIGlmIChwbHVnaW4uaW1hZ2VEaWdlc3QgJiYgcGx1Z2luLmJ1aWxkVHlwZSAhPT0gJ21ldGFkYXRhX29ubHknKSB7XG4gICAgICBjaGVja2VkLnB1c2goeyBzdGVwS2V5LCBpbWFnZURpZ2VzdDogcGx1Z2luLmltYWdlRGlnZXN0IH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbmQgYWRkcyBtdWx0aXBsZSBzdGFnZXMgYXMgd2F2ZXMgdG8gdGhlIHBpcGVsaW5lLCBpbiBvcmRlci5cbiAgICovXG4gIGFkZFN0YWdlcyhwaXBlbGluZTogQ29kZVBpcGVsaW5lLCBzdGFnZXM6IFN0YWdlT3B0aW9uc1tdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIHRoaXMuYWRkU3RhZ2UocGlwZWxpbmUsIHN0YWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Plugin } from '@pipeline-builder/pipeline-data';
|
|
2
2
|
import type { Pipeline } from 'aws-cdk-lib/aws-codepipeline';
|
|
3
3
|
import type { Step } from 'aws-cdk-lib/pipelines';
|
|
4
|
+
import type { LookupToolchain } from '../core/plugin-lookup-envelope.js';
|
|
4
5
|
import { type StepManifestEntry } from '../core/step-manifest.js';
|
|
5
6
|
/**
|
|
6
7
|
* Collects (step → resolved plugin) pairs while the stages are built, then
|
|
@@ -10,13 +11,21 @@ import { type StepManifestEntry } from '../core/step-manifest.js';
|
|
|
10
11
|
*/
|
|
11
12
|
export declare class StepManifestRecorder {
|
|
12
13
|
private readonly byActionKey;
|
|
14
|
+
private buildImage;
|
|
13
15
|
/** Remember that `step` runs `plugin` under step label `stepKey` (`pluginStepLabel`). Call once per plugin-backed step. */
|
|
14
16
|
record(step: Step, plugin: Plugin, stepKey: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Remember the pipeline's build image: the toolchain release's
|
|
19
|
+
* `pipeline-bootstrap` half (`plugin`) and the release it resolved to
|
|
20
|
+
* (`toolchain`). Emitted as the non-step `build-image` entry — the synth half
|
|
21
|
+
* of the release is already recorded as the synth step.
|
|
22
|
+
*/
|
|
23
|
+
recordBuildImage(plugin: Plugin, toolchain: LookupToolchain): void;
|
|
15
24
|
/**
|
|
16
25
|
* The manifest for the built pipeline. Call after `buildPipeline()`: stage
|
|
17
26
|
* and action names come from `pipeline.stages`, so a stage CDK split for
|
|
18
27
|
* exceeding 50 actions (`<stage>.1`, `<stage>.2`) is reported as CodePipeline
|
|
19
|
-
* reports it.
|
|
28
|
+
* reports it. The build-image entry (if recorded) comes last.
|
|
20
29
|
*/
|
|
21
30
|
entries(pipeline: Pipeline): StepManifestEntry[];
|
|
22
31
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { PLACEHOLDER_PLUGIN_ID } from '../core/step-manifest.js';
|
|
3
|
+
import { BUILD_IMAGE_MANIFEST_ACTION, BUILD_IMAGE_MANIFEST_STAGE, BUILD_IMAGE_STEP_KEY, PLACEHOLDER_PLUGIN_ID, } from '../core/step-manifest.js';
|
|
4
4
|
/**
|
|
5
5
|
* CDK Pipelines' action-name sanitizer (`pipelines/lib/private/identifiers`,
|
|
6
6
|
* not exported by aws-cdk-lib). Used ONLY as the key that matches a recorded
|
|
@@ -21,17 +21,42 @@ function cdkActionKey(stepId) {
|
|
|
21
21
|
*/
|
|
22
22
|
export class StepManifestRecorder {
|
|
23
23
|
byActionKey = new Map();
|
|
24
|
+
buildImage = null;
|
|
24
25
|
/** Remember that `step` runs `plugin` under step label `stepKey` (`pluginStepLabel`). Call once per plugin-backed step. */
|
|
25
26
|
record(step, plugin, stepKey) {
|
|
26
27
|
if (plugin.id === PLACEHOLDER_PLUGIN_ID)
|
|
27
28
|
return;
|
|
28
29
|
this.byActionKey.set(cdkActionKey(step.id), { plugin, stepKey });
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Remember the pipeline's build image: the toolchain release's
|
|
33
|
+
* `pipeline-bootstrap` half (`plugin`) and the release it resolved to
|
|
34
|
+
* (`toolchain`). Emitted as the non-step `build-image` entry — the synth half
|
|
35
|
+
* of the release is already recorded as the synth step.
|
|
36
|
+
*/
|
|
37
|
+
recordBuildImage(plugin, toolchain) {
|
|
38
|
+
if (plugin.id === PLACEHOLDER_PLUGIN_ID)
|
|
39
|
+
return;
|
|
40
|
+
const repository = plugin.imageRepository ?? null;
|
|
41
|
+
this.buildImage = {
|
|
42
|
+
kind: 'build-image',
|
|
43
|
+
stageName: BUILD_IMAGE_MANIFEST_STAGE,
|
|
44
|
+
actionName: BUILD_IMAGE_MANIFEST_ACTION,
|
|
45
|
+
stepKey: BUILD_IMAGE_STEP_KEY,
|
|
46
|
+
pluginId: plugin.id,
|
|
47
|
+
pluginName: plugin.name,
|
|
48
|
+
pluginVersion: plugin.version,
|
|
49
|
+
imageDigest: plugin.imageDigest ?? null,
|
|
50
|
+
releaseVersion: toolchain.releaseVersion,
|
|
51
|
+
imageRepository: repository,
|
|
52
|
+
resolvedVia: toolchain.resolvedVia,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
30
55
|
/**
|
|
31
56
|
* The manifest for the built pipeline. Call after `buildPipeline()`: stage
|
|
32
57
|
* and action names come from `pipeline.stages`, so a stage CDK split for
|
|
33
58
|
* exceeding 50 actions (`<stage>.1`, `<stage>.2`) is reported as CodePipeline
|
|
34
|
-
* reports it.
|
|
59
|
+
* reports it. The build-image entry (if recorded) comes last.
|
|
35
60
|
*/
|
|
36
61
|
entries(pipeline) {
|
|
37
62
|
const out = [];
|
|
@@ -53,7 +78,9 @@ export class StepManifestRecorder {
|
|
|
53
78
|
});
|
|
54
79
|
}
|
|
55
80
|
}
|
|
81
|
+
if (this.buildImage)
|
|
82
|
+
out.push(this.buildImage);
|
|
56
83
|
return out;
|
|
57
84
|
}
|
|
58
85
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1tYW5pZmVzdC1yZWNvcmRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3N0ZXAtbWFuaWZlc3QtcmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQU10QyxPQUFPLEVBQ0wsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEdBRXJHLE1BQU0sMEJBQTBCLENBQUM7QUFFbEM7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ2QsV0FBVyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO0lBQzlFLFVBQVUsR0FBbUMsSUFBSSxDQUFDO0lBRTFELDJIQUEySDtJQUMzSCxNQUFNLENBQUMsSUFBVSxFQUFFLE1BQWMsRUFBRSxPQUFlO1FBQ2hELElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxxQkFBcUI7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsU0FBMEI7UUFDekQsSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLHFCQUFxQjtZQUFFLE9BQU87UUFDaEQsTUFBTSxVQUFVLEdBQUksTUFBdUQsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDO1FBQ3BHLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsU0FBUyxFQUFFLDBCQUEwQjtZQUNyQyxVQUFVLEVBQUUsMkJBQTJCO1lBQ3ZDLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSTtZQUN2QixhQUFhLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDN0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSTtZQUN2QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWM7WUFDeEMsZUFBZSxFQUFFLFVBQVU7WUFDM0IsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1NBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsUUFBa0I7UUFDeEIsTUFBTSxHQUFHLEdBQXdCLEVBQUUsQ0FBQztRQUNwQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztnQkFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxRQUFRO29CQUFFLFNBQVM7Z0JBQ3hCLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDO2dCQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNQLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDMUIsVUFBVTtvQkFDVixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25CLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDdkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO29CQUM3QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJO29CQUN2QyxPQUFPO2lCQUNSLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgdHlwZSB7IFBpcGVsaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZSc7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBMb29rdXBUb29sY2hhaW4gfSBmcm9tICcuLi9jb3JlL3BsdWdpbi1sb29rdXAtZW52ZWxvcGUuanMnO1xuaW1wb3J0IHtcbiAgQlVJTERfSU1BR0VfTUFOSUZFU1RfQUNUSU9OLCBCVUlMRF9JTUFHRV9NQU5JRkVTVF9TVEFHRSwgQlVJTERfSU1BR0VfU1RFUF9LRVksIFBMQUNFSE9MREVSX1BMVUdJTl9JRCxcbiAgdHlwZSBCdWlsZEltYWdlTWFuaWZlc3RFbnRyeSwgdHlwZSBTdGVwTWFuaWZlc3RFbnRyeSxcbn0gZnJvbSAnLi4vY29yZS9zdGVwLW1hbmlmZXN0LmpzJztcblxuLyoqXG4gKiBDREsgUGlwZWxpbmVzJyBhY3Rpb24tbmFtZSBzYW5pdGl6ZXIgKGBwaXBlbGluZXMvbGliL3ByaXZhdGUvaWRlbnRpZmllcnNgLFxuICogbm90IGV4cG9ydGVkIGJ5IGF3cy1jZGstbGliKS4gVXNlZCBPTkxZIGFzIHRoZSBrZXkgdGhhdCBtYXRjaGVzIGEgcmVjb3JkZWRcbiAqIHN0ZXAgdG8gYW4gYWN0aW9uIG9mIHRoZSBidWlsdCBwaXBlbGluZSDigJQgdGhlIG5hbWVzIHRoYXQgbGFuZCBpbiB0aGVcbiAqIG1hbmlmZXN0IGFyZSByZWFkIG9mZiB0aGF0IHBpcGVsaW5lLiBJZiBDREsgZXZlciBuYW1lcyBhbiBhY3Rpb24gZGlmZmVyZW50bHlcbiAqIChlLmcuIGl0cyA+MTAwLWNoYXIgdHJ1bmNhdGlvbiksIHRoZSBzdGVwIHNpbXBseSBnb2VzIHVubWF0Y2hlZCBhbmQgaXMgbGVmdFxuICogb3V0OiBhIG1pc3NpbmcgbWFuaWZlc3Qgcm93LCBuZXZlciBhIHdyb25nIG9uZS4gdGVzdC9zdGVwLW1hbmlmZXN0LnRlc3QudHNcbiAqIHBpbnMgdGhlIG1hdGNoIGFnYWluc3QgYSByZWFsIHN5bnRoLlxuICovXG5mdW5jdGlvbiBjZGtBY3Rpb25LZXkoc3RlcElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RlcElkLnJlcGxhY2UoL1teQS1aYS16MC05LkBcXC1fXSsvZywgJ18nKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyAoc3RlcCDihpIgcmVzb2x2ZWQgcGx1Z2luKSBwYWlycyB3aGlsZSB0aGUgc3RhZ2VzIGFyZSBidWlsdCwgdGhlblxuICogcmVhZHMgdGhlIGZpbmlzaGVkIENvZGVQaXBlbGluZSB0byBlbWl0IHRoZSBzdGVwIG1hbmlmZXN0LiBPbmx5XG4gKiBwbHVnaW5zIHRoYXQgd2VyZSByZWFsbHkgcmVzb2x2ZWQgYXJlIHJlY29yZGVkIOKAlCB0aGUgc3ludGgtdGltZVxuICogYGZhbGxiYWNrKClgIC8gYGJvb3RzdHJhcCgpYCBwbGFjZWhvbGRlcnMgbmFtZSBubyBgcGx1Z2luc2Agcm93LlxuICovXG5leHBvcnQgY2xhc3MgU3RlcE1hbmlmZXN0UmVjb3JkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGJ5QWN0aW9uS2V5ID0gbmV3IE1hcDxzdHJpbmcsIHsgcGx1Z2luOiBQbHVnaW47IHN0ZXBLZXk6IHN0cmluZyB9PigpO1xuICBwcml2YXRlIGJ1aWxkSW1hZ2U6IEJ1aWxkSW1hZ2VNYW5pZmVzdEVudHJ5IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFJlbWVtYmVyIHRoYXQgYHN0ZXBgIHJ1bnMgYHBsdWdpbmAgdW5kZXIgc3RlcCBsYWJlbCBgc3RlcEtleWAgKGBwbHVnaW5TdGVwTGFiZWxgKS4gQ2FsbCBvbmNlIHBlciBwbHVnaW4tYmFja2VkIHN0ZXAuICovXG4gIHJlY29yZChzdGVwOiBTdGVwLCBwbHVnaW46IFBsdWdpbiwgc3RlcEtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHBsdWdpbi5pZCA9PT0gUExBQ0VIT0xERVJfUExVR0lOX0lEKSByZXR1cm47XG4gICAgdGhpcy5ieUFjdGlvbktleS5zZXQoY2RrQWN0aW9uS2V5KHN0ZXAuaWQpLCB7IHBsdWdpbiwgc3RlcEtleSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1lbWJlciB0aGUgcGlwZWxpbmUncyBidWlsZCBpbWFnZTogdGhlIHRvb2xjaGFpbiByZWxlYXNlJ3NcbiAgICogYHBpcGVsaW5lLWJvb3RzdHJhcGAgaGFsZiAoYHBsdWdpbmApIGFuZCB0aGUgcmVsZWFzZSBpdCByZXNvbHZlZCB0b1xuICAgKiAoYHRvb2xjaGFpbmApLiBFbWl0dGVkIGFzIHRoZSBub24tc3RlcCBgYnVpbGQtaW1hZ2VgIGVudHJ5IOKAlCB0aGUgc3ludGggaGFsZlxuICAgKiBvZiB0aGUgcmVsZWFzZSBpcyBhbHJlYWR5IHJlY29yZGVkIGFzIHRoZSBzeW50aCBzdGVwLlxuICAgKi9cbiAgcmVjb3JkQnVpbGRJbWFnZShwbHVnaW46IFBsdWdpbiwgdG9vbGNoYWluOiBMb29rdXBUb29sY2hhaW4pOiB2b2lkIHtcbiAgICBpZiAocGx1Z2luLmlkID09PSBQTEFDRUhPTERFUl9QTFVHSU5fSUQpIHJldHVybjtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gKHBsdWdpbiBhcyBQbHVnaW4gJiB7IGltYWdlUmVwb3NpdG9yeT86IHN0cmluZyB8IG51bGwgfSkuaW1hZ2VSZXBvc2l0b3J5ID8/IG51bGw7XG4gICAgdGhpcy5idWlsZEltYWdlID0ge1xuICAgICAga2luZDogJ2J1aWxkLWltYWdlJyxcbiAgICAgIHN0YWdlTmFtZTogQlVJTERfSU1BR0VfTUFOSUZFU1RfU1RBR0UsXG4gICAgICBhY3Rpb25OYW1lOiBCVUlMRF9JTUFHRV9NQU5JRkVTVF9BQ1RJT04sXG4gICAgICBzdGVwS2V5OiBCVUlMRF9JTUFHRV9TVEVQX0tFWSxcbiAgICAgIHBsdWdpbklkOiBwbHVnaW4uaWQsXG4gICAgICBwbHVnaW5OYW1lOiBwbHVnaW4ubmFtZSxcbiAgICAgIHBsdWdpblZlcnNpb246IHBsdWdpbi52ZXJzaW9uLFxuICAgICAgaW1hZ2VEaWdlc3Q6IHBsdWdpbi5pbWFnZURpZ2VzdCA/PyBudWxsLFxuICAgICAgcmVsZWFzZVZlcnNpb246IHRvb2xjaGFpbi5yZWxlYXNlVmVyc2lvbixcbiAgICAgIGltYWdlUmVwb3NpdG9yeTogcmVwb3NpdG9yeSxcbiAgICAgIHJlc29sdmVkVmlhOiB0b29sY2hhaW4ucmVzb2x2ZWRWaWEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWFuaWZlc3QgZm9yIHRoZSBidWlsdCBwaXBlbGluZS4gQ2FsbCBhZnRlciBgYnVpbGRQaXBlbGluZSgpYDogc3RhZ2VcbiAgICogYW5kIGFjdGlvbiBuYW1lcyBjb21lIGZyb20gYHBpcGVsaW5lLnN0YWdlc2AsIHNvIGEgc3RhZ2UgQ0RLIHNwbGl0IGZvclxuICAgKiBleGNlZWRpbmcgNTAgYWN0aW9ucyAoYDxzdGFnZT4uMWAsIGA8c3RhZ2U+LjJgKSBpcyByZXBvcnRlZCBhcyBDb2RlUGlwZWxpbmVcbiAgICogcmVwb3J0cyBpdC4gVGhlIGJ1aWxkLWltYWdlIGVudHJ5IChpZiByZWNvcmRlZCkgY29tZXMgbGFzdC5cbiAgICovXG4gIGVudHJpZXMocGlwZWxpbmU6IFBpcGVsaW5lKTogU3RlcE1hbmlmZXN0RW50cnlbXSB7XG4gICAgY29uc3Qgb3V0OiBTdGVwTWFuaWZlc3RFbnRyeVtdID0gW107XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBwaXBlbGluZS5zdGFnZXMpIHtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHN0YWdlLmFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uTmFtZSA9IGFjdGlvbi5hY3Rpb25Qcm9wZXJ0aWVzLmFjdGlvbk5hbWU7XG4gICAgICAgIGNvbnN0IHJlY29yZGVkID0gdGhpcy5ieUFjdGlvbktleS5nZXQoYWN0aW9uTmFtZSk7XG4gICAgICAgIGlmICghcmVjb3JkZWQpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCB7IHBsdWdpbiwgc3RlcEtleSB9ID0gcmVjb3JkZWQ7XG4gICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICBzdGFnZU5hbWU6IHN0YWdlLnN0YWdlTmFtZSxcbiAgICAgICAgICBhY3Rpb25OYW1lLFxuICAgICAgICAgIHBsdWdpbklkOiBwbHVnaW4uaWQsXG4gICAgICAgICAgcGx1Z2luTmFtZTogcGx1Z2luLm5hbWUsXG4gICAgICAgICAgcGx1Z2luVmVyc2lvbjogcGx1Z2luLnZlcnNpb24sXG4gICAgICAgICAgaW1hZ2VEaWdlc3Q6IHBsdWdpbi5pbWFnZURpZ2VzdCA/PyBudWxsLFxuICAgICAgICAgIHN0ZXBLZXksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5idWlsZEltYWdlKSBvdXQucHVzaCh0aGlzLmJ1aWxkSW1hZ2UpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PluginFilter, Plugin } from '@pipeline-builder/pipeline-data';
|
|
2
|
-
import type { ComputeType as CdkComputeType } from 'aws-cdk-lib/aws-codebuild';
|
|
2
|
+
import type { ComputeType as CdkComputeType, IBuildImage } from 'aws-cdk-lib/aws-codebuild';
|
|
3
3
|
import type { IFileSetProducer } from 'aws-cdk-lib/pipelines';
|
|
4
4
|
import type { Construct } from 'constructs';
|
|
5
5
|
import type { SourceType } from './source-types.js';
|
|
@@ -186,6 +186,14 @@ export interface CodeBuildStepOptions extends StepCustomization {
|
|
|
186
186
|
* so the build runs inside the specified network.
|
|
187
187
|
*/
|
|
188
188
|
readonly network?: NetworkConfig;
|
|
189
|
+
/**
|
|
190
|
+
* The image a step without a plugin-baked image runs on — the resolved
|
|
191
|
+
* toolchain release's `pipeline-bootstrap` image
|
|
192
|
+
* (`resolveDefaultBuildImage`). Required whenever the step's plugin has no
|
|
193
|
+
* image of its own (a `metadata_only` plugin, the synth bootstrap): such a
|
|
194
|
+
* step without it fails the synth.
|
|
195
|
+
*/
|
|
196
|
+
readonly defaultBuildImage?: IBuildImage;
|
|
189
197
|
/**
|
|
190
198
|
* Fallback CodeBuild compute type when the plugin doesn't specify one.
|
|
191
199
|
* @default ComputeType.SMALL
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
export {};
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC10eXBlcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3N0ZXAtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbkZpbHRlciwgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgdHlwZSB7IENvbXB1dGVUeXBlIGFzIENka0NvbXB1dGVUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgdHlwZSB7IElGaWxlU2V0UHJvZHVjZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgU291cmNlVHlwZSB9IGZyb20gJy4vc291cmNlLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQXJ0aWZhY3RLZXksIEFydGlmYWN0TWFuYWdlciB9IGZyb20gJy4uL2NvcmUvYXJ0aWZhY3QtbWFuYWdlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFVuaXF1ZUlkIH0gZnJvbSAnLi4vY29yZS9pZC1nZW5lcmF0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBOZXR3b3JrQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9uZXR3b3JrLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS10eXBlcy5qcyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2VsZWN0aW5nIGFuZCBjb25maWd1cmluZyBhIHBsdWdpblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcGx1Z2luIHRvIHVzZVxuICAgKiBNdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBwbHVnaW4gaW4gdGhlIGRhdGFiYXNlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlciBoYW5kbGUgb2YgYW4gaW5zdGFsbGVkIGVjb3N5c3RlbSBsaXN0aW5nIHRvIHJlc29sdmUgdGhyb3VnaC5cbiAgICogQWJzZW50OiB0aGUgb3JnJ3Mgb3duIHBsdWdpbiwgdGhlbiBpdHMgcGFyZW50XG4gICAqIG9yZydzLCB0aGVuIHRoZSBPZmZpY2lhbCBsaXN0aW5nLiBQcmVzZW50OiBvbmx5IHRoYXQgcHVibGlzaGVyJ3MgbGlzdGluZyxcbiAgICogdGhyb3VnaCBhbiBpbnN0YWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhbGlhcyBmb3IgdGhlIHBsdWdpbiBpbnN0YW5jZVxuICAgKiBVc2VmdWwgd2hlbiB1c2luZyB0aGUgc2FtZSBwbHVnaW4gbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWx0ZXIgY3JpdGVyaWEgZm9yIHBsdWdpbiBzZWxlY3Rpb25cbiAgICogQ2FuIGJlIHVzZWQgdG8gc2VsZWN0IHNwZWNpZmljIHBsdWdpbiB2ZXJzaW9ucyBvciB2YXJpYW50c1xuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyPzogUGx1Z2luRmlsdGVyO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhIHRvIG1lcmdlIHdpdGggcGx1Z2luJ3MgZGVmYXVsdCBtZXRhZGF0YVxuICAgKiBUaGlzIG1ldGFkYXRhIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBwbHVnaW4gZHVyaW5nIGV4ZWN1dGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBNZXRhRGF0YVR5cGU7XG59XG5cbi8qKlxuICogU3ludGhlc2lzIHN0ZXAgY29uZmlndXJhdGlvbiBjb21iaW5pbmcgc291cmNlIGFuZCBwbHVnaW4uXG4gKiBFeHRlbmRzIFN0ZXBDdXN0b21pemF0aW9uIHRvIHN1cHBvcnQgaW5qZWN0aW5nIGN1c3RvbSBjb21tYW5kcyBhbmQgZW52IHZhcnNcbiAqIGludG8gdGhlIHN5bnRoIENvZGVCdWlsZCBzdGVwIChzYW1lIGhvb2tzIGF2YWlsYWJsZSBhcyBzdGFnZSBzdGVwcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhPcHRpb25zIGV4dGVuZHMgU3RlcEN1c3RvbWl6YXRpb24ge1xuICAvKipcbiAgICogU291cmNlIGNvbmZpZ3VyYXRpb24gKFMzLCBHaXRIdWIsIG9yIENvZGVTdGFyKVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gdG8gdXNlIGZvciBzeW50aGVzaXNcbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luT3B0aW9ucztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXRhZGF0YSBmb3IgdGhlIHN5bnRoZXNpcyBzdGVwXG4gICAqIFRoaXMgd2lsbCBiZSBtZXJnZWQgd2l0aCBnbG9iYWwgbWV0YWRhdGEgYW5kIHBsdWdpbiBtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBNZXRhRGF0YVR5cGU7XG5cbiAgLyoqXG4gICAqIFN0ZXAtbGV2ZWwgbmV0d29yayBjb25maWd1cmF0aW9uIGFwcGxpZWQgb25seSB0byB0aGUgc3ludGggQ29kZUJ1aWxkIHN0ZXAuXG4gICAqIE92ZXJyaWRlcyB0aGUgcGlwZWxpbmUtbGV2ZWwgYGRlZmF1bHRzLm5ldHdvcmtgIHdoZW4gYm90aCBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29ya0NvbmZpZztcbn1cblxuLyoqXG4gKiBQZXItc3RlcCBjdXN0b21pemF0aW9uIG9wdGlvbnMgZm9yIGNvbW1hbmRzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKiBDdXN0b20gY29tbWFuZHMgYXJlIGluamVjdGVkIGJlZm9yZS9hZnRlciB0aGUgcGx1Z2luJ3MgY29tbWFuZHMuXG4gKiBDdXN0b20gZW52IHZhcnMgYXJlIG1lcmdlZCBvbiB0b3Agb2YgdGhlIHBsdWdpbidzIGRlZmF1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBiZWZvcmUgdGhlIHBsdWdpbidzIGluc3RhbGwgY29tbWFuZHMgKi9cbiAgcmVhZG9ubHkgcHJlSW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBhZnRlciB0aGUgcGx1Z2luJ3MgaW5zdGFsbCBjb21tYW5kcyAqL1xuICByZWFkb25seSBwb3N0SW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBiZWZvcmUgdGhlIHBsdWdpbidzIGJ1aWxkIGNvbW1hbmRzICovXG4gIHJlYWRvbmx5IHByZUNvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBhZnRlciB0aGUgcGx1Z2luJ3MgYnVpbGQgY29tbWFuZHMgKi9cbiAgcmVhZG9ubHkgcG9zdENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIEN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbWVyZ2VkIG9uIHRvcCBvZiB0aGUgcGx1Z2luJ3MgZW52ICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQW4gYWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdCB3aXRoIGFuIG9wdGlvbmFsIG1vdW50IGRpcmVjdG9yeS5cbiAqIFdoZW4gZGlyZWN0b3J5IGlzIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBhcnRpZmFjdCdzIG91dHB1dERpcmVjdG9yeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRpdGlvbmFsSW5wdXRBcnRpZmFjdENvbmZpZyB7XG4gIC8qKiBBcnRpZmFjdCBrZXkgaWRlbnRpZnlpbmcgdGhlIHNvdXJjZSBzdGVwJ3Mgb3V0cHV0ICovXG4gIHJlYWRvbmx5IGFydGlmYWN0OiBBcnRpZmFjdEtleTtcblxuICAvKiogRGlyZWN0b3J5IHRvIG1vdW50IHRoZSBpbnB1dCBhdC4gRGVmYXVsdHMgdG8gYXJ0aWZhY3Qub3V0cHV0RGlyZWN0b3J5IHdoZW4gb21pdHRlZC4gKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIHN0ZXAgd2l0aGluIGEgcGlwZWxpbmUgc3RhZ2UuXG4gKiBVc2VzIFBsdWdpbk9wdGlvbnMgZm9yIG5hbWUtYmFzZWQgcGx1Z2luIHNlbGVjdGlvbiAocmVzb2x2ZWQgYXQgYnVpbGQgdGltZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VTdGVwT3B0aW9ucyBleHRlbmRzIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqIFBsdWdpbiB0byB1c2UgZm9yIHRoaXMgc3RlcCAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbk9wdGlvbnM7XG5cbiAgLyoqIFN0ZXAtbGV2ZWwgbWV0YWRhdGEgbWVyZ2VkIHdpdGggc3RhZ2UgYW5kIGdsb2JhbCBtZXRhZGF0YSAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IE1ldGFEYXRhVHlwZTtcblxuICAvKiogT3B0aW9uYWwgbmV0d29yayBjb25maWd1cmF0aW9uIGZvciB0aGlzIHN0ZXAncyBDb2RlQnVpbGQgYWN0aW9uICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb2RlQnVpbGQgdGltZW91dCBpbiBtaW51dGVzLlxuICAgKiBAZGVmYXVsdCA2MCAoQVdTIENvZGVCdWlsZCBkZWZhdWx0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhpcyBzdGVwIHdpdGhpbiB0aGUgcGlwZWxpbmUgd2F2ZS5cbiAgICogLSAncHJlJzogUnVucyBiZWZvcmUgdGhlIHN0YWdlIGRlcGxveW1lbnQgKGRlZmF1bHQpXG4gICAqIC0gJ3Bvc3QnOiBSdW5zIGFmdGVyIHRoZSBzdGFnZSBkZXBsb3ltZW50XG4gICAqIEBkZWZhdWx0ICdwcmUnXG4gICAqL1xuICByZWFkb25seSBwb3NpdGlvbj86ICdwcmUnIHwgJ3Bvc3QnO1xuXG4gIC8qKiBBcnRpZmFjdCBrZXkgZm9yIHRoaXMgc3RlcCdzIHByaW1hcnkgaW5wdXQgKHJlc29sdmVkIHZpYSBBcnRpZmFjdE1hbmFnZXIpICovXG4gIHJlYWRvbmx5IGlucHV0QXJ0aWZhY3Q/OiBBcnRpZmFjdEtleTtcblxuICAvKiogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgZm9yIHRoaXMgc3RlcC4gRWFjaCBlbnRyeSBzcGVjaWZpZXMgYW4gYXJ0aWZhY3QgYW5kIGFuIG9wdGlvbmFsIG1vdW50IGRpcmVjdG9yeS4gKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzPzogQWRkaXRpb25hbElucHV0QXJ0aWZhY3RDb25maWdbXTtcblxuICAvKiogT3ZlcnJpZGUgdGhlIHBsdWdpbidzIGZhaWx1cmUgYmVoYXZpb3IgZm9yIHRoaXMgc3RlcC4gKi9cbiAgcmVhZG9ubHkgZmFpbHVyZUJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZSc7XG59XG5cbi8qKlxuICogQSBwaXBlbGluZSBzdGFnZSBjb250YWluaW5nIG9uZSBvciBtb3JlIGJ1aWxkIHN0ZXBzLlxuICogRWFjaCBzdGFnZSBtYXBzIHRvIGEgQ0RLIFBpcGVsaW5lIHdhdmUsIHdpdGggc3RlcHMgZXhlY3V0aW5nIHdpdGhpbiB0aGUgd2F2ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZU9wdGlvbnMge1xuICAvKiogRGlzcGxheSBuYW1lIGZvciB0aGlzIHN0YWdlICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29kZVBpcGVsaW5lIHN0YWdlICh3YXZlKSBuYW1lLiBEZWZhdWx0cyB0byBgPHN0YWdlTmFtZT4tYWxpYXNgIOKAlCBzZWVcbiAgICogYGNvZGVQaXBlbGluZVN0YWdlTmFtZWAsIHRoZSBzaW5nbGUgcGxhY2UgdGhhdCBkZXJpdmF0aW9uIGxpdmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXM/OiBzdHJpbmc7XG5cbiAgLyoqIEJ1aWxkIHN0ZXBzIHRvIGV4ZWN1dGUgd2l0aGluIHRoaXMgc3RhZ2UgKi9cbiAgcmVhZG9ubHkgc3RlcHM6IFN0YWdlU3RlcE9wdGlvbnNbXTtcblxuICAvKipcbiAgICogRGVwbG95IGVudmlyb25tZW50IHRoaXMgc3RhZ2UgdGFyZ2V0cyAoZS5nLiBgcHJvZHVjdGlvbmAsIGBzdGFnaW5nYCkuXG4gICAqIERlY2xhcmluZyBpdCBtYXJrcyB0aGUgc3RhZ2UgYXMgYSAqKmRlcGxveSoqIGZvciBET1JBIG1ldHJpY3M6IHBpcGVsaW5lLWNvcmVcbiAgICogbGlzdHMgZXZlcnkgc3VjaCBzdGFnZSBpbiB0aGUgYHBiLmRlcGxveXNgIHRhZyBhc1xuICAgKiBgPENvZGVQaXBlbGluZSBzdGFnZSBuYW1lPjo8ZW52aXJvbm1lbnQ+YCDigJQgdGhlIHN0YWdlIG5hbWUgYmVpbmcgdGhlIHdhdmUgaWRcbiAgICogKGBhbGlhc2AsIGVsc2UgYDxzdGFnZU5hbWU+LWFsaWFzYCksIGJlY2F1c2UgdGhhdCBpcyB3aGF0IENvZGVQaXBlbGluZVxuICAgKiBldmVudHMgcmVwb3J0IOKAlCBzbyB0aGUgZXZlbnRzIExhbWJkYSBjYW4gYXR0cmlidXRlIGRlcGxveW1lbnRzIHBlclxuICAgKiBlbnZpcm9ubWVudC4gT21pdCBpdCBhbmQgdGhlIHN0YWdlIGlzIG5vdCB0cmVhdGVkIGFzIGEgZGVwbG95LlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBDb2RlQnVpbGQgc3RlcCBpbiB0aGUgcGlwZWxpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRTdGVwT3B0aW9ucyBleHRlbmRzIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIENvZGVCdWlsZCBzdGVwXG4gICAqIFNob3VsZCBiZSBkZXNjcmlwdGl2ZSBhbmQgdW5pcXVlIHdpdGhpbiB0aGUgcGlwZWxpbmVcbiAgICogQGV4YW1wbGUgJ215LW9yZy1teS1wcm9qZWN0LXN5bnRoJ1xuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVW5pcXVlSWQgaW5zdGFuY2UgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGNvbnN0cnVjdCBJRHNcbiAgICogVXNlZCBmb3IgbmV0d29yayByZXNvdXJjZSBsb29rdXBzIChWUEMsIHN1Ym5ldHMsIHNlY3VyaXR5IGdyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IHVuaXF1ZUlkOiBVbmlxdWVJZDtcblxuICAvKipcbiAgICogUGx1Z2luIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2VcbiAgICogQ29udGFpbnMgYWxsIHRoZSBwbHVnaW4ncyBzcGVjIGRhdGEgYW5kIHJ1bnRpbWUgaW5mb3JtYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBDREsgc2NvcGUgdXNlZCB0byBjcmVhdGUgY29uc3RydWN0cyAoVlBDL3N1Ym5ldC9zZWN1cml0eS1ncm91cCBsb29rdXBzKS5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIElucHV0IHNvdXJjZSBmb3IgdGhpcyBzdGVwXG4gICAqIFR5cGljYWxseSB0aGUgb3V0cHV0IGZyb20gYSBwcmV2aW91cyBzdGVwIG9yIHRoZSBwaXBlbGluZSBzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGlucHV0PzogSUZpbGVTZXRQcm9kdWNlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXRhZGF0YSB0byBtZXJnZSB3aXRoIHBsdWdpbiBtZXRhZGF0YVxuICAgKiBXaWxsIG92ZXJyaWRlIGNvbmZsaWN0aW5nIGtleXMgZnJvbSBwbHVnaW4gbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogTWV0YURhdGFUeXBlO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb2RlQnVpbGQgc3RlcC5cbiAgICogV2hlbiBwcm92aWRlZCwgcmVzb2x2ZXMgVlBDLCBzdWJuZXQgc2VsZWN0aW9uLCBhbmQgc2VjdXJpdHkgZ3JvdXBzXG4gICAqIHNvIHRoZSBidWlsZCBydW5zIGluc2lkZSB0aGUgc3BlY2lmaWVkIG5ldHdvcmsuXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29ya0NvbmZpZztcblxuICAvKipcbiAgICogRmFsbGJhY2sgQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSB3aGVuIHRoZSBwbHVnaW4gZG9lc24ndCBzcGVjaWZ5IG9uZS5cbiAgICogQGRlZmF1bHQgQ29tcHV0ZVR5cGUuU01BTExcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb21wdXRlVHlwZT86IENka0NvbXB1dGVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb2RlQnVpbGQgdGltZW91dCBpbiBtaW51dGVzLlxuICAgKiBAZGVmYXVsdCA2MCAoQVdTIENvZGVCdWlsZCBkZWZhdWx0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcblxuICAvKiogQWRkaXRpb25hbCBpbnB1dHMgbWFwcGVkIGJ5IGRpcmVjdG9yeSBwYXRoIChyZXNvbHZlZCBGaWxlU2V0cykgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbElucHV0cz86IFJlY29yZDxzdHJpbmcsIElGaWxlU2V0UHJvZHVjZXI+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhcnRpZmFjdCBtYW5hZ2VyIGZvciB0cmFja2luZyBidWlsZCBvdXRwdXRzXG4gICAqIFdoZW4gcHJvdmlkZWQgYW5kIHByaW1hcnlPdXRwdXREaXJlY3RvcnkgaXMgc2V0LCB0aGUgc3RlcCB3aWxsIGJlIHJlZ2lzdGVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0TWFuYWdlcj86IEFydGlmYWN0TWFuYWdlcjtcblxuICAvKipcbiAgICogU3RhZ2UgbmFtZSBmb3IgYXJ0aWZhY3Qga2V5IGdlbmVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3RhZ2UgYWxpYXMgZm9yIGFydGlmYWN0IGtleSBnZW5lcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFnZUFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gYWxpYXMgZm9yIGFydGlmYWN0IGtleSBnZW5lcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5BbGlhcz86IHN0cmluZztcblxuICAvKipcbiAgICogRmFpbHVyZSBiZWhhdmlvciBmb3IgdGhpcyBzdGVwJ3MgYnVpbGQgY29tbWFuZHMuXG4gICAqIEFwcGxpZWQgYXQgc2hlbGwgbGV2ZWw6ICdmYWlsJyA9IGRlZmF1bHQsICd3YXJuJyA9IGxvZyArIGNvbnRpbnVlLCAnaWdub3JlJyA9IHx8IHRydWUuXG4gICAqL1xuICByZWFkb25seSBmYWlsdXJlQmVoYXZpb3I/OiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJztcblxuICAvKiogVGVuYW50IGlkZW50aWZpZXIgZm9yIHJlc29sdmluZyBwZXItb3JnIHNlY3JldHMgZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQaXBlbGluZS1sZXZlbCBjb25maWcgdXNlZCBhcyB0aGUgYHBpcGVsaW5lLipgIHNjb3BlIHdoZW4gcmVzb2x2aW5nXG4gICAqIHRlbXBsYXRlIHRva2VucyBpbnNpZGUgcGx1Z2luIHNwZWNzLiBSZXF1aXJlZCDigJQgZXZlcnkgYHt7IHBpcGVsaW5lLiogfX1gXG4gICAqIHJlZmVyZW5jZSBpbiBhIHBsdWdpbiBzcGVjIGlzIGV2YWx1YXRlZCBhZ2FpbnN0IHRoaXMgb2JqZWN0IGF0IHN5bnRoIHRpbWUuXG4gICAqXG4gICAqIENhbGxlcnMgY29uc3RydWN0aW5nIGEgc3RlcCBkaXJlY3RseSBtdXN0IHByb3ZpZGUgdGhlIHBpcGVsaW5lIGlkZW50aXR5XG4gICAqICsgbWV0YWRhdGEgKyB2YXJzIHNvIHRlbXBsYXRlIHJlc29sdXRpb24gaXMgbmV2ZXIgc2lsZW50bHkgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lU2NvcGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC10eXBlcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lL3N0ZXAtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbkZpbHRlciwgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgdHlwZSB7IENvbXB1dGVUeXBlIGFzIENka0NvbXB1dGVUeXBlLCBJQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBJRmlsZVNldFByb2R1Y2VyIH0gZnJvbSAnYXdzLWNkay1saWIvcGlwZWxpbmVzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IFNvdXJjZVR5cGUgfSBmcm9tICcuL3NvdXJjZS10eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEFydGlmYWN0S2V5LCBBcnRpZmFjdE1hbmFnZXIgfSBmcm9tICcuLi9jb3JlL2FydGlmYWN0LW1hbmFnZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBVbmlxdWVJZCB9IGZyb20gJy4uL2NvcmUvaWQtZ2VuZXJhdG9yLmpzJztcbmltcG9ydCB0eXBlIHsgTmV0d29ya0NvbmZpZyB9IGZyb20gJy4uL2NvcmUvbmV0d29yay10eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1ldGFEYXRhVHlwZSB9IGZyb20gJy4uL2NvcmUvcGlwZWxpbmUtdHlwZXMuanMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHNlbGVjdGluZyBhbmQgY29uZmlndXJpbmcgYSBwbHVnaW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHBsdWdpbiB0byB1c2VcbiAgICogTXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcGx1Z2luIGluIHRoZSBkYXRhYmFzZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoZXIgaGFuZGxlIG9mIGFuIGluc3RhbGxlZCBlY29zeXN0ZW0gbGlzdGluZyB0byByZXNvbHZlIHRocm91Z2guXG4gICAqIEFic2VudDogdGhlIG9yZydzIG93biBwbHVnaW4sIHRoZW4gaXRzIHBhcmVudFxuICAgKiBvcmcncywgdGhlbiB0aGUgT2ZmaWNpYWwgbGlzdGluZy4gUHJlc2VudDogb25seSB0aGF0IHB1Ymxpc2hlcidzIGxpc3RpbmcsXG4gICAqIHRocm91Z2ggYW4gaW5zdGFsbC5cbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hlcj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgYWxpYXMgZm9yIHRoZSBwbHVnaW4gaW5zdGFuY2VcbiAgICogVXNlZnVsIHdoZW4gdXNpbmcgdGhlIHNhbWUgcGx1Z2luIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zXG4gICAqL1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmlsdGVyIGNyaXRlcmlhIGZvciBwbHVnaW4gc2VsZWN0aW9uXG4gICAqIENhbiBiZSB1c2VkIHRvIHNlbGVjdCBzcGVjaWZpYyBwbHVnaW4gdmVyc2lvbnMgb3IgdmFyaWFudHNcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcj86IFBsdWdpbkZpbHRlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXRhZGF0YSB0byBtZXJnZSB3aXRoIHBsdWdpbidzIGRlZmF1bHQgbWV0YWRhdGFcbiAgICogVGhpcyBtZXRhZGF0YSB3aWxsIGJlIGF2YWlsYWJsZSB0byB0aGUgcGx1Z2luIGR1cmluZyBleGVjdXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogTWV0YURhdGFUeXBlO1xufVxuXG4vKipcbiAqIFN5bnRoZXNpcyBzdGVwIGNvbmZpZ3VyYXRpb24gY29tYmluaW5nIHNvdXJjZSBhbmQgcGx1Z2luLlxuICogRXh0ZW5kcyBTdGVwQ3VzdG9taXphdGlvbiB0byBzdXBwb3J0IGluamVjdGluZyBjdXN0b20gY29tbWFuZHMgYW5kIGVudiB2YXJzXG4gKiBpbnRvIHRoZSBzeW50aCBDb2RlQnVpbGQgc3RlcCAoc2FtZSBob29rcyBhdmFpbGFibGUgYXMgc3RhZ2Ugc3RlcHMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoT3B0aW9ucyBleHRlbmRzIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqXG4gICAqIFNvdXJjZSBjb25maWd1cmF0aW9uIChTMywgR2l0SHViLCBvciBDb2RlU3RhcilcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogU291cmNlVHlwZTtcblxuICAvKipcbiAgICogUGx1Z2luIHRvIHVzZSBmb3Igc3ludGhlc2lzXG4gICAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbWV0YWRhdGEgZm9yIHRoZSBzeW50aGVzaXMgc3RlcFxuICAgKiBUaGlzIHdpbGwgYmUgbWVyZ2VkIHdpdGggZ2xvYmFsIG1ldGFkYXRhIGFuZCBwbHVnaW4gbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogTWV0YURhdGFUeXBlO1xuXG4gIC8qKlxuICAgKiBTdGVwLWxldmVsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBhcHBsaWVkIG9ubHkgdG8gdGhlIHN5bnRoIENvZGVCdWlsZCBzdGVwLlxuICAgKiBPdmVycmlkZXMgdGhlIHBpcGVsaW5lLWxldmVsIGBkZWZhdWx0cy5uZXR3b3JrYCB3aGVuIGJvdGggYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29yaz86IE5ldHdvcmtDb25maWc7XG59XG5cbi8qKlxuICogUGVyLXN0ZXAgY3VzdG9taXphdGlvbiBvcHRpb25zIGZvciBjb21tYW5kcyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICogQ3VzdG9tIGNvbW1hbmRzIGFyZSBpbmplY3RlZCBiZWZvcmUvYWZ0ZXIgdGhlIHBsdWdpbidzIGNvbW1hbmRzLlxuICogQ3VzdG9tIGVudiB2YXJzIGFyZSBtZXJnZWQgb24gdG9wIG9mIHRoZSBwbHVnaW4ncyBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwQ3VzdG9taXphdGlvbiB7XG4gIC8qKiBDb21tYW5kcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW4ncyBpbnN0YWxsIGNvbW1hbmRzICovXG4gIHJlYWRvbmx5IHByZUluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKiBDb21tYW5kcyB0byBydW4gYWZ0ZXIgdGhlIHBsdWdpbidzIGluc3RhbGwgY29tbWFuZHMgKi9cbiAgcmVhZG9ubHkgcG9zdEluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKiBDb21tYW5kcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW4ncyBidWlsZCBjb21tYW5kcyAqL1xuICByZWFkb25seSBwcmVDb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKiBDb21tYW5kcyB0byBydW4gYWZ0ZXIgdGhlIHBsdWdpbidzIGJ1aWxkIGNvbW1hbmRzICovXG4gIHJlYWRvbmx5IHBvc3RDb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKiBDdXN0b20gZW52aXJvbm1lbnQgdmFyaWFibGVzIG1lcmdlZCBvbiB0b3Agb2YgdGhlIHBsdWdpbidzIGVudiAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIEFuIGFkZGl0aW9uYWwgaW5wdXQgYXJ0aWZhY3Qgd2l0aCBhbiBvcHRpb25hbCBtb3VudCBkaXJlY3RvcnkuXG4gKiBXaGVuIGRpcmVjdG9yeSBpcyBvbWl0dGVkLCBkZWZhdWx0cyB0byB0aGUgYXJ0aWZhY3QncyBvdXRwdXREaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkaXRpb25hbElucHV0QXJ0aWZhY3RDb25maWcge1xuICAvKiogQXJ0aWZhY3Qga2V5IGlkZW50aWZ5aW5nIHRoZSBzb3VyY2Ugc3RlcCdzIG91dHB1dCAqL1xuICByZWFkb25seSBhcnRpZmFjdDogQXJ0aWZhY3RLZXk7XG5cbiAgLyoqIERpcmVjdG9yeSB0byBtb3VudCB0aGUgaW5wdXQgYXQuIERlZmF1bHRzIHRvIGFydGlmYWN0Lm91dHB1dERpcmVjdG9yeSB3aGVuIG9taXR0ZWQuICovXG4gIHJlYWRvbmx5IGRpcmVjdG9yeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBzdGVwIHdpdGhpbiBhIHBpcGVsaW5lIHN0YWdlLlxuICogVXNlcyBQbHVnaW5PcHRpb25zIGZvciBuYW1lLWJhc2VkIHBsdWdpbiBzZWxlY3Rpb24gKHJlc29sdmVkIGF0IGJ1aWxkIHRpbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlU3RlcE9wdGlvbnMgZXh0ZW5kcyBTdGVwQ3VzdG9taXphdGlvbiB7XG4gIC8qKiBQbHVnaW4gdG8gdXNlIGZvciB0aGlzIHN0ZXAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW5PcHRpb25zO1xuXG4gIC8qKiBTdGVwLWxldmVsIG1ldGFkYXRhIG1lcmdlZCB3aXRoIHN0YWdlIGFuZCBnbG9iYWwgbWV0YWRhdGEgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBNZXRhRGF0YVR5cGU7XG5cbiAgLyoqIE9wdGlvbmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzdGVwJ3MgQ29kZUJ1aWxkIGFjdGlvbiAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29ya0NvbmZpZztcblxuICAvKipcbiAgICogQ29kZUJ1aWxkIHRpbWVvdXQgaW4gbWludXRlcy5cbiAgICogQGRlZmF1bHQgNjAgKEFXUyBDb2RlQnVpbGQgZGVmYXVsdClcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoaXMgc3RlcCB3aXRoaW4gdGhlIHBpcGVsaW5lIHdhdmUuXG4gICAqIC0gJ3ByZSc6IFJ1bnMgYmVmb3JlIHRoZSBzdGFnZSBkZXBsb3ltZW50IChkZWZhdWx0KVxuICAgKiAtICdwb3N0JzogUnVucyBhZnRlciB0aGUgc3RhZ2UgZGVwbG95bWVudFxuICAgKiBAZGVmYXVsdCAncHJlJ1xuICAgKi9cbiAgcmVhZG9ubHkgcG9zaXRpb24/OiAncHJlJyB8ICdwb3N0JztcblxuICAvKiogQXJ0aWZhY3Qga2V5IGZvciB0aGlzIHN0ZXAncyBwcmltYXJ5IGlucHV0IChyZXNvbHZlZCB2aWEgQXJ0aWZhY3RNYW5hZ2VyKSAqL1xuICByZWFkb25seSBpbnB1dEFydGlmYWN0PzogQXJ0aWZhY3RLZXk7XG5cbiAgLyoqIEFkZGl0aW9uYWwgaW5wdXQgYXJ0aWZhY3RzIGZvciB0aGlzIHN0ZXAuIEVhY2ggZW50cnkgc3BlY2lmaWVzIGFuIGFydGlmYWN0IGFuZCBhbiBvcHRpb25hbCBtb3VudCBkaXJlY3RvcnkuICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz86IEFkZGl0aW9uYWxJbnB1dEFydGlmYWN0Q29uZmlnW107XG5cbiAgLyoqIE92ZXJyaWRlIHRoZSBwbHVnaW4ncyBmYWlsdXJlIGJlaGF2aW9yIGZvciB0aGlzIHN0ZXAuICovXG4gIHJlYWRvbmx5IGZhaWx1cmVCZWhhdmlvcj86ICdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnO1xufVxuXG4vKipcbiAqIEEgcGlwZWxpbmUgc3RhZ2UgY29udGFpbmluZyBvbmUgb3IgbW9yZSBidWlsZCBzdGVwcy5cbiAqIEVhY2ggc3RhZ2UgbWFwcyB0byBhIENESyBQaXBlbGluZSB3YXZlLCB3aXRoIHN0ZXBzIGV4ZWN1dGluZyB3aXRoaW4gdGhlIHdhdmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VPcHRpb25zIHtcbiAgLyoqIERpc3BsYXkgbmFtZSBmb3IgdGhpcyBzdGFnZSAqL1xuICByZWFkb25seSBzdGFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENvZGVQaXBlbGluZSBzdGFnZSAod2F2ZSkgbmFtZS4gRGVmYXVsdHMgdG8gYDxzdGFnZU5hbWU+LWFsaWFzYCDigJQgc2VlXG4gICAqIGBjb2RlUGlwZWxpbmVTdGFnZU5hbWVgLCB0aGUgc2luZ2xlIHBsYWNlIHRoYXQgZGVyaXZhdGlvbiBsaXZlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKiBCdWlsZCBzdGVwcyB0byBleGVjdXRlIHdpdGhpbiB0aGlzIHN0YWdlICovXG4gIHJlYWRvbmx5IHN0ZXBzOiBTdGFnZVN0ZXBPcHRpb25zW107XG5cbiAgLyoqXG4gICAqIERlcGxveSBlbnZpcm9ubWVudCB0aGlzIHN0YWdlIHRhcmdldHMgKGUuZy4gYHByb2R1Y3Rpb25gLCBgc3RhZ2luZ2ApLlxuICAgKiBEZWNsYXJpbmcgaXQgbWFya3MgdGhlIHN0YWdlIGFzIGEgKipkZXBsb3kqKiBmb3IgRE9SQSBtZXRyaWNzOiBwaXBlbGluZS1jb3JlXG4gICAqIGxpc3RzIGV2ZXJ5IHN1Y2ggc3RhZ2UgaW4gdGhlIGBwYi5kZXBsb3lzYCB0YWcgYXNcbiAgICogYDxDb2RlUGlwZWxpbmUgc3RhZ2UgbmFtZT46PGVudmlyb25tZW50PmAg4oCUIHRoZSBzdGFnZSBuYW1lIGJlaW5nIHRoZSB3YXZlIGlkXG4gICAqIChgYWxpYXNgLCBlbHNlIGA8c3RhZ2VOYW1lPi1hbGlhc2ApLCBiZWNhdXNlIHRoYXQgaXMgd2hhdCBDb2RlUGlwZWxpbmVcbiAgICogZXZlbnRzIHJlcG9ydCDigJQgc28gdGhlIGV2ZW50cyBMYW1iZGEgY2FuIGF0dHJpYnV0ZSBkZXBsb3ltZW50cyBwZXJcbiAgICogZW52aXJvbm1lbnQuIE9taXQgaXQgYW5kIHRoZSBzdGFnZSBpcyBub3QgdHJlYXRlZCBhcyBhIGRlcGxveS5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgQ29kZUJ1aWxkIHN0ZXAgaW4gdGhlIHBpcGVsaW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJ1aWxkU3RlcE9wdGlvbnMgZXh0ZW5kcyBTdGVwQ3VzdG9taXphdGlvbiB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBDb2RlQnVpbGQgc3RlcFxuICAgKiBTaG91bGQgYmUgZGVzY3JpcHRpdmUgYW5kIHVuaXF1ZSB3aXRoaW4gdGhlIHBpcGVsaW5lXG4gICAqIEBleGFtcGxlICdteS1vcmctbXktcHJvamVjdC1zeW50aCdcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZUlkIGluc3RhbmNlIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBjb25zdHJ1Y3QgSURzXG4gICAqIFVzZWQgZm9yIG5ldHdvcmsgcmVzb3VyY2UgbG9va3VwcyAoVlBDLCBzdWJuZXRzLCBzZWN1cml0eSBncm91cHMpXG4gICAqL1xuICByZWFkb25seSB1bmlxdWVJZDogVW5pcXVlSWQ7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBjb25maWd1cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlXG4gICAqIENvbnRhaW5zIGFsbCB0aGUgcGx1Z2luJ3Mgc3BlYyBkYXRhIGFuZCBydW50aW1lIGluZm9ybWF0aW9uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcblxuICAvKipcbiAgICogQ0RLIHNjb3BlIHVzZWQgdG8gY3JlYXRlIGNvbnN0cnVjdHMgKFZQQy9zdWJuZXQvc2VjdXJpdHktZ3JvdXAgbG9va3VwcykuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogQ29uc3RydWN0O1xuXG4gIC8qKlxuICAgKiBJbnB1dCBzb3VyY2UgZm9yIHRoaXMgc3RlcFxuICAgKiBUeXBpY2FsbHkgdGhlIG91dHB1dCBmcm9tIGEgcHJldmlvdXMgc3RlcCBvciB0aGUgcGlwZWxpbmUgc291cmNlXG4gICAqL1xuICByZWFkb25seSBpbnB1dD86IElGaWxlU2V0UHJvZHVjZXI7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbWV0YWRhdGEgdG8gbWVyZ2Ugd2l0aCBwbHVnaW4gbWV0YWRhdGFcbiAgICogV2lsbCBvdmVycmlkZSBjb25mbGljdGluZyBrZXlzIGZyb20gcGx1Z2luIG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IE1ldGFEYXRhVHlwZTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgbmV0d29yayBjb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAuXG4gICAqIFdoZW4gcHJvdmlkZWQsIHJlc29sdmVzIFZQQywgc3VibmV0IHNlbGVjdGlvbiwgYW5kIHNlY3VyaXR5IGdyb3Vwc1xuICAgKiBzbyB0aGUgYnVpbGQgcnVucyBpbnNpZGUgdGhlIHNwZWNpZmllZCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29yaz86IE5ldHdvcmtDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSBhIHN0ZXAgd2l0aG91dCBhIHBsdWdpbi1iYWtlZCBpbWFnZSBydW5zIG9uIOKAlCB0aGUgcmVzb2x2ZWRcbiAgICogdG9vbGNoYWluIHJlbGVhc2UncyBgcGlwZWxpbmUtYm9vdHN0cmFwYCBpbWFnZVxuICAgKiAoYHJlc29sdmVEZWZhdWx0QnVpbGRJbWFnZWApLiBSZXF1aXJlZCB3aGVuZXZlciB0aGUgc3RlcCdzIHBsdWdpbiBoYXMgbm9cbiAgICogaW1hZ2Ugb2YgaXRzIG93biAoYSBgbWV0YWRhdGFfb25seWAgcGx1Z2luLCB0aGUgc3ludGggYm9vdHN0cmFwKTogc3VjaCBhXG4gICAqIHN0ZXAgd2l0aG91dCBpdCBmYWlscyB0aGUgc3ludGguXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QnVpbGRJbWFnZT86IElCdWlsZEltYWdlO1xuXG4gIC8qKlxuICAgKiBGYWxsYmFjayBDb2RlQnVpbGQgY29tcHV0ZSB0eXBlIHdoZW4gdGhlIHBsdWdpbiBkb2Vzbid0IHNwZWNpZnkgb25lLlxuICAgKiBAZGVmYXVsdCBDb21wdXRlVHlwZS5TTUFMTFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbXB1dGVUeXBlPzogQ2RrQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIENvZGVCdWlsZCB0aW1lb3V0IGluIG1pbnV0ZXMuXG4gICAqIEBkZWZhdWx0IDYwIChBV1MgQ29kZUJ1aWxkIGRlZmF1bHQpXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKiBBZGRpdGlvbmFsIGlucHV0cyBtYXBwZWQgYnkgZGlyZWN0b3J5IHBhdGggKHJlc29sdmVkIEZpbGVTZXRzKSAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsSW5wdXRzPzogUmVjb3JkPHN0cmluZywgSUZpbGVTZXRQcm9kdWNlcj47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFydGlmYWN0IG1hbmFnZXIgZm9yIHRyYWNraW5nIGJ1aWxkIG91dHB1dHNcbiAgICogV2hlbiBwcm92aWRlZCBhbmQgcHJpbWFyeU91dHB1dERpcmVjdG9yeSBpcyBzZXQsIHRoZSBzdGVwIHdpbGwgYmUgcmVnaXN0ZXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RNYW5hZ2VyPzogQXJ0aWZhY3RNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBTdGFnZSBuYW1lIGZvciBhcnRpZmFjdCBrZXkgZ2VuZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGFnZSBhbGlhcyBmb3IgYXJ0aWZhY3Qga2V5IGdlbmVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlQWxpYXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBhbGlhcyBmb3IgYXJ0aWZhY3Qga2V5IGdlbmVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbkFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGYWlsdXJlIGJlaGF2aW9yIGZvciB0aGlzIHN0ZXAncyBidWlsZCBjb21tYW5kcy5cbiAgICogQXBwbGllZCBhdCBzaGVsbCBsZXZlbDogJ2ZhaWwnID0gZGVmYXVsdCwgJ3dhcm4nID0gbG9nICsgY29udGludWUsICdpZ25vcmUnID0gfHwgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZhaWx1cmVCZWhhdmlvcj86ICdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnO1xuXG4gIC8qKiBUZW5hbnQgaWRlbnRpZmllciBmb3IgcmVzb2x2aW5nIHBlci1vcmcgc2VjcmV0cyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBpcGVsaW5lLWxldmVsIGNvbmZpZyB1c2VkIGFzIHRoZSBgcGlwZWxpbmUuKmAgc2NvcGUgd2hlbiByZXNvbHZpbmdcbiAgICogdGVtcGxhdGUgdG9rZW5zIGluc2lkZSBwbHVnaW4gc3BlY3MuIFJlcXVpcmVkIOKAlCBldmVyeSBge3sgcGlwZWxpbmUuKiB9fWBcbiAgICogcmVmZXJlbmNlIGluIGEgcGx1Z2luIHNwZWMgaXMgZXZhbHVhdGVkIGFnYWluc3QgdGhpcyBvYmplY3QgYXQgc3ludGggdGltZS5cbiAgICpcbiAgICogQ2FsbGVycyBjb25zdHJ1Y3RpbmcgYSBzdGVwIGRpcmVjdGx5IG11c3QgcHJvdmlkZSB0aGUgcGlwZWxpbmUgaWRlbnRpdHlcbiAgICogKyBtZXRhZGF0YSArIHZhcnMgc28gdGVtcGxhdGUgcmVzb2x1dGlvbiBpcyBuZXZlciBzaWxlbnRseSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVTY29wZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
|