Files
2026-05-06 18:55:16 -05:00

580 lines
120 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.YARGS_HELPERS = void 0;
exports.makeConfig = makeConfig;
const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
// eslint-disable-next-line import/no-extraneous-dependencies
const user_input_gen_1 = require("@aws-cdk/user-input-gen");
const cdk_from_cfn = require("cdk-from-cfn");
const deploy_1 = require("../commands/deploy");
const init_1 = require("../commands/init");
const package_manager_1 = require("../commands/init/package-manager");
const language_1 = require("../commands/language");
exports.YARGS_HELPERS = new user_input_gen_1.CliHelpers('./util/yargs-helpers');
/**
* Source of truth for all CDK CLI commands. `user-input-gen` translates this into:
*
* - the `yargs` definition in `lib/parse-command-line-arguments.ts`.
* - the `UserInput` type in `lib/user-input.ts`.
* - the `convertXxxToUserInput` functions in `lib/convert-to-user-input.ts`.
*/
async function makeConfig() {
return {
globalOptions: {
'app': { type: 'string', alias: 'a', desc: 'REQUIRED WHEN RUNNING APP: command-line for executing your app or a cloud assembly directory (e.g. "node bin/my-app.js"). Can also be specified in cdk.json or ~/.cdk.json', requiresArg: true },
'build': { type: 'string', desc: 'Command-line for a pre-synth build' },
'context': { type: 'array', alias: 'c', desc: 'Add contextual string parameter (KEY=VALUE)' },
'plugin': { type: 'array', alias: 'p', desc: 'Name or path of a node package that extend the CDK features. Can be specified multiple times' },
'trace': { type: 'boolean', desc: 'Print trace for stack warnings' },
'strict': { type: 'boolean', desc: 'Do not construct stacks with warnings' },
'lookups': { type: 'boolean', desc: 'Perform context lookups (synthesis fails if this is disabled and context lookups need to be performed)', default: true },
'ignore-errors': { type: 'boolean', default: false, desc: 'Ignores synthesis errors, which will likely produce an invalid output' },
'json': { type: 'boolean', alias: 'j', desc: 'Use JSON output instead of YAML when templates are printed to STDOUT', default: false },
'verbose': { type: 'boolean', alias: 'v', desc: 'Show debug logs (specify multiple times to increase verbosity)', default: false, count: true },
'debug': { type: 'boolean', desc: 'Debug the CDK app. Log additional information during synthesis, such as creation stack traces of tokens (sets CDK_DEBUG, will slow down synthesis)', default: false },
'profile': { type: 'string', desc: 'Use the indicated AWS profile as the default environment', requiresArg: true },
'proxy': { type: 'string', desc: 'Use the indicated proxy. Will read from HTTPS_PROXY environment variable if not specified', requiresArg: true },
'ca-bundle-path': { type: 'string', desc: 'Path to CA certificate to use when validating HTTPS requests. Will read from AWS_CA_BUNDLE environment variable if not specified', requiresArg: true },
'ec2creds': { type: 'boolean', alias: 'i', default: undefined, desc: 'Force trying to fetch EC2 instance credentials. Default: guess EC2 instance status' },
'version-reporting': { type: 'boolean', desc: 'Disable CLI telemetry and do not include the "AWS::CDK::Metadata" resource in synthesized templates (enabled by default)', default: undefined, alias: 'telemetry' },
'path-metadata': { type: 'boolean', desc: 'Include "aws:cdk:path" CloudFormation metadata for each resource (enabled by default)', default: undefined },
'asset-metadata': { type: 'boolean', desc: 'Include "aws:asset:*" CloudFormation metadata for resources that uses assets (enabled by default)', default: undefined },
'role-arn': { type: 'string', alias: 'r', desc: 'ARN of Role to use when invoking CloudFormation', default: undefined, requiresArg: true },
'staging': { type: 'boolean', desc: 'Copy assets to the output directory (use --no-staging to disable the copy of assets which allows local debugging via the SAM CLI to reference the original source files)', default: true },
'output': { type: 'string', alias: 'o', desc: 'Emits the synthesized cloud assembly into a directory (default: cdk.out)', requiresArg: true },
'notices': { type: 'boolean', desc: 'Show relevant notices' },
'no-color': { type: 'boolean', desc: 'Removes colors and other style from console output', default: false },
'color': { type: 'boolean', desc: 'Force colored output even when stdout is not a TTY', default: undefined },
'ci': { type: 'boolean', desc: 'Force CI detection. If CI=true then logs will be sent to stdout instead of stderr', default: exports.YARGS_HELPERS.isCI() },
'unstable': { type: 'array', desc: 'Opt in to unstable features. The flag indicates that the scope and API of a feature might still change. Otherwise the feature is generally production ready and fully supported. Can be specified multiple times.', default: [] },
'telemetry-file': { type: 'string', desc: 'Send telemetry data to a local file.', default: undefined },
'yes': { type: 'boolean', alias: 'y', desc: 'Automatically answer interactive prompts with the recommended response. This includes confirming actions.', default: false },
},
commands: {
'list': {
arg: {
name: 'STACKS',
variadic: true,
},
aliases: ['ls'],
description: 'Lists all stacks in the app',
options: {
'long': { type: 'boolean', default: false, alias: 'l', desc: 'Display environment information for each stack' },
'show-dependencies': { type: 'boolean', default: false, alias: 'd', desc: 'Display stack dependency information for each stack' },
},
},
'synth': {
arg: {
name: 'STACKS',
variadic: true,
},
aliases: ['synthesize'],
description: 'Synthesizes and prints the CloudFormation template for this stack',
options: {
exclusively: { type: 'boolean', alias: 'e', desc: 'Only synthesize requested stacks, don\'t include dependencies' },
validation: { type: 'boolean', desc: 'After synthesis, validate stacks with the "validateOnSynth" attribute set (can also be controlled with CDK_VALIDATION)', default: true },
quiet: { type: 'boolean', alias: 'q', desc: 'Do not output CloudFormation Template to stdout', default: false },
},
},
'bootstrap': {
arg: {
name: 'ENVIRONMENTS',
variadic: true,
},
description: 'Deploys the CDK toolkit stack into an AWS environment',
options: {
'bootstrap-bucket-name': { type: 'string', alias: ['b', 'toolkit-bucket-name'], desc: 'The name of the CDK toolkit bucket; bucket will be created and must not exist', default: undefined },
'bootstrap-kms-key-id': { type: 'string', desc: 'AWS KMS master key ID used for the SSE-KMS encryption (specify AWS_MANAGED_KEY to use an AWS-managed key)', default: undefined, conflicts: 'bootstrap-customer-key' },
'example-permissions-boundary': { type: 'boolean', alias: 'epb', desc: 'Use the example permissions boundary.', default: undefined, conflicts: 'custom-permissions-boundary' },
'custom-permissions-boundary': { type: 'string', alias: 'cpb', desc: 'Use the permissions boundary specified by name.', default: undefined, conflicts: 'example-permissions-boundary' },
'bootstrap-customer-key': { type: 'boolean', desc: 'Create a Customer Master Key (CMK) for the bootstrap bucket (you will be charged but can customize permissions, modern bootstrapping only)', default: undefined, conflicts: 'bootstrap-kms-key-id' },
'qualifier': { type: 'string', desc: 'String which must be unique for each bootstrap stack. You must configure it on your CDK app if you change this from the default.', default: undefined },
'public-access-block-configuration': { type: 'boolean', desc: 'Block public access configuration on CDK toolkit bucket (enabled by default) ', default: undefined },
'deny-external-id': { type: 'boolean', desc: 'Block AssumeRole access to all boostrapped roles if an ExternalId is provided (enabled by default) ', default: undefined },
'tags': { type: 'array', alias: 't', desc: 'Tags to add for the stack (KEY=VALUE)', default: [] },
'execute': { type: 'boolean', desc: 'Whether to execute the change set (--no-execute will NOT execute the change set)', default: true },
'trust': { type: 'array', desc: 'The AWS account IDs that should be trusted to perform deployments into this environment (may be repeated, modern bootstrapping only)', default: [] },
'trust-for-lookup': { type: 'array', desc: 'The AWS account IDs that should be trusted to look up values in this environment (may be repeated, modern bootstrapping only)', default: [] },
'untrust': { type: 'array', desc: 'The AWS account IDs that should not be trusted by this environment (may be repeated, modern bootstrapping only)', default: [] },
'cloudformation-execution-policies': { type: 'array', desc: 'The Managed Policy ARNs that should be attached to the role performing deployments into this environment (may be repeated, modern bootstrapping only)', default: [] },
'force': { alias: 'f', type: 'boolean', desc: 'Always bootstrap even if it would downgrade template version', default: false },
'termination-protection': { type: 'boolean', default: undefined, desc: 'Toggle CloudFormation termination protection on the bootstrap stacks' },
'show-template': { type: 'boolean', desc: 'Instead of actual bootstrapping, print the current CLI\'s bootstrapping template to stdout for customization', default: false },
'toolkit-stack-name': { type: 'string', desc: 'The name of the CDK toolkit stack to create', requiresArg: true },
'template': { type: 'string', requiresArg: true, desc: 'Use the template from the given file instead of the built-in one (use --show-template to obtain an example)' },
'previous-parameters': { type: 'boolean', default: true, desc: 'Use previous values for existing parameters (you must specify all parameters on every deployment if this is disabled)' },
},
},
'gc': {
description: 'Garbage collect assets. Options detailed here: https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-gc',
arg: {
name: 'ENVIRONMENTS',
variadic: true,
},
options: {
'action': { type: 'string', desc: 'The action (or sub-action) you want to perform. Valid entires are "print", "tag", "delete-tagged", "full".', default: 'full' },
'type': { type: 'string', desc: 'Specify either ecr, s3, or all', default: 'all' },
'rollback-buffer-days': { type: 'number', desc: 'Delete assets that have been marked as isolated for this many days', default: 0 },
'created-buffer-days': { type: 'number', desc: 'Never delete assets younger than this (in days)', default: 1 },
'confirm': { type: 'boolean', desc: 'Confirm via manual prompt before deletion', default: true },
'toolkit-stack-name': { type: 'string', desc: 'The name of the CDK toolkit stack, if different from the default "CDKToolkit"', requiresArg: true, conflicts: 'bootstrap-stack-name' },
'bootstrap-stack-name': { type: 'string', desc: 'The name of the CDK toolkit stack, if different from the default "CDKToolkit" (deprecated, use --toolkit-stack-name)', deprecated: 'use --toolkit-stack-name', requiresArg: true, conflicts: 'toolkit-stack-name' }, // TODO: remove when garbage collection is GA
},
},
'flags': {
description: 'View and toggle feature flags.',
arg: {
name: 'FLAGNAME',
variadic: true,
},
options: {
value: { type: 'string', desc: 'The value the user would like to set the feature flag configuration to', requiresArg: true },
set: { type: 'boolean', desc: 'Signifies the user would like to modify their feature flag configuration', requiresArg: false },
all: { type: 'boolean', desc: 'Modify or view all feature flags', requiresArg: false },
unconfigured: { type: 'boolean', desc: 'Modify unconfigured feature flags', requiresArg: false },
recommended: { type: 'boolean', desc: 'Change flags to recommended states', requiresArg: false },
default: { type: 'boolean', desc: 'Change flags to default state', requiresArg: false },
interactive: { type: 'boolean', alias: ['i'], desc: 'Interactive option for the flags command' },
safe: { type: 'boolean', desc: 'Enable all feature flags that do not impact the user\'s application', requiresArg: false },
concurrency: { type: 'number', alias: ['n'], desc: 'Maximum number of simultaneous synths to execute.', default: 4, requiresArg: true },
},
},
'deploy': {
description: 'Deploys the stack(s) named STACKS into your AWS account',
options: {
'all': { type: 'boolean', desc: 'Deploy all available stacks', default: false },
'build-exclude': { type: 'array', alias: 'E', desc: 'Do not rebuild asset with the given ID. Can be specified multiple times', default: [] },
'exclusively': { type: 'boolean', alias: 'e', desc: 'Only deploy requested stacks, don\'t include dependencies' },
'require-approval': { type: 'string', choices: [cloud_assembly_schema_1.RequireApproval.NEVER, cloud_assembly_schema_1.RequireApproval.ANYCHANGE, cloud_assembly_schema_1.RequireApproval.BROADENING], desc: 'What changes require manual approval' },
'notification-arns': { type: 'array', desc: 'ARNs of SNS topics that CloudFormation will notify with stack related events. These will be added to ARNs specified with the \'notificationArns\' stack property.' },
// @deprecated(v2) -- tags are part of the Cloud Assembly and tags specified here will be overwritten on the next deployment
'tags': { type: 'array', alias: 't', desc: 'Tags to add to the stack (KEY=VALUE), overrides tags from Cloud Assembly (deprecated)' },
'execute': { type: 'boolean', desc: 'Whether to execute the change set (--no-execute will NOT execute the change set) (deprecated)', deprecated: true },
'change-set-name': { type: 'string', desc: 'Name of the CloudFormation change set to create (only if method is not direct)' },
'method': {
alias: 'm',
type: 'string',
choices: ['direct', 'change-set', 'prepare-change-set', 'execute-change-set'],
requiresArg: true,
desc: 'How to perform the deployment. "change-set" (default) creates and executes a change set. "prepare-change-set" creates a change set without executing it. "execute-change-set" executes a previously created change set, bypassing synthesis entirely. "direct" skips change sets for faster deployments but lacks progress information',
},
'import-existing-resources': { type: 'boolean', desc: 'Indicates if the stack set imports resources that already exist.', default: false },
'force': { alias: 'f', type: 'boolean', desc: 'Always deploy stack even if templates are identical', default: false },
'parameters': { type: 'array', desc: 'Additional parameters passed to CloudFormation at deploy time (STACK:KEY=VALUE)', default: {} },
'outputs-file': { type: 'string', alias: 'O', desc: 'Path to file where stack outputs will be written as JSON', requiresArg: true },
'previous-parameters': { type: 'boolean', default: true, desc: 'Use previous values for existing parameters (you must specify all parameters on every deployment if this is disabled)' },
'toolkit-stack-name': { type: 'string', desc: 'The name of the existing CDK toolkit stack (only used for app using legacy synthesis)', requiresArg: true },
'progress': { type: 'string', choices: [deploy_1.StackActivityProgress.BAR, deploy_1.StackActivityProgress.EVENTS], desc: 'Display mode for stack activity events' },
'rollback': {
type: 'boolean',
desc: "Rollback stack to stable state on failure. Defaults to 'true', iterate more rapidly with --no-rollback or -R. " +
'Note: do **not** disable this flag for deployments with resource replacements, as that will always fail',
negativeAlias: 'R',
},
'hotswap': {
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, " +
'but does not fall back to a full deployment if that is not possible. ' +
'Instead, changes to any non-hotswappable properties are ignored.' +
'Do not use this in production environments',
},
'hotswap-fallback': {
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, " +
'which skips CloudFormation and updates the resources directly, ' +
'and falls back to a full deployment if that is not possible. ' +
'Do not use this in production environments',
},
'hotswap-ecs-minimum-healthy-percent': {
type: 'number',
desc: 'Lower limit on the number of your service\'s tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount',
},
'hotswap-ecs-maximum-healthy-percent': {
type: 'number',
desc: 'Upper limit on the number of your service\'s tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount',
},
'hotswap-ecs-stabilization-timeout-seconds': {
type: 'number',
desc: 'Number of seconds to wait for a single service to reach stable state, where the desiredCount is equal to the runningCount',
},
'watch': {
type: 'boolean',
desc: 'Continuously observe the project files, ' +
'and deploy the given stack(s) automatically when changes are detected. ' +
'Implies --hotswap by default',
},
'logs': {
type: 'boolean',
default: true,
desc: 'Show CloudWatch log events from all resources in the selected Stacks in the terminal. ' +
"'true' by default, use --no-logs to turn off. " +
"Only in effect if specified alongside the '--watch' option",
},
'concurrency': { type: 'number', desc: 'Maximum number of simultaneous deployments (dependency permitting) to execute.', default: 1, requiresArg: true },
'asset-parallelism': { type: 'boolean', desc: 'Whether to build/publish assets in parallel' },
'asset-build-concurrency': { type: 'number', desc: 'Maximum number of asset builds to run in parallel', default: 1, requiresArg: true },
'asset-prebuild': { type: 'boolean', desc: 'Whether to build all assets before deploying the first stack (useful for failing Docker builds)', default: true },
'ignore-no-stacks': { type: 'boolean', desc: 'Whether to deploy if the app contains no stacks', default: false },
'revert-drift': { type: 'boolean', desc: 'Create a drift-aware change set that brings actual resource states in line with template definitions', default: false },
},
arg: {
name: 'STACKS',
variadic: true,
},
},
'diagnose': {
description: 'Find the root cause(s) of stack deployment failures',
options: {
'toolkit-stack-name': { type: 'string', desc: 'The name of the existing CDK toolkit stack (only used for app using legacy synthesis)', requiresArg: true },
'concurrency': { type: 'number', desc: 'How many stacks to diagnose in parallel', requiresArg: true },
},
arg: {
name: 'STACKS',
variadic: true,
},
},
'rollback': {
description: 'Rolls back the stack(s) named STACKS to their last stable state',
arg: {
name: 'STACKS',
variadic: true,
},
options: {
'all': { type: 'boolean', default: false, desc: 'Roll back all available stacks' },
'toolkit-stack-name': { type: 'string', desc: 'The name of the CDK toolkit stack the environment is bootstrapped with', requiresArg: true },
'force': {
alias: 'f',
type: 'boolean',
desc: 'Orphan all resources for which the rollback operation fails.',
},
'validate-bootstrap-version': {
type: 'boolean',
desc: 'Whether to validate the bootstrap stack version. Defaults to \'true\', disable with --no-validate-bootstrap-version.',
},
'orphan': {
// alias: 'o' conflicts with --output
type: 'array',
desc: 'Orphan the given resources, identified by their logical ID (can be specified multiple times)',
default: [],
},
},
},
'publish-assets': {
description: 'Publish assets for the given stack(s) without deploying',
arg: {
name: 'STACKS',
variadic: true,
},
options: {
all: { type: 'boolean', desc: 'Publish assets for all available stacks', default: false },
exclusively: { type: 'boolean', alias: 'e', desc: 'Only publish assets for requested stacks, don\'t include dependencies' },
force: { type: 'boolean', alias: 'f', desc: 'Always publish assets, even if they are already published', default: false },
concurrency: { type: 'number', desc: 'Maximum number of simultaneous asset operations (building and publishing, dependency permitting) to execute.', default: 4, requiresArg: true },
},
},
'import': {
description: 'Import existing resource(s) into the given STACK',
arg: {
name: 'STACK',
variadic: false,
},
options: {
'execute': { type: 'boolean', desc: 'Whether to execute the change set (--no-execute will NOT execute the change set)', default: true },
'change-set-name': { type: 'string', desc: 'Name of the CloudFormation change set to create' },
'toolkit-stack-name': { type: 'string', desc: 'The name of the CDK toolkit stack to create', requiresArg: true },
'rollback': {
type: 'boolean',
desc: "Rollback stack to stable state on failure. Defaults to 'true', iterate more rapidly with --no-rollback or -R. " +
'Note: do **not** disable this flag for deployments with resource replacements, as that will always fail',
},
'force': {
alias: 'f',
type: 'boolean',
desc: 'Do not abort if the template diff includes updates or deletes. This is probably safe but we\'re not sure, let us know how it goes.',
},
'record-resource-mapping': {
type: 'string',
requiresArg: true,
desc: 'If specified, CDK will generate a mapping of existing physical resources to CDK resources to be imported as. The mapping ' +
'will be written in the given file path. No actual import operation will be performed',
},
'resource-mapping': {
type: 'string',
alias: 'm',
requiresArg: true,
desc: 'If specified, CDK will use the given file to map physical resources to CDK resources for import, instead of interactively ' +
'asking the user. Can be run from scripts',
},
'resource-mapping-inline': {
type: 'string',
requiresArg: true,
desc: 'Inline JSON resource mapping, e.g. \'{"MyResource":{"TableName":"my-table"}}\'',
},
},
},
'watch': {
description: "Shortcut for 'deploy --watch'",
arg: {
name: 'STACKS',
variadic: true,
},
options: {
'build-exclude': { type: 'array', alias: 'E', desc: 'Do not rebuild asset with the given ID. Can be specified multiple times', default: [] },
'exclusively': { type: 'boolean', alias: 'e', desc: 'Only deploy requested stacks, don\'t include dependencies' },
'change-set-name': { type: 'string', desc: 'Name of the CloudFormation change set to create' },
'force': { alias: 'f', type: 'boolean', desc: 'Always deploy stack even if templates are identical', default: false },
'toolkit-stack-name': { type: 'string', desc: 'The name of the existing CDK toolkit stack (only used for app using legacy synthesis)', requiresArg: true },
'progress': { type: 'string', choices: [deploy_1.StackActivityProgress.BAR, deploy_1.StackActivityProgress.EVENTS], desc: 'Display mode for stack activity events' },
'rollback': {
type: 'boolean',
desc: "Rollback stack to stable state on failure. Defaults to 'true', iterate more rapidly with --no-rollback or -R. " +
'Note: do **not** disable this flag for deployments with resource replacements, as that will always fail',
negativeAlias: 'R',
},
'hotswap': {
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, " +
'but does not fall back to a full deployment if that is not possible. ' +
'Instead, changes to any non-hotswappable properties are ignored.' +
"'true' by default, use --no-hotswap to turn off",
},
'hotswap-fallback': {
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, " +
'which skips CloudFormation and updates the resources directly, ' +
'and falls back to a full deployment if that is not possible.',
},
'hotswap-ecs-minimum-healthy-percent': {
type: 'number',
desc: 'Lower limit on the number of your service\'s tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount',
},
'hotswap-ecs-maximum-healthy-percent': {
type: 'number',
desc: 'Upper limit on the number of your service\'s tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount',
},
'hotswap-ecs-stabilization-timeout-seconds': {
type: 'number',
desc: 'Number of seconds to wait for a single service to reach stable state, where the desiredCount is equal to the runningCount',
},
'logs': {
type: 'boolean',
default: true,
desc: 'Show CloudWatch log events from all resources in the selected Stacks in the terminal. ' +
"'true' by default, use --no-logs to turn off",
},
'concurrency': { type: 'number', desc: 'Maximum number of simultaneous deployments (dependency permitting) to execute.', default: 1, requiresArg: true },
},
},
'destroy': {
description: 'Destroy the stack(s) named STACKS',
arg: {
name: 'STACKS',
variadic: true,
},
options: {
all: { type: 'boolean', default: false, desc: 'Destroy all available stacks' },
exclusively: { type: 'boolean', alias: 'e', desc: 'Only destroy requested stacks, don\'t include dependees' },
force: { type: 'boolean', alias: 'f', desc: 'Do not ask for confirmation before destroying the stacks' },
concurrency: { type: 'number', desc: 'Maximum number of simultaneous destroys (dependency permitting) to execute.', default: 1, requiresArg: true },
},
},
'diff': {
description: 'Compares the specified stack with the deployed stack or a local template file, and returns with status 1 if any difference is found',
arg: {
name: 'STACKS',
variadic: true,
},
options: {
'exclusively': { type: 'boolean', alias: 'e', desc: 'Only diff requested stacks, don\'t include dependencies' },
'context-lines': { type: 'number', desc: 'Number of context lines to include in arbitrary JSON diff rendering', default: 3, requiresArg: true },
'template': { type: 'string', desc: 'The path to the CloudFormation template to compare with. Implies --method=template', requiresArg: true },
'strict': { type: 'boolean', desc: 'Do not filter out AWS::CDK::Metadata resources, mangled non-ASCII characters, or the CheckBootstrapVersionRule', default: false },
'security-only': { type: 'boolean', desc: 'Only diff for broadened security changes', default: false },
'fail': { type: 'boolean', desc: 'Fail with exit code 1 in case of diff' },
'processed': { type: 'boolean', desc: 'Whether to compare against the template with Transforms already processed', default: false },
'quiet': { type: 'boolean', alias: 'q', desc: 'Do not print stack name and default message when there is no diff to stdout', default: false },
'change-set': { type: 'boolean', alias: 'changeset', desc: 'Whether to create a change set to analyze resource replacements. In this mode, diff will use the deploy role instead of the lookup role.', default: true, deprecated: 'use --method instead' },
'method': {
alias: 'm',
type: 'string',
default: 'auto',
choices: ['auto', 'change-set', 'template'],
requiresArg: true,
desc: 'How to compute the diff. "auto" attempts to create a change set and falls back to template-only on failure. "change-set" creates a change set and fails if it cannot be created. Both use the deploy role instead of the lookup role. "template" compares templates directly and uses the lookup role.',
},
'import-existing-resources': { type: 'boolean', desc: 'Whether or not the change set imports resources that already exist', default: false },
'include-moves': { type: 'boolean', desc: 'Whether to include moves in the diff', default: false },
},
},
'drift': {
description: 'Detect drifts in the given CloudFormation stack(s)',
arg: {
name: 'STACKS',
variadic: true,
},
options: {
fail: { type: 'boolean', desc: 'Fail with exit code 1 if drift is detected' },
},
},
'metadata': {
description: 'Returns all metadata associated with this stack',
arg: {
name: 'STACK',
variadic: false,
},
},
'acknowledge': {
aliases: ['ack'],
description: 'Acknowledge a notice so that it does not show up anymore',
arg: {
name: 'ID',
variadic: false,
},
},
'notices': {
description: 'Returns a list of relevant notices',
options: {
unacknowledged: { type: 'boolean', alias: 'u', default: false, desc: 'Returns a list of unacknowledged notices' },
},
},
'init': {
description: 'Create a new, empty CDK project from a template.',
arg: {
name: 'TEMPLATE',
variadic: false,
},
options: {
'language': { type: 'string', alias: 'l', desc: 'The language to be used for the new project (default can be configured in ~/.cdk.json)', choices: await (0, init_1.availableInitLanguages)() },
'list': { type: 'boolean', desc: 'List the available templates' },
'generate-only': { type: 'boolean', default: false, desc: 'If true, only generates project files, without executing additional operations such as setting up a git repo, installing dependencies or compiling the project' },
'lib-version': { type: 'string', alias: 'V', default: undefined, desc: 'The version of the CDK library (aws-cdk-lib) to initialize built-in templates with. Defaults to the version that was current when this CLI was built.' },
'from-path': { type: 'string', desc: 'Path to a local custom template directory or multi-template repository', requiresArg: true, conflicts: ['lib-version'] },
'template-path': { type: 'string', desc: 'Path to a specific template within a multi-template repository', requiresArg: true },
'package-manager': { type: 'string', desc: 'The package manager to use to install dependencies. Only applicable for TypeScript and JavaScript projects. Defaults to npm in TypeScript and JavaScript projects.', choices: package_manager_1.JS_PACKAGE_MANAGERS.map(({ name }) => name) },
'project-name': { type: 'string', alias: 'n', desc: 'The name of the new project', requiresArg: true },
},
implies: { 'template-path': 'from-path' },
},
'migrate': {
description: 'Migrate existing AWS resources into a CDK app',
options: {
'stack-name': { type: 'string', alias: 'n', desc: 'The name assigned to the stack created in the new project. The name of the app will be based off this name as well.', requiresArg: true },
'language': {
type: 'string',
default: 'typescript',
alias: 'l',
desc: 'The language to be used for the new project',
choices: [...new Set(cdk_from_cfn.supported_languages().flatMap((lang) => [lang, (0, language_1.getLanguageAlias)(lang)]))],
},
'account': { type: 'string', desc: 'The account to retrieve the CloudFormation stack template from' },
'region': { type: 'string', desc: 'The region to retrieve the CloudFormation stack template from' },
'from-path': { type: 'string', desc: 'The path to the CloudFormation template to migrate. Use this for locally stored templates' },
'from-stack': { type: 'boolean', desc: 'Use this flag to retrieve the template for an existing CloudFormation stack' },
'output-path': { type: 'string', desc: 'The output path for the migrated CDK app' },
'from-scan': {
type: 'string',
desc: 'Determines if a new scan should be created, or the last successful existing scan should be used ' +
'\n options are "new" or "most-recent"',
},
'filter': {
type: 'array',
desc: 'Filters the resource scan based on the provided criteria in the following format: "key1=value1,key2=value2"' +
'\n This field can be passed multiple times for OR style filtering: ' +
'\n filtering options: ' +
'\n resource-identifier: A key-value pair that identifies the target resource. i.e. {"ClusterName", "myCluster"}' +
'\n resource-type-prefix: A string that represents a type-name prefix. i.e. "AWS::DynamoDB::"' +
'\n tag-key: a string that matches resources with at least one tag with the provided key. i.e. "myTagKey"' +
'\n tag-value: a string that matches resources with at least one tag with the provided value. i.e. "myTagValue"',
},
'compress': { type: 'boolean', desc: 'Use this flag to zip the generated CDK app' },
},
},
'context': {
description: 'Manage cached context values',
options: {
reset: { alias: 'e', desc: 'The context key (or its index) to reset', type: 'string', requiresArg: true, default: undefined },
force: { alias: 'f', desc: 'Ignore missing key error', type: 'boolean', default: false },
clear: { desc: 'Clear all context', type: 'boolean', default: false },
},
},
'docs': {
aliases: ['doc'],
description: 'Opens the reference documentation in a browser',
options: {
browser: {
alias: 'b',
desc: 'the command to use to open the browser, using %u as a placeholder for the path of the file to open',
type: 'string',
default: exports.YARGS_HELPERS.browserForPlatform(),
},
},
},
'doctor': {
description: 'Check your set-up for potential problems',
},
'orphan': {
arg: {
name: 'PATHS',
variadic: true,
},
description: 'Detach resources from a CloudFormation stack without deleting them',
options: {},
},
'refactor': {
description: 'Moves resources between stacks or within the same stack',
options: {
'additional-stack-name': {
type: 'array',
requiresArg: true,
desc: 'Names of deployed stacks to be considered for resource comparison.',
},
'dry-run': {
type: 'boolean',
desc: 'Do not perform any changes, just show what would be done',
default: false,
},
'override-file': {
type: 'string',
requiresArg: true,
desc: 'A file that declares overrides to be applied to the list of mappings computed by the CLI.',
},
'revert': {
type: 'boolean',
default: false,
desc: 'If specified, the command will revert the refactor operation. This is only valid if a mapping file was provided.',
},
'force': {
type: 'boolean',
default: false,
desc: 'Whether to do the refactor without asking for confirmation',
},
},
arg: {
name: 'STACKS',
variadic: true,
},
},
'cli-telemetry': {
description: 'Enable or disable anonymous telemetry',
options: {
enable: {
type: 'boolean',
desc: 'Enable anonymous telemetry',
conflicts: 'disable',
},
disable: {
type: 'boolean',
desc: 'Disable anonymous telemetry',
conflicts: 'enable',
},
status: {
type: 'boolean',
desc: 'Report telemetry opt-in/out status',
conflicts: ['enable', 'disable'],
},
},
},
},
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLGdDQThpQkM7QUFoa0JELDBFQUFpRTtBQUNqRSw2REFBNkQ7QUFDN0QsNERBQXFFO0FBQ3JFLDZDQUE2QztBQUM3QywrQ0FBMkQ7QUFDM0QsMkNBQTBEO0FBQzFELHNFQUF1RTtBQUN2RSxtREFBd0Q7QUFFM0MsUUFBQSxhQUFhLEdBQUcsSUFBSSwyQkFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFcEU7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLFVBQVU7SUFDOUIsT0FBTztRQUNMLGFBQWEsRUFBRTtZQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsNEtBQTRLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtZQUM1TyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxvQ0FBb0MsRUFBRTtZQUN2RSxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLDZDQUE2QyxFQUFFO1lBQzdGLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsOEZBQThGLEVBQUU7WUFDN0ksT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUU7WUFDcEUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLEVBQUU7WUFDNUUsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsd0dBQXdHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtZQUM3SixlQUFlLEVBQUUsRUFB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QUksRUFBRSw0REFBNEQ7cUJBQ25FO2lCQUNGO2dCQUNELEdBQUcsRUFBRTtvQkFDSCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1lBQ0QsZUFBZSxFQUFFO2dCQUNmLFdBQVcsRUFBRSx1Q0FBdUM7Z0JBQ3BELE9BQU8sRUFBRTtvQkFDUCxNQUFNLEVBQUU7d0JBQ04sSUFBSSxFQUFFLFNBQVM7d0JBQ2YsSUFBSSxFQUFFLDRCQUE0Qjt3QkFDbEMsU0FBUyxFQUFFLFNBQVM7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsU0FBUzt3QkFDZixJQUFJLEVBQUUsNkJBQTZCO3dCQUNuQyxTQUFTLEVBQUUsUUFBUTtxQkFDcEI7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLElBQUksRUFBRSxTQUFTO3dCQUNmLElBQUksRUFBRSxvQ0FBb0M7d0JBQzFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7cUJBQ2pDO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVxdWlyZUFwcHJvdmFsIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IENsaUhlbHBlcnMsIHR5cGUgQ2xpQ29uZmlnIH0gZnJvbSAnQGF3cy1jZGsvdXNlci1pbnB1dC1nZW4nO1xuaW1wb3J0ICogYXMgY2RrX2Zyb21fY2ZuIGZyb20gJ2Nkay1mcm9tLWNmbic7XG5pbXBvcnQgeyBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MgfSBmcm9tICcuLi9jb21tYW5kcy9kZXBsb3knO1xuaW1wb3J0IHsgYXZhaWxhYmxlSW5pdExhbmd1YWdlcyB9IGZyb20gJy4uL2NvbW1hbmRzL2luaXQnO1xuaW1wb3J0IHsgSlNfUEFDS0FHRV9NQU5BR0VSUyB9IGZyb20gJy4uL2NvbW1hbmRzL2luaXQvcGFja2FnZS1tYW5hZ2VyJztcbmltcG9ydCB7IGdldExhbmd1YWdlQWxpYXMgfSBmcm9tICcuLi9jb21tYW5kcy9sYW5ndWFnZSc7XG5cbmV4cG9ydCBjb25zdCBZQVJHU19IRUxQRVJTID0gbmV3IENsaUhlbHBlcnMoJy4vdXRpbC95YXJncy1oZWxwZXJzJyk7XG5cbi8qKlxuICogU291cmNlIG9mIHRydXRoIGZvciBhbGwgQ0RLIENMSSBjb21tYW5kcy4gYHVzZXItaW5wdXQtZ2VuYCB0cmFuc2xhdGVzIHRoaXMgaW50bzpcbiAqXG4gKiAtIHRoZSBgeWFyZ3NgIGRlZmluaXRpb24gaW4gYGxpYi9wYXJzZS1jb21tYW5kLWxpbmUtYXJndW1lbnRzLnRzYC5cbiAqIC0gdGhlIGBVc2VySW5wdXRgIHR5cGUgaW4gYGxpYi91c2VyLWlucHV0LnRzYC5cbiAqIC0gdGhlIGBjb252ZXJ0WHh4VG9Vc2VySW5wdXRgIGZ1bmN0aW9ucyBpbiBgbGliL2NvbnZlcnQtdG8tdXNlci1pbnB1dC50c2AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYWtlQ29uZmlnKCk6IFByb21pc2U8Q2xpQ29uZmlnPiB7XG4gIHJldHVybiB7XG4gICAgZ2xvYmFsT3B0aW9uczoge1xuICAgICAgJ2FwcCc6IHsgdHlwZTogJ3N0cmluZycsIGFsaWFzOiAnYScsIGRlc2M6ICdSRVFVSVJFRCBXSEVOIFJVTk5JTkcgQVBQOiBjb21tYW5kLWxpbmUgZm9yIGV4ZWN1dGluZyB5b3VyIGFwcCBvciBhIGNsb3VkIGFzc2VtYmx5IGRpcmVjdG9yeSAoZS5nLiBcIm5vZGUgYmluL215LWFwcC5qc1wiKS4gQ2FuIGFsc28gYmUgc3BlY2lmaWVkIGluIGNkay5qc29uIG9yIH4vLmNkay5qc29uJywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICdidWlsZCc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdDb21tYW5kLWxpbmUgZm9yIGEgcHJlLXN5bnRoIGJ1aWxkJyB9LFxuICAgICAgJ2NvbnRleHQnOiB7IHR5cGU6ICdhcnJheScsIGFsaWFzOiAnYycsIGRlc2M6ICdBZGQgY29udGV4dHVhbCBzdHJpbmcgcGFyYW1ldGVyIChLRVk9VkFMVUUpJyB9LFxuICAgICAgJ3BsdWdpbic6IHsgdHlwZTogJ2FycmF5JywgYWxpYXM6ICdwJywgZGVzYzogJ05hbWUgb3IgcGF0aCBvZiBhIG5vZGUgcGFja2FnZSB0aGF0IGV4dGVuZCB0aGUgQ0RLIGZlYXR1cmVzLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzJyB9LFxuICAgICAgJ3RyYWNlJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdQcmludCB0cmFjZSBmb3Igc3RhY2sgd2FybmluZ3MnIH0sXG4gICAgICAnc3RyaWN0JzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdEbyBub3QgY29uc3RydWN0IHN0YWNrcyB3aXRoIHdhcm5pbmdzJyB9LFxuICAgICAgJ2xvb2t1cHMnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1BlcmZvcm0gY29udGV4dCBsb29rdXBzIChzeW50aGVzaXMgZmFpbHMgaWYgdGhpcyBpcyBkaXNhYmxlZCBhbmQgY29udGV4dCBsb29rdXBzIG5lZWQgdG8gYmUgcGVyZm9ybWVkKScsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICdpZ25vcmUtZXJyb3JzJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBkZXNjOiAnSWdub3JlcyBzeW50aGVzaXMgZXJyb3JzLCB3aGljaCB3aWxsIGxpa2VseSBwcm9kdWNlIGFuIGludmFsaWQgb3V0cHV0JyB9LFxuICAgICAgJ2pzb24nOiB7IHR5cGU6ICdib29sZWFuJywgYWxpYXM6ICdqJywgZGVzYzogJ1VzZSBKU09OIG91dHB1dCBpbnN0ZWFkIG9mIFlBTUwgd2hlbiB0ZW1wbGF0ZXMgYXJlIHByaW50ZWQgdG8gU1RET1VUJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICd2ZXJib3NlJzogeyB0eXBlOiAnYm9vbGVhbicsIGFsaWFzOiAndicsIGRlc2M6ICdTaG93IGRlYnVnIGxvZ3MgKHNwZWNpZnkgbXVsdGlwbGUgdGltZXMgdG8gaW5jcmVhc2UgdmVyYm9zaXR5KScsIGRlZmF1bHQ6IGZhbHNlLCBjb3VudDogdHJ1ZSB9LFxuICAgICAgJ2RlYnVnJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdEZWJ1ZyB0aGUgQ0RLIGFwcC4gTG9nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZHVyaW5nIHN5bnRoZXNpcywgc3VjaCBhcyBjcmVhdGlvbiBzdGFjayB0cmFjZXMgb2YgdG9rZW5zIChzZXRzIENES19ERUJVRywgd2lsbCBzbG93IGRvd24gc3ludGhlc2lzKScsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAncHJvZmlsZSc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdVc2UgdGhlIGluZGljYXRlZCBBV1MgcHJvZmlsZSBhcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCcsIHJlcXVpcmVzQXJnOiB0cnVlIH0sXG4gICAgICAncHJveHknOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVXNlIHRoZSBpbmRpY2F0ZWQgcHJveHkuIFdpbGwgcmVhZCBmcm9tIEhUVFBTX1BST1hZIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIG5vdCBzcGVjaWZpZWQnLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgJ2NhLWJ1bmRsZS1wYXRoJzogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1BhdGggdG8gQ0EgY2VydGlmaWNhdGUgdG8gdXNlIHdoZW4gdmFsaWRhdGluZyBIVFRQUyByZXF1ZXN0cy4gV2lsbCByZWFkIGZyb20gQVdTX0NBX0JVTkRMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBub3Qgc3BlY2lmaWVkJywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICdlYzJjcmVkcyc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2knLCBkZWZhdWx0OiB1bmRlZmluZWQsIGRlc2M6ICdGb3JjZSB0cnlpbmcgdG8gZmV0Y2ggRUMyIGluc3RhbmNlIGNyZWRlbnRpYWxzLiBEZWZhdWx0OiBndWVzcyBFQzIgaW5zdGFuY2Ugc3RhdHVzJyB9LFxuICAgICAgJ3ZlcnNpb24tcmVwb3J0aW5nJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdEaXNhYmxlIENMSSB0ZWxlbWV0cnkgYW5kIGRvIG5vdCBpbmNsdWRlIHRoZSBcIkFXUzo6Q0RLOjpNZXRhZGF0YVwiIHJlc291cmNlIGluIHN5bnRoZXNpemVkIHRlbXBsYXRlcyAoZW5hYmxlZCBieSBkZWZhdWx0KScsIGRlZmF1bHQ6IHVuZGVmaW5lZCwgYWxpYXM6ICd0ZWxlbWV0cnknIH0sXG4gICAgICAncGF0aC1tZXRhZGF0YSc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnSW5jbHVkZSBcImF3czpjZGs6cGF0aFwiIENsb3VkRm9ybWF0aW9uIG1ldGFkYXRhIGZvciBlYWNoIHJlc291cmNlIChlbmFibGVkIGJ5IGRlZmF1bHQpJywgZGVmYXVsdDogdW5kZWZpbmVkIH0sXG4gICAgICAnYXNzZXQtbWV0YWRhdGEnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ0luY2x1ZGUgXCJhd3M6YXNzZXQ6KlwiIENsb3VkRm9ybWF0aW9uIG1ldGFkYXRhIGZvciByZXNvdXJjZXMgdGhhdCB1c2VzIGFzc2V0cyAoZW5hYmxlZCBieSBkZWZhdWx0KScsIGRlZmF1bHQ6IHVuZGVmaW5lZCB9LFxuICAgICAgJ3JvbGUtYXJuJzogeyB0eXBlOiAnc3RyaW5nJywgYWxpYXM6ICdyJywgZGVzYzogJ0FSTiBvZiBSb2xlIHRvIHVzZSB3aGVuIGludm9raW5nIENsb3VkRm9ybWF0aW9uJywgZGVmYXVsdDogdW5kZWZpbmVkLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgJ3N0YWdpbmcnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ0NvcHkgYXNzZXRzIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5ICh1c2UgLS1uby1zdGFnaW5nIHRvIGRpc2FibGUgdGhlIGNvcHkgb2YgYXNzZXRzIHdoaWNoIGFsbG93cyBsb2NhbCBkZWJ1Z2dpbmcgdmlhIHRoZSBTQU0gQ0xJIHRvIHJlZmVyZW5jZSB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzKScsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICdvdXRwdXQnOiB7IHR5cGU6ICdzdHJpbmcnLCBhbGlhczogJ28nLCBkZXNjOiAnRW1pdHMgdGhlIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5IGludG8gYSBkaXJlY3RvcnkgKGRlZmF1bHQ6IGNkay5vdXQpJywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICdub3RpY2VzJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdTaG93IHJlbGV2YW50IG5vdGljZXMnIH0sXG4gICAgICAnbm8tY29sb3InOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1JlbW92ZXMgY29sb3JzIGFuZCBvdGhlciBzdHlsZSBmcm9tIGNvbnNvbGUgb3V0cHV0JywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICdjb2xvcic6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnRm9yY2UgY29sb3JlZCBvdXRwdXQgZXZlbiB3aGVuIHN0ZG91dCBpcyBub3QgYSBUVFknLCBkZWZhdWx0OiB1bmRlZmluZWQgfSxcbiAgICAgICdjaSc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnRm9yY2UgQ0kgZGV0ZWN0aW9uLiBJZiBDST10cnVlIHRoZW4gbG9ncyB3aWxsIGJlIHNlbnQgdG8gc3Rkb3V0IGluc3RlYWQgb2Ygc3RkZXJyJywgZGVmYXVsdDogWUFSR1NfSEVMUEVSUy5pc0NJKCkgfSxcbiAgICAgICd1bnN0YWJsZSc6IHsgdHlwZTogJ2FycmF5JywgZGVzYzogJ09wdCBpbiB0byB1bnN0YWJsZSBmZWF0dXJlcy4gVGhlIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIHNjb3BlIGFuZCBBUEkgb2YgYSBmZWF0dXJlIG1pZ2h0IHN0aWxsIGNoYW5nZS4gT3RoZXJ3aXNlIHRoZSBmZWF0dXJlIGlzIGdlbmVyYWxseSBwcm9kdWN0aW9uIHJlYWR5IGFuZCBmdWxseSBzdXBwb3J0ZWQuIENhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMuJywgZGVmYXVsdDogW10gfSxcbiAgICAgICd0ZWxlbWV0cnktZmlsZSc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdTZW5kIHRlbGVtZXRyeSBkYXRhIHRvIGEgbG9jYWwgZmlsZS4nLCBkZWZhdWx0OiB1bmRlZmluZWQgfSxcbiAgICAgICd5ZXMnOiB7IHR5cGU6ICdib29sZWFuJywgYWxpYXM6ICd5JywgZGVzYzogJ0F1dG9tYXRpY2FsbHkgYW5zd2VyIGludGVyYWN0aXZlIHByb21wdHMgd2l0aCB0aGUgcmVjb21tZW5kZWQgcmVzcG9uc2UuIFRoaXMgaW5jbHVkZXMgY29uZmlybWluZyBhY3Rpb25zLicsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBjb21tYW5kczoge1xuICAgICAgJ2xpc3QnOiB7XG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdTVEFDS1MnLFxuICAgICAgICAgIHZhcmlhZGljOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhbGlhc2VzOiBbJ2xzJ10sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdHMgYWxsIHN0YWNrcyBpbiB0aGUgYXBwJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICdsb25nJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBhbGlhczogJ2wnLCBkZXNjOiAnRGlzcGxheSBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbiBmb3IgZWFjaCBzdGFjaycgfSxcbiAgICAgICAgICAnc2hvdy1kZXBlbmRlbmNpZXMnOiB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UsIGFsaWFzOiAnZCcsIGRlc2M6ICdEaXNwbGF5IHN0YWNrIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yIGVhY2ggc3RhY2snIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ3N5bnRoJzoge1xuICAgICAgICBhcmc6IHtcbiAgICAgICAgICBuYW1lOiAnU1RBQ0tTJyxcbiAgICAgICAgICB2YXJpYWRpYzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxpYXNlczogWydzeW50aGVzaXplJ10sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3ludGhlc2l6ZXMgYW5kIHByaW50cyB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZm9yIHRoaXMgc3RhY2snLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZXhjbHVzaXZlbHk6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2UnLCBkZXNjOiAnT25seSBzeW50aGVzaXplIHJlcXVlc3RlZCBzdGFja3MsIGRvblxcJ3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMnIH0sXG4gICAgICAgICAgdmFsaWRhdGlvbjogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdBZnRlciBzeW50aGVzaXMsIHZhbGlkYXRlIHN0YWNrcyB3aXRoIHRoZSBcInZhbGlkYXRlT25TeW50aFwiIGF0dHJpYnV0ZSBzZXQgKGNhbiBhbHNvIGJlIGNvbnRyb2xsZWQgd2l0aCBDREtfVkFMSURBVElPTiknLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgcXVpZXQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ3EnLCBkZXNjOiAnRG8gbm90IG91dHB1dCBDbG91ZEZvcm1hdGlvbiBUZW1wbGF0ZSB0byBzdGRvdXQnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdib290c3RyYXAnOiB7XG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdFTlZJUk9OTUVOVFMnLFxuICAgICAgICAgIHZhcmlhZGljOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0RlcGxveXMgdGhlIENESyB0b29sa2l0IHN0YWNrIGludG8gYW4gQVdTIGVudmlyb25tZW50JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICdib290c3RyYXAtYnVja2V0LW5hbWUnOiB7IHR5cGU6ICdzdHJpbmcnLCBhbGlhczogWydiJywgJ3Rvb2xraXQtYnVja2V0LW5hbWUnXSwgZGVzYzogJ1RoZSBuYW1lIG9mIHRoZSBDREsgdG9vbGtpdCBidWNrZXQ7IGJ1Y2tldCB3aWxsIGJlIGNyZWF0ZWQgYW5kIG11c3Qgbm90IGV4aXN0JywgZGVmYXVsdDogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgJ2Jvb3RzdHJhcC1rbXMta2V5LWlkJzogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ0FXUyBLTVMgbWFzdGVyIGtleSBJRCB1c2VkIGZvciB0aGUgU1NFLUtNUyBlbmNyeXB0aW9uIChzcGVjaWZ5IEFXU19NQU5BR0VEX0tFWSB0byB1c2UgYW4gQVdTLW1hbmFnZWQga2V5KScsIGRlZmF1bHQ6IHVuZGVmaW5lZCwgY29uZmxpY3RzOiAnYm9vdHN0cmFwLWN1c3RvbWVyLWtleScgfSxcbiAgICAgICAgICAnZXhhbXBsZS1wZXJtaXNzaW9ucy1ib3VuZGFyeSc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2VwYicsIGRlc2M6ICdVc2UgdGhlIGV4YW1wbGUgcGVybWlzc2lvbnMgYm91bmRhcnkuJywgZGVmYXVsdDogdW5kZWZpbmVkLCBjb25mbGljdHM6ICdjdXN0b20tcGVybWlzc2lvbnMtYm91bmRhcnknIH0sXG4gICAgICAgICAgJ2N1c3RvbS1wZXJtaXNzaW9ucy1ib3VuZGFyeSc6IHsgdHlwZTogJ3N0cmluZycsIGFsaWFzOiAnY3BiJywgZGVzYzogJ1VzZSB0aGUgcGVybWlzc2lvbnMgYm91bmRhcnkgc3BlY2lmaWVkIGJ5IG5hbWUuJywgZGVmYXVsdDogdW5kZWZpbmVkLCBjb25mbGljdHM6ICdleGFtcGxlLXBlcm1pc3Npb25zLWJvdW5kYXJ5JyB9LFxuICAgICAgICAgICdib290c3RyYXAtY3VzdG9tZXIta2V5JzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdDcmVhdGUgYSBDdXN0b21lciBNYXN0ZXIgS2V5IChDTUspIGZvciB0aGUgYm9vdHN0cmFwIGJ1Y2tldCAoeW91IHdpbGwgYmUgY2hhcmdlZCBidXQgY2FuIGN1c3RvbWl6ZSBwZXJtaXNzaW9ucywgbW9kZXJuIGJvb3RzdHJhcHBpbmcgb25seSknLCBkZWZhdWx0OiB1bmRlZmluZWQsIGNvbmZsaWN0czogJ2Jvb3RzdHJhcC1rbXMta2V5LWlkJyB9LFxuICAgICAgICAgICdxdWFsaWZpZXInOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnU3RyaW5nIHdoaWNoIG11c3QgYmUgdW5pcXVlIGZvciBlYWNoIGJvb3RzdHJhcCBzdGFjay4gWW91IG11c3QgY29uZmlndXJlIGl0IG9uIHlvdXIgQ0RLIGFwcCBpZiB5b3UgY2hhbmdlIHRoaXMgZnJvbSB0aGUgZGVmYXVsdC4nLCBkZWZhdWx0OiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAncHVibGljLWFjY2Vzcy1ibG9jay1jb25maWd1cmF0aW9uJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdCbG9jayBwdWJsaWMgYWNjZXNzIGNvbmZpZ3VyYXRpb24gb24gQ0RLIHRvb2xraXQgYnVja2V0IChlbmFibGVkIGJ5IGRlZmF1bHQpICcsIGRlZmF1bHQ6IHVuZGVmaW5lZCB9LFxuICAgICAgICAgICdkZW55LWV4dGVybmFsLWlkJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdCbG9jayBBc3N1bWVSb2xlIGFjY2VzcyB0byBhbGwgYm9vc3RyYXBwZWQgcm9sZXMgaWYgYW4gRXh0ZXJuYWxJZCBpcyBwcm92aWRlZCAoZW5hYmxlZCBieSBkZWZhdWx0KSAnLCBkZWZhdWx0OiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAndGFncyc6IHsgdHlwZTogJ2FycmF5JywgYWxpYXM6ICd0JywgZGVzYzogJ1RhZ3MgdG8gYWRkIGZvciB0aGUgc3RhY2sgKEtFWT1WQUxVRSknLCBkZWZhdWx0OiBbXSB9LFxuICAgICAgICAgICdleGVjdXRlJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdXaGV0aGVyIHRvIGV4ZWN1dGUgdGhlIGNoYW5nZSBzZXQgKC0tbm8tZXhlY3V0ZSB3aWxsIE5PVCBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0KScsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAndHJ1c3QnOiB7IHR5cGU6ICdhcnJheScsIGRlc2M6ICdUaGUgQVdTIGFjY291bnQgSURzIHRoYXQgc2hvdWxkIGJlIHRydXN0ZWQgdG8gcGVyZm9ybSBkZXBsb3ltZW50cyBpbnRvIHRoaXMgZW52aXJvbm1lbnQgKG1heSBiZSByZXBlYXRlZCwgbW9kZXJuIGJvb3RzdHJhcHBpbmcgb25seSknLCBkZWZhdWx0OiBbXSB9LFxuICAgICAgICAgICd0cnVzdC1mb3ItbG9va3VwJzogeyB0eXBlOiAnYXJyYXknLCBkZXNjOiAnVGhlIEFXUyBhY2NvdW50IElEcyB0aGF0IHNob3VsZCBiZSB0cnVzdGVkIHRvIGxvb2sgdXAgdmFsdWVzIGluIHRoaXMgZW52aXJvbm1lbnQgKG1heSBiZSByZXBlYXRlZCwgbW9kZXJuIGJvb3RzdHJhcHBpbmcgb25seSknLCBkZWZhdWx0OiBbXSB9LFxuICAgICAgICAgICd1bnRydXN0JzogeyB0eXBlOiAnYXJyYXknLCBkZXNjOiAnVGhlIEFXUyBhY2NvdW50IElEcyB0aGF0IHNob3VsZCBub3QgYmUgdHJ1c3RlZCBieSB0aGlzIGVudmlyb25tZW50IChtYXkgYmUgcmVwZWF0ZWQsIG1vZGVybiBib290c3RyYXBwaW5nIG9ubHkpJywgZGVmYXVsdDogW10gfSxcbiAgICAgICAgICAnY2xvdWRmb3JtYXRpb24tZXhlY3V0aW9uLXBvbGljaWVzJzogeyB0eXBlOiAnYXJyYXknLCBkZXNjOiAnVGhlIE1hbmFnZWQgUG9saWN5IEFSTnMgdGhhdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIHJvbGUgcGVyZm9ybWluZyBkZXBsb3ltZW50cyBpbnRvIHRoaXMgZW52aXJvbm1lbnQgKG1heSBiZSByZXBlYXRlZCwgbW9kZXJuIGJvb3RzdHJhcHBpbmcgb25seSknLCBkZWZhdWx0OiBbXSB9LFxuICAgICAgICAgICdmb3JjZSc6IHsgYWxpYXM6ICdmJywgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnQWx3YXlzIGJvb3RzdHJhcCBldmVuIGlmIGl0IHdvdWxkIGRvd25ncmFkZSB0ZW1wbGF0ZSB2ZXJzaW9uJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICAgICAndGVybWluYXRpb24tcHJvdGVjdGlvbic6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiB1bmRlZmluZWQsIGRlc2M6ICdUb2dnbGUgQ2xvdWRGb3JtYXRpb24gdGVybWluYXRpb24gcHJvdGVjdGlvbiBvbiB0aGUgYm9vdHN0cmFwIHN0YWNrcycgfSxcbiAgICAgICAgICAnc2hvdy10ZW1wbGF0ZSc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnSW5zdGVhZCBvZiBhY3R1YWwgYm9vdHN0cmFwcGluZywgcHJpbnQgdGhlIGN1cnJlbnQgQ0xJXFwncyBib290c3RyYXBwaW5nIHRlbXBsYXRlIHRvIHN0ZG91dCBmb3IgY3VzdG9taXphdGlvbicsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgICAgJ3Rvb2xraXQtc3RhY2stbmFtZSc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdUaGUgbmFtZSBvZiB0aGUgQ0RLIHRvb2xraXQgc3RhY2sgdG8gY3JlYXRlJywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgICAndGVtcGxhdGUnOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlc0FyZzogdHJ1ZSwgZGVzYzogJ1VzZSB0aGUgdGVtcGxhdGUgZnJvbSB0aGUgZ2l2ZW4gZmlsZSBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiBvbmUgKHVzZSAtLXNob3ctdGVtcGxhdGUgdG8gb2J0YWluIGFuIGV4YW1wbGUpJyB9LFxuICAgICAgICAgICdwcmV2aW91cy1wYXJhbWV0ZXJzJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IHRydWUsIGRlc2M6ICdVc2UgcHJldmlvdXMgdmFsdWVzIGZvciBleGlzdGluZyBwYXJhbWV0ZXJzICh5b3UgbXVzdCBzcGVjaWZ5IGFsbCBwYXJhbWV0ZXJzIG9uIGV2ZXJ5IGRlcGxveW1lbnQgaWYgdGhpcyBpcyBkaXNhYmxlZCknIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2djJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0dhcmJhZ2UgY29sbGVjdCBhc3NldHMuIE9wdGlvbnMgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS90cmVlL21haW4vcGFja2FnZXMvYXdzLWNkayNjZGstZ2MnLFxuICAgICAgICBhcmc6IHtcbiAgICAgICAgICBuYW1lOiAnRU5WSVJPTk1FTlRTJyxcbiAgICAgICAgICB2YXJpYWRpYzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICdhY3Rpb24nOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIGFjdGlvbiAob3Igc3ViLWFjdGlvbikgeW91IHdhbnQgdG8gcGVyZm9ybS4gVmFsaWQgZW50aXJlcyBhcmUgXCJwcmludFwiLCBcInRhZ1wiLCBcImRlbGV0ZS10YWdnZWRcIiwgXCJmdWxsXCIuJywgZGVmYXVsdDogJ2Z1bGwnIH0sXG4gICAgICAgICAgJ3R5cGUnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnU3BlY2lmeSBlaXRoZXIgZWNyLCBzMywgb3IgYWxsJywgZGVmYXVsdDogJ2FsbCcgfSxcbiAgICAgICAgICAncm9sbGJhY2stYnVmZmVyLWRheXMnOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjOiAnRGVsZXRlIGFzc2V0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgaXNvbGF0ZWQgZm9yIHRoaXMgbWFueSBkYXlzJywgZGVmYXVsdDogMCB9LFxuICAgICAgICAgICdjcmVhdGVkLWJ1ZmZlci1kYXlzJzogeyB0eXBlOiAnbnVtYmVyJywgZGVzYzogJ05ldmVyIGRlbGV0ZSBhc3NldHMgeW91bmdlciB0aGFuIHRoaXMgKGluIGRheXMpJywgZGVmYXVsdDogMSB9LFxuICAgICAgICAgICdjb25maXJtJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdDb25maXJtIHZpYSBtYW51YWwgcHJvbXB0IGJlZm9yZSBkZWxldGlvbicsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAndG9vbGtpdC1zdGFjay1uYW1lJzogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1RoZSBuYW1lIG9mIHRoZSBDREsgdG9vbGtpdCBzdGFjaywgaWYgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgXCJDREtUb29sa2l0XCInLCByZXF1aXJlc0FyZzogdHJ1ZSwgY29uZmxpY3RzOiAnYm9vdHN0cmFwLXN0YWNrLW5hbWUnIH0sXG4gICAgICAgICAgJ2Jvb3RzdHJhcC1zdGFjay1uYW1lJzogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1RoZSBuYW1lIG9mIHRoZSBDREsgdG9vbGtpdCBzdGFjaywgaWYgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgXCJDREtUb29sa2l0XCIgKGRlcHJlY2F0ZWQsIHVzZSAtLXRvb2xraXQtc3RhY2stbmFtZSknLCBkZXByZWNhdGVkOiAndXNlIC0tdG9vbGtpdC1zdGFjay1uYW1lJywgcmVxdWlyZXNBcmc6IHRydWUsIGNvbmZsaWN0czogJ3Rvb2xraXQtc3RhY2stbmFtZScgfSwgLy8gVE9ETzogcmVtb3ZlIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIEdBXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2ZsYWdzJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1ZpZXcgYW5kIHRvZ2dsZSBmZWF0dXJlIGZsYWdzLicsXG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdGTEFHTkFNRScsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB2YWx1ZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1RoZSB2YWx1ZSB0aGUgdXNlciB3b3VsZCBsaWtlIHRvIHNldCB0aGUgZmVhdHVyZSBmbGFnIGNvbmZpZ3VyYXRpb24gdG8nLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgIHNldDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdTaWduaWZpZXMgdGhlIHVzZXIgd291bGQgbGlrZSB0byBtb2RpZnkgdGhlaXIgZmVhdHVyZSBmbGFnIGNvbmZpZ3VyYXRpb24nLCByZXF1aXJlc0FyZzogZmFsc2UgfSxcbiAgICAgICAgICBhbGw6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnTW9kaWZ5IG9yIHZpZXcgYWxsIGZlYXR1cmUgZmxhZ3MnLCByZXF1aXJlc0FyZzogZmFsc2UgfSxcbiAgICAgICAgICB1bmNvbmZpZ3VyZWQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnTW9kaWZ5IHVuY29uZmlndXJlZCBmZWF0dXJlIGZsYWdzJywgcmVxdWlyZXNBcmc6IGZhbHNlIH0sXG4gICAgICAgICAgcmVjb21tZW5kZWQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnQ2hhbmdlIGZsYWdzIHRvIHJlY29tbWVuZGVkIHN0YXRlcycsIHJlcXVpcmVzQXJnOiBmYWxzZSB9LFxuICAgICAgICAgIGRlZmF1bHQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnQ2hhbmdlIGZsYWdzIHRvIGRlZmF1bHQgc3RhdGUnLCByZXF1aXJlc0FyZzogZmFsc2UgfSxcbiAgICAgICAgICBpbnRlcmFjdGl2ZTogeyB0eXBlOiAnYm9vbGVhbicsIGFsaWFzOiBbJ2knXSwgZGVzYzogJ0ludGVyYWN0aXZlIG9wdGlvbiBmb3IgdGhlIGZsYWdzIGNvbW1hbmQnIH0sXG4gICAgICAgICAgc2FmZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdFbmFibGUgYWxsIGZlYXR1cmUgZmxhZ3MgdGhhdCBkbyBub3QgaW1wYWN0IHRoZSB1c2VyXFwncyBhcHBsaWNhdGlvbicsIHJlcXVpcmVzQXJnOiBmYWxzZSB9LFxuICAgICAgICAgIGNvbmN1cnJlbmN5OiB7IHR5cGU6ICdudW1iZXInLCBhbGlhczogWyduJ10sIGRlc2M6ICdNYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgc3ludGhzIHRvIGV4ZWN1dGUuJywgZGVmYXVsdDogNCwgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnZGVwbG95Jzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0RlcGxveXMgdGhlIHN0YWNrKHMpIG5hbWVkIFNUQUNLUyBpbnRvIHlvdXIgQVdTIGFjY291bnQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgJ2FsbCc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnRGVwbG95IGFsbCBhdmFpbGFibGUgc3RhY2tzJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICAgICAnYnVpbGQtZXhjbHVkZSc6IHsgdHlwZTogJ2FycmF5JywgYWxpYXM6ICdFJywgZGVzYzogJ0RvIG5vdCByZWJ1aWxkIGFzc2V0IHdpdGggdGhlIGdpdmVuIElELiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzJywgZGVmYXVsdDogW10gfSxcbiAgICAgICAgICAnZXhjbHVzaXZlbHknOiB7IHR5cGU6ICdib29sZWFuJywgYWxpYXM6ICdlJywgZGVzYzogJ09ubHkgZGVwbG95IHJlcXVlc3RlZCBzdGFja3MsIGRvblxcJ3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMnIH0sXG4gICAgICAgICAgJ3JlcXVpcmUtYXBwcm92YWwnOiB7IHR5cGU6ICdzdHJpbmcnLCBjaG9pY2VzOiBbUmVxdWlyZUFwcHJvdmFsLk5FVkVSLCBSZXF1aXJlQXBwcm92YWwuQU5ZQ0hBTkdFLCBSZXF1aXJlQXBwcm92YWwuQlJPQURFTklOR10sIGRlc2M6ICdXaGF0IGNoYW5nZXMgcmVxdWlyZSBtYW51YWwgYXBwcm92YWwnIH0sXG4gICAgICAgICAgJ25vdGlmaWNhdGlvbi1hcm5zJzogeyB0eXBlOiAnYXJyYXknLCBkZXNjOiAnQVJOcyBvZiBTTlMgdG9waWNzIHRoYXQgQ2xvdWRGb3JtYXRpb24gd2lsbCBub3RpZnkgd2l0aCBzdGFjayByZWxhdGVkIGV2ZW50cy4gVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byBBUk5zIHNwZWNpZmllZCB3aXRoIHRoZSBcXCdub3RpZmljYXRpb25Bcm5zXFwnIHN0YWNrIHByb3BlcnR5LicgfSxcbiAgICAgICAgICAvLyBAZGVwcmVjYXRlZCh2MikgLS0gdGFncyBhcmUgcGFydCBvZiB0aGUgQ2xvdWQgQXNzZW1ibHkgYW5kIHRhZ3Mgc3BlY2lmaWVkIGhlcmUgd2lsbCBiZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCBkZXBsb3ltZW50XG4gICAgICAgICAgJ3RhZ3MnOiB7IHR5cGU6ICdhcnJheScsIGFsaWFzOiAndCcsIGRlc2M6ICdUYWdzIHRvIGFkZCB0byB0aGUgc3RhY2sgKEtFWT1WQUxVRSksIG92ZXJyaWRlcyB0YWdzIGZyb20gQ2xvdWQgQXNzZW1ibHkgKGRlcHJlY2F0ZWQpJyB9LFxuICAgICAgICAgICdleGVjdXRlJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdXaGV0aGVyIHRvIGV4ZWN1dGUgdGhlIGNoYW5nZSBzZXQgKC0tbm8tZXhlY3V0ZSB3aWxsIE5PVCBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0KSAoZGVwcmVjYXRlZCknLCBkZXByZWNhdGVkOiB0cnVlIH0sXG4gICAgICAgICAgJ2NoYW5nZS1zZXQtbmFtZSc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdOYW1lIG9mIHRoZSBDbG91ZEZvcm1hdGlvbiBjaGFuZ2Ugc2V0IHRvIGNyZWF0ZSAob25seSBpZiBtZXRob2QgaXMgbm90IGRpcmVjdCknIH0sXG4gICAgICAgICAgJ21ldGhvZCc6IHtcbiAgICAgICAgICAgIGFsaWFzOiAnbScsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGNob2ljZXM6IFsnZGlyZWN0JywgJ2NoYW5nZS1zZXQnLCAncHJlcGFyZS1jaGFuZ2Utc2V0JywgJ2V4ZWN1dGUtY2hhbmdlLXNldCddLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgICAgICBkZXNjOiAnSG93IHRvIHBlcmZvcm0gdGhlIGRlcGxveW1lbnQuIFwiY2hhbmdlLXNldFwiIChkZWZhdWx0KSBjcmVhdGVzIGFuZCBleGVjdXRlcyBhIGNoYW5nZSBzZXQuIFwicHJlcGFyZS1jaGFuZ2Utc2V0XCIgY3JlYXRlcyBhIGNoYW5nZSBzZXQgd2l0aG91dCBleGVjdXRpbmcgaXQuIFwiZXhlY3V0ZS1jaGFuZ2Utc2V0XCIgZXhlY3V0ZXMgYSBwcmV2aW91c2x5IGNyZWF0ZWQgY2hhbmdlIHNldCwgYnlwYXNzaW5nIHN5bnRoZXNpcyBlbnRpcmVseS4gXCJkaXJlY3RcIiBza2lwcyBjaGFuZ2Ugc2V0cyBmb3IgZmFzdGVyIGRlcGxveW1lbnRzIGJ1dCBsYWNrcyBwcm9ncmVzcyBpbmZvcm1hdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnaW1wb3J0LWV4aXN0aW5nLXJlc291cmNlcyc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnSW5kaWNhdGVzIGlmIHRoZSBzdGFjayBzZXQgaW1wb3J0cyByZXNvdXJjZXMgdGhhdCBhbHJlYWR5IGV4aXN0LicsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgICAgJ2ZvcmNlJzogeyBhbGlhczogJ2YnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdBbHdheXMgZGVwbG95IHN0YWNrIGV2ZW4gaWYgdGVtcGxhdGVzIGFyZSBpZGVudGljYWwnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICAgICdwYXJhbWV0ZXJzJzogeyB0eXBlOiAnYXJyYXknLCBkZXNjOiAnQWRkaXRpb25hbCBwYXJhbWV0ZXJzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiBhdCBkZXBsb3kgdGltZSAoU1RBQ0s6S0VZPVZBTFVFKScsIGRlZmF1bHQ6IHt9IH0sXG4gICAgICAgICAgJ291dHB1dHMtZmlsZSc6IHsgdHlwZTogJ3N0cmluZycsIGFsaWFzOiAnTycsIGRlc2M6ICdQYXRoIHRvIGZpbGUgd2hlcmUgc3RhY2sgb3V0cHV0cyB3aWxsIGJlIHdyaXR0ZW4gYXMgSlNPTicsIHJlcXVpcmVzQXJnOiB0cnVlIH0sXG4gICAgICAgICAgJ3ByZXZpb3VzLXBhcmFtZXRlcnMnOiB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogdHJ1ZSwgZGVzYzogJ1VzZSBwcmV2aW91cyB2YWx1ZXMgZm9yIGV4aXN0aW5nIHBhcmFtZXRlcnMgKHlvdSBtdXN0IHNwZWNpZnkgYWxsIHBhcmFtZXRlcnMgb24gZXZlcnkgZGVwbG95bWVudCBpZiB0aGlzIGlzIGRpc2FibGVkKScgfSxcbiAgICAgICAgICAndG9vbGtpdC1zdGFjay1uYW1lJzogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1RoZSBuYW1lIG9mIHRoZSBleGlzdGluZyBDREsgdG9vbGtpdCBzdGFjayAob25seSB1c2VkIGZvciBhcHAgdXNpbmcgbGVnYWN5IHN5bnRoZXNpcyknLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgICdwcm9ncmVzcyc6IHsgdHlwZTogJ3N0cmluZycsIGNob2ljZXM6IFtTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuQkFSLCBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuRVZFTlRTXSwgZGVzYzogJ0Rpc3BsYXkgbW9kZSBmb3Igc3RhY2sgYWN0aXZpdHkgZXZlbnRzJyB9LFxuICAgICAgICAgICdyb2xsYmFjayc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlc2M6IFwiUm9sbGJhY2sgc3RhY2sgdG8gc3RhYmxlIHN0YXRlIG9uIGZhaWx1cmUuIERlZmF1bHRzIHRvICd0cnVlJywgaXRlcmF0ZSBtb3JlIHJhcGlkbHkgd2l0aCAtLW5vLXJvbGxiYWNrIG9yIC1SLiBcIiArXG4gICAgICAgICAgICAgICdOb3RlOiBkbyAqKm5vdCoqIGRpc2FibGUgdGhpcyBmbGFnIGZvciBkZXBsb3ltZW50cyB3aXRoIHJlc291cmNlIHJlcGxhY2VtZW50cywgYXMgdGhhdCB3aWxsIGFsd2F5cyBmYWlsJyxcbiAgICAgICAgICAgIG5lZ2F0aXZlQWxpYXM6ICdSJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwJzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogXCJBdHRlbXB0cyB0byBwZXJmb3JtIGEgJ2hvdHN3YXAnIGRlcGxveW1lbnQsIFwiICtcbiAgICAgICAgICAgICAgJ2J1dCBkb2VzIG5vdCBmYWxsIGJhY2sgdG8gYSBmdWxsIGRlcGxveW1lbnQgaWYgdGhhdCBpcyBub3QgcG9zc2libGUuICcgK1xuICAgICAgICAgICAgICAnSW5zdGVhZCwgY2hhbmdlcyB0byBhbnkgbm9uLWhvdHN3YXBwYWJsZSBwcm9wZXJ0aWVzIGFyZSBpZ25vcmVkLicgK1xuICAgICAgICAgICAgICAnRG8gbm90IHVzZSB0aGlzIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwLWZhbGxiYWNrJzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogXCJBdHRlbXB0cyB0byBwZXJmb3JtIGEgJ2hvdHN3YXAnIGRlcGxveW1lbnQsIFwiICtcbiAgICAgICAgICAgICAgJ3doaWNoIHNraXBzIENsb3VkRm9ybWF0aW9uIGFuZCB1cGRhdGVzIHRoZSByZXNvdXJjZXMgZGlyZWN0bHksICcgK1xuICAgICAgICAgICAgICAnYW5kIGZhbGxzIGJhY2sgdG8gYSBmdWxsIGRlcGxveW1lbnQgaWYgdGhhdCBpcyBub3QgcG9zc2libGUuICcgK1xuICAgICAgICAgICAgICAnRG8gbm90IHVzZSB0aGlzIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwLWVjcy1taW5pbXVtLWhlYWx0aHktcGVyY2VudCc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzYzogJ0xvd2VyIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgeW91ciBzZXJ2aWNlXFwncyB0YXNrcyB0aGF0IG11c3QgcmVtYWluIGluIHRoZSBSVU5OSU5HIHN0YXRlIGR1cmluZyBhIGRlcGxveW1lbnQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZENvdW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwLWVjcy1tYXhpbXVtLWhlYWx0aHktcGVyY2VudCc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzYzogJ1VwcGVyIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgeW91ciBzZXJ2aWNlXFwncyB0YXNrcyB0aGF0IGFyZSBhbGxvd2VkIGluIHRoZSBSVU5OSU5HIG9yIFBFTkRJTkcgc3RhdGUgZHVyaW5nIGEgZGVwbG95bWVudCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBkZXNpcmVkQ291bnQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2hvdHN3YXAtZWNzLXN0YWJpbGl6YXRpb24tdGltZW91dC1zZWNvbmRzJzoge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBkZXNjOiAnTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgYSBzaW5nbGUgc2VydmljZSB0byByZWFjaCBzdGFibGUgc3RhdGUsIHdoZXJlIHRoZSBkZXNpcmVkQ291bnQgaXMgZXF1YWwgdG8gdGhlIHJ1bm5pbmdDb3VudCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnd2F0Y2gnOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZXNjOiAnQ29udGludW91c2x5IG9ic2VydmUgdGhlIHByb2plY3QgZmlsZXMsICcgK1xuICAgICAgICAgICAgICAnYW5kIGRlcGxveSB0aGUgZ2l2ZW4gc3RhY2socykgYXV0b21hdGljYWxseSB3aGVuIGNoYW5nZXMgYXJlIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgICAgJ0ltcGxpZXMgLS1ob3Rzd2FwIGJ5IGRlZmF1bHQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2xvZ3MnOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgZGVzYzogJ1Nob3cgQ2xvdWRXYXRjaCBsb2cgZXZlbnRzIGZyb20gYWxsIHJlc291cmNlcyBpbiB0aGUgc2VsZWN0ZWQgU3RhY2tzIGluIHRoZSB0ZXJtaW5hbC4gJyArXG4gICAgICAgICAgICAgIFwiJ3RydWUnIGJ5IGRlZmF1bHQsIHVzZSAtLW5vLWxvZ3MgdG8gdHVybiBvZmYuIFwiICtcbiAgICAgICAgICAgICAgXCJPbmx5IGluIGVmZmVjdCBpZiBzcGVjaWZpZWQgYWxvbmdzaWRlIHRoZSAnLS13YXRjaCcgb3B0aW9uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY29uY3VycmVuY3knOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjOiAnTWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGRlcGxveW1lbnRzIChkZXBlbmRlbmN5IHBlcm1pdHRpbmcpIHRvIGV4ZWN1dGUuJywgZGVmYXVsdDogMSwgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgICAnYXNzZXQtcGFyYWxsZWxpc20nOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1doZXRoZXIgdG8gYnVpbGQvcHVibGlzaCBhc3NldHMgaW4gcGFyYWxsZWwnIH0sXG4gICAgICAgICAgJ2Fzc2V0LWJ1aWxkLWNvbmN1cnJlbmN5JzogeyB0eXBlOiAnbnVtYmVyJywgZGVzYzogJ01heGltdW0gbnVtYmVyIG9mIGFzc2V0IGJ1aWxkcyB0byBydW4gaW4gcGFyYWxsZWwnLCBkZWZhdWx0OiAxLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgICdhc3NldC1wcmVidWlsZCc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnV2hldGhlciB0byBidWlsZCBhbGwgYXNzZXRzIGJlZm9yZSBkZXBsb3lpbmcgdGhlIGZpcnN0IHN0YWNrICh1c2VmdWwgZm9yIGZhaWxpbmcgRG9ja2VyIGJ1aWxkcyknLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgJ2lnbm9yZS1uby1zdGFja3MnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1doZXRoZXIgdG8gZGVwbG95IGlmIHRoZSBhcHAgY29udGFpbnMgbm8gc3RhY2tzJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICAgICAncmV2ZXJ0LWRyaWZ0JzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdDcmVhdGUgYSBkcmlmdC1hd2FyZSBjaGFuZ2Ugc2V0IHRoYXQgYnJpbmdzIGFjdHVhbCByZXNvdXJjZSBzdGF0ZXMgaW4gbGluZSB3aXRoIHRlbXBsYXRlIGRlZmluaXRpb25zJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ1NUQUNLUycsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2RpYWdub3NlJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbmQgdGhlIHJvb3QgY2F1c2Uocykgb2Ygc3RhY2sgZGVwbG95bWVudCBmYWlsdXJlcycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAndG9vbGtpdC1zdGFjay1uYW1lJzogeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1RoZSBuYW1lIG9mIHRoZSBleGlzdGluZyBDREsgdG9vbGtpdCBzdGFjayAob25seSB1c2VkIGZvciBhcHAgdXNpbmcgbGVnYWN5IHN5bnRoZXNpcyknLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgICdjb25jdXJyZW5jeSc6IHsgdHlwZTogJ251bWJlcicsIGRlc2M6ICdIb3cgbWFueSBzdGFja3MgdG8gZGlhZ25vc2UgaW4gcGFyYWxsZWwnLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBhcmc6IHtcbiAgICAgICAgICBuYW1lOiAnU1RBQ0tTJyxcbiAgICAgICAgICB2YXJpYWRpYzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAncm9sbGJhY2snOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUm9sbHMgYmFjayB0aGUgc3RhY2socykgbmFtZWQgU1RBQ0tTIHRvIHRoZWlyIGxhc3Qgc3RhYmxlIHN0YXRlJyxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ1NUQUNLUycsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAnYWxsJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBkZXNjOiAnUm9sbCBiYWNrIGFsbCBhdmFpbGFibGUgc3RhY2tzJyB9LFxuICAgICAgICAgICd0b29sa2l0LXN0YWNrLW5hbWUnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIG5hbWUgb2YgdGhlIENESyB0b29sa2l0IHN0YWNrIHRoZSBlbnZpcm9ubWVudCBpcyBib290c3RyYXBwZWQgd2l0aCcsIHJlcXVpcmVzQXJnOiB0cnVlIH0sXG4gICAgICAgICAgJ2ZvcmNlJzoge1xuICAgICAgICAgICAgYWxpYXM6ICdmJyxcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlc2M6ICdPcnBoYW4gYWxsIHJlc291cmNlcyBmb3Igd2hpY2ggdGhlIHJvbGxiYWNrIG9wZXJhdGlvbiBmYWlscy4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3ZhbGlkYXRlLWJvb3RzdHJhcC12ZXJzaW9uJzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogJ1doZXRoZXIgdG8gdmFsaWRhdGUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uLiBEZWZhdWx0cyB0byBcXCd0cnVlXFwnLCBkaXNhYmxlIHdpdGggLS1uby12YWxpZGF0ZS1ib290c3RyYXAtdmVyc2lvbi4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ29ycGhhbic6IHtcbiAgICAgICAgICAgIC8vIGFsaWFzOiAnbycgY29uZmxpY3RzIHdpdGggLS1vdXRwdXRcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICBkZXNjOiAnT3JwaGFuIHRoZSBnaXZlbiByZXNvdXJjZXMsIGlkZW50aWZpZWQgYnkgdGhlaXIgbG9naWNhbCBJRCAoY2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyknLFxuICAgICAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAncHVibGlzaC1hc3NldHMnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaCBhc3NldHMgZm9yIHRoZSBnaXZlbiBzdGFjayhzKSB3aXRob3V0IGRlcGxveWluZycsXG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdTVEFDS1MnLFxuICAgICAgICAgIHZhcmlhZGljOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYWxsOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1B1Ymxpc2ggYXNzZXRzIGZvciBhbGwgYXZhaWxhYmxlIHN0YWNrcycsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgICAgZXhjbHVzaXZlbHk6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2UnLCBkZXNjOiAnT25seSBwdWJsaXNoIGFzc2V0cyBmb3IgcmVxdWVzdGVkIHN0YWNrcywgZG9uXFwndCBpbmNsdWRlIGRlcGVuZGVuY2llcycgfSxcbiAgICAgICAgICBmb3JjZTogeyB0eXBlOiAnYm9vbGVhbicsIGFsaWFzOiAnZicsIGRlc2M6ICdBbHdheXMgcHVibGlzaCBhc3NldHMsIGV2ZW4gaWYgdGhleSBhcmUgYWxyZWFkeSBwdWJsaXNoZWQnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICAgIGNvbmN1cnJlbmN5OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjOiAnTWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGFzc2V0IG9wZXJhdGlvbnMgKGJ1aWxkaW5nIGFuZCBwdWJsaXNoaW5nLCBkZXBlbmRlbmN5IHBlcm1pdHRpbmcpIHRvIGV4ZWN1dGUuJywgZGVmYXVsdDogNCwgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnaW1wb3J0Jzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0ltcG9ydCBleGlzdGluZyByZXNvdXJjZShzKSBpbnRvIHRoZSBnaXZlbiBTVEFDSycsXG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdTVEFDSycsXG4gICAgICAgICAgdmFyaWFkaWM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgJ2V4ZWN1dGUnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1doZXRoZXIgdG8gZXhlY3V0ZSB0aGUgY2hhbmdlIHNldCAoLS1uby1leGVjdXRlIHdpbGwgTk9UIGV4ZWN1dGUgdGhlIGNoYW5nZSBzZXQpJywgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICdjaGFuZ2Utc2V0LW5hbWUnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnTmFtZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gY2hhbmdlIHNldCB0byBjcmVhdGUnIH0sXG4gICAgICAgICAgJ3Rvb2xraXQtc3RhY2stbmFtZSc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdUaGUgbmFtZSBvZiB0aGUgQ0RLIHRvb2xraXQgc3RhY2sgdG8gY3JlYXRlJywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgICAncm9sbGJhY2snOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZXNjOiBcIlJvbGxiYWNrIHN0YWNrIHRvIHN0YWJsZSBzdGF0ZSBvbiBmYWlsdXJlLiBEZWZhdWx0cyB0byAndHJ1ZScsIGl0ZXJhdGUgbW9yZSByYXBpZGx5IHdpdGggLS1uby1yb2xsYmFjayBvciAtUi4gXCIgK1xuICAgICAgICAgICAgICAnTm90ZTogZG8gKipub3QqKiBkaXNhYmxlIHRoaXMgZmxhZyBmb3IgZGVwbG95bWVudHMgd2l0aCByZXNvdXJjZSByZXBsYWNlbWVudHMsIGFzIHRoYXQgd2lsbCBhbHdheXMgZmFpbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnZm9yY2UnOiB7XG4gICAgICAgICAgICBhbGlhczogJ2YnLFxuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogJ0RvIG5vdCBhYm9ydCBpZiB0aGUgdGVtcGxhdGUgZGlmZiBpbmNsdWRlcyB1cGRhdGVzIG9yIGRlbGV0ZXMuIFRoaXMgaXMgcHJvYmFibHkgc2FmZSBidXQgd2VcXCdyZSBub3Qgc3VyZSwgbGV0IHVzIGtub3cgaG93IGl0IGdvZXMuJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdyZWNvcmQtcmVzb3VyY2UtbWFwcGluZyc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgICAgICBkZXNjOiAnSWYgc3BlY2lmaWVkLCBDREsgd2lsbCBnZW5lcmF0ZSBhIG1hcHBpbmcgb2YgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2VzIHRvIENESyByZXNvdXJjZXMgdG8gYmUgaW1wb3J0ZWQgYXMuIFRoZSBtYXBwaW5nICcgK1xuICAgICAgICAgICAgICAnd2lsbCBiZSB3cml0dGVuIGluIHRoZSBnaXZlbiBmaWxlIHBhdGguIE5vIGFjdHVhbCBpbXBvcnQgb3BlcmF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdyZXNvdXJjZS1tYXBwaW5nJzoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBhbGlhczogJ20nLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgICAgICBkZXNjOiAnSWYgc3BlY2lmaWVkLCBDREsgd2lsbCB1c2UgdGhlIGdpdmVuIGZpbGUgdG8gbWFwIHBoeXNpY2FsIHJlc291cmNlcyB0byBDREsgcmVzb3VyY2VzIGZvciBpbXBvcnQsIGluc3RlYWQgb2YgaW50ZXJhY3RpdmVseSAnICtcbiAgICAgICAgICAgICAgJ2Fza2luZyB0aGUgdXNlci4gQ2FuIGJlIHJ1biBmcm9tIHNjcmlwdHMnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3Jlc291cmNlLW1hcHBpbmctaW5saW5lJzoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2M6ICdJbmxpbmUgSlNPTiByZXNvdXJjZSBtYXBwaW5nLCBlLmcuIFxcJ3tcIk15UmVzb3VyY2VcIjp7XCJUYWJsZU5hbWVcIjpcIm15LXRhYmxlXCJ9fVxcJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnd2F0Y2gnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlNob3J0Y3V0IGZvciAnZGVwbG95IC0td2F0Y2gnXCIsXG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdTVEFDS1MnLFxuICAgICAgICAgIHZhcmlhZGljOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgJ2J1aWxkLWV4Y2x1ZGUnOiB7IHR5cGU6ICdhcnJheScsIGFsaWFzOiAnRScsIGRlc2M6ICdEbyBub3QgcmVidWlsZCBhc3NldCB3aXRoIHRoZSBnaXZlbiBJRC4gQ2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcycsIGRlZmF1bHQ6IFtdIH0sXG4gICAgICAgICAgJ2V4Y2x1c2l2ZWx5JzogeyB0eXBlOiAnYm9vbGVhbicsIGFsaWFzOiAnZScsIGRlc2M6ICdPbmx5IGRlcGxveSByZXF1ZXN0ZWQgc3RhY2tzLCBkb25cXCd0IGluY2x1ZGUgZGVwZW5kZW5jaWVzJyB9LFxuICAgICAgICAgICdjaGFuZ2Utc2V0LW5hbWUnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnTmFtZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gY2hhbmdlIHNldCB0byBjcmVhdGUnIH0sXG4gICAgICAgICAgJ2ZvcmNlJzogeyBhbGlhczogJ2YnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdBbHdheXMgZGVwbG95IHN0YWNrIGV2ZW4gaWYgdGVtcGxhdGVzIGFyZSBpZGVudGljYWwnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICAgICd0b29sa2l0LXN0YWNrLW5hbWUnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIG5hbWUgb2YgdGhlIGV4aXN0aW5nIENESyB0b29sa2l0IHN0YWNrIChvbmx5IHVzZWQgZm9yIGFwcCB1c2luZyBsZWdhY3kgc3ludGhlc2lzKScsIHJlcXVpcmVzQXJnOiB0cnVlIH0sXG4gICAgICAgICAgJ3Byb2dyZXNzJzogeyB0eXBlOiAnc3RyaW5nJywgY2hvaWNlczogW1N0YWNrQWN0aXZpdHlQcm9ncmVzcy5CQVIsIFN0YWNrQWN0aXZpdHlQcm9ncmVzcy5FVkVOVFNdLCBkZXNjOiAnRGlzcGxheSBtb2RlIGZvciBzdGFjayBhY3Rpdml0eSBldmVudHMnIH0sXG4gICAgICAgICAgJ3JvbGxiYWNrJzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogXCJSb2xsYmFjayBzdGFjayB0byBzdGFibGUgc3RhdGUgb24gZmFpbHVyZS4gRGVmYXVsdHMgdG8gJ3RydWUnLCBpdGVyYXRlIG1vcmUgcmFwaWRseSB3aXRoIC0tbm8tcm9sbGJhY2sgb3IgLVIuIFwiICtcbiAgICAgICAgICAgICAgJ05vdGU6IGRvICoqbm90KiogZGlzYWJsZSB0aGlzIGZsYWcgZm9yIGRlcGxveW1lbnRzIHdpdGggcmVzb3VyY2UgcmVwbGFjZW1lbnRzLCBhcyB0aGF0IHdpbGwgYWx3YXlzIGZhaWwnLFxuICAgICAgICAgICAgbmVnYXRpdmVBbGlhczogJ1InLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2hvdHN3YXAnOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZXNjOiBcIkF0dGVtcHRzIHRvIHBlcmZvcm0gYSAnaG90c3dhcCcgZGVwbG95bWVudCwgXCIgK1xuICAgICAgICAgICAgICAnYnV0IGRvZXMgbm90IGZhbGwgYmFjayB0byBhIGZ1bGwgZGVwbG95bWVudCBpZiB0aGF0IGlzIG5vdCBwb3NzaWJsZS4gJyArXG4gICAgICAgICAgICAgICdJbnN0ZWFkLCBjaGFuZ2VzIHRvIGFueSBub24taG90c3dhcHBhYmxlIHByb3BlcnRpZXMgYXJlIGlnbm9yZWQuJyArXG4gICAgICAgICAgICAgIFwiJ3RydWUnIGJ5IGRlZmF1bHQsIHVzZSAtLW5vLWhvdHN3YXAgdG8gdHVybiBvZmZcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwLWZhbGxiYWNrJzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogXCJBdHRlbXB0cyB0byBwZXJmb3JtIGEgJ2hvdHN3YXAnIGRlcGxveW1lbnQsIFwiICtcbiAgICAgICAgICAgICAgJ3doaWNoIHNraXBzIENsb3VkRm9ybWF0aW9uIGFuZCB1cGRhdGVzIHRoZSByZXNvdXJjZXMgZGlyZWN0bHksICcgK1xuICAgICAgICAgICAgICAnYW5kIGZhbGxzIGJhY2sgdG8gYSBmdWxsIGRlcGxveW1lbnQgaWYgdGhhdCBpcyBub3QgcG9zc2libGUuJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwLWVjcy1taW5pbXVtLWhlYWx0aHktcGVyY2VudCc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzYzogJ0xvd2VyIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgeW91ciBzZXJ2aWNlXFwncyB0YXNrcyB0aGF0IG11c3QgcmVtYWluIGluIHRoZSBSVU5OSU5HIHN0YXRlIGR1cmluZyBhIGRlcGxveW1lbnQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZENvdW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdob3Rzd2FwLWVjcy1tYXhpbXVtLWhlYWx0aHktcGVyY2VudCc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzYzogJ1VwcGVyIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgeW91ciBzZXJ2aWNlXFwncyB0YXNrcyB0aGF0IGFyZSBhbGxvd2VkIGluIHRoZSBSVU5OSU5HIG9yIFBFTkRJTkcgc3RhdGUgZHVyaW5nIGEgZGVwbG95bWVudCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBkZXNpcmVkQ291bnQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2hvdHN3YXAtZWNzLXN0YWJpbGl6YXRpb24tdGltZW91dC1zZWNvbmRzJzoge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBkZXNjOiAnTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgYSBzaW5nbGUgc2VydmljZSB0byByZWFjaCBzdGFibGUgc3RhdGUsIHdoZXJlIHRoZSBkZXNpcmVkQ291bnQgaXMgZXF1YWwgdG8gdGhlIHJ1bm5pbmdDb3VudCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnbG9ncyc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBkZXNjOiAnU2hvdyBDbG91ZFdhdGNoIGxvZyBldmVudHMgZnJvbSBhbGwgcmVzb3VyY2VzIGluIHRoZSBzZWxlY3RlZCBTdGFja3MgaW4gdGhlIHRlcm1pbmFsLiAnICtcbiAgICAgICAgICAgICAgXCIndHJ1ZScgYnkgZGVmYXVsdCwgdXNlIC0tbm8tbG9ncyB0byB0dXJuIG9mZlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2NvbmN1cnJlbmN5JzogeyB0eXBlOiAnbnVtYmVyJywgZGVzYzogJ01heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBkZXBsb3ltZW50cyAoZGVwZW5kZW5jeSBwZXJtaXR0aW5nKSB0byBleGVjdXRlLicsIGRlZmF1bHQ6IDEsIHJlcXVpcmVzQXJnOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2Rlc3Ryb3knOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzdHJveSB0aGUgc3RhY2socykgbmFtZWQgU1RBQ0tTJyxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ1NUQUNLUycsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBhbGw6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSwgZGVzYzogJ0Rlc3Ryb3kgYWxsIGF2YWlsYWJsZSBzdGFja3MnIH0sXG4gICAgICAgICAgZXhjbHVzaXZlbHk6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2UnLCBkZXNjOiAnT25seSBkZXN0cm95IHJlcXVlc3RlZCBzdGFja3MsIGRvblxcJ3QgaW5jbHVkZSBkZXBlbmRlZXMnIH0sXG4gICAgICAgICAgZm9yY2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2YnLCBkZXNjOiAnRG8gbm90IGFzayBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBzdGFja3MnIH0sXG4gICAgICAgICAgY29uY3VycmVuY3k6IHsgdHlwZTogJ251bWJlcicsIGRlc2M6ICdNYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgZGVzdHJveXMgKGRlcGVuZGVuY3kgcGVybWl0dGluZykgdG8gZXhlY3V0ZS4nLCBkZWZhdWx0OiAxLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdkaWZmJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0NvbXBhcmVzIHRoZSBzcGVjaWZpZWQgc3RhY2sgd2l0aCB0aGUgZGVwbG95ZWQgc3RhY2sgb3IgYSBsb2NhbCB0ZW1wbGF0ZSBmaWxlLCBhbmQgcmV0dXJucyB3aXRoIHN0YXR1cyAxIGlmIGFueSBkaWZmZXJlbmNlIGlzIGZvdW5kJyxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ1NUQUNLUycsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAnZXhjbHVzaXZlbHknOiB7IHR5cGU6ICdib29sZWFuJywgYWxpYXM6ICdlJywgZGVzYzogJ09ubHkgZGlmZiByZXF1ZXN0ZWQgc3RhY2tzLCBkb25cXCd0IGluY2x1ZGUgZGVwZW5kZW5jaWVzJyB9LFxuICAgICAgICAgICdjb250ZXh0LWxpbmVzJzogeyB0eXBlOiAnbnVtYmVyJywgZGVzYzogJ051bWJlciBvZiBjb250ZXh0IGxpbmVzIHRvIGluY2x1ZGUgaW4gYXJiaXRyYXJ5IEpTT04gZGlmZiByZW5kZXJpbmcnLCBkZWZhdWx0OiAzLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgICd0ZW1wbGF0ZSc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdUaGUgcGF0aCB0byB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgdG8gY29tcGFyZSB3aXRoLiBJbXBsaWVzIC0tbWV0aG9kPXRlbXBsYXRlJywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgICAnc3RyaWN0JzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdEbyBub3QgZmlsdGVyIG91dCBBV1M6OkNESzo6TWV0YWRhdGEgcmVzb3VyY2VzLCBtYW5nbGVkIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBvciB0aGUgQ2hlY2tCb290c3RyYXBWZXJzaW9uUnVsZScsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgICAgJ3NlY3VyaXR5LW9ubHknOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ09ubHkgZGlmZiBmb3IgYnJvYWRlbmVkIHNlY3VyaXR5IGNoYW5nZXMnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICAgICdmYWlsJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdGYWlsIHdpdGggZXhpdCBjb2RlIDEgaW4gY2FzZSBvZiBkaWZmJyB9LFxuICAgICAgICAgICdwcm9jZXNzZWQnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1doZXRoZXIgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSB0ZW1wbGF0ZSB3aXRoIFRyYW5zZm9ybXMgYWxyZWFkeSBwcm9jZXNzZWQnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICAgICdxdWlldCc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ3EnLCBkZXNjOiAnRG8gbm90IHByaW50IHN0YWNrIG5hbWUgYW5kIGRlZmF1bHQgbWVzc2FnZSB3aGVuIHRoZXJlIGlzIG5vIGRpZmYgdG8gc3Rkb3V0JywgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgICAgICAnY2hhbmdlLXNldCc6IHsgdHlwZTogJ2Jvb2xlYW4nLCBhbGlhczogJ2NoYW5nZXNldCcsIGRlc2M6ICdXaGV0aGVyIHRvIGNyZWF0ZSBhIGNoYW5nZSBzZXQgdG8gYW5hbHl6ZSByZXNvdXJjZSByZXBsYWNlbWVudHMuIEluIHRoaXMgbW9kZSwgZGlmZiB3aWxsIHVzZSB0aGUgZGVwbG95IHJvbGUgaW5zdGVhZCBvZiB0aGUgbG9va3VwIHJvbGUuJywgZGVmYXVsdDogdHJ1ZSwgZGVwcmVjYXRlZDogJ3VzZSAtLW1ldGhvZCBpbnN0ZWFkJyB9LFxuICAgICAgICAgICdtZXRob2QnOiB7XG4gICAgICAgICAgICBhbGlhczogJ20nLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnYXV0bycsXG4gICAgICAgICAgICBjaG9pY2VzOiBbJ2F1dG8nLCAnY2hhbmdlLXNldCcsICd0ZW1wbGF0ZSddLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgICAgICBkZXNjOiAnSG93IHRvIGNvbXB1dGUgdGhlIGRpZmYuIFwiYXV0b1wiIGF0dGVtcHRzIHRvIGNyZWF0ZSBhIGNoYW5nZSBzZXQgYW5kIGZhbGxzIGJhY2sgdG8gdGVtcGxhdGUtb25seSBvbiBmYWlsdXJlLiBcImNoYW5nZS1zZXRcIiBjcmVhdGVzIGEgY2hhbmdlIHNldCBhbmQgZmFpbHMgaWYgaXQgY2Fubm90IGJlIGNyZWF0ZWQuIEJvdGggdXNlIHRoZSBkZXBsb3kgcm9sZSBpbnN0ZWFkIG9mIHRoZSBsb29rdXAgcm9sZS4gXCJ0ZW1wbGF0ZVwiIGNvbXBhcmVzIHRlbXBsYXRlcyBkaXJlY3RseSBhbmQgdXNlcyB0aGUgbG9va3VwIHJvbGUuJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdpbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdXaGV0aGVyIG9yIG5vdCB0aGUgY2hhbmdlIHNldCBpbXBvcnRzIHJlc291cmNlcyB0aGF0IGFscmVhZHkgZXhpc3QnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICAgICdpbmNsdWRlLW1vdmVzJzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdXaGV0aGVyIHRvIGluY2x1ZGUgbW92ZXMgaW4gdGhlIGRpZmYnLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdkcmlmdCc6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdEZXRlY3QgZHJpZnRzIGluIHRoZSBnaXZlbiBDbG91ZEZvcm1hdGlvbiBzdGFjayhzKScsXG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdTVEFDS1MnLFxuICAgICAgICAgIHZhcmlhZGljOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZmFpbDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdGYWlsIHdpdGggZXhpdCBjb2RlIDEgaWYgZHJpZnQgaXMgZGV0ZWN0ZWQnIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ21ldGFkYXRhJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1JldHVybnMgYWxsIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN0YWNrJyxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ1NUQUNLJyxcbiAgICAgICAgICB2YXJpYWRpYzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2Fja25vd2xlZGdlJzoge1xuICAgICAgICBhbGlhc2VzOiBbJ2FjayddLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0Fja25vd2xlZGdlIGEgbm90aWNlIHNvIHRoYXQgaXQgZG9lcyBub3Qgc2hvdyB1cCBhbnltb3JlJyxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ0lEJyxcbiAgICAgICAgICB2YXJpYWRpYzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ25vdGljZXMnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmV0dXJucyBhIGxpc3Qgb2YgcmVsZXZhbnQgbm90aWNlcycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB1bmFja25vd2xlZGdlZDogeyB0eXBlOiAnYm9vbGVhbicsIGFsaWFzOiAndScsIGRlZmF1bHQ6IGZhbHNlLCBkZXNjOiAnUmV0dXJucyBhIGxpc3Qgb2YgdW5hY2tub3dsZWRnZWQgbm90aWNlcycgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnaW5pdCc6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYSBuZXcsIGVtcHR5IENESyBwcm9qZWN0IGZyb20gYSB0ZW1wbGF0ZS4nLFxuICAgICAgICBhcmc6IHtcbiAgICAgICAgICBuYW1lOiAnVEVNUExBVEUnLFxuICAgICAgICAgIHZhcmlhZGljOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICdsYW5ndWFnZSc6IHsgdHlwZTogJ3N0cmluZycsIGFsaWFzOiAnbCcsIGRlc2M6ICdUaGUgbGFuZ3VhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG5ldyBwcm9qZWN0IChkZWZhdWx0IGNhbiBiZSBjb25maWd1cmVkIGluIH4vLmNkay5qc29uKScsIGNob2ljZXM6IGF3YWl0IGF2YWlsYWJsZUluaXRMYW5ndWFnZXMoKSB9LFxuICAgICAgICAgICdsaXN0JzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdMaXN0IHRoZSBhdmFpbGFibGUgdGVtcGxhdGVzJyB9LFxuICAgICAgICAgICdnZW5lcmF0ZS1vbmx5JzogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBkZXNjOiAnSWYgdHJ1ZSwgb25seSBnZW5lcmF0ZXMgcHJvamVjdCBmaWxlcywgd2l0aG91dCBleGVjdXRpbmcgYWRkaXRpb25hbCBvcGVyYXRpb25zIHN1Y2ggYXMgc2V0dGluZyB1cCBhIGdpdCByZXBvLCBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyBvciBjb21waWxpbmcgdGhlIHByb2plY3QnIH0sXG4gICAgICAgICAgJ2xpYi12ZXJzaW9uJzogeyB0eXBlOiAnc3RyaW5nJywgYWxpYXM6ICdWJywgZGVmYXVsdDogdW5kZWZpbmVkLCBkZXNjOiAnVGhlIHZlcnNpb24gb2YgdGhlIENESyBsaWJyYXJ5IChhd3MtY2RrLWxpYikgdG8gaW5pdGlhbGl6ZSBidWlsdC1pbiB0ZW1wbGF0ZXMgd2l0aC4gRGVmYXVsdHMgdG8gdGhlIHZlcnNpb24gdGhhdCB3YXMgY3VycmVudCB3aGVuIHRoaXMgQ0xJIHdhcyBidWlsdC4nIH0sXG4gICAgICAgICAgJ2Zyb20tcGF0aCc6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdQYXRoIHRvIGEgbG9jYWwgY3VzdG9tIHRlbXBsYXRlIGRpcmVjdG9yeSBvciBtdWx0aS10ZW1wbGF0ZSByZXBvc2l0b3J5JywgcmVxdWlyZXNBcmc6IHRydWUsIGNvbmZsaWN0czogWydsaWItdmVyc2lvbiddIH0sXG4gICAgICAgICAgJ3RlbXBsYXRlLXBhdGgnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnUGF0aCB0byBhIHNwZWNpZmljIHRlbXBsYXRlIHdpdGhpbiBhIG11bHRpLXRlbXBsYXRlIHJlcG9zaXRvcnknLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgICdwYWNrYWdlLW1hbmFnZXInOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIHBhY2thZ2UgbWFuYWdlciB0byB1c2UgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMuIE9ubHkgYXBwbGljYWJsZSBmb3IgVHlwZVNjcmlwdCBhbmQgSmF2YVNjcmlwdCBwcm9qZWN0cy4gRGVmYXVsdHMgdG8gbnBtIGluIFR5cGVTY3JpcHQgYW5kIEphdmFTY3JpcHQgcHJvamVjdHMuJywgY2hvaWNlczogSlNfUEFDS0FHRV9NQU5BR0VSUy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSB9LFxuICAgICAgICAgICdwcm9qZWN0LW5hbWUnOiB7IHR5cGU6ICdzdHJpbmcnLCBhbGlhczogJ24nLCBkZXNjOiAnVGhlIG5hbWUgb2YgdGhlIG5ldyBwcm9qZWN0JywgcmVxdWlyZXNBcmc6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1wbGllczogeyAndGVtcGxhdGUtcGF0aCc6ICdmcm9tLXBhdGgnIH0sXG4gICAgICB9LFxuICAgICAgJ21pZ3JhdGUnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTWlncmF0ZSBleGlzdGluZyBBV1MgcmVzb3VyY2VzIGludG8gYSBDREsgYXBwJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICdzdGFjay1uYW1lJzogeyB0eXBlOiAnc3RyaW5nJywgYWxpYXM6ICduJywgZGVzYzogJ1RoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBzdGFjayBjcmVhdGVkIGluIHRoZSBuZXcgcHJvamVjdC4gVGhlIG5hbWUgb2YgdGhlIGFwcCB3aWxsIGJlIGJhc2VkIG9mZiB0aGlzIG5hbWUgYXMgd2VsbC4nLCByZXF1aXJlc0FyZzogdHJ1ZSB9LFxuICAgICAgICAgICdsYW5ndWFnZSc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3R5cGVzY3JpcHQnLFxuICAgICAgICAgICAgYWxpYXM6ICdsJyxcbiAgICAgICAgICAgIGRlc2M6ICdUaGUgbGFuZ3VhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG5ldyBwcm9qZWN0JyxcbiAgICAgICAgICAgIGNob2ljZXM6IFsuLi5uZXcgU2V0KGNka19mcm9tX2Nmbi5zdXBwb3J0ZWRfbGFuZ3VhZ2VzKCkuZmxhdE1hcCgobGFuZykgPT4gW2xhbmcsIGdldExhbmd1YWdlQWxpYXMobGFuZyldKSldLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2FjY291bnQnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIGFjY291bnQgdG8gcmV0cmlldmUgdGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrIHRlbXBsYXRlIGZyb20nIH0sXG4gICAgICAgICAgJ3JlZ2lvbic6IHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdUaGUgcmVnaW9uIHRvIHJldHJpZXZlIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFjayB0ZW1wbGF0ZSBmcm9tJyB9LFxuICAgICAgICAgICdmcm9tLXBhdGgnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIHBhdGggdG8gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIHRvIG1pZ3JhdGUuIFVzZSB0aGlzIGZvciBsb2NhbGx5IHN0b3JlZCB0ZW1wbGF0ZXMnIH0sXG4gICAgICAgICAgJ2Zyb20tc3RhY2snOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1VzZSB0aGlzIGZsYWcgdG8gcmV0cmlldmUgdGhlIHRlbXBsYXRlIGZvciBhbiBleGlzdGluZyBDbG91ZEZvcm1hdGlvbiBzdGFjaycgfSxcbiAgICAgICAgICAnb3V0cHV0LXBhdGgnOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVGhlIG91dHB1dCBwYXRoIGZvciB0aGUgbWlncmF0ZWQgQ0RLIGFwcCcgfSxcbiAgICAgICAgICAnZnJvbS1zY2FuJzoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjOiAnRGV0ZXJtaW5lcyBpZiBhIG5ldyBzY2FuIHNob3VsZCBiZSBjcmVhdGVkLCBvciB0aGUgbGFzdCBzdWNjZXNzZnVsIGV4aXN0aW5nIHNjYW4gc2hvdWxkIGJlIHVzZWQgJyArXG4gICAgICAgICAgICAgICdcXG4gb3B0aW9ucyBhcmUgXCJuZXdcIiBvciBcIm1vc3QtcmVjZW50XCInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2ZpbHRlcic6IHtcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICBkZXNjOiAnRmlsdGVycyB0aGUgcmVzb3VyY2Ugc2NhbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY3JpdGVyaWEgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6IFwia2V5MT12YWx1ZTEsa2V5Mj12YWx1ZTJcIicgK1xuICAgICAgICAgICAgICAnXFxuIFRoaXMgZmllbGQgY2FuIGJlIHBhc3NlZCBtdWx0aXBsZSB0aW1lcyBmb3IgT1Igc3R5bGUgZmlsdGVyaW5nOiAnICtcbiAgICAgICAgICAgICAgJ1xcbiBmaWx0ZXJpbmcgb3B0aW9uczogJyArXG4gICAgICAgICAgICAgICdcXG4gcmVzb3VyY2UtaWRlbnRpZmllcjogQSBrZXktdmFsdWUgcGFpciB0aGF0IGlkZW50aWZpZXMgdGhlIHRhcmdldCByZXNvdXJjZS4gaS5lLiB7XCJDbHVzdGVyTmFtZVwiLCBcIm15Q2x1c3RlclwifScgK1xuICAgICAgICAgICAgICAnXFxuIHJlc291cmNlLXR5cGUtcHJlZml4OiBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSB0eXBlLW5hbWUgcHJlZml4LiBpLmUuIFwiQVdTOjpEeW5hbW9EQjo6XCInICtcbiAgICAgICAgICAgICAgJ1xcbiB0YWcta2V5OiBhIHN0cmluZyB0aGF0IG1hdGNoZXMgcmVzb3VyY2VzIHdpdGggYXQgbGVhc3Qgb25lIHRhZyB3aXRoIHRoZSBwcm92aWRlZCBrZXkuIGkuZS4gXCJteVRhZ0tleVwiJyArXG4gICAgICAgICAgICAgICdcXG4gdGFnLXZhbHVlOiBhIHN0cmluZyB0aGF0IG1hdGNoZXMgcmVzb3VyY2VzIHdpdGggYXQgbGVhc3Qgb25lIHRhZyB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZS4gaS5lLiBcIm15VGFnVmFsdWVcIicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY29tcHJlc3MnOiB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ1VzZSB0aGlzIGZsYWcgdG8gemlwIHRoZSBnZW5lcmF0ZWQgQ0RLIGFwcCcgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnY29udGV4dCc6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdNYW5hZ2UgY2FjaGVkIGNvbnRleHQgdmFsdWVzJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHJlc2V0OiB7IGFsaWFzOiAnZScsIGRlc2M6ICdUaGUgY29udGV4dCBrZXkgKG9yIGl0cyBpbmRleCkgdG8gcmVzZXQnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZXNBcmc6IHRydWUsIGRlZmF1bHQ6IHVuZGVmaW5lZCB9LFxuICAgICAgICAgIGZvcmNlOiB7IGFsaWFzOiAnZicsIGRlc2M6ICdJZ25vcmUgbWlzc2luZyBrZXkgZXJyb3InLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgICAgY2xlYXI6IHsgZGVzYzogJ0NsZWFyIGFsbCBjb250ZXh0JywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdkb2NzJzoge1xuICAgICAgICBhbGlhc2VzOiBbJ2RvYyddLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wZW5zIHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpbiBhIGJyb3dzZXInLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYnJvd3Nlcjoge1xuICAgICAgICAgICAgYWxpYXM6ICdiJyxcbiAgICAgICAgICAgIGRlc2M6ICd0aGUgY29tbWFuZCB0byB1c2UgdG8gb3BlbiB0aGUgYnJvd3NlciwgdXNpbmcgJXUgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gb3BlbicsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFlBUkdTX0hFTFBFUlMuYnJvd3NlckZvclBsYXRmb3JtKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnZG9jdG9yJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0NoZWNrIHlvdXIgc2V0LXVwIGZvciBwb3RlbnRpYWwgcHJvYmxlbXMnLFxuICAgICAgfSxcbiAgICAgICdvcnBoYW4nOiB7XG4gICAgICAgIGFyZzoge1xuICAgICAgICAgIG5hbWU6ICdQQVRIUycsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRGV0YWNoIHJlc291cmNlcyBmcm9tIGEgQ2xvdWRGb3JtYXRpb24gc3RhY2sgd2l0aG91dCBkZWxldGluZyB0aGVtJyxcbiAgICAgICAgb3B0aW9uczoge30sXG4gICAgICB9LFxuICAgICAgJ3JlZmFjdG9yJzoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ01vdmVzIHJlc291cmNlcyBiZXR3ZWVuIHN0YWNrcyBvciB3aXRoaW4gdGhlIHNhbWUgc3RhY2snLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgJ2FkZGl0aW9uYWwtc3RhY2stbmFtZSc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2M6ICdOYW1lcyBvZiBkZXBsb3llZCBzdGFja3MgdG8gYmUgY29uc2lkZXJlZCBmb3IgcmVzb3VyY2UgY29tcGFyaXNvbi4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2RyeS1ydW4nOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZXNjOiAnRG8gbm90IHBlcmZvcm0gYW55IGNoYW5nZXMsIGp1c3Qgc2hvdyB3aGF0IHdvdWxkIGJlIGRvbmUnLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnb3ZlcnJpZGUtZmlsZSc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgICAgICBkZXNjOiAnQSBmaWxlIHRoYXQgZGVjbGFyZXMgb3ZlcnJpZGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgbWFwcGluZ3MgY29tcHV0ZWQgYnkgdGhlIENMSS4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3JldmVydCc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVzYzogJ0lmIHNwZWNpZmllZCwgdGhlIGNvbW1hbmQgd2lsbCByZXZlcnQgdGhlIHJlZmFjdG9yIG9wZXJhdGlvbi4gVGhpcyBpcyBvbmx5IHZhbGlkIGlmIGEgbWFwcGluZyBmaWxlIHdhcyBwcm92aWRlZC4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2ZvcmNlJzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICBkZXNjOiAnV2hldGhlciB0byBkbyB0aGUgcmVmYWN0b3Igd2l0aG91dCBhc2tpbmcgZm9yIGNvbmZpcm1hdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYXJnOiB7XG4gICAgICAgICAgbmFtZTogJ1NUQUNLUycsXG4gICAgICAgICAgdmFyaWFkaWM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2NsaS10ZWxlbWV0cnknOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIG9yIGRpc2FibGUgYW5vbnltb3VzIHRlbGVtZXRyeScsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBlbmFibGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlc2M6ICdFbmFibGUgYW5vbnltb3VzIHRlbGVtZXRyeScsXG4gICAgICAgICAgICBjb25mbGljdHM6ICdkaXNhYmxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRpc2FibGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlc2M6ICdEaXNhYmxlIGFub255bW91cyB0ZWxlbWV0cnknLFxuICAgICAgICAgICAgY29uZmxpY3RzOiAnZW5hYmxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzYzogJ1JlcG9ydCB0ZWxlbWV0cnkgb3B0LWluL291dCBzdGF0dXMnLFxuICAgICAgICAgICAgY29uZmxpY3RzOiBbJ2VuYWJsZScsICdkaXNhYmxlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==