@aws-mdaa/devops 1.2.0 → 1.4.0
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/lib/devops.js +2 -4
- package/lib/index.js +1 -3
- package/package.json +18 -22
package/lib/devops.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
|
|
8
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
7
|
exports.MdaaPipeline = exports.MdaaDevopsL3Construct = exports.MdaaDevopsCDKApp = exports.DevOpsConfigParser = void 0;
|
|
10
8
|
const app_1 = require("@aws-mdaa/app");
|
|
@@ -389,4 +387,4 @@ class FixCdkBuildProject {
|
|
|
389
387
|
}
|
|
390
388
|
}
|
|
391
389
|
}
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2b3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGV2b3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILHVDQUFrSDtBQUNsSCw2REFBb0Q7QUFDcEQsNkRBQXNEO0FBQ3RELHlEQUErRTtBQUUvRSwyREFBcUQ7QUFFckQsNkNBQWdFO0FBQ2hFLDZEQU1tQztBQUNuQywrREFBcUU7QUFDckUsbUVBQStGO0FBQy9GLG1GQU04QztBQUM5QyxpREFXNkI7QUFFN0IsK0NBQTRDO0FBRTVDLHFEQUFxRDtBQUNyRCxtREFBMEQsQ0FBQyxTQUFTO0FBK0pwRSxNQUFhLGtCQUFtQixTQUFRLHlCQUF5QztJQUcvRSxZQUFZLEtBQVksRUFBRSxLQUErQjtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFzQixDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVJELGdEQVFDO0FBRUQsTUFBYSxnQkFBaUIsU0FBUSxnQkFBVTtJQUM5QyxZQUFZLEtBQWdCO1FBQzFCLEtBQUssQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxnQkFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsU0FBUyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUNTLG9CQUFvQixDQUM1QixLQUFZLEVBQ1osZ0JBQXNDLEVBQ3RDLFdBQXFDO1FBRXJDLE1BQU0sU0FBUyxHQUFHLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUN6QyxHQUFHLGdCQUFnQjtZQUNuQixHQUFHLFNBQVMsQ0FBQyxZQUFZO1NBQzFCLENBQUMsQ0FBQztRQUNILHFCQUFPLENBQUMs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SUFBSSwwQ0FBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQXRQRCxvQ0FzUEM7QUFFRCxNQUFNLGtCQUFrQjtJQUNmLEtBQUssQ0FBQyxTQUFxQjtRQUNoQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3JELCtCQUFtQixDQUFDLDJCQUEyQixDQUM3QyxTQUFTLEVBQ1Q7Z0JBQ0UsRUFBRSxFQUFFLEVBQUUsOENBQThDLEVBQUUsTUFBTSxFQUFFLGdDQUFnQyxFQUFFO2dCQUNoRyxFQUFFLEVBQUUsRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLEVBQUUsZ0NBQWdDLEVBQUU7YUFDOUYsRUFDRCxJQUFJLENBQ0wsQ0FBQztTQUNIO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUFwcENvbmZpZ1BhcnNlciwgTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzLCBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzLCBNZGFhQ2RrQXBwIH0gZnJvbSAnQGF3cy1tZGFhL2FwcCc7XG5pbXBvcnQgeyBNZGFhUm9sZSB9IGZyb20gJ0Bhd3MtbWRhYS9pYW0tY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNZGFhS21zS2V5IH0gZnJvbSAnQGF3cy1tZGFhL2ttcy1jb25zdHJ1Y3RzJztcbmltcG9ydCB7IE1kYWFMM0NvbnN0cnVjdCwgTWRhYUwzQ29uc3RydWN0UHJvcHMgfSBmcm9tICdAYXdzLW1kYWEvbDMtY29uc3RydWN0JztcbmltcG9ydCB7IElNZGFhUmVzb3VyY2VOYW1pbmcgfSBmcm9tICdAYXdzLW1kYWEvbmFtaW5nJztcbmltcG9ydCB7IE1kYWFCdWNrZXQgfSBmcm9tICdAYXdzLW1kYWEvczMtY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICdhanYnO1xuaW1wb3J0IHsgQXBwUHJvcHMsIEFzcGVjdHMsIElBc3BlY3QsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQnVpbGRTcGVjLFxuICBDb21wdXRlVHlwZSxcbiAgTGludXhCdWlsZEltYWdlLFxuICBQaXBlbGluZVByb2plY3QsXG4gIFBpcGVsaW5lUHJvamVjdFByb3BzLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IElSZXBvc2l0b3J5LCBSZXBvc2l0b3J5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVjb21taXQnO1xuaW1wb3J0IHsgQXJ0aWZhY3QsIFBpcGVsaW5lLCBQaXBlbGluZVByb3BzLCBQaXBlbGluZVR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCB7XG4gIENvZGVCdWlsZEFjdGlvbixcbiAgQ29kZUJ1aWxkQWN0aW9uUHJvcHMsXG4gIENvZGVDb21taXRTb3VyY2VBY3Rpb24sXG4gIENvZGVDb21taXRUcmlnZ2VyLFxuICBNYW51YWxBcHByb3ZhbEFjdGlvbixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjY291bnRQcmluY2lwYWwsXG4gIENvbXBvc2l0ZVByaW5jaXBhbCxcbiAgRWZmZWN0LFxuICBJUm9sZSxcbiAgTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5LFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGNvbmZpZ1NjaGVtYSBmcm9tICcuL2NvbmZpZy1zY2hlbWEuanNvbic7XG5pbXBvcnQgeyBNZGFhTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnQGF3cy1tZGFhL2NvbnN0cnVjdCc7IC8vTk9TT05BUlxuXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBWYWxpZGF0aW9uIHN0YWdlIGNvbW1hbmQgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIENvZGVCdWlsZCB2YWxpZGF0aW9uIHByb2plY3RzIHRoYXQgZXhlY3V0ZSBpbmZyYXN0cnVjdHVyZSB0ZXN0aW5nIGFuZCBjb21wbGlhbmNlIHZlcmlmaWNhdGlvbiBkdXJpbmcgTURBQSBkZXBsb3ltZW50IHBpcGVsaW5lcy4gRGVmaW5lcyBpbnN0YWxsIGRlcGVuZGVuY2llcyBhbmQgdmFsaWRhdGlvbiBjb21tYW5kcyB0aGF0IHJ1biBpbiBDb2RlQnVpbGQgZW52aXJvbm1lbnRzIHRvIHZlcmlmeSBkZXBsb3llZCBpbmZyYXN0cnVjdHVyZSBtZWV0cyByZXF1aXJlbWVudHMgYmVmb3JlIHBpcGVsaW5lIHByb2dyZXNzaW9uLlxuICpcbiAqIFVzZSBjYXNlczogSW5mcmFzdHJ1Y3R1cmUgc21va2UgdGVzdGluZzsgQ29tcGxpYW5jZSB2ZXJpZmljYXRpb247IERlcGxveW1lbnQgdmFsaWRhdGlvbjsgUXVhbGl0eSBnYXRlIGVuZm9yY2VtZW50OyBQb3N0LWRlcGxveW1lbnQgdmVyaWZpY2F0aW9uXG4gKlxuICogQVdTOiBBV1MgQ29kZUJ1aWxkIHZhbGlkYXRpb24gcHJvamVjdCBjb21tYW5kcyB3aXRoIGluc3RhbGwgZGVwZW5kZW5jaWVzIGFuZCB2YWxpZGF0aW9uIHNjcmlwdCBleGVjdXRpb24gZm9yIHBpcGVsaW5lIHF1YWxpdHkgZ2F0ZXNcbiAqXG4gKiBWYWxpZGF0aW9uOiBpbnN0YWxsIGNvbW1hbmRzIG11c3QgYmUgdmFsaWQgcGFja2FnZSBtYW5hZ2VyIGNvbW1hbmRzOyBjb21tYW5kcyBtdXN0IGJlIGV4ZWN1dGFibGUgc2hlbGwgc2NyaXB0cyB0aGF0IHJldHVybiBhcHByb3ByaWF0ZSBleGl0IGNvZGVzIGZvciBwaXBlbGluZSBzdWNjZXNzL2ZhaWx1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZVN0YWdlQ29tbWFuZHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhcnJheSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiBjb21tYW5kcyBmb3IgQ29kZUJ1aWxkIHZhbGlkYXRpb24gZW52aXJvbm1lbnQgc2V0dXAgZW5hYmxpbmcgdGVzdGluZyB0b29sIGluc3RhbGxhdGlvbiBhbmQgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBkdXJpbmcgdGhlIGluc3RhbGwgcGhhc2UgdG8gaW5zdGFsbCByZXF1aXJlZCB0ZXN0aW5nIGZyYW1ld29ya3MsIHZhbGlkYXRpb24gdG9vbHMsIGFuZCBkZXBlbmRlbmNpZXMgbmVlZGVkIGZvciBpbmZyYXN0cnVjdHVyZSB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVGVzdGluZyB0b29sIGluc3RhbGxhdGlvbjsgVmFsaWRhdGlvbiBkZXBlbmRlbmN5IHNldHVwOyBUZXN0aW5nIGZyYW1ld29yayBpbnN0YWxsYXRpb247IEVudmlyb25tZW50IHByZXBhcmF0aW9uOyBWYWxpZGF0aW9uIHRvb2wgc2V0dXBcbiAgICpcbiAgICogQVdTOiBBV1MgQ29kZUJ1aWxkIHZhbGlkYXRpb24gaW5zdGFsbCBwaGFzZSBjb21tYW5kcyBmb3IgdGVzdGluZyB0b29sIGluc3RhbGxhdGlvbiBhbmQgdmFsaWRhdGlvbiBlbnZpcm9ubWVudCBzZXR1cFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIHNoZWxsIGNvbW1hbmRzIGlmIHByb3ZpZGVkOyBjb21tYW5kcyBleGVjdXRlIGluIENvZGVCdWlsZCBMaW51eCBlbnZpcm9ubWVudDsgb3B0aW9uYWwgZm9yIHZhbGlkYXRpb24gaW5zdGFsbCBwaGFzZVxuICAgKiovXG4gIHJlYWRvbmx5IGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgdmFsaWRhdGlvbiBjb21tYW5kcyBmb3IgaW5mcmFzdHJ1Y3R1cmUgdGVzdGluZyBhbmQgY29tcGxpYW5jZSB2ZXJpZmljYXRpb24gZW5hYmxpbmcgcXVhbGl0eSBnYXRlIGVuZm9yY2VtZW50LiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB0byB2YWxpZGF0ZSBkZXBsb3llZCBpbmZyYXN0cnVjdHVyZSwgcGVyZm9ybSBzbW9rZSB0ZXN0cywgYW5kIHZlcmlmeSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBiZWZvcmUgcGlwZWxpbmUgcHJvZ3Jlc3Npb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogSW5mcmFzdHJ1Y3R1cmUgc21va2UgdGVzdGluZzsgQ29tcGxpYW5jZSB2ZXJpZmljYXRpb247IFF1YWxpdHkgZ2F0ZSBlbmZvcmNlbWVudDsgUG9zdC1kZXBsb3ltZW50IHZhbGlkYXRpb247IEluZnJhc3RydWN0dXJlIHRlc3RpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgQ29kZUJ1aWxkIHZhbGlkYXRpb24gY29tbWFuZHMgZm9yIGluZnJhc3RydWN0dXJlIHRlc3RpbmcgYW5kIGNvbXBsaWFuY2UgdmVyaWZpY2F0aW9uIHdpdGggcXVhbGl0eSBnYXRlIGVuZm9yY2VtZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIG11c3QgcmV0dXJuIGFwcHJvcHJpYXRlIGV4aXQgY29kZXMgZm9yIHBpcGVsaW5lIHN1Y2Nlc3MvZmFpbHVyZTsgb3B0aW9uYWwgZm9yIHZhbGlkYXRpb24gZXhlY3V0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgY29tbWFuZHM/OiBzdHJpbmdbXTtcbn1cbi8qKlxuICogUS1FTkhBTkNFRC1JTlRFUkZBQ0VcbiAqIERlcGxveW1lbnQgc3RhZ2UgY29tbWFuZCBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgQ29kZUJ1aWxkIHByb2plY3RzIHRoYXQgZXhlY3V0ZSBjdXN0b20gc2NyaXB0cyBkdXJpbmcgTURBQSBkZXBsb3ltZW50IHBpcGVsaW5lIHN0YWdlcy4gRGVmaW5lcyBpbnN0YWxsIGRlcGVuZGVuY2llcywgcHJlLWRlcGxveW1lbnQgcHJlcGFyYXRpb24gY29tbWFuZHMsIGFuZCBwb3N0LWRlcGxveW1lbnQgY2xlYW51cCBjb21tYW5kcyB0aGF0IHJ1biBpbiBDb2RlQnVpbGQgZW52aXJvbm1lbnRzIHRvIGN1c3RvbWl6ZSBkZXBsb3ltZW50IGJlaGF2aW9yIGFuZCBwZXJmb3JtIGVudmlyb25tZW50LXNwZWNpZmljIG9wZXJhdGlvbnMuXG4gKlxuICogVXNlIGNhc2VzOiBFbnZpcm9ubWVudCBwcmVwYXJhdGlvbjsgQ3VzdG9tIGRlcGxveW1lbnQgc2NyaXB0czsgUG9zdC1kZXBsb3ltZW50IGNsZWFudXA7IEluZnJhc3RydWN0dXJlIGN1c3RvbWl6YXRpb247IEVudmlyb25tZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBDb2RlQnVpbGQgcHJvamVjdCBjb21tYW5kcyB3aXRoIGluc3RhbGwsIHByZS1leGVjdXRpb24sIGFuZCBwb3N0LWV4ZWN1dGlvbiBob29rcyBmb3IgZGVwbG95bWVudCBzdGFnZSBjdXN0b21pemF0aW9uXG4gKlxuICogVmFsaWRhdGlvbjogaW5zdGFsbCBjb21tYW5kcyBtdXN0IGJlIHZhbGlkIHBhY2thZ2UgbWFuYWdlciBjb21tYW5kczsgcHJlL3Bvc3QgY29tbWFuZHMgbXVzdCBiZSBleGVjdXRhYmxlIHNoZWxsIHNjcmlwdHM7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VDb21tYW5kcyB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIHBhY2thZ2UgaW5zdGFsbGF0aW9uIGNvbW1hbmRzIGZvciBDb2RlQnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgZW5hYmxpbmcgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCB0b29sIGluc3RhbGxhdGlvbi4gRGVmaW5lcyBjb21tYW5kcyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgZHVyaW5nIHRoZSBpbnN0YWxsIHBoYXNlIHRvIGluc3RhbGwgcmVxdWlyZWQgcGFja2FnZXMsIGRlcGVuZGVuY2llcywgYW5kIHRvb2xzIG5lZWRlZCBmb3IgZGVwbG95bWVudCBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERlcGVuZGVuY3kgaW5zdGFsbGF0aW9uOyBUb29sIHNldHVwOyBQYWNrYWdlIG1hbmFnZW1lbnQ7IEVudmlyb25tZW50IHByZXBhcmF0aW9uOyBCdWlsZCB0b29sIGluc3RhbGxhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBDb2RlQnVpbGQgaW5zdGFsbCBwaGFzZSBjb21tYW5kcyBmb3IgZGVwZW5kZW5jeSBpbnN0YWxsYXRpb24gYW5kIGVudmlyb25tZW50IHNldHVwXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50OyBvcHRpb25hbCBmb3IgaW5zdGFsbCBwaGFzZVxuICAgKiovXG4gIHJlYWRvbmx5IGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgcHJlLWV4ZWN1dGlvbiBjb21tYW5kcyBmb3IgZGVwbG95bWVudCBzdGFnZSBwcmVwYXJhdGlvbiBlbmFibGluZyBjdXN0b20gc2V0dXAgYW5kIHZhbGlkYXRpb24gYmVmb3JlIG1haW4gZGVwbG95bWVudCBvcGVyYXRpb25zLiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIG1haW4gZGVwbG95bWVudCBzdGFnZSB0byBwZXJmb3JtIGVudmlyb25tZW50IHByZXBhcmF0aW9uLCB2YWxpZGF0aW9uLCBhbmQgY3VzdG9tIHNldHVwIHRhc2tzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEVudmlyb25tZW50IHByZXBhcmF0aW9uOyBQcmUtZGVwbG95bWVudCB2YWxpZGF0aW9uOyBDdXN0b20gc2V0dXA7IENvbmZpZ3VyYXRpb24gdmVyaWZpY2F0aW9uOyBQcmVyZXF1aXNpdGUgY2hlY2tzXG4gICAqXG4gICAqIEFXUzogQVdTIENvZGVCdWlsZCBwcmUtZXhlY3V0aW9uIGNvbW1hbmRzIGZvciBkZXBsb3ltZW50IHN0YWdlIHByZXBhcmF0aW9uIGFuZCB2YWxpZGF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50OyBvcHRpb25hbCBmb3IgcHJlLWV4ZWN1dGlvbiBwaGFzZVxuICAgKiovXG4gIHJlYWRvbmx5IHByZT86IHN0cmluZ1tdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhcnJheSBvZiBwb3N0LWV4ZWN1dGlvbiBjb21tYW5kcyBmb3IgZGVwbG95bWVudCBzdGFnZSBjbGVhbnVwIGFuZCBmaW5hbGl6YXRpb24gZW5hYmxpbmcgY3VzdG9tIGNsZWFudXAgYW5kIHBvc3QtZGVwbG95bWVudCBvcGVyYXRpb25zLiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciB0aGUgbWFpbiBkZXBsb3ltZW50IHN0YWdlIHRvIHBlcmZvcm0gY2xlYW51cCwgbm90aWZpY2F0aW9uLCB2YWxpZGF0aW9uLCBhbmQgZmluYWxpemF0aW9uIHRhc2tzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFBvc3QtZGVwbG95bWVudCBjbGVhbnVwOyBOb3RpZmljYXRpb24gc2VuZGluZzsgVmFsaWRhdGlvbiBjaGVja3M7IFJlc291cmNlIGNsZWFudXA7IEZpbmFsaXphdGlvbiB0YXNrc1xuICAgKlxuICAgKiBBV1M6IEFXUyBDb2RlQnVpbGQgcG9zdC1leGVjdXRpb24gY29tbWFuZHMgZm9yIGRlcGxveW1lbnQgc3RhZ2UgY2xlYW51cCBhbmQgZmluYWxpemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50OyBvcHRpb25hbCBmb3IgcG9zdC1leGVjdXRpb24gcGhhc2VcbiAgICoqL1xuICByZWFkb25seSBwb3N0Pzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmRzIGV4dGVuZHMgU3RhZ2VDb21tYW5kcyB7XG4gIHJlYWRvbmx5IHByZURlcGxveT86IFN0YWdlQ29tbWFuZHM7XG4gIHJlYWRvbmx5IHByZURlcGxveVZhbGlkYXRlPzogVmFsaWRhdGVTdGFnZUNvbW1hbmRzO1xuICByZWFkb25seSBkZXBsb3k/OiBTdGFnZUNvbW1hbmRzO1xuICByZWFkb25seSBwb3N0RGVwbG95VmFsaWRhdGU/OiBWYWxpZGF0ZVN0YWdlQ29tbWFuZHM7XG59XG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBNREFBIERldk9wcyBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgQ0kvQ0QgcGlwZWxpbmUgb3JjaGVzdHJhdGlvbiB3aXRoIENvZGVDb21taXQgcmVwb3NpdG9yeSBpbnRlZ3JhdGlvbiBhbmQgbXVsdGktZW52aXJvbm1lbnQgZGVwbG95bWVudCBtYW5hZ2VtZW50LiBEZWZpbmVzIHRoZSBjb21wbGV0ZSBEZXZPcHMgaW5mcmFzdHJ1Y3R1cmUgaW5jbHVkaW5nIHNvdXJjZSByZXBvc2l0b3JpZXMsIGRlcGxveW1lbnQgcGlwZWxpbmVzLCBhbmQgQ0RLIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZvciBhdXRvbWF0ZWQgTURBQSBpbmZyYXN0cnVjdHVyZSBkZXBsb3ltZW50IGFjcm9zcyBtdWx0aXBsZSBlbnZpcm9ubWVudHMgd2l0aCBhcHByb3ZhbCBnYXRlcyBhbmQgdmFsaWRhdGlvbiBzdGFnZXMuXG4gKlxuICogVXNlIGNhc2VzOiBNdWx0aS1lbnZpcm9ubWVudCBDSS9DRCBwaXBlbGluZXM7IEF1dG9tYXRlZCBNREFBIGRlcGxveW1lbnRzOyBDb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgbWFuYWdlbWVudDsgSW5mcmFzdHJ1Y3R1cmUgY2hhbmdlIG1hbmFnZW1lbnQ7IERldk9wcyBhdXRvbWF0aW9uXG4gKlxuICogQVdTOiBBV1MgQ29kZVBpcGVsaW5lIHdpdGggQ29kZUNvbW1pdCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBDb2RlQnVpbGQgcHJvamVjdHMgZm9yIE1EQUEgQ0xJIGV4ZWN1dGlvbiwgYW5kIENESyBib290c3RyYXAgaW50ZWdyYXRpb24gZm9yIGluZnJhc3RydWN0dXJlIGRlcGxveW1lbnRcbiAqXG4gKiBWYWxpZGF0aW9uOiBtZGFhQ29kZUNvbW1pdFJlcG8gYW5kIGNvbmZpZ3NDb2RlQ29tbWl0UmVwbyBtdXN0IGJlIHZhbGlkIENvZGVDb21taXQgcmVwb3NpdG9yeSBuYW1lczsgcGlwZWxpbmVzIG11c3QgY29udGFpbiB2YWxpZCBQaXBlbGluZUNvbmZpZyBvYmplY3RzOyBjZGtCb290c3RyYXBDb250ZXh0IG11c3QgYmUgdmFsaWQgQ0RLIHF1YWxpZmllclxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldk9wc0NvbmZpZ0NvbnRlbnRzIGV4dGVuZHMgTWRhYUJhc2VDb25maWdDb250ZW50cywgQ29tbWFuZHMge1xuICByZWFkb25seSBtZGFhQ29kZUNvbW1pdFJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgbWRhYUJyYW5jaD86IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlnc0NvZGVDb21taXRSZXBvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZ3NCcmFuY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lcz86IHsgW3BpcGVsaW5lTmFtZTogc3RyaW5nXTogUGlwZWxpbmVDb25maWcgfTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogQ0RLIGJvb3RzdHJhcCBjb250ZXh0IHF1YWxpZmllciBmb3IgaWRlbnRpZnlpbmcgQ0RLIGJvb3RzdHJhcCByZXNvdXJjZXMgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gRGVmaW5lcyB0aGUgQ0RLIGJvb3RzdHJhcCBxdWFsaWZpZXIgdXNlZCB0byBsb2NhdGUgQ0RLIGRlcGxveW1lbnQgcm9sZXMsIGJ1Y2tldHMsIGFuZCBvdGhlciBib290c3RyYXAgcmVzb3VyY2VzIGZvciBNREFBIGluZnJhc3RydWN0dXJlIGRlcGxveW1lbnQgdGhyb3VnaCBDSS9DRCBwaXBlbGluZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ0RLIGJvb3RzdHJhcCByZXNvdXJjZSBpZGVudGlmaWNhdGlvbjsgTXVsdGktZW52aXJvbm1lbnQgQ0RLIGRlcGxveW1lbnQ7IEJvb3RzdHJhcCByZXNvdXJjZSBpc29sYXRpb247IENESyByb2xlIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBV1MgQ0RLIGJvb3RzdHJhcCByZXNvdXJjZXMgaW5jbHVkaW5nIGRlcGxveW1lbnQgcm9sZXMgYW5kIGFzc2V0IGJ1Y2tldHNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBDREsgYm9vdHN0cmFwIHF1YWxpZmllciBzdHJpbmc7IGRlZmF1bHRzIHRvIHN0YW5kYXJkIENESyBxdWFsaWZpZXIgaWYgbm90IHNwZWNpZmllZDsgb3B0aW9uYWwgc3RyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgY2RrQm9vdHN0cmFwQ29udGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRLUVOSEFOQ0VELUlOVEVSRkFDRVxuICogSW5kaXZpZHVhbCBwaXBlbGluZSBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgZW52aXJvbm1lbnQtc3BlY2lmaWMgTURBQSBkZXBsb3ltZW50IHBpcGVsaW5lcyB3aXRoIGRvbWFpbiwgZW52aXJvbm1lbnQsIGFuZCBtb2R1bGUgZmlsdGVyaW5nIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBwaXBlbGluZS1zcGVjaWZpYyBkZXBsb3ltZW50IHBhcmFtZXRlcnMgaW5jbHVkaW5nIHRhcmdldCBmaWx0ZXJzIGZvciBzZWxlY3RpdmUgZGVwbG95bWVudCwgY3VzdG9tIGNvbW1hbmQgZXhlY3V0aW9uLCBhbmQgcGlwZWxpbmUtbGV2ZWwgZGVwbG95bWVudCBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgdGFyZ2V0ZWQgaW5mcmFzdHJ1Y3R1cmUgZGVwbG95bWVudCB3aXRoaW4gbXVsdGktZG9tYWluIGRhdGEgYXJjaGl0ZWN0dXJlcy5cbiAqIFVzZSBjYXNlczogRW52aXJvbm1lbnQtc3BlY2lmaWMgcGlwZWxpbmVzOyBTZWxlY3RpdmUgbW9kdWxlIGRlcGxveW1lbnQ7IERvbWFpbi1maWx0ZXJlZCBkZXBsb3ltZW50czsgUGlwZWxpbmUgY3VzdG9taXphdGlvbjsgVGFyZ2V0ZWQgaW5mcmFzdHJ1Y3R1cmUgdXBkYXRlc1xuICogQVdTOiBBV1MgQ29kZVBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gd2l0aCBkb21haW4vZW52aXJvbm1lbnQvbW9kdWxlIGZpbHRlcmluZyBmb3Igc2VsZWN0aXZlIE1EQUEgZGVwbG95bWVudCB0YXJnZXRpbmcgc3BlY2lmaWMgaW5mcmFzdHJ1Y3R1cmUgY29tcG9uZW50c1xuICogVmFsaWRhdGlvbjogZG9tYWluRmlsdGVyLCBlbnZGaWx0ZXIsIGFuZCBtb2R1bGVGaWx0ZXIgbXVzdCByZWZlcmVuY2UgdmFsaWQgTURBQSBkb21haW5zLCBlbnZpcm9ubWVudHMsIGFuZCBtb2R1bGVzOyBwaXBlbGluZSBtdXN0IGluaGVyaXQgdmFsaWQgQ29tbWFuZHMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ29uZmlnIGV4dGVuZHMgQ29tbWFuZHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhcnJheSBvZiBkb21haW4gbmFtZXMgZm9yIHBpcGVsaW5lIGRlcGxveW1lbnQgZmlsdGVyaW5nIGVuYWJsaW5nIHNlbGVjdGl2ZSBkb21haW4tc3BlY2lmaWMgZGVwbG95bWVudHMuIFJlc3RyaWN0cyBwaXBlbGluZSBleGVjdXRpb24gdG8gb25seSB0aGUgc3BlY2lmaWVkIE1EQUEgZG9tYWlucywgYWxsb3dpbmcgZm9yIHRhcmdldGVkIGRlcGxveW1lbnQgc3RyYXRlZ2llcyBhbmQgZG9tYWluIGlzb2xhdGlvbiBpbiBtdWx0aS1kb21haW4gZGF0YSBhcmNoaXRlY3R1cmVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERvbWFpbi1zcGVjaWZpYyBkZXBsb3ltZW50czsgTXVsdGktZG9tYWluIGZpbHRlcmluZzsgU2VsZWN0aXZlIGRvbWFpbiB1cGRhdGVzOyBEb21haW4gaXNvbGF0aW9uIHN0cmF0ZWdpZXNcbiAgICpcbiAgICogQVdTOiBBV1MgQ29kZVBpcGVsaW5lIGRvbWFpbiBmaWx0ZXJpbmcgZm9yIHNlbGVjdGl2ZSBNREFBIGRvbWFpbiBkZXBsb3ltZW50IGFuZCB0YXJnZXRlZCBpbmZyYXN0cnVjdHVyZSB1cGRhdGVzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTURBQSBkb21haW4gbmFtZXMgaWYgcHJvdmlkZWQ7IGRvbWFpbnMgbXVzdCBleGlzdCBpbiBNREFBIGNvbmZpZ3VyYXRpb247IG9wdGlvbmFsIGZvciBkb21haW4gZmlsdGVyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgZG9tYWluRmlsdGVyPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIGVudmlyb25tZW50IG5hbWVzIGZvciBwaXBlbGluZSBkZXBsb3ltZW50IGZpbHRlcmluZyBlbmFibGluZyBzZWxlY3RpdmUgZW52aXJvbm1lbnQtc3BlY2lmaWMgZGVwbG95bWVudHMuIFJlc3RyaWN0cyBwaXBlbGluZSBleGVjdXRpb24gdG8gb25seSB0aGUgc3BlY2lmaWVkIE1EQUEgZW52aXJvbm1lbnRzLCBhbGxvd2luZyBmb3IgdGFyZ2V0ZWQgZGVwbG95bWVudCBzdHJhdGVnaWVzIGFuZCBlbnZpcm9ubWVudCBpc29sYXRpb24gYWNyb3NzIGRldmVsb3BtZW50LCBzdGFnaW5nLCBhbmQgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRW52aXJvbm1lbnQtc3BlY2lmaWMgZGVwbG95bWVudHM7IE11bHRpLWVudmlyb25tZW50IGZpbHRlcmluZzsgU2VsZWN0aXZlIGVudmlyb25tZW50IHVwZGF0ZXM7IEVudmlyb25tZW50IGlzb2xhdGlvbiBzdHJhdGVnaWVzXG4gICAqXG4gICAqIEFXUzogQVdTIENvZGVQaXBlbGluZSBlbnZpcm9ubWVudCBmaWx0ZXJpbmcgZm9yIHNlbGVjdGl2ZSBNREFBIGVudmlyb25tZW50IGRlcGxveW1lbnQgYW5kIHRhcmdldGVkIGluZnJhc3RydWN0dXJlIHVwZGF0ZXNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBNREFBIGVudmlyb25tZW50IG5hbWVzIGlmIHByb3ZpZGVkOyBlbnZpcm9ubWVudHMgbXVzdCBleGlzdCBpbiBNREFBIGNvbmZpZ3VyYXRpb247IG9wdGlvbmFsIGZvciBlbnZpcm9ubWVudCBmaWx0ZXJpbmdcbiAgICoqL1xuICByZWFkb25seSBlbnZGaWx0ZXI/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgbW9kdWxlIG5hbWVzIGZvciBwaXBlbGluZSBkZXBsb3ltZW50IGZpbHRlcmluZyBlbmFibGluZyBzZWxlY3RpdmUgbW9kdWxlLXNwZWNpZmljIGRlcGxveW1lbnRzLiBSZXN0cmljdHMgcGlwZWxpbmUgZXhlY3V0aW9uIHRvIG9ubHkgdGhlIHNwZWNpZmllZCBNREFBIG1vZHVsZXMsIGFsbG93aW5nIGZvciB0YXJnZXRlZCBkZXBsb3ltZW50IHN0cmF0ZWdpZXMgYW5kIG1vZHVsZSBpc29sYXRpb24gZm9yIHNwZWNpZmljIGluZnJhc3RydWN0dXJlIGNvbXBvbmVudHMgb3Igc2VydmljZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTW9kdWxlLXNwZWNpZmljIGRlcGxveW1lbnRzOyBNdWx0aS1tb2R1bGUgZmlsdGVyaW5nOyBTZWxlY3RpdmUgbW9kdWxlIHVwZGF0ZXM7IENvbXBvbmVudCBpc29sYXRpb24gc3RyYXRlZ2llc1xuICAgKlxuICAgKiBBV1M6IEFXUyBDb2RlUGlwZWxpbmUgbW9kdWxlIGZpbHRlcmluZyBmb3Igc2VsZWN0aXZlIE1EQUEgbW9kdWxlIGRlcGxveW1lbnQgYW5kIHRhcmdldGVkIGluZnJhc3RydWN0dXJlIGNvbXBvbmVudCB1cGRhdGVzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTURBQSBtb2R1bGUgbmFtZXMgaWYgcHJvdmlkZWQ7IG1vZHVsZXMgbXVzdCBleGlzdCBpbiBNREFBIGNvbmZpZ3VyYXRpb247IG9wdGlvbmFsIGZvciBtb2R1bGUgZmlsdGVyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgbW9kdWxlRmlsdGVyPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEZXZPcHNDb25maWdQYXJzZXIgZXh0ZW5kcyBNZGFhQXBwQ29uZmlnUGFyc2VyPERldk9wc0NvbmZpZ0NvbnRlbnRzPiB7XG4gIHB1YmxpYyByZWFkb25seSBkZXZvcHNDb25maWc6IERldk9wc0NvbmZpZ0NvbnRlbnRzO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJvcHM6IE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcykge1xuICAgIHN1cGVyKHN0YWNrLCBwcm9wcywgY29uZmlnU2NoZW1hIGFzIFNjaGVtYSk7XG5cbiAgICB0aGlzLmRldm9wc0NvbmZpZyA9IHRoaXMuY29uZmlnQ29udGVudHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1kYWFEZXZvcHNDREtBcHAgZXh0ZW5kcyBNZGFhQ2RrQXBwIHtcbiAgY29uc3RydWN0b3IocHJvcHM/OiBBcHBQcm9wcykge1xuICAgIHN1cGVyKHsgLi4ucHJvcHMsIC4uLnsgdXNlQm9vdHN0cmFwOiBmYWxzZSB9IH0sIE1kYWFDZGtBcHAucGFyc2VQYWNrYWdlSnNvbihgJHtfX2Rpcm5hbWV9Ly4uL3BhY2thZ2UuanNvbmApKTtcbiAgfVxuICBwcm90ZWN0ZWQgc3ViR2VuZXJhdGVSZXNvdXJjZXMoXG4gICAgc3RhY2s6IFN0YWNrLFxuICAgIGwzQ29uc3RydWN0UHJvcHM6IE1kYWFMM0NvbnN0cnVjdFByb3BzLFxuICAgIHBhcnNlclByb3BzOiBNZGFhQXBwQ29uZmlnUGFyc2VyUHJvcHMsXG4gICkge1xuICAgIGNvbnN0IGFwcENvbmZpZyA9IG5ldyBEZXZPcHNDb25maWdQYXJzZXIoc3RhY2ssIHBhcnNlclByb3BzKTtcbiAgICBuZXcgTWRhYURldm9wc0wzQ29uc3RydWN0KHN0YWNrLCAnZGV2b3BzJywge1xuICAgICAgLi4ubDNDb25zdHJ1Y3RQcm9wcyxcbiAgICAgIC4uLmFwcENvbmZpZy5kZXZvcHNDb25maWcsXG4gICAgfSk7XG4gICAgQXNwZWN0cy5vZihzdGFjaykuYWRkKG5ldyBGaXhDZGtCdWlsZFByb2plY3QoKSk7XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWRhYURldm9wc0wzQ29uc3RydWN0UHJvcHMgZXh0ZW5kcyBNZGFhTDNDb25zdHJ1Y3RQcm9wcywgRGV2T3BzQ29uZmlnQ29udGVudHMge31cblxuZXhwb3J0IGNsYXNzIE1kYWFEZXZvcHNMM0NvbnN0cnVjdCBleHRlbmRzIE1kYWFMM0NvbnN0cnVjdCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0RLX0JPT1RTVFJBUF9DT05URVhUID0gJ2huYjY1OWZkcyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE1kYWFEZXZvcHNMM0NvbnN0cnVjdFByb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNZGFhRGV2b3BzTDNDb25zdHJ1Y3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIGNvbnN0IHBpcGVsaW5lUm9sZSA9IG5ldyBNZGFhUm9sZSh0aGlzLCAncGlwZWxpbmUtcm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAncGlwZWxpbmUnLFxuICAgICAgbmFtaW5nOiB0aGlzLnByb3BzLm5hbWluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2NvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBtZGFhUmVwbyA9IFJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlOYW1lKHRoaXMsICdtZGFhLWltcG9ydC1yZXBvJywgdGhpcy5wcm9wcy5tZGFhQ29kZUNvbW1pdFJlcG8pO1xuICAgIGNvbnN0IGNvbmZpZ3NSZXBvID0gUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUodGhpcywgJ2NvbmZpZ3MtaW1wb3J0LXJlcG8nLCB0aGlzLnByb3BzLmNvbmZpZ3NDb2RlQ29tbWl0UmVwbyk7XG5cbiAgICBjb25zdCBrbXNLZXkgPSBuZXcgTWRhYUttc0tleSh0aGlzLCAna21zLWtleScsIHtcbiAgICAgIG5hbWluZzogdGhpcy5wcm9wcy5uYW1pbmcsXG4gICAgICBrZXlVc2VyUm9sZUlkczogW3BpcGVsaW5lUm9sZS5yb2xlSWRdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGV2T3BzQnVja2V0ID0gbmV3IE1kYWFCdWNrZXQodGhpcywgJ3BpcGVsaW5lLWJ1Y2tldCcsIHtcbiAgICAgIG5hbWluZzogdGhpcy5wcm9wcy5uYW1pbmcsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBrbXNLZXksXG4gICAgfSk7XG5cbiAgICBNZGFhTmFnU3VwcHJlc3Npb25zLmFkZENvZGVSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIGRldk9wc0J1Y2tldCxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnTklTVC44MDAuNTMuUjUtUzNCdWNrZXRSZXBsaWNhdGlvbkVuYWJsZWQnLFxuICAgICAgICAgIHJlYXNvbjogJ0J1Y2tldCBkb2VzIG5vdCBjb250YWluIGRhdGEgYXNzZXRzLiBSZXBsaWNhdGlvbiBub3QgcmVxdWlyZWQuJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnSElQQUEuU2VjdXJpdHktUzNCdWNrZXRSZXBsaWNhdGlvbkVuYWJsZWQnLFxuICAgICAgICAgIHJlYXNvbjogJ0J1Y2tldCBkb2VzIG5vdCBjb250YWluIGRhdGEgYXNzZXRzLiBSZXBsaWNhdGlvbiBub3QgcmVxdWlyZWQuJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnUENJLkRTUy4zMjEtUzNCdWNrZXRSZXBsaWNhdGlvbkVuYWJsZWQnLFxuICAgICAgICAgIHJlYXNvbjogJ0J1Y2tldCBkb2VzIG5vdCBjb250YWluIGRhdGEgYXNzZXRzLiBSZXBsaWNhdGlvbiBub3QgcmVxdWlyZWQuJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBjb25zdCBjb2RlQ29tbWl0RXZlbnRSb2xlID0gbmV3IE1kYWFSb2xlKHRoaXMsICdjb2RlY29tbWl0LWV2ZW50LXJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogJ2NvZGVjb21taXQtZXZlbnQnLFxuICAgICAgbmFtaW5nOiB0aGlzLnByb3BzLm5hbWluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2V2ZW50cy5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2RlQ29tbWl0UmVhZFBvbGljeSA9IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnY29kZWNvbW1pdDpHZXRCcmFuY2gnLCAnY29kZWNvbW1pdDpHZXRDb21taXQnLCAnY29kZWNvbW1pdDpHZXRSZXBvc2l0b3J5JywgJ2NvZGVjb21taXQ6R2l0UHVsbCddLFxuICAgICAgICAgIHJlc291cmNlczogW21kYWFSZXBvLnJlcG9zaXRvcnlBcm4sIGNvbmZpZ3NSZXBvLnJlcG9zaXRvcnlBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2RlQ29tbWl0QWN0aW9uUm9sZSA9IG5ldyBNZGFhUm9sZSh0aGlzLCAnY29kZWNvbW1pdC1hY3Rpb24tcm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnY29kZWNvbW1pdC1hY3Rpb24nLFxuICAgICAgbmFtaW5nOiB0aGlzLnByb3BzLm5hbWluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7IGNvZGVjb21taXRfcmVhZDogY29kZUNvbW1pdFJlYWRQb2xpY3kgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvblJvbGUgPSBuZXcgTWRhYVJvbGUodGhpcywgJ2NvZGVidWlsZC1hY3Rpb24tcm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnY29kZWJ1aWxkLWFjdGlvbicsXG4gICAgICBuYW1pbmc6IHRoaXMucHJvcHMubmFtaW5nLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICBuZXcgU2VydmljZVByaW5jaXBhbCgnY29kZWJ1aWxkLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbmV3IEFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KSxcbiAgICAgICksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQVdTQ2xvdWRGb3JtYXRpb25SZWFkT25seUFjY2VzcycpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvblBvbGljeSA9IG5ldyBQb2xpY3kodGhpcywgJ2NvZGVidWlsZC1wb2xpY3knKTtcbiAgICBjb25zdCBjZGtMb29rdXBSb2xlID0gdGhpcy5pbXBvcnRDZGtSb2xlKHRoaXMsICdsb29rdXAnLCB0aGlzLnByb3BzLmNka0Jvb3RzdHJhcENvbnRleHQpO1xuICAgIGNvbnN0IGNka0RlcGxveVJvbGUgPSB0aGlzLmltcG9ydENka1JvbGUodGhpcywgJ2RlcGxveScsIHRoaXMucHJvcHMuY2RrQm9vdHN0cmFwQ29udGV4dCk7XG4gICAgY29uc3QgY2RrRXhlY1JvbGUgPSB0aGlzLmltcG9ydENka1JvbGUodGhpcywgJ2V4ZWMnLCB0aGlzLnByb3BzLmNka0Jvb3RzdHJhcENvbnRleHQpO1xuICAgIGNvbnN0IGNka0ZpbGVQdWJsaXNoaW5nUm9sZSA9IHRoaXMuaW1wb3J0Q2RrUm9sZSh0aGlzLCAnZmlsZS1wdWJsaXNoaW5nJywgdGhpcy5wcm9wcy5jZGtCb290c3RyYXBDb250ZXh0KTtcbiAgICBjb25zdCBjZGtJbWFnZVB1Ymxpc2hpbmdSb2xlID0gdGhpcy5pbXBvcnRDZGtSb2xlKHRoaXMsICdpbWFnZS1wdWJsaXNoaW5nJywgdGhpcy5wcm9wcy5jZGtCb290c3RyYXBDb250ZXh0KTtcbiAgICBjb25zdCBjZGtCdWNrZXQgPSBCdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgYGNkay1idWNrZXQtaW1wb3J0YCxcbiAgICAgIGBjZGstJHt0aGlzLnByb3BzLmNka0Jvb3RzdHJhcENvbnRleHQgPz8gTWRhYURldm9wc0wzQ29uc3RydWN0LkRFRkFVTFRfQ0RLX0JPT1RTVFJBUF9DT05URVhUfS1hc3NldHMtJHtcbiAgICAgICAgdGhpcy5hY2NvdW50XG4gICAgICB9LSR7dGhpcy5yZWdpb259YCxcbiAgICApO1xuXG4gICAgY29kZUJ1aWxkQWN0aW9uUG9saWN5LmFkZFN0YXRlbWVudHMoXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiAnQVNTVU1FQ0RLUk9MRVMnLFxuICAgICAgICBhY3Rpb25zOiBbJ3N0czpBc3N1bWVSb2xlJ10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGNka0xvb2t1cFJvbGUucm9sZUFybixcbiAgICAgICAgICBjZGtEZXBsb3lSb2xlLnJvbGVBcm4sXG4gICAgICAgICAgY2RrRmlsZVB1Ymxpc2hpbmdSb2xlLnJvbGVBcm4sXG4gICAgICAgICAgY2RrSW1hZ2VQdWJsaXNoaW5nUm9sZS5yb2xlQXJuLFxuICAgICAgICAgIGNka0V4ZWNSb2xlLnJvbGVBcm4sXG4gICAgICAgIF0sXG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvZGVCdWlsZEFjdGlvblBvbGljeS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHNpZDogJ1MzTGlzdCcsXG4gICAgICAgIGFjdGlvbnM6IFsnczM6TGlzdEFsbE15QnVja2V0cyddLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHNpZDogJ0Nsb3VkRm9ybWF0aW9uQ2hhbmdlU2V0cycsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXQnLFxuICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb2RlQnVpbGRBY3Rpb25Qb2xpY3kuYWRkU3RhdGVtZW50cyhcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBzaWQ6ICdDREtTMycsXG4gICAgICAgIGFjdGlvbnM6IFsnczM6R2V0KicsICdzMzpQdXQqJywgJ3MzOkxpc3QqJ10sXG4gICAgICAgIHJlc291cmNlczogW2Nka0J1Y2tldC5idWNrZXRBcm4sIGNka0J1Y2tldC5hcm5Gb3JPYmplY3RzKCcqJyldLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBNZGFhTmFnU3VwcHJlc3Npb25zLmFkZENvZGVSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIGNvZGVCdWlsZEFjdGlvblBvbGljeSxcbiAgICAgIFtcbiAgICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JywgcmVhc29uOiAnUGVybWlzc2lvbnMgYXJlIHNjb3BlZCBsZWFzdCBwcml2aWxlZ2UgZm9yIGRlcGxveW1lbnQgdGltZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdOSVNULjgwMC41My5SNS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgICB7IGlkOiAnSElQQUEuU2VjdXJpdHktSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ1BDSS5EU1MuMzIxLUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICBdLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICAgIGNvZGVCdWlsZEFjdGlvblBvbGljeS5hdHRhY2hUb1JvbGUoY29kZUJ1aWxkQWN0aW9uUm9sZSk7XG4gICAgY29uc3QgbWFudWFsQWN0aW9uUm9sZSA9IG5ldyBNZGFhUm9sZSh0aGlzLCAnbWFudWFsLWFjdGlvbi1yb2xlJywge1xuICAgICAgcm9sZU5hbWU6ICdtYW51YWwtYWN0aW9uJyxcbiAgICAgIG5hbWluZzogdGhpcy5wcm9wcy5uYW1pbmcsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBBY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBhc3N1bWVBY3Rpb25Sb2xlR3JhbnQgPSBjb2RlQnVpbGRBY3Rpb25Sb2xlLmdyYW50QXNzdW1lUm9sZShwaXBlbGluZVJvbGUpO1xuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5wcm9wcy5waXBlbGluZXMgPz8ge30pLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgY29uc3QgcGlwZWxpbmVQcm9wczogTWRhYVBpcGVsaW5lUHJvcHMgPSB7XG4gICAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgICBuYW1pbmc6IHRoaXMucHJvcHMubmFtaW5nLndpdGhNb2R1bGVOYW1lKGBkZXZvcHMtJHtlbnRyeVswXX1gKSxcbiAgICAgICAgcGlwZWxpbmVOYW1lOiB0aGlzLnByb3BzLm5hbWluZy5yZXNvdXJjZU5hbWUoZW50cnlbMF0pLFxuICAgICAgICAuLi5lbnRyeVsxXSxcbiAgICAgICAgcm9sZTogcGlwZWxpbmVSb2xlLFxuICAgICAgICBhcnRpZmFjdEJ1Y2tldDogZGV2T3BzQnVja2V0LFxuICAgICAgICBjb2RlQ29tbWl0QWN0aW9uUm9sZTogY29kZUNvbW1pdEFjdGlvblJvbGUsXG4gICAgICAgIGNvZGVDb21taXRFdmVudFJvbGU6IGNvZGVDb21taXRFdmVudFJvbGUsXG4gICAgICAgIGNvZGVCdWlsZEFjdGlvblJvbGU6IGNvZGVCdWlsZEFjdGlvblJvbGUsXG4gICAgICAgIG1kYWFSZXBvOiBtZGFhUmVwbyxcbiAgICAgICAgY29uZmlnc1JlcG86IGNvbmZpZ3NSZXBvLFxuICAgICAgICBrbXNLZXk6IGttc0tleSxcbiAgICAgICAgbWFudWFsQWN0aW9uUm9sZTogbWFudWFsQWN0aW9uUm9sZSxcbiAgICAgICAgaW5zdGFsbDogWy4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLCAuLi4oZW50cnlbMV0uaW5zdGFsbCA/PyBbXSldLFxuICAgICAgICBwcmU6IFsuLi4odGhpcy5wcm9wcy5wcmUgPz8gW10pLCAuLi4oZW50cnlbMV0ucHJlID8/IFtdKV0sXG4gICAgICAgIHBvc3Q6IFsuLi4odGhpcy5wcm9wcy5wb3N0ID8/IFtdKSwgLi4uKGVudHJ5WzFdLnBvc3QgPz8gW10pXSxcbiAgICAgICAgcHJlRGVwbG95OiB7IC4uLnRoaXMucHJvcHMucHJlRGVwbG95LCAuLi5lbnRyeVsxXS5wcmVEZXBsb3kgfSxcbiAgICAgICAgcHJlRGVwbG95VmFsaWRhdGU6XG4gICAgICAgICAgdGhpcy5wcm9wcy5wcmVEZXBsb3lWYWxpZGF0ZSB8fCBlbnRyeVsxXS5wcmVEZXBsb3lWYWxpZGF0ZVxuICAgICAgICAgICAgPyB7IC4uLnRoaXMucHJvcHMucHJlRGVwbG95VmFsaWRhdGUsIC4uLmVudHJ5WzFdLnByZURlcGxveVZhbGlkYXRlIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBkZXBsb3k6IHsgLi4udGhpcy5wcm9wcy5kZXBsb3ksIC4uLmVudHJ5WzFdLmRlcGxveSB9LFxuICAgICAgICBwb3N0RGVwbG95VmFsaWRhdGU6XG4gICAgICAgICAgdGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGUgfHwgZW50cnlbMV0ucG9zdERlcGxveVZhbGlkYXRlXG4gICAgICAgICAgICA/IHsgLi4udGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGUsIC4uLmVudHJ5WzFdLnBvc3REZXBsb3lWYWxpZGF0ZSB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBpcGVsaW5lID0gbmV3IE1kYWFQaXBlbGluZSh0aGlzLCBgbWRhYS1waXBlbGluZS0ke2VudHJ5WzBdfWAsIHBpcGVsaW5lUHJvcHMpO1xuICAgICAgYXNzdW1lQWN0aW9uUm9sZUdyYW50LmFwcGx5QmVmb3JlKHBpcGVsaW5lKTtcbiAgICB9KTtcblxuICAgIE1kYWFOYWdTdXBwcmVzc2lvbnMuYWRkQ29kZVJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgcGlwZWxpbmVSb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLCByZWFzb246ICdQZXJtaXNzaW9ucyBhcmUgc2NvcGVkIGxlYXN0IHByaXZpbGVnZSBmb3IgZGVwbG95bWVudCB0aW1lLicgfSxcbiAgICAgICAgeyBpZDogJ05JU1QuODAwLjUzLlI1LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdISVBBQS5TZWN1cml0eS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgICB7IGlkOiAnUENJLkRTUy4zMjEtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG4gICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBjb2RlQnVpbGRBY3Rpb25Sb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTQnLCByZWFzb246ICdBV1NDbG91ZEZvcm1hdGlvblJlYWRPbmx5QWNjZXNzIGlzIFJlYWQgT25seSBBY2Nlc3MnIH0sXG4gICAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsIHJlYXNvbjogJ1Blcm1pc3Npb25zIGFyZSBzY29wZWQgbGVhc3QgcHJpdmlsZWdlIGZvciBkZXBsb3ltZW50IHRpbWUuJyB9LFxuICAgICAgICB7IGlkOiAnTklTVC44MDAuNTMuUjUtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ0hJUEFBLlNlY3VyaXR5LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdQQ0kuRFNTLjMyMS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgICBNZGFhTmFnU3VwcHJlc3Npb25zLmFkZENvZGVSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIGNvZGVDb21taXRBY3Rpb25Sb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLCByZWFzb246ICdQZXJtaXNzaW9ucyBhcmUgc2NvcGVkIGxlYXN0IHByaXZpbGVnZSBmb3IgZGVwbG95bWVudCB0aW1lLicgfSxcbiAgICAgICAgeyBpZDogJ05JU1QuODAwLjUzLlI1LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdISVBBQS5TZWN1cml0eS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgICB7IGlkOiAnUENJLkRTUy4zMjEtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG4gICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBjb2RlQ29tbWl0RXZlbnRSb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnTklTVC44MDAuNTMuUjUtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ0hJUEFBLlNlY3VyaXR5LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdQQ0kuRFNTLjMyMS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW1wb3J0Q2RrUm9sZShzY29wZTogQ29uc3RydWN0LCByb2xlTmFtZTogc3RyaW5nLCBjZGtCb290c3RyYXBDb250ZXh0Pzogc3RyaW5nKTogSVJvbGUge1xuICAgIHJldHVybiBSb2xlLmZyb21Sb2xlTmFtZShcbiAgICAgIHNjb3BlLFxuICAgICAgYGNkay0ke3JvbGVOYW1lfS1yb2xlLWltcG9ydGAsXG4gICAgICBgY2RrLSR7Y2RrQm9vdHN0cmFwQ29udGV4dCA/PyBNZGFhRGV2b3BzTDNDb25zdHJ1Y3QuREVGQVVMVF9DREtfQk9PVFNUUkFQX0NPTlRFWFR9LSR7cm9sZU5hbWV9LXJvbGUtJHtcbiAgICAgICAgU3RhY2sub2Yoc2NvcGUpLmFjY291bnRcbiAgICAgIH0tJHtTdGFjay5vZihzY29wZSkucmVnaW9ufWAsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kYWFQaXBlbGluZVByb3BzIGV4dGVuZHMgUGlwZWxpbmVQcm9wcywgU3RhZ2VDb21tYW5kcywgUGlwZWxpbmVDb25maWcge1xuICByZWFkb25seSBuYW1pbmc6IElNZGFhUmVzb3VyY2VOYW1pbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBjb2RlQ29tbWl0QWN0aW9uUm9sZTogSVJvbGU7XG4gIHJlYWRvbmx5IGNvZGVDb21taXRFdmVudFJvbGU6IElSb2xlO1xuICByZWFkb25seSBjb2RlQnVpbGRBY3Rpb25Sb2xlOiBJUm9sZTtcbiAgcmVhZG9ubHkgbWRhYVJlcG86IElSZXBvc2l0b3J5O1xuICByZWFkb25seSBtZGFhQnJhbmNoPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWdzUmVwbzogSVJlcG9zaXRvcnk7XG4gIHJlYWRvbmx5IGNvbmZpZ3NCcmFuY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGttc0tleTogSUtleTtcbiAgcmVhZG9ubHkgbWFudWFsQWN0aW9uUm9sZTogSVJvbGU7XG59XG5cbmV4cG9ydCBjbGFzcyBNZGFhUGlwZWxpbmUgZXh0ZW5kcyBQaXBlbGluZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE1kYWFQaXBlbGluZVByb3BzO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWRhYVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICBjb25zdCBzb3VyY2VTdGFnZSA9IHRoaXMuYWRkU3RhZ2UoeyBzdGFnZU5hbWU6ICdTb3VyY2UnIH0pO1xuICAgIGNvbnN0IG1kYWFTb3VyY2VPdXRwdXQgPSBuZXcgQXJ0aWZhY3QoJ01EQUEnKTtcbiAgICBjb25zdCBtZGFhU291cmNlQWN0aW9uID0gdGhpcy5jcmVhdGVDb2RlQ29tbWl0U291cmNlQWN0aW9uKFxuICAgICAgJ21kYWEnLFxuICAgICAgbWRhYVNvdXJjZU91dHB1dCxcbiAgICAgIHRoaXMucHJvcHMuY29kZUNvbW1pdEFjdGlvblJvbGUsXG4gICAgICB0aGlzLnByb3BzLmNvZGVDb21taXRFdmVudFJvbGUsXG4gICAgICB0aGlzLnByb3BzLm1kYWFSZXBvLFxuICAgICAgdGhpcy5wcm9wcy5tZGFhQnJhbmNoID8/ICdtYWluJyxcbiAgICApO1xuICAgIGNvbnN0IGNvbmZpZ1NvdXJjZU91dHB1dCA9IG5ldyBBcnRpZmFjdCgnQ09ORklHUycpO1xuICAgIGNvbnN0IGNvbmZpZ1NvdXJjZUFjdGlvbiA9IHRoaXMuY3JlYXRlQ29kZUNvbW1pdFNvdXJjZUFjdGlvbihcbiAgICAgICdjb25maWdzJyxcbiAgICAgIGNvbmZpZ1NvdXJjZU91dHB1dCxcbiAgICAgIHRoaXMucHJvcHMuY29kZUNvbW1pdEFjdGlvblJvbGUsXG4gICAgICB0aGlzLnByb3BzLmNvZGVDb21taXRFdmVudFJvbGUsXG4gICAgICB0aGlzLnByb3BzLmNvbmZpZ3NSZXBvLFxuICAgICAgdGhpcy5wcm9wcy5jb25maWdzQnJhbmNoID8/ICdtYWluJyxcbiAgICApO1xuICAgIHNvdXJjZVN0YWdlLmFkZEFjdGlvbihtZGFhU291cmNlQWN0aW9uKTtcbiAgICBzb3VyY2VTdGFnZS5hZGRBY3Rpb24oY29uZmlnU291cmNlQWN0aW9uKTtcblxuICAgIGNvbnN0IHBpcGVsaW5lUHJvamVjdHM6IFBpcGVsaW5lUHJvamVjdFtdID0gW107XG4gICAgY29uc3QgcHJlRGVwbG95T3V0cHV0ID0gbmV3IEFydGlmYWN0KCdQUkVERVBMT1lfT1VUUFVUJyk7XG4gICAgdGhpcy5hZGRQcmVEZXBsb3lTdGFnZShjb25maWdTb3VyY2VPdXRwdXQsIG1kYWFTb3VyY2VPdXRwdXQsIHByZURlcGxveU91dHB1dCwgcGlwZWxpbmVQcm9qZWN0cyk7XG4gICAgdGhpcy5hZGRQcmVEZXBsb3lWYWxpZGF0ZVN0YWdlKHByZURlcGxveU91dHB1dCwgcGlwZWxpbmVQcm9qZWN0cyk7XG4gICAgdGhpcy5hZGREZXBsb3lTdGFnZShwcmVEZXBsb3lPdXRwdXQsIHBpcGVsaW5lUHJvamVjdHMpO1xuICAgIHRoaXMuYWRkUG9zdERlcGxveVZhbGlkYXRlU3RhZ2UocHJlRGVwbG95T3V0cHV0LCBwaXBlbGluZVByb2plY3RzKTtcblxuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvblBvbGljeSA9IG5ldyBQb2xpY3kodGhpcywgJ2NvZGVidWlsZC1hY3Rpb24tcG9saWN5Jywge1xuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2NvZGVidWlsZDpTdGFydEJ1aWxkJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBwaXBlbGluZVByb2plY3RzLm1hcCh4ID0+IHgucHJvamVjdEFybiksXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIE1kYWFOYWdTdXBwcmVzc2lvbnMuYWRkQ29kZVJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgY29kZUJ1aWxkQWN0aW9uUG9saWN5LFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnTklTVC44MDAuNTMuUjUtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ0hJUEFBLlNlY3VyaXR5LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdQQ0kuRFNTLjMyMS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIHRoaXMucHJvcHMuY29kZUJ1aWxkQWN0aW9uUm9sZS5hdHRhY2hJbmxpbmVQb2xpY3koY29kZUJ1aWxkQWN0aW9uUG9saWN5KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUG9zdERlcGxveVZhbGlkYXRlU3RhZ2UocHJlRGVwbG95T3V0cHV0OiBBcnRpZmFjdCwgcGlwZWxpbmVQcm9qZWN0czogUGlwZWxpbmVQcm9qZWN0W10pIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGUpIHtcbiAgICAgIGNvbnN0IFt2YWxpZGF0ZUFjdGlvbiwgdmFsaWRhdGVQcm9qZWN0XSA9IHRoaXMuY3JlYXRlQ29kZUJ1aWxkQWN0aW9uKFxuICAgICAgICAnUG9zdERlcGxveVZhbGlkYXRlJyxcbiAgICAgICAgcHJlRGVwbG95T3V0cHV0LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbGxDb21tYW5kczogWy4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLCAuLi4odGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGU/Lmluc3RhbGwgPz8gW10pXSxcbiAgICAgICAgICBwcmVDb21tYW5kczogdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbW1hbmRzOiBbLi4uKHRoaXMucHJvcHMucG9zdERlcGxveVZhbGlkYXRlPy5jb21tYW5kcyA/PyBbXSldLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgcGlwZWxpbmVQcm9qZWN0cy5wdXNoKHZhbGlkYXRlUHJvamVjdCk7XG4gICAgICBjb25zdCBwb3N0RGVwbG95VmFsaWRhdGVTdGFnZSA9IHRoaXMuYWRkU3RhZ2Uoe1xuICAgICAgICBzdGFnZU5hbWU6ICdQb3N0LURlcGxveS1WYWxpZGF0ZScsXG4gICAgICB9KTtcbiAgICAgIHBvc3REZXBsb3lWYWxpZGF0ZVN0YWdlLmFkZEFjdGlvbih2YWxpZGF0ZUFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZXBsb3lTdGFnZShwcmVEZXBsb3lPdXRwdXQ6IEFydGlmYWN0LCBwaXBlbGluZVByb2plY3RzOiBQaXBlbGluZVByb2plY3RbXSkge1xuICAgIGNvbnN0IGRlcGxveVN0YWdlID0gdGhpcy5hZGRTdGFnZSh7IHN0YWdlTmFtZTogJ0RlcGxveScgfSk7XG4gICAgY29uc3QgW2RlcGxveUFjdGlvbiwgZGVwbG95UHJvamVjdF0gPSB0aGlzLmNyZWF0ZUNvZGVCdWlsZEFjdGlvbihcbiAgICAgICdEZXBsb3knLFxuXG4gICAgICBwcmVEZXBsb3lPdXRwdXQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7XG4gICAgICAgIGluc3RhbGxDb21tYW5kczogWyduIDE4JywgLi4uKHRoaXMucHJvcHMuaW5zdGFsbCA/PyBbXSksIC4uLih0aGlzLnByb3BzLmRlcGxveT8uaW5zdGFsbCA/PyBbXSldLFxuICAgICAgICBwcmVDb21tYW5kczogWy4uLih0aGlzLnByb3BzLnByZSA/PyBbXSksIC4uLih0aGlzLnByb3BzLmRlcGxveT8ucHJlID8/IFtdKV0sXG4gICAgICAgIGNvbW1hbmRzOiBbdGhpcy5jcmVhdGVNZGFhQ29tbWFuZCgnZGVwbG95JyldLFxuICAgICAgICBwb3N0Q29tbWFuZHM6IFsuLi4odGhpcy5wcm9wcy5wb3N0ID8/IFtdKSwgLi4uKHRoaXMucHJvcHMuZGVwbG95Py5wb3N0ID8/IFtdKV0sXG4gICAgICB9LFxuICAgICk7XG4gICAgZGVwbG95U3RhZ2UuYWRkQWN0aW9uKGRlcGxveUFjdGlvbik7XG4gICAgcGlwZWxpbmVQcm9qZWN0cy5wdXNoKGRlcGxveVByb2plY3QpO1xuICB9XG4gIHByaXZhdGUgYWRkUHJlRGVwbG95VmFsaWRhdGVTdGFnZShwcmVEZXBsb3lPdXRwdXQ6IEFydGlmYWN0LCBwaXBlbGluZVByb2plY3RzOiBQaXBlbGluZVByb2plY3RbXSkge1xuICAgIGNvbnN0IHByZURlcGxveVZhbGlkYXRlU3RhZ2UgPSB0aGlzLmFkZFN0YWdlKHtcbiAgICAgIHN0YWdlTmFtZTogJ1ByZS1EZXBsb3ktVmFsaWRhdGUnLFxuICAgIH0pO1xuICAgIGlmICh0aGlzLnByb3BzLnByZURlcGxveVZhbGlkYXRlKSB7XG4gICAgICBjb25zdCBbdmFsaWRhdGVBY3Rpb24sIHZhbGlkYXRlUHJvamVjdF0gPSB0aGlzLmNyZWF0ZUNvZGVCdWlsZEFjdGlvbihcbiAgICAgICAgJ1ByZURlcGxveVZhbGlkYXRlJyxcbiAgICAgICAgcHJlRGVwbG95T3V0cHV0LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbGxDb21tYW5kczogWy4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLCAuLi4odGhpcy5wcm9wcy5wcmVEZXBsb3lWYWxpZGF0ZT8uaW5zdGFsbCA/PyBbXSldLFxuICAgICAgICAgIHByZUNvbW1hbmRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgY29tbWFuZHM6IFsuLi4odGhpcy5wcm9wcy5wcmVEZXBsb3lWYWxpZGF0ZT8uY29tbWFuZHMgPz8gW10pXSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBwcmVEZXBsb3lWYWxpZGF0ZVN0YWdlLmFkZEFjdGlvbih2YWxpZGF0ZUFjdGlvbik7XG4gICAgICBwaXBlbGluZVByb2plY3RzLnB1c2godmFsaWRhdGVQcm9qZWN0KTtcbiAgICB9XG4gICAgcHJlRGVwbG95VmFsaWRhdGVTdGFnZS5hZGRBY3Rpb24oXG4gICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb24oe1xuICAgICAgICBhY3Rpb25OYW1lOiAnQXBwcm92ZScsXG4gICAgICAgIHJvbGU6IHRoaXMucHJvcHMubWFudWFsQWN0aW9uUm9sZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFByZURlcGxveVN0YWdlKFxuICAgIGNvbmZpZ1NvdXJjZU91dHB1dDogQXJ0aWZhY3QsXG4gICAgbWRhYVNvdXJjZU91dHB1dDogQXJ0aWZhY3QsXG4gICAgcHJlRGVwbG95T3V0cHV0OiBBcnRpZmFjdCxcbiAgICBwaXBlbGluZVByb2plY3RzOiBQaXBlbGluZVByb2plY3RbXSxcbiAgKTogUGlwZWxpbmVQcm9qZWN0IHtcbiAgICBjb25zdCBwcmVEZXBsb3lTdGFnZSA9IHRoaXMuYWRkU3RhZ2UoeyBzdGFnZU5hbWU6ICdQcmUtRGVwbG95JyB9KTtcblxuICAgIGNvbnN0IFtkaWZmQWN0aW9uLCBkaWZmUHJvamVjdF0gPSB0aGlzLmNyZWF0ZUNvZGVCdWlsZEFjdGlvbihcbiAgICAgICdTeW50aC1BbmQtRGlmZicsXG4gICAgICBjb25maWdTb3VyY2VPdXRwdXQsXG4gICAgICBbbWRhYVNvdXJjZU91dHB1dF0sXG4gICAgICBbcHJlRGVwbG95T3V0cHV0XSxcbiAgICAgIHtcbiAgICAgICAgaW5zdGFsbENvbW1hbmRzOiBbXG4gICAgICAgICAgJ24gMTgnLFxuICAgICAgICAgICdsbiAtcyAkQ09ERUJVSUxEX1NSQ19ESVJfTURBQSAuL21kYWEnLFxuICAgICAgICAgIC4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLFxuICAgICAgICAgIC4uLih0aGlzLnByb3BzLnByZURlcGxveT8uaW5zdGFsbCA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIHByZUNvbW1hbmRzOiBbLi4uKHRoaXMucHJvcHMucHJlID8/IFtdKSwgLi4uKHRoaXMucHJvcHMucHJlRGVwbG95Py5wcmUgPz8gW10pXSxcbiAgICAgICAgY29tbWFuZHM6IFt0aGlzLmNyZWF0ZU1kYWFDb21tYW5kKCdkaWZmJyldLFxuICAgICAgICBwb3N0Q29tbWFuZHM6IFsuLi4odGhpcy5wcm9wcy5wb3N0ID8/IFtdKSwgLi4uKHRoaXMucHJvcHMucHJlRGVwbG95Py5wb3N0ID8/IFtdKV0sXG4gICAgICB9LFxuICAgICk7XG4gICAgcHJlRGVwbG95U3RhZ2UuYWRkQWN0aW9uKGRpZmZBY3Rpb24pO1xuICAgIHBpcGVsaW5lUHJvamVjdHMucHVzaChkaWZmUHJvamVjdCk7XG4gICAgcmV0dXJuIGRpZmZQcm9qZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb2RlQ29tbWl0U291cmNlQWN0aW9uKFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvdXRwdXQ6IEFydGlmYWN0LFxuICAgIHJvbGU6IElSb2xlLFxuICAgIGV2ZW50Um9sZTogSVJvbGUsXG4gICAgcmVwb3NpdG9yeTogSVJlcG9zaXRvcnksXG4gICAgYnJhbmNoOiBzdHJpbmcsXG4gICk6IENvZGVDb21taXRTb3VyY2VBY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQ29kZUNvbW1pdFNvdXJjZUFjdGlvbih7XG4gICAgICBvdXRwdXQsXG4gICAgICBhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuICAgICAgcm9sZTogcm9sZSxcbiAgICAgIHJ1bk9yZGVyOiB1bmRlZmluZWQsXG4gICAgICBicmFuY2g6IGJyYW5jaCxcbiAgICAgIHRyaWdnZXI6IENvZGVDb21taXRUcmlnZ2VyLkVWRU5UUyxcbiAgICAgIHJlcG9zaXRvcnk6IHJlcG9zaXRvcnksXG4gICAgICBldmVudFJvbGU6IGV2ZW50Um9sZSxcbiAgICAgIGNvZGVCdWlsZENsb25lT3V0cHV0OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNZGFhQ29tbWFuZChtZGFhQWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1kYWFDbWQgPSBbYC4vbWRhYS9iaW4vbWRhYSAke21kYWFBY3Rpb259YF07XG4gICAgaWYgKHRoaXMucHJvcHMuZG9tYWluRmlsdGVyKSB7XG4gICAgICBtZGFhQ21kLnB1c2goYC1kICR7dGhpcy5wcm9wcy5kb21haW5GaWx0ZXIuam9pbignLCcpfWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5lbnZGaWx0ZXIpIHtcbiAgICAgIG1kYWFDbWQucHVzaChgLWUgJHt0aGlzLnByb3BzLmVudkZpbHRlci5qb2luKCcsJyl9YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1vZHVsZUZpbHRlcikge1xuICAgICAgbWRhYUNtZC5wdXNoKGAtbSAke3RoaXMucHJvcHMubW9kdWxlRmlsdGVyLmpvaW4oJywnKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG1kYWFDbWQuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb2RlQnVpbGRBY3Rpb24oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGlucHV0OiBBcnRpZmFjdCxcbiAgICBleHRyYUlucHV0cz86IEFydGlmYWN0W10sXG4gICAgb3V0cHV0cz86IEFydGlmYWN0W10sXG4gICAgY29tbWFuZHM/OiB7XG4gICAgICBpbnN0YWxsQ29tbWFuZHM/OiBzdHJpbmdbXTtcbiAgICAgIHByZUNvbW1hbmRzPzogc3RyaW5nW107XG4gICAgICBjb21tYW5kcz86IHN0cmluZ1tdO1xuICAgICAgcG9zdENvbW1hbmRzPzogc3RyaW5nW107XG4gICAgfSxcbiAgKTogW0NvZGVCdWlsZEFjdGlvbiwgUGlwZWxpbmVQcm9qZWN0XSB7XG4gICAgY29uc3QgcHJvamVjdFByb3BzOiBQaXBlbGluZVByb2plY3RQcm9wcyA9IHtcbiAgICAgIHByb2plY3ROYW1lOiB0aGlzLnByb3BzLm5hbWluZy5yZXNvdXJjZU5hbWUoYWN0aW9uTmFtZSksXG4gICAgICBlbmNyeXB0aW9uS2V5OiB0aGlzLnByb3BzLmttc0tleSxcbiAgICAgIHJvbGU6IHRoaXMucHJvcHMuY29kZUJ1aWxkQWN0aW9uUm9sZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5YMl9MQVJHRSxcbiAgICAgICAgYnVpbGRJbWFnZTogTGludXhCdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yXzUsXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdCh7XG4gICAgICAgIHZlcnNpb246ICcwLjInLFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBpbnN0YWxsOiB7XG4gICAgICAgICAgICBjb21tYW5kczogY29tbWFuZHM/Lmluc3RhbGxDb21tYW5kcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IGNvbW1hbmRzPy5wcmVDb21tYW5kcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogY29tbWFuZHM/LmNvbW1hbmRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcG9zdF9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IGNvbW1hbmRzPy5wb3N0Q29tbWFuZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgZmlsZXM6IFsnKiovKiddLFxuICAgICAgICAgICdlbmFibGUtc3ltbGlua3MnOiAneWVzJyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBjb2RlQnVpbGRQcm9qZWN0ID0gbmV3IFBpcGVsaW5lUHJvamVjdCh0aGlzLCBgY29kZWJ1aWxkLXByb2plY3QtJHthY3Rpb25OYW1lfWAsIHByb2plY3RQcm9wcyk7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uUHJvcHM6IENvZGVCdWlsZEFjdGlvblByb3BzID0ge1xuICAgICAgaW5wdXQ6IGlucHV0LFxuICAgICAgZXh0cmFJbnB1dHM6IGV4dHJhSW5wdXRzLFxuICAgICAgYWN0aW9uTmFtZTogYWN0aW9uTmFtZSxcbiAgICAgIHByb2plY3Q6IGNvZGVCdWlsZFByb2plY3QsXG4gICAgICByb2xlOiB0aGlzLnByb3BzLmNvZGVCdWlsZEFjdGlvblJvbGUsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIH07XG5cbiAgICBjb25zdCBhY3Rpb24gPSBuZXcgQ29kZUJ1aWxkQWN0aW9uKGNvZGVCdWlsZEFjdGlvblByb3BzKTtcbiAgICByZXR1cm4gW2FjdGlvbiwgY29kZUJ1aWxkUHJvamVjdF07XG4gIH1cbn1cblxuY2xhc3MgRml4Q2RrQnVpbGRQcm9qZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHB1YmxpYyB2aXNpdChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAoY29uc3RydWN0Lm5vZGUuaWQuc3RhcnRzV2l0aCgnY29kZWJ1aWxkLXByb2plY3QnKSkge1xuICAgICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICAgIGNvbnN0cnVjdCxcbiAgICAgICAgW1xuICAgICAgICAgIHsgaWQ6ICdISVBBQS5TZWN1cml0eS1Db2RlQnVpbGRQcm9qZWN0U291cmNlUmVwb1VybCcsIHJlYXNvbjogJ1BpcGVsaW5lIHNvdXJjZSBpcyBDb2RlQ29tbWl0LicgfSxcbiAgICAgICAgICB7IGlkOiAnUENJLkRTUy4zMjEtQ29kZUJ1aWxkUHJvamVjdFNvdXJjZVJlcG9VcmwnLCByZWFzb246ICdQaXBlbGluZSBzb3VyY2UgaXMgQ29kZUNvbW1pdC4nIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2b3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGV2b3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILHVDQUFrSDtBQUNsSCw2REFBb0Q7QUFDcEQsNkRBQXNEO0FBQ3RELHlEQUErRTtBQUUvRSwyREFBcUQ7QUFFckQsNkNBQWdFO0FBQ2hFLDZEQU1tQztBQUNuQywrREFBcUU7QUFDckUsbUVBQStGO0FBQy9GLG1GQU04QztBQUM5QyxpREFXNkI7QUFFN0IsK0NBQTRDO0FBRTVDLHFEQUFxRDtBQUNyRCxtREFBMEQsQ0FBQyxTQUFTO0FBK0pwRSxNQUFhLGtCQUFtQixTQUFRLHlCQUF5QztJQUcvRSxZQUFZLEtBQVksRUFBRSxLQUErQjtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFzQixDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVJELGdEQVFDO0FBRUQsTUFBYSxnQkFBaUIsU0FBUSxnQkFBVTtJQUM5QyxZQUFZLEtBQWdCO1FBQzFCLEtBQUssQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxnQkFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsU0FBUyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUNTLG9CQUFvQixDQUM1QixLQUFZLEVBQ1osZ0JBQXNDLEVBQ3RDLFdBQXFDO1FBRXJDLE1BQU0sU0FBUyxHQUFHLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUN6QyxHQUFHLGdCQUFnQjtZQUNuQixHQUFHLFNBQVMsQ0FBQyxZQUFZO1NBQzFCLENBQUMsQ0FBQztRQUNILHFCQUFPLENBQUMs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Q3BDLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLDBDQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBdFBELG9DQXNQQztBQUVELE1BQU0sa0JBQWtCO0lBQ2YsS0FBSyxDQUFDLFNBQXFCO1FBQ2hDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN0RCwrQkFBbUIsQ0FBQywyQkFBMkIsQ0FDN0MsU0FBUyxFQUNUO2dCQUNFLEVBQUUsRUFBRSxFQUFFLDhDQUE4QyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtnQkFDaEcsRUFBRSxFQUFFLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLGdDQUFnQyxFQUFFO2FBQzlGLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUFwcENvbmZpZ1BhcnNlciwgTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzLCBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzLCBNZGFhQ2RrQXBwIH0gZnJvbSAnQGF3cy1tZGFhL2FwcCc7XG5pbXBvcnQgeyBNZGFhUm9sZSB9IGZyb20gJ0Bhd3MtbWRhYS9pYW0tY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNZGFhS21zS2V5IH0gZnJvbSAnQGF3cy1tZGFhL2ttcy1jb25zdHJ1Y3RzJztcbmltcG9ydCB7IE1kYWFMM0NvbnN0cnVjdCwgTWRhYUwzQ29uc3RydWN0UHJvcHMgfSBmcm9tICdAYXdzLW1kYWEvbDMtY29uc3RydWN0JztcbmltcG9ydCB7IElNZGFhUmVzb3VyY2VOYW1pbmcgfSBmcm9tICdAYXdzLW1kYWEvbmFtaW5nJztcbmltcG9ydCB7IE1kYWFCdWNrZXQgfSBmcm9tICdAYXdzLW1kYWEvczMtY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICdhanYnO1xuaW1wb3J0IHsgQXBwUHJvcHMsIEFzcGVjdHMsIElBc3BlY3QsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQnVpbGRTcGVjLFxuICBDb21wdXRlVHlwZSxcbiAgTGludXhCdWlsZEltYWdlLFxuICBQaXBlbGluZVByb2plY3QsXG4gIFBpcGVsaW5lUHJvamVjdFByb3BzLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IElSZXBvc2l0b3J5LCBSZXBvc2l0b3J5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVjb21taXQnO1xuaW1wb3J0IHsgQXJ0aWZhY3QsIFBpcGVsaW5lLCBQaXBlbGluZVByb3BzLCBQaXBlbGluZVR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCB7XG4gIENvZGVCdWlsZEFjdGlvbixcbiAgQ29kZUJ1aWxkQWN0aW9uUHJvcHMsXG4gIENvZGVDb21taXRTb3VyY2VBY3Rpb24sXG4gIENvZGVDb21taXRUcmlnZ2VyLFxuICBNYW51YWxBcHByb3ZhbEFjdGlvbixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjY291bnRQcmluY2lwYWwsXG4gIENvbXBvc2l0ZVByaW5jaXBhbCxcbiAgRWZmZWN0LFxuICBJUm9sZSxcbiAgTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5LFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGNvbmZpZ1NjaGVtYSBmcm9tICcuL2NvbmZpZy1zY2hlbWEuanNvbic7XG5pbXBvcnQgeyBNZGFhTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnQGF3cy1tZGFhL2NvbnN0cnVjdCc7IC8vTk9TT05BUlxuXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBWYWxpZGF0aW9uIHN0YWdlIGNvbW1hbmQgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIENvZGVCdWlsZCB2YWxpZGF0aW9uIHByb2plY3RzIHRoYXQgZXhlY3V0ZSBpbmZyYXN0cnVjdHVyZSB0ZXN0aW5nIGFuZCBjb21wbGlhbmNlIHZlcmlmaWNhdGlvbiBkdXJpbmcgTURBQSBkZXBsb3ltZW50IHBpcGVsaW5lcy4gRGVmaW5lcyBpbnN0YWxsIGRlcGVuZGVuY2llcyBhbmQgdmFsaWRhdGlvbiBjb21tYW5kcyB0aGF0IHJ1biBpbiBDb2RlQnVpbGQgZW52aXJvbm1lbnRzIHRvIHZlcmlmeSBkZXBsb3llZCBpbmZyYXN0cnVjdHVyZSBtZWV0cyByZXF1aXJlbWVudHMgYmVmb3JlIHBpcGVsaW5lIHByb2dyZXNzaW9uLlxuICpcbiAqIFVzZSBjYXNlczogSW5mcmFzdHJ1Y3R1cmUgc21va2UgdGVzdGluZzsgQ29tcGxpYW5jZSB2ZXJpZmljYXRpb247IERlcGxveW1lbnQgdmFsaWRhdGlvbjsgUXVhbGl0eSBnYXRlIGVuZm9yY2VtZW50OyBQb3N0LWRlcGxveW1lbnQgdmVyaWZpY2F0aW9uXG4gKlxuICogQVdTOiBBV1MgQ29kZUJ1aWxkIHZhbGlkYXRpb24gcHJvamVjdCBjb21tYW5kcyB3aXRoIGluc3RhbGwgZGVwZW5kZW5jaWVzIGFuZCB2YWxpZGF0aW9uIHNjcmlwdCBleGVjdXRpb24gZm9yIHBpcGVsaW5lIHF1YWxpdHkgZ2F0ZXNcbiAqXG4gKiBWYWxpZGF0aW9uOiBpbnN0YWxsIGNvbW1hbmRzIG11c3QgYmUgdmFsaWQgcGFja2FnZSBtYW5hZ2VyIGNvbW1hbmRzOyBjb21tYW5kcyBtdXN0IGJlIGV4ZWN1dGFibGUgc2hlbGwgc2NyaXB0cyB0aGF0IHJldHVybiBhcHByb3ByaWF0ZSBleGl0IGNvZGVzIGZvciBwaXBlbGluZSBzdWNjZXNzL2ZhaWx1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZVN0YWdlQ29tbWFuZHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhcnJheSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiBjb21tYW5kcyBmb3IgQ29kZUJ1aWxkIHZhbGlkYXRpb24gZW52aXJvbm1lbnQgc2V0dXAgZW5hYmxpbmcgdGVzdGluZyB0b29sIGluc3RhbGxhdGlvbiBhbmQgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBkdXJpbmcgdGhlIGluc3RhbGwgcGhhc2UgdG8gaW5zdGFsbCByZXF1aXJlZCB0ZXN0aW5nIGZyYW1ld29ya3MsIHZhbGlkYXRpb24gdG9vbHMsIGFuZCBkZXBlbmRlbmNpZXMgbmVlZGVkIGZvciBpbmZyYXN0cnVjdHVyZSB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVGVzdGluZyB0b29sIGluc3RhbGxhdGlvbjsgVmFsaWRhdGlvbiBkZXBlbmRlbmN5IHNldHVwOyBUZXN0aW5nIGZyYW1ld29yayBpbnN0YWxsYXRpb247IEVudmlyb25tZW50IHByZXBhcmF0aW9uOyBWYWxpZGF0aW9uIHRvb2wgc2V0dXBcbiAgICpcbiAgICogQVdTOiBBV1MgQ29kZUJ1aWxkIHZhbGlkYXRpb24gaW5zdGFsbCBwaGFzZSBjb21tYW5kcyBmb3IgdGVzdGluZyB0b29sIGluc3RhbGxhdGlvbiBhbmQgdmFsaWRhdGlvbiBlbnZpcm9ubWVudCBzZXR1cFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIHNoZWxsIGNvbW1hbmRzIGlmIHByb3ZpZGVkOyBjb21tYW5kcyBleGVjdXRlIGluIENvZGVCdWlsZCBMaW51eCBlbnZpcm9ubWVudDsgb3B0aW9uYWwgZm9yIHZhbGlkYXRpb24gaW5zdGFsbCBwaGFzZVxuICAgKiovXG4gIHJlYWRvbmx5IGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgdmFsaWRhdGlvbiBjb21tYW5kcyBmb3IgaW5mcmFzdHJ1Y3R1cmUgdGVzdGluZyBhbmQgY29tcGxpYW5jZSB2ZXJpZmljYXRpb24gZW5hYmxpbmcgcXVhbGl0eSBnYXRlIGVuZm9yY2VtZW50LiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB0byB2YWxpZGF0ZSBkZXBsb3llZCBpbmZyYXN0cnVjdHVyZSwgcGVyZm9ybSBzbW9rZSB0ZXN0cywgYW5kIHZlcmlmeSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBiZWZvcmUgcGlwZWxpbmUgcHJvZ3Jlc3Npb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogSW5mcmFzdHJ1Y3R1cmUgc21va2UgdGVzdGluZzsgQ29tcGxpYW5jZSB2ZXJpZmljYXRpb247IFF1YWxpdHkgZ2F0ZSBlbmZvcmNlbWVudDsgUG9zdC1kZXBsb3ltZW50IHZhbGlkYXRpb247IEluZnJhc3RydWN0dXJlIHRlc3RpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgQ29kZUJ1aWxkIHZhbGlkYXRpb24gY29tbWFuZHMgZm9yIGluZnJhc3RydWN0dXJlIHRlc3RpbmcgYW5kIGNvbXBsaWFuY2UgdmVyaWZpY2F0aW9uIHdpdGggcXVhbGl0eSBnYXRlIGVuZm9yY2VtZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIG11c3QgcmV0dXJuIGFwcHJvcHJpYXRlIGV4aXQgY29kZXMgZm9yIHBpcGVsaW5lIHN1Y2Nlc3MvZmFpbHVyZTsgb3B0aW9uYWwgZm9yIHZhbGlkYXRpb24gZXhlY3V0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgY29tbWFuZHM/OiBzdHJpbmdbXTtcbn1cbi8qKlxuICogUS1FTkhBTkNFRC1JTlRFUkZBQ0VcbiAqIERlcGxveW1lbnQgc3RhZ2UgY29tbWFuZCBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgQ29kZUJ1aWxkIHByb2plY3RzIHRoYXQgZXhlY3V0ZSBjdXN0b20gc2NyaXB0cyBkdXJpbmcgTURBQSBkZXBsb3ltZW50IHBpcGVsaW5lIHN0YWdlcy4gRGVmaW5lcyBpbnN0YWxsIGRlcGVuZGVuY2llcywgcHJlLWRlcGxveW1lbnQgcHJlcGFyYXRpb24gY29tbWFuZHMsIGFuZCBwb3N0LWRlcGxveW1lbnQgY2xlYW51cCBjb21tYW5kcyB0aGF0IHJ1biBpbiBDb2RlQnVpbGQgZW52aXJvbm1lbnRzIHRvIGN1c3RvbWl6ZSBkZXBsb3ltZW50IGJlaGF2aW9yIGFuZCBwZXJmb3JtIGVudmlyb25tZW50LXNwZWNpZmljIG9wZXJhdGlvbnMuXG4gKlxuICogVXNlIGNhc2VzOiBFbnZpcm9ubWVudCBwcmVwYXJhdGlvbjsgQ3VzdG9tIGRlcGxveW1lbnQgc2NyaXB0czsgUG9zdC1kZXBsb3ltZW50IGNsZWFudXA7IEluZnJhc3RydWN0dXJlIGN1c3RvbWl6YXRpb247IEVudmlyb25tZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBDb2RlQnVpbGQgcHJvamVjdCBjb21tYW5kcyB3aXRoIGluc3RhbGwsIHByZS1leGVjdXRpb24sIGFuZCBwb3N0LWV4ZWN1dGlvbiBob29rcyBmb3IgZGVwbG95bWVudCBzdGFnZSBjdXN0b21pemF0aW9uXG4gKlxuICogVmFsaWRhdGlvbjogaW5zdGFsbCBjb21tYW5kcyBtdXN0IGJlIHZhbGlkIHBhY2thZ2UgbWFuYWdlciBjb21tYW5kczsgcHJlL3Bvc3QgY29tbWFuZHMgbXVzdCBiZSBleGVjdXRhYmxlIHNoZWxsIHNjcmlwdHM7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VDb21tYW5kcyB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIHBhY2thZ2UgaW5zdGFsbGF0aW9uIGNvbW1hbmRzIGZvciBDb2RlQnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgZW5hYmxpbmcgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCB0b29sIGluc3RhbGxhdGlvbi4gRGVmaW5lcyBjb21tYW5kcyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgZHVyaW5nIHRoZSBpbnN0YWxsIHBoYXNlIHRvIGluc3RhbGwgcmVxdWlyZWQgcGFja2FnZXMsIGRlcGVuZGVuY2llcywgYW5kIHRvb2xzIG5lZWRlZCBmb3IgZGVwbG95bWVudCBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERlcGVuZGVuY3kgaW5zdGFsbGF0aW9uOyBUb29sIHNldHVwOyBQYWNrYWdlIG1hbmFnZW1lbnQ7IEVudmlyb25tZW50IHByZXBhcmF0aW9uOyBCdWlsZCB0b29sIGluc3RhbGxhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBDb2RlQnVpbGQgaW5zdGFsbCBwaGFzZSBjb21tYW5kcyBmb3IgZGVwZW5kZW5jeSBpbnN0YWxsYXRpb24gYW5kIGVudmlyb25tZW50IHNldHVwXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50OyBvcHRpb25hbCBmb3IgaW5zdGFsbCBwaGFzZVxuICAgKiovXG4gIHJlYWRvbmx5IGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgcHJlLWV4ZWN1dGlvbiBjb21tYW5kcyBmb3IgZGVwbG95bWVudCBzdGFnZSBwcmVwYXJhdGlvbiBlbmFibGluZyBjdXN0b20gc2V0dXAgYW5kIHZhbGlkYXRpb24gYmVmb3JlIG1haW4gZGVwbG95bWVudCBvcGVyYXRpb25zLiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIG1haW4gZGVwbG95bWVudCBzdGFnZSB0byBwZXJmb3JtIGVudmlyb25tZW50IHByZXBhcmF0aW9uLCB2YWxpZGF0aW9uLCBhbmQgY3VzdG9tIHNldHVwIHRhc2tzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEVudmlyb25tZW50IHByZXBhcmF0aW9uOyBQcmUtZGVwbG95bWVudCB2YWxpZGF0aW9uOyBDdXN0b20gc2V0dXA7IENvbmZpZ3VyYXRpb24gdmVyaWZpY2F0aW9uOyBQcmVyZXF1aXNpdGUgY2hlY2tzXG4gICAqXG4gICAqIEFXUzogQVdTIENvZGVCdWlsZCBwcmUtZXhlY3V0aW9uIGNvbW1hbmRzIGZvciBkZXBsb3ltZW50IHN0YWdlIHByZXBhcmF0aW9uIGFuZCB2YWxpZGF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50OyBvcHRpb25hbCBmb3IgcHJlLWV4ZWN1dGlvbiBwaGFzZVxuICAgKiovXG4gIHJlYWRvbmx5IHByZT86IHN0cmluZ1tdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhcnJheSBvZiBwb3N0LWV4ZWN1dGlvbiBjb21tYW5kcyBmb3IgZGVwbG95bWVudCBzdGFnZSBjbGVhbnVwIGFuZCBmaW5hbGl6YXRpb24gZW5hYmxpbmcgY3VzdG9tIGNsZWFudXAgYW5kIHBvc3QtZGVwbG95bWVudCBvcGVyYXRpb25zLiBEZWZpbmVzIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciB0aGUgbWFpbiBkZXBsb3ltZW50IHN0YWdlIHRvIHBlcmZvcm0gY2xlYW51cCwgbm90aWZpY2F0aW9uLCB2YWxpZGF0aW9uLCBhbmQgZmluYWxpemF0aW9uIHRhc2tzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFBvc3QtZGVwbG95bWVudCBjbGVhbnVwOyBOb3RpZmljYXRpb24gc2VuZGluZzsgVmFsaWRhdGlvbiBjaGVja3M7IFJlc291cmNlIGNsZWFudXA7IEZpbmFsaXphdGlvbiB0YXNrc1xuICAgKlxuICAgKiBBV1M6IEFXUyBDb2RlQnVpbGQgcG9zdC1leGVjdXRpb24gY29tbWFuZHMgZm9yIGRlcGxveW1lbnQgc3RhZ2UgY2xlYW51cCBhbmQgZmluYWxpemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc2hlbGwgY29tbWFuZHMgaWYgcHJvdmlkZWQ7IGNvbW1hbmRzIGV4ZWN1dGUgaW4gQ29kZUJ1aWxkIExpbnV4IGVudmlyb25tZW50OyBvcHRpb25hbCBmb3IgcG9zdC1leGVjdXRpb24gcGhhc2VcbiAgICoqL1xuICByZWFkb25seSBwb3N0Pzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmRzIGV4dGVuZHMgU3RhZ2VDb21tYW5kcyB7XG4gIHJlYWRvbmx5IHByZURlcGxveT86IFN0YWdlQ29tbWFuZHM7XG4gIHJlYWRvbmx5IHByZURlcGxveVZhbGlkYXRlPzogVmFsaWRhdGVTdGFnZUNvbW1hbmRzO1xuICByZWFkb25seSBkZXBsb3k/OiBTdGFnZUNvbW1hbmRzO1xuICByZWFkb25seSBwb3N0RGVwbG95VmFsaWRhdGU/OiBWYWxpZGF0ZVN0YWdlQ29tbWFuZHM7XG59XG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBNREFBIERldk9wcyBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgQ0kvQ0QgcGlwZWxpbmUgb3JjaGVzdHJhdGlvbiB3aXRoIENvZGVDb21taXQgcmVwb3NpdG9yeSBpbnRlZ3JhdGlvbiBhbmQgbXVsdGktZW52aXJvbm1lbnQgZGVwbG95bWVudCBtYW5hZ2VtZW50LiBEZWZpbmVzIHRoZSBjb21wbGV0ZSBEZXZPcHMgaW5mcmFzdHJ1Y3R1cmUgaW5jbHVkaW5nIHNvdXJjZSByZXBvc2l0b3JpZXMsIGRlcGxveW1lbnQgcGlwZWxpbmVzLCBhbmQgQ0RLIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZvciBhdXRvbWF0ZWQgTURBQSBpbmZyYXN0cnVjdHVyZSBkZXBsb3ltZW50IGFjcm9zcyBtdWx0aXBsZSBlbnZpcm9ubWVudHMgd2l0aCBhcHByb3ZhbCBnYXRlcyBhbmQgdmFsaWRhdGlvbiBzdGFnZXMuXG4gKlxuICogVXNlIGNhc2VzOiBNdWx0aS1lbnZpcm9ubWVudCBDSS9DRCBwaXBlbGluZXM7IEF1dG9tYXRlZCBNREFBIGRlcGxveW1lbnRzOyBDb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgbWFuYWdlbWVudDsgSW5mcmFzdHJ1Y3R1cmUgY2hhbmdlIG1hbmFnZW1lbnQ7IERldk9wcyBhdXRvbWF0aW9uXG4gKlxuICogQVdTOiBBV1MgQ29kZVBpcGVsaW5lIHdpdGggQ29kZUNvbW1pdCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBDb2RlQnVpbGQgcHJvamVjdHMgZm9yIE1EQUEgQ0xJIGV4ZWN1dGlvbiwgYW5kIENESyBib290c3RyYXAgaW50ZWdyYXRpb24gZm9yIGluZnJhc3RydWN0dXJlIGRlcGxveW1lbnRcbiAqXG4gKiBWYWxpZGF0aW9uOiBtZGFhQ29kZUNvbW1pdFJlcG8gYW5kIGNvbmZpZ3NDb2RlQ29tbWl0UmVwbyBtdXN0IGJlIHZhbGlkIENvZGVDb21taXQgcmVwb3NpdG9yeSBuYW1lczsgcGlwZWxpbmVzIG11c3QgY29udGFpbiB2YWxpZCBQaXBlbGluZUNvbmZpZyBvYmplY3RzOyBjZGtCb290c3RyYXBDb250ZXh0IG11c3QgYmUgdmFsaWQgQ0RLIHF1YWxpZmllclxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldk9wc0NvbmZpZ0NvbnRlbnRzIGV4dGVuZHMgTWRhYUJhc2VDb25maWdDb250ZW50cywgQ29tbWFuZHMge1xuICByZWFkb25seSBtZGFhQ29kZUNvbW1pdFJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgbWRhYUJyYW5jaD86IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlnc0NvZGVDb21taXRSZXBvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZ3NCcmFuY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lcz86IHsgW3BpcGVsaW5lTmFtZTogc3RyaW5nXTogUGlwZWxpbmVDb25maWcgfTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogQ0RLIGJvb3RzdHJhcCBjb250ZXh0IHF1YWxpZmllciBmb3IgaWRlbnRpZnlpbmcgQ0RLIGJvb3RzdHJhcCByZXNvdXJjZXMgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gRGVmaW5lcyB0aGUgQ0RLIGJvb3RzdHJhcCBxdWFsaWZpZXIgdXNlZCB0byBsb2NhdGUgQ0RLIGRlcGxveW1lbnQgcm9sZXMsIGJ1Y2tldHMsIGFuZCBvdGhlciBib290c3RyYXAgcmVzb3VyY2VzIGZvciBNREFBIGluZnJhc3RydWN0dXJlIGRlcGxveW1lbnQgdGhyb3VnaCBDSS9DRCBwaXBlbGluZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ0RLIGJvb3RzdHJhcCByZXNvdXJjZSBpZGVudGlmaWNhdGlvbjsgTXVsdGktZW52aXJvbm1lbnQgQ0RLIGRlcGxveW1lbnQ7IEJvb3RzdHJhcCByZXNvdXJjZSBpc29sYXRpb247IENESyByb2xlIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBV1MgQ0RLIGJvb3RzdHJhcCByZXNvdXJjZXMgaW5jbHVkaW5nIGRlcGxveW1lbnQgcm9sZXMgYW5kIGFzc2V0IGJ1Y2tldHNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBDREsgYm9vdHN0cmFwIHF1YWxpZmllciBzdHJpbmc7IGRlZmF1bHRzIHRvIHN0YW5kYXJkIENESyBxdWFsaWZpZXIgaWYgbm90IHNwZWNpZmllZDsgb3B0aW9uYWwgc3RyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgY2RrQm9vdHN0cmFwQ29udGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRLUVOSEFOQ0VELUlOVEVSRkFDRVxuICogSW5kaXZpZHVhbCBwaXBlbGluZSBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgZW52aXJvbm1lbnQtc3BlY2lmaWMgTURBQSBkZXBsb3ltZW50IHBpcGVsaW5lcyB3aXRoIGRvbWFpbiwgZW52aXJvbm1lbnQsIGFuZCBtb2R1bGUgZmlsdGVyaW5nIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBwaXBlbGluZS1zcGVjaWZpYyBkZXBsb3ltZW50IHBhcmFtZXRlcnMgaW5jbHVkaW5nIHRhcmdldCBmaWx0ZXJzIGZvciBzZWxlY3RpdmUgZGVwbG95bWVudCwgY3VzdG9tIGNvbW1hbmQgZXhlY3V0aW9uLCBhbmQgcGlwZWxpbmUtbGV2ZWwgZGVwbG95bWVudCBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgdGFyZ2V0ZWQgaW5mcmFzdHJ1Y3R1cmUgZGVwbG95bWVudCB3aXRoaW4gbXVsdGktZG9tYWluIGRhdGEgYXJjaGl0ZWN0dXJlcy5cbiAqIFVzZSBjYXNlczogRW52aXJvbm1lbnQtc3BlY2lmaWMgcGlwZWxpbmVzOyBTZWxlY3RpdmUgbW9kdWxlIGRlcGxveW1lbnQ7IERvbWFpbi1maWx0ZXJlZCBkZXBsb3ltZW50czsgUGlwZWxpbmUgY3VzdG9taXphdGlvbjsgVGFyZ2V0ZWQgaW5mcmFzdHJ1Y3R1cmUgdXBkYXRlc1xuICogQVdTOiBBV1MgQ29kZVBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gd2l0aCBkb21haW4vZW52aXJvbm1lbnQvbW9kdWxlIGZpbHRlcmluZyBmb3Igc2VsZWN0aXZlIE1EQUEgZGVwbG95bWVudCB0YXJnZXRpbmcgc3BlY2lmaWMgaW5mcmFzdHJ1Y3R1cmUgY29tcG9uZW50c1xuICogVmFsaWRhdGlvbjogZG9tYWluRmlsdGVyLCBlbnZGaWx0ZXIsIGFuZCBtb2R1bGVGaWx0ZXIgbXVzdCByZWZlcmVuY2UgdmFsaWQgTURBQSBkb21haW5zLCBlbnZpcm9ubWVudHMsIGFuZCBtb2R1bGVzOyBwaXBlbGluZSBtdXN0IGluaGVyaXQgdmFsaWQgQ29tbWFuZHMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ29uZmlnIGV4dGVuZHMgQ29tbWFuZHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhcnJheSBvZiBkb21haW4gbmFtZXMgZm9yIHBpcGVsaW5lIGRlcGxveW1lbnQgZmlsdGVyaW5nIGVuYWJsaW5nIHNlbGVjdGl2ZSBkb21haW4tc3BlY2lmaWMgZGVwbG95bWVudHMuIFJlc3RyaWN0cyBwaXBlbGluZSBleGVjdXRpb24gdG8gb25seSB0aGUgc3BlY2lmaWVkIE1EQUEgZG9tYWlucywgYWxsb3dpbmcgZm9yIHRhcmdldGVkIGRlcGxveW1lbnQgc3RyYXRlZ2llcyBhbmQgZG9tYWluIGlzb2xhdGlvbiBpbiBtdWx0aS1kb21haW4gZGF0YSBhcmNoaXRlY3R1cmVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERvbWFpbi1zcGVjaWZpYyBkZXBsb3ltZW50czsgTXVsdGktZG9tYWluIGZpbHRlcmluZzsgU2VsZWN0aXZlIGRvbWFpbiB1cGRhdGVzOyBEb21haW4gaXNvbGF0aW9uIHN0cmF0ZWdpZXNcbiAgICpcbiAgICogQVdTOiBBV1MgQ29kZVBpcGVsaW5lIGRvbWFpbiBmaWx0ZXJpbmcgZm9yIHNlbGVjdGl2ZSBNREFBIGRvbWFpbiBkZXBsb3ltZW50IGFuZCB0YXJnZXRlZCBpbmZyYXN0cnVjdHVyZSB1cGRhdGVzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTURBQSBkb21haW4gbmFtZXMgaWYgcHJvdmlkZWQ7IGRvbWFpbnMgbXVzdCBleGlzdCBpbiBNREFBIGNvbmZpZ3VyYXRpb247IG9wdGlvbmFsIGZvciBkb21haW4gZmlsdGVyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgZG9tYWluRmlsdGVyPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIGVudmlyb25tZW50IG5hbWVzIGZvciBwaXBlbGluZSBkZXBsb3ltZW50IGZpbHRlcmluZyBlbmFibGluZyBzZWxlY3RpdmUgZW52aXJvbm1lbnQtc3BlY2lmaWMgZGVwbG95bWVudHMuIFJlc3RyaWN0cyBwaXBlbGluZSBleGVjdXRpb24gdG8gb25seSB0aGUgc3BlY2lmaWVkIE1EQUEgZW52aXJvbm1lbnRzLCBhbGxvd2luZyBmb3IgdGFyZ2V0ZWQgZGVwbG95bWVudCBzdHJhdGVnaWVzIGFuZCBlbnZpcm9ubWVudCBpc29sYXRpb24gYWNyb3NzIGRldmVsb3BtZW50LCBzdGFnaW5nLCBhbmQgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRW52aXJvbm1lbnQtc3BlY2lmaWMgZGVwbG95bWVudHM7IE11bHRpLWVudmlyb25tZW50IGZpbHRlcmluZzsgU2VsZWN0aXZlIGVudmlyb25tZW50IHVwZGF0ZXM7IEVudmlyb25tZW50IGlzb2xhdGlvbiBzdHJhdGVnaWVzXG4gICAqXG4gICAqIEFXUzogQVdTIENvZGVQaXBlbGluZSBlbnZpcm9ubWVudCBmaWx0ZXJpbmcgZm9yIHNlbGVjdGl2ZSBNREFBIGVudmlyb25tZW50IGRlcGxveW1lbnQgYW5kIHRhcmdldGVkIGluZnJhc3RydWN0dXJlIHVwZGF0ZXNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBNREFBIGVudmlyb25tZW50IG5hbWVzIGlmIHByb3ZpZGVkOyBlbnZpcm9ubWVudHMgbXVzdCBleGlzdCBpbiBNREFBIGNvbmZpZ3VyYXRpb247IG9wdGlvbmFsIGZvciBlbnZpcm9ubWVudCBmaWx0ZXJpbmdcbiAgICoqL1xuICByZWFkb25seSBlbnZGaWx0ZXI/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgbW9kdWxlIG5hbWVzIGZvciBwaXBlbGluZSBkZXBsb3ltZW50IGZpbHRlcmluZyBlbmFibGluZyBzZWxlY3RpdmUgbW9kdWxlLXNwZWNpZmljIGRlcGxveW1lbnRzLiBSZXN0cmljdHMgcGlwZWxpbmUgZXhlY3V0aW9uIHRvIG9ubHkgdGhlIHNwZWNpZmllZCBNREFBIG1vZHVsZXMsIGFsbG93aW5nIGZvciB0YXJnZXRlZCBkZXBsb3ltZW50IHN0cmF0ZWdpZXMgYW5kIG1vZHVsZSBpc29sYXRpb24gZm9yIHNwZWNpZmljIGluZnJhc3RydWN0dXJlIGNvbXBvbmVudHMgb3Igc2VydmljZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTW9kdWxlLXNwZWNpZmljIGRlcGxveW1lbnRzOyBNdWx0aS1tb2R1bGUgZmlsdGVyaW5nOyBTZWxlY3RpdmUgbW9kdWxlIHVwZGF0ZXM7IENvbXBvbmVudCBpc29sYXRpb24gc3RyYXRlZ2llc1xuICAgKlxuICAgKiBBV1M6IEFXUyBDb2RlUGlwZWxpbmUgbW9kdWxlIGZpbHRlcmluZyBmb3Igc2VsZWN0aXZlIE1EQUEgbW9kdWxlIGRlcGxveW1lbnQgYW5kIHRhcmdldGVkIGluZnJhc3RydWN0dXJlIGNvbXBvbmVudCB1cGRhdGVzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTURBQSBtb2R1bGUgbmFtZXMgaWYgcHJvdmlkZWQ7IG1vZHVsZXMgbXVzdCBleGlzdCBpbiBNREFBIGNvbmZpZ3VyYXRpb247IG9wdGlvbmFsIGZvciBtb2R1bGUgZmlsdGVyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgbW9kdWxlRmlsdGVyPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEZXZPcHNDb25maWdQYXJzZXIgZXh0ZW5kcyBNZGFhQXBwQ29uZmlnUGFyc2VyPERldk9wc0NvbmZpZ0NvbnRlbnRzPiB7XG4gIHB1YmxpYyByZWFkb25seSBkZXZvcHNDb25maWc6IERldk9wc0NvbmZpZ0NvbnRlbnRzO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJvcHM6IE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcykge1xuICAgIHN1cGVyKHN0YWNrLCBwcm9wcywgY29uZmlnU2NoZW1hIGFzIFNjaGVtYSk7XG5cbiAgICB0aGlzLmRldm9wc0NvbmZpZyA9IHRoaXMuY29uZmlnQ29udGVudHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1kYWFEZXZvcHNDREtBcHAgZXh0ZW5kcyBNZGFhQ2RrQXBwIHtcbiAgY29uc3RydWN0b3IocHJvcHM/OiBBcHBQcm9wcykge1xuICAgIHN1cGVyKHsgLi4ucHJvcHMsIC4uLnsgdXNlQm9vdHN0cmFwOiBmYWxzZSB9IH0sIE1kYWFDZGtBcHAucGFyc2VQYWNrYWdlSnNvbihgJHtfX2Rpcm5hbWV9Ly4uL3BhY2thZ2UuanNvbmApKTtcbiAgfVxuICBwcm90ZWN0ZWQgc3ViR2VuZXJhdGVSZXNvdXJjZXMoXG4gICAgc3RhY2s6IFN0YWNrLFxuICAgIGwzQ29uc3RydWN0UHJvcHM6IE1kYWFMM0NvbnN0cnVjdFByb3BzLFxuICAgIHBhcnNlclByb3BzOiBNZGFhQXBwQ29uZmlnUGFyc2VyUHJvcHMsXG4gICkge1xuICAgIGNvbnN0IGFwcENvbmZpZyA9IG5ldyBEZXZPcHNDb25maWdQYXJzZXIoc3RhY2ssIHBhcnNlclByb3BzKTtcbiAgICBuZXcgTWRhYURldm9wc0wzQ29uc3RydWN0KHN0YWNrLCAnZGV2b3BzJywge1xuICAgICAgLi4ubDNDb25zdHJ1Y3RQcm9wcyxcbiAgICAgIC4uLmFwcENvbmZpZy5kZXZvcHNDb25maWcsXG4gICAgfSk7XG4gICAgQXNwZWN0cy5vZihzdGFjaykuYWRkKG5ldyBGaXhDZGtCdWlsZFByb2plY3QoKSk7XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWRhYURldm9wc0wzQ29uc3RydWN0UHJvcHMgZXh0ZW5kcyBNZGFhTDNDb25zdHJ1Y3RQcm9wcywgRGV2T3BzQ29uZmlnQ29udGVudHMge31cblxuZXhwb3J0IGNsYXNzIE1kYWFEZXZvcHNMM0NvbnN0cnVjdCBleHRlbmRzIE1kYWFMM0NvbnN0cnVjdCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0RLX0JPT1RTVFJBUF9DT05URVhUID0gJ2huYjY1OWZkcyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE1kYWFEZXZvcHNMM0NvbnN0cnVjdFByb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNZGFhRGV2b3BzTDNDb25zdHJ1Y3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIGNvbnN0IHBpcGVsaW5lUm9sZSA9IG5ldyBNZGFhUm9sZSh0aGlzLCAncGlwZWxpbmUtcm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAncGlwZWxpbmUnLFxuICAgICAgbmFtaW5nOiB0aGlzLnByb3BzLm5hbWluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2NvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBtZGFhUmVwbyA9IFJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlOYW1lKHRoaXMsICdtZGFhLWltcG9ydC1yZXBvJywgdGhpcy5wcm9wcy5tZGFhQ29kZUNvbW1pdFJlcG8pO1xuICAgIGNvbnN0IGNvbmZpZ3NSZXBvID0gUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUodGhpcywgJ2NvbmZpZ3MtaW1wb3J0LXJlcG8nLCB0aGlzLnByb3BzLmNvbmZpZ3NDb2RlQ29tbWl0UmVwbyk7XG5cbiAgICBjb25zdCBrbXNLZXkgPSBuZXcgTWRhYUttc0tleSh0aGlzLCAna21zLWtleScsIHtcbiAgICAgIG5hbWluZzogdGhpcy5wcm9wcy5uYW1pbmcsXG4gICAgICBrZXlVc2VyUm9sZUlkczogW3BpcGVsaW5lUm9sZS5yb2xlSWRdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGV2T3BzQnVja2V0ID0gbmV3IE1kYWFCdWNrZXQodGhpcywgJ3BpcGVsaW5lLWJ1Y2tldCcsIHtcbiAgICAgIG5hbWluZzogdGhpcy5wcm9wcy5uYW1pbmcsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBrbXNLZXksXG4gICAgfSk7XG5cbiAgICBNZGFhTmFnU3VwcHJlc3Npb25zLmFkZENvZGVSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIGRldk9wc0J1Y2tldCxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnTklTVC44MDAuNTMuUjUtUzNCdWNrZXRSZXBsaWNhdGlvbkVuYWJsZWQnLFxuICAgICAgICAgIHJlYXNvbjogJ0J1Y2tldCBkb2VzIG5vdCBjb250YWluIGRhdGEgYXNzZXRzLiBSZXBsaWNhdGlvbiBub3QgcmVxdWlyZWQuJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnSElQQUEuU2VjdXJpdHktUzNCdWNrZXRSZXBsaWNhdGlvbkVuYWJsZWQnLFxuICAgICAgICAgIHJlYXNvbjogJ0J1Y2tldCBkb2VzIG5vdCBjb250YWluIGRhdGEgYXNzZXRzLiBSZXBsaWNhdGlvbiBub3QgcmVxdWlyZWQuJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnUENJLkRTUy4zMjEtUzNCdWNrZXRSZXBsaWNhdGlvbkVuYWJsZWQnLFxuICAgICAgICAgIHJlYXNvbjogJ0J1Y2tldCBkb2VzIG5vdCBjb250YWluIGRhdGEgYXNzZXRzLiBSZXBsaWNhdGlvbiBub3QgcmVxdWlyZWQuJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBjb25zdCBjb2RlQ29tbWl0RXZlbnRSb2xlID0gbmV3IE1kYWFSb2xlKHRoaXMsICdjb2RlY29tbWl0LWV2ZW50LXJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogJ2NvZGVjb21taXQtZXZlbnQnLFxuICAgICAgbmFtaW5nOiB0aGlzLnByb3BzLm5hbWluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2V2ZW50cy5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2RlQ29tbWl0UmVhZFBvbGljeSA9IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnY29kZWNvbW1pdDpHZXRCcmFuY2gnLCAnY29kZWNvbW1pdDpHZXRDb21taXQnLCAnY29kZWNvbW1pdDpHZXRSZXBvc2l0b3J5JywgJ2NvZGVjb21taXQ6R2l0UHVsbCddLFxuICAgICAgICAgIHJlc291cmNlczogW21kYWFSZXBvLnJlcG9zaXRvcnlBcm4sIGNvbmZpZ3NSZXBvLnJlcG9zaXRvcnlBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2RlQ29tbWl0QWN0aW9uUm9sZSA9IG5ldyBNZGFhUm9sZSh0aGlzLCAnY29kZWNvbW1pdC1hY3Rpb24tcm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnY29kZWNvbW1pdC1hY3Rpb24nLFxuICAgICAgbmFtaW5nOiB0aGlzLnByb3BzLm5hbWluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7IGNvZGVjb21taXRfcmVhZDogY29kZUNvbW1pdFJlYWRQb2xpY3kgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvblJvbGUgPSBuZXcgTWRhYVJvbGUodGhpcywgJ2NvZGVidWlsZC1hY3Rpb24tcm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnY29kZWJ1aWxkLWFjdGlvbicsXG4gICAgICBuYW1pbmc6IHRoaXMucHJvcHMubmFtaW5nLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICBuZXcgU2VydmljZVByaW5jaXBhbCgnY29kZWJ1aWxkLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbmV3IEFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KSxcbiAgICAgICksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQVdTQ2xvdWRGb3JtYXRpb25SZWFkT25seUFjY2VzcycpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvblBvbGljeSA9IG5ldyBQb2xpY3kodGhpcywgJ2NvZGVidWlsZC1wb2xpY3knKTtcbiAgICBjb25zdCBjZGtMb29rdXBSb2xlID0gdGhpcy5pbXBvcnRDZGtSb2xlKHRoaXMsICdsb29rdXAnLCB0aGlzLnByb3BzLmNka0Jvb3RzdHJhcENvbnRleHQpO1xuICAgIGNvbnN0IGNka0RlcGxveVJvbGUgPSB0aGlzLmltcG9ydENka1JvbGUodGhpcywgJ2RlcGxveScsIHRoaXMucHJvcHMuY2RrQm9vdHN0cmFwQ29udGV4dCk7XG4gICAgY29uc3QgY2RrRXhlY1JvbGUgPSB0aGlzLmltcG9ydENka1JvbGUodGhpcywgJ2V4ZWMnLCB0aGlzLnByb3BzLmNka0Jvb3RzdHJhcENvbnRleHQpO1xuICAgIGNvbnN0IGNka0ZpbGVQdWJsaXNoaW5nUm9sZSA9IHRoaXMuaW1wb3J0Q2RrUm9sZSh0aGlzLCAnZmlsZS1wdWJsaXNoaW5nJywgdGhpcy5wcm9wcy5jZGtCb290c3RyYXBDb250ZXh0KTtcbiAgICBjb25zdCBjZGtJbWFnZVB1Ymxpc2hpbmdSb2xlID0gdGhpcy5pbXBvcnRDZGtSb2xlKHRoaXMsICdpbWFnZS1wdWJsaXNoaW5nJywgdGhpcy5wcm9wcy5jZGtCb290c3RyYXBDb250ZXh0KTtcbiAgICBjb25zdCBjZGtCdWNrZXQgPSBCdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgYGNkay1idWNrZXQtaW1wb3J0YCxcbiAgICAgIGBjZGstJHt0aGlzLnByb3BzLmNka0Jvb3RzdHJhcENvbnRleHQgPz8gTWRhYURldm9wc0wzQ29uc3RydWN0LkRFRkFVTFRfQ0RLX0JPT1RTVFJBUF9DT05URVhUfS1hc3NldHMtJHtcbiAgICAgICAgdGhpcy5hY2NvdW50XG4gICAgICB9LSR7dGhpcy5yZWdpb259YCxcbiAgICApO1xuXG4gICAgY29kZUJ1aWxkQWN0aW9uUG9saWN5LmFkZFN0YXRlbWVudHMoXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiAnQVNTVU1FQ0RLUk9MRVMnLFxuICAgICAgICBhY3Rpb25zOiBbJ3N0czpBc3N1bWVSb2xlJ10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGNka0xvb2t1cFJvbGUucm9sZUFybixcbiAgICAgICAgICBjZGtEZXBsb3lSb2xlLnJvbGVBcm4sXG4gICAgICAgICAgY2RrRmlsZVB1Ymxpc2hpbmdSb2xlLnJvbGVBcm4sXG4gICAgICAgICAgY2RrSW1hZ2VQdWJsaXNoaW5nUm9sZS5yb2xlQXJuLFxuICAgICAgICAgIGNka0V4ZWNSb2xlLnJvbGVBcm4sXG4gICAgICAgIF0sXG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvZGVCdWlsZEFjdGlvblBvbGljeS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHNpZDogJ1MzTGlzdCcsXG4gICAgICAgIGFjdGlvbnM6IFsnczM6TGlzdEFsbE15QnVja2V0cyddLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHNpZDogJ0Nsb3VkRm9ybWF0aW9uQ2hhbmdlU2V0cycsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXQnLFxuICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb2RlQnVpbGRBY3Rpb25Qb2xpY3kuYWRkU3RhdGVtZW50cyhcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBzaWQ6ICdDREtTMycsXG4gICAgICAgIGFjdGlvbnM6IFsnczM6R2V0KicsICdzMzpQdXQqJywgJ3MzOkxpc3QqJ10sXG4gICAgICAgIHJlc291cmNlczogW2Nka0J1Y2tldC5idWNrZXRBcm4sIGNka0J1Y2tldC5hcm5Gb3JPYmplY3RzKCcqJyldLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBNZGFhTmFnU3VwcHJlc3Npb25zLmFkZENvZGVSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIGNvZGVCdWlsZEFjdGlvblBvbGljeSxcbiAgICAgIFtcbiAgICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JywgcmVhc29uOiAnUGVybWlzc2lvbnMgYXJlIHNjb3BlZCBsZWFzdCBwcml2aWxlZ2UgZm9yIGRlcGxveW1lbnQgdGltZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdOSVNULjgwMC41My5SNS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgICB7IGlkOiAnSElQQUEuU2VjdXJpdHktSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ1BDSS5EU1MuMzIxLUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICBdLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICAgIGNvZGVCdWlsZEFjdGlvblBvbGljeS5hdHRhY2hUb1JvbGUoY29kZUJ1aWxkQWN0aW9uUm9sZSk7XG4gICAgY29uc3QgbWFudWFsQWN0aW9uUm9sZSA9IG5ldyBNZGFhUm9sZSh0aGlzLCAnbWFudWFsLWFjdGlvbi1yb2xlJywge1xuICAgICAgcm9sZU5hbWU6ICdtYW51YWwtYWN0aW9uJyxcbiAgICAgIG5hbWluZzogdGhpcy5wcm9wcy5uYW1pbmcsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBBY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBhc3N1bWVBY3Rpb25Sb2xlR3JhbnQgPSBjb2RlQnVpbGRBY3Rpb25Sb2xlLmdyYW50QXNzdW1lUm9sZShwaXBlbGluZVJvbGUpO1xuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5wcm9wcy5waXBlbGluZXMgPz8ge30pLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgY29uc3QgcGlwZWxpbmVQcm9wczogTWRhYVBpcGVsaW5lUHJvcHMgPSB7XG4gICAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgICBuYW1pbmc6IHRoaXMucHJvcHMubmFtaW5nLndpdGhNb2R1bGVOYW1lKGBkZXZvcHMtJHtlbnRyeVswXX1gKSxcbiAgICAgICAgcGlwZWxpbmVOYW1lOiB0aGlzLnByb3BzLm5hbWluZy5yZXNvdXJjZU5hbWUoZW50cnlbMF0pLFxuICAgICAgICAuLi5lbnRyeVsxXSxcbiAgICAgICAgcm9sZTogcGlwZWxpbmVSb2xlLFxuICAgICAgICBhcnRpZmFjdEJ1Y2tldDogZGV2T3BzQnVja2V0LFxuICAgICAgICBjb2RlQ29tbWl0QWN0aW9uUm9sZTogY29kZUNvbW1pdEFjdGlvblJvbGUsXG4gICAgICAgIGNvZGVDb21taXRFdmVudFJvbGU6IGNvZGVDb21taXRFdmVudFJvbGUsXG4gICAgICAgIGNvZGVCdWlsZEFjdGlvblJvbGU6IGNvZGVCdWlsZEFjdGlvblJvbGUsXG4gICAgICAgIG1kYWFSZXBvOiBtZGFhUmVwbyxcbiAgICAgICAgY29uZmlnc1JlcG86IGNvbmZpZ3NSZXBvLFxuICAgICAgICBrbXNLZXk6IGttc0tleSxcbiAgICAgICAgbWFudWFsQWN0aW9uUm9sZTogbWFudWFsQWN0aW9uUm9sZSxcbiAgICAgICAgaW5zdGFsbDogWy4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLCAuLi4oZW50cnlbMV0uaW5zdGFsbCA/PyBbXSldLFxuICAgICAgICBwcmU6IFsuLi4odGhpcy5wcm9wcy5wcmUgPz8gW10pLCAuLi4oZW50cnlbMV0ucHJlID8/IFtdKV0sXG4gICAgICAgIHBvc3Q6IFsuLi4odGhpcy5wcm9wcy5wb3N0ID8/IFtdKSwgLi4uKGVudHJ5WzFdLnBvc3QgPz8gW10pXSxcbiAgICAgICAgcHJlRGVwbG95OiB7IC4uLnRoaXMucHJvcHMucHJlRGVwbG95LCAuLi5lbnRyeVsxXS5wcmVEZXBsb3kgfSxcbiAgICAgICAgcHJlRGVwbG95VmFsaWRhdGU6XG4gICAgICAgICAgdGhpcy5wcm9wcy5wcmVEZXBsb3lWYWxpZGF0ZSB8fCBlbnRyeVsxXS5wcmVEZXBsb3lWYWxpZGF0ZVxuICAgICAgICAgICAgPyB7IC4uLnRoaXMucHJvcHMucHJlRGVwbG95VmFsaWRhdGUsIC4uLmVudHJ5WzFdLnByZURlcGxveVZhbGlkYXRlIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBkZXBsb3k6IHsgLi4udGhpcy5wcm9wcy5kZXBsb3ksIC4uLmVudHJ5WzFdLmRlcGxveSB9LFxuICAgICAgICBwb3N0RGVwbG95VmFsaWRhdGU6XG4gICAgICAgICAgdGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGUgfHwgZW50cnlbMV0ucG9zdERlcGxveVZhbGlkYXRlXG4gICAgICAgICAgICA/IHsgLi4udGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGUsIC4uLmVudHJ5WzFdLnBvc3REZXBsb3lWYWxpZGF0ZSB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBpcGVsaW5lID0gbmV3IE1kYWFQaXBlbGluZSh0aGlzLCBgbWRhYS1waXBlbGluZS0ke2VudHJ5WzBdfWAsIHBpcGVsaW5lUHJvcHMpO1xuICAgICAgYXNzdW1lQWN0aW9uUm9sZUdyYW50LmFwcGx5QmVmb3JlKHBpcGVsaW5lKTtcbiAgICB9KTtcblxuICAgIE1kYWFOYWdTdXBwcmVzc2lvbnMuYWRkQ29kZVJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgcGlwZWxpbmVSb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLCByZWFzb246ICdQZXJtaXNzaW9ucyBhcmUgc2NvcGVkIGxlYXN0IHByaXZpbGVnZSBmb3IgZGVwbG95bWVudCB0aW1lLicgfSxcbiAgICAgICAgeyBpZDogJ05JU1QuODAwLjUzLlI1LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdISVBBQS5TZWN1cml0eS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgICB7IGlkOiAnUENJLkRTUy4zMjEtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG4gICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBjb2RlQnVpbGRBY3Rpb25Sb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTQnLCByZWFzb246ICdBV1NDbG91ZEZvcm1hdGlvblJlYWRPbmx5QWNjZXNzIGlzIFJlYWQgT25seSBBY2Nlc3MnIH0sXG4gICAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsIHJlYXNvbjogJ1Blcm1pc3Npb25zIGFyZSBzY29wZWQgbGVhc3QgcHJpdmlsZWdlIGZvciBkZXBsb3ltZW50IHRpbWUuJyB9LFxuICAgICAgICB7IGlkOiAnTklTVC44MDAuNTMuUjUtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ0hJUEFBLlNlY3VyaXR5LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdQQ0kuRFNTLjMyMS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgICBNZGFhTmFnU3VwcHJlc3Npb25zLmFkZENvZGVSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIGNvZGVDb21taXRBY3Rpb25Sb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLCByZWFzb246ICdQZXJtaXNzaW9ucyBhcmUgc2NvcGVkIGxlYXN0IHByaXZpbGVnZSBmb3IgZGVwbG95bWVudCB0aW1lLicgfSxcbiAgICAgICAgeyBpZDogJ05JU1QuODAwLjUzLlI1LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdISVBBQS5TZWN1cml0eS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgICB7IGlkOiAnUENJLkRTUy4zMjEtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG4gICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBjb2RlQ29tbWl0RXZlbnRSb2xlLFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnTklTVC44MDAuNTMuUjUtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ0hJUEFBLlNlY3VyaXR5LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdQQ0kuRFNTLjMyMS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW1wb3J0Q2RrUm9sZShzY29wZTogQ29uc3RydWN0LCByb2xlTmFtZTogc3RyaW5nLCBjZGtCb290c3RyYXBDb250ZXh0Pzogc3RyaW5nKTogSVJvbGUge1xuICAgIHJldHVybiBSb2xlLmZyb21Sb2xlTmFtZShcbiAgICAgIHNjb3BlLFxuICAgICAgYGNkay0ke3JvbGVOYW1lfS1yb2xlLWltcG9ydGAsXG4gICAgICBgY2RrLSR7Y2RrQm9vdHN0cmFwQ29udGV4dCA/PyBNZGFhRGV2b3BzTDNDb25zdHJ1Y3QuREVGQVVMVF9DREtfQk9PVFNUUkFQX0NPTlRFWFR9LSR7cm9sZU5hbWV9LXJvbGUtJHtcbiAgICAgICAgU3RhY2sub2Yoc2NvcGUpLmFjY291bnRcbiAgICAgIH0tJHtTdGFjay5vZihzY29wZSkucmVnaW9ufWAsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kYWFQaXBlbGluZVByb3BzIGV4dGVuZHMgUGlwZWxpbmVQcm9wcywgU3RhZ2VDb21tYW5kcywgUGlwZWxpbmVDb25maWcge1xuICByZWFkb25seSBuYW1pbmc6IElNZGFhUmVzb3VyY2VOYW1pbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBjb2RlQ29tbWl0QWN0aW9uUm9sZTogSVJvbGU7XG4gIHJlYWRvbmx5IGNvZGVDb21taXRFdmVudFJvbGU6IElSb2xlO1xuICByZWFkb25seSBjb2RlQnVpbGRBY3Rpb25Sb2xlOiBJUm9sZTtcbiAgcmVhZG9ubHkgbWRhYVJlcG86IElSZXBvc2l0b3J5O1xuICByZWFkb25seSBtZGFhQnJhbmNoPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWdzUmVwbzogSVJlcG9zaXRvcnk7XG4gIHJlYWRvbmx5IGNvbmZpZ3NCcmFuY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGttc0tleTogSUtleTtcbiAgcmVhZG9ubHkgbWFudWFsQWN0aW9uUm9sZTogSVJvbGU7XG59XG5cbmV4cG9ydCBjbGFzcyBNZGFhUGlwZWxpbmUgZXh0ZW5kcyBQaXBlbGluZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE1kYWFQaXBlbGluZVByb3BzO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWRhYVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICBjb25zdCBzb3VyY2VTdGFnZSA9IHRoaXMuYWRkU3RhZ2UoeyBzdGFnZU5hbWU6ICdTb3VyY2UnIH0pO1xuICAgIGNvbnN0IG1kYWFTb3VyY2VPdXRwdXQgPSBuZXcgQXJ0aWZhY3QoJ01EQUEnKTtcbiAgICBjb25zdCBtZGFhU291cmNlQWN0aW9uID0gdGhpcy5jcmVhdGVDb2RlQ29tbWl0U291cmNlQWN0aW9uKFxuICAgICAgJ21kYWEnLFxuICAgICAgbWRhYVNvdXJjZU91dHB1dCxcbiAgICAgIHRoaXMucHJvcHMuY29kZUNvbW1pdEFjdGlvblJvbGUsXG4gICAgICB0aGlzLnByb3BzLmNvZGVDb21taXRFdmVudFJvbGUsXG4gICAgICB0aGlzLnByb3BzLm1kYWFSZXBvLFxuICAgICAgdGhpcy5wcm9wcy5tZGFhQnJhbmNoID8/ICdtYWluJyxcbiAgICApO1xuICAgIGNvbnN0IGNvbmZpZ1NvdXJjZU91dHB1dCA9IG5ldyBBcnRpZmFjdCgnQ09ORklHUycpO1xuICAgIGNvbnN0IGNvbmZpZ1NvdXJjZUFjdGlvbiA9IHRoaXMuY3JlYXRlQ29kZUNvbW1pdFNvdXJjZUFjdGlvbihcbiAgICAgICdjb25maWdzJyxcbiAgICAgIGNvbmZpZ1NvdXJjZU91dHB1dCxcbiAgICAgIHRoaXMucHJvcHMuY29kZUNvbW1pdEFjdGlvblJvbGUsXG4gICAgICB0aGlzLnByb3BzLmNvZGVDb21taXRFdmVudFJvbGUsXG4gICAgICB0aGlzLnByb3BzLmNvbmZpZ3NSZXBvLFxuICAgICAgdGhpcy5wcm9wcy5jb25maWdzQnJhbmNoID8/ICdtYWluJyxcbiAgICApO1xuICAgIHNvdXJjZVN0YWdlLmFkZEFjdGlvbihtZGFhU291cmNlQWN0aW9uKTtcbiAgICBzb3VyY2VTdGFnZS5hZGRBY3Rpb24oY29uZmlnU291cmNlQWN0aW9uKTtcblxuICAgIGNvbnN0IHBpcGVsaW5lUHJvamVjdHM6IFBpcGVsaW5lUHJvamVjdFtdID0gW107XG4gICAgY29uc3QgcHJlRGVwbG95T3V0cHV0ID0gbmV3IEFydGlmYWN0KCdQUkVERVBMT1lfT1VUUFVUJyk7XG4gICAgdGhpcy5hZGRQcmVEZXBsb3lTdGFnZShjb25maWdTb3VyY2VPdXRwdXQsIG1kYWFTb3VyY2VPdXRwdXQsIHByZURlcGxveU91dHB1dCwgcGlwZWxpbmVQcm9qZWN0cyk7XG4gICAgdGhpcy5hZGRQcmVEZXBsb3lWYWxpZGF0ZVN0YWdlKHByZURlcGxveU91dHB1dCwgcGlwZWxpbmVQcm9qZWN0cyk7XG4gICAgdGhpcy5hZGREZXBsb3lTdGFnZShwcmVEZXBsb3lPdXRwdXQsIHBpcGVsaW5lUHJvamVjdHMpO1xuICAgIHRoaXMuYWRkUG9zdERlcGxveVZhbGlkYXRlU3RhZ2UocHJlRGVwbG95T3V0cHV0LCBwaXBlbGluZVByb2plY3RzKTtcblxuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvblBvbGljeSA9IG5ldyBQb2xpY3kodGhpcywgJ2NvZGVidWlsZC1hY3Rpb24tcG9saWN5Jywge1xuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2NvZGVidWlsZDpTdGFydEJ1aWxkJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBwaXBlbGluZVByb2plY3RzLm1hcCh4ID0+IHgucHJvamVjdEFybiksXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIE1kYWFOYWdTdXBwcmVzc2lvbnMuYWRkQ29kZVJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgY29kZUJ1aWxkQWN0aW9uUG9saWN5LFxuICAgICAgW1xuICAgICAgICB7IGlkOiAnTklTVC44MDAuNTMuUjUtSUFNTm9JbmxpbmVQb2xpY3knLCByZWFzb246ICdJbmxpbmUgcG9saWN5IGFwcHJvcHJpYXRlLicgfSxcbiAgICAgICAgeyBpZDogJ0hJUEFBLlNlY3VyaXR5LUlBTU5vSW5saW5lUG9saWN5JywgcmVhc29uOiAnSW5saW5lIHBvbGljeSBhcHByb3ByaWF0ZS4nIH0sXG4gICAgICAgIHsgaWQ6ICdQQ0kuRFNTLjMyMS1JQU1Ob0lubGluZVBvbGljeScsIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgYXBwcm9wcmlhdGUuJyB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIHRoaXMucHJvcHMuY29kZUJ1aWxkQWN0aW9uUm9sZS5hdHRhY2hJbmxpbmVQb2xpY3koY29kZUJ1aWxkQWN0aW9uUG9saWN5KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUG9zdERlcGxveVZhbGlkYXRlU3RhZ2UocHJlRGVwbG95T3V0cHV0OiBBcnRpZmFjdCwgcGlwZWxpbmVQcm9qZWN0czogUGlwZWxpbmVQcm9qZWN0W10pIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGUpIHtcbiAgICAgIGNvbnN0IFt2YWxpZGF0ZUFjdGlvbiwgdmFsaWRhdGVQcm9qZWN0XSA9IHRoaXMuY3JlYXRlQ29kZUJ1aWxkQWN0aW9uKFxuICAgICAgICAnUG9zdERlcGxveVZhbGlkYXRlJyxcbiAgICAgICAgcHJlRGVwbG95T3V0cHV0LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbGxDb21tYW5kczogWy4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLCAuLi4odGhpcy5wcm9wcy5wb3N0RGVwbG95VmFsaWRhdGU/Lmluc3RhbGwgPz8gW10pXSxcbiAgICAgICAgICBwcmVDb21tYW5kczogdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbW1hbmRzOiBbLi4uKHRoaXMucHJvcHMucG9zdERlcGxveVZhbGlkYXRlPy5jb21tYW5kcyA/PyBbXSldLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgcGlwZWxpbmVQcm9qZWN0cy5wdXNoKHZhbGlkYXRlUHJvamVjdCk7XG4gICAgICBjb25zdCBwb3N0RGVwbG95VmFsaWRhdGVTdGFnZSA9IHRoaXMuYWRkU3RhZ2Uoe1xuICAgICAgICBzdGFnZU5hbWU6ICdQb3N0LURlcGxveS1WYWxpZGF0ZScsXG4gICAgICB9KTtcbiAgICAgIHBvc3REZXBsb3lWYWxpZGF0ZVN0YWdlLmFkZEFjdGlvbih2YWxpZGF0ZUFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZXBsb3lTdGFnZShwcmVEZXBsb3lPdXRwdXQ6IEFydGlmYWN0LCBwaXBlbGluZVByb2plY3RzOiBQaXBlbGluZVByb2plY3RbXSkge1xuICAgIGNvbnN0IGRlcGxveVN0YWdlID0gdGhpcy5hZGRTdGFnZSh7IHN0YWdlTmFtZTogJ0RlcGxveScgfSk7XG4gICAgY29uc3QgW2RlcGxveUFjdGlvbiwgZGVwbG95UHJvamVjdF0gPSB0aGlzLmNyZWF0ZUNvZGVCdWlsZEFjdGlvbihcbiAgICAgICdEZXBsb3knLFxuXG4gICAgICBwcmVEZXBsb3lPdXRwdXQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7XG4gICAgICAgIGluc3RhbGxDb21tYW5kczogWyduIDE4JywgLi4uKHRoaXMucHJvcHMuaW5zdGFsbCA/PyBbXSksIC4uLih0aGlzLnByb3BzLmRlcGxveT8uaW5zdGFsbCA/PyBbXSldLFxuICAgICAgICBwcmVDb21tYW5kczogWy4uLih0aGlzLnByb3BzLnByZSA/PyBbXSksIC4uLih0aGlzLnByb3BzLmRlcGxveT8ucHJlID8/IFtdKV0sXG4gICAgICAgIGNvbW1hbmRzOiBbdGhpcy5jcmVhdGVNZGFhQ29tbWFuZCgnZGVwbG95JyldLFxuICAgICAgICBwb3N0Q29tbWFuZHM6IFsuLi4odGhpcy5wcm9wcy5wb3N0ID8/IFtdKSwgLi4uKHRoaXMucHJvcHMuZGVwbG95Py5wb3N0ID8/IFtdKV0sXG4gICAgICB9LFxuICAgICk7XG4gICAgZGVwbG95U3RhZ2UuYWRkQWN0aW9uKGRlcGxveUFjdGlvbik7XG4gICAgcGlwZWxpbmVQcm9qZWN0cy5wdXNoKGRlcGxveVByb2plY3QpO1xuICB9XG4gIHByaXZhdGUgYWRkUHJlRGVwbG95VmFsaWRhdGVTdGFnZShwcmVEZXBsb3lPdXRwdXQ6IEFydGlmYWN0LCBwaXBlbGluZVByb2plY3RzOiBQaXBlbGluZVByb2plY3RbXSkge1xuICAgIGNvbnN0IHByZURlcGxveVZhbGlkYXRlU3RhZ2UgPSB0aGlzLmFkZFN0YWdlKHtcbiAgICAgIHN0YWdlTmFtZTogJ1ByZS1EZXBsb3ktVmFsaWRhdGUnLFxuICAgIH0pO1xuICAgIGlmICh0aGlzLnByb3BzLnByZURlcGxveVZhbGlkYXRlKSB7XG4gICAgICBjb25zdCBbdmFsaWRhdGVBY3Rpb24sIHZhbGlkYXRlUHJvamVjdF0gPSB0aGlzLmNyZWF0ZUNvZGVCdWlsZEFjdGlvbihcbiAgICAgICAgJ1ByZURlcGxveVZhbGlkYXRlJyxcbiAgICAgICAgcHJlRGVwbG95T3V0cHV0LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbGxDb21tYW5kczogWy4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLCAuLi4odGhpcy5wcm9wcy5wcmVEZXBsb3lWYWxpZGF0ZT8uaW5zdGFsbCA/PyBbXSldLFxuICAgICAgICAgIHByZUNvbW1hbmRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgY29tbWFuZHM6IFsuLi4odGhpcy5wcm9wcy5wcmVEZXBsb3lWYWxpZGF0ZT8uY29tbWFuZHMgPz8gW10pXSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBwcmVEZXBsb3lWYWxpZGF0ZVN0YWdlLmFkZEFjdGlvbih2YWxpZGF0ZUFjdGlvbik7XG4gICAgICBwaXBlbGluZVByb2plY3RzLnB1c2godmFsaWRhdGVQcm9qZWN0KTtcbiAgICB9XG4gICAgcHJlRGVwbG95VmFsaWRhdGVTdGFnZS5hZGRBY3Rpb24oXG4gICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb24oe1xuICAgICAgICBhY3Rpb25OYW1lOiAnQXBwcm92ZScsXG4gICAgICAgIHJvbGU6IHRoaXMucHJvcHMubWFudWFsQWN0aW9uUm9sZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFByZURlcGxveVN0YWdlKFxuICAgIGNvbmZpZ1NvdXJjZU91dHB1dDogQXJ0aWZhY3QsXG4gICAgbWRhYVNvdXJjZU91dHB1dDogQXJ0aWZhY3QsXG4gICAgcHJlRGVwbG95T3V0cHV0OiBBcnRpZmFjdCxcbiAgICBwaXBlbGluZVByb2plY3RzOiBQaXBlbGluZVByb2plY3RbXSxcbiAgKTogUGlwZWxpbmVQcm9qZWN0IHtcbiAgICBjb25zdCBwcmVEZXBsb3lTdGFnZSA9IHRoaXMuYWRkU3RhZ2UoeyBzdGFnZU5hbWU6ICdQcmUtRGVwbG95JyB9KTtcblxuICAgIGNvbnN0IFtkaWZmQWN0aW9uLCBkaWZmUHJvamVjdF0gPSB0aGlzLmNyZWF0ZUNvZGVCdWlsZEFjdGlvbihcbiAgICAgICdTeW50aC1BbmQtRGlmZicsXG4gICAgICBjb25maWdTb3VyY2VPdXRwdXQsXG4gICAgICBbbWRhYVNvdXJjZU91dHB1dF0sXG4gICAgICBbcHJlRGVwbG95T3V0cHV0XSxcbiAgICAgIHtcbiAgICAgICAgaW5zdGFsbENvbW1hbmRzOiBbXG4gICAgICAgICAgJ24gMTgnLFxuICAgICAgICAgICdsbiAtcyAkQ09ERUJVSUxEX1NSQ19ESVJfTURBQSAuL21kYWEnLFxuICAgICAgICAgIC4uLih0aGlzLnByb3BzLmluc3RhbGwgPz8gW10pLFxuICAgICAgICAgIC4uLih0aGlzLnByb3BzLnByZURlcGxveT8uaW5zdGFsbCA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIHByZUNvbW1hbmRzOiBbLi4uKHRoaXMucHJvcHMucHJlID8/IFtdKSwgLi4uKHRoaXMucHJvcHMucHJlRGVwbG95Py5wcmUgPz8gW10pXSxcbiAgICAgICAgY29tbWFuZHM6IFt0aGlzLmNyZWF0ZU1kYWFDb21tYW5kKCdkaWZmJyldLFxuICAgICAgICBwb3N0Q29tbWFuZHM6IFsuLi4odGhpcy5wcm9wcy5wb3N0ID8/IFtdKSwgLi4uKHRoaXMucHJvcHMucHJlRGVwbG95Py5wb3N0ID8/IFtdKV0sXG4gICAgICB9LFxuICAgICk7XG4gICAgcHJlRGVwbG95U3RhZ2UuYWRkQWN0aW9uKGRpZmZBY3Rpb24pO1xuICAgIHBpcGVsaW5lUHJvamVjdHMucHVzaChkaWZmUHJvamVjdCk7XG4gICAgcmV0dXJuIGRpZmZQcm9qZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb2RlQ29tbWl0U291cmNlQWN0aW9uKFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvdXRwdXQ6IEFydGlmYWN0LFxuICAgIHJvbGU6IElSb2xlLFxuICAgIGV2ZW50Um9sZTogSVJvbGUsXG4gICAgcmVwb3NpdG9yeTogSVJlcG9zaXRvcnksXG4gICAgYnJhbmNoOiBzdHJpbmcsXG4gICk6IENvZGVDb21taXRTb3VyY2VBY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQ29kZUNvbW1pdFNvdXJjZUFjdGlvbih7XG4gICAgICBvdXRwdXQsXG4gICAgICBhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuICAgICAgcm9sZTogcm9sZSxcbiAgICAgIHJ1bk9yZGVyOiB1bmRlZmluZWQsXG4gICAgICBicmFuY2g6IGJyYW5jaCxcbiAgICAgIHRyaWdnZXI6IENvZGVDb21taXRUcmlnZ2VyLkVWRU5UUyxcbiAgICAgIHJlcG9zaXRvcnk6IHJlcG9zaXRvcnksXG4gICAgICBldmVudFJvbGU6IGV2ZW50Um9sZSxcbiAgICAgIGNvZGVCdWlsZENsb25lT3V0cHV0OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNZGFhQ29tbWFuZChtZGFhQWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1kYWFDbWQgPSBbYC4vbWRhYS9iaW4vbWRhYSAke21kYWFBY3Rpb259YF07XG4gICAgaWYgKHRoaXMucHJvcHMuZG9tYWluRmlsdGVyKSB7XG4gICAgICBtZGFhQ21kLnB1c2goYC1kICR7dGhpcy5wcm9wcy5kb21haW5GaWx0ZXIuam9pbignLCcpfWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5lbnZGaWx0ZXIpIHtcbiAgICAgIG1kYWFDbWQucHVzaChgLWUgJHt0aGlzLnByb3BzLmVudkZpbHRlci5qb2luKCcsJyl9YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1vZHVsZUZpbHRlcikge1xuICAgICAgbWRhYUNtZC5wdXNoKGAtbSAke3RoaXMucHJvcHMubW9kdWxlRmlsdGVyLmpvaW4oJywnKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG1kYWFDbWQuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb2RlQnVpbGRBY3Rpb24oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGlucHV0OiBBcnRpZmFjdCxcbiAgICBleHRyYUlucHV0cz86IEFydGlmYWN0W10sXG4gICAgb3V0cHV0cz86IEFydGlmYWN0W10sXG4gICAgY29tbWFuZHM/OiB7XG4gICAgICBpbnN0YWxsQ29tbWFuZHM/OiBzdHJpbmdbXTtcbiAgICAgIHByZUNvbW1hbmRzPzogc3RyaW5nW107XG4gICAgICBjb21tYW5kcz86IHN0cmluZ1tdO1xuICAgICAgcG9zdENvbW1hbmRzPzogc3RyaW5nW107XG4gICAgfSxcbiAgKTogW0NvZGVCdWlsZEFjdGlvbiwgUGlwZWxpbmVQcm9qZWN0XSB7XG4gICAgY29uc3QgcHJvamVjdFByb3BzOiBQaXBlbGluZVByb2plY3RQcm9wcyA9IHtcbiAgICAgIHByb2plY3ROYW1lOiB0aGlzLnByb3BzLm5hbWluZy5yZXNvdXJjZU5hbWUoYWN0aW9uTmFtZSksXG4gICAgICBlbmNyeXB0aW9uS2V5OiB0aGlzLnByb3BzLmttc0tleSxcbiAgICAgIHJvbGU6IHRoaXMucHJvcHMuY29kZUJ1aWxkQWN0aW9uUm9sZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5YMl9MQVJHRSxcbiAgICAgICAgYnVpbGRJbWFnZTogTGludXhCdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yXzUsXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdCh7XG4gICAgICAgIHZlcnNpb246ICcwLjInLFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBpbnN0YWxsOiB7XG4gICAgICAgICAgICBjb21tYW5kczogY29tbWFuZHM/Lmluc3RhbGxDb21tYW5kcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IGNvbW1hbmRzPy5wcmVDb21tYW5kcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogY29tbWFuZHM/LmNvbW1hbmRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcG9zdF9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IGNvbW1hbmRzPy5wb3N0Q29tbWFuZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgZmlsZXM6IFsnKiovKiddLFxuICAgICAgICAgICdlbmFibGUtc3ltbGlua3MnOiAneWVzJyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBjb2RlQnVpbGRQcm9qZWN0ID0gbmV3IFBpcGVsaW5lUHJvamVjdCh0aGlzLCBgY29kZWJ1aWxkLXByb2plY3QtJHthY3Rpb25OYW1lfWAsIHByb2plY3RQcm9wcyk7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uUHJvcHM6IENvZGVCdWlsZEFjdGlvblByb3BzID0ge1xuICAgICAgaW5wdXQ6IGlucHV0LFxuICAgICAgZXh0cmFJbnB1dHM6IGV4dHJhSW5wdXRzLFxuICAgICAgYWN0aW9uTmFtZTogYWN0aW9uTmFtZSxcbiAgICAgIHByb2plY3Q6IGNvZGVCdWlsZFByb2plY3QsXG4gICAgICByb2xlOiB0aGlzLnByb3BzLmNvZGVCdWlsZEFjdGlvblJvbGUsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIH07XG5cbiAgICBjb25zdCBhY3Rpb24gPSBuZXcgQ29kZUJ1aWxkQWN0aW9uKGNvZGVCdWlsZEFjdGlvblByb3BzKTtcbiAgICByZXR1cm4gW2FjdGlvbiwgY29kZUJ1aWxkUHJvamVjdF07XG4gIH1cbn1cblxuY2xhc3MgRml4Q2RrQnVpbGRQcm9qZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHB1YmxpYyB2aXNpdChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAoY29uc3RydWN0Lm5vZGUuaWQuc3RhcnRzV2l0aCgnY29kZWJ1aWxkLXByb2plY3QnKSkge1xuICAgICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICAgIGNvbnN0cnVjdCxcbiAgICAgICAgW1xuICAgICAgICAgIHsgaWQ6ICdISVBBQS5TZWN1cml0eS1Db2RlQnVpbGRQcm9qZWN0U291cmNlUmVwb1VybCcsIHJlYXNvbjogJ1BpcGVsaW5lIHNvdXJjZSBpcyBDb2RlQ29tbWl0LicgfSxcbiAgICAgICAgICB7IGlkOiAnUENJLkRTUy4zMjEtQ29kZUJ1aWxkUHJvamVjdFNvdXJjZVJlcG9VcmwnLCByZWFzb246ICdQaXBlbGluZSBzb3VyY2UgaXMgQ29kZUNvbW1pdC4nIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
|
|
8
6
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
7
|
if (k2 === undefined) k2 = k;
|
|
10
8
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"bin": {
|
|
9
9
|
"devops-cdk": "bin/devops.js"
|
|
10
10
|
},
|
|
11
|
-
"version": "1.
|
|
11
|
+
"version": "1.4.0",
|
|
12
12
|
"license": "Apache-2.0",
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsc && typescript-json-schema --required --noExtraProps tsconfig.json DevOpsConfigContents --include 'lib/*.ts' --include '../../../../node_modules/@types/**/*.ts' --include 'lib/config-schema.json' > lib/config-schema.json && cp lib/config-schema.json ../../../../schemas/${npm_package_name}.json",
|
|
@@ -20,31 +20,27 @@
|
|
|
20
20
|
"main": "lib/index.js",
|
|
21
21
|
"types": "lib/index.d.ts",
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@aws-mdaa/testing": "1.
|
|
24
|
-
"@types/jest": "29.5.
|
|
25
|
-
"@types/node": "
|
|
23
|
+
"@aws-mdaa/testing": "1.4.0",
|
|
24
|
+
"@types/jest": "29.5.14",
|
|
25
|
+
"@types/node": "22.9.0",
|
|
26
26
|
"@types/prettier": "2.6.0",
|
|
27
|
-
"jest": "29.
|
|
28
|
-
"ts-jest": "29.
|
|
29
|
-
"ts-node": "10.9.
|
|
30
|
-
"typescript": "
|
|
31
|
-
"typescript-json-schema": "0.
|
|
32
|
-
},
|
|
33
|
-
"overrides": {
|
|
34
|
-
"aws-cdk-lib": "2.201.0",
|
|
35
|
-
"@types/babel__traverse": "7.18.2"
|
|
27
|
+
"jest": "29.7.0",
|
|
28
|
+
"ts-jest": "29.4.6",
|
|
29
|
+
"ts-node": "10.9.2",
|
|
30
|
+
"typescript": "5.9.3",
|
|
31
|
+
"typescript-json-schema": "0.67.1"
|
|
36
32
|
},
|
|
37
33
|
"dependencies": {
|
|
38
|
-
"@aws-mdaa/app": "1.
|
|
39
|
-
"@aws-mdaa/config": "1.
|
|
40
|
-
"@aws-mdaa/iam-constructs": "1.
|
|
41
|
-
"@aws-mdaa/iam-role-helper": "1.
|
|
42
|
-
"@aws-mdaa/kms-constructs": "1.
|
|
43
|
-
"@aws-mdaa/l3-construct": "1.
|
|
44
|
-
"@aws-mdaa/s3-constructs": "1.
|
|
34
|
+
"@aws-mdaa/app": "1.4.0",
|
|
35
|
+
"@aws-mdaa/config": "1.4.0",
|
|
36
|
+
"@aws-mdaa/iam-constructs": "1.4.0",
|
|
37
|
+
"@aws-mdaa/iam-role-helper": "1.4.0",
|
|
38
|
+
"@aws-mdaa/kms-constructs": "1.4.0",
|
|
39
|
+
"@aws-mdaa/l3-construct": "1.4.0",
|
|
40
|
+
"@aws-mdaa/s3-constructs": "1.4.0",
|
|
45
41
|
"ajv": "8.17.1",
|
|
46
|
-
"aws-cdk-lib": "2.
|
|
47
|
-
"cdk-nag": "2.37.
|
|
42
|
+
"aws-cdk-lib": "2.220.0",
|
|
43
|
+
"cdk-nag": "2.37.55",
|
|
48
44
|
"constructs": "10.0.96",
|
|
49
45
|
"source-map-support": "0.5.21",
|
|
50
46
|
"yaml": "1.10.2"
|