@odigos/aws-cdk 0.0.20 → 0.0.22

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.
@@ -0,0 +1,107 @@
1
+ import { Construct, IConstruct } from 'constructs';
2
+ import { OdigosAgentCoreDelivery, OdigosAgentCoreDistribution, OdigosAgentCoreLanguage, OdigosDestination } from './types';
3
+ /**
4
+ * One AgentCore Runtime to instrument.
5
+ */
6
+ export interface OdigosAgentCoreTarget {
7
+ /**
8
+ * The runtime: an `AWS::BedrockAgentCore::Runtime` `CfnResource` (an L1 `CfnRuntime`, a raw
9
+ * `CfnResource`, or a resource from `CfnInclude.getResource()`), or any construct whose
10
+ * `node.defaultChild` is one — such as the L2 `Runtime` in newer `aws-cdk-lib` releases.
11
+ */
12
+ readonly runtime: IConstruct;
13
+ /**
14
+ * The language of the application, and of the Odigos SDK profile prepared into its artifact.
15
+ *
16
+ * Stated rather than detected: what matters is how the artifact was prepared, which the template does
17
+ * not say.
18
+ */
19
+ readonly language: OdigosAgentCoreLanguage;
20
+ /**
21
+ * The SDK profile prepared into the artifact. Must be the one actually bundled.
22
+ *
23
+ * @default OdigosAgentCoreDistribution.ADOT
24
+ */
25
+ readonly distribution?: OdigosAgentCoreDistribution;
26
+ /**
27
+ * How the artifact carries the SDK: the Odigos package or carrier bundle (`PACKAGE`), or AWS Distro for
28
+ * OpenTelemetry only (`ADOPT`). Must match how the artifact was prepared; `ADOPT` requires the ADOT
29
+ * distribution and leaves AgentCore's own service span missing from the trace.
30
+ *
31
+ * @default OdigosAgentCoreDelivery.PACKAGE
32
+ */
33
+ readonly delivery?: OdigosAgentCoreDelivery;
34
+ /**
35
+ * `OTEL_SERVICE_NAME` for this runtime.
36
+ *
37
+ * THIS MUST MATCH THE WORKLOAD'S NAME IN ODIGOS, which for an AgentCore runtime is the runtime name
38
+ * unless a service name override is configured in Odigos. A different value is reported as drift.
39
+ *
40
+ * @default - the runtime's `AgentRuntimeName`; required when that is not a literal string
41
+ */
42
+ readonly serviceName?: string;
43
+ }
44
+ /**
45
+ * Props for {@link OdigosAgentCoreInstrumentation}.
46
+ */
47
+ export interface OdigosAgentCoreInstrumentationProps {
48
+ /**
49
+ * Where the runtimes export telemetry to.
50
+ *
51
+ * AgentCore exports straight to a global OTLP/HTTP destination: `httpEndpoint` must be set, as a base
52
+ * URL with no per-signal `/v1/...` path, and `endpoint` (gRPC) must not be.
53
+ */
54
+ readonly destination: OdigosDestination;
55
+ /**
56
+ * Runtimes to instrument on construction. More can be added with `instrument()`.
57
+ *
58
+ * @default - none
59
+ */
60
+ readonly targets?: OdigosAgentCoreTarget[];
61
+ }
62
+ /**
63
+ * Writes the Odigos environment recipe onto Amazon Bedrock AgentCore Runtimes.
64
+ *
65
+ * ```ts
66
+ * new OdigosAgentCoreInstrumentation(this, 'Odigos', {
67
+ * destination: { httpEndpoint: 'https://otlp.example.com:4318' },
68
+ * targets: [{ runtime, language: OdigosAgentCoreLanguage.PYTHON }],
69
+ * });
70
+ * ```
71
+ *
72
+ * ## What it does
73
+ *
74
+ * Sets, through property overrides on the runtime's `EnvironmentVariables`, the exact environment the
75
+ * Odigos AWS connector expects for a manually instrumented runtime — the export settings, the SDK
76
+ * profile selection, the `ODIGOS_AGENTCORE_PACKAGE` preparation contract and the `ODIGOS_IAC` marker —
77
+ * and removes the per-signal header variables, `ODIGOS_MANAGED`, and (when the destination has no
78
+ * headers) `OTEL_EXPORTER_OTLP_HEADERS`. Variables the runtime already sets are kept.
79
+ *
80
+ * ## What it does NOT do
81
+ *
82
+ * It does not prepare the artifact. The Odigos SDK bundle and its bootstrap (`delivery: PACKAGE`), or ADOT
83
+ * and its launcher (`delivery: ADOPT`), must already be in the image or ZIP the runtime deploys; the
84
+ * environment alone installs nothing, and the construct does not write `NODE_OPTIONS`. See
85
+ * https://docs.odigos.io/cloud-connectors/aws/workloads/agentcore/prepare.
86
+ *
87
+ * ## Do not also enable connector automatic mode for these runtimes
88
+ *
89
+ * The connector refuses to manage a runtime carrying `ODIGOS_IAC`, and an IaC-owned runtime that the
90
+ * connector also tries to own is reported as an error instead of being instrumented twice.
91
+ */
92
+ export declare class OdigosAgentCoreInstrumentation extends Construct {
93
+ private static readonly owners;
94
+ private readonly destination;
95
+ private readonly instrumented;
96
+ constructor(scope: Construct, id: string, props: OdigosAgentCoreInstrumentationProps);
97
+ /**
98
+ * Instruments one runtime. Idempotent — instrumenting the same runtime again is a no-op.
99
+ */
100
+ instrument(target: OdigosAgentCoreTarget): void;
101
+ /**
102
+ * Warns about what synth can see of the runtime's own environment: variables the recipe replaces, a
103
+ * total over AgentCore's 50-variable cap, and a size over the platform's byte budget. Existing variables
104
+ * are only counted when the environment is a literal object.
105
+ */
106
+ private checkExisting;
107
+ }
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OdigosAgentCoreInstrumentation = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const constructs_1 = require("constructs");
8
+ const agentcore_recipes_1 = require("./agentcore-recipes");
9
+ const types_1 = require("./types");
10
+ /** CloudFormation type of an AgentCore Runtime. */
11
+ const RUNTIME_TYPE = 'AWS::BedrockAgentCore::Runtime';
12
+ /** Property path prefix the environment overrides are written under. */
13
+ const ENV_PROPERTY = 'EnvironmentVariables';
14
+ /**
15
+ * Writes the Odigos environment recipe onto Amazon Bedrock AgentCore Runtimes.
16
+ *
17
+ * ```ts
18
+ * new OdigosAgentCoreInstrumentation(this, 'Odigos', {
19
+ * destination: { httpEndpoint: 'https://otlp.example.com:4318' },
20
+ * targets: [{ runtime, language: OdigosAgentCoreLanguage.PYTHON }],
21
+ * });
22
+ * ```
23
+ *
24
+ * ## What it does
25
+ *
26
+ * Sets, through property overrides on the runtime's `EnvironmentVariables`, the exact environment the
27
+ * Odigos AWS connector expects for a manually instrumented runtime — the export settings, the SDK
28
+ * profile selection, the `ODIGOS_AGENTCORE_PACKAGE` preparation contract and the `ODIGOS_IAC` marker —
29
+ * and removes the per-signal header variables, `ODIGOS_MANAGED`, and (when the destination has no
30
+ * headers) `OTEL_EXPORTER_OTLP_HEADERS`. Variables the runtime already sets are kept.
31
+ *
32
+ * ## What it does NOT do
33
+ *
34
+ * It does not prepare the artifact. The Odigos SDK bundle and its bootstrap (`delivery: PACKAGE`), or ADOT
35
+ * and its launcher (`delivery: ADOPT`), must already be in the image or ZIP the runtime deploys; the
36
+ * environment alone installs nothing, and the construct does not write `NODE_OPTIONS`. See
37
+ * https://docs.odigos.io/cloud-connectors/aws/workloads/agentcore/prepare.
38
+ *
39
+ * ## Do not also enable connector automatic mode for these runtimes
40
+ *
41
+ * The connector refuses to manage a runtime carrying `ODIGOS_IAC`, and an IaC-owned runtime that the
42
+ * connector also tries to own is reported as an error instead of being instrumented twice.
43
+ */
44
+ class OdigosAgentCoreInstrumentation extends constructs_1.Construct {
45
+ constructor(scope, id, props) {
46
+ super(scope, id);
47
+ this.instrumented = new Set();
48
+ (0, agentcore_recipes_1.validateAgentCoreDestination)(props.destination);
49
+ this.destination = props.destination;
50
+ if (props.destination.profiles) {
51
+ aws_cdk_lib_1.Annotations.of(this).addWarningV2('@odigos/aws-cdk:profilesUnsupported', 'The AgentCore SDK profiles do not generate OTLP profiles. Other selected signals remain enabled.');
52
+ }
53
+ const headers = props.destination.headers ?? {};
54
+ if (Object.entries(headers).some(([k, v]) => aws_cdk_lib_1.Token.isUnresolved(k) || aws_cdk_lib_1.Token.isUnresolved(v))) {
55
+ aws_cdk_lib_1.Annotations.of(this).addWarningV2('@odigos/aws-cdk:agentCoreHeaderToken', 'Odigos: a destination header key or value is an unresolved token, so it is written unencoded into ' +
56
+ 'OTEL_EXPORTER_OTLP_HEADERS. Make sure it resolves to an already percent-encoded value.');
57
+ }
58
+ for (const target of props.targets ?? []) {
59
+ this.instrument(target);
60
+ }
61
+ }
62
+ /**
63
+ * Instruments one runtime. Idempotent — instrumenting the same runtime again is a no-op.
64
+ */
65
+ instrument(target) {
66
+ const resource = runtimeResource(target.runtime);
67
+ const key = resource.node.path;
68
+ if (this.instrumented.has(key)) {
69
+ return;
70
+ }
71
+ const owner = OdigosAgentCoreInstrumentation.owners.get(resource);
72
+ if (owner && owner !== this) {
73
+ throw new Error(`Odigos: AgentCore runtime ${key} is already instrumented. Reuse its original instrumentation construct.`);
74
+ }
75
+ const language = target.language;
76
+ const delivery = target.delivery ?? types_1.OdigosAgentCoreDelivery.PACKAGE;
77
+ const distribution = target.distribution ?? types_1.OdigosAgentCoreDistribution.ADOT;
78
+ if (delivery === types_1.OdigosAgentCoreDelivery.ADOPT && distribution !== types_1.OdigosAgentCoreDistribution.ADOT) {
79
+ throw new Error(`Odigos: AgentCore runtime ${key} uses delivery ADOPT, which configures the ADOT the artifact already ` +
80
+ `runs; distribution ${distribution} needs the Odigos package (delivery PACKAGE).`);
81
+ }
82
+ const distro = (0, agentcore_recipes_1.agentCoreDistroName)(language, distribution);
83
+ const service = target.serviceName ?? literalRuntimeName(resource);
84
+ if (service === undefined || service === '') {
85
+ throw new Error(`Odigos: AgentCore runtime ${key} has no literal AgentRuntimeName, so OTEL_SERVICE_NAME cannot be ` +
86
+ 'derived. Pass `serviceName` with the name Odigos reports the runtime under.');
87
+ }
88
+ const env = delivery === types_1.OdigosAgentCoreDelivery.ADOPT
89
+ ? (0, agentcore_recipes_1.agentCoreAdoptEnvironment)(language, service, this.destination)
90
+ : (0, agentcore_recipes_1.agentCoreEnvironment)(language, distro, service, this.destination);
91
+ (0, agentcore_recipes_1.validateAgentCoreEnvironment)(env.set);
92
+ this.checkExisting(resource, env.set, env.remove);
93
+ for (const [name, value] of Object.entries(env.set)) {
94
+ resource.addPropertyOverride(`${ENV_PROPERTY}.${name}`, value);
95
+ }
96
+ for (const name of env.remove) {
97
+ resource.addPropertyDeletionOverride(`${ENV_PROPERTY}.${name}`);
98
+ }
99
+ this.instrumented.add(key);
100
+ OdigosAgentCoreInstrumentation.owners.set(resource, this);
101
+ }
102
+ /**
103
+ * Warns about what synth can see of the runtime's own environment: variables the recipe replaces, a
104
+ * total over AgentCore's 50-variable cap, and a size over the platform's byte budget. Existing variables
105
+ * are only counted when the environment is a literal object.
106
+ */
107
+ checkExisting(resource, set, remove) {
108
+ const existing = literalProperty(resource, 'EnvironmentVariables');
109
+ const current = existing && typeof existing === 'object' && !Array.isArray(existing) && !aws_cdk_lib_1.Token.isUnresolved(existing)
110
+ ? existing
111
+ : {};
112
+ const replaced = Object.keys(set)
113
+ .filter((k) => !k.startsWith('ODIGOS_') && typeof current[k] === 'string' && current[k] !== set[k])
114
+ .sort();
115
+ if (replaced.length) {
116
+ aws_cdk_lib_1.Annotations.of(resource).addWarningV2('@odigos/aws-cdk:agentCoreEnvOverwritten', `Odigos: AgentCore runtime ${resource.node.path} already sets ${replaced.join(', ')}, which the ` +
117
+ 'Odigos recipe replaces. The connector compares these exactly, so they cannot be kept.');
118
+ }
119
+ const merged = { ...current, ...set };
120
+ for (const name of remove) {
121
+ delete merged[name];
122
+ }
123
+ const count = Object.keys(merged).length;
124
+ if (count > agentcore_recipes_1.AGENTCORE_MAX_ENV_VARS) {
125
+ aws_cdk_lib_1.Annotations.of(resource).addWarningV2('@odigos/aws-cdk:agentCoreEnvLimit', `Odigos: AgentCore runtime ${resource.node.path} would have ${count} environment variables, over ` +
126
+ `AgentCore's limit of ${agentcore_recipes_1.AGENTCORE_MAX_ENV_VARS}. The deployment will be rejected.`);
127
+ }
128
+ // The connector's validateAgentCoreRuntimeEnv: 4096 bytes, but 2560 on platform V2 and 1536 for a V2
129
+ // code (ZIP) artifact. The platform version is not a template property, so warn at the tighter limit.
130
+ const bytes = Object.entries(merged).reduce((n, [k, v]) => n + k.length + (typeof v === 'string' && !aws_cdk_lib_1.Token.isUnresolved(v) ? v.length : 0), 0);
131
+ const artifact = literalProperty(resource, 'AgentRuntimeArtifact');
132
+ const isCode = !!artifact && typeof artifact === 'object' && ('CodeConfiguration' in artifact || 'codeConfiguration' in artifact);
133
+ const limit = isCode ? 1536 : 2560;
134
+ if (bytes > limit) {
135
+ aws_cdk_lib_1.Annotations.of(resource).addWarningV2('@odigos/aws-cdk:agentCoreEnvSize', `Odigos: AgentCore runtime ${resource.node.path} environment is about ${bytes} bytes, over the ` +
136
+ `${limit}-byte limit AgentCore applies to ${isCode ? 'code' : 'container'} artifacts on platform V2 ` +
137
+ '(4096 otherwise). Reduce application variables or header size if the deployment is rejected.');
138
+ }
139
+ }
140
+ }
141
+ exports.OdigosAgentCoreInstrumentation = OdigosAgentCoreInstrumentation;
142
+ _a = JSII_RTTI_SYMBOL_1;
143
+ OdigosAgentCoreInstrumentation[_a] = { fqn: "@odigos/aws-cdk.OdigosAgentCoreInstrumentation", version: "0.0.22" };
144
+ // A runtime has one environment; two constructs writing it would silently overwrite each other.
145
+ OdigosAgentCoreInstrumentation.owners = new WeakMap();
146
+ /** The `AWS::BedrockAgentCore::Runtime` resource behind a target. */
147
+ function runtimeResource(runtime) {
148
+ const candidates = [runtime, runtime.node.defaultChild];
149
+ for (const c of candidates) {
150
+ if (c instanceof aws_cdk_lib_1.CfnResource && c.cfnResourceType === RUNTIME_TYPE) {
151
+ return c;
152
+ }
153
+ }
154
+ throw new Error(`Odigos: ${runtime.node.path} is not an ${RUNTIME_TYPE} resource, nor a construct whose defaultChild is ` +
155
+ 'one. Pass the CfnRuntime / CfnResource (or the L2 Runtime that wraps it).');
156
+ }
157
+ /**
158
+ * A top-level property as the resource was given it, under either spelling: PascalCase for a raw
159
+ * `CfnResource` or a `CfnInclude` resource, camelCase for a generated L1 such as `CfnRuntime`.
160
+ *
161
+ * `cfnProperties` is protected on `CfnResource`. It is read rather than resolved through the stack,
162
+ * because resolving an L2's lazy environment here would cache it before later additions.
163
+ */
164
+ function literalProperty(resource, pascal) {
165
+ const props = resource.cfnProperties ?? {};
166
+ const camel = pascal.charAt(0).toLowerCase() + pascal.slice(1);
167
+ return props[pascal] ?? props[camel];
168
+ }
169
+ /** The runtime's `AgentRuntimeName` when it is a literal string; undefined for a token or absence. */
170
+ function literalRuntimeName(resource) {
171
+ const name = literalProperty(resource, 'AgentRuntimeName');
172
+ return typeof name === 'string' && !aws_cdk_lib_1.Token.isUnresolved(name) ? name : undefined;
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FnZW50Y29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwyQ0FBbUQ7QUFDbkQsMkRBTzZCO0FBQzdCLG1DQUEySDtBQUUzSCxtREFBbUQ7QUFDbkQsTUFBTSxZQUFZLEdBQUcsZ0NBQWdDLENBQUM7QUFFdEQsd0VBQXdFO0FBQ3hFLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0FBb0U1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFhLDhCQUErQixTQUFRLHNCQUFTO0lBTTNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEM7UUFDbEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhGLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUloRCxJQUFBLGdEQUE0QixFQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9CLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxxQ0FBcUMsRUFDckUsa0dBQWtHLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFD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LE1BQWM7SUFDNUQsTUFBTSxLQUFLLEdBQUksUUFBc0UsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO0lBQzFHLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELHNHQUFzRztBQUN0RyxTQUFTLGtCQUFrQixDQUFDLFFBQXFCO0lBQy9DLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMzRCxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNsRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIENmblJlc291cmNlLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgQUdFTlRDT1JFX01BWF9FTlZfVkFSUyxcbiAgYWdlbnRDb3JlQWRvcHRFbnZpcm9ubWVudCxcbiAgYWdlbnRDb3JlRGlzdHJvTmFtZSxcbiAgYWdlbnRDb3JlRW52aXJvbm1lbnQsXG4gIHZhbGlkYXRlQWdlbnRDb3JlRGVzdGluYXRpb24sXG4gIHZhbGlkYXRlQWdlbnRDb3JlRW52aXJvbm1lbnQsXG59IGZyb20gJy4vYWdlbnRjb3JlLXJlY2lwZXMnO1xuaW1wb3J0IHsgT2RpZ29zQWdlbnRDb3JlRGVsaXZlcnksIE9kaWdvc0FnZW50Q29yZURpc3RyaWJ1dGlvbiwgT2RpZ29zQWdlbnRDb3JlTGFuZ3VhZ2UsIE9kaWdvc0Rlc3RpbmF0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKiBDbG91ZEZvcm1hdGlvbiB0eXBlIG9mIGFuIEFnZW50Q29yZSBSdW50aW1lLiAqL1xuY29uc3QgUlVOVElNRV9UWVBFID0gJ0FXUzo6QmVkcm9ja0FnZW50Q29yZTo6UnVudGltZSc7XG5cbi8qKiBQcm9wZXJ0eSBwYXRoIHByZWZpeCB0aGUgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGFyZSB3cml0dGVuIHVuZGVyLiAqL1xuY29uc3QgRU5WX1BST1BFUlRZID0gJ0Vudmlyb25tZW50VmFyaWFibGVzJztcblxuLyoqXG4gKiBPbmUgQWdlbnRDb3JlIFJ1bnRpbWUgdG8gaW5zdHJ1bWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPZGlnb3NBZ2VudENvcmVUYXJnZXQge1xuICAvKipcbiAgICogVGhlIHJ1bnRpbWU6IGFuIGBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWVgIGBDZm5SZXNvdXJjZWAgKGFuIEwxIGBDZm5SdW50aW1lYCwgYSByYXdcbiAgICogYENmblJlc291cmNlYCwgb3IgYSByZXNvdXJjZSBmcm9tIGBDZm5JbmNsdWRlLmdldFJlc291cmNlKClgKSwgb3IgYW55IGNvbnN0cnVjdCB3aG9zZVxuICAgKiBgbm9kZS5kZWZhdWx0Q2hpbGRgIGlzIG9uZSDigJQgc3VjaCBhcyB0aGUgTDIgYFJ1bnRpbWVgIGluIG5ld2VyIGBhd3MtY2RrLWxpYmAgcmVsZWFzZXMuXG4gICAqL1xuICByZWFkb25seSBydW50aW1lOiBJQ29uc3RydWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2Ugb2YgdGhlIGFwcGxpY2F0aW9uLCBhbmQgb2YgdGhlIE9kaWdvcyBTREsgcHJvZmlsZSBwcmVwYXJlZCBpbnRvIGl0cyBhcnRpZmFjdC5cbiAgICpcbiAgICogU3RhdGVkIHJhdGhlciB0aGFuIGRldGVjdGVkOiB3aGF0IG1hdHRlcnMgaXMgaG93IHRoZSBhcnRpZmFjdCB3YXMgcHJlcGFyZWQsIHdoaWNoIHRoZSB0ZW1wbGF0ZSBkb2VzXG4gICAqIG5vdCBzYXkuXG4gICAqL1xuICByZWFkb25seSBsYW5ndWFnZTogT2RpZ29zQWdlbnRDb3JlTGFuZ3VhZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBTREsgcHJvZmlsZSBwcmVwYXJlZCBpbnRvIHRoZSBhcnRpZmFjdC4gTXVzdCBiZSB0aGUgb25lIGFjdHVhbGx5IGJ1bmRsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9kaWdvc0FnZW50Q29yZURpc3RyaWJ1dGlvbi5BRE9UXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBPZGlnb3NBZ2VudENvcmVEaXN0cmlidXRpb247XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgYXJ0aWZhY3QgY2FycmllcyB0aGUgU0RLOiB0aGUgT2RpZ29zIHBhY2thZ2Ugb3IgY2FycmllciBidW5kbGUgKGBQQUNLQUdFYCksIG9yIEFXUyBEaXN0cm8gZm9yXG4gICAqIE9wZW5UZWxlbWV0cnkgb25seSAoYEFET1BUYCkuIE11c3QgbWF0Y2ggaG93IHRoZSBhcnRpZmFjdCB3YXMgcHJlcGFyZWQ7IGBBRE9QVGAgcmVxdWlyZXMgdGhlIEFET1RcbiAgICogZGlzdHJpYnV0aW9uIGFuZCBsZWF2ZXMgQWdlbnRDb3JlJ3Mgb3duIHNlcnZpY2Ugc3BhbiBtaXNzaW5nIGZyb20gdGhlIHRyYWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBPZGlnb3NBZ2VudENvcmVEZWxpdmVyeS5QQUNLQUdFXG4gICAqL1xuICByZWFkb25seSBkZWxpdmVyeT86IE9kaWdvc0FnZW50Q29yZURlbGl2ZXJ5O1xuXG4gIC8qKlxuICAgKiBgT1RFTF9TRVJWSUNFX05BTUVgIGZvciB0aGlzIHJ1bnRpbWUuXG4gICAqXG4gICAqIFRISVMgTVVTVCBNQVRDSCBUSEUgV09SS0xPQUQnUyBOQU1FIElOIE9ESUdPUywgd2hpY2ggZm9yIGFuIEFnZW50Q29yZSBydW50aW1lIGlzIHRoZSBydW50aW1lIG5hbWVcbiAgICogdW5sZXNzIGEgc2VydmljZSBuYW1lIG92ZXJyaWRlIGlzIGNvbmZpZ3VyZWQgaW4gT2RpZ29zLiBBIGRpZmZlcmVudCB2YWx1ZSBpcyByZXBvcnRlZCBhcyBkcmlmdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcnVudGltZSdzIGBBZ2VudFJ1bnRpbWVOYW1lYDsgcmVxdWlyZWQgd2hlbiB0aGF0IGlzIG5vdCBhIGxpdGVyYWwgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3Ige0BsaW5rIE9kaWdvc0FnZW50Q29yZUluc3RydW1lbnRhdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2RpZ29zQWdlbnRDb3JlSW5zdHJ1bWVudGF0aW9uUHJvcHMge1xuICAvKipcbiAgICogV2hlcmUgdGhlIHJ1bnRpbWVzIGV4cG9ydCB0ZWxlbWV0cnkgdG8uXG4gICAqXG4gICAqIEFnZW50Q29yZSBleHBvcnRzIHN0cmFpZ2h0IHRvIGEgZ2xvYmFsIE9UTFAvSFRUUCBkZXN0aW5hdGlvbjogYGh0dHBFbmRwb2ludGAgbXVzdCBiZSBzZXQsIGFzIGEgYmFzZVxuICAgKiBVUkwgd2l0aCBubyBwZXItc2lnbmFsIGAvdjEvLi4uYCBwYXRoLCBhbmQgYGVuZHBvaW50YCAoZ1JQQykgbXVzdCBub3QgYmUuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogT2RpZ29zRGVzdGluYXRpb247XG5cbiAgLyoqXG4gICAqIFJ1bnRpbWVzIHRvIGluc3RydW1lbnQgb24gY29uc3RydWN0aW9uLiBNb3JlIGNhbiBiZSBhZGRlZCB3aXRoIGBpbnN0cnVtZW50KClgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldHM/OiBPZGlnb3NBZ2VudENvcmVUYXJnZXRbXTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgdGhlIE9kaWdvcyBlbnZpcm9ubWVudCByZWNpcGUgb250byBBbWF6b24gQmVkcm9jayBBZ2VudENvcmUgUnVudGltZXMuXG4gKlxuICogYGBgdHNcbiAqIG5ldyBPZGlnb3NBZ2VudENvcmVJbnN0cnVtZW50YXRpb24odGhpcywgJ09kaWdvcycsIHtcbiAqICAgZGVzdGluYXRpb246IHsgaHR0cEVuZHBvaW50OiAnaHR0cHM6Ly9vdGxwLmV4YW1wbGUuY29tOjQzMTgnIH0sXG4gKiAgIHRhcmdldHM6IFt7IHJ1bnRpbWUsIGxhbmd1YWdlOiBPZGlnb3NBZ2VudENvcmVMYW5ndWFnZS5QWVRIT04gfV0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICMjIFdoYXQgaXQgZG9lc1xuICpcbiAqIFNldHMsIHRocm91Z2ggcHJvcGVydHkgb3ZlcnJpZGVzIG9uIHRoZSBydW50aW1lJ3MgYEVudmlyb25tZW50VmFyaWFibGVzYCwgdGhlIGV4YWN0IGVudmlyb25tZW50IHRoZVxuICogT2RpZ29zIEFXUyBjb25uZWN0b3IgZXhwZWN0cyBmb3IgYSBtYW51YWxseSBpbnN0cnVtZW50ZWQgcnVudGltZSDigJQgdGhlIGV4cG9ydCBzZXR0aW5ncywgdGhlIFNES1xuICogcHJvZmlsZSBzZWxlY3Rpb24sIHRoZSBgT0RJR09TX0FHRU5UQ09SRV9QQUNLQUdFYCBwcmVwYXJhdGlvbiBjb250cmFjdCBhbmQgdGhlIGBPRElHT1NfSUFDYCBtYXJrZXIg4oCUXG4gKiBhbmQgcmVtb3ZlcyB0aGUgcGVyLXNpZ25hbCBoZWFkZXIgdmFyaWFibGVzLCBgT0RJR09TX01BTkFHRURgLCBhbmQgKHdoZW4gdGhlIGRlc3RpbmF0aW9uIGhhcyBub1xuICogaGVhZGVycykgYE9URUxfRVhQT1JURVJfT1RMUF9IRUFERVJTYC4gVmFyaWFibGVzIHRoZSBydW50aW1lIGFscmVhZHkgc2V0cyBhcmUga2VwdC5cbiAqXG4gKiAjIyBXaGF0IGl0IGRvZXMgTk9UIGRvXG4gKlxuICogSXQgZG9lcyBub3QgcHJlcGFyZSB0aGUgYXJ0aWZhY3QuIFRoZSBPZGlnb3MgU0RLIGJ1bmRsZSBhbmQgaXRzIGJvb3RzdHJhcCAoYGRlbGl2ZXJ5OiBQQUNLQUdFYCksIG9yIEFET1RcbiAqIGFuZCBpdHMgbGF1bmNoZXIgKGBkZWxpdmVyeTogQURPUFRgKSwgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBpbWFnZSBvciBaSVAgdGhlIHJ1bnRpbWUgZGVwbG95czsgdGhlXG4gKiBlbnZpcm9ubWVudCBhbG9uZSBpbnN0YWxscyBub3RoaW5nLCBhbmQgdGhlIGNvbnN0cnVjdCBkb2VzIG5vdCB3cml0ZSBgTk9ERV9PUFRJT05TYC4gU2VlXG4gKiBodHRwczovL2RvY3Mub2RpZ29zLmlvL2Nsb3VkLWNvbm5lY3RvcnMvYXdzL3dvcmtsb2Fkcy9hZ2VudGNvcmUvcHJlcGFyZS5cbiAqXG4gKiAjIyBEbyBub3QgYWxzbyBlbmFibGUgY29ubmVjdG9yIGF1dG9tYXRpYyBtb2RlIGZvciB0aGVzZSBydW50aW1lc1xuICpcbiAqIFRoZSBjb25uZWN0b3IgcmVmdXNlcyB0byBtYW5hZ2UgYSBydW50aW1lIGNhcnJ5aW5nIGBPRElHT1NfSUFDYCwgYW5kIGFuIElhQy1vd25lZCBydW50aW1lIHRoYXQgdGhlXG4gKiBjb25uZWN0b3IgYWxzbyB0cmllcyB0byBvd24gaXMgcmVwb3J0ZWQgYXMgYW4gZXJyb3IgaW5zdGVhZCBvZiBiZWluZyBpbnN0cnVtZW50ZWQgdHdpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBPZGlnb3NBZ2VudENvcmVJbnN0cnVtZW50YXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvLyBBIHJ1bnRpbWUgaGFzIG9uZSBlbnZpcm9ubWVudDsgdHdvIGNvbnN0cnVjdHMgd3JpdGluZyBpdCB3b3VsZCBzaWxlbnRseSBvdmVyd3JpdGUgZWFjaCBvdGhlci5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgb3duZXJzID0gbmV3IFdlYWtNYXA8Q2ZuUmVzb3VyY2UsIE9kaWdvc0FnZW50Q29yZUluc3RydW1lbnRhdGlvbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0aW5hdGlvbjogT2RpZ29zRGVzdGluYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdHJ1bWVudGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9kaWdvc0FnZW50Q29yZUluc3RydW1lbnRhdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB2YWxpZGF0ZUFnZW50Q29yZURlc3RpbmF0aW9uKHByb3BzLmRlc3RpbmF0aW9uKTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgaWYgKHByb3BzLmRlc3RpbmF0aW9uLnByb2ZpbGVzKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nVjIoJ0BvZGlnb3MvYXdzLWNkazpwcm9maWxlc1Vuc3VwcG9ydGVkJyxcbiAgICAgICAgJ1RoZSBBZ2VudENvcmUgU0RLIHByb2ZpbGVzIGRvIG5vdCBnZW5lcmF0ZSBPVExQIHByb2ZpbGVzLiBPdGhlciBzZWxlY3RlZCBzaWduYWxzIHJlbWFpbiBlbmFibGVkLicpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gcHJvcHMuZGVzdGluYXRpb24uaGVhZGVycyA/PyB7fTtcbiAgICBpZiAoT2JqZWN0LmVudHJpZXMoaGVhZGVycykuc29tZSgoW2ssIHZdKSA9PiBUb2tlbi5pc1VucmVzb2x2ZWQoaykgfHwgVG9rZW4uaXNVbnJlc29sdmVkKHYpKSkge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZ1YyKCdAb2RpZ29zL2F3cy1jZGs6YWdlbnRDb3JlSGVhZGVyVG9rZW4nLFxuICAgICAgICAnT2RpZ29zOiBhIGRlc3RpbmF0aW9uIGhlYWRlciBrZXkgb3IgdmFsdWUgaXMgYW4gdW5yZXNvbHZlZCB0b2tlbiwgc28gaXQgaXMgd3JpdHRlbiB1bmVuY29kZWQgaW50byAnICtcbiAgICAgICAgICAnT1RFTF9FWFBPUlRFUl9PVExQX0hFQURFUlMuIE1ha2Ugc3VyZSBpdCByZXNvbHZlcyB0byBhbiBhbHJlYWR5IHBlcmNlbnQtZW5jb2RlZCB2YWx1ZS4nKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgcHJvcHMudGFyZ2V0cyA/PyBbXSkge1xuICAgICAgdGhpcy5pbnN0cnVtZW50KHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc3RydW1lbnRzIG9uZSBydW50aW1lLiBJZGVtcG90ZW50IOKAlCBpbnN0cnVtZW50aW5nIHRoZSBzYW1lIHJ1bnRpbWUgYWdhaW4gaXMgYSBuby1vcC5cbiAgICovXG4gIHB1YmxpYyBpbnN0cnVtZW50KHRhcmdldDogT2RpZ29zQWdlbnRDb3JlVGFyZ2V0KTogdm9pZCB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBydW50aW1lUmVzb3VyY2UodGFyZ2V0LnJ1bnRpbWUpO1xuICAgIGNvbnN0IGtleSA9IHJlc291cmNlLm5vZGUucGF0aDtcbiAgICBpZiAodGhpcy5pbnN0cnVtZW50ZWQuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3duZXIgPSBPZGlnb3NBZ2VudENvcmVJbnN0cnVtZW50YXRpb24ub3duZXJzLmdldChyZXNvdXJjZSk7XG4gICAgaWYgKG93bmVyICYmIG93bmVyICE9PSB0aGlzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9kaWdvczogQWdlbnRDb3JlIHJ1bnRpbWUgJHtrZXl9IGlzIGFscmVhZHkgaW5zdHJ1bWVudGVkLiBSZXVzZSBpdHMgb3JpZ2luYWwgaW5zdHJ1bWVudGF0aW9uIGNvbnN0cnVjdC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5ndWFnZSA9IHRhcmdldC5sYW5ndWFnZTtcbiAgICBjb25zdCBkZWxpdmVyeSA9IHRhcmdldC5kZWxpdmVyeSA/PyBPZGlnb3NBZ2VudENvcmVEZWxpdmVyeS5QQUNLQUdFO1xuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IHRhcmdldC5kaXN0cmlidXRpb24gPz8gT2RpZ29zQWdlbnRDb3JlRGlzdHJpYnV0aW9uLkFET1Q7XG4gICAgaWYgKGRlbGl2ZXJ5ID09PSBPZGlnb3NBZ2VudENvcmVEZWxpdmVyeS5BRE9QVCAmJiBkaXN0cmlidXRpb24gIT09IE9kaWdvc0FnZW50Q29yZURpc3RyaWJ1dGlvbi5BRE9UKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBPZGlnb3M6IEFnZW50Q29yZSBydW50aW1lICR7a2V5fSB1c2VzIGRlbGl2ZXJ5IEFET1BULCB3aGljaCBjb25maWd1cmVzIHRoZSBBRE9UIHRoZSBhcnRpZmFjdCBhbHJlYWR5IGAgK1xuICAgICAgICAgIGBydW5zOyBkaXN0cmlidXRpb24gJHtkaXN0cmlidXRpb259IG5lZWRzIHRoZSBPZGlnb3MgcGFja2FnZSAoZGVsaXZlcnkgUEFDS0FHRSkuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGRpc3RybyA9IGFnZW50Q29yZURpc3Ryb05hbWUobGFuZ3VhZ2UsIGRpc3RyaWJ1dGlvbik7XG4gICAgY29uc3Qgc2VydmljZSA9IHRhcmdldC5zZXJ2aWNlTmFtZSA/PyBsaXRlcmFsUnVudGltZU5hbWUocmVzb3VyY2UpO1xuICAgIGlmIChzZXJ2aWNlID09PSB1bmRlZmluZWQgfHwgc2VydmljZSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE9kaWdvczogQWdlbnRDb3JlIHJ1bnRpbWUgJHtrZXl9IGhhcyBubyBsaXRlcmFsIEFnZW50UnVudGltZU5hbWUsIHNvIE9URUxfU0VSVklDRV9OQU1FIGNhbm5vdCBiZSBgICtcbiAgICAgICAgICAnZGVyaXZlZC4gUGFzcyBgc2VydmljZU5hbWVgIHdpdGggdGhlIG5hbWUgT2RpZ29zIHJlcG9ydHMgdGhlIHJ1bnRpbWUgdW5kZXIuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZW52ID0gZGVsaXZlcnkgPT09IE9kaWdvc0FnZW50Q29yZURlbGl2ZXJ5LkFET1BUXG4gICAgICA/IGFnZW50Q29yZUFkb3B0RW52aXJvbm1lbnQobGFuZ3VhZ2UsIHNlcnZpY2UsIHRoaXMuZGVzdGluYXRpb24pXG4gICAgICA6IGFnZW50Q29yZUVudmlyb25tZW50KGxhbmd1YWdlLCBkaXN0cm8sIHNlcnZpY2UsIHRoaXMuZGVzdGluYXRpb24pO1xuICAgIHZhbGlkYXRlQWdlbnRDb3JlRW52aXJvbm1lbnQoZW52LnNldCk7XG4gICAgdGhpcy5jaGVja0V4aXN0aW5nKHJlc291cmNlLCBlbnYuc2V0LCBlbnYucmVtb3ZlKTtcblxuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlbnYuc2V0KSkge1xuICAgICAgcmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZShgJHtFTlZfUFJPUEVSVFl9LiR7bmFtZX1gLCB2YWx1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlbnYucmVtb3ZlKSB7XG4gICAgICByZXNvdXJjZS5hZGRQcm9wZXJ0eURlbGV0aW9uT3ZlcnJpZGUoYCR7RU5WX1BST1BFUlRZfS4ke25hbWV9YCk7XG4gICAgfVxuICAgIHRoaXMuaW5zdHJ1bWVudGVkLmFkZChrZXkpO1xuICAgIE9kaWdvc0FnZW50Q29yZUluc3RydW1lbnRhdGlvbi5vd25lcnMuc2V0KHJlc291cmNlLCB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXJucyBhYm91dCB3aGF0IHN5bnRoIGNhbiBzZWUgb2YgdGhlIHJ1bnRpbWUncyBvd24gZW52aXJvbm1lbnQ6IHZhcmlhYmxlcyB0aGUgcmVjaXBlIHJlcGxhY2VzLCBhXG4gICAqIHRvdGFsIG92ZXIgQWdlbnRDb3JlJ3MgNTAtdmFyaWFibGUgY2FwLCBhbmQgYSBzaXplIG92ZXIgdGhlIHBsYXRmb3JtJ3MgYnl0ZSBidWRnZXQuIEV4aXN0aW5nIHZhcmlhYmxlc1xuICAgKiBhcmUgb25seSBjb3VudGVkIHdoZW4gdGhlIGVudmlyb25tZW50IGlzIGEgbGl0ZXJhbCBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIGNoZWNrRXhpc3RpbmcocmVzb3VyY2U6IENmblJlc291cmNlLCBzZXQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIHJlbW92ZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBleGlzdGluZyA9IGxpdGVyYWxQcm9wZXJ0eShyZXNvdXJjZSwgJ0Vudmlyb25tZW50VmFyaWFibGVzJyk7XG4gICAgY29uc3QgY3VycmVudDogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPVxuICAgICAgZXhpc3RpbmcgJiYgdHlwZW9mIGV4aXN0aW5nID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShleGlzdGluZykgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChleGlzdGluZylcbiAgICAgICAgPyBleGlzdGluZyBhcyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxuICAgICAgICA6IHt9O1xuICAgIGNvbnN0IHJlcGxhY2VkID0gT2JqZWN0LmtleXMoc2V0KVxuICAgICAgLmZpbHRlcigoaykgPT4gIWsuc3RhcnRzV2l0aCgnT0RJR09TXycpICYmIHR5cGVvZiBjdXJyZW50W2tdID09PSAnc3RyaW5nJyAmJiBjdXJyZW50W2tdICE9PSBzZXRba10pXG4gICAgICAuc29ydCgpO1xuICAgIGlmIChyZXBsYWNlZC5sZW5ndGgpIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHJlc291cmNlKS5hZGRXYXJuaW5nVjIoJ0BvZGlnb3MvYXdzLWNkazphZ2VudENvcmVFbnZPdmVyd3JpdHRlbicsXG4gICAgICAgIGBPZGlnb3M6IEFnZW50Q29yZSBydW50aW1lICR7cmVzb3VyY2Uubm9kZS5wYXRofSBhbHJlYWR5IHNldHMgJHtyZXBsYWNlZC5qb2luKCcsICcpfSwgd2hpY2ggdGhlIGAgK1xuICAgICAgICAgICdPZGlnb3MgcmVjaXBlIHJlcGxhY2VzLiBUaGUgY29ubmVjdG9yIGNvbXBhcmVzIHRoZXNlIGV4YWN0bHksIHNvIHRoZXkgY2Fubm90IGJlIGtlcHQuJyk7XG4gICAgfVxuICAgIGNvbnN0IG1lcmdlZDogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7IC4uLmN1cnJlbnQsIC4uLnNldCB9O1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiByZW1vdmUpIHtcbiAgICAgIGRlbGV0ZSBtZXJnZWRbbmFtZV07XG4gICAgfVxuICAgIGNvbnN0IGNvdW50ID0gT2JqZWN0LmtleXMobWVyZ2VkKS5sZW5ndGg7XG4gICAgaWYgKGNvdW50ID4gQUdFTlRDT1JFX01BWF9FTlZfVkFSUykge1xuICAgICAgQW5ub3RhdGlvbnMub2YocmVzb3VyY2UpLmFkZFdhcm5pbmdWMignQG9kaWdvcy9hd3MtY2RrOmFnZW50Q29yZUVudkxpbWl0JyxcbiAgICAgICAgYE9kaWdvczogQWdlbnRDb3JlIHJ1bnRpbWUgJHtyZXNvdXJjZS5ub2RlLnBhdGh9IHdvdWxkIGhhdmUgJHtjb3VudH0gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvdmVyIGAgK1xuICAgICAgICAgIGBBZ2VudENvcmUncyBsaW1pdCBvZiAke0FHRU5UQ09SRV9NQVhfRU5WX1ZBUlN9LiBUaGUgZGVwbG95bWVudCB3aWxsIGJlIHJlamVjdGVkLmApO1xuICAgIH1cbiAgICAvLyBUaGUgY29ubmVjdG9yJ3MgdmFsaWRhdGVBZ2VudENvcmVSdW50aW1lRW52OiA0MDk2IGJ5dGVzLCBidXQgMjU2MCBvbiBwbGF0Zm9ybSBWMiBhbmQgMTUzNiBmb3IgYSBWMlxuICAgIC8vIGNvZGUgKFpJUCkgYXJ0aWZhY3QuIFRoZSBwbGF0Zm9ybSB2ZXJzaW9uIGlzIG5vdCBhIHRlbXBsYXRlIHByb3BlcnR5LCBzbyB3YXJuIGF0IHRoZSB0aWdodGVyIGxpbWl0LlxuICAgIGNvbnN0IGJ5dGVzID0gT2JqZWN0LmVudHJpZXMobWVyZ2VkKS5yZWR1Y2UoKG4sIFtrLCB2XSkgPT4gbiArIGsubGVuZ3RoICsgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHYpID8gdi5sZW5ndGggOiAwKSwgMCk7XG4gICAgY29uc3QgYXJ0aWZhY3QgPSBsaXRlcmFsUHJvcGVydHkocmVzb3VyY2UsICdBZ2VudFJ1bnRpbWVBcnRpZmFjdCcpIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGlzQ29kZSA9ICEhYXJ0aWZhY3QgJiYgdHlwZW9mIGFydGlmYWN0ID09PSAnb2JqZWN0JyAmJiAoJ0NvZGVDb25maWd1cmF0aW9uJyBpbiBhcnRpZmFjdCB8fCAnY29kZUNvbmZpZ3VyYXRpb24nIGluIGFydGlmYWN0KTtcbiAgICBjb25zdCBsaW1pdCA9IGlzQ29kZSA/IDE1MzYgOiAyNTYwO1xuICAgIGlmIChieXRlcyA+IGxpbWl0KSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZihyZXNvdXJjZSkuYWRkV2FybmluZ1YyKCdAb2RpZ29zL2F3cy1jZGs6YWdlbnRDb3JlRW52U2l6ZScsXG4gICAgICAgIGBPZGlnb3M6IEFnZW50Q29yZSBydW50aW1lICR7cmVzb3VyY2Uubm9kZS5wYXRofSBlbnZpcm9ubWVudCBpcyBhYm91dCAke2J5dGVzfSBieXRlcywgb3ZlciB0aGUgYCArXG4gICAgICAgICAgYCR7bGltaXR9LWJ5dGUgbGltaXQgQWdlbnRDb3JlIGFwcGxpZXMgdG8gJHtpc0NvZGUgPyAnY29kZScgOiAnY29udGFpbmVyJ30gYXJ0aWZhY3RzIG9uIHBsYXRmb3JtIFYyIGAgK1xuICAgICAgICAgICcoNDA5NiBvdGhlcndpc2UpLiBSZWR1Y2UgYXBwbGljYXRpb24gdmFyaWFibGVzIG9yIGhlYWRlciBzaXplIGlmIHRoZSBkZXBsb3ltZW50IGlzIHJlamVjdGVkLicpO1xuICAgIH1cbiAgfVxufVxuXG4vKiogVGhlIGBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWVgIHJlc291cmNlIGJlaGluZCBhIHRhcmdldC4gKi9cbmZ1bmN0aW9uIHJ1bnRpbWVSZXNvdXJjZShydW50aW1lOiBJQ29uc3RydWN0KTogQ2ZuUmVzb3VyY2Uge1xuICBjb25zdCBjYW5kaWRhdGVzID0gW3J1bnRpbWUsIHJ1bnRpbWUubm9kZS5kZWZhdWx0Q2hpbGRdO1xuICBmb3IgKGNvbnN0IGMgb2YgY2FuZGlkYXRlcykge1xuICAgIGlmIChjIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UgJiYgYy5jZm5SZXNvdXJjZVR5cGUgPT09IFJVTlRJTUVfVFlQRSkge1xuICAgICAgcmV0dXJuIGM7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgT2RpZ29zOiAke3J1bnRpbWUubm9kZS5wYXRofSBpcyBub3QgYW4gJHtSVU5USU1FX1RZUEV9IHJlc291cmNlLCBub3IgYSBjb25zdHJ1Y3Qgd2hvc2UgZGVmYXVsdENoaWxkIGlzIGAgK1xuICAgICAgJ29uZS4gUGFzcyB0aGUgQ2ZuUnVudGltZSAvIENmblJlc291cmNlIChvciB0aGUgTDIgUnVudGltZSB0aGF0IHdyYXBzIGl0KS4nLFxuICApO1xufVxuXG4vKipcbiAqIEEgdG9wLWxldmVsIHByb3BlcnR5IGFzIHRoZSByZXNvdXJjZSB3YXMgZ2l2ZW4gaXQsIHVuZGVyIGVpdGhlciBzcGVsbGluZzogUGFzY2FsQ2FzZSBmb3IgYSByYXdcbiAqIGBDZm5SZXNvdXJjZWAgb3IgYSBgQ2ZuSW5jbHVkZWAgcmVzb3VyY2UsIGNhbWVsQ2FzZSBmb3IgYSBnZW5lcmF0ZWQgTDEgc3VjaCBhcyBgQ2ZuUnVudGltZWAuXG4gKlxuICogYGNmblByb3BlcnRpZXNgIGlzIHByb3RlY3RlZCBvbiBgQ2ZuUmVzb3VyY2VgLiBJdCBpcyByZWFkIHJhdGhlciB0aGFuIHJlc29sdmVkIHRocm91Z2ggdGhlIHN0YWNrLFxuICogYmVjYXVzZSByZXNvbHZpbmcgYW4gTDIncyBsYXp5IGVudmlyb25tZW50IGhlcmUgd291bGQgY2FjaGUgaXQgYmVmb3JlIGxhdGVyIGFkZGl0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbGl0ZXJhbFByb3BlcnR5KHJlc291cmNlOiBDZm5SZXNvdXJjZSwgcGFzY2FsOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgY29uc3QgcHJvcHMgPSAocmVzb3VyY2UgYXMgdW5rbm93biBhcyB7IGNmblByb3BlcnRpZXM/OiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB9KS5jZm5Qcm9wZXJ0aWVzID8/IHt9O1xuICBjb25zdCBjYW1lbCA9IHBhc2NhbC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHBhc2NhbC5zbGljZSgxKTtcbiAgcmV0dXJuIHByb3BzW3Bhc2NhbF0gPz8gcHJvcHNbY2FtZWxdO1xufVxuXG4vKiogVGhlIHJ1bnRpbWUncyBgQWdlbnRSdW50aW1lTmFtZWAgd2hlbiBpdCBpcyBhIGxpdGVyYWwgc3RyaW5nOyB1bmRlZmluZWQgZm9yIGEgdG9rZW4gb3IgYWJzZW5jZS4gKi9cbmZ1bmN0aW9uIGxpdGVyYWxSdW50aW1lTmFtZShyZXNvdXJjZTogQ2ZuUmVzb3VyY2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBuYW1lID0gbGl0ZXJhbFByb3BlcnR5KHJlc291cmNlLCAnQWdlbnRSdW50aW1lTmFtZScpO1xuICByZXR1cm4gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmICFUb2tlbi5pc1VucmVzb2x2ZWQobmFtZSkgPyBuYW1lIDogdW5kZWZpbmVkO1xufVxuIl19
package/lib/fargate.js CHANGED
@@ -406,7 +406,7 @@ class OdigosFargateInstrumentation extends constructs_1.Construct {
406
406
  }
407
407
  exports.OdigosFargateInstrumentation = OdigosFargateInstrumentation;
408
408
  _a = JSII_RTTI_SYMBOL_1;
409
- OdigosFargateInstrumentation[_a] = { fqn: "@odigos/aws-cdk.OdigosFargateInstrumentation", version: "0.0.20" };
409
+ OdigosFargateInstrumentation[_a] = { fqn: "@odigos/aws-cdk.OdigosFargateInstrumentation", version: "0.0.22" };
410
410
  // A task can contain targets configured by several instrumentation constructs.
411
411
  OdigosFargateInstrumentation.taskDefinitions = new WeakMap();
412
412
  OdigosFargateInstrumentation.owners = new WeakMap();
@@ -0,0 +1,26 @@
1
+ /**
2
+ * GENERATED FILE — DO NOT EDIT.
3
+ *
4
+ * Produced by cdk/scripts/generate.ts from ../artifacts.json, ../versions.env and manifest/layers.json.
5
+ * Run `npm run generate` (or `npm run build`) to refresh it.
6
+ *
7
+ * Odigos artifact version: v0.0.22
8
+ */
9
+ /**
10
+ * The AgentCore SDK bundle carrier (linux/arm64) for this package's release, holding the prepared profiles
11
+ * under /var/odigos/agentcore/<language>/<version>. Copy from it when preparing an artifact; the
12
+ * construct itself does not reference it. Empty before the first release.
13
+ */
14
+ export declare const AGENTCORE_AGENTS_IMAGE = "registry.odigos.io/odigos-agentcore-agents:v0.0.22";
15
+ /** The connector's AgentCore environment recipe version, recorded as `recipe` in ODIGOS_IAC. */
16
+ export declare const AGENTCORE_RECIPE_VERSION = "1";
17
+ /** One prepared AgentCore SDK profile, mirrored from the connector's catalog. */
18
+ export interface AgentCoreDistribution {
19
+ readonly name: string;
20
+ readonly displayName: string;
21
+ readonly language: string;
22
+ readonly vendor: string;
23
+ readonly isDefault: boolean;
24
+ readonly version: string;
25
+ }
26
+ export declare const AGENTCORE_DISTRIBUTIONS: readonly AgentCoreDistribution[];
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /* eslint-disable */
3
+ /**
4
+ * GENERATED FILE — DO NOT EDIT.
5
+ *
6
+ * Produced by cdk/scripts/generate.ts from ../artifacts.json, ../versions.env and manifest/layers.json.
7
+ * Run `npm run generate` (or `npm run build`) to refresh it.
8
+ *
9
+ * Odigos artifact version: v0.0.22
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AGENTCORE_DISTRIBUTIONS = exports.AGENTCORE_RECIPE_VERSION = exports.AGENTCORE_AGENTS_IMAGE = void 0;
13
+ /**
14
+ * The AgentCore SDK bundle carrier (linux/arm64) for this package's release, holding the prepared profiles
15
+ * under /var/odigos/agentcore/<language>/<version>. Copy from it when preparing an artifact; the
16
+ * construct itself does not reference it. Empty before the first release.
17
+ */
18
+ exports.AGENTCORE_AGENTS_IMAGE = "registry.odigos.io/odigos-agentcore-agents:v0.0.22";
19
+ /** The connector's AgentCore environment recipe version, recorded as `recipe` in ODIGOS_IAC. */
20
+ exports.AGENTCORE_RECIPE_VERSION = "1";
21
+ exports.AGENTCORE_DISTRIBUTIONS = [
22
+ {
23
+ "name": "python-agentcore-adot",
24
+ "displayName": "AWS Distro for OpenTelemetry",
25
+ "language": "python",
26
+ "vendor": "adot",
27
+ "isDefault": true,
28
+ "version": "1"
29
+ },
30
+ {
31
+ "name": "python-agentcore-openllmetry",
32
+ "displayName": "OpenLLMetry Bedrock",
33
+ "language": "python",
34
+ "vendor": "openllmetry",
35
+ "isDefault": false,
36
+ "version": "1"
37
+ },
38
+ {
39
+ "name": "nodejs-agentcore-adot",
40
+ "displayName": "AWS Distro for OpenTelemetry",
41
+ "language": "nodejs",
42
+ "vendor": "adot",
43
+ "isDefault": true,
44
+ "version": "1"
45
+ },
46
+ {
47
+ "name": "nodejs-agentcore-openllmetry",
48
+ "displayName": "OpenLLMetry Bedrock",
49
+ "language": "nodejs",
50
+ "vendor": "openllmetry",
51
+ "isDefault": false,
52
+ "version": "1"
53
+ }
54
+ ];
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC9hZ2VudGNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQjs7Ozs7OztHQU9HOzs7QUFFSDs7OztHQUlHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxvREFBb0QsQ0FBQztBQUUzRixnR0FBZ0c7QUFDbkYsUUFBQSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFZL0IsUUFBQSx1QkFBdUIsR0FBcUM7SUFDdkU7UUFDRSxNQUFNLEVBQUUsdUJBQXVCO1FBQy9CLGFBQWEsRUFBRSw4QkFBOEI7UUFDN0MsVUFBVSxFQUFFLFFBQVE7UUFDcEIsUUFBUSxFQUFFLE1BQU07UUFDaEIsV0FBVyxFQUFFLElBQUk7UUFDakIsU0FBUyxFQUFFLEdBQUc7S0FDZjtJQUNEO1FBQ0UsTUFBTSxFQUFFLDhCQUE4QjtRQUN0QyxhQUFhLEVBQUUscUJBQXFCO1FBQ3BDLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFNBQVMsRUFBRSxHQUFHO0tBQ2Y7SUFDRDtRQUNFLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsYUFBYSxFQUFFLDhCQUE4QjtRQUM3QyxVQUFVLEVBQUUsUUFBUTtRQUNwQixRQUFRLEVBQUUsTUFBTTtRQUNoQixXQUFXLEVBQUUsSUFBSTtRQUNqQixTQUFTLEVBQUUsR0FBRztLQUNmO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsOEJBQThCO1FBQ3RDLGFBQWEsRUFBRSxxQkFBcUI7UUFDcEMsVUFBVSxFQUFFLFFBQVE7UUFDcEIsUUFBUSxFQUFFLGFBQWE7UUFDdkIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsU0FBUyxFQUFFLEdBQUc7S0FDZjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyoqXG4gKiBHRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQuXG4gKlxuICogUHJvZHVjZWQgYnkgY2RrL3NjcmlwdHMvZ2VuZXJhdGUudHMgZnJvbSAuLi9hcnRpZmFjdHMuanNvbiwgLi4vdmVyc2lvbnMuZW52IGFuZCBtYW5pZmVzdC9sYXllcnMuanNvbi5cbiAqIFJ1biBgbnBtIHJ1biBnZW5lcmF0ZWAgKG9yIGBucG0gcnVuIGJ1aWxkYCkgdG8gcmVmcmVzaCBpdC5cbiAqXG4gKiBPZGlnb3MgYXJ0aWZhY3QgdmVyc2lvbjogdjAuMC4yMlxuICovXG5cbi8qKlxuICogVGhlIEFnZW50Q29yZSBTREsgYnVuZGxlIGNhcnJpZXIgKGxpbnV4L2FybTY0KSBmb3IgdGhpcyBwYWNrYWdlJ3MgcmVsZWFzZSwgaG9sZGluZyB0aGUgcHJlcGFyZWQgcHJvZmlsZXNcbiAqIHVuZGVyIC92YXIvb2RpZ29zL2FnZW50Y29yZS88bGFuZ3VhZ2U+Lzx2ZXJzaW9uPi4gQ29weSBmcm9tIGl0IHdoZW4gcHJlcGFyaW5nIGFuIGFydGlmYWN0OyB0aGVcbiAqIGNvbnN0cnVjdCBpdHNlbGYgZG9lcyBub3QgcmVmZXJlbmNlIGl0LiBFbXB0eSBiZWZvcmUgdGhlIGZpcnN0IHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBBR0VOVENPUkVfQUdFTlRTX0lNQUdFID0gXCJyZWdpc3RyeS5vZGlnb3MuaW8vb2RpZ29zLWFnZW50Y29yZS1hZ2VudHM6djAuMC4yMlwiO1xuXG4vKiogVGhlIGNvbm5lY3RvcidzIEFnZW50Q29yZSBlbnZpcm9ubWVudCByZWNpcGUgdmVyc2lvbiwgcmVjb3JkZWQgYXMgYHJlY2lwZWAgaW4gT0RJR09TX0lBQy4gKi9cbmV4cG9ydCBjb25zdCBBR0VOVENPUkVfUkVDSVBFX1ZFUlNJT04gPSBcIjFcIjtcblxuLyoqIE9uZSBwcmVwYXJlZCBBZ2VudENvcmUgU0RLIHByb2ZpbGUsIG1pcnJvcmVkIGZyb20gdGhlIGNvbm5lY3RvcidzIGNhdGFsb2cuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50Q29yZURpc3RyaWJ1dGlvbiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVuZG9yOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzRGVmYXVsdDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgQUdFTlRDT1JFX0RJU1RSSUJVVElPTlM6IHJlYWRvbmx5IEFnZW50Q29yZURpc3RyaWJ1dGlvbltdID0gW1xuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWFnZW50Y29yZS1hZG90XCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkFXUyBEaXN0cm8gZm9yIE9wZW5UZWxlbWV0cnlcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicHl0aG9uXCIsXG4gICAgXCJ2ZW5kb3JcIjogXCJhZG90XCIsXG4gICAgXCJpc0RlZmF1bHRcIjogdHJ1ZSxcbiAgICBcInZlcnNpb25cIjogXCIxXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcInB5dGhvbi1hZ2VudGNvcmUtb3BlbmxsbWV0cnlcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiT3BlbkxMTWV0cnkgQmVkcm9ja1wiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJweXRob25cIixcbiAgICBcInZlbmRvclwiOiBcIm9wZW5sbG1ldHJ5XCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMVwiXG4gIH0sXG4gIHtcbiAgICBcIm5hbWVcIjogXCJub2RlanMtYWdlbnRjb3JlLWFkb3RcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiQVdTIERpc3RybyBmb3IgT3BlblRlbGVtZXRyeVwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJub2RlanNcIixcbiAgICBcInZlbmRvclwiOiBcImFkb3RcIixcbiAgICBcImlzRGVmYXVsdFwiOiB0cnVlLFxuICAgIFwidmVyc2lvblwiOiBcIjFcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwibm9kZWpzLWFnZW50Y29yZS1vcGVubGxtZXRyeVwiLFxuICAgIFwiZGlzcGxheU5hbWVcIjogXCJPcGVuTExNZXRyeSBCZWRyb2NrXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcIm5vZGVqc1wiLFxuICAgIFwidmVuZG9yXCI6IFwib3BlbmxsbWV0cnlcIixcbiAgICBcImlzRGVmYXVsdFwiOiBmYWxzZSxcbiAgICBcInZlcnNpb25cIjogXCIxXCJcbiAgfVxuXTtcbiJdfQ==
@@ -4,7 +4,7 @@
4
4
  * Produced by cdk/scripts/generate.ts from ../artifacts.json and ../versions.env.
5
5
  * Run `npm run generate` (or `npm run build`) to refresh it.
6
6
  *
7
- * Odigos artifact version: v0.0.20
7
+ * Odigos artifact version: v0.0.22
8
8
  */
9
9
  export interface LambdaDistribution {
10
10
  readonly name: string;
@@ -6,7 +6,7 @@
6
6
  * Produced by cdk/scripts/generate.ts from ../artifacts.json and ../versions.env.
7
7
  * Run `npm run generate` (or `npm run build`) to refresh it.
8
8
  *
9
- * Odigos artifact version: v0.0.20
9
+ * Odigos artifact version: v0.0.22
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.LAMBDA_DISTRIBUTIONS = void 0;
@@ -280,4 +280,4 @@ exports.LAMBDA_DISTRIBUTIONS = [
280
280
  "version": "0.13.0"
281
281
  }
282
282
  ];
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvZGlzdHJpYnV0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCOzs7Ozs7O0dBT0c7OztBQUdVLFFBQUEsb0JBQW9CLEdBQWtDO0lBQ2pFO1FBQ0UsTUFBTSxFQUFFLHdCQUF3QjtRQUNoQyxhQUFhLEVBQUUsaUNBQWlDO1FBQ2hELFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLGFBQWEsRUFBRSw2QkFBNkI7UUFDNUMsU0FBUyxFQUFFLFFBQVE7S0FDcEI7SUFDRDtRQUNFLE1BQU0sRUFBRSwwQkFBMEI7UUFDbEMsYUFBYSxFQUFFLDJDQUEyQztRQUMxRCxVQUFVLEVBQUUsTUFBTTtRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixhQUFhLEVBQUUsbUJBQW1CO1FBQ2xDLFNBQVMsRUFBRSxRQUFRO0tBQ3BCO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsZ0NBQWdDO1FBQ3hDLGFBQWEsRUFBRSxxREFBcUQ7UUFDcEUsVUFBVSxFQUFFLE1BQU07UUFDbEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsYUFBYSxFQUFFLHlCQUF5QjtRQUN4QyxTQUFTLEVBQUUsUUFBUTtLQUNwQjtJQUNEO1FBQ0UsTUFBTSxFQUFFLDhCQUE4QjtRQUN0QyxhQUFhLEVBQUUsNkNBQTZDO1FBQzVELFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLGFBQWEsRUFBRSx1QkFBdUI7UUFDdEMsU0FBUyxFQUFFLFFBQVE7S0FDcEI7SUFDRDtRQUNFLE1BQU0sRUFBRSxpQ0FBaUM7UUFDekMsYUFBYSxFQUFFLDBDQUEwQztRQUN6RCxVQUFVLEVBQUUsTUFBTTtRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixhQUFhLEVBQUUsMEJBQTBCO1FBQ3pDLFNBQVMsRUFBRSxRQUFRO0tBQ3BCO0lBQ0Q7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Q0UsTUFBTSxFQUFFLHdDQUF3QztRQUNoRCxhQUFhLEVBQUUsOENBQThDO1FBQzdELFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLGFBQWEsRUFBRSxzQkFBc0I7UUFDckMsVUFBVSxFQUFFLGFBQWE7UUFDekIsb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixvQkFBb0IsRUFBRTtZQUNwQixZQUFZO1lBQ1osWUFBWTtZQUNaLFlBQVk7WUFDWixZQUFZO1NBQ2I7UUFDRCxhQUFhLEVBQUU7WUFDYixzQ0FBc0MsRUFBRSxNQUFNO1NBQy9DO1FBQ0Qsc0JBQXNCLEVBQUU7WUFDdEIsOENBQThDLEVBQUUsT0FBTztZQUN2RCw0QkFBNEIsRUFBRSxPQUFPO1lBQ3JDLGtCQUFrQixFQUFFLHNCQUFzQjtZQUMxQyxvQ0FBb0MsRUFBRSxpQ0FBaUM7WUFDdkUscUNBQXFDLEVBQUUsa0NBQWtDO1lBQ3pFLGtDQUFrQyxFQUFFLCtCQUErQjtZQUNuRSxxQ0FBcUMsRUFBRSxNQUFNO1lBQzdDLG9DQUFvQyxFQUFFLHlVQUF5VTtZQUMvVyxtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLDZCQUE2QixFQUFFLGVBQWU7WUFDOUMsZ0RBQWdELEVBQUUsa0NBQWtDO1lBQ3BGLGdDQUFnQyxFQUFFLGtDQUFrQztZQUNwRSw2QkFBNkIsRUFBRSwrQkFBK0I7U0FDL0Q7UUFDRCxTQUFTLEVBQUUsUUFBUTtLQUNwQjtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyoqXG4gKiBHRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQuXG4gKlxuICogUHJvZHVjZWQgYnkgY2RrL3NjcmlwdHMvZ2VuZXJhdGUudHMgZnJvbSAuLi9hcnRpZmFjdHMuanNvbiBhbmQgLi4vdmVyc2lvbnMuZW52LlxuICogUnVuIGBucG0gcnVuIGdlbmVyYXRlYCAob3IgYG5wbSBydW4gYnVpbGRgKSB0byByZWZyZXNoIGl0LlxuICpcbiAqIE9kaWdvcyBhcnRpZmFjdCB2ZXJzaW9uOiB2MC4wLjIwXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFEaXN0cmlidXRpb24geyByZWFkb25seSBuYW1lOiBzdHJpbmc7IHJlYWRvbmx5IGRpc3BsYXlOYW1lOiBzdHJpbmc7IHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7IHJlYWRvbmx5IHZlcnNpb246IHN0cmluZzsgcmVhZG9ubHkgaXNEZWZhdWx0OiBib29sZWFuOyByZWFkb25seSBleGVjV3JhcHBlcjogc3RyaW5nOyByZWFkb25seSBhcnRpZmFjdD86IHN0cmluZzsgcmVhZG9ubHkgYXBwbGljYXRpb25TaWduYWxzPzogYm9vbGVhbjsgcmVhZG9ubHkgY29tcGF0aWJsZVJ1bnRpbWVzPzogcmVhZG9ubHkgc3RyaW5nW107IHJlYWRvbmx5IGVudmlyb25tZW50PzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTsgcmVhZG9ubHkgYm9vdHN0cmFwRW52aXJvbm1lbnQ/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9OyB9XG5leHBvcnQgY29uc3QgTEFNQkRBX0RJU1RSSUJVVElPTlM6IHJlYWRvbmx5IExhbWJkYURpc3RyaWJ1dGlvbltdID0gW1xuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtb3RlbC1hZ2VudFwiLFxuICAgIFwiZGlzcGxheU5hbWVcIjogXCJKYXZhIExhbWJkYSBPcGVuVGVsZW1ldHJ5IGFnZW50XCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcImphdmFcIixcbiAgICBcImlzRGVmYXVsdFwiOiB0cnVlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtamF2YWFnZW50LWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIyLjMyLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtb3RlbC13cmFwcGVyXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIE9wZW5UZWxlbWV0cnkgZ2VuZXJpYyBoYW5kbGVyXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcImphdmFcIixcbiAgICBcImlzRGVmYXVsdFwiOiBmYWxzZSxcbiAgICBcImV4ZWNXcmFwcGVyXCI6IFwiL29wdC9vdGVsLWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjIxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtb3RlbC1wcm94eS13cmFwcGVyXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIE9wZW5UZWxlbWV0cnkgQVBJIEdhdGV3YXkgcHJveHkgaGFuZGxlclwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJqYXZhXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1wcm94eS1oYW5kbGVyXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4yMS4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcImphdmEtbGFtYmRhLW90ZWwtc3FzLXdyYXBwZXJcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiSmF2YSBMYW1iZGEgT3BlblRlbGVtZXRyeSBTUVMgZXZlbnQgaGFuZGxlclwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJqYXZhXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1zcXMtaGFuZGxlclwiLFxuICAgIFwidmVyc2lvblwiOiBcIjAuMjEuMFwiXG4gIH0sXG4gIHtcbiAgICBcIm5hbWVcIjogXCJqYXZhLWxhbWJkYS1vdGVsLXN0cmVhbS13cmFwcGVyXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIE9wZW5UZWxlbWV0cnkgc3RyZWFtIGhhbmRsZXJcIixcbiAgICBcImxhbmd1YWdlXCI6IFwiamF2YVwiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtc3RyZWFtLWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjIxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwibm9kZWpzLWxhbWJkYS1vdGVsXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIk5vZGUuanMgTGFtYmRhIE9wZW5UZWxlbWV0cnlcIixcbiAgICBcImxhbmd1YWdlXCI6IFwibm9kZWpzXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogdHJ1ZSxcbiAgICBcImV4ZWNXcmFwcGVyXCI6IFwiL29wdC9vdGVsLWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjIzLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWxhbWJkYS1vdGVsXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIlB5dGhvbiBMYW1iZGEgT3BlblRlbGVtZXRyeVwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJweXRob25cIixcbiAgICBcImlzRGVmYXVsdFwiOiB0cnVlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtaW5zdHJ1bWVudFwiLFxuICAgIFwidmVyc2lvblwiOiBcIjAuMjEuMFwiXG4gIH0sXG4gIHtcbiAgICBcIm5hbWVcIjogXCJydWJ5LWxhbWJkYS1vdGVsXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIlJ1YnkgTGFtYmRhIE9wZW5UZWxlbWV0cnlcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicnVieVwiLFxuICAgIFwiaXNEZWZhdWx0XCI6IHRydWUsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1oYW5kbGVyXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4xNC4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcImphdmEtbGFtYmRhLWFkb3RcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiSmF2YSBMYW1iZGEgQVdTIEFET1RcIixcbiAgICBcImxhbmd1YWdlXCI6IFwiamF2YVwiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L29kaWdvcy1hZG90LWphdmEtaGFuZGxlclwiLFxuICAgIFwiYXJ0aWZhY3RcIjogXCJhZG90LWphdmFcIixcbiAgICBcImFwcGxpY2F0aW9uU2lnbmFsc1wiOiBmYWxzZSxcbiAgICBcImNvbXBhdGlibGVSdW50aW1lc1wiOiBbXG4gICAgICBcImphdmExMVwiLFxuICAgICAgXCJqYXZhMTdcIixcbiAgICAgIFwiamF2YTIxXCJcbiAgICBdLFxuICAgIFwiZW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VOQUJMRURcIjogXCJmYWxzZVwiXG4gICAgfSxcbiAgICBcImJvb3RzdHJhcEVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19SVU5USU1FX0VOQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0FXU19MQU1CREFfRkFTVF9TVEFSVFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfUFJPUEFHQVRPUlNcIjogXCJ0cmFjZWNvbnRleHQsYmFnZ2FnZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9JTlNUUlVNRU5UQVRJT05fQ09NTU9OX0RFRkFVTFRfRU5BQkxFRFwiOiBcInRydWVcIixcbiAgICAgIFwiT1RFTF9TREtfRElTQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0xcIjogXCJodHRwL3Byb3RvYnVmXCIsXG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfRVhQT1JURVJfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX0xPR1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbG9nc1wiXG4gICAgfSxcbiAgICBcInZlcnNpb25cIjogXCIyLjMxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtYWRvdC1hcHBsaWNhdGlvbi1zaWduYWxzXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIEFXUyBBRE9UICsgQXBwbGljYXRpb24gU2lnbmFsc1wiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJqYXZhXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb2RpZ29zLWFkb3QtamF2YS1oYW5kbGVyXCIsXG4gICAgXCJhcnRpZmFjdFwiOiBcImFkb3QtamF2YVwiLFxuICAgIFwiYXBwbGljYXRpb25TaWduYWxzXCI6IHRydWUsXG4gICAgXCJjb21wYXRpYmxlUnVudGltZXNcIjogW1xuICAgICAgXCJqYXZhMTFcIixcbiAgICAgIFwiamF2YTE3XCIsXG4gICAgICBcImphdmEyMVwiXG4gICAgXSxcbiAgICBcImVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FTkFCTEVEXCI6IFwidHJ1ZVwiXG4gICAgfSxcbiAgICBcImJvb3RzdHJhcEVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19SVU5USU1FX0VOQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0FXU19MQU1CREFfRkFTVF9TVEFSVFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfUFJPUEFHQVRPUlNcIjogXCJ0cmFjZWNvbnRleHQsYmFnZ2FnZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9JTlNUUlVNRU5UQVRJT05fQ09NTU9OX0RFRkFVTFRfRU5BQkxFRFwiOiBcInRydWVcIixcbiAgICAgIFwiT1RFTF9TREtfRElTQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0xcIjogXCJodHRwL3Byb3RvYnVmXCIsXG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfRVhQT1JURVJfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX0xPR1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbG9nc1wiXG4gICAgfSxcbiAgICBcInZlcnNpb25cIjogXCIyLjMxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWxhbWJkYS1hZG90XCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIlB5dGhvbiBMYW1iZGEgQVdTIEFET1RcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicHl0aG9uXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1pbnN0cnVtZW50XCIsXG4gICAgXCJhcnRpZmFjdFwiOiBcImFkb3QtcHl0aG9uXCIsXG4gICAgXCJhcHBsaWNhdGlvblNpZ25hbHNcIjogZmFsc2UsXG4gICAgXCJjb21wYXRpYmxlUnVudGltZXNcIjogW1xuICAgICAgXCJweXRob24zLjEwXCIsXG4gICAgICBcInB5dGhvbjMuMTFcIixcbiAgICAgIFwicHl0aG9uMy4xMlwiLFxuICAgICAgXCJweXRob24zLjEzXCJcbiAgICBdLFxuICAgIFwiZW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VOQUJMRURcIjogXCJmYWxzZVwiXG4gICAgfSxcbiAgICBcImJvb3RzdHJhcEVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19SVU5USU1FX0VOQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0FXU19MQU1CREFfRkFTVF9TVEFSVFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfUFJPUEFHQVRPUlNcIjogXCJ0cmFjZWNvbnRleHQsYmFnZ2FnZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9QWVRIT05fRElTQUJMRURfSU5TVFJVTUVOVEFUSU9OU1wiOiBcIm5vbmVcIixcbiAgICAgIFwiT1RFTF9QWVRIT05fRElTVFJPXCI6IFwiYXdzX2Rpc3Ryb1wiLFxuICAgICAgXCJPVEVMX1BZVEhPTl9DT05GSUdVUkFUT1JcIjogXCJhd3NfY29uZmlndXJhdG9yXCIsXG4gICAgICBcIk9URUxfU0RLX0RJU0FCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MXCI6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VYUE9SVEVSX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9NRVRSSUNTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9QWVRIT05fTE9HX0FVVE9fSU5TVFJVTUVOVEFUSU9OXCI6IFwidHJ1ZVwiXG4gICAgfSxcbiAgICBcInZlcnNpb25cIjogXCIwLjIxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWxhbWJkYS1hZG90LWFwcGxpY2F0aW9uLXNpZ25hbHNcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiUHl0aG9uIExhbWJkYSBBV1MgQURPVCArIEFwcGxpY2F0aW9uIFNpZ25hbHNcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicHl0aG9uXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1pbnN0cnVtZW50XCIsXG4gICAgXCJhcnRpZmFjdFwiOiBcImFkb3QtcHl0aG9uXCIsXG4gICAgXCJhcHBsaWNhdGlvblNpZ25hbHNcIjogdHJ1ZSxcbiAgICBcImNvbXBhdGlibGVSdW50aW1lc1wiOiBbXG4gICAgICBcInB5dGhvbjMuMTBcIixcbiAgICAgIFwicHl0aG9uMy4xMVwiLFxuICAgICAgXCJweXRob24zLjEyXCIsXG4gICAgICBcInB5dGhvbjMuMTNcIlxuICAgIF0sXG4gICAgXCJlbnZpcm9ubWVudFwiOiB7XG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfRU5BQkxFRFwiOiBcInRydWVcIlxuICAgIH0sXG4gICAgXCJib290c3RyYXBFbnZpcm9ubWVudFwiOiB7XG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfUlVOVElNRV9FTkFCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9BV1NfTEFNQkRBX0ZBU1RfU1RBUlRcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX1BST1BBR0FUT1JTXCI6IFwidHJhY2Vjb250ZXh0LGJhZ2dhZ2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXNcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCIsXG4gICAgICBcIk9URUxfUFlUSE9OX0RJU0FCTEVEX0lOU1RSVU1FTlRBVElPTlNcIjogXCJub25lXCIsXG4gICAgICBcIk9URUxfUFlUSE9OX0RJU1RST1wiOiBcImF3c19kaXN0cm9cIixcbiAgICAgIFwiT1RFTF9QWVRIT05fQ09ORklHVVJBVE9SXCI6IFwiYXdzX2NvbmZpZ3VyYXRvclwiLFxuICAgICAgXCJPVEVMX1NES19ESVNBQkxFRFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTFwiOiBcImh0dHAvcHJvdG9idWZcIixcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FWFBPUlRFUl9FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCIsXG4gICAgICBcIk9URUxfUFlUSE9OX0xPR19BVVRPX0lOU1RSVU1FTlRBVElPTlwiOiBcInRydWVcIlxuICAgIH0sXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4yMS4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcIm5vZGVqcy1sYW1iZGEtYWRvdFwiLFxuICAgIFwiZGlzcGxheU5hbWVcIjogXCJOb2RlanMgTGFtYmRhIEFXUyBBRE9UXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcIm5vZGVqc1wiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtaW5zdHJ1bWVudFwiLFxuICAgIFwiYXJ0aWZhY3RcIjogXCJhZG90LW5vZGVqc1wiLFxuICAgIFwiYXBwbGljYXRpb25TaWduYWxzXCI6IGZhbHNlLFxuICAgIFwiY29tcGF0aWJsZVJ1bnRpbWVzXCI6IFtcbiAgICAgIFwibm9kZWpzMTgueFwiLFxuICAgICAgXCJub2RlanMyMC54XCIsXG4gICAgICBcIm5vZGVqczIyLnhcIixcbiAgICAgIFwibm9kZWpzMjQueFwiXG4gICAgXSxcbiAgICBcImVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FTkFCTEVEXCI6IFwiZmFsc2VcIlxuICAgIH0sXG4gICAgXCJib290c3RyYXBFbnZpcm9ubWVudFwiOiB7XG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfUlVOVElNRV9FTkFCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9BV1NfTEFNQkRBX0ZBU1RfU1RBUlRcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX1BST1BBR0FUT1JTXCI6IFwidHJhY2Vjb250ZXh0LGJhZ2dhZ2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXNcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCIsXG4gICAgICBcIk9URUxfTk9ERV9ESVNBQkxFRF9JTlNUUlVNRU5UQVRJT05TXCI6IFwibm9uZVwiLFxuICAgICAgXCJPVEVMX05PREVfRU5BQkxFRF9JTlNUUlVNRU5UQVRJT05TXCI6IFwiYW1xcGxpYixhd3MtbGFtYmRhLGF3cy1zZGssYnVueWFuLGNhc3NhbmRyYS1kcml2ZXIsY29ubmVjdCxjdWN1bWJlcixkYXRhbG9hZGVyLGRucyxleHByZXNzLGZzLGdlbmVyaWMtcG9vbCxncmFwaHFsLGdycGMsaGFwaSxob3N0LW1ldHJpY3MsaHR0cCxpb3JlZGlzLGthZmthanMsa25leCxrb2EsbHJ1LW1lbW9pemVyLG1lbWNhY2hlZCxtb25nb2RiLG1vbmdvb3NlLG15c3FsMixteXNxbCxuZXN0anMtY29yZSxuZXQsb3BlbmFpLG9yYWNsZWRiLHBnLHBpbm8scmVkaXMscmVzdGlmeSxyb3V0ZXIscnVudGltZS1ub2RlLHNvY2tldC5pbyx0ZWRpb3VzLHVuZGljaSx3aW5zdG9uXCIsXG4gICAgICBcIk9URUxfU0RLX0RJU0FCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MXCI6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VYUE9SVEVSX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9NRVRSSUNTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIlxuICAgIH0sXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4xMy4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcIm5vZGVqcy1sYW1iZGEtYWRvdC1hcHBsaWNhdGlvbi1zaWduYWxzXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIk5vZGVqcyBMYW1iZGEgQVdTIEFET1QgKyBBcHBsaWNhdGlvbiBTaWduYWxzXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcIm5vZGVqc1wiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtaW5zdHJ1bWVudFwiLFxuICAgIFwiYXJ0aWZhY3RcIjogXCJhZG90LW5vZGVqc1wiLFxuICAgIFwiYXBwbGljYXRpb25TaWduYWxzXCI6IHRydWUsXG4gICAgXCJjb21wYXRpYmxlUnVudGltZXNcIjogW1xuICAgICAgXCJub2RlanMxOC54XCIsXG4gICAgICBcIm5vZGVqczIwLnhcIixcbiAgICAgIFwibm9kZWpzMjIueFwiLFxuICAgICAgXCJub2RlanMyNC54XCJcbiAgICBdLFxuICAgIFwiZW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VOQUJMRURcIjogXCJ0cnVlXCJcbiAgICB9LFxuICAgIFwiYm9vdHN0cmFwRW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX1JVTlRJTUVfRU5BQkxFRFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfQVdTX0xBTUJEQV9GQVNUX1NUQVJUXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9QUk9QQUdBVE9SU1wiOiBcInRyYWNlY29udGV4dCxiYWdnYWdlXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvdHJhY2VzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbG9nc1wiLFxuICAgICAgXCJPVEVMX05PREVfRElTQUJMRURfSU5TVFJVTUVOVEFUSU9OU1wiOiBcIm5vbmVcIixcbiAgICAgIFwiT1RFTF9OT0RFX0VOQUJMRURfSU5TVFJVTUVOVEFUSU9OU1wiOiBcImFtcXBsaWIsYXdzLWxhbWJkYSxhd3Mtc2RrLGJ1bnlhbixjYXNzYW5kcmEtZHJpdmVyLGNvbm5lY3QsY3VjdW1iZXIsZGF0YWxvYWRlcixkbnMsZXhwcmVzcyxmcyxnZW5lcmljLXBvb2wsZ3JhcGhxbCxncnBjLGhhcGksaG9zdC1tZXRyaWNzLGh0dHAsaW9yZWRpcyxrYWZrYWpzLGtuZXgsa29hLGxydS1tZW1vaXplcixtZW1jYWNoZWQsbW9uZ29kYixtb25nb29zZSxteXNxbDIsbXlzcWwsbmVzdGpzLWNvcmUsbmV0LG9wZW5haSxvcmFjbGVkYixwZyxwaW5vLHJlZGlzLHJlc3RpZnkscm91dGVyLHJ1bnRpbWUtbm9kZSxzb2NrZXQuaW8sdGVkaW91cyx1bmRpY2ksd2luc3RvblwiLFxuICAgICAgXCJPVEVMX1NES19ESVNBQkxFRFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTFwiOiBcImh0dHAvcHJvdG9idWZcIixcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FWFBPUlRFUl9FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCJcbiAgICB9LFxuICAgIFwidmVyc2lvblwiOiBcIjAuMTMuMFwiXG4gIH1cbl0gYXMgY29uc3Q7XG4iXX0=
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvZGlzdHJpYnV0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCOzs7Ozs7O0dBT0c7OztBQUdVLFFBQUEsb0JBQW9CLEdBQWtDO0lBQ2pFO1FBQ0UsTUFBTSxFQUFFLHdCQUF3QjtRQUNoQyxhQUFhLEVBQUUsaUNBQWlDO1FBQ2hELFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLGFBQWEsRUFBRSw2QkFBNkI7UUFDNUMsU0FBUyxFQUFFLFFBQVE7S0FDcEI7SUFDRDtRQUNFLE1BQU0sRUFBRSwwQkFBMEI7UUFDbEMsYUFBYSxFQUFFLDJDQUEyQztRQUMxRCxVQUFVLEVBQUUsTUFBTTtRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixhQUFhLEVBQUUsbUJBQW1CO1FBQ2xDLFNBQVMsRUFBRSxRQUFRO0tBQ3BCO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsZ0NBQWdDO1FBQ3hDLGFBQWEsRUFBRSxxREFBcUQ7UUFDcEUsVUFBVSxFQUFFLE1BQU07UUFDbEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsYUFBYSxFQUFFLHlCQUF5QjtRQUN4QyxTQUFTLEVBQUUsUUFBUTtLQUNwQjtJQUNEO1FBQ0UsTUFBTSxFQUFFLDhCQUE4QjtRQUN0QyxhQUFhLEVBQUUsNkNBQTZDO1FBQzVELFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLGFBQWEsRUFBRSx1QkFBdUI7UUFDdEMsU0FBUyxFQUFFLFFBQVE7S0FDcEI7SUFDRDtRQUNFLE1BQU0sRUFBRSxpQ0FBaUM7UUFDekMsYUFBYSxFQUFFLDBDQUEwQztRQUN6RCxVQUFVLEVBQUUsTUFBTTtRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixhQUFhLEVBQUUsMEJBQTBCO1FBQ3pDLFNBQVMsRUFBRSxRQUFRO0tBQ3BCO0lBQ0Q7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Q0UsTUFBTSxFQUFFLHdDQUF3QztRQUNoRCxhQUFhLEVBQUUsOENBQThDO1FBQzdELFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLGFBQWEsRUFBRSxzQkFBc0I7UUFDckMsVUFBVSxFQUFFLGFBQWE7UUFDekIsb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixvQkFBb0IsRUFBRTtZQUNwQixZQUFZO1lBQ1osWUFBWTtZQUNaLFlBQVk7WUFDWixZQUFZO1NBQ2I7UUFDRCxhQUFhLEVBQUU7WUFDYixzQ0FBc0MsRUFBRSxNQUFNO1NBQy9DO1FBQ0Qsc0JBQXNCLEVBQUU7WUFDdEIsOENBQThDLEVBQUUsT0FBTztZQUN2RCw0QkFBNEIsRUFBRSxPQUFPO1lBQ3JDLGtCQUFrQixFQUFFLHNCQUFzQjtZQUMxQyxvQ0FBb0MsRUFBRSxpQ0FBaUM7WUFDdkUscUNBQXFDLEVBQUUsa0NBQWtDO1lBQ3pFLGtDQUFrQyxFQUFFLCtCQUErQjtZQUNuRSxxQ0FBcUMsRUFBRSxNQUFNO1lBQzdDLG9DQUFvQyxFQUFFLHlVQUF5VTtZQUMvVyxtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLDZCQUE2QixFQUFFLGVBQWU7WUFDOUMsZ0RBQWdELEVBQUUsa0NBQWtDO1lBQ3BGLGdDQUFnQyxFQUFFLGtDQUFrQztZQUNwRSw2QkFBNkIsRUFBRSwrQkFBK0I7U0FDL0Q7UUFDRCxTQUFTLEVBQUUsUUFBUTtLQUNwQjtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyoqXG4gKiBHRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQuXG4gKlxuICogUHJvZHVjZWQgYnkgY2RrL3NjcmlwdHMvZ2VuZXJhdGUudHMgZnJvbSAuLi9hcnRpZmFjdHMuanNvbiBhbmQgLi4vdmVyc2lvbnMuZW52LlxuICogUnVuIGBucG0gcnVuIGdlbmVyYXRlYCAob3IgYG5wbSBydW4gYnVpbGRgKSB0byByZWZyZXNoIGl0LlxuICpcbiAqIE9kaWdvcyBhcnRpZmFjdCB2ZXJzaW9uOiB2MC4wLjIyXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFEaXN0cmlidXRpb24geyByZWFkb25seSBuYW1lOiBzdHJpbmc7IHJlYWRvbmx5IGRpc3BsYXlOYW1lOiBzdHJpbmc7IHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7IHJlYWRvbmx5IHZlcnNpb246IHN0cmluZzsgcmVhZG9ubHkgaXNEZWZhdWx0OiBib29sZWFuOyByZWFkb25seSBleGVjV3JhcHBlcjogc3RyaW5nOyByZWFkb25seSBhcnRpZmFjdD86IHN0cmluZzsgcmVhZG9ubHkgYXBwbGljYXRpb25TaWduYWxzPzogYm9vbGVhbjsgcmVhZG9ubHkgY29tcGF0aWJsZVJ1bnRpbWVzPzogcmVhZG9ubHkgc3RyaW5nW107IHJlYWRvbmx5IGVudmlyb25tZW50PzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTsgcmVhZG9ubHkgYm9vdHN0cmFwRW52aXJvbm1lbnQ/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9OyB9XG5leHBvcnQgY29uc3QgTEFNQkRBX0RJU1RSSUJVVElPTlM6IHJlYWRvbmx5IExhbWJkYURpc3RyaWJ1dGlvbltdID0gW1xuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtb3RlbC1hZ2VudFwiLFxuICAgIFwiZGlzcGxheU5hbWVcIjogXCJKYXZhIExhbWJkYSBPcGVuVGVsZW1ldHJ5IGFnZW50XCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcImphdmFcIixcbiAgICBcImlzRGVmYXVsdFwiOiB0cnVlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtamF2YWFnZW50LWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIyLjMyLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtb3RlbC13cmFwcGVyXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIE9wZW5UZWxlbWV0cnkgZ2VuZXJpYyBoYW5kbGVyXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcImphdmFcIixcbiAgICBcImlzRGVmYXVsdFwiOiBmYWxzZSxcbiAgICBcImV4ZWNXcmFwcGVyXCI6IFwiL29wdC9vdGVsLWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjIxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtb3RlbC1wcm94eS13cmFwcGVyXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIE9wZW5UZWxlbWV0cnkgQVBJIEdhdGV3YXkgcHJveHkgaGFuZGxlclwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJqYXZhXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1wcm94eS1oYW5kbGVyXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4yMS4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcImphdmEtbGFtYmRhLW90ZWwtc3FzLXdyYXBwZXJcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiSmF2YSBMYW1iZGEgT3BlblRlbGVtZXRyeSBTUVMgZXZlbnQgaGFuZGxlclwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJqYXZhXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1zcXMtaGFuZGxlclwiLFxuICAgIFwidmVyc2lvblwiOiBcIjAuMjEuMFwiXG4gIH0sXG4gIHtcbiAgICBcIm5hbWVcIjogXCJqYXZhLWxhbWJkYS1vdGVsLXN0cmVhbS13cmFwcGVyXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIE9wZW5UZWxlbWV0cnkgc3RyZWFtIGhhbmRsZXJcIixcbiAgICBcImxhbmd1YWdlXCI6IFwiamF2YVwiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtc3RyZWFtLWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjIxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwibm9kZWpzLWxhbWJkYS1vdGVsXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIk5vZGUuanMgTGFtYmRhIE9wZW5UZWxlbWV0cnlcIixcbiAgICBcImxhbmd1YWdlXCI6IFwibm9kZWpzXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogdHJ1ZSxcbiAgICBcImV4ZWNXcmFwcGVyXCI6IFwiL29wdC9vdGVsLWhhbmRsZXJcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjIzLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWxhbWJkYS1vdGVsXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIlB5dGhvbiBMYW1iZGEgT3BlblRlbGVtZXRyeVwiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJweXRob25cIixcbiAgICBcImlzRGVmYXVsdFwiOiB0cnVlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtaW5zdHJ1bWVudFwiLFxuICAgIFwidmVyc2lvblwiOiBcIjAuMjEuMFwiXG4gIH0sXG4gIHtcbiAgICBcIm5hbWVcIjogXCJydWJ5LWxhbWJkYS1vdGVsXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIlJ1YnkgTGFtYmRhIE9wZW5UZWxlbWV0cnlcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicnVieVwiLFxuICAgIFwiaXNEZWZhdWx0XCI6IHRydWUsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1oYW5kbGVyXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4xNC4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcImphdmEtbGFtYmRhLWFkb3RcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiSmF2YSBMYW1iZGEgQVdTIEFET1RcIixcbiAgICBcImxhbmd1YWdlXCI6IFwiamF2YVwiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L29kaWdvcy1hZG90LWphdmEtaGFuZGxlclwiLFxuICAgIFwiYXJ0aWZhY3RcIjogXCJhZG90LWphdmFcIixcbiAgICBcImFwcGxpY2F0aW9uU2lnbmFsc1wiOiBmYWxzZSxcbiAgICBcImNvbXBhdGlibGVSdW50aW1lc1wiOiBbXG4gICAgICBcImphdmExMVwiLFxuICAgICAgXCJqYXZhMTdcIixcbiAgICAgIFwiamF2YTIxXCJcbiAgICBdLFxuICAgIFwiZW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VOQUJMRURcIjogXCJmYWxzZVwiXG4gICAgfSxcbiAgICBcImJvb3RzdHJhcEVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19SVU5USU1FX0VOQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0FXU19MQU1CREFfRkFTVF9TVEFSVFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfUFJPUEFHQVRPUlNcIjogXCJ0cmFjZWNvbnRleHQsYmFnZ2FnZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9JTlNUUlVNRU5UQVRJT05fQ09NTU9OX0RFRkFVTFRfRU5BQkxFRFwiOiBcInRydWVcIixcbiAgICAgIFwiT1RFTF9TREtfRElTQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0xcIjogXCJodHRwL3Byb3RvYnVmXCIsXG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfRVhQT1JURVJfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX0xPR1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbG9nc1wiXG4gICAgfSxcbiAgICBcInZlcnNpb25cIjogXCIyLjMxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwiamF2YS1sYW1iZGEtYWRvdC1hcHBsaWNhdGlvbi1zaWduYWxzXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIkphdmEgTGFtYmRhIEFXUyBBRE9UICsgQXBwbGljYXRpb24gU2lnbmFsc1wiLFxuICAgIFwibGFuZ3VhZ2VcIjogXCJqYXZhXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb2RpZ29zLWFkb3QtamF2YS1oYW5kbGVyXCIsXG4gICAgXCJhcnRpZmFjdFwiOiBcImFkb3QtamF2YVwiLFxuICAgIFwiYXBwbGljYXRpb25TaWduYWxzXCI6IHRydWUsXG4gICAgXCJjb21wYXRpYmxlUnVudGltZXNcIjogW1xuICAgICAgXCJqYXZhMTFcIixcbiAgICAgIFwiamF2YTE3XCIsXG4gICAgICBcImphdmEyMVwiXG4gICAgXSxcbiAgICBcImVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FTkFCTEVEXCI6IFwidHJ1ZVwiXG4gICAgfSxcbiAgICBcImJvb3RzdHJhcEVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19SVU5USU1FX0VOQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0FXU19MQU1CREFfRkFTVF9TVEFSVFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfUFJPUEFHQVRPUlNcIjogXCJ0cmFjZWNvbnRleHQsYmFnZ2FnZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9JTlNUUlVNRU5UQVRJT05fQ09NTU9OX0RFRkFVTFRfRU5BQkxFRFwiOiBcInRydWVcIixcbiAgICAgIFwiT1RFTF9TREtfRElTQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0xcIjogXCJodHRwL3Byb3RvYnVmXCIsXG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfRVhQT1JURVJfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0FXU19PVExQX0xPR1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbG9nc1wiXG4gICAgfSxcbiAgICBcInZlcnNpb25cIjogXCIyLjMxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWxhbWJkYS1hZG90XCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIlB5dGhvbiBMYW1iZGEgQVdTIEFET1RcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicHl0aG9uXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1pbnN0cnVtZW50XCIsXG4gICAgXCJhcnRpZmFjdFwiOiBcImFkb3QtcHl0aG9uXCIsXG4gICAgXCJhcHBsaWNhdGlvblNpZ25hbHNcIjogZmFsc2UsXG4gICAgXCJjb21wYXRpYmxlUnVudGltZXNcIjogW1xuICAgICAgXCJweXRob24zLjEwXCIsXG4gICAgICBcInB5dGhvbjMuMTFcIixcbiAgICAgIFwicHl0aG9uMy4xMlwiLFxuICAgICAgXCJweXRob24zLjEzXCJcbiAgICBdLFxuICAgIFwiZW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VOQUJMRURcIjogXCJmYWxzZVwiXG4gICAgfSxcbiAgICBcImJvb3RzdHJhcEVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19SVU5USU1FX0VOQUJMRURcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX0FXU19MQU1CREFfRkFTVF9TVEFSVFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfUFJPUEFHQVRPUlNcIjogXCJ0cmFjZWNvbnRleHQsYmFnZ2FnZVwiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL3RyYWNlc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9QWVRIT05fRElTQUJMRURfSU5TVFJVTUVOVEFUSU9OU1wiOiBcIm5vbmVcIixcbiAgICAgIFwiT1RFTF9QWVRIT05fRElTVFJPXCI6IFwiYXdzX2Rpc3Ryb1wiLFxuICAgICAgXCJPVEVMX1BZVEhPTl9DT05GSUdVUkFUT1JcIjogXCJhd3NfY29uZmlndXJhdG9yXCIsXG4gICAgICBcIk9URUxfU0RLX0RJU0FCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MXCI6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VYUE9SVEVSX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9NRVRSSUNTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIixcbiAgICAgIFwiT1RFTF9QWVRIT05fTE9HX0FVVE9fSU5TVFJVTUVOVEFUSU9OXCI6IFwidHJ1ZVwiXG4gICAgfSxcbiAgICBcInZlcnNpb25cIjogXCIwLjIxLjBcIlxuICB9LFxuICB7XG4gICAgXCJuYW1lXCI6IFwicHl0aG9uLWxhbWJkYS1hZG90LWFwcGxpY2F0aW9uLXNpZ25hbHNcIixcbiAgICBcImRpc3BsYXlOYW1lXCI6IFwiUHl0aG9uIExhbWJkYSBBV1MgQURPVCArIEFwcGxpY2F0aW9uIFNpZ25hbHNcIixcbiAgICBcImxhbmd1YWdlXCI6IFwicHl0aG9uXCIsXG4gICAgXCJpc0RlZmF1bHRcIjogZmFsc2UsXG4gICAgXCJleGVjV3JhcHBlclwiOiBcIi9vcHQvb3RlbC1pbnN0cnVtZW50XCIsXG4gICAgXCJhcnRpZmFjdFwiOiBcImFkb3QtcHl0aG9uXCIsXG4gICAgXCJhcHBsaWNhdGlvblNpZ25hbHNcIjogdHJ1ZSxcbiAgICBcImNvbXBhdGlibGVSdW50aW1lc1wiOiBbXG4gICAgICBcInB5dGhvbjMuMTBcIixcbiAgICAgIFwicHl0aG9uMy4xMVwiLFxuICAgICAgXCJweXRob24zLjEyXCIsXG4gICAgICBcInB5dGhvbjMuMTNcIlxuICAgIF0sXG4gICAgXCJlbnZpcm9ubWVudFwiOiB7XG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfRU5BQkxFRFwiOiBcInRydWVcIlxuICAgIH0sXG4gICAgXCJib290c3RyYXBFbnZpcm9ubWVudFwiOiB7XG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfUlVOVElNRV9FTkFCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9BV1NfTEFNQkRBX0ZBU1RfU1RBUlRcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX1BST1BBR0FUT1JTXCI6IFwidHJhY2Vjb250ZXh0LGJhZ2dhZ2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXNcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCIsXG4gICAgICBcIk9URUxfUFlUSE9OX0RJU0FCTEVEX0lOU1RSVU1FTlRBVElPTlNcIjogXCJub25lXCIsXG4gICAgICBcIk9URUxfUFlUSE9OX0RJU1RST1wiOiBcImF3c19kaXN0cm9cIixcbiAgICAgIFwiT1RFTF9QWVRIT05fQ09ORklHVVJBVE9SXCI6IFwiYXdzX2NvbmZpZ3VyYXRvclwiLFxuICAgICAgXCJPVEVMX1NES19ESVNBQkxFRFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTFwiOiBcImh0dHAvcHJvdG9idWZcIixcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FWFBPUlRFUl9FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCIsXG4gICAgICBcIk9URUxfUFlUSE9OX0xPR19BVVRPX0lOU1RSVU1FTlRBVElPTlwiOiBcInRydWVcIlxuICAgIH0sXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4yMS4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcIm5vZGVqcy1sYW1iZGEtYWRvdFwiLFxuICAgIFwiZGlzcGxheU5hbWVcIjogXCJOb2RlanMgTGFtYmRhIEFXUyBBRE9UXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcIm5vZGVqc1wiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtaW5zdHJ1bWVudFwiLFxuICAgIFwiYXJ0aWZhY3RcIjogXCJhZG90LW5vZGVqc1wiLFxuICAgIFwiYXBwbGljYXRpb25TaWduYWxzXCI6IGZhbHNlLFxuICAgIFwiY29tcGF0aWJsZVJ1bnRpbWVzXCI6IFtcbiAgICAgIFwibm9kZWpzMTgueFwiLFxuICAgICAgXCJub2RlanMyMC54XCIsXG4gICAgICBcIm5vZGVqczIyLnhcIixcbiAgICAgIFwibm9kZWpzMjQueFwiXG4gICAgXSxcbiAgICBcImVudmlyb25tZW50XCI6IHtcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FTkFCTEVEXCI6IFwiZmFsc2VcIlxuICAgIH0sXG4gICAgXCJib290c3RyYXBFbnZpcm9ubWVudFwiOiB7XG4gICAgICBcIk9URUxfQVdTX0FQUExJQ0FUSU9OX1NJR05BTFNfUlVOVElNRV9FTkFCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9BV1NfTEFNQkRBX0ZBU1RfU1RBUlRcIjogXCJmYWxzZVwiLFxuICAgICAgXCJPVEVMX1BST1BBR0FUT1JTXCI6IFwidHJhY2Vjb250ZXh0LGJhZ2dhZ2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXNcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbWV0cmljc1wiLFxuICAgICAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCIsXG4gICAgICBcIk9URUxfTk9ERV9ESVNBQkxFRF9JTlNUUlVNRU5UQVRJT05TXCI6IFwibm9uZVwiLFxuICAgICAgXCJPVEVMX05PREVfRU5BQkxFRF9JTlNUUlVNRU5UQVRJT05TXCI6IFwiYW1xcGxpYixhd3MtbGFtYmRhLGF3cy1zZGssYnVueWFuLGNhc3NhbmRyYS1kcml2ZXIsY29ubmVjdCxjdWN1bWJlcixkYXRhbG9hZGVyLGRucyxleHByZXNzLGZzLGdlbmVyaWMtcG9vbCxncmFwaHFsLGdycGMsaGFwaSxob3N0LW1ldHJpY3MsaHR0cCxpb3JlZGlzLGthZmthanMsa25leCxrb2EsbHJ1LW1lbW9pemVyLG1lbWNhY2hlZCxtb25nb2RiLG1vbmdvb3NlLG15c3FsMixteXNxbCxuZXN0anMtY29yZSxuZXQsb3BlbmFpLG9yYWNsZWRiLHBnLHBpbm8scmVkaXMscmVzdGlmeSxyb3V0ZXIscnVudGltZS1ub2RlLHNvY2tldC5pbyx0ZWRpb3VzLHVuZGljaSx3aW5zdG9uXCIsXG4gICAgICBcIk9URUxfU0RLX0RJU0FCTEVEXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MXCI6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VYUE9SVEVSX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9NRVRSSUNTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9BV1NfT1RMUF9MT0dTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL2xvZ3NcIlxuICAgIH0sXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4xMy4wXCJcbiAgfSxcbiAge1xuICAgIFwibmFtZVwiOiBcIm5vZGVqcy1sYW1iZGEtYWRvdC1hcHBsaWNhdGlvbi1zaWduYWxzXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiOiBcIk5vZGVqcyBMYW1iZGEgQVdTIEFET1QgKyBBcHBsaWNhdGlvbiBTaWduYWxzXCIsXG4gICAgXCJsYW5ndWFnZVwiOiBcIm5vZGVqc1wiLFxuICAgIFwiaXNEZWZhdWx0XCI6IGZhbHNlLFxuICAgIFwiZXhlY1dyYXBwZXJcIjogXCIvb3B0L290ZWwtaW5zdHJ1bWVudFwiLFxuICAgIFwiYXJ0aWZhY3RcIjogXCJhZG90LW5vZGVqc1wiLFxuICAgIFwiYXBwbGljYXRpb25TaWduYWxzXCI6IHRydWUsXG4gICAgXCJjb21wYXRpYmxlUnVudGltZXNcIjogW1xuICAgICAgXCJub2RlanMxOC54XCIsXG4gICAgICBcIm5vZGVqczIwLnhcIixcbiAgICAgIFwibm9kZWpzMjIueFwiLFxuICAgICAgXCJub2RlanMyNC54XCJcbiAgICBdLFxuICAgIFwiZW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX0VOQUJMRURcIjogXCJ0cnVlXCJcbiAgICB9LFxuICAgIFwiYm9vdHN0cmFwRW52aXJvbm1lbnRcIjoge1xuICAgICAgXCJPVEVMX0FXU19BUFBMSUNBVElPTl9TSUdOQUxTX1JVTlRJTUVfRU5BQkxFRFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfQVdTX0xBTUJEQV9GQVNUX1NUQVJUXCI6IFwiZmFsc2VcIixcbiAgICAgIFwiT1RFTF9QUk9QQUdBVE9SU1wiOiBcInRyYWNlY29udGV4dCxiYWdnYWdlXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvdHJhY2VzXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0VORFBPSU5UXCI6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE4L3YxL21ldHJpY3NcIixcbiAgICAgIFwiT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfRU5EUE9JTlRcIjogXCJodHRwOi8vbG9jYWxob3N0OjQzMTgvdjEvbG9nc1wiLFxuICAgICAgXCJPVEVMX05PREVfRElTQUJMRURfSU5TVFJVTUVOVEFUSU9OU1wiOiBcIm5vbmVcIixcbiAgICAgIFwiT1RFTF9OT0RFX0VOQUJMRURfSU5TVFJVTUVOVEFUSU9OU1wiOiBcImFtcXBsaWIsYXdzLWxhbWJkYSxhd3Mtc2RrLGJ1bnlhbixjYXNzYW5kcmEtZHJpdmVyLGNvbm5lY3QsY3VjdW1iZXIsZGF0YWxvYWRlcixkbnMsZXhwcmVzcyxmcyxnZW5lcmljLXBvb2wsZ3JhcGhxbCxncnBjLGhhcGksaG9zdC1tZXRyaWNzLGh0dHAsaW9yZWRpcyxrYWZrYWpzLGtuZXgsa29hLGxydS1tZW1vaXplcixtZW1jYWNoZWQsbW9uZ29kYixtb25nb29zZSxteXNxbDIsbXlzcWwsbmVzdGpzLWNvcmUsbmV0LG9wZW5haSxvcmFjbGVkYixwZyxwaW5vLHJlZGlzLHJlc3RpZnkscm91dGVyLHJ1bnRpbWUtbm9kZSxzb2NrZXQuaW8sdGVkaW91cyx1bmRpY2ksd2luc3RvblwiLFxuICAgICAgXCJPVEVMX1NES19ESVNBQkxFRFwiOiBcImZhbHNlXCIsXG4gICAgICBcIk9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTFwiOiBcImh0dHAvcHJvdG9idWZcIixcbiAgICAgIFwiT1RFTF9BV1NfQVBQTElDQVRJT05fU0lHTkFMU19FWFBPUlRFUl9FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTUVUUklDU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9tZXRyaWNzXCIsXG4gICAgICBcIk9URUxfQVdTX09UTFBfTE9HU19FTkRQT0lOVFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS9sb2dzXCJcbiAgICB9LFxuICAgIFwidmVyc2lvblwiOiBcIjAuMTMuMFwiXG4gIH1cbl0gYXMgY29uc3Q7XG4iXX0=
@@ -4,13 +4,13 @@
4
4
  * Produced by cdk/scripts/generate.ts from artifacts.json and manifest/layers.json.
5
5
  * Run `npm run generate` (or `npm run build`) to refresh it.
6
6
  *
7
- * Odigos artifact version: v0.0.20
7
+ * Odigos artifact version: v0.0.22
8
8
  */
9
9
  /**
10
10
  * The multi-arch agents bundle the staging container copies from, at the tag this package's release
11
11
  * published. Empty before the first release.
12
12
  */
13
- export declare const FARGATE_AGENTS_IMAGE = "registry.odigos.io/odigos-fargate-agents:v0.0.20";
13
+ export declare const FARGATE_AGENTS_IMAGE = "registry.odigos.io/odigos-fargate-agents:v0.0.22";
14
14
  /** Shared task-volume mount path the language agents are staged into, in every container. */
15
15
  export declare const FARGATE_AGENTS_DIR = "/var/odigos";
16
16
  /** Where the agents bundle holds the agent files; the staging container copies from here to there. */