@cdklabs/cdk-appmod-catalog-blueprints 1.17.0 → 1.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +5 -5
- package/lib/document-processing/adapter/queued-s3-adapter.js +39 -5
- package/lib/document-processing/agentic-document-processing.js +6 -4
- package/lib/document-processing/base-document-processing.js +16 -4
- package/lib/document-processing/bedrock-document-processing.js +109 -66
- package/lib/document-processing/default-document-processing-config.js +3 -5
- package/lib/document-processing/localstack-agentic-document-processing.js +38 -5
- package/lib/document-processing/localstack-bedrock-document-processing.js +36 -5
- package/lib/document-processing/tests/base-document-processing-nag.test.js +3 -1
- package/lib/document-processing/tests/base-document-processing-schema.test.js +6 -1
- package/lib/document-processing/tests/base-document-processing.test.js +12 -1
- package/lib/document-processing/tests/localstack-agentic-document-processing.test.js +35 -2
- package/lib/document-processing/tests/localstack-document-processing.test.js +35 -2
- package/lib/document-processing/tests/queued-s3-adapter-nag.test.js +3 -1
- package/lib/document-processing/tests/queued-s3-adapter.test.js +3 -1
- package/lib/framework/agents/base-agent.js +31 -4
- package/lib/framework/agents/batch-agent.js +37 -5
- package/lib/framework/agents/default-agent-config.js +3 -5
- package/lib/framework/agents/interactive-agent.js +115 -23
- package/lib/framework/agents/knowledge-base/base-knowledge-base.js +30 -4
- package/lib/framework/agents/knowledge-base/bedrock-knowledge-base.js +81 -5
- package/lib/framework/agents/localstack-batch-agent.js +36 -5
- package/lib/framework/agents/tests/agent-knowledge-base-nag.test.js +35 -2
- package/lib/framework/bedrock/bedrock.js +2 -4
- package/lib/framework/custom-resource/default-runtimes.js +20 -22
- package/lib/framework/foundation/access-log.js +50 -7
- package/lib/framework/foundation/eventbridge-broker.js +5 -4
- package/lib/framework/foundation/network.js +4 -4
- package/lib/framework/localstack/localstack-config.js +3 -5
- package/lib/framework/tests/base-agent-knowledge-base.test.js +35 -2
- package/lib/framework/tests/batch-agent.test.js +35 -2
- package/lib/framework/tests/framework-nag.test.js +35 -2
- package/lib/framework/tests/interactive-agent-nag.test.js +35 -2
- package/lib/framework/tests/interactive-agent.test.js +35 -2
- package/lib/framework/tests/localstack-batch-agent.test.js +35 -2
- package/lib/utilities/data-loader.js +50 -5
- package/lib/utilities/lambda-iam-utils.js +38 -7
- package/lib/utilities/lambda_layers/data-masking/layer-construct.js +40 -3
- package/lib/utilities/observability/bedrock-observability.js +38 -2
- package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +3 -4
- package/lib/utilities/observability/cloudwatch-transaction-search.js +36 -5
- package/lib/utilities/observability/default-observability-config.js +6 -8
- package/lib/utilities/observability/lambda-observability-property-injector.js +4 -4
- package/lib/utilities/observability/log-group-data-protection-utils.js +2 -4
- package/lib/utilities/observability/observability.js +47 -6
- package/lib/utilities/observability/powertools-config.js +2 -4
- package/lib/utilities/observability/state-machine-observability-property-injector.js +4 -4
- package/lib/webapp/frontend-construct.js +46 -5
- package/lib/webapp/tests/frontend-construct-nag.test.js +36 -3
- package/lib/webapp/tests/frontend-construct.test.js +36 -3
- package/package.json +60 -61
- package/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -10,6 +10,8 @@ const test_utils_1 = require("../../utilities/test-utils");
|
|
|
10
10
|
const adapter_1 = require("../adapter");
|
|
11
11
|
const base_document_processing_1 = require("../base-document-processing");
|
|
12
12
|
class TestDocumentProcessing extends base_document_processing_1.BaseDocumentProcessing {
|
|
13
|
+
classificationFn;
|
|
14
|
+
processingFn;
|
|
13
15
|
constructor(scope, id, props) {
|
|
14
16
|
super(scope, id, props);
|
|
15
17
|
this.classificationFn = new aws_lambda_1.Function(this, 'ClassificationFn', {
|
|
@@ -284,4 +286,4 @@ describe('QueuedS3Adapter', () => {
|
|
|
284
286
|
});
|
|
285
287
|
});
|
|
286
288
|
});
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVkLXMzLWFkYXB0ZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9kb2N1bWVudC1wcm9jZXNzaW5nL3Rlc3RzL3F1ZXVlZC1zMy1hZGFwdGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBa0U7QUFDbEUsdURBQXlEO0FBQ3pELHVEQUFpRTtBQUNqRSwrQ0FBNEM7QUFDNUMsaUZBQW1FO0FBQ25FLCtDQUE0QztBQUM1QywyREFBMkQ7QUFDM0Qsd0NBQTZDO0FBQzdDLDBFQUFpRztBQUVqRyxNQUFNLHNCQUF1QixTQUFRLGlEQUFzQjtJQUl6RCxZQUFZLEtBQVUsRUFBRSxFQUFVLEVBQUUsS0FBVTtRQUM1QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxxQkFBUSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM3RCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxpQkFBSSxDQUFDLFVBQVUsQ0FBQyxxRUFBcUUsQ0FBQztTQUM3RixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkscUJBQVEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLGlCQUFJLENBQUMsVUFBVSxDQUFDLGlEQUFpRCxDQUFDO1NBQ3pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsT0FBTyxJQUFJLHNDQUFZLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ2xELGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3JDLFVBQVUsRUFBRSx3QkFBd0I7U0FD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QUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUM5QixJQUFJLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsMEJBQWEsR0FBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSx5QkFBZSxFQUFFLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO2dCQUNqRSxjQUFjLEVBQUUsT0FBTztnQkFDdkIsYUFBYSxFQUFFLDJCQUFhLENBQUMsTUFBTTthQUNwQyxDQUFDLENBQUM7WUFDSCxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUzQyxRQUFRLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFO2dCQUN0QyxjQUFjLEVBQUUsUUFBUTtnQkFDeEIsbUJBQW1CLEVBQUUsUUFBUTthQUM5QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHAsIER1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE1hdGNoLCBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuaW1wb3J0IHsgQ29kZSwgRnVuY3Rpb24sIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBMYW1iZGFJbnZva2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBBY2Nlc3NMb2cgfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgY3JlYXRlVGVzdEFwcCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy90ZXN0LXV0aWxzJztcbmltcG9ydCB7IFF1ZXVlZFMzQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXInO1xuaW1wb3J0IHsgQmFzZURvY3VtZW50UHJvY2Vzc2luZywgRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfSBmcm9tICcuLi9iYXNlLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuXG5jbGFzcyBUZXN0RG9jdW1lbnRQcm9jZXNzaW5nIGV4dGVuZHMgQmFzZURvY3VtZW50UHJvY2Vzc2luZyB7XG4gIHByaXZhdGUgY2xhc3NpZmljYXRpb25GbjogRnVuY3Rpb247XG4gIHByaXZhdGUgcHJvY2Vzc2luZ0ZuOiBGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogYW55LCBpZDogc3RyaW5nLCBwcm9wczogYW55KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmNsYXNzaWZpY2F0aW9uRm4gPSBuZXcgRnVuY3Rpb24odGhpcywgJ0NsYXNzaWZpY2F0aW9uRm4nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKCdleHBvcnRzLmhhbmRsZXIgPSBhc3luYyAoKSA9PiAoeyBkb2N1bWVudENsYXNzaWZpY2F0aW9uOiBcIlRFU1RcIiB9KTsnKSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvY2Vzc2luZ0ZuID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdQcm9jZXNzaW5nRm4nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKCdleHBvcnRzLmhhbmRsZXIgPSBhc3luYyAoKSA9PiAoeyByZXN1bHQ6IHt9IH0pOycpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsYXNzaWZpY2F0aW9uU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBMYW1iZGFJbnZva2UodGhpcywgJ01vY2tDbGFzc2lmaWNhdGlvbicsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmNsYXNzaWZpY2F0aW9uRm4sXG4gICAgICByZXN1bHRQYXRoOiAnJC5jbGFzc2lmaWNhdGlvblJlc3VsdCcsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUge1xuICAgIHJldHVybiBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdNb2NrUHJvY2Vzc2luZycsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLnByb2Nlc3NpbmdGbixcbiAgICAgIHJlc3VsdFBhdGg6ICckLnByb2Nlc3NpbmdSZXN1bHQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVucmljaG1lbnRTdGVwKCk6IERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBvc3RQcm9jZXNzaW5nU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcmVwcm9jZXNzaW5nU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVQcm9jZXNzaW5nV29ya2Zsb3coKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3RhbmRhcmRQcm9jZXNzaW5nV29ya2Zsb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdGF0ZU1hY2hpbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU3RhdGVNYWNoaW5lQ3JlYXRpb24oJ3Rlc3Qtc3RhdGUtbWFjaGluZScpO1xuICB9XG59XG5cbmRlc2NyaWJlKCdRdWV1ZWRTM0FkYXB0ZXInLCAoKSA9PiB7XG4gIGxldCBhcHA6IEFwcDtcbiAgbGV0IGRlZmF1bHRTdGFjazogU3RhY2s7XG4gIGxldCBjdXN0b21CdWNrZXRTdGFjazogU3RhY2s7XG4gIGxldCBjdXN0b21QcmVmaXhTdGFjazogU3RhY2s7XG4gIGxldCBjdXN0b21RdWV1ZVN0YWNrOiBTdGFjaztcbiAgbGV0IGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGU7XG4gIGxldCBjdXN0b21CdWNrZXRUZW1wbGF0ZTogVGVtcGxhdGU7XG4gIGxldCBjdXN0b21QcmVmaXhUZW1wbGF0ZTogVGVtcGxhdGU7XG4gIGxldCBjdXN0b21RdWV1ZVRlbXBsYXRlOiBUZW1wbGF0ZTtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIC8vIFVzZSBjcmVhdGVUZXN0QXBwKCkgdG8gc2tpcCBidW5kbGluZyBhbmQgc3BlZWQgdXAgdGVzdHNcbiAgICBhcHAgPSBjcmVhdGVUZXN0QXBwKCk7XG5cbiAgICBkZWZhdWx0U3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnRGVmYXVsdFN0YWNrJyk7XG4gICAgY29uc3QgZGVmYXVsdEFkYXB0ZXIgPSBuZXcgUXVldWVkUzNBZGFwdGVyKCk7XG4gICAgY29uc3QgZGVmYXVsdENvbnN0cnVjdCA9IG5ldyBUZXN0RG9jdW1lbnRQcm9jZXNzaW5nKGRlZmF1bHRTdGFjaywgJ0RlZmF1bHRUZXN0Jywge1xuICAgICAgaW5ncmVzc0FkYXB0ZXI6IGRlZmF1bHRBZGFwdGVyLFxuICAgIH0pO1xuICAgIGRlZmF1bHRDb25zdHJ1Y3QuY3JlYXRlU3RhdGVNYWNoaW5lKCk7XG5cbiAgICBjdXN0b21CdWNrZXRTdGFjayA9IG5ldyBTdGFjayhhcHAsICdDdXN0b21CdWNrZXRTdGFjaycpO1xuICAgIGNvbnN0IGFjY2Vzc0xvZyA9IG5ldyBBY2Nlc3NMb2coY3VzdG9tQnVja2V0U3RhY2ssICdBY2Nlc3NMb2cnKTtcbiAgICBjb25zdCBjdXN0b21CdWNrZXQgPSBuZXcgQnVja2V0KGN1c3RvbUJ1Y2tldFN0YWNrLCAnQ3VzdG9tQnVja2V0Jywge1xuICAgICAgc2VydmVyQWNjZXNzTG9nc0J1Y2tldDogYWNjZXNzTG9nLmJ1Y2tldCxcbiAgICAgIHNlcnZlckFjY2Vzc0xvZ3NQcmVmaXg6IGFjY2Vzc0xvZy5idWNrZXRQcmVmaXgsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IGN1c3RvbUJ1Y2tldEFkYXB0ZXIgPSBuZXcgUXVldWVkUzNBZGFwdGVyKHsgYnVja2V0OiBjdXN0b21CdWNrZXQgfSk7XG4gICAgY29uc3QgY3VzdG9tQnVja2V0Q29uc3RydWN0ID0gbmV3IFRlc3REb2N1bWVudFByb2Nlc3NpbmcoY3VzdG9tQnVja2V0U3RhY2ssICdDdXN0b21CdWNrZXRUZXN0Jywge1xuICAgICAgaW5ncmVzc0FkYXB0ZXI6IGN1c3RvbUJ1Y2tldEFkYXB0ZXIsXG4gICAgfSk7XG4gICAgY3VzdG9tQnVja2V0Q29uc3RydWN0LmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXG4gICAgY3VzdG9tUHJlZml4U3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnQ3VzdG9tUHJlZml4U3RhY2snKTtcbiAgICBjb25zdCBjdXN0b21QcmVmaXhBZGFwdGVyID0gbmV3IFF1ZXVlZFMzQWRhcHRlcih7XG4gICAgICByYXdQcmVmaXg6ICdpbnB1dC8nLFxuICAgICAgcHJvY2Vzc2VkUHJlZml4OiAnb3V0cHV0LycsXG4gICAgICBmYWlsZWRQcmVmaXg6ICdlcnJvcnMvJyxcbiAgICB9KTtcbiAgICBjb25zdCBjdXN0b21QcmVmaXhDb25zdHJ1Y3QgPSBuZXcgVGVzdERvY3VtZW50UHJvY2Vzc2luZyhjdXN0b21QcmVmaXhTdGFjaywgJ0N1c3RvbVByZWZpeFRlc3QnLCB7XG4gICAgICBpbmdyZXNzQWRhcHRlcjogY3VzdG9tUHJlZml4QWRhcHRlcixcbiAgICB9KTtcbiAgICBjdXN0b21QcmVmaXhDb25zdHJ1Y3QuY3JlYXRlU3RhdGVNYWNoaW5lKCk7XG5cbiAgICBjdXN0b21RdWV1ZVN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ0N1c3RvbVF1ZXVlU3RhY2snKTtcbiAgICBjb25zdCBjdXN0b21RdWV1ZUFkYXB0ZXIgPSBuZXcgUXVldWVkUzNBZGFwdGVyKHtcbiAgICAgIHF1ZXVlVmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgZGxxTWF4UmVjZWl2ZUNvdW50OiAxMCxcbiAgICB9KTtcbiAgICBjb25zdCBjdXN0b21RdWV1ZUNvbnN0cnVjdCA9IG5ldyBUZXN0RG9jdW1lbnRQcm9jZXNzaW5nKGN1c3RvbVF1ZXVlU3RhY2ssICdDdXN0b21RdWV1ZVRlc3QnLCB7XG4gICAgICBpbmdyZXNzQWRhcHRlcjogY3VzdG9tUXVldWVBZGFwdGVyLFxuICAgIH0pO1xuICAgIGN1c3RvbVF1ZXVlQ29uc3RydWN0LmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXG4gICAgZGVmYXVsdFRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGRlZmF1bHRTdGFjayk7XG4gICAgY3VzdG9tQnVja2V0VGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soY3VzdG9tQnVja2V0U3RhY2spO1xuICAgIGN1c3RvbVByZWZpeFRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGN1c3RvbVByZWZpeFN0YWNrKTtcbiAgICBjdXN0b21RdWV1ZVRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGN1c3RvbVF1ZXVlU3RhY2spO1xuICB9KTtcblxuICBkZXNjcmliZSgnUzMgYnVja2V0IGNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBkZWZhdWx0IFMzIGJ1Y2tldCcsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UzM6OkJ1Y2tldCcsIHtcbiAgICAgICAgQnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogW3tcbiAgICAgICAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0OiB7XG4gICAgICAgICAgICAgIFNTRUFsZ29yaXRobTogJ2F3czprbXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndXNlcyBwcm92aWRlZCBjdXN0b20gYnVja2V0JywgKCkgPT4ge1xuICAgICAgY3VzdG9tQnVja2V0VGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlMzOjpCdWNrZXQnLCAyKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2VuYWJsZXMgYnVja2V0IGtleSBmb3IgY29zdCBvcHRpbWl6YXRpb24nLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlMzOjpCdWNrZXQnLCB7XG4gICAgICAgIEJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFt7XG4gICAgICAgICAgICBCdWNrZXRLZXlFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTUVMgcXVldWUgY29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgICB0ZXN0KCdjcmVhdGVzIFNRUyBxdWV1ZSB3aXRoIGRlZmF1bHQgdmlzaWJpbGl0eSB0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTUVM6OlF1ZXVlJywge1xuICAgICAgICBWaXNpYmlsaXR5VGltZW91dDogMzAwLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjcmVhdGVzIGRlYWQgbGV0dGVyIHF1ZXVlJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTUVM6OlF1ZXVlJywge1xuICAgICAgICBSZWRyaXZlUG9saWN5OiB7XG4gICAgICAgICAgZGVhZExldHRlclRhcmdldEFybjogTWF0Y2guYW55VmFsdWUoKSxcbiAgICAgICAgICBtYXhSZWNlaXZlQ291bnQ6IDUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3VzZXMgY3VzdG9tIHZpc2liaWxpdHkgdGltZW91dCcsICgpID0+IHtcbiAgICAgIGN1c3RvbVF1ZXVlVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlNRUzo6UXVldWUnLCB7XG4gICAgICAgIFZpc2liaWxpdHlUaW1lb3V0OiA2MDAsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3VzZXMgY3VzdG9tIERMUSBtYXggcmVjZWl2ZSBjb3VudCcsICgpID0+IHtcbiAgICAgIGN1c3RvbVF1ZXVlVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlNRUzo6UXVldWUnLCB7XG4gICAgICAgIFJlZHJpdmVQb2xpY3k6IHtcbiAgICAgICAgICBtYXhSZWNlaXZlQ291bnQ6IDEwLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdlbmNyeXB0cyBxdWV1ZSB3aXRoIEtNUycsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6U1FTOjpRdWV1ZScsIHtcbiAgICAgICAgS21zTWFzdGVyS2V5SWQ6IE1hdGNoLmFueVZhbHVlKCksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1MzIGV2ZW50IG5vdGlmaWNhdGlvbnMnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBTMyBldmVudCBub3RpZmljYXRpb24gZm9yIHJhdyBwcmVmaXgnLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgICAgVmFyaWFibGVzOiB7XG4gICAgICAgICAgICBSQVdfUFJFRklYOiAncmF3LycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndXNlcyBjdXN0b20gcHJlZml4IGZvciBldmVudCBub3RpZmljYXRpb24nLCAoKSA9PiB7XG4gICAgICBjdXN0b21QcmVmaXhUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsIHtcbiAgICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIFJBV19QUkVGSVg6ICdpbnB1dC8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NRUyBjb25zdW1lciBMYW1iZGEnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBTUVMgY29uc3VtZXIgTGFtYmRhIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgICAgICBSdW50aW1lOiAncHl0aG9uMy4xMycsXG4gICAgICAgIFRpbWVvdXQ6IDMwMCxcbiAgICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIFNUQVRFX01BQ0hJTkVfQVJOOiBNYXRjaC5hbnlWYWx1ZSgpLFxuICAgICAgICAgICAgUkFXX1BSRUZJWDogJ3Jhdy8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NvbmZpZ3VyZXMgTGFtYmRhIGV2ZW50IHNvdXJjZSBtYXBwaW5nJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkV2ZW50U291cmNlTWFwcGluZycsIHtcbiAgICAgICAgQmF0Y2hTaXplOiAxMCxcbiAgICAgICAgTWF4aW11bUJhdGNoaW5nV2luZG93SW5TZWNvbmRzOiA1LFxuICAgICAgICBGdW5jdGlvblJlc3BvbnNlVHlwZXM6IFsnUmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXMnXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndXNlcyBjdXN0b20gcHJlZml4IGluIExhbWJkYSBlbnZpcm9ubWVudCcsICgpID0+IHtcbiAgICAgIGN1c3RvbVByZWZpeFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICAgIFZhcmlhYmxlczoge1xuICAgICAgICAgICAgUkFXX1BSRUZJWDogJ2lucHV0LycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnSUFNIHBlcm1pc3Npb25zJywgKCkgPT4ge1xuICAgIHRlc3QoJ2dyYW50cyBMYW1iZGEgcGVybWlzc2lvbiB0byBzdGFydCBTdGVwIEZ1bmN0aW9ucyBleGVjdXRpb24nLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgICAgICBTdGF0ZW1lbnQ6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICAgICAgICBBY3Rpb246ICdzdGF0ZXM6U3RhcnRFeGVjdXRpb24nLFxuICAgICAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdncmFudHMgS01TIGRlY3J5cHQgcGVybWlzc2lvbnMnLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6UG9saWN5Jywge1xuICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICBBY3Rpb246IE1hdGNoLmFycmF5V2l0aChbJ2ttczpEZWNyeXB0J10pLFxuICAgICAgICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU3RhdGUgbWFjaGluZSBjaGFpbnMnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBzdWNjZXNzIGNoYWluIHdpdGggY29weSBhbmQgZGVsZXRlIG9wZXJhdGlvbnMnLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsIHtcbiAgICAgICAgRGVmaW5pdGlvblN0cmluZzogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgJ0ZuOjpKb2luJzogTWF0Y2guYXJyYXlXaXRoKFsnJ10pLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY3JlYXRlcyBmYWlsZWQgY2hhaW4gd2l0aCBjb3B5IGFuZCBkZWxldGUgb3BlcmF0aW9ucycsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJywge1xuICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAnRm46OkpvaW4nOiBNYXRjaC5hcnJheVdpdGgoWycnXSksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd1c2VzIGN1c3RvbSBwcmVmaXhlcyBpbiBzdGF0ZSBtYWNoaW5lJywgKCkgPT4ge1xuICAgICAgY3VzdG9tUHJlZml4VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsIHtcbiAgICAgICAgRGVmaW5pdGlvblN0cmluZzogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgJ0ZuOjpKb2luJzogTWF0Y2guYXJyYXlXaXRoKFsnJ10pLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVtb3ZhbCBwb2xpY3knLCAoKSA9PiB7XG4gICAgdGVzdCgnYXBwbGllcyByZW1vdmFsIHBvbGljeSB0byByZXNvdXJjZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0QXBwID0gY3JlYXRlVGVzdEFwcCgpO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodGVzdEFwcCwgJ1JlbW92YWxTdGFjaycpO1xuICAgICAgY29uc3QgYWRhcHRlciA9IG5ldyBRdWV1ZWRTM0FkYXB0ZXIoKTtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdCA9IG5ldyBUZXN0RG9jdW1lbnRQcm9jZXNzaW5nKHN0YWNrLCAnUmVtb3ZhbFRlc3QnLCB7XG4gICAgICAgIGluZ3Jlc3NBZGFwdGVyOiBhZGFwdGVyLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIH0pO1xuICAgICAgY29uc3RydWN0LmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuXG4gICAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZSgnQVdTOjpTUVM6OlF1ZXVlJywge1xuICAgICAgICBEZWxldGlvblBvbGljeTogJ1JldGFpbicsXG4gICAgICAgIFVwZGF0ZVJlcGxhY2VQb2xpY3k6ICdSZXRhaW4nLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVkLXMzLWFkYXB0ZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9kb2N1bWVudC1wcm9jZXNzaW5nL3Rlc3RzL3F1ZXVlZC1zMy1hZGFwdGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBa0U7QUFDbEUsdURBQXlEO0FBQ3pELHVEQUFpRTtBQUNqRSwrQ0FBNEM7QUFDNUMsaUZBQW1FO0FBQ25FLCtDQUE0QztBQUM1QywyREFBMkQ7QUFDM0Qsd0NBQTZDO0FBQzdDLDBFQUFpRztBQUVqRyxNQUFNLHNCQUF1QixTQUFRLGlEQUFzQjtJQUNqRCxnQkFBZ0IsQ0FBVztJQUMzQixZQUFZLENBQVc7SUFFL0IsWUFBWSxLQUFVLEVBQUUsRUFBVSxFQUFFLEtBQVU7UUFDNUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUkscUJBQVEsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDN0QsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsaUJBQUksQ0FBQyxVQUFVLENBQUMscUVBQXFFLENBQUM7U0FDN0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHFCQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxpQkFBSSxDQUFDLFVBQVUsQ0FBQyxpREFBaUQsQ0FBQztTQUN6RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLE9BQU8sSUFBSSxzQ0FBWSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNsRCxjQUFjLEVBQUUsSUFBSSxDQUFD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O2lCQUNsQyxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtZQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFBLDBCQUFhLEdBQUUsQ0FBQztZQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUkseUJBQWUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksc0JBQXNCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtnQkFDakUsY0FBYyxFQUFFLE9BQU87Z0JBQ3ZCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE1BQU07YUFDcEMsQ0FBQyxDQUFDO1lBQ0gsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0IsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0MsUUFBUSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDdEMsY0FBYyxFQUFFLFFBQVE7Z0JBQ3hCLG1CQUFtQixFQUFFLFFBQVE7YUFDOUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwLCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCB7IENvZGUsIEZ1bmN0aW9uLCBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgTGFtYmRhSW52b2tlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MnO1xuaW1wb3J0IHsgQWNjZXNzTG9nIH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrJztcbmltcG9ydCB7IGNyZWF0ZVRlc3RBcHAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdGVzdC11dGlscyc7XG5pbXBvcnQgeyBRdWV1ZWRTM0FkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyJztcbmltcG9ydCB7IEJhc2VEb2N1bWVudFByb2Nlc3NpbmcsIERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIH0gZnJvbSAnLi4vYmFzZS1kb2N1bWVudC1wcm9jZXNzaW5nJztcblxuY2xhc3MgVGVzdERvY3VtZW50UHJvY2Vzc2luZyBleHRlbmRzIEJhc2VEb2N1bWVudFByb2Nlc3Npbmcge1xuICBwcml2YXRlIGNsYXNzaWZpY2F0aW9uRm46IEZ1bmN0aW9uO1xuICBwcml2YXRlIHByb2Nlc3NpbmdGbjogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGFueSwgaWQ6IHN0cmluZywgcHJvcHM6IGFueSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5jbGFzc2lmaWNhdGlvbkZuID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdDbGFzc2lmaWNhdGlvbkZuJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IENvZGUuZnJvbUlubGluZSgnZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgKCkgPT4gKHsgZG9jdW1lbnRDbGFzc2lmaWNhdGlvbjogXCJURVNUXCIgfSk7JyksXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2Nlc3NpbmdGbiA9IG5ldyBGdW5jdGlvbih0aGlzLCAnUHJvY2Vzc2luZ0ZuJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IENvZGUuZnJvbUlubGluZSgnZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgKCkgPT4gKHsgcmVzdWx0OiB7fSB9KTsnKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGFzc2lmaWNhdGlvblN0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUge1xuICAgIHJldHVybiBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdNb2NrQ2xhc3NpZmljYXRpb24nLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5jbGFzc2lmaWNhdGlvbkZuLFxuICAgICAgcmVzdWx0UGF0aDogJyQuY2xhc3NpZmljYXRpb25SZXN1bHQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NpbmdTdGVwKCk6IERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIHtcbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnTW9ja1Byb2Nlc3NpbmcnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9jZXNzaW5nRm4sXG4gICAgICByZXN1bHRQYXRoOiAnJC5wcm9jZXNzaW5nUmVzdWx0JyxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbnJpY2htZW50U3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3N0UHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJlcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlUHJvY2Vzc2luZ1dvcmtmbG93KCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVN0YW5kYXJkUHJvY2Vzc2luZ1dvcmtmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU3RhdGVNYWNoaW5lKCkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZVN0YXRlTWFjaGluZUNyZWF0aW9uKCd0ZXN0LXN0YXRlLW1hY2hpbmUnKTtcbiAgfVxufVxuXG5kZXNjcmliZSgnUXVldWVkUzNBZGFwdGVyJywgKCkgPT4ge1xuICBsZXQgYXBwOiBBcHA7XG4gIGxldCBkZWZhdWx0U3RhY2s6IFN0YWNrO1xuICBsZXQgY3VzdG9tQnVja2V0U3RhY2s6IFN0YWNrO1xuICBsZXQgY3VzdG9tUHJlZml4U3RhY2s6IFN0YWNrO1xuICBsZXQgY3VzdG9tUXVldWVTdGFjazogU3RhY2s7XG4gIGxldCBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlO1xuICBsZXQgY3VzdG9tQnVja2V0VGVtcGxhdGU6IFRlbXBsYXRlO1xuICBsZXQgY3VzdG9tUHJlZml4VGVtcGxhdGU6IFRlbXBsYXRlO1xuICBsZXQgY3VzdG9tUXVldWVUZW1wbGF0ZTogVGVtcGxhdGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAvLyBVc2UgY3JlYXRlVGVzdEFwcCgpIHRvIHNraXAgYnVuZGxpbmcgYW5kIHNwZWVkIHVwIHRlc3RzXG4gICAgYXBwID0gY3JlYXRlVGVzdEFwcCgpO1xuXG4gICAgZGVmYXVsdFN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ0RlZmF1bHRTdGFjaycpO1xuICAgIGNvbnN0IGRlZmF1bHRBZGFwdGVyID0gbmV3IFF1ZXVlZFMzQWRhcHRlcigpO1xuICAgIGNvbnN0IGRlZmF1bHRDb25zdHJ1Y3QgPSBuZXcgVGVzdERvY3VtZW50UHJvY2Vzc2luZyhkZWZhdWx0U3RhY2ssICdEZWZhdWx0VGVzdCcsIHtcbiAgICAgIGluZ3Jlc3NBZGFwdGVyOiBkZWZhdWx0QWRhcHRlcixcbiAgICB9KTtcbiAgICBkZWZhdWx0Q29uc3RydWN0LmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXG4gICAgY3VzdG9tQnVja2V0U3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnQ3VzdG9tQnVja2V0U3RhY2snKTtcbiAgICBjb25zdCBhY2Nlc3NMb2cgPSBuZXcgQWNjZXNzTG9nKGN1c3RvbUJ1Y2tldFN0YWNrLCAnQWNjZXNzTG9nJyk7XG4gICAgY29uc3QgY3VzdG9tQnVja2V0ID0gbmV3IEJ1Y2tldChjdXN0b21CdWNrZXRTdGFjaywgJ0N1c3RvbUJ1Y2tldCcsIHtcbiAgICAgIHNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQ6IGFjY2Vzc0xvZy5idWNrZXQsXG4gICAgICBzZXJ2ZXJBY2Nlc3NMb2dzUHJlZml4OiBhY2Nlc3NMb2cuYnVja2V0UHJlZml4LFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBjdXN0b21CdWNrZXRBZGFwdGVyID0gbmV3IFF1ZXVlZFMzQWRhcHRlcih7IGJ1Y2tldDogY3VzdG9tQnVja2V0IH0pO1xuICAgIGNvbnN0IGN1c3RvbUJ1Y2tldENvbnN0cnVjdCA9IG5ldyBUZXN0RG9jdW1lbnRQcm9jZXNzaW5nKGN1c3RvbUJ1Y2tldFN0YWNrLCAnQ3VzdG9tQnVja2V0VGVzdCcsIHtcbiAgICAgIGluZ3Jlc3NBZGFwdGVyOiBjdXN0b21CdWNrZXRBZGFwdGVyLFxuICAgIH0pO1xuICAgIGN1c3RvbUJ1Y2tldENvbnN0cnVjdC5jcmVhdGVTdGF0ZU1hY2hpbmUoKTtcblxuICAgIGN1c3RvbVByZWZpeFN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ0N1c3RvbVByZWZpeFN0YWNrJyk7XG4gICAgY29uc3QgY3VzdG9tUHJlZml4QWRhcHRlciA9IG5ldyBRdWV1ZWRTM0FkYXB0ZXIoe1xuICAgICAgcmF3UHJlZml4OiAnaW5wdXQvJyxcbiAgICAgIHByb2Nlc3NlZFByZWZpeDogJ291dHB1dC8nLFxuICAgICAgZmFpbGVkUHJlZml4OiAnZXJyb3JzLycsXG4gICAgfSk7XG4gICAgY29uc3QgY3VzdG9tUHJlZml4Q29uc3RydWN0ID0gbmV3IFRlc3REb2N1bWVudFByb2Nlc3NpbmcoY3VzdG9tUHJlZml4U3RhY2ssICdDdXN0b21QcmVmaXhUZXN0Jywge1xuICAgICAgaW5ncmVzc0FkYXB0ZXI6IGN1c3RvbVByZWZpeEFkYXB0ZXIsXG4gICAgfSk7XG4gICAgY3VzdG9tUHJlZml4Q29uc3RydWN0LmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXG4gICAgY3VzdG9tUXVldWVTdGFjayA9IG5ldyBTdGFjayhhcHAsICdDdXN0b21RdWV1ZVN0YWNrJyk7XG4gICAgY29uc3QgY3VzdG9tUXVldWVBZGFwdGVyID0gbmV3IFF1ZXVlZFMzQWRhcHRlcih7XG4gICAgICBxdWV1ZVZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEwKSxcbiAgICAgIGRscU1heFJlY2VpdmVDb3VudDogMTAsXG4gICAgfSk7XG4gICAgY29uc3QgY3VzdG9tUXVldWVDb25zdHJ1Y3QgPSBuZXcgVGVzdERvY3VtZW50UHJvY2Vzc2luZyhjdXN0b21RdWV1ZVN0YWNrLCAnQ3VzdG9tUXVldWVUZXN0Jywge1xuICAgICAgaW5ncmVzc0FkYXB0ZXI6IGN1c3RvbVF1ZXVlQWRhcHRlcixcbiAgICB9KTtcbiAgICBjdXN0b21RdWV1ZUNvbnN0cnVjdC5jcmVhdGVTdGF0ZU1hY2hpbmUoKTtcblxuICAgIGRlZmF1bHRUZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhkZWZhdWx0U3RhY2spO1xuICAgIGN1c3RvbUJ1Y2tldFRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGN1c3RvbUJ1Y2tldFN0YWNrKTtcbiAgICBjdXN0b21QcmVmaXhUZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhjdXN0b21QcmVmaXhTdGFjayk7XG4gICAgY3VzdG9tUXVldWVUZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhjdXN0b21RdWV1ZVN0YWNrKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1MzIGJ1Y2tldCBjb25maWd1cmF0aW9uJywgKCkgPT4ge1xuICAgIHRlc3QoJ2NyZWF0ZXMgZGVmYXVsdCBTMyBidWNrZXQnLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlMzOjpCdWNrZXQnLCB7XG4gICAgICAgIEJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFt7XG4gICAgICAgICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdDoge1xuICAgICAgICAgICAgICBTU0VBbGdvcml0aG06ICdhd3M6a21zJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfV0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3VzZXMgcHJvdmlkZWQgY3VzdG9tIGJ1Y2tldCcsICgpID0+IHtcbiAgICAgIGN1c3RvbUJ1Y2tldFRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpTMzo6QnVja2V0JywgMik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdlbmFibGVzIGJ1Y2tldCBrZXkgZm9yIGNvc3Qgb3B0aW1pemF0aW9uJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTMzo6QnVja2V0Jywge1xuICAgICAgICBCdWNrZXRFbmNyeXB0aW9uOiB7XG4gICAgICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBbe1xuICAgICAgICAgICAgQnVja2V0S2V5RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9XSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU1FTIHF1ZXVlIGNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBTUVMgcXVldWUgd2l0aCBkZWZhdWx0IHZpc2liaWxpdHkgdGltZW91dCcsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6U1FTOjpRdWV1ZScsIHtcbiAgICAgICAgVmlzaWJpbGl0eVRpbWVvdXQ6IDMwMCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY3JlYXRlcyBkZWFkIGxldHRlciBxdWV1ZScsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6U1FTOjpRdWV1ZScsIHtcbiAgICAgICAgUmVkcml2ZVBvbGljeToge1xuICAgICAgICAgIGRlYWRMZXR0ZXJUYXJnZXRBcm46IE1hdGNoLmFueVZhbHVlKCksXG4gICAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiA1LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd1c2VzIGN1c3RvbSB2aXNpYmlsaXR5IHRpbWVvdXQnLCAoKSA9PiB7XG4gICAgICBjdXN0b21RdWV1ZVRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTUVM6OlF1ZXVlJywge1xuICAgICAgICBWaXNpYmlsaXR5VGltZW91dDogNjAwLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd1c2VzIGN1c3RvbSBETFEgbWF4IHJlY2VpdmUgY291bnQnLCAoKSA9PiB7XG4gICAgICBjdXN0b21RdWV1ZVRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTUVM6OlF1ZXVlJywge1xuICAgICAgICBSZWRyaXZlUG9saWN5OiB7XG4gICAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiAxMCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZW5jcnlwdHMgcXVldWUgd2l0aCBLTVMnLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlNRUzo6UXVldWUnLCB7XG4gICAgICAgIEttc01hc3RlcktleUlkOiBNYXRjaC5hbnlWYWx1ZSgpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTMyBldmVudCBub3RpZmljYXRpb25zJywgKCkgPT4ge1xuICAgIHRlc3QoJ2NyZWF0ZXMgUzMgZXZlbnQgbm90aWZpY2F0aW9uIGZvciByYXcgcHJlZml4JywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICAgIFZhcmlhYmxlczoge1xuICAgICAgICAgICAgUkFXX1BSRUZJWDogJ3Jhdy8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3VzZXMgY3VzdG9tIHByZWZpeCBmb3IgZXZlbnQgbm90aWZpY2F0aW9uJywgKCkgPT4ge1xuICAgICAgY3VzdG9tUHJlZml4VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgICAgVmFyaWFibGVzOiB7XG4gICAgICAgICAgICBSQVdfUFJFRklYOiAnaW5wdXQvJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTUVMgY29uc3VtZXIgTGFtYmRhJywgKCkgPT4ge1xuICAgIHRlc3QoJ2NyZWF0ZXMgU1FTIGNvbnN1bWVyIExhbWJkYSBmdW5jdGlvbicsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsIHtcbiAgICAgICAgUnVudGltZTogJ3B5dGhvbjMuMTMnLFxuICAgICAgICBUaW1lb3V0OiAzMDAsXG4gICAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgICAgVmFyaWFibGVzOiB7XG4gICAgICAgICAgICBTVEFURV9NQUNISU5FX0FSTjogTWF0Y2guYW55VmFsdWUoKSxcbiAgICAgICAgICAgIFJBV19QUkVGSVg6ICdyYXcvJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjb25maWd1cmVzIExhbWJkYSBldmVudCBzb3VyY2UgbWFwcGluZycsICgpID0+IHtcbiAgICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TGFtYmRhOjpFdmVudFNvdXJjZU1hcHBpbmcnLCB7XG4gICAgICAgIEJhdGNoU2l6ZTogMTAsXG4gICAgICAgIE1heGltdW1CYXRjaGluZ1dpbmRvd0luU2Vjb25kczogNSxcbiAgICAgICAgRnVuY3Rpb25SZXNwb25zZVR5cGVzOiBbJ1JlcG9ydEJhdGNoSXRlbUZhaWx1cmVzJ10sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3VzZXMgY3VzdG9tIHByZWZpeCBpbiBMYW1iZGEgZW52aXJvbm1lbnQnLCAoKSA9PiB7XG4gICAgICBjdXN0b21QcmVmaXhUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsIHtcbiAgICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIFJBV19QUkVGSVg6ICdpbnB1dC8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0lBTSBwZXJtaXNzaW9ucycsICgpID0+IHtcbiAgICB0ZXN0KCdncmFudHMgTGFtYmRhIHBlcm1pc3Npb24gdG8gc3RhcnQgU3RlcCBGdW5jdGlvbnMgZXhlY3V0aW9uJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlJvbGUnLCB7XG4gICAgICAgIFBvbGljaWVzOiBNYXRjaC5hcnJheVdpdGgoW1xuICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICAgICAgU3RhdGVtZW50OiBNYXRjaC5hcnJheVdpdGgoW1xuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnc3RhdGVzOlN0YXJ0RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ3JhbnRzIEtNUyBkZWNyeXB0IHBlcm1pc3Npb25zJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBNYXRjaC5hcnJheVdpdGgoWydrbXM6RGVjcnlwdCddKSxcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1N0YXRlIG1hY2hpbmUgY2hhaW5zJywgKCkgPT4ge1xuICAgIHRlc3QoJ2NyZWF0ZXMgc3VjY2VzcyBjaGFpbiB3aXRoIGNvcHkgYW5kIGRlbGV0ZSBvcGVyYXRpb25zJywgKCkgPT4ge1xuICAgICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCB7XG4gICAgICAgIERlZmluaXRpb25TdHJpbmc6IE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICdGbjo6Sm9pbic6IE1hdGNoLmFycmF5V2l0aChbJyddKSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NyZWF0ZXMgZmFpbGVkIGNoYWluIHdpdGggY29weSBhbmQgZGVsZXRlIG9wZXJhdGlvbnMnLCAoKSA9PiB7XG4gICAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsIHtcbiAgICAgICAgRGVmaW5pdGlvblN0cmluZzogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgJ0ZuOjpKb2luJzogTWF0Y2guYXJyYXlXaXRoKFsnJ10pLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndXNlcyBjdXN0b20gcHJlZml4ZXMgaW4gc3RhdGUgbWFjaGluZScsICgpID0+IHtcbiAgICAgIGN1c3RvbVByZWZpeFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCB7XG4gICAgICAgIERlZmluaXRpb25TdHJpbmc6IE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICdGbjo6Sm9pbic6IE1hdGNoLmFycmF5V2l0aChbJyddKSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlbW92YWwgcG9saWN5JywgKCkgPT4ge1xuICAgIHRlc3QoJ2FwcGxpZXMgcmVtb3ZhbCBwb2xpY3kgdG8gcmVzb3VyY2VzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGVzdEFwcCA9IGNyZWF0ZVRlc3RBcHAoKTtcbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHRlc3RBcHAsICdSZW1vdmFsU3RhY2snKTtcbiAgICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgUXVldWVkUzNBZGFwdGVyKCk7XG4gICAgICBjb25zdCBjb25zdHJ1Y3QgPSBuZXcgVGVzdERvY3VtZW50UHJvY2Vzc2luZyhzdGFjaywgJ1JlbW92YWxUZXN0Jywge1xuICAgICAgICBpbmdyZXNzQWRhcHRlcjogYWRhcHRlcixcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0cnVjdC5jcmVhdGVTdGF0ZU1hY2hpbmUoKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoJ0FXUzo6U1FTOjpRdWV1ZScsIHtcbiAgICAgICAgRGVsZXRpb25Qb2xpY3k6ICdSZXRhaW4nLFxuICAgICAgICBVcGRhdGVSZXBsYWNlUG9saWN5OiAnUmV0YWluJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.BaseAgent = exports.InvokeType = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -41,6 +40,36 @@ Object.defineProperty(exports, "InvokeType", { enumerable: true, get: function (
|
|
|
41
40
|
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-configure.html
|
|
42
41
|
*/
|
|
43
42
|
class BaseAgent extends constructs_1.Construct {
|
|
43
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BaseAgent", version: "1.17.2" };
|
|
44
|
+
bedrockModel;
|
|
45
|
+
agentRole;
|
|
46
|
+
encryptionKey;
|
|
47
|
+
/** log group data protection configuration */
|
|
48
|
+
logGroupDataProtection;
|
|
49
|
+
agentToolsLocationDefinitions;
|
|
50
|
+
/**
|
|
51
|
+
* Knowledge base configurations for runtime use.
|
|
52
|
+
*
|
|
53
|
+
* This array contains the exported configurations from all configured
|
|
54
|
+
* knowledge bases. Subclasses use this to set the KNOWLEDGE_BASES_CONFIG
|
|
55
|
+
* environment variable on the agent Lambda function.
|
|
56
|
+
*/
|
|
57
|
+
knowledgeBaseConfigs;
|
|
58
|
+
/**
|
|
59
|
+
* Asset containing the knowledge base retrieval tool.
|
|
60
|
+
*
|
|
61
|
+
* This is automatically created when knowledge bases are configured.
|
|
62
|
+
* The asset is added to the agent's tools and granted read access.
|
|
63
|
+
*/
|
|
64
|
+
knowledgeBaseToolAsset;
|
|
65
|
+
/**
|
|
66
|
+
* Lambda layers required by knowledge base retrieval tools.
|
|
67
|
+
*
|
|
68
|
+
* This array contains Lambda layers from all configured knowledge bases.
|
|
69
|
+
* Subclasses should add these layers to the agent Lambda function to
|
|
70
|
+
* ensure retrieval tools have access to required dependencies.
|
|
71
|
+
*/
|
|
72
|
+
knowledgeBaseLayers;
|
|
44
73
|
constructor(scope, id, props) {
|
|
45
74
|
super(scope, id);
|
|
46
75
|
this.bedrockModel = props.agentDefinition.bedrockModel;
|
|
@@ -215,6 +244,4 @@ class BaseAgent extends constructs_1.Construct {
|
|
|
215
244
|
}
|
|
216
245
|
}
|
|
217
246
|
exports.BaseAgent = BaseAgent;
|
|
218
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
219
|
-
BaseAgent[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BaseAgent", version: "1.17.0" };
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvYWdlbnRzL2Jhc2UtYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLDZDQUFzRTtBQUN0RSxpREFBOEY7QUFDOUYsaURBQTBDO0FBQzFDLHVEQUE4RjtBQUU5RiwyQ0FBdUM7QUFDdkMsK0NBQWlLO0FBQ2pLLHdDQUFrRTtBQUVsRSwrQ0FBMkM7QUFJbEMsMkZBSkEsd0JBQVUsT0FJQTtBQXdKbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFzQixTQUFVLFNBQVEsc0JBQVM7SUFvQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDOUUsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87U0FDNUQsQ0FBQyxDQUFDO1FBR0gsTUFBTSxjQUFjLEdBQW1DLEVBQUUsQ0FBQztRQUUxRCxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsa0NBQWtDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxrQ0FBa0MsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEksY0FBYyxDQUFDLGVBQWUsR0FBRyxJQUFJLHdCQUFjLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLGtDQUFrQzthQUNyRSxDQUFDLENB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c0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBQcm9wZXJ0eUluamVjdG9ycywgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCwgUG9saWN5U3RhdGVtZW50LCBSb2xlLCBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgSUZ1bmN0aW9uLCBJTGF5ZXJWZXJzaW9uLCBMYXllclZlcnNpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IExhbWJkYUlhbVV0aWxzLCBMYW1iZGFPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3RvciwgTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzLCBMb2dHcm91cERhdGFQcm90ZWN0aW9uVXRpbHMsIE9ic2VydmFibGVQcm9wcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCZWRyb2NrTW9kZWxQcm9wcywgQmVkcm9ja01vZGVsVXRpbHMgfSBmcm9tICcuLi9iZWRyb2NrJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi9mb3VuZGF0aW9uJztcbmltcG9ydCB7IEludm9rZVR5cGUgfSBmcm9tICcuL2ludm9rZS10eXBlJztcbmltcG9ydCB7IElLbm93bGVkZ2VCYXNlLCBLbm93bGVkZ2VCYXNlUnVudGltZUNvbmZpZyB9IGZyb20gJy4va25vd2xlZGdlLWJhc2UnO1xuXG4vLyBSZS1leHBvcnQgSW52b2tlVHlwZSBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IEludm9rZVR5cGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgYnVja2V0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNGaWxlOiBib29sZWFuO1xuICByZWFkb25seSBpc1ppcEFyY2hpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyB0aGF0IGluZmx1ZW5jZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBhZ2VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50RGVmaW5pdGlvblByb3BzIHtcbiAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEJlZHJvY2sgTW9kZWwgdG8gYmUgdXNlZFxuICAgICAqL1xuICByZWFkb25seSBiZWRyb2NrTW9kZWw6IEJlZHJvY2tNb2RlbFByb3BzO1xuXG4gIC8qKlxuICAgICAqIFRoZSBzeXN0ZW0gcHJvbXB0IG9mIHRoZSBhZ2VudFxuICAgICAqXG4gICAgICovXG4gIHJlYWRvbmx5IHN5c3RlbVByb21wdDogQXNzZXQ7XG5cbiAgLyoqXG4gICAgICogTGlzdCBvZiB0b29scyBkZWZpbmVkIGluIHB5dGhvbiBmaWxlcy4gVGhpcyB0b29scyB3b3VsZCBhdXRvbWF0aWNhbGx5XG4gICAgICogYmUgbG9hZGVkIGJ5IHRoZSBhZ2VudC4gWW91IGNhbiBhbHNvIHVzZSB0aGlzIHRvIGluY29ycG9yYXRlIG90aGVyIHNwZWNpYWxpemVkXG4gICAgICogYWdlbnRzIGFzIHRvb2xzLlxuICAgICAqL1xuICByZWFkb25seSB0b29scz86IEFzc2V0W107XG5cbiAgLyoqXG4gICAgICogQW55IGRlcGVuZGVuY2llcyBuZWVkZWQgYnkgdGhlIHByb3ZpZGVkIHRvb2xzXG4gICAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUxheWVycz86IExheWVyVmVyc2lvbltdO1xuXG4gIC8qKlxuICAgICAqIElmIHRvb2xzIG5lZWQgYWRkaXRpb25hbCBJQU0gcGVybWlzc2lvbnMsIHRoZXNlIHN0YXRlbWVudHNcbiAgICAgKiB3b3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgQWdlbnQncyBJQU0gcm9sZVxuICAgICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0ZvclRvb2xzPzogUG9saWN5U3RhdGVtZW50W107XG5cbiAgLyoqXG4gICAqIEtub3dsZWRnZSBiYXNlcyBhdmFpbGFibGUgdG8gdGhlIGFnZW50IGZvciBSZXRyaWV2YWwtQXVnbWVudGVkIEdlbmVyYXRpb24gKFJBRykuXG4gICAqXG4gICAqIFdoZW4gY29uZmlndXJlZCwgdGhlIGFnZW50IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gYSBidWlsdC1pbiByZXRyaWV2YWwgdG9vbFxuICAgKiB0aGF0IGNhbiBxdWVyeSB0aGVzZSBrbm93bGVkZ2UgYmFzZXMuIFRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQgd2lsbCBiZVxuICAgKiBhdXRvbWF0aWNhbGx5IGF1Z21lbnRlZCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGF2YWlsYWJsZSBrbm93bGVkZ2UgYmFzZXMuXG4gICAqXG4gICAqIEVhY2gga25vd2xlZGdlIGJhc2UgbXVzdCBpbXBsZW1lbnQgdGhlIElLbm93bGVkZ2VCYXNlIGludGVyZmFjZSwgd2hpY2hcbiAgICogaGFuZGxlcyBJQU0gcGVybWlzc2lvbiBnZW5lcmF0aW9uIGFuZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8ga25vd2xlZGdlIGJhc2VzIGNvbmZpZ3VyZWRcbiAgICovXG4gIHJlYWRvbmx5IGtub3dsZWRnZUJhc2VzPzogSUtub3dsZWRnZUJhc2VbXTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBJQU0gcG9saWN5IHN0YXRlbWVudHMgZm9yIGtub3dsZWRnZSBiYXNlIGFjY2Vzcy5cbiAgICpcbiAgICogVXNlIHRoaXMgd2hlbiBrbm93bGVkZ2UgYmFzZXMgcmVxdWlyZSBwZXJtaXNzaW9ucyBiZXlvbmQgd2hhdCBpc1xuICAgKiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgSUtub3dsZWRnZUJhc2UgaW1wbGVtZW50YXRpb25zLlxuICAgKiBUaGVzZSBzdGF0ZW1lbnRzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFnZW50J3MgSUFNIHJvbGUgaW4gYWRkaXRpb25cbiAgICogdG8gdGhlIGF1dG8tZ2VuZXJhdGVkIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgYXV0by1nZW5lcmF0ZWQgcGVybWlzc2lvbnMgZnJvbSBrbm93bGVkZ2UgYmFzZXNcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXM/OiBQb2xpY3lTdGF0ZW1lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQWdlbnRQcm9wcyBleHRlbmRzIE9ic2VydmFibGVQcm9wcyB7XG5cbiAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgYWdlbnRcbiAgICAgKi9cbiAgcmVhZG9ubHkgYWdlbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gc2VydmljZSBwcmluY2lwYWwgZm9yIHRoZSBhZ2VudCByb2xlJ3MgdHJ1c3QgcG9saWN5LlxuICAgKlxuICAgKiBUaGlzIGlzIHR5cGljYWxseSBzZXQgYnkgdGhlIGhvc3RpbmcgYWRhcHRlciAoZS5nLiwgYGxhbWJkYS5hbWF6b25hd3MuY29tYFxuICAgKiBmb3IgTGFtYmRhIGhvc3RpbmcsIGBiZWRyb2NrLWFnZW50Y29yZS5hbWF6b25hd3MuY29tYCBmb3IgQWdlbnRDb3JlKS5cbiAgICpcbiAgICogQGRlZmF1bHQgU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZVByaW5jaXBhbD86IFNlcnZpY2VQcmluY2lwYWw7XG5cbiAgLyoqXG4gICAgICogQWdlbnQgcmVsYXRlZCBwYXJhbWV0ZXJzXG4gICAgICovXG4gIHJlYWRvbmx5IGFnZW50RGVmaW5pdGlvbjogQWdlbnREZWZpbml0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvYnNlcnZhYmlsaXR5IGZvciB0aGUgYWdlbnRcbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCBjb25maWd1cmVzIGJvdGggTGFtYmRhIFBvd2VydG9vbHMgYW5kIEFXUyBCZWRyb2NrIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5OlxuICAgKiAtICoqTGFtYmRhIFBvd2VydG9vbHMqKjogUHJvdmlkZXMgZnVuY3Rpb24tbGV2ZWwgb2JzZXJ2YWJpbGl0eSBpbmNsdWRpbmcgc3RydWN0dXJlZCBsb2dnaW5nLFxuICAgKiAgIGRpc3RyaWJ1dGVkIHRyYWNpbmcgd2l0aCBYLVJheSwgYW5kIGN1c3RvbSBtZXRyaWNzXG4gICAqIC0gKipBZ2VudENvcmUgT2JzZXJ2YWJpbGl0eSoqOiBQcm92aWRlcyBhZ2VudC1zcGVjaWZpYyBvYnNlcnZhYmlsaXR5IGluY2x1ZGluZyBhZ2VudCBpbnZvY2F0aW9ucyxcbiAgICogICByZWFzb25pbmcgc3RlcHMsIHRvb2wgdXNhZ2UsIHRva2VuIGNvbnN1bXB0aW9uLCBhbmQgYWdlbnQgbGF0ZW5jeVxuICAgKlxuICAgKiBCb3RoIHN5c3RlbXMgcHVibGlzaCB0byBBbWF6b24gQ2xvdWRXYXRjaCBhbmQgdXNlIHRoZSBzYW1lIHNlcnZpY2UgbmFtZSBhbmQgbmFtZXNwYWNlXG4gICAqIGZvciBjb3JyZWxhdGlvbi4gVGhpcyBwcm92aWRlcyBjb21wbGV0ZSB2aXNpYmlsaXR5IGF0IGJvdGggZnVuY3Rpb24gYW5kIGFnZW50IGxldmVscy5cbiAgICpcbiAgICogKipFbnZpcm9ubWVudCBWYXJpYWJsZXMgU2V0KiogKEFnZW50Q29yZSk6XG4gICAqIC0gYEFHRU5UX09CU0VSVkFCSUxJVFlfRU5BQkxFRGA6IEVuYWJsZXMgQWdlbnRDb3JlIG9ic2VydmFiaWxpdHlcbiAgICogLSBgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTYDogU2VydmljZSBpZGVudGlmaWNhdGlvbiBmb3IgT3BlblRlbGVtZXRyeVxuICAgKiAtIGBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19IRUFERVJTYDogQWdlbnQgaWRlbnRpZmljYXRpb24gaGVhZGVyc1xuICAgKiAtIGBBV1NfTEFNQkRBX0VYRUNfV1JBUFBFUmA6IEFET1Qgd3JhcHBlciBmb3IgYXV0b21hdGljIGluc3RydW1lbnRhdGlvblxuICAgKlxuICAgKiAqKklBTSBQZXJtaXNzaW9ucyBHcmFudGVkKiogKEFnZW50Q29yZSk6XG4gICAqIC0gQ2xvdWRXYXRjaCBMb2dzOiBgbG9nczpDcmVhdGVMb2dHcm91cGAsIGBsb2dzOkNyZWF0ZUxvZ1N0cmVhbWAsIGBsb2dzOlB1dExvZ0V2ZW50c2BcbiAgICogLSBYLVJheTogYHhyYXk6UHV0VHJhY2VTZWdtZW50c2AsIGB4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHNgXG4gICAqXG4gICAqICoqQWRkaXRpb25hbCBSZXF1aXJlbWVudHMqKjpcbiAgICogLSBCYXRjaEFnZW50IGF1dG9tYXRpY2FsbHkgYWRkcyBBRE9UIChBV1MgRGlzdHJvIGZvciBPcGVuVGVsZW1ldHJ5KSBMYW1iZGEgTGF5ZXJcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL29ic2VydmFiaWxpdHktY29uZmlndXJlLmh0bWxcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgICAqIElmIHRoZSBBZ2VudCB3b3VsZCBiZSBydW5uaW5nIGluc2lkZSBhIFZQQ1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgQWdlbnQgd291bGQgbm90IGJlIGluIGEgVlBDXG4gICAgICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrO1xuXG4gIC8qKlxuICAgICAqIEVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgYWdlbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBuZXcgS01TIEtleSB3b3VsZCBiZSBjcmVhdGVkXG4gICAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBLZXk7XG5cbiAgLyoqXG4gICAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXNcbiAgICAgKiBjb25zdHJ1Y3RcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogVGhlIGFyY2hpdGVjdHVyZSB1c2VkIGJ5IHRoZSBMYW1iZGEgZnVuY3Rpb24gd2hlcmUgdGhlXG4gICAqIGFnZW50IGlzIGhvc3RlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBBcmNoaXRlY3R1cmUuQVJNXzY0XG4gICAqL1xuICByZWFkb25seSBhZ2VudEFyY2hpdGVjdHVyZT86IEFyY2hpdGVjdHVyZTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgYWdlbnQgdHlwZXMgaW4gdGhlIGZyYW1ld29ya1xuICpcbiAqIFByb3ZpZGVzIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBmb3IgQUkgYWdlbnRzIGluY2x1ZGluZzpcbiAqIC0gSUFNIHJvbGUgYW5kIHBlcm1pc3Npb25zIG1hbmFnZW1lbnRcbiAqIC0gRW5jcnlwdGlvbiBrZXkgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICogLSBUb29sIGludGVncmF0aW9uIGFuZCBTMyBhc3NldCBtYW5hZ2VtZW50XG4gKiAtIEtub3dsZWRnZSBiYXNlIGludGVncmF0aW9uIGZvciBSQUcgKFJldHJpZXZhbC1BdWdtZW50ZWQgR2VuZXJhdGlvbilcbiAqIC0gT2JzZXJ2YWJpbGl0eSBjb25maWd1cmF0aW9uIChMYW1iZGEgUG93ZXJ0b29scyArIEFnZW50Q29yZSlcbiAqXG4gKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoZSBhZ2VudC1zcGVjaWZpYyBMYW1iZGEgZnVuY3Rpb24gY3JlYXRpb24uXG4gKlxuICogKipPYnNlcnZhYmlsaXR5Kio6IFdoZW4gYGVuYWJsZU9ic2VydmFiaWxpdHk6IHRydWVgLCBCYXNlQWdlbnQgY29uZmlndXJlcyBib3RoXG4gKiBMYW1iZGEgUG93ZXJ0b29scyAoZnVuY3Rpb24tbGV2ZWwpIGFuZCBBV1MgQmVkcm9jayBBZ2VudENvcmUgKGFnZW50LWxldmVsKVxuICogb2JzZXJ2YWJpbGl0eS4gQm90aCBzeXN0ZW1zIHdvcmsgdG9nZXRoZXIgdG8gcHJvdmlkZSBjb21wbGV0ZSB2aXNpYmlsaXR5OlxuICogLSBMYW1iZGEgUG93ZXJ0b29scyBjYXB0dXJlcyBmdW5jdGlvbiBleGVjdXRpb24sIGxvZ3MsIGFuZCBjdXN0b20gbWV0cmljc1xuICogLSBBZ2VudENvcmUgY2FwdHVyZXMgYWdlbnQgcmVhc29uaW5nLCB0b29sIHVzYWdlLCBhbmQgdG9rZW4gY29uc3VtcHRpb25cbiAqIC0gQm90aCBwdWJsaXNoIHRvIENsb3VkV2F0Y2ggd2l0aCBjb3JyZWxhdGVkIHNlcnZpY2UgbmFtZXMgZm9yIHVuaWZpZWQgbW9uaXRvcmluZ1xuICpcbiAqIFRoZSBvYnNlcnZhYmlsaXR5IGludGVncmF0aW9uIGluY2x1ZGVzOlxuICogLSBBdXRvbWF0aWMgSUFNIHBlcm1pc3Npb24gZ3JhbnRzIGZvciBDbG91ZFdhdGNoIExvZ3MgYW5kIFgtUmF5XG4gKiAtIEVudmlyb25tZW50IHZhcmlhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIE9wZW5UZWxlbWV0cnlcbiAqIC0gQURPVCBMYW1iZGEgTGF5ZXIgYXR0YWNobWVudCAoaGFuZGxlZCBieSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMpXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL29ic2VydmFiaWxpdHktY29uZmlndXJlLmh0bWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VBZ2VudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIGZvciB0aGUgYWdlbnQgKHdoZW4gdXNpbmcgTGFtYmRhIGhvc3RpbmcpLlxuICAgKiBNYXkgYmUgdW5kZWZpbmVkIGZvciBub24tTGFtYmRhIGhvc3RpbmcgYmFja2VuZHMgKGUuZy4gQWdlbnRDb3JlIFJ1bnRpbWUpLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50RnVuY3Rpb24/OiBJRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBiZWRyb2NrTW9kZWw/OiBCZWRyb2NrTW9kZWxQcm9wcztcbiAgcHVibGljIHJlYWRvbmx5IGFnZW50Um9sZTogUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk6IEtleTtcbiAgLyoqIGxvZyBncm91cCBkYXRhIHByb3RlY3Rpb24gY29uZmlndXJhdGlvbiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nR3JvdXBEYXRhUHJvdGVjdGlvbjogTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnM6IEFnZW50VG9vbHNMb2NhdGlvbkRlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIEtub3dsZWRnZSBiYXNlIGNvbmZpZ3VyYXRpb25zIGZvciBydW50aW1lIHVzZS5cbiAgICpcbiAgICogVGhpcyBhcnJheSBjb250YWlucyB0aGUgZXhwb3J0ZWQgY29uZmlndXJhdGlvbnMgZnJvbSBhbGwgY29uZmlndXJlZFxuICAgKiBrbm93bGVkZ2UgYmFzZXMuIFN1YmNsYXNzZXMgdXNlIHRoaXMgdG8gc2V0IHRoZSBLTk9XTEVER0VfQkFTRVNfQ09ORklHXG4gICAqIGVudmlyb25tZW50IHZhcmlhYmxlIG9uIHRoZSBhZ2VudCBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga25vd2xlZGdlQmFzZUNvbmZpZ3M6IEtub3dsZWRnZUJhc2VSdW50aW1lQ29uZmlnW107XG4gIC8qKlxuICAgKiBBc3NldCBjb250YWluaW5nIHRoZSBrbm93bGVkZ2UgYmFzZSByZXRyaWV2YWwgdG9vbC5cbiAgICpcbiAgICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBrbm93bGVkZ2UgYmFzZXMgYXJlIGNvbmZpZ3VyZWQuXG4gICAqIFRoZSBhc3NldCBpcyBhZGRlZCB0byB0aGUgYWdlbnQncyB0b29scyBhbmQgZ3JhbnRlZCByZWFkIGFjY2Vzcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBrbm93bGVkZ2VCYXNlVG9vbEFzc2V0PzogQXNzZXQ7XG4gIC8qKlxuICAgKiBMYW1iZGEgbGF5ZXJzIHJlcXVpcmVkIGJ5IGtub3dsZWRnZSBiYXNlIHJldHJpZXZhbCB0b29scy5cbiAgICpcbiAgICogVGhpcyBhcnJheSBjb250YWlucyBMYW1iZGEgbGF5ZXJzIGZyb20gYWxsIGNvbmZpZ3VyZWQga25vd2xlZGdlIGJhc2VzLlxuICAgKiBTdWJjbGFzc2VzIHNob3VsZCBhZGQgdGhlc2UgbGF5ZXJzIHRvIHRoZSBhZ2VudCBMYW1iZGEgZnVuY3Rpb24gdG9cbiAgICogZW5zdXJlIHJldHJpZXZhbCB0b29scyBoYXZlIGFjY2VzcyB0byByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga25vd2xlZGdlQmFzZUxheWVyczogTGF5ZXJWZXJzaW9uW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VBZ2VudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmJlZHJvY2tNb2RlbCA9IHByb3BzLmFnZW50RGVmaW5pdGlvbi5iZWRyb2NrTW9kZWw7XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5ID0gcHJvcHMuZW5jcnlwdGlvbktleSB8fCBuZXcgS2V5KHRoaXMsICdBZ2VudEVuY3J5cHRpb25LZXknLCB7XG4gICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG5cbiAgICBjb25zdCBpbmxpbmVQb2xpY2llczogUmVjb3JkPHN0cmluZywgUG9saWN5RG9jdW1lbnQ+ID0ge307XG5cbiAgICBpZiAocHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yVG9vbHMgJiYgcHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yVG9vbHMubGVuZ3RoID4gMCkge1xuICAgICAgaW5saW5lUG9saWNpZXMuVG9vbFBlcm1pc3Npb25zID0gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogcHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yVG9vbHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBJQU0gcGVybWlzc2lvbnMgZnJvbSBrbm93bGVkZ2UgYmFzZXNcbiAgICBjb25zdCBrbm93bGVkZ2VCYXNlcyA9IHByb3BzLmFnZW50RGVmaW5pdGlvbi5rbm93bGVkZ2VCYXNlcyA/PyBbXTtcbiAgICBjb25zdCBrYlBvbGljeVN0YXRlbWVudHM6IFBvbGljeVN0YXRlbWVudFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtiIG9mIGtub3dsZWRnZUJhc2VzKSB7XG4gICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IGtiLmdlbmVyYXRlSWFtUGVybWlzc2lvbnMoKTtcbiAgICAgIGtiUG9saWN5U3RhdGVtZW50cy5wdXNoKC4uLnBlcm1pc3Npb25zKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYWRkaXRpb25hbCBLQiBwb2xpY3kgc3RhdGVtZW50cyBpZiBwcm92aWRlZFxuICAgIGlmIChwcm9wcy5hZ2VudERlZmluaXRpb24uYWRkaXRpb25hbFBvbGljeVN0YXRlbWVudHNGb3JLbm93bGVkZ2VCYXNlcykge1xuICAgICAga2JQb2xpY3lTdGF0ZW1lbnRzLnB1c2goLi4ucHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXMpO1xuICAgIH1cblxuICAgIC8vIEFkZCBLQiBwZXJtaXNzaW9ucyBhcyBpbmxpbmUgcG9saWN5IGlmIGFueSBleGlzdFxuICAgIGlmIChrYlBvbGljeVN0YXRlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaW5saW5lUG9saWNpZXMuS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zID0gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czoga2JQb2xpY3lTdGF0ZW1lbnRzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudFJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgQWdlbnQtJHtwcm9wcy5hZ2VudE5hbWV9LVJvbGVgLCB7XG4gICAgICBhc3N1bWVkQnk6IHByb3BzLnNlcnZpY2VQcmluY2lwYWwgfHwgbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5uZXR3b3JrKSB7XG4gICAgICB0aGlzLmFnZW50Um9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShMYW1iZGFJYW1VdGlscy5nZW5lcmF0ZUxhbWJkYVZQQ1Blcm1pc3Npb25zKCkpO1xuICAgIH1cblxuICAgIHRoaXMuYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnMgPSBbXTtcblxuICAgIGlmIChwcm9wcy5hZ2VudERlZmluaXRpb24udG9vbHMpIHtcbiAgICAgIGZvciAoY29uc3QgdG9vbCBvZiBwcm9wcy5hZ2VudERlZmluaXRpb24udG9vbHMpIHtcbiAgICAgICAgdG9vbC5ncmFudFJlYWQodGhpcy5hZ2VudFJvbGUpO1xuXG4gICAgICAgIHRoaXMuYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnMucHVzaCh7XG4gICAgICAgICAgYnVja2V0TmFtZTogdG9vbC5zM0J1Y2tldE5hbWUsXG4gICAgICAgICAga2V5OiB0b29sLnMzT2JqZWN0S2V5LFxuICAgICAgICAgIGlzRmlsZTogdG9vbC5pc0ZpbGUsXG4gICAgICAgICAgaXNaaXBBcmNoaXZlOiB0b29sLmlzWmlwQXJjaGl2ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RvcmUga25vd2xlZGdlIGJhc2UgY29uZmlndXJhdGlvbnMgZm9yIHN1YmNsYXNzIGFjY2Vzc1xuICAgIHRoaXMua25vd2xlZGdlQmFzZUNvbmZpZ3MgPSBrbm93bGVkZ2VCYXNlcy5tYXAoa2IgPT4ga2IuZXhwb3J0Q29uZmlndXJhdGlvbigpKTtcblxuICAgIC8vIEluaXRpYWxpemUga25vd2xlZGdlIGJhc2UgbGF5ZXJzIGFycmF5XG4gICAgdGhpcy5rbm93bGVkZ2VCYXNlTGF5ZXJzID0gW107XG5cbiAgICAvLyBHZXQgcmV0cmlldmFsIHRvb2wgYXNzZXRzIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgLy8gRWFjaCBLQiB0eXBlIHByb3ZpZGVzIGl0cyBvd24gcmV0cmlldmFsIHRvb2wgaW1wbGVtZW50YXRpb25cbiAgICBpZiAoa25vd2xlZGdlQmFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQ29sbGVjdCB1bmlxdWUgcmV0cmlldmFsIHRvb2wgYXNzZXRzIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgICAvLyBVc2UgYSBNYXAgdG8gZGVkdXBsaWNhdGUgYnkgYXNzZXQgcGF0aCAoc2FtZSBLQiB0eXBlID0gc2FtZSB0b29sKVxuICAgICAgY29uc3QgdG9vbEFzc2V0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFzc2V0PigpO1xuXG4gICAgICBmb3IgKGNvbnN0IGtiIG9mIGtub3dsZWRnZUJhc2VzKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBLQiBwcm92aWRlcyBhIHJldHJpZXZhbCB0b29sXG4gICAgICAgIGlmIChrYi5yZXRyaWV2YWxUb29sQXNzZXQpIHtcbiAgICAgICAgICBjb25zdCB0b29sQXNzZXQgPSBrYi5yZXRyaWV2YWxUb29sQXNzZXQoKTtcbiAgICAgICAgICBpZiAodG9vbEFzc2V0KSB7XG4gICAgICAgICAgICAvLyBVc2UgdGhlIFMzIG9iamVjdCBrZXkgYXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgZGVkdXBsaWNhdGlvblxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdG9vbEFzc2V0LnMzT2JqZWN0S2V5O1xuICAgICAgICAgICAgaWYgKCF0b29sQXNzZXRNYXAuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgdG9vbEFzc2V0TWFwLnNldChrZXksIHRvb2xBc3NldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29sbGVjdCBMYW1iZGEgbGF5ZXJzIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgICAgIGlmIChrYi5yZXRyaWV2YWxUb29sTGF5ZXJzKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJzID0ga2IucmV0cmlldmFsVG9vbExheWVycygpO1xuICAgICAgICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMua25vd2xlZGdlQmFzZUxheWVycy5wdXNoKC4uLmxheWVycyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBlYWNoIHVuaXF1ZSByZXRyaWV2YWwgdG9vbCB0byB0aGUgYWdlbnRcbiAgICAgIGZvciAoY29uc3QgYXNzZXQgb2YgdG9vbEFzc2V0TWFwLnZhbHVlcygpKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBmaXJzdCB0b29sIGFzc2V0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgIGlmICghdGhpcy5rbm93bGVkZ2VCYXNlVG9vbEFzc2V0KSB7XG4gICAgICAgICAgdGhpcy5rbm93bGVkZ2VCYXNlVG9vbEFzc2V0ID0gYXNzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byB0aGUgcmV0cmlldmFsIHRvb2wgYXNzZXRcbiAgICAgICAgYXNzZXQuZ3JhbnRSZWFkKHRoaXMuYWdlbnRSb2xlKTtcblxuICAgICAgICAvLyBBZGQgcmV0cmlldmFsIHRvb2wgdG8gYWdlbnQgdG9vbHMgbG9jYXRpb24gZGVmaW5pdGlvbnNcbiAgICAgICAgdGhpcy5hZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9ucy5wdXNoKHtcbiAgICAgICAgICBidWNrZXROYW1lOiBhc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgICAgICAga2V5OiBhc3NldC5zM09iamVjdEtleSxcbiAgICAgICAgICBpc0ZpbGU6IGFzc2V0LmlzRmlsZSxcbiAgICAgICAgICBpc1ppcEFyY2hpdmU6IGFzc2V0LmlzWmlwQXJjaGl2ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudFJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koQmVkcm9ja01vZGVsVXRpbHMuZ2VuZXJhdGVNb2RlbElBTVBlcm1pc3Npb25zKHRoaXMsIHRoaXMuYmVkcm9ja01vZGVsKSk7XG4gICAgdGhpcy5sb2dHcm91cERhdGFQcm90ZWN0aW9uID0gTG9nR3JvdXBEYXRhUHJvdGVjdGlvblV0aWxzLmhhbmRsZURlZmF1bHQodGhpcywgcHJvcHMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiwgcHJvcHMucmVtb3ZhbFBvbGljeSk7XG5cbiAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgUHJvcGVydHlJbmplY3RvcnMub2YodGhpcykuYWRkKFxuICAgICAgICBuZXcgTGFtYmRhT2JzZXJ2YWJpbGl0eVByb3BlcnR5SW5qZWN0b3IodGhpcy5sb2dHcm91cERhdGFQcm90ZWN0aW9uKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIEFkZCBJQU0gcGVybWlzc2lvbnMgZm9yIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5XG4gICAgICB0aGlzLmFnZW50Um9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdsb2dzOkNyZWF0ZUxvZ0dyb3VwJyxcbiAgICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICAgICAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICAgICAgICAgJ3hyYXk6UHV0VGVsZW1ldHJ5UmVjb3JkcycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sIC8vIENsb3VkV2F0Y2ggTG9ncyBhbmQgWC1SYXkgcmVxdWlyZSB3aWxkY2FyZCByZXNvdXJjZXNcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgQVdTIERpc3RybyBmb3IgT3BlblRlbGVtZXRyeSAoQURPVCkgTGFtYmRhIExheWVyLlxuICAgKlxuICAgKiBUaGUgQURPVCBsYXllciBwcm92aWRlcyBhdXRvbWF0aWMgaW5zdHJ1bWVudGF0aW9uIGZvciBvYnNlcnZhYmlsaXR5LlxuICAgKiBMYXllciB2ZXJzaW9ucyB2YXJ5IGJ5IHJlZ2lvbiAtIHNvbWUgcmVnaW9ucyBoYXZlIG5ld2VyIHZlcnNpb25zIHdpdGhcbiAgICogYmV0dGVyIFB5dGhvbiAzLjEzIHN1cHBvcnQuIElmIHlvdSBlbmNvdW50ZXIgY29tcGF0aWJpbGl0eSBpc3N1ZXMsXG4gICAqIHRoZSBsYXllciBBUk5zIGNhbiBiZSBmb3VuZCBhdDpcbiAgICogaHR0cHM6Ly9hd3Mtb3RlbC5naXRodWIuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvbGFtYmRhI2Fkb3QtbGFtYmRhLWxheWVyLWFybnNcbiAgICpcbiAgICogQHJldHVybnMgVGhlIEFET1QgTGFtYmRhIExheWVyIGZvciB0aGUgY3VycmVudCByZWdpb25cbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgcmVnaW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVBRE9UTGF5ZXIoKTogSUxheWVyVmVyc2lvbiB7XG4gICAgY29uc3QgeyByZWdpb24gfSA9IFN0YWNrLm9mKHRoaXMpO1xuXG4gICAgLy8gQVdTIERpc3RybyBmb3IgT3BlblRlbGVtZXRyeSAoQURPVCkgTGFtYmRhIExheWVyIEFSTnMgYnkgcmVnaW9uXG4gICAgLy8gU291cmNlOiBodHRwczovL2F3cy1vdGVsLmdpdGh1Yi5pby9kb2NzL2dldHRpbmctc3RhcnRlZC9sYW1iZGEjYWRvdC1sYW1iZGEtbGF5ZXItYXJuc1xuICAgIGNvbnN0IGFkb3RMYXllckFybk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdhZi1zb3V0aC0xJzogJ2Fybjphd3M6bGFtYmRhOmFmLXNvdXRoLTE6OTA0MjMzMDk2NjE2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2FwLWVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTphcC1lYXN0LTE6ODg4NTc3MDIwNTk2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2FwLW5vcnRoZWFzdC0xJzogJ2Fybjphd3M6bGFtYmRhOmFwLW5vcnRoZWFzdC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMic6ICdhcm46YXdzOmxhbWJkYTphcC1ub3J0aGVhc3QtMjo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnYXAtbm9ydGhlYXN0LTMnOiAnYXJuOmF3czpsYW1iZGE6YXAtbm9ydGhlYXN0LTM6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTknLFxuICAgICAgJ2FwLXNvdXRoLTEnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGgtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnYXAtc291dGgtMic6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aC0yOjc5Njk3MzUwNTQ5MjpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aGVhc3QtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxOScsXG4gICAgICAnYXAtc291dGhlYXN0LTInOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2FwLXNvdXRoZWFzdC0zJzogJ2Fybjphd3M6bGFtYmRhOmFwLXNvdXRoZWFzdC0zOjAzOTYxMjg3NzE4MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtNCc6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aGVhc3QtNDo3MTM4ODE4MDU3NzE6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnYXAtc291dGhlYXN0LTUnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTU6MTUyMDM0NzgyMzU5OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnYXAtc291dGhlYXN0LTcnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTc6OTgwNDE2MDMxMTg4OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnY2EtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOmNhLWNlbnRyYWwtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnY2Etd2VzdC0xJzogJ2Fybjphd3M6bGFtYmRhOmNhLXdlc3QtMTo1OTU5NDQxMjcxNTI6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjo4JyxcbiAgICAgICdjbi1ub3J0aC0xJzogJ2Fybjphd3MtY246bGFtYmRhOmNuLW5vcnRoLTE6NDQwMTc5OTEyOTI0OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnY24tbm9ydGh3ZXN0LTEnOiAnYXJuOmF3cy1jbjpsYW1iZGE6Y24tbm9ydGh3ZXN0LTE6NDQwMTgwMDY3OTMxOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnZXUtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOmV1LWNlbnRyYWwtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtY2VudHJhbC0yJzogJ2Fybjphd3M6bGFtYmRhOmV1LWNlbnRyYWwtMjoxNTYwNDE0MDc5NTY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnZXUtbm9ydGgtMSc6ICdhcm46YXdzOmxhbWJkYTpldS1ub3J0aC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICdldS1zb3V0aC0xJzogJ2Fybjphd3M6bGFtYmRhOmV1LXNvdXRoLTE6MjU3Mzk0NDcxMTk0OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2V1LXNvdXRoLTInOiAnYXJuOmF3czpsYW1iZGE6ZXUtc291dGgtMjo0OTAwMDQ2NTM3ODY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnZXUtd2VzdC0xJzogJ2Fybjphd3M6bGFtYmRhOmV1LXdlc3QtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtd2VzdC0yJzogJ2Fybjphd3M6bGFtYmRhOmV1LXdlc3QtMjo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtd2VzdC0zJzogJ2Fybjphd3M6bGFtYmRhOmV1LXdlc3QtMzo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnaWwtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOmlsLWNlbnRyYWwtMTo3NDY2NjkyMzkyMjY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnbWUtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOm1lLWNlbnRyYWwtMTo3MzkyNzU0NDExMzE6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnbWUtc291dGgtMSc6ICdhcm46YXdzOmxhbWJkYTptZS1zb3V0aC0xOjk4MDkyMTc1MTc1ODpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdteC1jZW50cmFsLTEnOiAnYXJuOmF3czpsYW1iZGE6bXgtY2VudHJhbC0xOjYxMDExODM3Mzg0NjpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjgnLFxuICAgICAgJ3NhLWVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTpzYS1lYXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ3VzLWVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTp1cy1lYXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjMnLFxuICAgICAgJ3VzLWVhc3QtMic6ICdhcm46YXdzOmxhbWJkYTp1cy1lYXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ3VzLXdlc3QtMSc6ICdhcm46YXdzOmxhbWJkYTp1cy13ZXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjcnLFxuICAgICAgJ3VzLXdlc3QtMic6ICdhcm46YXdzOmxhbWJkYTp1cy13ZXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjcnLFxuICAgIH07XG5cbiAgICBjb25zdCBhZG90TGF5ZXJBcm4gPSBhZG90TGF5ZXJBcm5NYXBbcmVnaW9uXTtcblxuICAgIGlmICghYWRvdExheWVyQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBRE9UIExhbWJkYSBMYXllciBub3QgYXZhaWxhYmxlIGluIHJlZ2lvbiAke3JlZ2lvbn0uIGAgK1xuICAgICAgICBgU3VwcG9ydGVkIHJlZ2lvbnM6ICR7T2JqZWN0LmtleXMoYWRvdExheWVyQXJuTWFwKS5qb2luKCcsICcpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBMYXllclZlcnNpb24uZnJvbUxheWVyVmVyc2lvbkFybih0aGlzLCAnQWRvdExheWVyJywgYWRvdExheWVyQXJuKTtcbiAgfVxufSJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvYWdlbnRzL2Jhc2UtYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFFdEMsNkNBQXNFO0FBQ3RFLGlEQUE4RjtBQUM5RixpREFBMEM7QUFDMUMsdURBQThGO0FBRTlGLDJDQUF1QztBQUN2QywrQ0FBaUs7QUFDakssd0NBQWtFO0FBRWxFLCtDQUEyQztBQUlsQywyRkFKQSx3QkFBVSxPQUlBO0FBd0puQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBUzs7SUFNL0IsWUFBWSxDQUFxQjtJQUNqQyxTQUFTLENBQU87SUFDaEIsYUFBYSxDQUFNO0lBQ25DLDhDQUE4QztJQUMzQixzQkFBc0IsQ0FBOEI7SUFDcEQsNkJBQTZCLENBQWlDO0lBQ2pGOzs7Ozs7T0FNRztJQUNnQixvQkFBb0IsQ0FBK0I7SUFDdEU7Ozs7O09BS0c7SUFDZ0Isc0JBQXNCLENBQVM7SUFDbEQ7Ozs7OztPQU1HO0lBQ2dCLG1CQUFtQixDQUFpQjtJQUV2RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQzlFLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksMkJBQWEsQ0FBQyxPQUFPO1NBQzVELENBQUMsQ0FBQztRQUdILE1BQU0sY0FBYyxHQUFtQyxFQUFFLENB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LElBQUk7Z0JBQ3ZELHNCQUFzQixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNoRSxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8seUJBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNFLENBQUM7O0FBL09ILDhCQWdQQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgUHJvcGVydHlJbmplY3RvcnMsIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUG9saWN5RG9jdW1lbnQsIFBvbGljeVN0YXRlbWVudCwgUm9sZSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUsIElGdW5jdGlvbiwgSUxheWVyVmVyc2lvbiwgTGF5ZXJWZXJzaW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBBc3NldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBMYW1iZGFJYW1VdGlscywgTGFtYmRhT2JzZXJ2YWJpbGl0eVByb3BlcnR5SW5qZWN0b3IsIExvZ0dyb3VwRGF0YVByb3RlY3Rpb25Qcm9wcywgTG9nR3JvdXBEYXRhUHJvdGVjdGlvblV0aWxzLCBPYnNlcnZhYmxlUHJvcHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgQmVkcm9ja01vZGVsUHJvcHMsIEJlZHJvY2tNb2RlbFV0aWxzIH0gZnJvbSAnLi4vYmVkcm9jayc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vZm91bmRhdGlvbic7XG5pbXBvcnQgeyBJbnZva2VUeXBlIH0gZnJvbSAnLi9pbnZva2UtdHlwZSc7XG5pbXBvcnQgeyBJS25vd2xlZGdlQmFzZSwgS25vd2xlZGdlQmFzZVJ1bnRpbWVDb25maWcgfSBmcm9tICcuL2tub3dsZWRnZS1iYXNlJztcblxuLy8gUmUtZXhwb3J0IEludm9rZVR5cGUgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBJbnZva2VUeXBlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzRmlsZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNaaXBBcmNoaXZlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgdGhhdCBpbmZsdWVuY2VzIHRoZSBiZWhhdmlvciBvZiB0aGUgYWdlbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudERlZmluaXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBCZWRyb2NrIE1vZGVsIHRvIGJlIHVzZWRcbiAgICAgKi9cbiAgcmVhZG9ubHkgYmVkcm9ja01vZGVsOiBCZWRyb2NrTW9kZWxQcm9wcztcblxuICAvKipcbiAgICAgKiBUaGUgc3lzdGVtIHByb21wdCBvZiB0aGUgYWdlbnRcbiAgICAgKlxuICAgICAqL1xuICByZWFkb25seSBzeXN0ZW1Qcm9tcHQ6IEFzc2V0O1xuXG4gIC8qKlxuICAgICAqIExpc3Qgb2YgdG9vbHMgZGVmaW5lZCBpbiBweXRob24gZmlsZXMuIFRoaXMgdG9vbHMgd291bGQgYXV0b21hdGljYWxseVxuICAgICAqIGJlIGxvYWRlZCBieSB0aGUgYWdlbnQuIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyB0byBpbmNvcnBvcmF0ZSBvdGhlciBzcGVjaWFsaXplZFxuICAgICAqIGFnZW50cyBhcyB0b29scy5cbiAgICAgKi9cbiAgcmVhZG9ubHkgdG9vbHM/OiBBc3NldFtdO1xuXG4gIC8qKlxuICAgICAqIEFueSBkZXBlbmRlbmNpZXMgbmVlZGVkIGJ5IHRoZSBwcm92aWRlZCB0b29sc1xuICAgICAqL1xuICByZWFkb25seSBsYW1iZGFMYXllcnM/OiBMYXllclZlcnNpb25bXTtcblxuICAvKipcbiAgICAgKiBJZiB0b29scyBuZWVkIGFkZGl0aW9uYWwgSUFNIHBlcm1pc3Npb25zLCB0aGVzZSBzdGF0ZW1lbnRzXG4gICAgICogd291bGQgYmUgYXR0YWNoZWQgdG8gdGhlIEFnZW50J3MgSUFNIHJvbGVcbiAgICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFBvbGljeVN0YXRlbWVudHNGb3JUb29scz86IFBvbGljeVN0YXRlbWVudFtdO1xuXG4gIC8qKlxuICAgKiBLbm93bGVkZ2UgYmFzZXMgYXZhaWxhYmxlIHRvIHRoZSBhZ2VudCBmb3IgUmV0cmlldmFsLUF1Z21lbnRlZCBHZW5lcmF0aW9uIChSQUcpLlxuICAgKlxuICAgKiBXaGVuIGNvbmZpZ3VyZWQsIHRoZSBhZ2VudCB3aWxsIGhhdmUgYWNjZXNzIHRvIGEgYnVpbHQtaW4gcmV0cmlldmFsIHRvb2xcbiAgICogdGhhdCBjYW4gcXVlcnkgdGhlc2Uga25vd2xlZGdlIGJhc2VzLiBUaGUgYWdlbnQncyBzeXN0ZW0gcHJvbXB0IHdpbGwgYmVcbiAgICogYXV0b21hdGljYWxseSBhdWdtZW50ZWQgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhdmFpbGFibGUga25vd2xlZGdlIGJhc2VzLlxuICAgKlxuICAgKiBFYWNoIGtub3dsZWRnZSBiYXNlIG11c3QgaW1wbGVtZW50IHRoZSBJS25vd2xlZGdlQmFzZSBpbnRlcmZhY2UsIHdoaWNoXG4gICAqIGhhbmRsZXMgSUFNIHBlcm1pc3Npb24gZ2VuZXJhdGlvbiBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGtub3dsZWRnZSBiYXNlcyBjb25maWd1cmVkXG4gICAqL1xuICByZWFkb25seSBrbm93bGVkZ2VCYXNlcz86IElLbm93bGVkZ2VCYXNlW107XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgSUFNIHBvbGljeSBzdGF0ZW1lbnRzIGZvciBrbm93bGVkZ2UgYmFzZSBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSB0aGlzIHdoZW4ga25vd2xlZGdlIGJhc2VzIHJlcXVpcmUgcGVybWlzc2lvbnMgYmV5b25kIHdoYXQgaXNcbiAgICogYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIElLbm93bGVkZ2VCYXNlIGltcGxlbWVudGF0aW9ucy5cbiAgICogVGhlc2Ugc3RhdGVtZW50cyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhZ2VudCdzIElBTSByb2xlIGluIGFkZGl0aW9uXG4gICAqIHRvIHRoZSBhdXRvLWdlbmVyYXRlZCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IGF1dG8tZ2VuZXJhdGVkIHBlcm1pc3Npb25zIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0Zvcktub3dsZWRnZUJhc2VzPzogUG9saWN5U3RhdGVtZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUFnZW50UHJvcHMgZXh0ZW5kcyBPYnNlcnZhYmxlUHJvcHMge1xuXG4gIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGFnZW50XG4gICAgICovXG4gIHJlYWRvbmx5IGFnZW50TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHNlcnZpY2UgcHJpbmNpcGFsIGZvciB0aGUgYWdlbnQgcm9sZSdzIHRydXN0IHBvbGljeS5cbiAgICpcbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgc2V0IGJ5IHRoZSBob3N0aW5nIGFkYXB0ZXIgKGUuZy4sIGBsYW1iZGEuYW1hem9uYXdzLmNvbWBcbiAgICogZm9yIExhbWJkYSBob3N0aW5nLCBgYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbWAgZm9yIEFnZW50Q29yZSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJylcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VQcmluY2lwYWw/OiBTZXJ2aWNlUHJpbmNpcGFsO1xuXG4gIC8qKlxuICAgICAqIEFnZW50IHJlbGF0ZWQgcGFyYW1ldGVyc1xuICAgICAqL1xuICByZWFkb25seSBhZ2VudERlZmluaXRpb246IEFnZW50RGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb2JzZXJ2YWJpbGl0eSBmb3IgdGhlIGFnZW50XG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgY29uZmlndXJlcyBib3RoIExhbWJkYSBQb3dlcnRvb2xzIGFuZCBBV1MgQmVkcm9jayBBZ2VudENvcmUgb2JzZXJ2YWJpbGl0eTpcbiAgICogLSAqKkxhbWJkYSBQb3dlcnRvb2xzKio6IFByb3ZpZGVzIGZ1bmN0aW9uLWxldmVsIG9ic2VydmFiaWxpdHkgaW5jbHVkaW5nIHN0cnVjdHVyZWQgbG9nZ2luZyxcbiAgICogICBkaXN0cmlidXRlZCB0cmFjaW5nIHdpdGggWC1SYXksIGFuZCBjdXN0b20gbWV0cmljc1xuICAgKiAtICoqQWdlbnRDb3JlIE9ic2VydmFiaWxpdHkqKjogUHJvdmlkZXMgYWdlbnQtc3BlY2lmaWMgb2JzZXJ2YWJpbGl0eSBpbmNsdWRpbmcgYWdlbnQgaW52b2NhdGlvbnMsXG4gICAqICAgcmVhc29uaW5nIHN0ZXBzLCB0b29sIHVzYWdlLCB0b2tlbiBjb25zdW1wdGlvbiwgYW5kIGFnZW50IGxhdGVuY3lcbiAgICpcbiAgICogQm90aCBzeXN0ZW1zIHB1Ymxpc2ggdG8gQW1hem9uIENsb3VkV2F0Y2ggYW5kIHVzZSB0aGUgc2FtZSBzZXJ2aWNlIG5hbWUgYW5kIG5hbWVzcGFjZVxuICAgKiBmb3IgY29ycmVsYXRpb24uIFRoaXMgcHJvdmlkZXMgY29tcGxldGUgdmlzaWJpbGl0eSBhdCBib3RoIGZ1bmN0aW9uIGFuZCBhZ2VudCBsZXZlbHMuXG4gICAqXG4gICAqICoqRW52aXJvbm1lbnQgVmFyaWFibGVzIFNldCoqIChBZ2VudENvcmUpOlxuICAgKiAtIGBBR0VOVF9PQlNFUlZBQklMSVRZX0VOQUJMRURgOiBFbmFibGVzIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5XG4gICAqIC0gYE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFU2A6IFNlcnZpY2UgaWRlbnRpZmljYXRpb24gZm9yIE9wZW5UZWxlbWV0cnlcbiAgICogLSBgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfSEVBREVSU2A6IEFnZW50IGlkZW50aWZpY2F0aW9uIGhlYWRlcnNcbiAgICogLSBgQVdTX0xBTUJEQV9FWEVDX1dSQVBQRVJgOiBBRE9UIHdyYXBwZXIgZm9yIGF1dG9tYXRpYyBpbnN0cnVtZW50YXRpb25cbiAgICpcbiAgICogKipJQU0gUGVybWlzc2lvbnMgR3JhbnRlZCoqIChBZ2VudENvcmUpOlxuICAgKiAtIENsb3VkV2F0Y2ggTG9nczogYGxvZ3M6Q3JlYXRlTG9nR3JvdXBgLCBgbG9nczpDcmVhdGVMb2dTdHJlYW1gLCBgbG9nczpQdXRMb2dFdmVudHNgXG4gICAqIC0gWC1SYXk6IGB4cmF5OlB1dFRyYWNlU2VnbWVudHNgLCBgeHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzYFxuICAgKlxuICAgKiAqKkFkZGl0aW9uYWwgUmVxdWlyZW1lbnRzKio6XG4gICAqIC0gQmF0Y2hBZ2VudCBhdXRvbWF0aWNhbGx5IGFkZHMgQURPVCAoQVdTIERpc3RybyBmb3IgT3BlblRlbGVtZXRyeSkgTGFtYmRhIExheWVyXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9vYnNlcnZhYmlsaXR5LWNvbmZpZ3VyZS5odG1sXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVPYnNlcnZhYmlsaXR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICAgKiBJZiB0aGUgQWdlbnQgd291bGQgYmUgcnVubmluZyBpbnNpZGUgYSBWUENcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IEFnZW50IHdvdWxkIG5vdCBiZSBpbiBhIFZQQ1xuICAgICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29yaztcblxuICAvKipcbiAgICAgKiBFbmNyeXB0aW9uIGtleSB0byBlbmNyeXB0IGFnZW50IGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgbmV3IEtNUyBLZXkgd291bGQgYmUgY3JlYXRlZFxuICAgICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5PzogS2V5O1xuXG4gIC8qKlxuICAgICAqIFJlbW92YWwgcG9saWN5IGZvciByZXNvdXJjZXMgY3JlYXRlZCBieSB0aGlzXG4gICAgICogY29uc3RydWN0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXRlY3R1cmUgdXNlZCBieSB0aGUgTGFtYmRhIGZ1bmN0aW9uIHdoZXJlIHRoZVxuICAgKiBhZ2VudCBpcyBob3N0ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgQXJjaGl0ZWN0dXJlLkFSTV82NFxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRBcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmU7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIGFnZW50IHR5cGVzIGluIHRoZSBmcmFtZXdvcmtcbiAqXG4gKiBQcm92aWRlcyBjb21tb24gaW5mcmFzdHJ1Y3R1cmUgZm9yIEFJIGFnZW50cyBpbmNsdWRpbmc6XG4gKiAtIElBTSByb2xlIGFuZCBwZXJtaXNzaW9ucyBtYW5hZ2VtZW50XG4gKiAtIEVuY3J5cHRpb24ga2V5IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAqIC0gVG9vbCBpbnRlZ3JhdGlvbiBhbmQgUzMgYXNzZXQgbWFuYWdlbWVudFxuICogLSBLbm93bGVkZ2UgYmFzZSBpbnRlZ3JhdGlvbiBmb3IgUkFHIChSZXRyaWV2YWwtQXVnbWVudGVkIEdlbmVyYXRpb24pXG4gKiAtIE9ic2VydmFiaWxpdHkgY29uZmlndXJhdGlvbiAoTGFtYmRhIFBvd2VydG9vbHMgKyBBZ2VudENvcmUpXG4gKlxuICogU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGUgYWdlbnQtc3BlY2lmaWMgTGFtYmRhIGZ1bmN0aW9uIGNyZWF0aW9uLlxuICpcbiAqICoqT2JzZXJ2YWJpbGl0eSoqOiBXaGVuIGBlbmFibGVPYnNlcnZhYmlsaXR5OiB0cnVlYCwgQmFzZUFnZW50IGNvbmZpZ3VyZXMgYm90aFxuICogTGFtYmRhIFBvd2VydG9vbHMgKGZ1bmN0aW9uLWxldmVsKSBhbmQgQVdTIEJlZHJvY2sgQWdlbnRDb3JlIChhZ2VudC1sZXZlbClcbiAqIG9ic2VydmFiaWxpdHkuIEJvdGggc3lzdGVtcyB3b3JrIHRvZ2V0aGVyIHRvIHByb3ZpZGUgY29tcGxldGUgdmlzaWJpbGl0eTpcbiAqIC0gTGFtYmRhIFBvd2VydG9vbHMgY2FwdHVyZXMgZnVuY3Rpb24gZXhlY3V0aW9uLCBsb2dzLCBhbmQgY3VzdG9tIG1ldHJpY3NcbiAqIC0gQWdlbnRDb3JlIGNhcHR1cmVzIGFnZW50IHJlYXNvbmluZywgdG9vbCB1c2FnZSwgYW5kIHRva2VuIGNvbnN1bXB0aW9uXG4gKiAtIEJvdGggcHVibGlzaCB0byBDbG91ZFdhdGNoIHdpdGggY29ycmVsYXRlZCBzZXJ2aWNlIG5hbWVzIGZvciB1bmlmaWVkIG1vbml0b3JpbmdcbiAqXG4gKiBUaGUgb2JzZXJ2YWJpbGl0eSBpbnRlZ3JhdGlvbiBpbmNsdWRlczpcbiAqIC0gQXV0b21hdGljIElBTSBwZXJtaXNzaW9uIGdyYW50cyBmb3IgQ2xvdWRXYXRjaCBMb2dzIGFuZCBYLVJheVxuICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBjb25maWd1cmF0aW9uIGZvciBPcGVuVGVsZW1ldHJ5XG4gKiAtIEFET1QgTGFtYmRhIExheWVyIGF0dGFjaG1lbnQgKGhhbmRsZWQgYnkgY29uY3JldGUgaW1wbGVtZW50YXRpb25zKVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9vYnNlcnZhYmlsaXR5LWNvbmZpZ3VyZS5odG1sXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQWdlbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiBmb3IgdGhlIGFnZW50ICh3aGVuIHVzaW5nIExhbWJkYSBob3N0aW5nKS5cbiAgICogTWF5IGJlIHVuZGVmaW5lZCBmb3Igbm9uLUxhbWJkYSBob3N0aW5nIGJhY2tlbmRzIChlLmcuIEFnZW50Q29yZSBSdW50aW1lKS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhZ2VudEZ1bmN0aW9uPzogSUZ1bmN0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgYmVkcm9ja01vZGVsPzogQmVkcm9ja01vZGVsUHJvcHM7XG4gIHB1YmxpYyByZWFkb25seSBhZ2VudFJvbGU6IFJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5OiBLZXk7XG4gIC8qKiBsb2cgZ3JvdXAgZGF0YSBwcm90ZWN0aW9uIGNvbmZpZ3VyYXRpb24gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ0dyb3VwRGF0YVByb3RlY3Rpb246IExvZ0dyb3VwRGF0YVByb3RlY3Rpb25Qcm9wcztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFnZW50VG9vbHNMb2NhdGlvbkRlZmluaXRpb25zOiBBZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBLbm93bGVkZ2UgYmFzZSBjb25maWd1cmF0aW9ucyBmb3IgcnVudGltZSB1c2UuXG4gICAqXG4gICAqIFRoaXMgYXJyYXkgY29udGFpbnMgdGhlIGV4cG9ydGVkIGNvbmZpZ3VyYXRpb25zIGZyb20gYWxsIGNvbmZpZ3VyZWRcbiAgICoga25vd2xlZGdlIGJhc2VzLiBTdWJjbGFzc2VzIHVzZSB0aGlzIHRvIHNldCB0aGUgS05PV0xFREdFX0JBU0VTX0NPTkZJR1xuICAgKiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvbiB0aGUgYWdlbnQgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGtub3dsZWRnZUJhc2VDb25maWdzOiBLbm93bGVkZ2VCYXNlUnVudGltZUNvbmZpZ1tdO1xuICAvKipcbiAgICogQXNzZXQgY29udGFpbmluZyB0aGUga25vd2xlZGdlIGJhc2UgcmV0cmlldmFsIHRvb2wuXG4gICAqXG4gICAqIFRoaXMgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4ga25vd2xlZGdlIGJhc2VzIGFyZSBjb25maWd1cmVkLlxuICAgKiBUaGUgYXNzZXQgaXMgYWRkZWQgdG8gdGhlIGFnZW50J3MgdG9vbHMgYW5kIGdyYW50ZWQgcmVhZCBhY2Nlc3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga25vd2xlZGdlQmFzZVRvb2xBc3NldD86IEFzc2V0O1xuICAvKipcbiAgICogTGFtYmRhIGxheWVycyByZXF1aXJlZCBieSBrbm93bGVkZ2UgYmFzZSByZXRyaWV2YWwgdG9vbHMuXG4gICAqXG4gICAqIFRoaXMgYXJyYXkgY29udGFpbnMgTGFtYmRhIGxheWVycyBmcm9tIGFsbCBjb25maWd1cmVkIGtub3dsZWRnZSBiYXNlcy5cbiAgICogU3ViY2xhc3NlcyBzaG91bGQgYWRkIHRoZXNlIGxheWVycyB0byB0aGUgYWdlbnQgTGFtYmRhIGZ1bmN0aW9uIHRvXG4gICAqIGVuc3VyZSByZXRyaWV2YWwgdG9vbHMgaGF2ZSBhY2Nlc3MgdG8gcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGtub3dsZWRnZUJhc2VMYXllcnM6IExheWVyVmVyc2lvbltdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCYXNlQWdlbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5iZWRyb2NrTW9kZWwgPSBwcm9wcy5hZ2VudERlZmluaXRpb24uYmVkcm9ja01vZGVsO1xuICAgIHRoaXMuZW5jcnlwdGlvbktleSA9IHByb3BzLmVuY3J5cHRpb25LZXkgfHwgbmV3IEtleSh0aGlzLCAnQWdlbnRFbmNyeXB0aW9uS2V5Jywge1xuICAgICAgZW5hYmxlS2V5Um90YXRpb246IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuXG4gICAgY29uc3QgaW5saW5lUG9saWNpZXM6IFJlY29yZDxzdHJpbmcsIFBvbGljeURvY3VtZW50PiA9IHt9O1xuXG4gICAgaWYgKHByb3BzLmFnZW50RGVmaW5pdGlvbi5hZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0ZvclRvb2xzICYmIHByb3BzLmFnZW50RGVmaW5pdGlvbi5hZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0ZvclRvb2xzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlubGluZVBvbGljaWVzLlRvb2xQZXJtaXNzaW9ucyA9IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgIHN0YXRlbWVudHM6IHByb3BzLmFnZW50RGVmaW5pdGlvbi5hZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0ZvclRvb2xzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgSUFNIHBlcm1pc3Npb25zIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgY29uc3Qga25vd2xlZGdlQmFzZXMgPSBwcm9wcy5hZ2VudERlZmluaXRpb24ua25vd2xlZGdlQmFzZXMgPz8gW107XG4gICAgY29uc3Qga2JQb2xpY3lTdGF0ZW1lbnRzOiBQb2xpY3lTdGF0ZW1lbnRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBrYiBvZiBrbm93bGVkZ2VCYXNlcykge1xuICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBrYi5nZW5lcmF0ZUlhbVBlcm1pc3Npb25zKCk7XG4gICAgICBrYlBvbGljeVN0YXRlbWVudHMucHVzaCguLi5wZXJtaXNzaW9ucyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgS0IgcG9saWN5IHN0YXRlbWVudHMgaWYgcHJvdmlkZWRcbiAgICBpZiAocHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXMpIHtcbiAgICAgIGtiUG9saWN5U3RhdGVtZW50cy5wdXNoKC4uLnByb3BzLmFnZW50RGVmaW5pdGlvbi5hZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0Zvcktub3dsZWRnZUJhc2VzKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgS0IgcGVybWlzc2lvbnMgYXMgaW5saW5lIHBvbGljeSBpZiBhbnkgZXhpc3RcbiAgICBpZiAoa2JQb2xpY3lTdGF0ZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlubGluZVBvbGljaWVzLktub3dsZWRnZUJhc2VQZXJtaXNzaW9ucyA9IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgIHN0YXRlbWVudHM6IGtiUG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYWdlbnRSb2xlID0gbmV3IFJvbGUodGhpcywgYEFnZW50LSR7cHJvcHMuYWdlbnROYW1lfS1Sb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsIHx8IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXMsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMubmV0d29yaykge1xuICAgICAgdGhpcy5hZ2VudFJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFnZW50VG9vbHNMb2NhdGlvbkRlZmluaXRpb25zID0gW107XG5cbiAgICBpZiAocHJvcHMuYWdlbnREZWZpbml0aW9uLnRvb2xzKSB7XG4gICAgICBmb3IgKGNvbnN0IHRvb2wgb2YgcHJvcHMuYWdlbnREZWZpbml0aW9uLnRvb2xzKSB7XG4gICAgICAgIHRvb2wuZ3JhbnRSZWFkKHRoaXMuYWdlbnRSb2xlKTtcblxuICAgICAgICB0aGlzLmFnZW50VG9vbHNMb2NhdGlvbkRlZmluaXRpb25zLnB1c2goe1xuICAgICAgICAgIGJ1Y2tldE5hbWU6IHRvb2wuczNCdWNrZXROYW1lLFxuICAgICAgICAgIGtleTogdG9vbC5zM09iamVjdEtleSxcbiAgICAgICAgICBpc0ZpbGU6IHRvb2wuaXNGaWxlLFxuICAgICAgICAgIGlzWmlwQXJjaGl2ZTogdG9vbC5pc1ppcEFyY2hpdmUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN0b3JlIGtub3dsZWRnZSBiYXNlIGNvbmZpZ3VyYXRpb25zIGZvciBzdWJjbGFzcyBhY2Nlc3NcbiAgICB0aGlzLmtub3dsZWRnZUJhc2VDb25maWdzID0ga25vd2xlZGdlQmFzZXMubWFwKGtiID0+IGtiLmV4cG9ydENvbmZpZ3VyYXRpb24oKSk7XG5cbiAgICAvLyBJbml0aWFsaXplIGtub3dsZWRnZSBiYXNlIGxheWVycyBhcnJheVxuICAgIHRoaXMua25vd2xlZGdlQmFzZUxheWVycyA9IFtdO1xuXG4gICAgLy8gR2V0IHJldHJpZXZhbCB0b29sIGFzc2V0cyBmcm9tIGtub3dsZWRnZSBiYXNlc1xuICAgIC8vIEVhY2ggS0IgdHlwZSBwcm92aWRlcyBpdHMgb3duIHJldHJpZXZhbCB0b29sIGltcGxlbWVudGF0aW9uXG4gICAgaWYgKGtub3dsZWRnZUJhc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENvbGxlY3QgdW5pcXVlIHJldHJpZXZhbCB0b29sIGFzc2V0cyBmcm9tIGtub3dsZWRnZSBiYXNlc1xuICAgICAgLy8gVXNlIGEgTWFwIHRvIGRlZHVwbGljYXRlIGJ5IGFzc2V0IHBhdGggKHNhbWUgS0IgdHlwZSA9IHNhbWUgdG9vbClcbiAgICAgIGNvbnN0IHRvb2xBc3NldE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBc3NldD4oKTtcblxuICAgICAgZm9yIChjb25zdCBrYiBvZiBrbm93bGVkZ2VCYXNlcykge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgS0IgcHJvdmlkZXMgYSByZXRyaWV2YWwgdG9vbFxuICAgICAgICBpZiAoa2IucmV0cmlldmFsVG9vbEFzc2V0KSB7XG4gICAgICAgICAgY29uc3QgdG9vbEFzc2V0ID0ga2IucmV0cmlldmFsVG9vbEFzc2V0KCk7XG4gICAgICAgICAgaWYgKHRvb2xBc3NldCkge1xuICAgICAgICAgICAgLy8gVXNlIHRoZSBTMyBvYmplY3Qga2V5IGFzIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGRlZHVwbGljYXRpb25cbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRvb2xBc3NldC5zM09iamVjdEtleTtcbiAgICAgICAgICAgIGlmICghdG9vbEFzc2V0TWFwLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgIHRvb2xBc3NldE1hcC5zZXQoa2V5LCB0b29sQXNzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbGxlY3QgTGFtYmRhIGxheWVycyBmcm9tIGtub3dsZWRnZSBiYXNlc1xuICAgICAgICBpZiAoa2IucmV0cmlldmFsVG9vbExheWVycykge1xuICAgICAgICAgIGNvbnN0IGxheWVycyA9IGtiLnJldHJpZXZhbFRvb2xMYXllcnMoKTtcbiAgICAgICAgICBpZiAobGF5ZXJzICYmIGxheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmtub3dsZWRnZUJhc2VMYXllcnMucHVzaCguLi5sYXllcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgZWFjaCB1bmlxdWUgcmV0cmlldmFsIHRvb2wgdG8gdGhlIGFnZW50XG4gICAgICBmb3IgKGNvbnN0IGFzc2V0IG9mIHRvb2xBc3NldE1hcC52YWx1ZXMoKSkge1xuICAgICAgICAvLyBTdG9yZSB0aGUgZmlyc3QgdG9vbCBhc3NldCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoIXRoaXMua25vd2xlZGdlQmFzZVRvb2xBc3NldCkge1xuICAgICAgICAgIHRoaXMua25vd2xlZGdlQmFzZVRvb2xBc3NldCA9IGFzc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gdGhlIHJldHJpZXZhbCB0b29sIGFzc2V0XG4gICAgICAgIGFzc2V0LmdyYW50UmVhZCh0aGlzLmFnZW50Um9sZSk7XG5cbiAgICAgICAgLy8gQWRkIHJldHJpZXZhbCB0b29sIHRvIGFnZW50IHRvb2xzIGxvY2F0aW9uIGRlZmluaXRpb25zXG4gICAgICAgIHRoaXMuYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnMucHVzaCh7XG4gICAgICAgICAgYnVja2V0TmFtZTogYXNzZXQuczNCdWNrZXROYW1lLFxuICAgICAgICAgIGtleTogYXNzZXQuczNPYmplY3RLZXksXG4gICAgICAgICAgaXNGaWxlOiBhc3NldC5pc0ZpbGUsXG4gICAgICAgICAgaXNaaXBBcmNoaXZlOiBhc3NldC5pc1ppcEFyY2hpdmUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYWdlbnRSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KEJlZHJvY2tNb2RlbFV0aWxzLmdlbmVyYXRlTW9kZWxJQU1QZXJtaXNzaW9ucyh0aGlzLCB0aGlzLmJlZHJvY2tNb2RlbCkpO1xuICAgIHRoaXMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiA9IExvZ0dyb3VwRGF0YVByb3RlY3Rpb25VdGlscy5oYW5kbGVEZWZhdWx0KHRoaXMsIHByb3BzLmxvZ0dyb3VwRGF0YVByb3RlY3Rpb24sIHByb3BzLnJlbW92YWxQb2xpY3kpO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHkpIHtcbiAgICAgIFByb3BlcnR5SW5qZWN0b3JzLm9mKHRoaXMpLmFkZChcbiAgICAgICAgbmV3IExhbWJkYU9ic2VydmFiaWxpdHlQcm9wZXJ0eUluamVjdG9yKHRoaXMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiksXG4gICAgICApO1xuXG4gICAgICAvLyBBZGQgSUFNIHBlcm1pc3Npb25zIGZvciBBZ2VudENvcmUgb2JzZXJ2YWJpbGl0eVxuICAgICAgdGhpcy5hZ2VudFJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG4gICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgICAgICd4cmF5OlB1dFRyYWNlU2VnbWVudHMnLFxuICAgICAgICAgICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLCAvLyBDbG91ZFdhdGNoIExvZ3MgYW5kIFgtUmF5IHJlcXVpcmUgd2lsZGNhcmQgcmVzb3VyY2VzXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIEFXUyBEaXN0cm8gZm9yIE9wZW5UZWxlbWV0cnkgKEFET1QpIExhbWJkYSBMYXllci5cbiAgICpcbiAgICogVGhlIEFET1QgbGF5ZXIgcHJvdmlkZXMgYXV0b21hdGljIGluc3RydW1lbnRhdGlvbiBmb3Igb2JzZXJ2YWJpbGl0eS5cbiAgICogTGF5ZXIgdmVyc2lvbnMgdmFyeSBieSByZWdpb24gLSBzb21lIHJlZ2lvbnMgaGF2ZSBuZXdlciB2ZXJzaW9ucyB3aXRoXG4gICAqIGJldHRlciBQeXRob24gMy4xMyBzdXBwb3J0LiBJZiB5b3UgZW5jb3VudGVyIGNvbXBhdGliaWxpdHkgaXNzdWVzLFxuICAgKiB0aGUgbGF5ZXIgQVJOcyBjYW4gYmUgZm91bmQgYXQ6XG4gICAqIGh0dHBzOi8vYXdzLW90ZWwuZ2l0aHViLmlvL2RvY3MvZ2V0dGluZy1zdGFydGVkL2xhbWJkYSNhZG90LWxhbWJkYS1sYXllci1hcm5zXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBBRE9UIExhbWJkYSBMYXllciBmb3IgdGhlIGN1cnJlbnQgcmVnaW9uXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHJlZ2lvbiBpcyBub3Qgc3VwcG9ydGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQURPVExheWVyKCk6IElMYXllclZlcnNpb24ge1xuICAgIGNvbnN0IHsgcmVnaW9uIH0gPSBTdGFjay5vZih0aGlzKTtcblxuICAgIC8vIEFXUyBEaXN0cm8gZm9yIE9wZW5UZWxlbWV0cnkgKEFET1QpIExhbWJkYSBMYXllciBBUk5zIGJ5IHJlZ2lvblxuICAgIC8vIFNvdXJjZTogaHR0cHM6Ly9hd3Mtb3RlbC5naXRodWIuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvbGFtYmRhI2Fkb3QtbGFtYmRhLWxheWVyLWFybnNcbiAgICBjb25zdCBhZG90TGF5ZXJBcm5NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnYWYtc291dGgtMSc6ICdhcm46YXdzOmxhbWJkYTphZi1zb3V0aC0xOjkwNDIzMzA5NjYxNjpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdhcC1lYXN0LTEnOiAnYXJuOmF3czpsYW1iZGE6YXAtZWFzdC0xOjg4ODU3NzAyMDU5NjpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTphcC1ub3J0aGVhc3QtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnYXAtbm9ydGhlYXN0LTInOiAnYXJuOmF3czpsYW1iZGE6YXAtbm9ydGhlYXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2FwLW5vcnRoZWFzdC0zJzogJ2Fybjphd3M6bGFtYmRhOmFwLW5vcnRoZWFzdC0zOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE5JyxcbiAgICAgICdhcC1zb3V0aC0xJzogJ2Fybjphd3M6bGFtYmRhOmFwLXNvdXRoLTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2FwLXNvdXRoLTInOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGgtMjo3OTY5NzM1MDU0OTI6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnYXAtc291dGhlYXN0LTEnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTknLFxuICAgICAgJ2FwLXNvdXRoZWFzdC0yJzogJ2Fybjphd3M6bGFtYmRhOmFwLXNvdXRoZWFzdC0yOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMyc6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aGVhc3QtMzowMzk2MTI4NzcxODA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnYXAtc291dGhlYXN0LTQnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTQ6NzEzODgxODA1NzcxOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2FwLXNvdXRoZWFzdC01JzogJ2Fybjphd3M6bGFtYmRhOmFwLXNvdXRoZWFzdC01OjE1MjAzNDc4MjM1OTpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjgnLFxuICAgICAgJ2FwLXNvdXRoZWFzdC03JzogJ2Fybjphd3M6bGFtYmRhOmFwLXNvdXRoZWFzdC03Ojk4MDQxNjAzMTE4ODpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjgnLFxuICAgICAgJ2NhLWNlbnRyYWwtMSc6ICdhcm46YXdzOmxhbWJkYTpjYS1jZW50cmFsLTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2NhLXdlc3QtMSc6ICdhcm46YXdzOmxhbWJkYTpjYS13ZXN0LTE6NTk1OTQ0MTI3MTUyOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnY24tbm9ydGgtMSc6ICdhcm46YXdzLWNuOmxhbWJkYTpjbi1ub3J0aC0xOjQ0MDE3OTkxMjkyNDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjgnLFxuICAgICAgJ2NuLW5vcnRod2VzdC0xJzogJ2Fybjphd3MtY246bGFtYmRhOmNuLW5vcnRod2VzdC0xOjQ0MDE4MDA2NzkzMTpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjgnLFxuICAgICAgJ2V1LWNlbnRyYWwtMSc6ICdhcm46YXdzOmxhbWJkYTpldS1jZW50cmFsLTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2V1LWNlbnRyYWwtMic6ICdhcm46YXdzOmxhbWJkYTpldS1jZW50cmFsLTI6MTU2MDQxNDA3OTU2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2V1LW5vcnRoLTEnOiAnYXJuOmF3czpsYW1iZGE6ZXUtbm9ydGgtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtc291dGgtMSc6ICdhcm46YXdzOmxhbWJkYTpldS1zb3V0aC0xOjI1NzM5NDQ3MTE5NDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdldS1zb3V0aC0yJzogJ2Fybjphd3M6bGFtYmRhOmV1LXNvdXRoLTI6NDkwMDA0NjUzNzg2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2V1LXdlc3QtMSc6ICdhcm46YXdzOmxhbWJkYTpldS13ZXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2V1LXdlc3QtMic6ICdhcm46YXdzOmxhbWJkYTpldS13ZXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2V1LXdlc3QtMyc6ICdhcm46YXdzOmxhbWJkYTpldS13ZXN0LTM6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2lsLWNlbnRyYWwtMSc6ICdhcm46YXdzOmxhbWJkYTppbC1jZW50cmFsLTE6NzQ2NjY5MjM5MjI2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ21lLWNlbnRyYWwtMSc6ICdhcm46YXdzOmxhbWJkYTptZS1jZW50cmFsLTE6NzM5Mjc1NDQxMTMxOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ21lLXNvdXRoLTEnOiAnYXJuOmF3czpsYW1iZGE6bWUtc291dGgtMTo5ODA5MjE3NTE3NTg6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnbXgtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOm14LWNlbnRyYWwtMTo2MTAxMTgzNzM4NDY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjo4JyxcbiAgICAgICdzYS1lYXN0LTEnOiAnYXJuOmF3czpsYW1iZGE6c2EtZWFzdC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICd1cy1lYXN0LTEnOiAnYXJuOmF3czpsYW1iZGE6dXMtZWFzdC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIzJyxcbiAgICAgICd1cy1lYXN0LTInOiAnYXJuOmF3czpsYW1iZGE6dXMtZWFzdC0yOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICd1cy13ZXN0LTEnOiAnYXJuOmF3czpsYW1iZGE6dXMtd2VzdC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjI3JyxcbiAgICAgICd1cy13ZXN0LTInOiAnYXJuOmF3czpsYW1iZGE6dXMtd2VzdC0yOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjI3JyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWRvdExheWVyQXJuID0gYWRvdExheWVyQXJuTWFwW3JlZ2lvbl07XG5cbiAgICBpZiAoIWFkb3RMYXllckFybikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQURPVCBMYW1iZGEgTGF5ZXIgbm90IGF2YWlsYWJsZSBpbiByZWdpb24gJHtyZWdpb259LiBgICtcbiAgICAgICAgYFN1cHBvcnRlZCByZWdpb25zOiAke09iamVjdC5rZXlzKGFkb3RMYXllckFybk1hcCkuam9pbignLCAnKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTGF5ZXJWZXJzaW9uLmZyb21MYXllclZlcnNpb25Bcm4odGhpcywgJ0Fkb3RMYXllcicsIGFkb3RMYXllckFybik7XG4gIH1cbn0iXX0=
|
|
@@ -1,12 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.BatchAgent = void 0;
|
|
5
37
|
exports.generateKnowledgeBaseSystemPromptAddition = generateKnowledgeBaseSystemPromptAddition;
|
|
6
38
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
39
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
8
40
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
|
-
const path = require("path");
|
|
41
|
+
const path = __importStar(require("path"));
|
|
10
42
|
const aws_lambda_python_alpha_1 = require("@aws-cdk/aws-lambda-python-alpha");
|
|
11
43
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
12
44
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
@@ -55,6 +87,8 @@ When a user asks a question that might be answered by information in these knowl
|
|
|
55
87
|
`;
|
|
56
88
|
}
|
|
57
89
|
class BatchAgent extends base_agent_1.BaseAgent {
|
|
90
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BatchAgent", version: "1.17.2" };
|
|
91
|
+
agentFunction;
|
|
58
92
|
constructor(scope, id, props) {
|
|
59
93
|
super(scope, id, props);
|
|
60
94
|
// Grant read access to system prompt S3 asset
|
|
@@ -133,6 +167,4 @@ class BatchAgent extends base_agent_1.BaseAgent {
|
|
|
133
167
|
}
|
|
134
168
|
}
|
|
135
169
|
exports.BatchAgent = BatchAgent;
|
|
136
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
137
|
-
BatchAgent[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BatchAgent", version: "1.17.0" };
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9iYXRjaC1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNENBLDhGQTJCQzs7QUF2RUQscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qyw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5QyxpREFBb0Q7QUFDcEQsdURBQWdGO0FBRWhGLDZDQUF5RDtBQUN6RCxpRUFBNEQ7QUFDNUQsK0NBQTJDO0FBRTNDLCtDQUErRjtBQUMvRix3Q0FBK0M7QUFDL0Msd0RBQXFEO0FBZ0JyRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFnQix5Q0FBeUMsQ0FDdkQsb0JBQWtEO0lBRWxELElBQUksb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLG9CQUFvQjtTQUNoQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWQsT0FBTzs7Ozs7Ozs7Ozs7O0VBWVAsTUFBTTs7O0NBR1AsQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLDhDQUE4QztRQUM5QyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sT0FBTyxHQUFHLDJCQUFpQixDQUFDLG1CQUFt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QUFJLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7QUFoR0gsZ0NBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUsIElGdW5jdGlvbiwgSUxheWVyVmVyc2lvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQWdlbnQsIEJhc2VBZ2VudFByb3BzIH0gZnJvbSAnLi9iYXNlLWFnZW50JztcbmltcG9ydCB7IERlZmF1bHRBZ2VudENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1hZ2VudC1jb25maWcnO1xuaW1wb3J0IHsgSW52b2tlVHlwZSB9IGZyb20gJy4vaW52b2tlLXR5cGUnO1xuaW1wb3J0IHsgS25vd2xlZGdlQmFzZVJ1bnRpbWVDb25maWcgfSBmcm9tICcuL2tub3dsZWRnZS1iYXNlJztcbmltcG9ydCB7IERlZmF1bHRPYnNlcnZhYmlsaXR5Q29uZmlnLCBMYW1iZGFJYW1VdGlscywgUG93ZXJ0b29sc0NvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCZWRyb2NrTW9kZWxVdGlscyB9IGZyb20gJy4uL2JlZHJvY2snO1xuaW1wb3J0IHsgRGVmYXVsdFJ1bnRpbWVzIH0gZnJvbSAnLi4vY3VzdG9tLXJlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXRjaEFnZW50UHJvcHMgZXh0ZW5kcyBCYXNlQWdlbnRQcm9wcyB7XG4gIHJlYWRvbmx5IHByb21wdDogc3RyaW5nO1xuICByZWFkb25seSBleHBlY3RKc29uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWdlbnQgaW52b2NhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBEZWZpbmVzIGhvdyB0aGUgYWdlbnQgaXMgaW52b2tlZCBhbmQgd2hhdCBwcm9jZXNzaW5nIG1vZGUgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBJbnZva2VUeXBlLkJBVENIXG4gICAqL1xuICByZWFkb25seSBpbnZva2VUeXBlPzogSW52b2tlVHlwZTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGtub3dsZWRnZSBiYXNlIGluZm9ybWF0aW9uIHRvIGFwcGVuZCB0byB0aGUgc3lzdGVtIHByb21wdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBmb3JtYXR0ZWQgc3RyaW5nIGNvbnRhaW5pbmc6XG4gKiAtIERlc2NyaXB0aW9uIG9mIHRoZSByZXRyaWV2YWwgdG9vbCBhbmQgaG93IHRvIHVzZSBpdFxuICogLSBMaXN0IG9mIGF2YWlsYWJsZSBrbm93bGVkZ2UgYmFzZXMgd2l0aCB0aGVpciBuYW1lcyBhbmQgZGVzY3JpcHRpb25zXG4gKlxuICogVGhlIGdlbmVyYXRlZCB0ZXh0IGhlbHBzIHRoZSBhZ2VudCB1bmRlcnN0YW5kIHdoZW4gYW5kIGhvdyB0byB1c2VcbiAqIHRoZSBrbm93bGVkZ2UgYmFzZSByZXRyaWV2YWwgY2FwYWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0ga25vd2xlZGdlQmFzZUNvbmZpZ3MgLSBBcnJheSBvZiBrbm93bGVkZ2UgYmFzZSBydW50aW1lIGNvbmZpZ3VyYXRpb25zXG4gKiBAcmV0dXJucyBGb3JtYXR0ZWQgc3RyaW5nIHRvIGFwcGVuZCB0byBzeXN0ZW0gcHJvbXB0LCBvciBlbXB0eSBzdHJpbmcgaWYgbm8gS0JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtub3dsZWRnZUJhc2VTeXN0ZW1Qcm9tcHRBZGRpdGlvbihcbiAga25vd2xlZGdlQmFzZUNvbmZpZ3M6IEtub3dsZWRnZUJhc2VSdW50aW1lQ29uZmlnW10sXG4pOiBzdHJpbmcge1xuICBpZiAoa25vd2xlZGdlQmFzZUNvbmZpZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3Qga2JMaXN0ID0ga25vd2xlZGdlQmFzZUNvbmZpZ3NcbiAgICAubWFwKChrYikgPT4gYC0gKioke2tiLm5hbWV9Kio6ICR7a2IuZGVzY3JpcHRpb259YClcbiAgICAuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGBcblxuIyMgS25vd2xlZGdlIEJhc2UgUmV0cmlldmFsXG5cbllvdSBoYXZlIGFjY2VzcyB0byBhIGtub3dsZWRnZSBiYXNlIHJldHJpZXZhbCB0b29sIGNhbGxlZCBcXGByZXRyaWV2ZV9mcm9tX2tub3dsZWRnZV9iYXNlXFxgLiBVc2UgdGhpcyB0b29sIHRvIHNlYXJjaCBmb3IgcmVsZXZhbnQgaW5mb3JtYXRpb24gd2hlbiBhbnN3ZXJpbmcgcXVlc3Rpb25zLlxuXG4jIyMgSG93IHRvIHVzZSB0aGUgcmV0cmlldmFsIHRvb2w6XG4tIENhbGwgdGhlIHRvb2wgd2l0aCBhIHNlYXJjaCBxdWVyeSB0byBmaW5kIHJlbGV2YW50IGluZm9ybWF0aW9uXG4tIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEga25vd2xlZGdlX2Jhc2VfaWQgdG8gc2VhcmNoIGEgc3BlY2lmaWMga25vd2xlZGdlIGJhc2Vcbi0gSWYgbm8ga25vd2xlZGdlX2Jhc2VfaWQgaXMgcHJvdmlkZWQsIGFsbCBrbm93bGVkZ2UgYmFzZXMgd2lsbCBiZSBzZWFyY2hlZFxuXG4jIyMgQXZhaWxhYmxlIEtub3dsZWRnZSBCYXNlczpcbiR7a2JMaXN0fVxuXG5XaGVuIGEgdXNlciBhc2tzIGEgcXVlc3Rpb24gdGhhdCBtaWdodCBiZSBhbnN3ZXJlZCBieSBpbmZvcm1hdGlvbiBpbiB0aGVzZSBrbm93bGVkZ2UgYmFzZXMsIHVzZSB0aGUgcmV0cmlldmFsIHRvb2wgdG8gZmluZCByZWxldmFudCBjb250ZXh0IGJlZm9yZSByZXNwb25kaW5nLlxuYDtcbn1cblxuZXhwb3J0IGNsYXNzIEJhdGNoQWdlbnQgZXh0ZW5kcyBCYXNlQWdlbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRGdW5jdGlvbj86IElGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmF0Y2hBZ2VudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBzeXN0ZW0gcHJvbXB0IFMzIGFzc2V0XG4gICAgcHJvcHMuYWdlbnREZWZpbml0aW9uLnN5c3RlbVByb21wdC5ncmFudFJlYWQodGhpcy5hZ2VudFJvbGUpO1xuXG4gICAgY29uc3QgbW9kZWxJZCA9IEJlZHJvY2tNb2RlbFV0aWxzLmRlcml2ZUFjdHVhbE1vZGVsSWQodGhpcy5iZWRyb2NrTW9kZWwpO1xuICAgIGNvbnN0IG1ldHJpY05hbWVzcGFjZSA9IHByb3BzLm1ldHJpY05hbWVzcGFjZSB8fCBEZWZhdWx0T2JzZXJ2YWJpbGl0eUNvbmZpZy5ERUZBVUxUX01FVFJJQ19OQU1FU1BBQ0U7XG4gICAgY29uc3QgbWV0cmljU2VydmljZU5hbWUgPSBwcm9wcy5tZXRyaWNTZXJ2aWNlTmFtZSB8fCBEZWZhdWx0QWdlbnRDb25maWcuREVGQVVMVF9PQlNFUlZBQklMSVRZX01FVFJJQ19TVkNfTkFNRTtcblxuICAgIC8vIEdlbmVyYXRlIGtub3dsZWRnZSBiYXNlIHN5c3RlbSBwcm9tcHQgYWRkaXRpb24gaWYgS0JzIGFyZSBjb25maWd1cmVkXG4gICAgY29uc3Qga2JTeXN0ZW1Qcm9tcHRBZGRpdGlvbiA9IGdlbmVyYXRlS25vd2xlZGdlQmFzZVN5c3RlbVByb21wdEFkZGl0aW9uKHRoaXMua25vd2xlZGdlQmFzZUNvbmZpZ3MpO1xuXG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgU1lTVEVNX1BST01QVF9TM19CVUNLRVRfTkFNRTogcHJvcHMuYWdlbnREZWZpbml0aW9uLnN5c3RlbVByb21wdC5zM0J1Y2tldE5hbWUsXG4gICAgICBTWVNURU1fUFJPTVBUX1MzX0tFWTogcHJvcHMuYWdlbnREZWZpbml0aW9uLnN5c3RlbVByb21wdC5zM09iamVjdEtleSxcbiAgICAgIFRPT0xTX0NPTkZJRzogSlNPTi5zdHJpbmdpZnkodGhpcy5hZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9ucyksXG4gICAgICBNT0RFTF9JRDogbW9kZWxJZCxcbiAgICAgIElOVk9LRV9UWVBFOiBwcm9wcy5pbnZva2VUeXBlIHx8IEludm9rZVR5cGUuQkFUQ0gsXG4gICAgICBQUk9NUFQ6IHByb3BzLnByb21wdCxcbiAgICAgIEVYUEVDVF9KU09OOiBwcm9wcy5leHBlY3RKc29uID8gJ1RydWUnIDogJycsXG4gICAgICAuLi5Qb3dlcnRvb2xzQ29uZmlnLmdlbmVyYXRlRGVmYXVsdExhbWJkYUNvbmZpZyhcbiAgICAgICAgcHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSxcbiAgICAgICAgbWV0cmljTmFtZXNwYWNlLFxuICAgICAgICBtZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICksXG4gICAgfTtcblxuICAgIC8vIEFkZCBrbm93bGVkZ2UgYmFzZSBjb25maWd1cmF0aW9uIGlmIEtCcyBhcmUgY29uZmlndXJlZFxuICAgIGlmICh0aGlzLmtub3dsZWRnZUJhc2VDb25maWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVudi5LTk9XTEVER0VfQkFTRVNfQ09ORklHID0gSlNPTi5zdHJpbmdpZnkodGhpcy5rbm93bGVkZ2VCYXNlQ29uZmlncyk7XG4gICAgICBlbnYuS05PV0xFREdFX0JBU0VfU1lTVEVNX1BST01QVF9BRERJVElPTiA9IGtiU3lzdGVtUHJvbXB0QWRkaXRpb247XG4gICAgfVxuXG4gICAgLy8gQWRkIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGVuIGVuYWJsZWRcbiAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgZW52LkFHRU5UX09CU0VSVkFCSUxJVFlfRU5BQkxFRCA9ICd0cnVlJztcbiAgICAgIGVudi5PVEVMX1JFU09VUkNFX0FUVFJJQlVURVMgPSBgc2VydmljZS5uYW1lPSR7bWV0cmljU2VydmljZU5hbWV9LGF3cy5sb2cuZ3JvdXAubmFtZXM9L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy8ke3Byb3BzLmFnZW50TmFtZX1gO1xuICAgICAgZW52Lk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0hFQURFUlMgPSBgeC1hd3MtbG9nLWdyb3VwPS9hd3MvYmVkcm9jay1hZ2VudGNvcmUvcnVudGltZXMvJHtwcm9wcy5hZ2VudE5hbWV9LHgtYXdzLWxvZy1zdHJlYW09cnVudGltZS1sb2dzLHgtYXdzLW1ldHJpYy1uYW1lc3BhY2U9YmVkcm9jay1hZ2VudGNvcmVgO1xuICAgICAgZW52LkFXU19MQU1CREFfRVhFQ19XUkFQUEVSID0gJy9vcHQvb3RlbC1pbnN0cnVtZW50JztcbiAgICAgIGVudi5PVEVMX1BZVEhPTl9ESVNUUk8gPSAnYXdzX2Rpc3Rybyc7XG4gICAgICBlbnYuT1RFTF9QWVRIT05fQ09ORklHVVJBVE9SID0gJ2F3c19jb25maWd1cmF0b3InO1xuICAgICAgZW52Lk9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTCA9ICdodHRwL3Byb3RvYnVmJztcbiAgICAgIGVudi5PVEVMX1RSQUNFU19FWFBPUlRFUiA9ICdvdGxwJztcblxuICAgICAgdGhpcy5hZ2VudFJvbGUuYWRkTWFuYWdlZFBvbGljeShNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQ2xvdWRXYXRjaExhbWJkYUFwcGxpY2F0aW9uU2lnbmFsc0V4ZWN1dGlvblJvbGVQb2xpY3knKSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBhY2NvdW50LCByZWdpb24gfSA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGFnZW50TGFtYmRhTG9nUGVybWlzc2lvbnNSZXN1bHQgPSBMYW1iZGFJYW1VdGlscy5jcmVhdGVMb2dzUGVybWlzc2lvbnMoe1xuICAgICAgYWNjb3VudCxcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5hZ2VudE5hbWUsXG4gICAgICBlbmFibGVPYnNlcnZhYmlsaXR5OiBwcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LFxuICAgIH0pO1xuXG4gICAgLy8gRGVmaW5lIExhbWJkYSBhcmNoaXRlY3R1cmUgKGN1cnJlbnRseSBoYXJkY29kZWQsIGJ1dCBjZW50cmFsaXplZCBmb3IgZnV0dXJlIGNvbmZpZ3VyYWJpbGl0eSlcbiAgICBjb25zdCBsYW1iZGFBcmNoaXRlY3R1cmUgPSBwcm9wcy5hZ2VudEFyY2hpdGVjdHVyZSB8fCBBcmNoaXRlY3R1cmUuQVJNXzY0O1xuXG4gICAgLy8gQnVpbGQgbGF5ZXJzIGFycmF5IHdpdGggQURPVCBsYXllciB3aGVuIG9ic2VydmFiaWxpdHkgaXMgZW5hYmxlZFxuICAgIGNvbnN0IGxheWVyczogSUxheWVyVmVyc2lvbltdID0gW1xuICAgICAgLi4uKHByb3BzLmFnZW50RGVmaW5pdGlvbi5sYW1iZGFMYXllcnMgfHwgW10pLFxuICAgICAgLi4udGhpcy5rbm93bGVkZ2VCYXNlTGF5ZXJzLFxuICAgIF07XG5cbiAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgbGF5ZXJzLnB1c2godGhpcy5jcmVhdGVBRE9UTGF5ZXIoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudEZ1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdCYXRjaEFnZW50RnVuY3Rpb24nLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGFnZW50TGFtYmRhTG9nUGVybWlzc2lvbnNSZXN1bHQudW5pcXVlRnVuY3Rpb25OYW1lLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGFBcmNoaXRlY3R1cmUsXG4gICAgICBlbnRyeTogdGhpcy5yZXNvbHZlQWdlbnRSdW50aW1lRW50cnkoKSxcbiAgICAgIHJvbGU6IHRoaXMuYWdlbnRSb2xlLFxuICAgICAgaW5kZXg6ICdiYXRjaC5weScsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgbGF5ZXJzLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxMCksXG4gICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgZW52aXJvbm1lbnQ6IGVudixcbiAgICAgIGVudmlyb25tZW50RW5jcnlwdGlvbjogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgICAgdnBjOiBwcm9wcy5uZXR3b3JrID8gcHJvcHMubmV0d29yay52cGMgOiB1bmRlZmluZWQsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy5uZXR3b3JrID8gcHJvcHMubmV0d29yay5hcHBsaWNhdGlvblN1Ym5ldFNlbGVjdGlvbigpIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzIG9mIGFnZW50TGFtYmRhTG9nUGVybWlzc2lvbnNSZXN1bHQucG9saWN5U3RhdGVtZW50cykge1xuICAgICAgdGhpcy5hZ2VudFJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kocyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVBZ2VudFJ1bnRpbWVFbnRyeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudCcpO1xuICB9XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9iYXRjaC1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0Q0EsOEZBMkJDOztBQXZFRCxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLDJDQUE2QjtBQUM3Qiw4RUFBa0U7QUFDbEUsNkNBQThDO0FBQzlDLGlEQUFvRDtBQUNwRCx1REFBZ0Y7QUFFaEYsNkNBQXlEO0FBQ3pELGlFQUE0RDtBQUM1RCwrQ0FBMkM7QUFFM0MsK0NBQStGO0FBQy9GLHdDQUErQztBQUMvQyx3REFBcUQ7QUFnQnJEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLHlDQUF5QyxDQUN2RCxvQkFBa0Q7SUFFbEQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsb0JBQW9CO1NBQ2hDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZCxPQUFPOzs7Ozs7Ozs7Ozs7RUFZUCxNQUFNOzs7Q0FHUCxDQUFDO0FBQ0YsQ0FBQztBQUVELE1BQWEsVUFBVyxTQUFRLHNCQUFTOztJQUN2QixhQUFhLENBQWE7SUFFMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4Qiw4Q0FBOEM7UUFDOUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxNQUFNLE9BQU8sR0FBRywyQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekUsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxzQ0FBMEIsQ0FBQyx3QkFBd0IsQ0FBQztRQUNyRyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSx5Q0FBa0IsQ0FBQyxxQ0FBcUMsQ0FBQztRQUU5Ryx1RUFBdUU7UUFDdkUsTUFBTSxzQkFBc0IsR0FBRyx5Q0FBeUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVwRyxNQUFNLEdBQUcsR0FBMkI7WUFDbEMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUM3RSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxXQUFXO1lBQ3BFLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztZQUNoRSxRQUFRLEVBQUUsT0FBTztZQUNqQixXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSx3QkFBVSxDQUFDLEtBQUs7WUFDakQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsR0FBRyw0QkFBZ0IsQ0FBQywyQkFBMkIsQ0FDN0MsS0FBSyxDQUFDLG1CQUFtQixFQUN6QixlQUFlLEVBQ2YsaUJBQWlCLENBQ2xCO1NBQ0YsQ0FBQztRQUVGLHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkUsR0FBRyxDQUFDLHFDQUFxQyxHQUFHLHNCQUFzQixDQUFDO1FBQ3JFLENBQUM7UUFFRCxpRUFBaUU7UUFDakUsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5QixHQUFHLENBQUMsMkJBQTJCLEdBQUcsTUFBTSxDQUFDO1lBQ3pDLEdBQUcsQ0FBQyx3QkFBd0IsR0FBRyxnQkFBZ0IsaUJBQWlCLHdEQUF3RCxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUksR0FBRyxDQUFDLCtCQUErQixHQUFHLG1EQUFtRCxLQUFLLENBQUMsU0FBUyx5RUFBeUUsQ0FBQztZQUNsTCxHQUFHLENBQUMsdUJBQXVCLEdBQUcsc0JBQXNCLENBQUM7WUFDckQsR0FBRyxDQUFDLGtCQUFrQixHQUFHLFlBQVksQ0FBQztZQUN0QyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsa0JBQWtCLENBQUM7WUFDbEQsR0FBRyxDQUFDLDJCQUEyQixHQUFHLGVBQWUsQ0FBQztZQUNsRCxHQUFHLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO1lBRWxDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLENBQUM7UUFDbkksQ0FBQztRQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSwrQkFBK0IsR0FBRywwQkFBYyxDQUFDLHFCQUFxQixDQUFDO1lBQzNFLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLElBQUk7WUFDWCxZQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDN0IsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtTQUMvQyxDQUFDLENBQUM7UUFFSCwrRkFBK0Y7UUFDL0YsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUkseUJBQVksQ0FBQyxNQUFNLENBQUM7UUFFMUUsbUVBQW1FO1FBQ25FLE1BQU0sTUFBTSxHQUFvQjtZQUM5QixHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQzdDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjtTQUM1QixDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQWMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbEUsWUFBWSxFQUFFLCtCQUErQixDQUFDLGtCQUFrQjtZQUNoRSxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3BCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLE9BQU8sRUFBRSxpQ0FBZSxDQUFDLE1BQU07WUFDL0IsTUFBTTtZQUNOLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsVUFBVSxFQUFFLElBQUk7WUFDaEIsV0FBVyxFQUFFLEdBQUc7WUFDaEIscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDekMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2xELFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbkYsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFUyx3QkFBd0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O0FBaEdILGdDQWlHQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFB5dGhvbkZ1bmN0aW9uIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYS1weXRob24tYWxwaGEnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTWFuYWdlZFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBJRnVuY3Rpb24sIElMYXllclZlcnNpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQmFzZUFnZW50LCBCYXNlQWdlbnRQcm9wcyB9IGZyb20gJy4vYmFzZS1hZ2VudCc7XG5pbXBvcnQgeyBEZWZhdWx0QWdlbnRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtYWdlbnQtY29uZmlnJztcbmltcG9ydCB7IEludm9rZVR5cGUgfSBmcm9tICcuL2ludm9rZS10eXBlJztcbmltcG9ydCB7IEtub3dsZWRnZUJhc2VSdW50aW1lQ29uZmlnIH0gZnJvbSAnLi9rbm93bGVkZ2UtYmFzZSc7XG5pbXBvcnQgeyBEZWZhdWx0T2JzZXJ2YWJpbGl0eUNvbmZpZywgTGFtYmRhSWFtVXRpbHMsIFBvd2VydG9vbHNDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgQmVkcm9ja01vZGVsVXRpbHMgfSBmcm9tICcuLi9iZWRyb2NrJztcbmltcG9ydCB7IERlZmF1bHRSdW50aW1lcyB9IGZyb20gJy4uL2N1c3RvbS1yZXNvdXJjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hBZ2VudFByb3BzIGV4dGVuZHMgQmFzZUFnZW50UHJvcHMge1xuICByZWFkb25seSBwcm9tcHQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXhwZWN0SnNvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFnZW50IGludm9jYXRpb24gdHlwZS5cbiAgICpcbiAgICogRGVmaW5lcyBob3cgdGhlIGFnZW50IGlzIGludm9rZWQgYW5kIHdoYXQgcHJvY2Vzc2luZyBtb2RlIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgSW52b2tlVHlwZS5CQVRDSFxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlVHlwZT86IEludm9rZVR5cGU7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBrbm93bGVkZ2UgYmFzZSBpbmZvcm1hdGlvbiB0byBhcHBlbmQgdG8gdGhlIHN5c3RlbSBwcm9tcHQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgZm9ybWF0dGVkIHN0cmluZyBjb250YWluaW5nOlxuICogLSBEZXNjcmlwdGlvbiBvZiB0aGUgcmV0cmlldmFsIHRvb2wgYW5kIGhvdyB0byB1c2UgaXRcbiAqIC0gTGlzdCBvZiBhdmFpbGFibGUga25vd2xlZGdlIGJhc2VzIHdpdGggdGhlaXIgbmFtZXMgYW5kIGRlc2NyaXB0aW9uc1xuICpcbiAqIFRoZSBnZW5lcmF0ZWQgdGV4dCBoZWxwcyB0aGUgYWdlbnQgdW5kZXJzdGFuZCB3aGVuIGFuZCBob3cgdG8gdXNlXG4gKiB0aGUga25vd2xlZGdlIGJhc2UgcmV0cmlldmFsIGNhcGFiaWxpdHkuXG4gKlxuICogQHBhcmFtIGtub3dsZWRnZUJhc2VDb25maWdzIC0gQXJyYXkgb2Yga25vd2xlZGdlIGJhc2UgcnVudGltZSBjb25maWd1cmF0aW9uc1xuICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyB0byBhcHBlbmQgdG8gc3lzdGVtIHByb21wdCwgb3IgZW1wdHkgc3RyaW5nIGlmIG5vIEtCc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVLbm93bGVkZ2VCYXNlU3lzdGVtUHJvbXB0QWRkaXRpb24oXG4gIGtub3dsZWRnZUJhc2VDb25maWdzOiBLbm93bGVkZ2VCYXNlUnVudGltZUNvbmZpZ1tdLFxuKTogc3RyaW5nIHtcbiAgaWYgKGtub3dsZWRnZUJhc2VDb25maWdzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGtiTGlzdCA9IGtub3dsZWRnZUJhc2VDb25maWdzXG4gICAgLm1hcCgoa2IpID0+IGAtICoqJHtrYi5uYW1lfSoqOiAke2tiLmRlc2NyaXB0aW9ufWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIHJldHVybiBgXG5cbiMjIEtub3dsZWRnZSBCYXNlIFJldHJpZXZhbFxuXG5Zb3UgaGF2ZSBhY2Nlc3MgdG8gYSBrbm93bGVkZ2UgYmFzZSByZXRyaWV2YWwgdG9vbCBjYWxsZWQgXFxgcmV0cmlldmVfZnJvbV9rbm93bGVkZ2VfYmFzZVxcYC4gVXNlIHRoaXMgdG9vbCB0byBzZWFyY2ggZm9yIHJlbGV2YW50IGluZm9ybWF0aW9uIHdoZW4gYW5zd2VyaW5nIHF1ZXN0aW9ucy5cblxuIyMjIEhvdyB0byB1c2UgdGhlIHJldHJpZXZhbCB0b29sOlxuLSBDYWxsIHRoZSB0b29sIHdpdGggYSBzZWFyY2ggcXVlcnkgdG8gZmluZCByZWxldmFudCBpbmZvcm1hdGlvblxuLSBZb3UgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBhIGtub3dsZWRnZV9iYXNlX2lkIHRvIHNlYXJjaCBhIHNwZWNpZmljIGtub3dsZWRnZSBiYXNlXG4tIElmIG5vIGtub3dsZWRnZV9iYXNlX2lkIGlzIHByb3ZpZGVkLCBhbGwga25vd2xlZGdlIGJhc2VzIHdpbGwgYmUgc2VhcmNoZWRcblxuIyMjIEF2YWlsYWJsZSBLbm93bGVkZ2UgQmFzZXM6XG4ke2tiTGlzdH1cblxuV2hlbiBhIHVzZXIgYXNrcyBhIHF1ZXN0aW9uIHRoYXQgbWlnaHQgYmUgYW5zd2VyZWQgYnkgaW5mb3JtYXRpb24gaW4gdGhlc2Uga25vd2xlZGdlIGJhc2VzLCB1c2UgdGhlIHJldHJpZXZhbCB0b29sIHRvIGZpbmQgcmVsZXZhbnQgY29udGV4dCBiZWZvcmUgcmVzcG9uZGluZy5cbmA7XG59XG5cbmV4cG9ydCBjbGFzcyBCYXRjaEFnZW50IGV4dGVuZHMgQmFzZUFnZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGFnZW50RnVuY3Rpb24/OiBJRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhdGNoQWdlbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gc3lzdGVtIHByb21wdCBTMyBhc3NldFxuICAgIHByb3BzLmFnZW50RGVmaW5pdGlvbi5zeXN0ZW1Qcm9tcHQuZ3JhbnRSZWFkKHRoaXMuYWdlbnRSb2xlKTtcblxuICAgIGNvbnN0IG1vZGVsSWQgPSBCZWRyb2NrTW9kZWxVdGlscy5kZXJpdmVBY3R1YWxNb2RlbElkKHRoaXMuYmVkcm9ja01vZGVsKTtcbiAgICBjb25zdCBtZXRyaWNOYW1lc3BhY2UgPSBwcm9wcy5tZXRyaWNOYW1lc3BhY2UgfHwgRGVmYXVsdE9ic2VydmFiaWxpdHlDb25maWcuREVGQVVMVF9NRVRSSUNfTkFNRVNQQUNFO1xuICAgIGNvbnN0IG1ldHJpY1NlcnZpY2VOYW1lID0gcHJvcHMubWV0cmljU2VydmljZU5hbWUgfHwgRGVmYXVsdEFnZW50Q29uZmlnLkRFRkFVTFRfT0JTRVJWQUJJTElUWV9NRVRSSUNfU1ZDX05BTUU7XG5cbiAgICAvLyBHZW5lcmF0ZSBrbm93bGVkZ2UgYmFzZSBzeXN0ZW0gcHJvbXB0IGFkZGl0aW9uIGlmIEtCcyBhcmUgY29uZmlndXJlZFxuICAgIGNvbnN0IGtiU3lzdGVtUHJvbXB0QWRkaXRpb24gPSBnZW5lcmF0ZUtub3dsZWRnZUJhc2VTeXN0ZW1Qcm9tcHRBZGRpdGlvbih0aGlzLmtub3dsZWRnZUJhc2VDb25maWdzKTtcblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFNZU1RFTV9QUk9NUFRfUzNfQlVDS0VUX05BTUU6IHByb3BzLmFnZW50RGVmaW5pdGlvbi5zeXN0ZW1Qcm9tcHQuczNCdWNrZXROYW1lLFxuICAgICAgU1lTVEVNX1BST01QVF9TM19LRVk6IHByb3BzLmFnZW50RGVmaW5pdGlvbi5zeXN0ZW1Qcm9tcHQuczNPYmplY3RLZXksXG4gICAgICBUT09MU19DT05GSUc6IEpTT04uc3RyaW5naWZ5KHRoaXMuYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnMpLFxuICAgICAgTU9ERUxfSUQ6IG1vZGVsSWQsXG4gICAgICBJTlZPS0VfVFlQRTogcHJvcHMuaW52b2tlVHlwZSB8fCBJbnZva2VUeXBlLkJBVENILFxuICAgICAgUFJPTVBUOiBwcm9wcy5wcm9tcHQsXG4gICAgICBFWFBFQ1RfSlNPTjogcHJvcHMuZXhwZWN0SnNvbiA/ICdUcnVlJyA6ICcnLFxuICAgICAgLi4uUG93ZXJ0b29sc0NvbmZpZy5nZW5lcmF0ZURlZmF1bHRMYW1iZGFDb25maWcoXG4gICAgICAgIHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgICAgIG1ldHJpY05hbWVzcGFjZSxcbiAgICAgICAgbWV0cmljU2VydmljZU5hbWUsXG4gICAgICApLFxuICAgIH07XG5cbiAgICAvLyBBZGQga25vd2xlZGdlIGJhc2UgY29uZmlndXJhdGlvbiBpZiBLQnMgYXJlIGNvbmZpZ3VyZWRcbiAgICBpZiAodGhpcy5rbm93bGVkZ2VCYXNlQ29uZmlncy5sZW5ndGggPiAwKSB7XG4gICAgICBlbnYuS05PV0xFREdFX0JBU0VTX0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KHRoaXMua25vd2xlZGdlQmFzZUNvbmZpZ3MpO1xuICAgICAgZW52LktOT1dMRURHRV9CQVNFX1NZU1RFTV9QUk9NUFRfQURESVRJT04gPSBrYlN5c3RlbVByb21wdEFkZGl0aW9uO1xuICAgIH1cblxuICAgIC8vIEFkZCBBZ2VudENvcmUgb2JzZXJ2YWJpbGl0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBlbmFibGVkXG4gICAgaWYgKHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHkpIHtcbiAgICAgIGVudi5BR0VOVF9PQlNFUlZBQklMSVRZX0VOQUJMRUQgPSAndHJ1ZSc7XG4gICAgICBlbnYuT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTID0gYHNlcnZpY2UubmFtZT0ke21ldHJpY1NlcnZpY2VOYW1lfSxhd3MubG9nLmdyb3VwLm5hbWVzPS9hd3MvYmVkcm9jay1hZ2VudGNvcmUvcnVudGltZXMvJHtwcm9wcy5hZ2VudE5hbWV9YDtcbiAgICAgIGVudi5PVEVMX0VYUE9SVEVSX09UTFBfTE9HU19IRUFERVJTID0gYHgtYXdzLWxvZy1ncm91cD0vYXdzL2JlZHJvY2stYWdlbnRjb3JlL3J1bnRpbWVzLyR7cHJvcHMuYWdlbnROYW1lfSx4LWF3cy1sb2ctc3RyZWFtPXJ1bnRpbWUtbG9ncyx4LWF3cy1tZXRyaWMtbmFtZXNwYWNlPWJlZHJvY2stYWdlbnRjb3JlYDtcbiAgICAgIGVudi5BV1NfTEFNQkRBX0VYRUNfV1JBUFBFUiA9ICcvb3B0L290ZWwtaW5zdHJ1bWVudCc7XG4gICAgICBlbnYuT1RFTF9QWVRIT05fRElTVFJPID0gJ2F3c19kaXN0cm8nO1xuICAgICAgZW52Lk9URUxfUFlUSE9OX0NPTkZJR1VSQVRPUiA9ICdhd3NfY29uZmlndXJhdG9yJztcbiAgICAgIGVudi5PVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0wgPSAnaHR0cC9wcm90b2J1Zic7XG4gICAgICBlbnYuT1RFTF9UUkFDRVNfRVhQT1JURVIgPSAnb3RscCc7XG5cbiAgICAgIHRoaXMuYWdlbnRSb2xlLmFkZE1hbmFnZWRQb2xpY3koTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0Nsb3VkV2F0Y2hMYW1iZGFBcHBsaWNhdGlvblNpZ25hbHNFeGVjdXRpb25Sb2xlUG9saWN5JykpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgYWNjb3VudCwgcmVnaW9uIH0gPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBhZ2VudExhbWJkYUxvZ1Blcm1pc3Npb25zUmVzdWx0ID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIGFjY291bnQsXG4gICAgICByZWdpb24sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMuYWdlbnROYW1lLFxuICAgICAgZW5hYmxlT2JzZXJ2YWJpbGl0eTogcHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSxcbiAgICB9KTtcblxuICAgIC8vIERlZmluZSBMYW1iZGEgYXJjaGl0ZWN0dXJlIChjdXJyZW50bHkgaGFyZGNvZGVkLCBidXQgY2VudHJhbGl6ZWQgZm9yIGZ1dHVyZSBjb25maWd1cmFiaWxpdHkpXG4gICAgY29uc3QgbGFtYmRhQXJjaGl0ZWN0dXJlID0gcHJvcHMuYWdlbnRBcmNoaXRlY3R1cmUgfHwgQXJjaGl0ZWN0dXJlLkFSTV82NDtcblxuICAgIC8vIEJ1aWxkIGxheWVycyBhcnJheSB3aXRoIEFET1QgbGF5ZXIgd2hlbiBvYnNlcnZhYmlsaXR5IGlzIGVuYWJsZWRcbiAgICBjb25zdCBsYXllcnM6IElMYXllclZlcnNpb25bXSA9IFtcbiAgICAgIC4uLihwcm9wcy5hZ2VudERlZmluaXRpb24ubGFtYmRhTGF5ZXJzIHx8IFtdKSxcbiAgICAgIC4uLnRoaXMua25vd2xlZGdlQmFzZUxheWVycyxcbiAgICBdO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHkpIHtcbiAgICAgIGxheWVycy5wdXNoKHRoaXMuY3JlYXRlQURPVExheWVyKCkpO1xuICAgIH1cblxuICAgIHRoaXMuYWdlbnRGdW5jdGlvbiA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnQmF0Y2hBZ2VudEZ1bmN0aW9uJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiBhZ2VudExhbWJkYUxvZ1Blcm1pc3Npb25zUmVzdWx0LnVuaXF1ZUZ1bmN0aW9uTmFtZSxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhQXJjaGl0ZWN0dXJlLFxuICAgICAgZW50cnk6IHRoaXMucmVzb2x2ZUFnZW50UnVudGltZUVudHJ5KCksXG4gICAgICByb2xlOiB0aGlzLmFnZW50Um9sZSxcbiAgICAgIGluZGV4OiAnYmF0Y2gucHknLFxuICAgICAgcnVudGltZTogRGVmYXVsdFJ1bnRpbWVzLlBZVEhPTixcbiAgICAgIGxheWVycyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgbWVtb3J5U2l6ZTogMTAyNCxcbiAgICAgIGVudmlyb25tZW50OiBlbnYsXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogcHJvcHMubmV0d29yayA/IHByb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMubmV0d29yayA/IHByb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgcyBvZiBhZ2VudExhbWJkYUxvZ1Blcm1pc3Npb25zUmVzdWx0LnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIHRoaXMuYWdlbnRSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KHMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlQWdlbnRSdW50aW1lRW50cnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcy9kZWZhdWx0LXN0cmFuZHMtYWdlbnQnKTtcbiAgfVxufVxuIl19
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.DefaultAgentConfig = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
5
|
class DefaultAgentConfig {
|
|
6
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultAgentConfig", version: "1.17.2" };
|
|
7
|
+
static DEFAULT_OBSERVABILITY_METRIC_SVC_NAME = 'agent';
|
|
7
8
|
}
|
|
8
9
|
exports.DefaultAgentConfig = DefaultAgentConfig;
|
|
9
|
-
|
|
10
|
-
DefaultAgentConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultAgentConfig", version: "1.17.0" };
|
|
11
|
-
DefaultAgentConfig.DEFAULT_OBSERVABILITY_METRIC_SVC_NAME = 'agent';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hZ2VudC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9kZWZhdWx0LWFnZW50LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQWEsa0JBQWtCOztBQUEvQixnREFFQzs7O0FBRHdCLHdEQUFxQyxHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBEZWZhdWx0QWdlbnRDb25maWcge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfT0JTRVJWQUJJTElUWV9NRVRSSUNfU1ZDX05BTUUgPSAnYWdlbnQnO1xufSJdfQ==
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hZ2VudC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9kZWZhdWx0LWFnZW50LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBYSxrQkFBa0I7O0lBQ3RCLE1BQU0sQ0FBVSxxQ0FBcUMsR0FBRyxPQUFPLENBQUM7O0FBRHpFLGdEQUVDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERlZmF1bHRBZ2VudENvbmZpZyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9PQlNFUlZBQklMSVRZX01FVFJJQ19TVkNfTkFNRSA9ICdhZ2VudCc7XG59Il19
|