UNPKG

@aws-cdk/aws-bedrock-agentcore-alpha

Version:

The CDK Construct Library for Amazon Bedrock

141 lines 16.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiKeyCredentialProviderConfiguration = exports.ApiKeyCredentialLocation = exports.ApiKeyCredentialLocationType = void 0; const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_iam_1 = require("aws-cdk-lib/aws-iam"); const credential_provider_1 = require("./credential-provider"); const perms_1 = require("../perms"); /** * API Key credential location type * @internal */ var ApiKeyCredentialLocationType; (function (ApiKeyCredentialLocationType) { ApiKeyCredentialLocationType["HEADER"] = "HEADER"; ApiKeyCredentialLocationType["QUERY_PARAMETER"] = "QUERY_PARAMETER"; })(ApiKeyCredentialLocationType || (exports.ApiKeyCredentialLocationType = ApiKeyCredentialLocationType = {})); /** * API Key location within the request */ class ApiKeyCredentialLocation { static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.227.0-alpha.0" }; /** * Create a header-based API key credential location * @param config - Optional configuration for the credential location * @returns ApiKeyCredentialLocation configured for header placement */ static header(config) { try { jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_ApiKeyAdditionalConfiguration(config); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.header); } throw error; } return new ApiKeyCredentialLocation(ApiKeyCredentialLocationType.HEADER, config?.credentialParameterName ?? 'Authorization', config?.credentialPrefix ?? 'Bearer '); } /** * Create a query parameter-based API key credential location * @param config - Optional configuration for the credential location * @returns ApiKeyCredentialLocation configured for query parameter placement */ static queryParameter(config) { try { jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_ApiKeyAdditionalConfiguration(config); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.queryParameter); } throw error; } return new ApiKeyCredentialLocation(ApiKeyCredentialLocationType.QUERY_PARAMETER, config?.credentialParameterName ?? 'api_key', config?.credentialPrefix); } /** * The name of the credential parameter */ credentialParameterName; /** * The prefix for the credential value */ credentialPrefix; /** * The type of credential location (HEADER or QUERY_PARAMETER) */ credentialLocationType; constructor(credentialLocationType, credentialParameterName, credentialPrefix) { this.credentialLocationType = credentialLocationType; this.credentialParameterName = credentialParameterName; this.credentialPrefix = credentialPrefix; } } exports.ApiKeyCredentialLocation = ApiKeyCredentialLocation; /** * API Key credential provider configuration implementation * Can be used with OpenAPI targets * @internal */ class ApiKeyCredentialProviderConfiguration { credentialProviderType = credential_provider_1.CredentialProviderType.API_KEY; /** * The ARN of the API key provider */ providerArn; /** * The ARN of the Secrets Manager secret */ secretArn; /** * The location configuration for the API key credential */ credentialLocation; constructor(configuration) { this.providerArn = configuration.providerArn; this.secretArn = configuration.secretArn; this.credentialLocation = configuration.credentialLocation ?? ApiKeyCredentialLocation.header(); } /** * Grant the needed permissions to the role for API key authentication */ grantNeededPermissionsToRole(role) { const statements = [ new aws_iam_1.PolicyStatement({ actions: [ ...perms_1.GatewayPerms.GATEWAY_API_KEY_PERMS, ...perms_1.GatewayPerms.GATEWAY_WORKLOAD_IDENTITY_PERMS, ], resources: [this.providerArn], }), new aws_iam_1.PolicyStatement({ actions: perms_1.GatewayPerms.SECRETS_PERMS, resources: [this.secretArn], }), ]; return aws_iam_1.Grant.addToPrincipal({ grantee: role, actions: statements.flatMap(s => s.actions), resourceArns: statements.flatMap(s => s.resources), }); } /** * @internal */ _render() { return { credentialProviderType: this.credentialProviderType, credentialProvider: { apiKeyCredentialProvider: { providerArn: this.providerArn, credentialLocation: this.credentialLocation.credentialLocationType, credentialParameterName: this.credentialLocation.credentialParameterName, credentialPrefix: this.credentialLocation.credentialPrefix, }, }, }; } } exports.ApiKeyCredentialProviderConfiguration = ApiKeyCredentialProviderConfiguration; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaS1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpREFBb0U7QUFDcEUsK0RBQTBGO0FBQzFGLG9DQUF3QztBQTZCeEM7OztHQUdHO0FBQ0gsSUFBWSw0QkFHWDtBQUhELFdBQVksNEJBQTRCO0lBQ3RDLGlEQUFpQixDQUFBO0lBQ2pCLG1FQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFIVyw0QkFBNEIsNENBQTVCLDRCQUE0QixRQUd2QztBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7O0lBQ25DOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQXNDOzs7Ozs7Ozs7O1FBQ3pELE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsNEJBQTRCLENBQUMsTUFBTSxFQUNuQyxNQUFNLEVBQUUsdUJBQXVCLElBQUksZUFBZSxFQUNsRCxNQUFNLEVBQUUsZ0JBQWdCLElBQUksU0FBUyxDQUN0QyxDQUFDO0tBQ0g7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFzQzs7Ozs7Ozs7OztRQUNqRSxPQUFPLElBQUksd0JBQXdCLENBQ2pDLDRCQUE0QixDQUFDLGVBQWUsRUFDNUMsTUFBTSxFQUFFLHVCQUF1QixJQUFJLFNBQVMsRUFDNUMsTUFBTSxFQUFFLGdCQUFnQixDQUN6QixDQUFDO0tBQ0g7SUFFRDs7T0FFRztJQUNhLHVCQUF1QixDQUFTO0lBQ2hEOztPQUVHO0lBQ2EsZ0JBQWdCLENBQVU7SUFDMUM7O09BRUc7SUFDYSxzQkFBc0IsQ0FBUztJQUUvQyxZQUNFLHNCQUE4QixFQUM5Qix1QkFBK0IsRUFDL0IsZ0JBQXlCO1FBRXpCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0tBQzFDOztBQWhESCw0REFpREM7QUE2QkQ7Ozs7R0FJRztBQUNILE1BQWEscUNBQXFDO0lBQ2hDLHNCQUFzQixHQUFHLDRDQUFzQixDQUFDLE9BQU8sQ0FBQztJQUN4RTs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUNwQzs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUNsQzs7T0FFRztJQUNhLGtCQUFrQixDQUEyQjtJQUU3RCxZQUFZLGFBQTRDO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsSUFBSSx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUNqRztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCLENBQUMsSUFBVztRQUN0QyxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRTtvQkFDUCxHQUFHLG9CQUFZLENBQUMscUJBQXFCO29CQUNyQyxHQUFHLG9CQUFZLENBQUMsK0JBQStCO2lCQUNoRDtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQzlCLENBQUM7WUFDRixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLGFBQWE7Z0JBQ25DLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUM7UUFFRixPQUFPLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDM0MsWUFBWSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ25ELENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTztZQUNMLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsa0JBQWtCLEVBQUU7Z0JBQ2xCLHdCQUF3QixFQUFFO29CQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQzdCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0I7b0JBQ2xFLHVCQUF1QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUI7b0JBQ3hFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0I7aUJBQzNEO2FBQ0Y7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQTlERCxzRkE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFudCwgSVJvbGUsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ3JlZGVudGlhbFByb3ZpZGVyVHlwZSwgSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4vY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHYXRld2F5UGVybXMgfSBmcm9tICcuLi9wZXJtcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIEtFWVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBUEkgS2V5IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUtleUFkZGl0aW9uYWxDb25maWd1cmF0aW9uIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNyZWRlbnRpYWwgcGFyYW1ldGVyIGZvciB0aGUgQVBJIGtleS5cbiAgICogVGhpcyBwYXJhbWV0ZXIgbmFtZSBpcyB1c2VkIHdoZW4gc2VuZGluZyB0aGUgQVBJIGtleSB0byB0aGUgdGFyZ2V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDY0LlxuICAgKiBAZGVmYXVsdCAtICdBdXRob3JpemF0aW9uJyBmb3IgSEVBREVSLCAnYXBpX2tleScgZm9yIFFVRVJZX1BBUkFNRVRFUlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFBhcmFtZXRlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggZm9yIHRoZSBBUEkga2V5IGNyZWRlbnRpYWwuXG4gICAqIFRoaXMgcHJlZml4IGlzIGFkZGVkIHRvIHRoZSBBUEkga2V5IHdoZW4gc2VuZGluZyBpdCB0byB0aGUgdGFyZ2V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDY0LlxuICAgKiBAZGVmYXVsdCAtICdCZWFyZXIgJyBmb3IgSEVBREVSLCBubyBwcmVmaXggZm9yIFFVRVJZX1BBUkFNRVRFUlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBUEkgS2V5IGNyZWRlbnRpYWwgbG9jYXRpb24gdHlwZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUge1xuICBIRUFERVIgPSAnSEVBREVSJyxcbiAgUVVFUllfUEFSQU1FVEVSID0gJ1FVRVJZX1BBUkFNRVRFUicsXG59XG5cbi8qKlxuICogQVBJIEtleSBsb2NhdGlvbiB3aXRoaW4gdGhlIHJlcXVlc3RcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBoZWFkZXItYmFzZWQgQVBJIGtleSBjcmVkZW50aWFsIGxvY2F0aW9uXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgY3JlZGVudGlhbCBsb2NhdGlvblxuICAgKiBAcmV0dXJucyBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb24gY29uZmlndXJlZCBmb3IgaGVhZGVyIHBsYWNlbWVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBoZWFkZXIoY29uZmlnPzogQXBpS2V5QWRkaXRpb25hbENvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbihcbiAgICAgIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUuSEVBREVSLFxuICAgICAgY29uZmlnPy5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSA/PyAnQXV0aG9yaXphdGlvbicsXG4gICAgICBjb25maWc/LmNyZWRlbnRpYWxQcmVmaXggPz8gJ0JlYXJlciAnLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyLWJhc2VkIEFQSSBrZXkgY3JlZGVudGlhbCBsb2NhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNyZWRlbnRpYWwgbG9jYXRpb25cbiAgICogQHJldHVybnMgQXBpS2V5Q3JlZGVudGlhbExvY2F0aW9uIGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IHBhcmFtZXRlciBwbGFjZW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcXVlcnlQYXJhbWV0ZXIoY29uZmlnPzogQXBpS2V5QWRkaXRpb25hbENvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbihcbiAgICAgIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUuUVVFUllfUEFSQU1FVEVSLFxuICAgICAgY29uZmlnPy5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSA/PyAnYXBpX2tleScsXG4gICAgICBjb25maWc/LmNyZWRlbnRpYWxQcmVmaXgsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3JlZGVudGlhbCBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHByZWZpeCBmb3IgdGhlIGNyZWRlbnRpYWwgdmFsdWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY3JlZGVudGlhbCBsb2NhdGlvbiAoSEVBREVSIG9yIFFVRVJZX1BBUkFNRVRFUilcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTG9jYXRpb25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBjcmVkZW50aWFsTG9jYXRpb25UeXBlOiBzdHJpbmcsXG4gICAgY3JlZGVudGlhbFBhcmFtZXRlck5hbWU6IHN0cmluZyxcbiAgICBjcmVkZW50aWFsUHJlZml4Pzogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvblR5cGUgPSBjcmVkZW50aWFsTG9jYXRpb25UeXBlO1xuICAgIHRoaXMuY3JlZGVudGlhbFBhcmFtZXRlck5hbWUgPSBjcmVkZW50aWFsUGFyYW1ldGVyTmFtZTtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcmVmaXggPSBjcmVkZW50aWFsUHJlZml4O1xuICB9XG59XG5cbi8qKlxuICogQVBJIEtleSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIEFQSSBrZXkgY3JlZGVudGlhbCBwcm92aWRlciBBUk4uXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIHZpYSBDb25zb2xlIG9yIEFQSS5cbiAgICogRm9ybWF0OiBhcm46YXdzOmJlZHJvY2stYWdlbnRjb3JlOnJlZ2lvbjphY2NvdW50OnRva2VuLXZhdWx0L2lkL2FwaWtleWNyZWRlbnRpYWxwcm92aWRlci9uYW1lXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgdGhlIEFQSSBrZXkuXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIHZpYSBDb25zb2xlIG9yIEFQSS5cbiAgICogRm9ybWF0OiBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnJlZ2lvbjphY2NvdW50OnNlY3JldDpuYW1lXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBBUEkga2V5IGNyZWRlbnRpYWwuXG4gICAqIFRoaXMgZmllbGQgc3BlY2lmaWVzIHdoZXJlIGluIHRoZSByZXF1ZXN0IHRoZSBBUEkga2V5IHNob3VsZCBiZSBwbGFjZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSEVBREVSXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsTG9jYXRpb24/OiBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb247XG59XG5cbi8qKlxuICogQVBJIEtleSBjcmVkZW50aWFsIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqIENhbiBiZSB1c2VkIHdpdGggT3BlbkFQSSB0YXJnZXRzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb24gaW1wbGVtZW50cyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlclR5cGUgPSBDcmVkZW50aWFsUHJvdmlkZXJUeXBlLkFQSV9LRVk7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBBUEkga2V5IHByb3ZpZGVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlkZXJBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgQVBJIGtleSBjcmVkZW50aWFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbExvY2F0aW9uOiBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb247XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyUHJvcHMpIHtcbiAgICB0aGlzLnByb3ZpZGVyQXJuID0gY29uZmlndXJhdGlvbi5wcm92aWRlckFybjtcbiAgICB0aGlzLnNlY3JldEFybiA9IGNvbmZpZ3VyYXRpb24uc2VjcmV0QXJuO1xuICAgIHRoaXMuY3JlZGVudGlhbExvY2F0aW9uID0gY29uZmlndXJhdGlvbi5jcmVkZW50aWFsTG9jYXRpb24gPz8gQXBpS2V5Q3JlZGVudGlhbExvY2F0aW9uLmhlYWRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBuZWVkZWQgcGVybWlzc2lvbnMgdG8gdGhlIHJvbGUgZm9yIEFQSSBrZXkgYXV0aGVudGljYXRpb25cbiAgICovXG4gIGdyYW50TmVlZGVkUGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiBHcmFudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IFtcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLi4uR2F0ZXdheVBlcm1zLkdBVEVXQVlfQVBJX0tFWV9QRVJNUyxcbiAgICAgICAgICAuLi5HYXRld2F5UGVybXMuR0FURVdBWV9XT1JLTE9BRF9JREVOVElUWV9QRVJNUyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5wcm92aWRlckFybl0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBHYXRld2F5UGVybXMuU0VDUkVUU19QRVJNUyxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5zZWNyZXRBcm5dLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIHJldHVybiBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5hY3Rpb25zKSxcbiAgICAgIHJlc291cmNlQXJuczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5yZXNvdXJjZXMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJUeXBlOiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlclR5cGUsXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXI6IHtcbiAgICAgICAgYXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyOiB7XG4gICAgICAgICAgcHJvdmlkZXJBcm46IHRoaXMucHJvdmlkZXJBcm4sXG4gICAgICAgICAgY3JlZGVudGlhbExvY2F0aW9uOiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsTG9jYXRpb25UeXBlLFxuICAgICAgICAgIGNyZWRlbnRpYWxQYXJhbWV0ZXJOYW1lOiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsUHJlZml4OiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsUHJlZml4LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=