@pepperize/cdk-organizations
Version:
Manage AWS organizations, organizational units (OU), accounts and service control policies (SCP).
98 lines • 15.7 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Policy = exports.PolicyType = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
const constructs_1 = require("constructs");
const tag_resource_1 = require("./tag-resource");
const validators_1 = require("./validators");
/**
* Organizations offers policy types in the following two broad categories:
* <ol>
* <li>Authorization policies help you to centrally manage the security of the AWS accounts in your organization.</li>
* <li>Management policies enable you to centrally configure and manage AWS services and their features.</li>
* </ol>
*
* @see https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies.html#orgs-policy-types
*/
var PolicyType;
(function (PolicyType) {
/**
* Service control policies (SCPs) offer central control over the maximum available permissions for all of the accounts in your organization.
*/
PolicyType["SERVICE_CONTROL_POLICY"] = "SERVICE_CONTROL_POLICY";
/**
* Tag policies help you standardize the tags attached to the AWS resources in your organization's accounts.
*/
PolicyType["TAG_POLICY"] = "TAG_POLICY";
/**
* Backup policies help you centrally manage and apply backup plans to the AWS resources across your organization's accounts.
*/
PolicyType["BACKUP_POLICY"] = "BACKUP_POLICY";
/**
* Artificial Intelligence (AI) services opt-out policies enable you to control data collection for AWS AI services for all of your organization's accounts.
*/
PolicyType["AISERVICES_OPT_OUT_POLICY"] = "AISERVICES_OPT_OUT_POLICY";
})(PolicyType || (exports.PolicyType = PolicyType = {}));
class Policy extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
this.tags = new aws_cdk_lib_1.TagManager(aws_cdk_lib_1.TagType.KEY_VALUE, "Custom::Organizations_Policy");
const { content, description, policyName, policyType } = props;
const organizationsRegion = process.env.CDK_AWS_PARTITION === "aws-cn" ? "cn-northwest-1" : "us-east-1";
if (!validators_1.Validators.of().policyContent(content)) {
aws_cdk_lib_1.Annotations.of(this).addError("The text content of the policy must be valid and between 1 and 1,000,000 characters long.");
}
const policy = new custom_resources_1.AwsCustomResource(this, "PolicyCustomResource", {
resourceType: "Custom::Organizations_Policy",
onCreate: {
service: "Organizations",
action: "createPolicy", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#createPolicy-property
region: organizationsRegion,
parameters: {
Content: content,
Description: description,
Name: policyName,
Type: policyType,
},
outputPaths: ["Policy.PolicySummary.Id"],
physicalResourceId: custom_resources_1.PhysicalResourceId.fromResponse("Policy.PolicySummary.Id"),
},
onUpdate: {
service: "Organizations",
action: "updatePolicy", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#updatePolicy-property
region: organizationsRegion,
parameters: {
Content: content,
Description: description,
Name: policyName,
PolicyId: new custom_resources_1.PhysicalResourceIdReference(),
},
outputPaths: ["Policy.PolicySummary.Id"],
physicalResourceId: custom_resources_1.PhysicalResourceId.fromResponse("Policy.PolicySummary.Id"),
},
onDelete: {
service: "Organizations",
action: "deletePolicy", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#deletePolicy-property
region: organizationsRegion,
parameters: {
PolicyId: new custom_resources_1.PhysicalResourceIdReference(),
},
},
installLatestAwsSdk: false,
policy: custom_resources_1.AwsCustomResourcePolicy.fromSdkCalls({ resources: custom_resources_1.AwsCustomResourcePolicy.ANY_RESOURCE }),
});
this.policyId = policy.getResponseField("Policy.PolicySummary.Id");
const tagResource = new tag_resource_1.TagResource(this, "Tags", { resourceId: this.policyId, tags: this.tags.renderedTags });
tagResource.node.addDependency(policy);
}
identifier() {
return this.policyId;
}
}
exports.Policy = Policy;
_a = JSII_RTTI_SYMBOL_1;
Policy[_a] = { fqn: "@pepperize/cdk-organizations.Policy", version: "0.7.988" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUErRDtBQUMvRCxtRUFLc0M7QUFDdEMsMkNBQW1EO0FBQ25ELGlEQUFnRTtBQUNoRSw2Q0FBMEM7QUFFMUM7Ozs7Ozs7O0dBUUc7QUFDSCxJQUFZLFVBaUJYO0FBakJELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILCtEQUFpRCxDQUFBO0lBQ2pEOztPQUVHO0lBQ0gsdUNBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCw2Q0FBK0IsQ0FBQTtJQUMvQjs7T0FFRztJQUNILHFFQUF1RCxDQUFBO0FBQ3pELENBQUMsRUFqQlcsVUFBVSwwQkFBVixVQUFVLFFBaUJyQjtBQW9DRCxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUtuQyxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSFYsU0FBSSxHQUFHLElBQUksd0JBQVUsQ0FBQyxxQkFBTyxDQUFDLFNBQVMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBS2hGLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDL0QsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUV4RyxJQUFJLENBQUMsdUJBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1Qyx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzNCLDJGQUEyRixDQUM1RixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksb0NBQWlCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pFLFlBQVksRUFBRSw4QkFBOEI7WUFDNUMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsY0FBYyxFQUFFLG1HQUFtRztnQkFDM0gsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxPQUFPO29CQUNoQixXQUFXLEVBQUUsV0FBVztvQkFDeEIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxVQUFVO2lCQUNqQjtnQkFDRCxXQUFXLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEMsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDO2FBQy9FO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsY0FBYyxFQUFFLG1HQUFtRztnQkFDM0gsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxPQUFPO29CQUNoQixXQUFXLEVBQUUsV0FBVztvQkFDeEIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFFBQVEsRUFBRSxJQUFJLDhDQUEyQixFQUFFO2lCQUM1QztnQkFDRCxXQUFXLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEMsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDO2FBQy9FO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsY0FBYyxFQUFFLG1HQUFtRztnQkFDM0gsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSxJQUFJLDhDQUEyQixFQUFFO2lCQUM1QzthQUNGO1lBQ0QsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixNQUFNLEVBQUUsMENBQXVCLENBQUMsWUFBWSxDQUFDLEVBQUUsU0FBUyxFQUFFLDBDQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2xHLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFbkUsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7O0FBaEVILHdCQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25zLCBUYWdNYW5hZ2VyLCBUYWdUeXBlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBd3NDdXN0b21SZXNvdXJjZSxcbiAgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksXG4gIFBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgUGh5c2ljYWxSZXNvdXJjZUlkUmVmZXJlbmNlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElUYWdnYWJsZVJlc291cmNlLCBUYWdSZXNvdXJjZSB9IGZyb20gXCIuL3RhZy1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gXCIuL3ZhbGlkYXRvcnNcIjtcblxuLyoqXG4gKiBPcmdhbml6YXRpb25zIG9mZmVycyBwb2xpY3kgdHlwZXMgaW4gdGhlIGZvbGxvd2luZyB0d28gYnJvYWQgY2F0ZWdvcmllczpcbiAqIDxvbD5cbiAqICAgICA8bGk+QXV0aG9yaXphdGlvbiBwb2xpY2llcyBoZWxwIHlvdSB0byBjZW50cmFsbHkgbWFuYWdlIHRoZSBzZWN1cml0eSBvZiB0aGUgQVdTIGFjY291bnRzIGluIHlvdXIgb3JnYW5pemF0aW9uLjwvbGk+XG4gKiAgICAgPGxpPk1hbmFnZW1lbnQgcG9saWNpZXMgZW5hYmxlIHlvdSB0byBjZW50cmFsbHkgY29uZmlndXJlIGFuZCBtYW5hZ2UgQVdTIHNlcnZpY2VzIGFuZCB0aGVpciBmZWF0dXJlcy48L2xpPlxuICogPC9vbD5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcmdhbml6YXRpb25zL2xhdGVzdC91c2VyZ3VpZGUvb3Jnc19tYW5hZ2VfcG9saWNpZXMuaHRtbCNvcmdzLXBvbGljeS10eXBlc1xuICovXG5leHBvcnQgZW51bSBQb2xpY3lUeXBlIHtcbiAgLyoqXG4gICAqIFNlcnZpY2UgY29udHJvbCBwb2xpY2llcyAoU0NQcykgb2ZmZXIgY2VudHJhbCBjb250cm9sIG92ZXIgdGhlIG1heGltdW0gYXZhaWxhYmxlIHBlcm1pc3Npb25zIGZvciBhbGwgb2YgdGhlIGFjY291bnRzIGluIHlvdXIgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgU0VSVklDRV9DT05UUk9MX1BPTElDWSA9IFwiU0VSVklDRV9DT05UUk9MX1BPTElDWVwiLFxuICAvKipcbiAgICogVGFnIHBvbGljaWVzIGhlbHAgeW91IHN0YW5kYXJkaXplIHRoZSB0YWdzIGF0dGFjaGVkIHRvIHRoZSBBV1MgcmVzb3VyY2VzIGluIHlvdXIgb3JnYW5pemF0aW9uJ3MgYWNjb3VudHMuXG4gICAqL1xuICBUQUdfUE9MSUNZID0gXCJUQUdfUE9MSUNZXCIsXG4gIC8qKlxuICAgKiBCYWNrdXAgcG9saWNpZXMgaGVscCB5b3UgY2VudHJhbGx5IG1hbmFnZSBhbmQgYXBwbHkgYmFja3VwIHBsYW5zIHRvIHRoZSBBV1MgcmVzb3VyY2VzIGFjcm9zcyB5b3VyIG9yZ2FuaXphdGlvbidzIGFjY291bnRzLlxuICAgKi9cbiAgQkFDS1VQX1BPTElDWSA9IFwiQkFDS1VQX1BPTElDWVwiLFxuICAvKipcbiAgICogQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKSBzZXJ2aWNlcyBvcHQtb3V0IHBvbGljaWVzIGVuYWJsZSB5b3UgdG8gY29udHJvbCBkYXRhIGNvbGxlY3Rpb24gZm9yIEFXUyBBSSBzZXJ2aWNlcyBmb3IgYWxsIG9mIHlvdXIgb3JnYW5pemF0aW9uJ3MgYWNjb3VudHMuXG4gICAqL1xuICBBSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZID0gXCJBSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5UHJvcHMge1xuICAvKipcbiAgICogVGhlIHBvbGljeSB0ZXh0IGNvbnRlbnQgdG8gYWRkIHRvIHRoZSBuZXcgcG9saWN5LiBUaGUgdGV4dCB0aGF0IHlvdSBzdXBwbHkgbXVzdCBhZGhlcmUgdG8gdGhlIHJ1bGVzIG9mIHRoZSBwb2xpY3kgdHlwZSB5b3Ugc3BlY2lmeSBpbiB0aGUgVHlwZSBwYXJhbWV0ZXIuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBkZXNjcmlwdGlvbiB0byBhc3NpZ24gdG8gdGhlIHBvbGljeS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZyaWVuZGx5IG5hbWUgdG8gYXNzaWduIHRvIHRoZSBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwb2xpY3kgdG8gY3JlYXRlLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5VHlwZTogUG9saWN5VHlwZTtcbn1cblxuLyoqXG4gKiBQb2xpY2llcyBpbiBBV1MgT3JnYW5pemF0aW9ucyBlbmFibGUgeW91IHRvIGFwcGx5IGFkZGl0aW9uYWwgdHlwZXMgb2YgbWFuYWdlbWVudCB0byB0aGUgQVdTIGFjY291bnRzIGluIHlvdXIgb3JnYW5pemF0aW9uLiA8c3Ryb25nPllvdSBjYW4gdXNlIHBvbGljaWVzIHdoZW4gYWxsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHlvdXIgb3JnYW5pemF0aW9uLjwvc3Ryb25nPlxuICpcbiAqIDxzdHJvbmc+QmVmb3JlIHlvdSBjYW4gY3JlYXRlIGFuZCBhdHRhY2ggYSBwb2xpY3kgdG8geW91ciBvcmdhbml6YXRpb24sIHlvdSBtdXN0IGVuYWJsZSB0aGF0IHBvbGljeSB0eXBlIGZvciB1c2UuPC9zdHJvbmc+XG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3JnYW5pemF0aW9ucy9sYXRlc3QvdXNlcmd1aWRlL29yZ3NfbWFuYWdlX3BvbGljaWVzLmh0bWxcbiAqIEBzZWUgRmVhdHVyZVNldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQb2xpY3kgZXh0ZW5kcyBJQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciAoSUQpIG9mIHRoZSBwb2xpY3kuIFRoZSByZWdleCBwYXR0ZXJuIGZvciBhIHBvbGljeSBJRCBzdHJpbmcgcmVxdWlyZXMgXCJwLVwiIGZvbGxvd2VkIGJ5IGZyb20gOCB0byAxMjggbG93ZXJjYXNlIG9yIHVwcGVyY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIG9yIHRoZSB1bmRlcnNjb3JlIGNoYXJhY3RlciAoXykuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9saWN5IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVBvbGljeSwgSVRhZ2dhYmxlUmVzb3VyY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5SWQ6IHN0cmluZztcblxuICByZWFkb25seSB0YWdzID0gbmV3IFRhZ01hbmFnZXIoVGFnVHlwZS5LRVlfVkFMVUUsIFwiQ3VzdG9tOjpPcmdhbml6YXRpb25zX1BvbGljeVwiKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgY29udGVudCwgZGVzY3JpcHRpb24sIHBvbGljeU5hbWUsIHBvbGljeVR5cGUgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9yZ2FuaXphdGlvbnNSZWdpb24gPSBwcm9jZXNzLmVudi5DREtfQVdTX1BBUlRJVElPTiA9PT0gXCJhd3MtY25cIiA/IFwiY24tbm9ydGh3ZXN0LTFcIiA6IFwidXMtZWFzdC0xXCI7XG5cbiAgICBpZiAoIVZhbGlkYXRvcnMub2YoKS5wb2xpY3lDb250ZW50KGNvbnRlbnQpKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihcbiAgICAgICAgXCJUaGUgdGV4dCBjb250ZW50IG9mIHRoZSBwb2xpY3kgbXVzdCBiZSB2YWxpZCBhbmQgYmV0d2VlbiAxIGFuZCAxLDAwMCwwMDAgY2hhcmFjdGVycyBsb25nLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIlBvbGljeUN1c3RvbVJlc291cmNlXCIsIHtcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Ok9yZ2FuaXphdGlvbnNfUG9saWN5XCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIk9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgYWN0aW9uOiBcImNyZWF0ZVBvbGljeVwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL09yZ2FuaXphdGlvbnMuaHRtbCNjcmVhdGVQb2xpY3ktcHJvcGVydHlcbiAgICAgICAgcmVnaW9uOiBvcmdhbml6YXRpb25zUmVnaW9uLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQ29udGVudDogY29udGVudCxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgTmFtZTogcG9saWN5TmFtZSxcbiAgICAgICAgICBUeXBlOiBwb2xpY3lUeXBlLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRQYXRoczogW1wiUG9saWN5LlBvbGljeVN1bW1hcnkuSWRcIl0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLmZyb21SZXNwb25zZShcIlBvbGljeS5Qb2xpY3lTdW1tYXJ5LklkXCIpLFxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiT3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwidXBkYXRlUG9saWN5XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvT3JnYW5pemF0aW9ucy5odG1sI3VwZGF0ZVBvbGljeS1wcm9wZXJ0eVxuICAgICAgICByZWdpb246IG9yZ2FuaXphdGlvbnNSZWdpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb250ZW50OiBjb250ZW50LFxuICAgICAgICAgIERlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgICBOYW1lOiBwb2xpY3lOYW1lLFxuICAgICAgICAgIFBvbGljeUlkOiBuZXcgUGh5c2ljYWxSZXNvdXJjZUlkUmVmZXJlbmNlKCksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFBhdGhzOiBbXCJQb2xpY3kuUG9saWN5U3VtbWFyeS5JZFwiXSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQuZnJvbVJlc3BvbnNlKFwiUG9saWN5LlBvbGljeVN1bW1hcnkuSWRcIiksXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJPcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJkZWxldGVQb2xpY3lcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvbGF0ZXN0L0FXUy9Pcmdhbml6YXRpb25zLmh0bWwjZGVsZXRlUG9saWN5LXByb3BlcnR5XG4gICAgICAgIHJlZ2lvbjogb3JnYW5pemF0aW9uc1JlZ2lvbixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFBvbGljeUlkOiBuZXcgUGh5c2ljYWxSZXNvdXJjZUlkUmVmZXJlbmNlKCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaW5zdGFsbExhdGVzdEF3c1NkazogZmFsc2UsXG4gICAgICBwb2xpY3k6IEF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7IHJlc291cmNlczogQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuQU5ZX1JFU09VUkNFIH0pLFxuICAgIH0pO1xuICAgIHRoaXMucG9saWN5SWQgPSBwb2xpY3kuZ2V0UmVzcG9uc2VGaWVsZChcIlBvbGljeS5Qb2xpY3lTdW1tYXJ5LklkXCIpO1xuXG4gICAgY29uc3QgdGFnUmVzb3VyY2UgPSBuZXcgVGFnUmVzb3VyY2UodGhpcywgXCJUYWdzXCIsIHsgcmVzb3VyY2VJZDogdGhpcy5wb2xpY3lJZCwgdGFnczogdGhpcy50YWdzLnJlbmRlcmVkVGFncyB9KTtcbiAgICB0YWdSZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kocG9saWN5KTtcbiAgfVxuXG4gIGlkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wb2xpY3lJZDtcbiAgfVxufVxuIl19