@aws-cdk/toolkit-lib 1.6.1 → 1.8.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/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/drift/index.d.ts +1 -1
- package/lib/actions/drift/index.js +1 -1
- package/lib/actions/refactor/index.d.ts +8 -0
- package/lib/actions/refactor/index.js +1 -1
- package/lib/api/aws-auth/sdk.d.ts +5 -2
- package/lib/api/aws-auth/sdk.js +44 -4
- package/lib/api/drift/drift-formatter.d.ts +2 -6
- package/lib/api/drift/drift-formatter.js +28 -41
- package/lib/api/drift/drift.js +18 -11
- package/lib/api/io/private/messages.d.ts +2 -1
- package/lib/api/io/private/messages.js +6 -1
- package/lib/api/notices/notices.d.ts +1 -1
- package/lib/api/notices/notices.js +2 -2
- package/lib/api/refactoring/cloudformation.d.ts +6 -0
- package/lib/api/refactoring/cloudformation.js +16 -1
- package/lib/api/refactoring/context.d.ts +19 -0
- package/lib/api/refactoring/context.js +143 -11
- package/lib/api/refactoring/digest.js +11 -8
- package/lib/api/refactoring/graph.js +11 -9
- package/lib/api/refactoring/index.d.ts +5 -0
- package/lib/api/refactoring/index.js +1 -1
- package/lib/api/refactoring/stack-definitions.js +49 -436
- package/lib/index_bg.wasm +0 -0
- package/lib/toolkit/toolkit.d.ts +1 -1
- package/lib/toolkit/toolkit.js +94 -28
- package/lib/util/sets.d.ts +1 -0
- package/lib/util/sets.js +5 -1
- package/lib/util/string-manipulation.d.ts +5 -0
- package/lib/util/string-manipulation.js +9 -1
- package/package.json +9 -8
|
@@ -60,7 +60,7 @@ class Notices {
|
|
|
60
60
|
* Refresh the list of notices this instance is aware of.
|
|
61
61
|
*
|
|
62
62
|
* This method throws an error if the data source fails to fetch notices.
|
|
63
|
-
* When using, consider if execution should halt immdiately or if catching the
|
|
63
|
+
* When using, consider if execution should halt immdiately or if catching the error and continuing is more appropriate
|
|
64
64
|
*
|
|
65
65
|
* @throws on failure to refresh the data source
|
|
66
66
|
*/
|
|
@@ -126,4 +126,4 @@ class Notices {
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
exports.Notices = Notices;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5vdGljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkJBQTZCO0FBQzdCLHFDQUF5QztBQUd6Qyw2REFBd0Q7QUFFeEQscUNBQXlDO0FBRXpDLHVEQUE0RDtBQUU1RCwyQ0FBK0M7QUFFL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLGtCQUFXLEdBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztBQStFakU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFDbEI7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQW1CO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUFzQjtJQUU3QixPQUFPLENBQVU7SUFDakIsTUFBTSxDQUFTO0lBQ2Ysd0JBQXdCLENBQWM7SUFDdEMsV0FBVyxDQUFxQjtJQUNoQyxRQUFRLENBQVc7SUFDbkIsVUFBVSxDQUFTO0lBRTVCLElBQUksR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV0QyxzREFBc0Q7SUFDckMsd0JBQXdCLEdBQXlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFNUYsWUFBb0IsS0FBbUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxNQUFNLEdB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RCwwQkFvSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGNka0NhY2hlRGlyIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgSUlvSG9zdCB9IGZyb20gJy4uL2lvJztcbmltcG9ydCB7IENhY2hlZERhdGFTb3VyY2UgfSBmcm9tICcuL2NhY2hlZC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IEZpbHRlcmVkTm90aWNlIH0gZnJvbSAnLi9maWx0ZXInO1xuaW1wb3J0IHsgTm90aWNlc0ZpbHRlciB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB0eXBlIHsgQm9vdHN0cmFwcGVkRW52aXJvbm1lbnQsIE5vdGljZSwgTm90aWNlRGF0YVNvdXJjZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgV2Vic2l0ZU5vdGljZURhdGFTb3VyY2UgfSBmcm9tICcuL3dlYi1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBJTywgYXNJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuXG5jb25zdCBDQUNIRV9GSUxFX1BBVEggPSBwYXRoLmpvaW4oY2RrQ2FjaGVEaXIoKSwgJ25vdGljZXMuanNvbicpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBIVFRQUyByZXF1ZXN0cyBtYWRlIGJ5IE5vdGljZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpY2VzSHR0cE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFnZW50IHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgdGhlIG5ldHdvcmsgcmVxdWVzdHMuXG4gICAqXG4gICAqIFVzZSB0aGlzIHNvIHNldCB1cCBhIHByb3h5IGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgc2hhcmVkIGdsb2JhbCBub2RlIGFnZW50XG4gICAqL1xuICByZWFkb25seSBhZ2VudD86IEFnZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGljZXNQcm9wcyB7XG4gIC8qKlxuICAgKiBDREsgY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQ29udGV4dDtcblxuICAvKipcbiAgICogR2xvYmFsIENMSSBvcHRpb24gZm9yIG91dHB1dCBkaXJlY3RvcnkgZm9yIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5XG4gICAqXG4gICAqIEBkZWZhdWx0ICdjZGsub3V0J1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgSFRUUFMgcmVxdWVzdHMgbWFkZSBieSBOb3RpY2VzXG4gICAqL1xuICByZWFkb25seSBodHRwT3B0aW9ucz86IE5vdGljZXNIdHRwT3B0aW9ucztcblxuICAvKipcbiAgICogV2hlcmUgbWVzc2FnZXMgYXJlIGdvaW5nIHRvIGJlIHNlbnRcbiAgICovXG4gIHJlYWRvbmx5IGlvSG9zdDogSUlvSG9zdDtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIENMSVxuICAgKi9cbiAgcmVhZG9ubHkgY2xpVmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGljZXNGaWx0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluY2x1ZGUgbm90aWNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFja25vd2xlZGdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVBY2tub3dsZWRnZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGljZXNEaXNwbGF5T3B0aW9ucyBleHRlbmRzIE5vdGljZXNGaWx0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXBwZW5kIHRoZSB0b3RhbCBudW1iZXIgb2YgdW5hY2tub3dsZWRnZWQgbm90aWNlcyB0byB0aGUgZGlzcGxheS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNob3dUb3RhbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWNlc1JlZnJlc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZm9yY2UgYSBjYWNoZSByZWZyZXNoIHJlZ2FyZGxlc3Mgb2YgZXhwaXJhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEYXRhIHNvdXJjZSBmb3IgZmV0Y2ggbm90aWNlcyBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFdlYnNpdGVOb3RpY2VEYXRhU291cmNlXG4gICAqL1xuICByZWFkb25seSBkYXRhU291cmNlPzogTm90aWNlRGF0YVNvdXJjZTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhY2Nlc3MgdG8gbm90aWNlcyB0aGUgQ0xJIGNhbiBkaXNwbGF5LlxuICovXG5leHBvcnQgY2xhc3MgTm90aWNlcyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW5zdGFuY2UuIE5vdGUgdGhhdCB0aGlzIHJlcGxhY2VzIHRoZSBzaW5nbGV0b24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShwcm9wczogTm90aWNlc1Byb3BzKTogTm90aWNlcyB7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgTm90aWNlcyhwcm9wcyk7XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlLiBNYXkgcmV0dXJuIGB1bmRlZmluZWRgIGlmIGBjcmVhdGVgIGhhcyBub3QgYmVlbiBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCgpOiBOb3RpY2VzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE5vdGljZXMgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFja25vd2xlZGdlZElzc3VlTnVtYmVyczogU2V0PE51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cE9wdGlvbnM6IE5vdGljZXNIdHRwT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpVmVyc2lvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgZGF0YTogU2V0PE5vdGljZT4gPSBuZXcgU2V0KCk7XG5cbiAgLy8gc2V0cyBkb24ndCBkZWR1cGxpY2F0ZSBpbnRlcmZhY2VzLCBzbyB3ZSB1c2UgYSBtYXAuXG4gIHByaXZhdGUgcmVhZG9ubHkgYm9vdHN0cmFwcGVkRW52aXJvbm1lbnRzOiBNYXA8c3RyaW5nLCBCb290c3RyYXBwZWRFbnZpcm9ubWVudD4gPSBuZXcgTWFwKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm9wczogTm90aWNlc1Byb3BzKSB7XG4gICAgdGhpcy5jb250ZXh0ID0gcHJvcHMuY29udGV4dDtcbiAgICB0aGlzLmFja25vd2xlZGdlZElzc3VlTnVtYmVycyA9IG5ldyBTZXQodGhpcy5jb250ZXh0LmdldCgnYWNrbm93bGVkZ2VkLWlzc3VlLW51bWJlcnMnKSA/PyBbXSk7XG4gICAgdGhpcy5vdXRwdXQgPSBwcm9wcy5vdXRwdXQgPz8gJ2Nkay5vdXQnO1xuICAgIHRoaXMuaHR0cE9wdGlvbnMgPSBwcm9wcy5odHRwT3B0aW9ucyA/PyB7fTtcbiAgICB0aGlzLmlvSGVscGVyID0gYXNJb0hlbHBlcihwcm9wcy5pb0hvc3QsICdub3RpY2VzJyBhcyBhbnkgLyogZm9yY2luZyBhIENsaUFjdGlvbiB0byBhIFRvb2xraXRBY3Rpb24gKi8pO1xuICAgIHRoaXMuY2xpVmVyc2lvbiA9IHByb3BzLmNsaVZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgYm9vdHN0cmFwIGluZm9ybWF0aW9uIHRvIGZpbHRlciBvbi4gQ2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzXG4gICAqIGluIGNhc2Ugb2YgbXVsdGktZW52aXJvbm1lbnQgZGVwbG95bWVudHMuXG4gICAqL1xuICBwdWJsaWMgYWRkQm9vdHN0cmFwcGVkRW52aXJvbm1lbnQoYm9vdHN0cmFwcGVkOiBCb290c3RyYXBwZWRFbnZpcm9ubWVudCkge1xuICAgIGNvbnN0IGtleSA9IFtcbiAgICAgIGJvb3RzdHJhcHBlZC5ib290c3RyYXBTdGFja1ZlcnNpb24sXG4gICAgICBib290c3RyYXBwZWQuZW52aXJvbm1lbnQuYWNjb3VudCxcbiAgICAgIGJvb3RzdHJhcHBlZC5lbnZpcm9ubWVudC5yZWdpb24sXG4gICAgICBib290c3RyYXBwZWQuZW52aXJvbm1lbnQubmFtZSxcbiAgICBdLmpvaW4oJzonKTtcbiAgICB0aGlzLmJvb3RzdHJhcHBlZEVudmlyb25tZW50cy5zZXQoa2V5LCBib290c3RyYXBwZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIGxpc3Qgb2Ygbm90aWNlcyB0aGlzIGluc3RhbmNlIGlzIGF3YXJlIG9mLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGRhdGEgc291cmNlIGZhaWxzIHRvIGZldGNoIG5vdGljZXMuXG4gICAqIFdoZW4gdXNpbmcsIGNvbnNpZGVyIGlmIGV4ZWN1dGlvbiBzaG91bGQgaGFsdCBpbW1kaWF0ZWx5IG9yIGlmIGNhdGNoaW5nIHRoZSBycm9yIGFuZCBjb250aW51aW5nIGlzIG1vcmUgYXBwcm9wcmlhdGVcbiAgICpcbiAgICogQHRocm93cyBvbiBmYWlsdXJlIHRvIHJlZnJlc2ggdGhlIGRhdGEgc291cmNlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVmcmVzaChvcHRpb25zOiBOb3RpY2VzUmVmcmVzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGlubmVyRGF0YVNvdXJjZSA9IG9wdGlvbnMuZGF0YVNvdXJjZSA/PyBuZXcgV2Vic2l0ZU5vdGljZURhdGFTb3VyY2UodGhpcy5pb0hlbHBlciwgdGhpcy5odHRwT3B0aW9ucyk7XG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IG5ldyBDYWNoZWREYXRhU291cmNlKHRoaXMuaW9IZWxwZXIsIENBQ0hFX0ZJTEVfUEFUSCwgaW5uZXJEYXRhU291cmNlLCBvcHRpb25zLmZvcmNlID8/IGZhbHNlKTtcbiAgICBjb25zdCBub3RpY2VzID0gYXdhaXQgZGF0YVNvdXJjZS5mZXRjaCgpO1xuICAgIHRoaXMuZGF0YSA9IG5ldyBTZXQobm90aWNlcyk7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIHRoZSBkYXRhIHNvdXJjZSBmb3IgcmVsZXZhbnQgbm90aWNlc1xuICAgKi9cbiAgcHVibGljIGZpbHRlcihvcHRpb25zOiBOb3RpY2VzRGlzcGxheU9wdGlvbnMgPSB7fSk6IFByb21pc2U8RmlsdGVyZWROb3RpY2VbXT4ge1xuICAgIHJldHVybiBuZXcgTm90aWNlc0ZpbHRlcih0aGlzLmlvSGVscGVyKS5maWx0ZXIoe1xuICAgICAgZGF0YTogdGhpcy5ub3RpY2VzRnJvbURhdGEob3B0aW9ucy5pbmNsdWRlQWNrbm93bGVkZ2VkID8/IGZhbHNlKSxcbiAgICAgIGNsaVZlcnNpb246IHRoaXMuY2xpVmVyc2lvbixcbiAgICAgIG91dERpcjogdGhpcy5vdXRwdXQsXG4gICAgICBib290c3RyYXBwZWRFbnZpcm9ubWVudHM6IEFycmF5LmZyb20odGhpcy5ib290c3RyYXBwZWRFbnZpcm9ubWVudHMudmFsdWVzKCkpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgdGhlIHJlbGV2YW50IG5vdGljZXMgKHVubGVzcyBjb250ZXh0IGRpY3RhdGVzIHdlIHNob3VsZG4ndCkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlzcGxheShvcHRpb25zOiBOb3RpY2VzRGlzcGxheU9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZpbHRlcmVkTm90aWNlcyA9IGF3YWl0IHRoaXMuZmlsdGVyKG9wdGlvbnMpO1xuXG4gICAgaWYgKGZpbHRlcmVkTm90aWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JMDEwMC5tc2coW1xuICAgICAgICAnJyxcbiAgICAgICAgJ05PVElDRVMgICAgICAgICAoV2hhdFxcJ3MgdGhpcz8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3dpa2kvQ0xJLU5vdGljZXMpJyxcbiAgICAgICAgJycsXG4gICAgICBdLmpvaW4oJ1xcbicpKSk7XG4gICAgICBmb3IgKGNvbnN0IGZpbHRlcmVkIG9mIGZpbHRlcmVkTm90aWNlcykge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmaWx0ZXJlZC5mb3JtYXQoKSArICdcXG4nO1xuICAgICAgICBzd2l0Y2ggKGZpbHRlcmVkLm5vdGljZS5zZXZlcml0eSkge1xuICAgICAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfVzAxMDEubXNnKGZvcm1hdHRlZCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfRTAxMDEubXNnKGZvcm1hdHRlZCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0kwMTAxLm1zZyhmb3JtYXR0ZWQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JMDEwMC5tc2coXG4gICAgICAgIGBJZiB5b3UgZG9u4oCZdCB3YW50IHRvIHNlZSBhIG5vdGljZSBhbnltb3JlLCB1c2UgXCJjZGsgYWNrbm93bGVkZ2UgPGlkPlwiLiBGb3IgZXhhbXBsZSwgXCJjZGsgYWNrbm93bGVkZ2UgJHtmaWx0ZXJlZE5vdGljZXNbMF0ubm90aWNlLmlzc3VlTnVtYmVyfVwiLmAsXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaG93VG90YWwgPz8gZmFsc2UpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0kwMTAwLm1zZyhcbiAgICAgICAgYFxcblRoZXJlIGFyZSAke2ZpbHRlcmVkTm90aWNlcy5sZW5ndGh9IHVuYWNrbm93bGVkZ2VkIG5vdGljZShzKS5gLFxuICAgICAgKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIG5vdGljZXMgYXZhaWxhYmxlIGluIHRoZSBkYXRhIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIGluY2x1ZGVBY2tub3dsZWdkZWQgLSBXaGV0aGVyIHRvIGluY2x1ZGUgYWNrbm93bGVkZ2VkIG5vdGljZXMuXG4gICAqL1xuICBwcml2YXRlIG5vdGljZXNGcm9tRGF0YShpbmNsdWRlQWNrbm93bGVnZGVkID0gZmFsc2UpOiBOb3RpY2VbXSB7XG4gICAgY29uc3QgZGF0YSA9IEFycmF5LmZyb20odGhpcy5kYXRhKTtcblxuICAgIGlmIChpbmNsdWRlQWNrbm93bGVnZGVkKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YS5maWx0ZXIobiA9PiAhdGhpcy5hY2tub3dsZWRnZWRJc3N1ZU51bWJlcnMuaGFzKG4uaXNzdWVOdW1iZXIpKTtcbiAgfVxufVxuXG4iXX0=
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5vdGljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkJBQTZCO0FBQzdCLHFDQUF5QztBQUd6Qyw2REFBd0Q7QUFFeEQscUNBQXlDO0FBRXpDLHVEQUE0RDtBQUU1RCwyQ0FBK0M7QUFFL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLGtCQUFXLEdBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztBQStFakU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFDbEI7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQW1CO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUFzQjtJQUU3QixPQUFPLENBQVU7SUFDakIsTUFBTSxDQUFTO0lBQ2Ysd0JBQXdCLENBQWM7SUFDdEMsV0FBVyxDQUFxQjtJQUNoQyxRQUFRLENBQVc7SUFDbkIsVUFBVSxDQUFTO0lBRTVCLElBQUksR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV0QyxzREFBc0Q7SUFDckMsd0JBQXdCLEdBQXlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFNUYsWUFBb0IsS0FBbUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxNQUFNLEdB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RCwwQkFvSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGNka0NhY2hlRGlyIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgSUlvSG9zdCB9IGZyb20gJy4uL2lvJztcbmltcG9ydCB7IENhY2hlZERhdGFTb3VyY2UgfSBmcm9tICcuL2NhY2hlZC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IEZpbHRlcmVkTm90aWNlIH0gZnJvbSAnLi9maWx0ZXInO1xuaW1wb3J0IHsgTm90aWNlc0ZpbHRlciB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB0eXBlIHsgQm9vdHN0cmFwcGVkRW52aXJvbm1lbnQsIE5vdGljZSwgTm90aWNlRGF0YVNvdXJjZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgV2Vic2l0ZU5vdGljZURhdGFTb3VyY2UgfSBmcm9tICcuL3dlYi1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBJTywgYXNJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuXG5jb25zdCBDQUNIRV9GSUxFX1BBVEggPSBwYXRoLmpvaW4oY2RrQ2FjaGVEaXIoKSwgJ25vdGljZXMuanNvbicpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBIVFRQUyByZXF1ZXN0cyBtYWRlIGJ5IE5vdGljZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpY2VzSHR0cE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFnZW50IHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgdGhlIG5ldHdvcmsgcmVxdWVzdHMuXG4gICAqXG4gICAqIFVzZSB0aGlzIHNvIHNldCB1cCBhIHByb3h5IGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgc2hhcmVkIGdsb2JhbCBub2RlIGFnZW50XG4gICAqL1xuICByZWFkb25seSBhZ2VudD86IEFnZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGljZXNQcm9wcyB7XG4gIC8qKlxuICAgKiBDREsgY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQ29udGV4dDtcblxuICAvKipcbiAgICogR2xvYmFsIENMSSBvcHRpb24gZm9yIG91dHB1dCBkaXJlY3RvcnkgZm9yIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5XG4gICAqXG4gICAqIEBkZWZhdWx0ICdjZGsub3V0J1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgSFRUUFMgcmVxdWVzdHMgbWFkZSBieSBOb3RpY2VzXG4gICAqL1xuICByZWFkb25seSBodHRwT3B0aW9ucz86IE5vdGljZXNIdHRwT3B0aW9ucztcblxuICAvKipcbiAgICogV2hlcmUgbWVzc2FnZXMgYXJlIGdvaW5nIHRvIGJlIHNlbnRcbiAgICovXG4gIHJlYWRvbmx5IGlvSG9zdDogSUlvSG9zdDtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIENMSVxuICAgKi9cbiAgcmVhZG9ubHkgY2xpVmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGljZXNGaWx0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluY2x1ZGUgbm90aWNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFja25vd2xlZGdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVBY2tub3dsZWRnZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGljZXNEaXNwbGF5T3B0aW9ucyBleHRlbmRzIE5vdGljZXNGaWx0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXBwZW5kIHRoZSB0b3RhbCBudW1iZXIgb2YgdW5hY2tub3dsZWRnZWQgbm90aWNlcyB0byB0aGUgZGlzcGxheS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNob3dUb3RhbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWNlc1JlZnJlc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZm9yY2UgYSBjYWNoZSByZWZyZXNoIHJlZ2FyZGxlc3Mgb2YgZXhwaXJhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEYXRhIHNvdXJjZSBmb3IgZmV0Y2ggbm90aWNlcyBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFdlYnNpdGVOb3RpY2VEYXRhU291cmNlXG4gICAqL1xuICByZWFkb25seSBkYXRhU291cmNlPzogTm90aWNlRGF0YVNvdXJjZTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhY2Nlc3MgdG8gbm90aWNlcyB0aGUgQ0xJIGNhbiBkaXNwbGF5LlxuICovXG5leHBvcnQgY2xhc3MgTm90aWNlcyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW5zdGFuY2UuIE5vdGUgdGhhdCB0aGlzIHJlcGxhY2VzIHRoZSBzaW5nbGV0b24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShwcm9wczogTm90aWNlc1Byb3BzKTogTm90aWNlcyB7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgTm90aWNlcyhwcm9wcyk7XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlLiBNYXkgcmV0dXJuIGB1bmRlZmluZWRgIGlmIGBjcmVhdGVgIGhhcyBub3QgYmVlbiBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCgpOiBOb3RpY2VzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE5vdGljZXMgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFja25vd2xlZGdlZElzc3VlTnVtYmVyczogU2V0PE51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cE9wdGlvbnM6IE5vdGljZXNIdHRwT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpVmVyc2lvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgZGF0YTogU2V0PE5vdGljZT4gPSBuZXcgU2V0KCk7XG5cbiAgLy8gc2V0cyBkb24ndCBkZWR1cGxpY2F0ZSBpbnRlcmZhY2VzLCBzbyB3ZSB1c2UgYSBtYXAuXG4gIHByaXZhdGUgcmVhZG9ubHkgYm9vdHN0cmFwcGVkRW52aXJvbm1lbnRzOiBNYXA8c3RyaW5nLCBCb290c3RyYXBwZWRFbnZpcm9ubWVudD4gPSBuZXcgTWFwKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm9wczogTm90aWNlc1Byb3BzKSB7XG4gICAgdGhpcy5jb250ZXh0ID0gcHJvcHMuY29udGV4dDtcbiAgICB0aGlzLmFja25vd2xlZGdlZElzc3VlTnVtYmVycyA9IG5ldyBTZXQodGhpcy5jb250ZXh0LmdldCgnYWNrbm93bGVkZ2VkLWlzc3VlLW51bWJlcnMnKSA/PyBbXSk7XG4gICAgdGhpcy5vdXRwdXQgPSBwcm9wcy5vdXRwdXQgPz8gJ2Nkay5vdXQnO1xuICAgIHRoaXMuaHR0cE9wdGlvbnMgPSBwcm9wcy5odHRwT3B0aW9ucyA/PyB7fTtcbiAgICB0aGlzLmlvSGVscGVyID0gYXNJb0hlbHBlcihwcm9wcy5pb0hvc3QsICdub3RpY2VzJyBhcyBhbnkgLyogZm9yY2luZyBhIENsaUFjdGlvbiB0byBhIFRvb2xraXRBY3Rpb24gKi8pO1xuICAgIHRoaXMuY2xpVmVyc2lvbiA9IHByb3BzLmNsaVZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgYm9vdHN0cmFwIGluZm9ybWF0aW9uIHRvIGZpbHRlciBvbi4gQ2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzXG4gICAqIGluIGNhc2Ugb2YgbXVsdGktZW52aXJvbm1lbnQgZGVwbG95bWVudHMuXG4gICAqL1xuICBwdWJsaWMgYWRkQm9vdHN0cmFwcGVkRW52aXJvbm1lbnQoYm9vdHN0cmFwcGVkOiBCb290c3RyYXBwZWRFbnZpcm9ubWVudCkge1xuICAgIGNvbnN0IGtleSA9IFtcbiAgICAgIGJvb3RzdHJhcHBlZC5ib290c3RyYXBTdGFja1ZlcnNpb24sXG4gICAgICBib290c3RyYXBwZWQuZW52aXJvbm1lbnQuYWNjb3VudCxcbiAgICAgIGJvb3RzdHJhcHBlZC5lbnZpcm9ubWVudC5yZWdpb24sXG4gICAgICBib290c3RyYXBwZWQuZW52aXJvbm1lbnQubmFtZSxcbiAgICBdLmpvaW4oJzonKTtcbiAgICB0aGlzLmJvb3RzdHJhcHBlZEVudmlyb25tZW50cy5zZXQoa2V5LCBib290c3RyYXBwZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIGxpc3Qgb2Ygbm90aWNlcyB0aGlzIGluc3RhbmNlIGlzIGF3YXJlIG9mLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGRhdGEgc291cmNlIGZhaWxzIHRvIGZldGNoIG5vdGljZXMuXG4gICAqIFdoZW4gdXNpbmcsIGNvbnNpZGVyIGlmIGV4ZWN1dGlvbiBzaG91bGQgaGFsdCBpbW1kaWF0ZWx5IG9yIGlmIGNhdGNoaW5nIHRoZSBlcnJvciBhbmQgY29udGludWluZyBpcyBtb3JlIGFwcHJvcHJpYXRlXG4gICAqXG4gICAqIEB0aHJvd3Mgb24gZmFpbHVyZSB0byByZWZyZXNoIHRoZSBkYXRhIHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZnJlc2gob3B0aW9uczogTm90aWNlc1JlZnJlc2hPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBpbm5lckRhdGFTb3VyY2UgPSBvcHRpb25zLmRhdGFTb3VyY2UgPz8gbmV3IFdlYnNpdGVOb3RpY2VEYXRhU291cmNlKHRoaXMuaW9IZWxwZXIsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBuZXcgQ2FjaGVkRGF0YVNvdXJjZSh0aGlzLmlvSGVscGVyLCBDQUNIRV9GSUxFX1BBVEgsIGlubmVyRGF0YVNvdXJjZSwgb3B0aW9ucy5mb3JjZSA/PyBmYWxzZSk7XG4gICAgY29uc3Qgbm90aWNlcyA9IGF3YWl0IGRhdGFTb3VyY2UuZmV0Y2goKTtcbiAgICB0aGlzLmRhdGEgPSBuZXcgU2V0KG5vdGljZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGUgZGF0YSBzb3VyY2UgZm9yIHJlbGV2YW50IG5vdGljZXNcbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIob3B0aW9uczogTm90aWNlc0Rpc3BsYXlPcHRpb25zID0ge30pOiBQcm9taXNlPEZpbHRlcmVkTm90aWNlW10+IHtcbiAgICByZXR1cm4gbmV3IE5vdGljZXNGaWx0ZXIodGhpcy5pb0hlbHBlcikuZmlsdGVyKHtcbiAgICAgIGRhdGE6IHRoaXMubm90aWNlc0Zyb21EYXRhKG9wdGlvbnMuaW5jbHVkZUFja25vd2xlZGdlZCA/PyBmYWxzZSksXG4gICAgICBjbGlWZXJzaW9uOiB0aGlzLmNsaVZlcnNpb24sXG4gICAgICBvdXREaXI6IHRoaXMub3V0cHV0LFxuICAgICAgYm9vdHN0cmFwcGVkRW52aXJvbm1lbnRzOiBBcnJheS5mcm9tKHRoaXMuYm9vdHN0cmFwcGVkRW52aXJvbm1lbnRzLnZhbHVlcygpKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSByZWxldmFudCBub3RpY2VzICh1bmxlc3MgY29udGV4dCBkaWN0YXRlcyB3ZSBzaG91bGRuJ3QpLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpc3BsYXkob3B0aW9uczogTm90aWNlc0Rpc3BsYXlPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZE5vdGljZXMgPSBhd2FpdCB0aGlzLmZpbHRlcihvcHRpb25zKTtcblxuICAgIGlmIChmaWx0ZXJlZE5vdGljZXMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTAxMDAubXNnKFtcbiAgICAgICAgJycsXG4gICAgICAgICdOT1RJQ0VTICAgICAgICAgKFdoYXRcXCdzIHRoaXM/IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay93aWtpL0NMSS1Ob3RpY2VzKScsXG4gICAgICAgICcnLFxuICAgICAgXS5qb2luKCdcXG4nKSkpO1xuICAgICAgZm9yIChjb25zdCBmaWx0ZXJlZCBvZiBmaWx0ZXJlZE5vdGljZXMpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZmlsdGVyZWQuZm9ybWF0KCkgKyAnXFxuJztcbiAgICAgICAgc3dpdGNoIChmaWx0ZXJlZC5ub3RpY2Uuc2V2ZXJpdHkpIHtcbiAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX1cwMTAxLm1zZyhmb3JtYXR0ZWQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0UwMTAxLm1zZyhmb3JtYXR0ZWQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JMDEwMS5tc2coZm9ybWF0dGVkKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTAxMDAubXNnKFxuICAgICAgICBgSWYgeW91IGRvbuKAmXQgd2FudCB0byBzZWUgYSBub3RpY2UgYW55bW9yZSwgdXNlIFwiY2RrIGFja25vd2xlZGdlIDxpZD5cIi4gRm9yIGV4YW1wbGUsIFwiY2RrIGFja25vd2xlZGdlICR7ZmlsdGVyZWROb3RpY2VzWzBdLm5vdGljZS5pc3N1ZU51bWJlcn1cIi5gLFxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hvd1RvdGFsID8/IGZhbHNlKSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JMDEwMC5tc2coXG4gICAgICAgIGBcXG5UaGVyZSBhcmUgJHtmaWx0ZXJlZE5vdGljZXMubGVuZ3RofSB1bmFja25vd2xlZGdlZCBub3RpY2UocykuYCxcbiAgICAgICkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBub3RpY2VzIGF2YWlsYWJsZSBpbiB0aGUgZGF0YSBzb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBpbmNsdWRlQWNrbm93bGVnZGVkIC0gV2hldGhlciB0byBpbmNsdWRlIGFja25vd2xlZGdlZCBub3RpY2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBub3RpY2VzRnJvbURhdGEoaW5jbHVkZUFja25vd2xlZ2RlZCA9IGZhbHNlKTogTm90aWNlW10ge1xuICAgIGNvbnN0IGRhdGEgPSBBcnJheS5mcm9tKHRoaXMuZGF0YSk7XG5cbiAgICBpZiAoaW5jbHVkZUFja25vd2xlZ2RlZCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKG4gPT4gIXRoaXMuYWNrbm93bGVkZ2VkSXNzdWVOdW1iZXJzLmhhcyhuLmlzc3VlTnVtYmVyKSk7XG4gIH1cbn1cblxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { TypedMapping } from '@aws-cdk/cloudformation-diff';
|
|
2
2
|
import type * as cxapi from '@aws-cdk/cx-api';
|
|
3
|
+
import type { ResourceMapping as CfnResourceMapping } from '@aws-sdk/client-cloudformation';
|
|
3
4
|
export interface CloudFormationResource {
|
|
4
5
|
Type: string;
|
|
5
6
|
Properties?: any;
|
|
@@ -11,11 +12,14 @@ export interface CloudFormationTemplate {
|
|
|
11
12
|
[logicalId: string]: CloudFormationResource;
|
|
12
13
|
};
|
|
13
14
|
Outputs?: Record<string, any>;
|
|
15
|
+
Rules?: Record<string, any>;
|
|
16
|
+
Parameters?: Record<string, any>;
|
|
14
17
|
}
|
|
15
18
|
export interface CloudFormationStack {
|
|
16
19
|
readonly environment: cxapi.Environment;
|
|
17
20
|
readonly stackName: string;
|
|
18
21
|
readonly template: CloudFormationTemplate;
|
|
22
|
+
readonly assumeRoleArn?: string;
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* This class mirrors the `ResourceLocation` interface from CloudFormation,
|
|
@@ -30,6 +34,7 @@ export declare class ResourceLocation {
|
|
|
30
34
|
toLocationString(): string;
|
|
31
35
|
getType(): string;
|
|
32
36
|
equalTo(other: ResourceLocation): boolean;
|
|
37
|
+
get stackName(): string;
|
|
33
38
|
}
|
|
34
39
|
/**
|
|
35
40
|
* A mapping between a source and a destination location.
|
|
@@ -39,5 +44,6 @@ export declare class ResourceMapping {
|
|
|
39
44
|
readonly destination: ResourceLocation;
|
|
40
45
|
constructor(source: ResourceLocation, destination: ResourceLocation);
|
|
41
46
|
toTypedMapping(): TypedMapping;
|
|
47
|
+
toCloudFormation(): CfnResourceMapping;
|
|
42
48
|
}
|
|
43
49
|
//# sourceMappingURL=cloudformation.d.ts.map
|
|
@@ -32,6 +32,9 @@ class ResourceLocation {
|
|
|
32
32
|
equalTo(other) {
|
|
33
33
|
return this.logicalResourceId === other.logicalResourceId && this.stack.stackName === other.stack.stackName;
|
|
34
34
|
}
|
|
35
|
+
get stackName() {
|
|
36
|
+
return this.stack.stackName;
|
|
37
|
+
}
|
|
35
38
|
}
|
|
36
39
|
exports.ResourceLocation = ResourceLocation;
|
|
37
40
|
/**
|
|
@@ -53,6 +56,18 @@ class ResourceMapping {
|
|
|
53
56
|
destinationPath: this.destination.toPath(),
|
|
54
57
|
};
|
|
55
58
|
}
|
|
59
|
+
toCloudFormation() {
|
|
60
|
+
return {
|
|
61
|
+
Source: {
|
|
62
|
+
StackName: this.source.stack.stackName,
|
|
63
|
+
LogicalResourceId: this.source.logicalResourceId,
|
|
64
|
+
},
|
|
65
|
+
Destination: {
|
|
66
|
+
StackName: this.destination.stack.stackName,
|
|
67
|
+
LogicalResourceId: this.destination.logicalResourceId,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
56
71
|
}
|
|
57
72
|
exports.ResourceMapping = ResourceMapping;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZvcm1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEyQkE7Ozs7R0FJRztBQUNILE1BQWEsZ0JBQWdCO0lBQ0M7SUFBNEM7SUFBeEUsWUFBNEIsS0FBMEIsRUFBa0IsaUJBQXlCO1FBQXJFLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBQWtCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtJQUNqRyxDQUFDO0lBRU0sTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVwRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVNLE9BQU87UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0UsT0FBTyxRQUFRLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQXVCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBaENELDRDQWdDQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBQ0U7SUFBMEM7SUFBdEUsWUFBNEIsTUFBd0IsRUFBa0IsV0FBNkI7UUFBdkUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFBa0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBQ25HLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU87WUFDTCx1REFBdUQ7WUFDdkQsMkJBQTJCO1lBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDaEMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1NBQzNDLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU87WUFDTCxNQUFNLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQ3RDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCO2FBQ2pEO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUMzQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQjthQUN0RDtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExQkQsMENBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUeXBlZE1hcHBpbmcgfSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VNYXBwaW5nIGFzIENmblJlc291cmNlTWFwcGluZyB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGb3JtYXRpb25SZXNvdXJjZSB7XG4gIFR5cGU6IHN0cmluZztcbiAgUHJvcGVydGllcz86IGFueTtcbiAgTWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBEZXBlbmRzT24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZvcm1hdGlvblRlbXBsYXRlIHtcbiAgUmVzb3VyY2VzPzoge1xuICAgIFtsb2dpY2FsSWQ6IHN0cmluZ106IENsb3VkRm9ybWF0aW9uUmVzb3VyY2U7XG4gIH07XG4gIE91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBSdWxlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIFBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uU3RhY2sge1xuICByZWFkb25seSBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0ZW1wbGF0ZTogQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZTtcbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIG1pcnJvcnMgdGhlIGBSZXNvdXJjZUxvY2F0aW9uYCBpbnRlcmZhY2UgZnJvbSBDbG91ZEZvcm1hdGlvbixcbiAqIGJ1dCBpcyByaWNoZXIsIHNpbmNlIGl0IGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgc3RhY2sgb2JqZWN0LCByYXRoZXIgdGhhblxuICogbWVyZWx5IHRoZSBzdGFjayBuYW1lLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VMb2NhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzdGFjazogQ2xvdWRGb3JtYXRpb25TdGFjaywgcHVibGljIHJlYWRvbmx5IGxvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyB0b1BhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuc3RhY2sudGVtcGxhdGUuUmVzb3VyY2VzPy5bdGhpcy5sb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgY29uc3QgcmVzdWx0ID0gcmVzb3VyY2U/Lk1ldGFkYXRhPy5bJ2F3czpjZGs6cGF0aCddO1xuXG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBwYXRoIGlzIG5vdCBhdmFpbGFibGUsIHdlIGNhbiB1c2Ugc3RhY2sgbmFtZSBhbmQgbG9naWNhbCBJRFxuICAgIHJldHVybiB0aGlzLnRvTG9jYXRpb25TdHJpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0xvY2F0aW9uU3RyaW5nKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YWNrLnN0YWNrTmFtZX0uJHt0aGlzLmxvZ2ljYWxSZXNvdXJjZUlkfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5zdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Llt0aGlzLmxvZ2ljYWxSZXNvdXJjZUlkID8/ICcnXTtcbiAgICByZXR1cm4gcmVzb3VyY2U/LlR5cGUgPz8gJ1Vua25vd24nO1xuICB9XG5cbiAgcHVibGljIGVxdWFsVG8ob3RoZXI6IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2dpY2FsUmVzb3VyY2VJZCA9PT0gb3RoZXIubG9naWNhbFJlc291cmNlSWQgJiYgdGhpcy5zdGFjay5zdGFja05hbWUgPT09IG90aGVyLnN0YWNrLnN0YWNrTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhY2tOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3RhY2tOYW1lO1xuICB9XG59XG5cbi8qKlxuICogQSBtYXBwaW5nIGJldHdlZW4gYSBzb3VyY2UgYW5kIGEgZGVzdGluYXRpb24gbG9jYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZU1hcHBpbmcge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgc291cmNlOiBSZXNvdXJjZUxvY2F0aW9uLCBwdWJsaWMgcmVhZG9ubHkgZGVzdGluYXRpb246IFJlc291cmNlTG9jYXRpb24pIHtcbiAgfVxuXG4gIHB1YmxpYyB0b1R5cGVkTWFwcGluZygpOiBUeXBlZE1hcHBpbmcge1xuICAgIHJldHVybiB7XG4gICAgICAvLyB0aGUgdHlwZSBpcyB0aGUgc2FtZSBpbiBib3RoIHNvdXJjZSBhbmQgZGVzdGluYXRpb24sXG4gICAgICAvLyBzbyB3ZSBjYW4gdXNlIGVpdGhlciBvbmVcbiAgICAgIHR5cGU6IHRoaXMuc291cmNlLmdldFR5cGUoKSxcbiAgICAgIHNvdXJjZVBhdGg6IHRoaXMuc291cmNlLnRvUGF0aCgpLFxuICAgICAgZGVzdGluYXRpb25QYXRoOiB0aGlzLmRlc3RpbmF0aW9uLnRvUGF0aCgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9DbG91ZEZvcm1hdGlvbigpOiBDZm5SZXNvdXJjZU1hcHBpbmcge1xuICAgIHJldHVybiB7XG4gICAgICBTb3VyY2U6IHtcbiAgICAgICAgU3RhY2tOYW1lOiB0aGlzLnNvdXJjZS5zdGFjay5zdGFja05hbWUsXG4gICAgICAgIExvZ2ljYWxSZXNvdXJjZUlkOiB0aGlzLnNvdXJjZS5sb2dpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH0sXG4gICAgICBEZXN0aW5hdGlvbjoge1xuICAgICAgICBTdGFja05hbWU6IHRoaXMuZGVzdGluYXRpb24uc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICBMb2dpY2FsUmVzb3VyY2VJZDogdGhpcy5kZXN0aW5hdGlvbi5sb2dpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import { type IAws } from '@aws-cdk/cdk-assets-lib';
|
|
1
2
|
import type { Environment } from '@aws-cdk/cx-api';
|
|
3
|
+
import type { StackDefinition } from '@aws-sdk/client-cloudformation';
|
|
2
4
|
import type { CloudFormationStack } from './cloudformation';
|
|
3
5
|
import { ResourceMapping } from './cloudformation';
|
|
6
|
+
import type { SdkProvider } from '../aws-auth/sdk-provider';
|
|
7
|
+
import type { IoHelper } from '../io/private';
|
|
4
8
|
export interface RefactoringContextOptions {
|
|
5
9
|
environment: Environment;
|
|
6
10
|
localStacks: CloudFormationStack[];
|
|
7
11
|
deployedStacks: CloudFormationStack[];
|
|
8
12
|
overrides?: ResourceMapping[];
|
|
13
|
+
assumeRoleArn?: string;
|
|
9
14
|
ignoreModifications?: boolean;
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
@@ -14,9 +19,23 @@ export interface RefactoringContextOptions {
|
|
|
14
19
|
export declare class RefactoringContext {
|
|
15
20
|
private readonly _mappings;
|
|
16
21
|
private readonly ambiguousMoves;
|
|
22
|
+
private readonly localStacks;
|
|
23
|
+
private readonly assumeRoleArn?;
|
|
17
24
|
readonly environment: Environment;
|
|
18
25
|
constructor(props: RefactoringContextOptions);
|
|
19
26
|
get ambiguousPaths(): [string[], string[]][];
|
|
20
27
|
get mappings(): ResourceMapping[];
|
|
28
|
+
execute(stackDefinitions: StackDefinition[], sdkProvider: SdkProvider, ioHelper: IoHelper): Promise<void>;
|
|
29
|
+
private checkBootstrapVersion;
|
|
30
|
+
private findRoleToAssume;
|
|
21
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Replace the {ACCOUNT} and {REGION} placeholders in all strings found in a complex object.
|
|
34
|
+
*
|
|
35
|
+
* Duplicated between cdk-assets and aws-cdk CLI because we don't have a good single place to put it
|
|
36
|
+
* (they're nominally independent tools).
|
|
37
|
+
*/
|
|
38
|
+
export declare function replaceAwsPlaceholders<A extends {
|
|
39
|
+
region?: string;
|
|
40
|
+
}>(object: A, aws: IAws): Promise<A>;
|
|
22
41
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RefactoringContext = void 0;
|
|
4
|
+
exports.replaceAwsPlaceholders = replaceAwsPlaceholders;
|
|
5
|
+
const cdk_assets_lib_1 = require("@aws-cdk/cdk-assets-lib");
|
|
6
|
+
const cx_api_1 = require("@aws-cdk/cx-api");
|
|
4
7
|
const cloudformation_1 = require("./cloudformation");
|
|
5
8
|
const digest_1 = require("./digest");
|
|
6
9
|
const toolkit_error_1 = require("../../toolkit/toolkit-error");
|
|
7
10
|
const sets_1 = require("../../util/sets");
|
|
11
|
+
const environment_1 = require("../environment");
|
|
12
|
+
const plugin_1 = require("../plugin");
|
|
8
13
|
/**
|
|
9
14
|
* Encapsulates the information for refactoring resources in a single environment.
|
|
10
15
|
*/
|
|
11
16
|
class RefactoringContext {
|
|
12
17
|
_mappings = [];
|
|
13
18
|
ambiguousMoves = [];
|
|
19
|
+
localStacks;
|
|
20
|
+
assumeRoleArn;
|
|
14
21
|
environment;
|
|
15
22
|
constructor(props) {
|
|
16
23
|
this.environment = props.environment;
|
|
@@ -19,6 +26,8 @@ class RefactoringContext {
|
|
|
19
26
|
const overrides = (props.overrides ?? []).concat(additionalOverrides);
|
|
20
27
|
const [nonAmbiguousMoves, ambiguousMoves] = partitionByAmbiguity(overrides, moves);
|
|
21
28
|
this.ambiguousMoves = ambiguousMoves;
|
|
29
|
+
this.localStacks = props.localStacks;
|
|
30
|
+
this.assumeRoleArn = props.assumeRoleArn;
|
|
22
31
|
this._mappings = resourceMappings(nonAmbiguousMoves);
|
|
23
32
|
}
|
|
24
33
|
get ambiguousPaths() {
|
|
@@ -30,6 +39,82 @@ class RefactoringContext {
|
|
|
30
39
|
get mappings() {
|
|
31
40
|
return this._mappings;
|
|
32
41
|
}
|
|
42
|
+
async execute(stackDefinitions, sdkProvider, ioHelper) {
|
|
43
|
+
if (this.mappings.length === 0) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const assumeRoleArn = this.assumeRoleArn ?? await this.findRoleToAssume(sdkProvider);
|
|
47
|
+
const sdk = (await sdkProvider.forEnvironment(this.environment, plugin_1.Mode.ForWriting, {
|
|
48
|
+
assumeRoleArn,
|
|
49
|
+
})).sdk;
|
|
50
|
+
await this.checkBootstrapVersion(sdk, ioHelper);
|
|
51
|
+
const cfn = sdk.cloudFormation();
|
|
52
|
+
const mappings = this.mappings;
|
|
53
|
+
const input = {
|
|
54
|
+
ResourceMappings: mappings.map((m) => m.toCloudFormation()),
|
|
55
|
+
StackDefinitions: stackDefinitions,
|
|
56
|
+
};
|
|
57
|
+
const refactor = await cfn.createStackRefactor(input);
|
|
58
|
+
await cfn.waitUntilStackRefactorCreateComplete({
|
|
59
|
+
StackRefactorId: refactor.StackRefactorId,
|
|
60
|
+
});
|
|
61
|
+
await cfn.executeStackRefactor({
|
|
62
|
+
StackRefactorId: refactor.StackRefactorId,
|
|
63
|
+
});
|
|
64
|
+
await cfn.waitUntilStackRefactorExecuteComplete({
|
|
65
|
+
StackRefactorId: refactor.StackRefactorId,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async checkBootstrapVersion(sdk, ioHelper) {
|
|
69
|
+
const environmentResourcesRegistry = new environment_1.EnvironmentResourcesRegistry();
|
|
70
|
+
const envResources = environmentResourcesRegistry.for(this.environment, sdk, ioHelper);
|
|
71
|
+
let bootstrapVersion = undefined;
|
|
72
|
+
try {
|
|
73
|
+
// Try to get the bootstrap version
|
|
74
|
+
bootstrapVersion = (await envResources.lookupToolkit()).version;
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
// But if we can't, keep going. Maybe we can still succeed.
|
|
78
|
+
}
|
|
79
|
+
if (bootstrapVersion != null && bootstrapVersion < 28) {
|
|
80
|
+
const environment = `aws://${this.environment.account}/${this.environment.region}`;
|
|
81
|
+
throw new toolkit_error_1.ToolkitError(`The CDK toolkit stack in environment ${environment} doesn't support refactoring. Please run 'cdk bootstrap ${environment}' to update it.`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async findRoleToAssume(sdkProvider) {
|
|
85
|
+
// To execute a refactor, we need the deployment role ARN for the given
|
|
86
|
+
// environment. Most toolkit commands get the information about which roles to
|
|
87
|
+
// assume from the cloud assembly (and ultimately from the CDK framework). Refactor
|
|
88
|
+
// is different because it is not the application/framework that dictates what the
|
|
89
|
+
// toolkit should do, but it is the toolkit itself that has to figure it out.
|
|
90
|
+
//
|
|
91
|
+
// Nevertheless, the cloud assembly is the most reliable source for this kind of
|
|
92
|
+
// information. For the deployment role ARN, in particular, what we do here
|
|
93
|
+
// is look at all the stacks for a given environment in the cloud assembly and
|
|
94
|
+
// extract the deployment role ARN that is common to all of them. If no role is
|
|
95
|
+
// found, we go ahead without assuming a role. If there is more than one role,
|
|
96
|
+
// we consider that an invariant was violated, and throw an error.
|
|
97
|
+
const env = this.environment;
|
|
98
|
+
const roleArns = new Set(this.localStacks
|
|
99
|
+
.filter((s) => s.environment.account === env.account && s.environment.region === env.region)
|
|
100
|
+
.map((s) => s.assumeRoleArn));
|
|
101
|
+
if (roleArns.size === 0) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
if (roleArns.size !== 1) {
|
|
105
|
+
// Unlikely to happen. But if it does, we can't proceed
|
|
106
|
+
throw new toolkit_error_1.ToolkitError(`Multiple stacks in environment aws://${env.account}/${env.region} have different deployment role ARNs. Cannot proceed.`);
|
|
107
|
+
}
|
|
108
|
+
const arn = Array.from(roleArns)[0];
|
|
109
|
+
if (arn != null) {
|
|
110
|
+
const resolvedEnv = await sdkProvider.resolveEnvironment(env);
|
|
111
|
+
const region = resolvedEnv.region;
|
|
112
|
+
return (await replaceAwsPlaceholders({ region, assumeRoleArn: arn }, new cdk_assets_lib_1.DefaultAwsClient())).assumeRoleArn;
|
|
113
|
+
}
|
|
114
|
+
// If we couldn't find a role ARN, we can proceed without assuming a role.
|
|
115
|
+
// Maybe the default credentials have permissions to do what we need.
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
33
118
|
}
|
|
34
119
|
exports.RefactoringContext = RefactoringContext;
|
|
35
120
|
/**
|
|
@@ -57,17 +142,35 @@ function structuralOverrides(deployedStacks, localStacks) {
|
|
|
57
142
|
function resourceMoves(before, after, direction = 'direct', ignoreModifications = false) {
|
|
58
143
|
const digestsBefore = resourceDigests(before, direction);
|
|
59
144
|
const digestsAfter = resourceDigests(after, direction);
|
|
60
|
-
const stackNames = (stacks) => stacks
|
|
61
|
-
.map((s) => s.stackName)
|
|
62
|
-
.sort()
|
|
63
|
-
.join(', ');
|
|
64
145
|
if (!(ignoreModifications || isomorphic(digestsBefore, digestsAfter))) {
|
|
65
|
-
const message = [
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
146
|
+
const message = ['A refactor operation cannot add, remove or update resources. Only resource moves and renames are allowed.'];
|
|
147
|
+
const difference = (a, b) => {
|
|
148
|
+
return Array.from((0, sets_1.setDiff)(new Set(Object.keys(a)), new Set(Object.keys(b)))).flatMap(k => a[k])
|
|
149
|
+
.map(x => ` - ${x.toPath()}`)
|
|
150
|
+
.sort()
|
|
151
|
+
.join('\n');
|
|
152
|
+
};
|
|
153
|
+
const stackNames = (stacks) => stacks.length === 0
|
|
154
|
+
? 'NONE'
|
|
155
|
+
: stacks
|
|
156
|
+
.map((s) => s.stackName)
|
|
157
|
+
.sort()
|
|
158
|
+
.join(', ');
|
|
159
|
+
const onlyDeployed = difference(digestsBefore, digestsAfter);
|
|
160
|
+
const onlyLocal = difference(digestsAfter, digestsBefore);
|
|
161
|
+
if (onlyDeployed.length > 0) {
|
|
162
|
+
message.push(`The following resources are present only in the AWS environment:\n${onlyDeployed}`);
|
|
163
|
+
}
|
|
164
|
+
if (onlyLocal.length > 0) {
|
|
165
|
+
message.push(`\nThe following resources are present only in your CDK application:\n${onlyLocal}`);
|
|
166
|
+
}
|
|
167
|
+
message.push('');
|
|
168
|
+
message.push('The following stacks were used in the comparison:');
|
|
169
|
+
message.push(` - Deployed: ${stackNames(before)}`);
|
|
170
|
+
message.push(` - Local: ${stackNames(after)}`);
|
|
171
|
+
message.push('');
|
|
172
|
+
message.push('Hint: by default, only deployed stacks that have the same name as a local stack are included.');
|
|
173
|
+
message.push('If you want to include additional deployed stacks for comparison, re-run the command with the option \'--additional-stack-name=<STACK>\' for each stack.');
|
|
71
174
|
throw new toolkit_error_1.ToolkitError(message.join('\n'));
|
|
72
175
|
}
|
|
73
176
|
return Object.values(removeUnmovedResources(zip(digestsBefore, digestsAfter)));
|
|
@@ -196,4 +299,33 @@ function partitionByAmbiguity(overrides, moves) {
|
|
|
196
299
|
}
|
|
197
300
|
return [nonAmbiguous, ambiguous];
|
|
198
301
|
}
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEscURBQXFFO0FBRXJFLHFDQUFrRDtBQUNsRCwrREFBMkQ7QUFDM0QsMENBQTRDO0FBaUI1Qzs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQ1osU0FBUyxHQUFzQixFQUFFLENBQUM7SUFDbEMsY0FBYyxHQUFtQixFQUFFLENBQUM7SUFDckMsV0FBVyxDQUFjO0lBRXpDLFlBQVksS0FBZ0M7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFFckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFB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QUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxRQUF5QixFQUFFLElBQWtCO1FBQzNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU87WUFDTCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN2RCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBSZXNvdXJjZUxvY2F0aW9uLCBSZXNvdXJjZU1hcHBpbmcgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgR3JhcGhEaXJlY3Rpb24gfSBmcm9tICcuL2RpZ2VzdCc7XG5pbXBvcnQgeyBjb21wdXRlUmVzb3VyY2VEaWdlc3RzIH0gZnJvbSAnLi9kaWdlc3QnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IGVxdWFsU2V0cyB9IGZyb20gJy4uLy4uL3V0aWwvc2V0cyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNldCBvZiBwb3NzaWJsZSBtb3ZlcyBvZiBhIHJlc291cmNlIGZyb20gb25lIGxvY2F0aW9uXG4gKiB0byBhbm90aGVyLiBJbiB0aGUgaWRlYWwgY2FzZSwgdGhlcmUgaXMgb25seSBvbmUgc291cmNlIGFuZCBvbmx5IG9uZVxuICogZGVzdGluYXRpb24uXG4gKi9cbnR5cGUgUmVzb3VyY2VNb3ZlID0gW1Jlc291cmNlTG9jYXRpb25bXSwgUmVzb3VyY2VMb2NhdGlvbltdXTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWZhY3RvcmluZ0NvbnRleHRPcHRpb25zIHtcbiAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xuICBkZXBsb3llZFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xuICBvdmVycmlkZXM/OiBSZXNvdXJjZU1hcHBpbmdbXTtcbiAgaWdub3JlTW9kaWZpY2F0aW9ucz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIHRoZSBpbmZvcm1hdGlvbiBmb3IgcmVmYWN0b3JpbmcgcmVzb3VyY2VzIGluIGEgc2luZ2xlIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgY2xhc3MgUmVmYWN0b3JpbmdDb250ZXh0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFwcGluZ3M6IFJlc291cmNlTWFwcGluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYW1iaWd1b3VzTW92ZXM6IFJlc291cmNlTW92ZVtdID0gW107XG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFJlZmFjdG9yaW5nQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gcHJvcHMuZW52aXJvbm1lbnQ7XG4gICAgY29uc3QgbW92ZXMgPSByZXNvdXJjZU1vdmVzKHByb3BzLmRlcGxveWVkU3RhY2tzLCBwcm9wcy5sb2NhbFN0YWNrcywgJ2RpcmVjdCcsIHByb3BzLmlnbm9yZU1vZGlmaWNhdGlvbnMpO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxPdmVycmlkZXMgPSBzdHJ1Y3R1cmFsT3ZlcnJpZGVzKHByb3BzLmRlcGxveWVkU3RhY2tzLCBwcm9wcy5sb2NhbFN0YWNrcyk7XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gKHByb3BzLm92ZXJyaWRlcyA/PyBbXSkuY29uY2F0KGFkZGl0aW9uYWxPdmVycmlkZXMpO1xuICAgIGNvbnN0IFtub25BbWJpZ3VvdXNNb3ZlcywgYW1iaWd1b3VzTW92ZXNdID0gcGFydGl0aW9uQnlBbWJpZ3VpdHkob3ZlcnJpZGVzLCBtb3Zlcyk7XG4gICAgdGhpcy5hbWJpZ3VvdXNNb3ZlcyA9IGFtYmlndW91c01vdmVzO1xuXG4gICAgdGhpcy5fbWFwcGluZ3MgPSByZXNvdXJjZU1hcHBpbmdzKG5vbkFtYmlndW91c01vdmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYW1iaWd1b3VzUGF0aHMoKTogW3N0cmluZ1tdLCBzdHJpbmdbXV1bXSB7XG4gICAgcmV0dXJuIHRoaXMuYW1iaWd1b3VzTW92ZXMubWFwKChbYSwgYl0pID0+IFtjb252ZXJ0KGEpLCBjb252ZXJ0KGIpXSk7XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0KGxvY2F0aW9uczogUmVzb3VyY2VMb2NhdGlvbltdKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5tYXAoKGwpID0+IGwudG9QYXRoKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFwcGluZ3MoKTogUmVzb3VyY2VNYXBwaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9tYXBwaW5ncztcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbiBhdXRvbWF0aWMgbGlzdCBvZiBvdmVycmlkZXMgdGhhdCBjYW4gYmUgZGVkdWNlZCBmcm9tIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9wcG9zaXRlIHJlc291cmNlIGdyYXBoLlxuICogU3VwcG9zZSB3ZSBoYXZlIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2UgZ3JhcGg6XG4gKlxuICogICAgIEEgLS0+IEJcbiAqICAgICBDIC0tPiBEXG4gKlxuICogc3VjaCB0aGF0IEIgYW5kIEQgYXJlIGlkZW50aWNhbCwgYnV0IEEgaXMgZGlmZmVyZW50IGZyb20gQy4gVGhlbiBkaWdlc3QoQikgPSBkaWdlc3QoRCkuIElmIGJvdGggcmVzb3VyY2VzIGFyZSBtb3ZlZCxcbiAqIHdlIGhhdmUgYW4gYW1iaWd1aXR5LiBCdXQgaWYgd2UgcmV2ZXJzZSB0aGUgYXJyb3dzOlxuICpcbiAqICAgICBBIDwtLSBCXG4gKiAgICAgQyA8LS0gRFxuICpcbiAqIHRoZW4gZGlnZXN0KEIpIOKJoCBkaWdlc3QoRCksIGJlY2F1c2UgdGhleSBub3cgaGF2ZSBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzLiBJZiB3ZSBjb21wdXRlIHRoZSBtYXBwaW5ncyBmcm9tIHRoaXNcbiAqIG9wcG9zaXRlIGdyYXBoLCB3ZSBjYW4gdXNlIHRoZW0gYXMgYSBzZXQgb2Ygb3ZlcnJpZGVzIHRvIGRpc2FtYmlndWF0ZSB0aGUgb3JpZ2luYWwgbW92ZXMuXG4gKlxuICovXG5mdW5jdGlvbiBzdHJ1Y3R1cmFsT3ZlcnJpZGVzKGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10sIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBSZXNvdXJjZU1hcHBpbmdbXSB7XG4gIGNvbnN0IG1vdmVzID0gcmVzb3VyY2VNb3ZlcyhkZXBsb3llZFN0YWNrcywgbG9jYWxTdGFja3MsICdvcHBvc2l0ZScsIHRydWUpO1xuICBjb25zdCBbbm9uQW1iaWd1b3VzTW92ZXNdID0gcGFydGl0aW9uQnlBbWJpZ3VpdHkoW10sIG1vdmVzKTtcbiAgcmV0dXJuIHJlc291cmNlTWFwcGluZ3Mobm9uQW1iaWd1b3VzTW92ZXMpO1xufVxuXG5mdW5jdGlvbiByZXNvdXJjZU1vdmVzKFxuICBiZWZvcmU6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSxcbiAgYWZ0ZXI6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSxcbiAgZGlyZWN0aW9uOiBHcmFwaERpcmVjdGlvbiA9ICdkaXJlY3QnLFxuICBpZ25vcmVNb2RpZmljYXRpb25zOiBib29sZWFuID0gZmFsc2UpOiBSZXNvdXJjZU1vdmVbXSB7XG4gIGNvbnN0IGRpZ2VzdHNCZWZvcmUgPSByZXNvdXJjZURpZ2VzdHMoYmVmb3JlLCBkaXJlY3Rpb24pO1xuICBjb25zdCBkaWdlc3RzQWZ0ZXIgPSByZXNvdXJjZURpZ2VzdHMoYWZ0ZXIsIGRpcmVjdGlvbik7XG5cbiAgY29uc3Qgc3RhY2tOYW1lcyA9IChzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSkgPT5cbiAgICBzdGFja3NcbiAgICAgIC5tYXAoKHMpID0+IHMuc3RhY2tOYW1lKVxuICAgICAgLnNvcnQoKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIGlmICghKGlnbm9yZU1vZGlmaWNhdGlvbnMgfHwgaXNvbW9ycGhpYyhkaWdlc3RzQmVmb3JlLCBkaWdlc3RzQWZ0ZXIpKSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgICAnQSByZWZhY3RvciBvcGVyYXRpb24gY2Fubm90IGFkZCwgcmVtb3ZlIG9yIHVwZGF0ZSByZXNvdXJjZXMuIE9ubHkgcmVzb3VyY2UgbW92ZXMgYW5kIHJlbmFtZXMgYXJlIGFsbG93ZWQuICcsXG4gICAgICBcIlJ1biAnY2RrIGRpZmYnIHRvIGNvbXBhcmUgdGhlIGxvY2FsIHRlbXBsYXRlcyB0byB0aGUgZGVwbG95ZWQgc3RhY2tzLlxcblwiLFxuICAgICAgYERlcGxveWVkIHN0YWNrczogJHtzdGFja05hbWVzKGJlZm9yZSl9YCxcbiAgICAgIGBMb2NhbCBzdGFja3M6ICR7c3RhY2tOYW1lcyhhZnRlcil9YCxcbiAgICBdO1xuXG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihtZXNzYWdlLmpvaW4oJ1xcbicpKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QudmFsdWVzKHJlbW92ZVVubW92ZWRSZXNvdXJjZXMoemlwKGRpZ2VzdHNCZWZvcmUsIGRpZ2VzdHNBZnRlcikpKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHR3byBzZXRzIG9mIHJlc291cmNlcyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzICh1bmlxdWVseSBpZGVudGlmaWVkIGJ5IHRoZSBkaWdlc3QpLCBhbmRcbiAqIGVhY2ggZWxlbWVudCBpcyBpbiB0aGUgc2FtZSBudW1iZXIgb2YgbG9jYXRpb25zLiBUaGUgbG9jYXRpb25zIHRoZW1zZWx2ZXMgbWF5IGJlIGRpZmZlcmVudC5cbiAqL1xuZnVuY3Rpb24gaXNvbW9ycGhpYyhhOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZUxvY2F0aW9uW10+LCBiOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZUxvY2F0aW9uW10+KTogYm9vbGVhbiB7XG4gIGNvbnN0IHNhbWVLZXlzID0gZXF1YWxTZXRzKG5ldyBTZXQoT2JqZWN0LmtleXMoYSkpLCBuZXcgU2V0KE9iamVjdC5rZXlzKGIpKSk7XG4gIHJldHVybiBzYW1lS2V5cyAmJiBPYmplY3QuZW50cmllcyhhKS5ldmVyeSgoW2RpZ2VzdCwgbG9jYXRpb25zXSkgPT4gbG9jYXRpb25zLmxlbmd0aCA9PT0gYltkaWdlc3RdLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVVubW92ZWRSZXNvdXJjZXMobW92ZXM6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTW92ZT4pOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmU+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmU+ID0ge307XG4gIGZvciAoY29uc3QgW2hhc2gsIFtiZWZvcmUsIGFmdGVyXV0gb2YgT2JqZWN0LmVudHJpZXMobW92ZXMpKSB7XG4gICAgY29uc3QgY29tbW9uID0gYmVmb3JlLmZpbHRlcigoYikgPT4gYWZ0ZXIuc29tZSgoYSkgPT4gYS5lcXVhbFRvKGIpKSk7XG4gICAgcmVzdWx0W2hhc2hdID0gW1xuICAgICAgYmVmb3JlLmZpbHRlcigoYikgPT4gIWNvbW1vbi5zb21lKChjKSA9PiBiLmVxdWFsVG8oYykpKSxcbiAgICAgIGFmdGVyLmZpbHRlcigoYSkgPT4gIWNvbW1vbi5zb21lKChjKSA9PiBhLmVxdWFsVG8oYykpKSxcbiAgICBdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBGb3IgZWFjaCBoYXNoLCBpZGVudGlmeWluZyBhIHNpbmdsZSByZXNvdXJjZSwgemlwIHRoZSB0d28gbGlzdHMgb2YgbG9jYXRpb25zLFxuICogcHJvZHVjaW5nIGEgcmVzb3VyY2UgbW92ZVxuICovXG5mdW5jdGlvbiB6aXAoXG4gIG0xOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZUxvY2F0aW9uW10+LFxuICBtMjogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPixcbik6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTW92ZT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTW92ZT4gPSB7fTtcblxuICBmb3IgKGNvbnN0IFtoYXNoLCBsb2NhdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKG0xKSkge1xuICAgIGlmIChoYXNoIGluIG0yKSB7XG4gICAgICByZXN1bHRbaGFzaF0gPSBbbG9jYXRpb25zLCBtMltoYXNoXV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtoYXNoXSA9IFtsb2NhdGlvbnMsIFtdXTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtoYXNoLCBsb2NhdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKG0yKSkge1xuICAgIGlmICghKGhhc2ggaW4gbTEpKSB7XG4gICAgICByZXN1bHRbaGFzaF0gPSBbW10sIGxvY2F0aW9uc107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyBhIGxpc3Qgb2YgcGFpcnMgW2RpZ2VzdCwgbG9jYXRpb25dIGZvciBlYWNoIHJlc291cmNlIGluIHRoZSBzdGFjay5cbiAqL1xuZnVuY3Rpb24gcmVzb3VyY2VEaWdlc3RzKHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdLCBkaXJlY3Rpb246IEdyYXBoRGlyZWN0aW9uKTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPiB7XG4gIC8vIGluZGV4IHN0YWNrcyBieSBuYW1lXG4gIGNvbnN0IHN0YWNrc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBDbG91ZEZvcm1hdGlvblN0YWNrPigpO1xuICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcykge1xuICAgIHN0YWNrc0J5TmFtZS5zZXQoc3RhY2suc3RhY2tOYW1lLCBzdGFjayk7XG4gIH1cblxuICBjb25zdCBkaWdlc3RzID0gY29tcHV0ZVJlc291cmNlRGlnZXN0cyhzdGFja3MsIGRpcmVjdGlvbik7XG5cbiAgcmV0dXJuIGdyb3VwQnlLZXkoXG4gICAgT2JqZWN0LmVudHJpZXMoZGlnZXN0cykubWFwKChbbG9jLCBkaWdlc3RdKSA9PiB7XG4gICAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gbG9jLnNwbGl0KCcuJyk7XG4gICAgICBjb25zdCBsb2NhdGlvbjogUmVzb3VyY2VMb2NhdGlvbiA9IG5ldyBSZXNvdXJjZUxvY2F0aW9uKHN0YWNrc0J5TmFtZS5nZXQoc3RhY2tOYW1lKSEsIGxvZ2ljYWxJZCk7XG4gICAgICByZXR1cm4gW2RpZ2VzdCwgbG9jYXRpb25dO1xuICAgIH0pLFxuICApO1xuXG4gIGZ1bmN0aW9uIGdyb3VwQnlLZXk8QT4oZW50cmllczogW3N0cmluZywgQV1bXSk6IFJlY29yZDxzdHJpbmcsIEFbXT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgQVtdPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZW50cmllcykge1xuICAgICAgaWYgKGtleSBpbiByZXN1bHQpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRba2V5XSA9IFt2YWx1ZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0FtYmlndW91c01vdmUobW92ZTogUmVzb3VyY2VNb3ZlKTogYm9vbGVhbiB7XG4gIGNvbnN0IFtwcmUsIHBvc3RdID0gbW92ZTtcblxuICAvLyBBIG1vdmUgaXMgY29uc2lkZXJlZCBhbWJpZ3VvdXMgaWYgdHdvIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAgLy8gIDEuIEJvdGggc2lkZXMgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCAob3RoZXJ3aXNlLCBpdCdzIGp1c3QgYWRkaXRpb24gb3IgZGVsZXRpb24pXG4gIC8vICAyLiBBdCBsZWFzdCBvbmUgc2lkZSBoYXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50XG4gIHJldHVybiBwcmUubGVuZ3RoID4gMCAmJiBwb3N0Lmxlbmd0aCA+IDAgJiYgKHByZS5sZW5ndGggPiAxIHx8IHBvc3QubGVuZ3RoID4gMSk7XG59XG5cbmZ1bmN0aW9uIHJlc291cmNlTWFwcGluZ3MobW92ZW1lbnRzOiBSZXNvdXJjZU1vdmVbXSk6IFJlc291cmNlTWFwcGluZ1tdIHtcbiAgcmV0dXJuIG1vdmVtZW50c1xuICAgIC5maWx0ZXIoKFtwcmUsIHBvc3RdKSA9PiBwcmUubGVuZ3RoID09PSAxICYmIHBvc3QubGVuZ3RoID09PSAxICYmICFwcmVbMF0uZXF1YWxUbyhwb3N0WzBdKSlcbiAgICAubWFwKChbcHJlLCBwb3N0XSkgPT4gbmV3IFJlc291cmNlTWFwcGluZyhwcmVbMF0sIHBvc3RbMF0pKTtcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb25zIGEgbGlzdCBvZiBtb3ZlcyBpbnRvIG5vbi1hbWJpZ3VvdXMgYW5kIGFtYmlndW91cyBtb3Zlcy5cbiAqIEBwYXJhbSBvdmVycmlkZXMgLSBUaGUgbGlzdCBvZiBvdmVycmlkZXMgdG8gZGlzYW1iaWd1YXRlIG1vdmVzXG4gKiBAcGFyYW0gbW92ZXMgLSBhIHBhaXIgb2YgbGlzdHMgb2YgbW92ZXMuIEZpcnN0OiBub24tYW1iaWd1b3VzLCBzZWNvbmQ6IGFtYmlndW91c1xuICovXG5mdW5jdGlvbiBwYXJ0aXRpb25CeUFtYmlndWl0eShvdmVycmlkZXM6IFJlc291cmNlTWFwcGluZ1tdLCBtb3ZlczogUmVzb3VyY2VNb3ZlW10pOiBbUmVzb3VyY2VNb3ZlW10sIFJlc291cmNlTW92ZVtdXSB7XG4gIGNvbnN0IGFtYmlndW91czogUmVzb3VyY2VNb3ZlW10gPSBbXTtcbiAgY29uc3Qgbm9uQW1iaWd1b3VzOiBSZXNvdXJjZU1vdmVbXSA9IFtdO1xuXG4gIGZvciAobGV0IG1vdmUgb2YgbW92ZXMpIHtcbiAgICBpZiAoIWlzQW1iaWd1b3VzTW92ZShtb3ZlKSkge1xuICAgICAgbm9uQW1iaWd1b3VzLnB1c2gobW92ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qgb3ZlcnJpZGUgb2Ygb3ZlcnJpZGVzKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkTW92ZSA9IHJlc29sdmUob3ZlcnJpZGUsIG1vdmUpO1xuICAgICAgICBpZiAocmVzb2x2ZWRNb3ZlICE9IG51bGwpIHtcbiAgICAgICAgICBub25BbWJpZ3VvdXMucHVzaChyZXNvbHZlZE1vdmUpO1xuICAgICAgICAgIG1vdmUgPSByZW1vdmUob3ZlcnJpZGUsIG1vdmUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBPbmUgbGFzdCBjaGFuY2UgdG8gYmUgbm9uLWFtYmlndW91c1xuICAgICAgaWYgKCFpc0FtYmlndW91c01vdmUobW92ZSkpIHtcbiAgICAgICAgbm9uQW1iaWd1b3VzLnB1c2gobW92ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbWJpZ3VvdXMucHVzaChtb3ZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlKG92ZXJyaWRlOiBSZXNvdXJjZU1hcHBpbmcsIG1vdmU6IFJlc291cmNlTW92ZSk6IFJlc291cmNlTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW3ByZSwgcG9zdF0gPSBtb3ZlO1xuICAgIGNvbnN0IHNvdXJjZSA9IHByZS5maW5kKChsb2MpID0+IGxvYy5lcXVhbFRvKG92ZXJyaWRlLnNvdXJjZSkpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gcG9zdC5maW5kKChsb2MpID0+IGxvYy5lcXVhbFRvKG92ZXJyaWRlLmRlc3RpbmF0aW9uKSk7XG4gICAgcmV0dXJuIChzb3VyY2UgJiYgZGVzdGluYXRpb24pID8gW1tzb3VyY2VdLCBbZGVzdGluYXRpb25dXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZShvdmVycmlkZTogUmVzb3VyY2VNYXBwaW5nLCBtb3ZlOiBSZXNvdXJjZU1vdmUpOiBSZXNvdXJjZU1vdmUge1xuICAgIGNvbnN0IFtwcmUsIHBvc3RdID0gbW92ZTtcbiAgICByZXR1cm4gW1xuICAgICAgcHJlLmZpbHRlcihsb2MgPT4gIWxvYy5lcXVhbFRvKG92ZXJyaWRlLnNvdXJjZSkpLFxuICAgICAgcG9zdC5maWx0ZXIobG9jID0+ICFsb2MuZXF1YWxUbyhvdmVycmlkZS5kZXN0aW5hdGlvbikpLFxuICAgIF07XG4gIH1cblxuICByZXR1cm4gW25vbkFtYmlndW91cywgYW1iaWd1b3VzXTtcbn1cbiJdfQ==
|
|
302
|
+
/**
|
|
303
|
+
* Replace the {ACCOUNT} and {REGION} placeholders in all strings found in a complex object.
|
|
304
|
+
*
|
|
305
|
+
* Duplicated between cdk-assets and aws-cdk CLI because we don't have a good single place to put it
|
|
306
|
+
* (they're nominally independent tools).
|
|
307
|
+
*/
|
|
308
|
+
async function replaceAwsPlaceholders(object, aws) {
|
|
309
|
+
let partition = async () => {
|
|
310
|
+
const p = await aws.discoverPartition();
|
|
311
|
+
partition = () => Promise.resolve(p);
|
|
312
|
+
return p;
|
|
313
|
+
};
|
|
314
|
+
let account = async () => {
|
|
315
|
+
const a = await aws.discoverCurrentAccount();
|
|
316
|
+
account = () => Promise.resolve(a);
|
|
317
|
+
return a;
|
|
318
|
+
};
|
|
319
|
+
return cx_api_1.EnvironmentPlaceholders.replaceAsync(object, {
|
|
320
|
+
async region() {
|
|
321
|
+
return object.region ?? aws.discoverDefaultRegion();
|
|
322
|
+
},
|
|
323
|
+
async accountId() {
|
|
324
|
+
return (await account()).accountId;
|
|
325
|
+
},
|
|
326
|
+
async partition() {
|
|
327
|
+
return partition();
|
|
328
|
+
},
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd1lBLHdEQTJCQztBQW5hRCw0REFBc0U7QUFFdEUsNENBQTBEO0FBRzFELHFEQUFxRTtBQUVyRSxxQ0FBa0Q7QUFDbEQsK0RBQTJEO0FBQzNELDBDQUFxRDtBQUdyRCxnREFBOEQ7QUFFOUQsc0NBQWlDO0FBa0JqQzs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQ1osU0FBUyxHQUFzQixFQUFFLENBQUM7SUFDbEMsY0FBYyxHQUFtQixFQUFFLENBQUM7SUFDcEMsV0FBVyxDQUF3QjtJQUNuQyxhQUFhLENBQVU7SUFDeEIsV0FBVyxDQUFjO0lBRXpDLFlBQVksS0FBZ0M7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUV6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QUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLE1BQVMsRUFDVCxHQUFTO0lBRVQsSUFBSSxTQUFTLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDekIsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN4QyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztJQUVGLElBQUksT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDN0MsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUM7SUFFRixPQUFPLGdDQUF1QixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDbEQsS0FBSyxDQUFDLE1BQU07WUFDVixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEQsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTO1lBQ2IsT0FBTyxDQUFDLE1BQU0sT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDckMsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTO1lBQ2IsT0FBTyxTQUFTLEVBQUUsQ0FBQztRQUNyQixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRBd3NDbGllbnQsIHR5cGUgSUF3cyB9IGZyb20gJ0Bhd3MtY2RrL2Nkay1hc3NldHMtbGliJztcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RlZmluaXRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBSZXNvdXJjZUxvY2F0aW9uLCBSZXNvdXJjZU1hcHBpbmcgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgR3JhcGhEaXJlY3Rpb24gfSBmcm9tICcuL2RpZ2VzdCc7XG5pbXBvcnQgeyBjb21wdXRlUmVzb3VyY2VEaWdlc3RzIH0gZnJvbSAnLi9kaWdlc3QnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IGVxdWFsU2V0cywgc2V0RGlmZiB9IGZyb20gJy4uLy4uL3V0aWwvc2V0cyc7XG5pbXBvcnQgdHlwZSB7IFNESyB9IGZyb20gJy4uL2F3cy1hdXRoL3Nkayc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvc2RrLXByb3ZpZGVyJztcbmltcG9ydCB7IEVudmlyb25tZW50UmVzb3VyY2VzUmVnaXN0cnkgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2V0IG9mIHBvc3NpYmxlIG1vdmVzIG9mIGEgcmVzb3VyY2UgZnJvbSBvbmUgbG9jYXRpb25cbiAqIHRvIGFub3RoZXIuIEluIHRoZSBpZGVhbCBjYXNlLCB0aGVyZSBpcyBvbmx5IG9uZSBzb3VyY2UgYW5kIG9ubHkgb25lXG4gKiBkZXN0aW5hdGlvbi5cbiAqL1xudHlwZSBSZXNvdXJjZU1vdmUgPSBbUmVzb3VyY2VMb2NhdGlvbltdLCBSZXNvdXJjZUxvY2F0aW9uW11dO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmFjdG9yaW5nQ29udGV4dE9wdGlvbnMge1xuICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG4gIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIG92ZXJyaWRlcz86IFJlc291cmNlTWFwcGluZ1tdO1xuICBhc3N1bWVSb2xlQXJuPzogc3RyaW5nO1xuICBpZ25vcmVNb2RpZmljYXRpb25zPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgdGhlIGluZm9ybWF0aW9uIGZvciByZWZhY3RvcmluZyByZXNvdXJjZXMgaW4gYSBzaW5nbGUgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZhY3RvcmluZ0NvbnRleHQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXBwaW5nczogUmVzb3VyY2VNYXBwaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbWJpZ3VvdXNNb3ZlczogUmVzb3VyY2VNb3ZlW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFJlZmFjdG9yaW5nQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gcHJvcHMuZW52aXJvbm1lbnQ7XG4gICAgY29uc3QgbW92ZXMgPSByZXNvdXJjZU1vdmVzKHByb3BzLmRlcGxveWVkU3RhY2tzLCBwcm9wcy5sb2NhbFN0YWNrcywgJ2RpcmVjdCcsIHByb3BzLmlnbm9yZU1vZGlmaWNhdGlvbnMpO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxPdmVycmlkZXMgPSBzdHJ1Y3R1cmFsT3ZlcnJpZGVzKHByb3BzLmRlcGxveWVkU3RhY2tzLCBwcm9wcy5sb2NhbFN0YWNrcyk7XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gKHByb3BzLm92ZXJyaWRlcyA/PyBbXSkuY29uY2F0KGFkZGl0aW9uYWxPdmVycmlkZXMpO1xuICAgIGNvbnN0IFtub25BbWJpZ3VvdXNNb3ZlcywgYW1iaWd1b3VzTW92ZXNdID0gcGFydGl0aW9uQnlBbWJpZ3VpdHkob3ZlcnJpZGVzLCBtb3Zlcyk7XG4gICAgdGhpcy5hbWJpZ3VvdXNNb3ZlcyA9IGFtYmlndW91c01vdmVzO1xuICAgIHRoaXMubG9jYWxTdGFja3MgPSBwcm9wcy5sb2NhbFN0YWNrcztcbiAgICB0aGlzLmFzc3VtZVJvbGVBcm4gPSBwcm9wcy5hc3N1bWVSb2xlQXJuO1xuXG4gICAgdGhpcy5fbWFwcGluZ3MgPSByZXNvdXJjZU1hcHBpbmdzKG5vbkFtYmlndW91c01vdmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYW1iaWd1b3VzUGF0aHMoKTogW3N0cmluZ1tdLCBzdHJpbmdbXV1bXSB7XG4gICAgcmV0dXJuIHRoaXMuYW1iaWd1b3VzTW92ZXMubWFwKChbYSwgYl0pID0+IFtjb252ZXJ0KGEpLCBjb252ZXJ0KGIpXSk7XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0KGxvY2F0aW9uczogUmVzb3VyY2VMb2NhdGlvbltdKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5tYXAoKGwpID0+IGwudG9QYXRoKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFwcGluZ3MoKTogUmVzb3VyY2VNYXBwaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9tYXBwaW5ncztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBleGVjdXRlKHN0YWNrRGVmaW5pdGlvbnM6IFN0YWNrRGVmaW5pdGlvbltdLCBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsIGlvSGVscGVyOiBJb0hlbHBlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm1hcHBpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc3VtZVJvbGVBcm4gPSB0aGlzLmFzc3VtZVJvbGVBcm4gPz8gYXdhaXQgdGhpcy5maW5kUm9sZVRvQXNzdW1lKHNka1Byb3ZpZGVyKTtcbiAgICBjb25zdCBzZGsgPSAoXG4gICAgICBhd2FpdCBzZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudCh0aGlzLmVudmlyb25tZW50LCBNb2RlLkZvcldyaXRpbmcsIHtcbiAgICAgICAgYXNzdW1lUm9sZUFybixcbiAgICAgIH0pXG4gICAgKS5zZGs7XG5cbiAgICBhd2FpdCB0aGlzLmNoZWNrQm9vdHN0cmFwVmVyc2lvbihzZGssIGlvSGVscGVyKTtcblxuICAgIGNvbnN0IGNmbiA9IHNkay5jbG91ZEZvcm1hdGlvbigpO1xuICAgIGNvbnN0IG1hcHBpbmdzID0gdGhpcy5tYXBwaW5ncztcblxuICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgUmVzb3VyY2VNYXBwaW5nczogbWFwcGluZ3MubWFwKChtKSA9PiBtLnRvQ2xvdWRGb3JtYXRpb24oKSksXG4gICAgICBTdGFja0RlZmluaXRpb25zOiBzdGFja0RlZmluaXRpb25zLFxuICAgIH07XG4gICAgY29uc3QgcmVmYWN0b3IgPSBhd2FpdCBjZm4uY3JlYXRlU3RhY2tSZWZhY3RvcihpbnB1dCk7XG5cbiAgICBhd2FpdCBjZm4ud2FpdFVudGlsU3RhY2tSZWZhY3RvckNyZWF0ZUNvbXBsZXRlKHtcbiAgICAgIFN0YWNrUmVmYWN0b3JJZDogcmVmYWN0b3IuU3RhY2tSZWZhY3RvcklkLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgY2ZuLmV4ZWN1dGVTdGFja1JlZmFjdG9yKHtcbiAgICAgIFN0YWNrUmVmYWN0b3JJZDogcmVmYWN0b3IuU3RhY2tSZWZhY3RvcklkLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgY2ZuLndhaXRVbnRpbFN0YWNrUmVmYWN0b3JFeGVjdXRlQ29tcGxldGUoe1xuICAgICAgU3RhY2tSZWZhY3RvcklkOiByZWZhY3Rvci5TdGFja1JlZmFjdG9ySWQsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrQm9vdHN0cmFwVmVyc2lvbihzZGs6IFNESywgaW9IZWxwZXI6IElvSGVscGVyKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnRSZXNvdXJjZXNSZWdpc3RyeSA9IG5ldyBFbnZpcm9ubWVudFJlc291cmNlc1JlZ2lzdHJ5KCk7XG4gICAgY29uc3QgZW52UmVzb3VyY2VzID0gZW52aXJvbm1lbnRSZXNvdXJjZXNSZWdpc3RyeS5mb3IodGhpcy5lbnZpcm9ubWVudCwgc2RrLCBpb0hlbHBlcik7XG4gICAgbGV0IGJvb3RzdHJhcFZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgYm9vdHN0cmFwIHZlcnNpb25cbiAgICAgIGJvb3RzdHJhcFZlcnNpb24gPSAoYXdhaXQgZW52UmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKSkudmVyc2lvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBCdXQgaWYgd2UgY2FuJ3QsIGtlZXAgZ29pbmcuIE1heWJlIHdlIGNhbiBzdGlsbCBzdWNjZWVkLlxuICAgIH1cbiAgICBpZiAoYm9vdHN0cmFwVmVyc2lvbiAhPSBudWxsICYmIGJvb3RzdHJhcFZlcnNpb24gPCAyOCkge1xuICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBgYXdzOi8vJHt0aGlzLmVudmlyb25tZW50LmFjY291bnR9LyR7dGhpcy5lbnZpcm9ubWVudC5yZWdpb259YDtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgIGBUaGUgQ0RLIHRvb2xraXQgc3RhY2sgaW4gZW52aXJvbm1lbnQgJHtlbnZpcm9ubWVudH0gZG9lc24ndCBzdXBwb3J0IHJlZmFjdG9yaW5nLiBQbGVhc2UgcnVuICdjZGsgYm9vdHN0cmFwICR7ZW52aXJvbm1lbnR9JyB0byB1cGRhdGUgaXQuYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kUm9sZVRvQXNzdW1lKHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcik6IFByb21pc2UgPCBzdHJpbmcgfCB1bmRlZmluZWQgPiB7XG4gICAgLy8gVG8gZXhlY3V0ZSBhIHJlZmFjdG9yLCB3ZSBuZWVkIHRoZSBkZXBsb3ltZW50IHJvbGUgQVJOIGZvciB0aGUgZ2l2ZW5cbiAgICAvLyBlbnZpcm9ubWVudC4gTW9zdCB0b29sa2l0IGNvbW1hbmRzIGdldCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcm9sZXMgdG9cbiAgICAvLyBhc3N1bWUgZnJvbSB0aGUgY2xvdWQgYXNzZW1ibHkgKGFuZCB1bHRpbWF0ZWx5IGZyb20gdGhlIENESyBmcmFtZXdvcmspLiBSZWZhY3RvclxuICAgIC8vIGlzIGRpZmZlcmVudCBiZWNhdXNlIGl0IGlzIG5vdCB0aGUgYXBwbGljYXRpb24vZnJhbWV3b3JrIHRoYXQgZGljdGF0ZXMgd2hhdCB0aGVcbiAgICAvLyB0b29sa2l0IHNob3VsZCBkbywgYnV0IGl0IGlzIHRoZSB0b29sa2l0IGl0c2VsZiB0aGF0IGhhcyB0byBmaWd1cmUgaXQgb3V0LlxuICAgIC8vXG4gICAgLy8gTmV2ZXJ0aGVsZXNzLCB0aGUgY2xvdWQgYXNzZW1ibHkgaXMgdGhlIG1vc3QgcmVsaWFibGUgc291cmNlIGZvciB0aGlzIGtpbmQgb2ZcbiAgICAvLyBpbmZvcm1hdGlvbi4gRm9yIHRoZSBkZXBsb3ltZW50IHJvbGUgQVJOLCBpbiBwYXJ0aWN1bGFyLCB3aGF0IHdlIGRvIGhlcmVcbiAgICAvLyBpcyBsb29rIGF0IGFsbCB0aGUgc3RhY2tzIGZvciBhIGdpdmVuIGVudmlyb25tZW50IGluIHRoZSBjbG91ZCBhc3NlbWJseSBhbmRcbiAgICAvLyBleHRyYWN0IHRoZSBkZXBsb3ltZW50IHJvbGUgQVJOIHRoYXQgaXMgY29tbW9uIHRvIGFsbCBvZiB0aGVtLiBJZiBubyByb2xlIGlzXG4gICAgLy8gZm91bmQsIHdlIGdvIGFoZWFkIHdpdGhvdXQgYXNzdW1pbmcgYSByb2xlLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHJvbGUsXG4gICAgLy8gd2UgY29uc2lkZXIgdGhhdCBhbiBpbnZhcmlhbnQgd2FzIHZpb2xhdGVkLCBhbmQgdGhyb3cgYW4gZXJyb3IuXG5cbiAgICBjb25zdCBlbnYgPSB0aGlzLmVudmlyb25tZW50O1xuICAgIGNvbnN0IHJvbGVBcm5zID0gbmV3IFNldChcbiAgICAgIHRoaXMubG9jYWxTdGFja3NcbiAgICAgICAgLmZpbHRlcigocykgPT4gcy5lbnZpcm9ubWVudC5hY2NvdW50ID09PSBlbnYuYWNjb3VudCAmJiBzLmVudmlyb25tZW50LnJlZ2lvbiA9PT0gZW52LnJlZ2lvbilcbiAgICAgICAgLm1hcCgocykgPT4gcy5hc3N1bWVSb2xlQXJuKSxcbiAgICApO1xuXG4gICAgaWYgKHJvbGVBcm5zLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHJvbGVBcm5zLnNpemUgIT09IDEpIHtcbiAgICAgIC8vIFVubGlrZWx5IHRvIGhhcHBlbi4gQnV0IGlmIGl0IGRvZXMsIHdlIGNhbid0IHByb2NlZWRcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgIGBNdWx0aXBsZSBzdGFja3MgaW4gZW52aXJvbm1lbnQgYXdzOi8vJHtlbnYuYWNjb3VudH0vJHtlbnYucmVnaW9ufSBoYXZlIGRpZmZlcmVudCBkZXBsb3ltZW50IHJvbGUgQVJOcy4gQ2Fubm90IHByb2NlZWQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXJuID0gQXJyYXkuZnJvbShyb2xlQXJucylbMF07XG4gICAgaWYgKGFybiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByZXNvbHZlZEVudiA9IGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChlbnYpO1xuICAgICAgY29uc3QgcmVnaW9uID0gcmVzb2x2ZWRFbnYucmVnaW9uO1xuICAgICAgcmV0dXJuIChhd2FpdCByZXBsYWNlQXdzUGxhY2Vob2xkZXJzKHsgcmVnaW9uLCBhc3N1bWVSb2xlQXJuOiBhcm4gfSwgbmV3IERlZmF1bHRBd3NDbGllbnQoKSkpLmFzc3VtZVJvbGVBcm47XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgY291bGRuJ3QgZmluZCBhIHJvbGUgQVJOLCB3ZSBjYW4gcHJvY2VlZCB3aXRob3V0IGFzc3VtaW5nIGEgcm9sZS5cbiAgICAvLyBNYXliZSB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyBoYXZlIHBlcm1pc3Npb25zIHRvIGRvIHdoYXQgd2UgbmVlZC5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIGF1dG9tYXRpYyBsaXN0IG9mIG92ZXJyaWRlcyB0aGF0IGNhbiBiZSBkZWR1Y2VkIGZyb20gdGhlIHN0cnVjdHVyZSBvZiB0aGUgb3Bwb3NpdGUgcmVzb3VyY2UgZ3JhcGguXG4gKiBTdXBwb3NlIHdlIGhhdmUgdGhlIGZvbGxvd2luZyByZXNvdXJjZSBncmFwaDpcbiAqXG4gKiAgICAgQSAtLT4gQlxuICogICAgIEMgLS0+IERcbiAqXG4gKiBzdWNoIHRoYXQgQiBhbmQgRCBhcmUgaWRlbnRpY2FsLCBidXQgQSBpcyBkaWZmZXJlbnQgZnJvbSBDLiBUaGVuIGRpZ2VzdChCKSA9IGRpZ2VzdChEKS4gSWYgYm90aCByZXNvdXJjZXMgYXJlIG1vdmVkLFxuICogd2UgaGF2ZSBhbiBhbWJpZ3VpdHkuIEJ1dCBpZiB3ZSByZXZlcnNlIHRoZSBhcnJvd3M6XG4gKlxuICogICAgIEEgPC0tIEJcbiAqICAgICBDIDwtLSBEXG4gKlxuICogdGhlbiBkaWdlc3QoQikg4omgIGRpZ2VzdChEKSwgYmVjYXVzZSB0aGV5IG5vdyBoYXZlIGRpZmZlcmVudCBkZXBlbmRlbmNpZXMuIElmIHdlIGNvbXB1dGUgdGhlIG1hcHBpbmdzIGZyb20gdGhpc1xuICogb3Bwb3NpdGUgZ3JhcGgsIHdlIGNhbiB1c2UgdGhlbSBhcyBhIHNldCBvZiBvdmVycmlkZXMgdG8gZGlzYW1iaWd1YXRlIHRoZSBvcmlnaW5hbCBtb3Zlcy5cbiAqXG4gKi9cbmZ1bmN0aW9uIHN0cnVjdHVyYWxPdmVycmlkZXMoZGVwbG95ZWRTdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSwgbG9jYWxTdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSk6IFJlc291cmNlTWFwcGluZ1tdIHtcbiAgY29uc3QgbW92ZXMgPSByZXNvdXJjZU1vdmVzKGRlcGxveWVkU3RhY2tzLCBsb2NhbFN0YWNrcywgJ29wcG9zaXRlJywgdHJ1ZSk7XG4gIGNvbnN0IFtub25BbWJpZ3VvdXNNb3Zlc10gPSBwYXJ0aXRpb25CeUFtYmlndWl0eShbXSwgbW92ZXMpO1xuICByZXR1cm4gcmVzb3VyY2VNYXBwaW5ncyhub25BbWJpZ3VvdXNNb3Zlcyk7XG59XG5cbmZ1bmN0aW9uIHJlc291cmNlTW92ZXMoXG4gIGJlZm9yZTogQ2xvdWRGb3JtYXRpb25TdGFja1tdLFxuICBhZnRlcjogQ2xvdWRGb3JtYXRpb25TdGFja1tdLFxuICBkaXJlY3Rpb246IEdyYXBoRGlyZWN0aW9uID0gJ2RpcmVjdCcsXG4gIGlnbm9yZU1vZGlmaWNhdGlvbnM6IGJvb2xlYW4gPSBmYWxzZSk6IFJlc291cmNlTW92ZVtdIHtcbiAgY29uc3QgZGlnZXN0c0JlZm9yZSA9IHJlc291cmNlRGlnZXN0cyhiZWZvcmUsIGRpcmVjdGlvbik7XG4gIGNvbnN0IGRpZ2VzdHNBZnRlciA9IHJlc291cmNlRGlnZXN0cyhhZnRlciwgZGlyZWN0aW9uKTtcblxuICBpZiAoIShpZ25vcmVNb2RpZmljYXRpb25zIHx8IGlzb21vcnBoaWMoZGlnZXN0c0JlZm9yZSwgZGlnZXN0c0FmdGVyKSkpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gWydBIHJlZmFjdG9yIG9wZXJhdGlvbiBjYW5ub3QgYWRkLCByZW1vdmUgb3IgdXBkYXRlIHJlc291cmNlcy4gT25seSByZXNvdXJjZSBtb3ZlcyBhbmQgcmVuYW1lcyBhcmUgYWxsb3dlZC4nXTtcblxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSAoYTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPiwgYjogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPikgPT4ge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20oc2V0RGlmZihuZXcgU2V0KE9iamVjdC5rZXlzKGEpKSwgbmV3IFNldChPYmplY3Qua2V5cyhiKSkpKS5mbGF0TWFwKGsgPT4gYVtrXSEpXG4gICAgICAgIC5tYXAoeCA9PiBgICAtICR7eC50b1BhdGgoKX1gKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhY2tOYW1lcyA9IChzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSkgPT5cbiAgICAgIHN0YWNrcy5sZW5ndGggPT09IDBcbiAgICAgICAgPyAnTk9ORSdcbiAgICAgICAgOiBzdGFja3NcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnN0YWNrTmFtZSlcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBvbmx5RGVwbG95ZWQgPSBkaWZmZXJlbmNlKGRpZ2VzdHNCZWZvcmUsIGRpZ2VzdHNBZnRlcik7XG4gICAgY29uc3Qgb25seUxvY2FsID0gZGlmZmVyZW5jZShkaWdlc3RzQWZ0ZXIsIGRpZ2VzdHNCZWZvcmUpO1xuXG4gICAgaWYgKG9ubHlEZXBsb3llZC5sZW5ndGggPiAwKSB7XG4gICAgICBtZXNzYWdlLnB1c2goYFRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIGFyZSBwcmVzZW50IG9ubHkgaW4gdGhlIEFXUyBlbnZpcm9ubWVudDpcXG4ke29ubHlEZXBsb3llZH1gKTtcbiAgICB9XG5cbiAgICBpZiAob25seUxvY2FsLmxlbmd0aCA+IDApIHtcbiAgICAgIG1lc3NhZ2UucHVzaChgXFxuVGhlIGZvbGxvd2luZyByZXNvdXJjZXMgYXJlIHByZXNlbnQgb25seSBpbiB5b3VyIENESyBhcHBsaWNhdGlvbjpcXG4ke29ubHlMb2NhbH1gKTtcbiAgICB9XG5cbiAgICBtZXNzYWdlLnB1c2goJycpO1xuICAgIG1lc3NhZ2UucHVzaCgnVGhlIGZvbGxvd2luZyBzdGFja3Mgd2VyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uOicpO1xuICAgIG1lc3NhZ2UucHVzaCggYCAgLSBEZXBsb3llZDogJHtzdGFja05hbWVzKGJlZm9yZSl9YCk7XG4gICAgbWVzc2FnZS5wdXNoKCBgICAtIExvY2FsOiAke3N0YWNrTmFtZXMoYWZ0ZXIpfWApO1xuICAgIG1lc3NhZ2UucHVzaCgnJyk7XG4gICAgbWVzc2FnZS5wdXNoKCdIaW50OiBieSBkZWZhdWx0LCBvbmx5IGRlcGxveWVkIHN0YWNrcyB0aGF0IGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBhIGxvY2FsIHN0YWNrIGFyZSBpbmNsdWRlZC4nKTtcbiAgICBtZXNzYWdlLnB1c2goJ0lmIHlvdSB3YW50IHRvIGluY2x1ZGUgYWRkaXRpb25hbCBkZXBsb3llZCBzdGFja3MgZm9yIGNvbXBhcmlzb24sIHJlLXJ1biB0aGUgY29tbWFuZCB3aXRoIHRoZSBvcHRpb24gXFwnLS1hZGRpdGlvbmFsLXN0YWNrLW5hbWU9PFNUQUNLPlxcJyBmb3IgZWFjaCBzdGFjay4nKTtcblxuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IobWVzc2FnZS5qb2luKCdcXG4nKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZW1vdmVVbm1vdmVkUmVzb3VyY2VzKHppcChkaWdlc3RzQmVmb3JlLCBkaWdlc3RzQWZ0ZXIpKSk7XG59XG5cbi8qKlxuICogV2hldGhlciB0d28gc2V0cyBvZiByZXNvdXJjZXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyAodW5pcXVlbHkgaWRlbnRpZmllZCBieSB0aGUgZGlnZXN0KSwgYW5kXG4gKiBlYWNoIGVsZW1lbnQgaXMgaW4gdGhlIHNhbWUgbnVtYmVyIG9mIGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyB0aGVtc2VsdmVzIG1heSBiZSBkaWZmZXJlbnQuXG4gKi9cbmZ1bmN0aW9uIGlzb21vcnBoaWMoYTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPiwgYjogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPik6IGJvb2xlYW4ge1xuICBjb25zdCBzYW1lS2V5cyA9IGVxdWFsU2V0cyhuZXcgU2V0KE9iamVjdC5rZXlzKGEpKSwgbmV3IFNldChPYmplY3Qua2V5cyhiKSkpO1xuICByZXR1cm4gc2FtZUtleXMgJiYgT2JqZWN0LmVudHJpZXMoYSkuZXZlcnkoKFtkaWdlc3QsIGxvY2F0aW9uc10pID0+IGxvY2F0aW9ucy5sZW5ndGggPT09IGJbZGlnZXN0XS5sZW5ndGgpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVVbm1vdmVkUmVzb3VyY2VzKG1vdmVzOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmU+KTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VNb3ZlPiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VNb3ZlPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtoYXNoLCBbYmVmb3JlLCBhZnRlcl1dIG9mIE9iamVjdC5lbnRyaWVzKG1vdmVzKSkge1xuICAgIGNvbnN0IGNvbW1vbiA9IGJlZm9yZS5maWx0ZXIoKGIpID0+IGFmdGVyLnNvbWUoKGEpID0+IGEuZXF1YWxUbyhiKSkpO1xuICAgIHJlc3VsdFtoYXNoXSA9IFtcbiAgICAgIGJlZm9yZS5maWx0ZXIoKGIpID0+ICFjb21tb24uc29tZSgoYykgPT4gYi5lcXVhbFRvKGMpKSksXG4gICAgICBhZnRlci5maWx0ZXIoKGEpID0+ICFjb21tb24uc29tZSgoYykgPT4gYS5lcXVhbFRvKGMpKSksXG4gICAgXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRm9yIGVhY2ggaGFzaCwgaWRlbnRpZnlpbmcgYSBzaW5nbGUgcmVzb3VyY2UsIHppcCB0aGUgdHdvIGxpc3RzIG9mIGxvY2F0aW9ucyxcbiAqIHByb2R1Y2luZyBhIHJlc291cmNlIG1vdmVcbiAqL1xuZnVuY3Rpb24gemlwKFxuICBtMTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPixcbiAgbTI6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTG9jYXRpb25bXT4sXG4pOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmU+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmU+ID0ge307XG5cbiAgZm9yIChjb25zdCBbaGFzaCwgbG9jYXRpb25zXSBvZiBPYmplY3QuZW50cmllcyhtMSkpIHtcbiAgICBpZiAoaGFzaCBpbiBtMikge1xuICAgICAgcmVzdWx0W2hhc2hdID0gW2xvY2F0aW9ucywgbTJbaGFzaF1dO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbaGFzaF0gPSBbbG9jYXRpb25zLCBbXV07XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBbaGFzaCwgbG9jYXRpb25zXSBvZiBPYmplY3QuZW50cmllcyhtMikpIHtcbiAgICBpZiAoIShoYXNoIGluIG0xKSkge1xuICAgICAgcmVzdWx0W2hhc2hdID0gW1tdLCBsb2NhdGlvbnNdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgYSBsaXN0IG9mIHBhaXJzIFtkaWdlc3QsIGxvY2F0aW9uXSBmb3IgZWFjaCByZXNvdXJjZSBpbiB0aGUgc3RhY2suXG4gKi9cbmZ1bmN0aW9uIHJlc291cmNlRGlnZXN0cyhzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSwgZGlyZWN0aW9uOiBHcmFwaERpcmVjdGlvbik6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTG9jYXRpb25bXT4ge1xuICAvLyBpbmRleCBzdGFja3MgYnkgbmFtZVxuICBjb25zdCBzdGFja3NCeU5hbWUgPSBuZXcgTWFwPHN0cmluZywgQ2xvdWRGb3JtYXRpb25TdGFjaz4oKTtcbiAgZm9yIChjb25zdCBzdGFjayBvZiBzdGFja3MpIHtcbiAgICBzdGFja3NCeU5hbWUuc2V0KHN0YWNrLnN0YWNrTmFtZSwgc3RhY2spO1xuICB9XG5cbiAgY29uc3QgZGlnZXN0cyA9IGNvbXB1dGVSZXNvdXJjZURpZ2VzdHMoc3RhY2tzLCBkaXJlY3Rpb24pO1xuXG4gIHJldHVybiBncm91cEJ5S2V5KFxuICAgIE9iamVjdC5lbnRyaWVzKGRpZ2VzdHMpLm1hcCgoW2xvYywgZGlnZXN0XSkgPT4ge1xuICAgICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvYy5zcGxpdCgnLicpO1xuICAgICAgY29uc3QgbG9jYXRpb246IFJlc291cmNlTG9jYXRpb24gPSBuZXcgUmVzb3VyY2VMb2NhdGlvbihzdGFja3NCeU5hbWUuZ2V0KHN0YWNrTmFtZSkhLCBsb2dpY2FsSWQpO1xuICAgICAgcmV0dXJuIFtkaWdlc3QsIGxvY2F0aW9uXTtcbiAgICB9KSxcbiAgKTtcblxuICBmdW5jdGlvbiBncm91cEJ5S2V5PEE+KGVudHJpZXM6IFtzdHJpbmcsIEFdW10pOiBSZWNvcmQ8c3RyaW5nLCBBW10+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEFbXT4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHtcbiAgICAgIGlmIChrZXkgaW4gcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBbdmFsdWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBbWJpZ3VvdXNNb3ZlKG1vdmU6IFJlc291cmNlTW92ZSk6IGJvb2xlYW4ge1xuICBjb25zdCBbcHJlLCBwb3N0XSA9IG1vdmU7XG5cbiAgLy8gQSBtb3ZlIGlzIGNvbnNpZGVyZWQgYW1iaWd1b3VzIGlmIHR3byBjb25kaXRpb25zIGFyZSBtZXQ6XG4gIC8vICAxLiBCb3RoIHNpZGVzIGhhdmUgYXQgbGVhc3Qgb25lIGVsZW1lbnQgKG90aGVyd2lzZSwgaXQncyBqdXN0IGFkZGl0aW9uIG9yIGRlbGV0aW9uKVxuICAvLyAgMi4gQXQgbGVhc3Qgb25lIHNpZGUgaGFzIG1vcmUgdGhhbiBvbmUgZWxlbWVudFxuICByZXR1cm4gcHJlLmxlbmd0aCA+IDAgJiYgcG9zdC5sZW5ndGggPiAwICYmIChwcmUubGVuZ3RoID4gMSB8fCBwb3N0Lmxlbmd0aCA+IDEpO1xufVxuXG5mdW5jdGlvbiByZXNvdXJjZU1hcHBpbmdzKG1vdmVtZW50czogUmVzb3VyY2VNb3ZlW10pOiBSZXNvdXJjZU1hcHBpbmdbXSB7XG4gIHJldHVybiBtb3ZlbWVudHNcbiAgICAuZmlsdGVyKChbcHJlLCBwb3N0XSkgPT4gcHJlLmxlbmd0aCA9PT0gMSAmJiBwb3N0Lmxlbmd0aCA9PT0gMSAmJiAhcHJlWzBdLmVxdWFsVG8ocG9zdFswXSkpXG4gICAgLm1hcCgoW3ByZSwgcG9zdF0pID0+IG5ldyBSZXNvdXJjZU1hcHBpbmcocHJlWzBdLCBwb3N0WzBdKSk7XG59XG5cbi8qKlxuICogUGFydGl0aW9ucyBhIGxpc3Qgb2YgbW92ZXMgaW50byBub24tYW1iaWd1b3VzIGFuZCBhbWJpZ3VvdXMgbW92ZXMuXG4gKiBAcGFyYW0gb3ZlcnJpZGVzIC0gVGhlIGxpc3Qgb2Ygb3ZlcnJpZGVzIHRvIGRpc2FtYmlndWF0ZSBtb3Zlc1xuICogQHBhcmFtIG1vdmVzIC0gYSBwYWlyIG9mIGxpc3RzIG9mIG1vdmVzLiBGaXJzdDogbm9uLWFtYmlndW91cywgc2Vjb25kOiBhbWJpZ3VvdXNcbiAqL1xuZnVuY3Rpb24gcGFydGl0aW9uQnlBbWJpZ3VpdHkob3ZlcnJpZGVzOiBSZXNvdXJjZU1hcHBpbmdbXSwgbW92ZXM6IFJlc291cmNlTW92ZVtdKTogW1Jlc291cmNlTW92ZVtdLCBSZXNvdXJjZU1vdmVbXV0ge1xuICBjb25zdCBhbWJpZ3VvdXM6IFJlc291cmNlTW92ZVtdID0gW107XG4gIGNvbnN0IG5vbkFtYmlndW91czogUmVzb3VyY2VNb3ZlW10gPSBbXTtcblxuICBmb3IgKGxldCBtb3ZlIG9mIG1vdmVzKSB7XG4gICAgaWYgKCFpc0FtYmlndW91c01vdmUobW92ZSkpIHtcbiAgICAgIG5vbkFtYmlndW91cy5wdXNoKG1vdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IG92ZXJyaWRlIG9mIG92ZXJyaWRlcykge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vdmUgPSByZXNvbHZlKG92ZXJyaWRlLCBtb3ZlKTtcbiAgICAgICAgaWYgKHJlc29sdmVkTW92ZSAhPSBudWxsKSB7XG4gICAgICAgICAgbm9uQW1iaWd1b3VzLnB1c2gocmVzb2x2ZWRNb3ZlKTtcbiAgICAgICAgICBtb3ZlID0gcmVtb3ZlKG92ZXJyaWRlLCBtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gT25lIGxhc3QgY2hhbmNlIHRvIGJlIG5vbi1hbWJpZ3VvdXNcbiAgICAgIGlmICghaXNBbWJpZ3VvdXNNb3ZlKG1vdmUpKSB7XG4gICAgICAgIG5vbkFtYmlndW91cy5wdXNoKG1vdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYW1iaWd1b3VzLnB1c2gobW92ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZShvdmVycmlkZTogUmVzb3VyY2VNYXBwaW5nLCBtb3ZlOiBSZXNvdXJjZU1vdmUpOiBSZXNvdXJjZU1vdmUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtwcmUsIHBvc3RdID0gbW92ZTtcbiAgICBjb25zdCBzb3VyY2UgPSBwcmUuZmluZCgobG9jKSA9PiBsb2MuZXF1YWxUbyhvdmVycmlkZS5zb3VyY2UpKTtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHBvc3QuZmluZCgobG9jKSA9PiBsb2MuZXF1YWxUbyhvdmVycmlkZS5kZXN0aW5hdGlvbikpO1xuICAgIHJldHVybiAoc291cmNlICYmIGRlc3RpbmF0aW9uKSA/IFtbc291cmNlXSwgW2Rlc3RpbmF0aW9uXV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmUob3ZlcnJpZGU6IFJlc291cmNlTWFwcGluZywgbW92ZTogUmVzb3VyY2VNb3ZlKTogUmVzb3VyY2VNb3ZlIHtcbiAgICBjb25zdCBbcHJlLCBwb3N0XSA9IG1vdmU7XG4gICAgcmV0dXJuIFtcbiAgICAgIHByZS5maWx0ZXIobG9jID0+ICFsb2MuZXF1YWxUbyhvdmVycmlkZS5zb3VyY2UpKSxcbiAgICAgIHBvc3QuZmlsdGVyKGxvYyA9PiAhbG9jLmVxdWFsVG8ob3ZlcnJpZGUuZGVzdGluYXRpb24pKSxcbiAgICBdO1xuICB9XG5cbiAgcmV0dXJuIFtub25BbWJpZ3VvdXMsIGFtYmlndW91c107XG59XG5cbi8qKlxuICogUmVwbGFjZSB0aGUge0FDQ09VTlR9IGFuZCB7UkVHSU9OfSBwbGFjZWhvbGRlcnMgaW4gYWxsIHN0cmluZ3MgZm91bmQgaW4gYSBjb21wbGV4IG9iamVjdC5cbiAqXG4gKiBEdXBsaWNhdGVkIGJldHdlZW4gY2RrLWFzc2V0cyBhbmQgYXdzLWNkayBDTEkgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgZ29vZCBzaW5nbGUgcGxhY2UgdG8gcHV0IGl0XG4gKiAodGhleSdyZSBub21pbmFsbHkgaW5kZXBlbmRlbnQgdG9vbHMpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUF3c1BsYWNlaG9sZGVyczxBIGV4dGVuZHMgeyByZWdpb24/OiBzdHJpbmcgfT4oXG4gIG9iamVjdDogQSxcbiAgYXdzOiBJQXdzLFxuKTogUHJvbWlzZTxBPiB7XG4gIGxldCBwYXJ0aXRpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcCA9IGF3YWl0IGF3cy5kaXNjb3ZlclBhcnRpdGlvbigpO1xuICAgIHBhcnRpdGlvbiA9ICgpID0+IFByb21pc2UucmVzb2x2ZShwKTtcbiAgICByZXR1cm4gcDtcbiAgfTtcblxuICBsZXQgYWNjb3VudCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBhID0gYXdhaXQgYXdzLmRpc2NvdmVyQ3VycmVudEFjY291bnQoKTtcbiAgICBhY2NvdW50ID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGEpO1xuICAgIHJldHVybiBhO1xuICB9O1xuXG4gIHJldHVybiBFbnZpcm9ubWVudFBsYWNlaG9sZGVycy5yZXBsYWNlQXN5bmMob2JqZWN0LCB7XG4gICAgYXN5bmMgcmVnaW9uKCkge1xuICAgICAgcmV0dXJuIG9iamVjdC5yZWdpb24gPz8gYXdzLmRpc2NvdmVyRGVmYXVsdFJlZ2lvbigpO1xuICAgIH0sXG4gICAgYXN5bmMgYWNjb3VudElkKCkge1xuICAgICAgcmV0dXJuIChhd2FpdCBhY2NvdW50KCkpLmFjY291bnRJZDtcbiAgICB9LFxuICAgIGFzeW5jIHBhcnRpdGlvbigpIHtcbiAgICAgIHJldHVybiBwYXJ0aXRpb24oKTtcbiAgICB9LFxuICB9KTtcbn1cblxuIl19
|
|
@@ -93,13 +93,16 @@ function stripReferences(value, exports) {
|
|
|
93
93
|
return { __cloud_ref__: 'DependsOn' };
|
|
94
94
|
}
|
|
95
95
|
if ('Fn::ImportValue' in value) {
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
const exp = exports[value['Fn::ImportValue']];
|
|
97
|
+
if (exp != null) {
|
|
98
|
+
const v = exp.value;
|
|
99
|
+
// Treat Fn::ImportValue as if it were a reference with the same stack
|
|
100
|
+
if ('Ref' in v) {
|
|
101
|
+
return { __cloud_ref__: 'Ref' };
|
|
102
|
+
}
|
|
103
|
+
else if ('Fn::GetAtt' in v) {
|
|
104
|
+
return { __cloud_ref__: 'Fn::GetAtt' };
|
|
105
|
+
}
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
const result = {};
|
|
@@ -116,4 +119,4 @@ function stripConstructPath(resource) {
|
|
|
116
119
|
delete copy.Metadata['aws:cdk:path'];
|
|
117
120
|
return copy;
|
|
118
121
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlnZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUJBLHdEQXlCQztBQW1CRCxnQ0F3QkM7QUE3RkQsc0NBQXNDO0FBRXRDLG1DQUF3QztBQU14Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLE1BQTZCLEVBQUUsWUFBNEIsUUFBUTtJQUN4RyxNQUFNLE9BQU8sR0FBdUQsTUFBTSxDQUFDLFdBQVcsQ0FDcEYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3BDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7U0FDcEUsR0FBRyxDQUNGLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBZ0QsQ0FDN0csQ0FDSixDQUNGLENBQUM7SUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQzthQUM5QyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FBQzth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QztJQUNILENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDdkIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBYTtJQUN2QyxJQUFJLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uUmVzb3VyY2UsIENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlR3JhcGggfSBmcm9tICcuL2dyYXBoJztcblxuZXhwb3J0IHR5cGUgR3JhcGhEaXJlY3Rpb24gPVxuICAnZGlyZWN0JyAvLyBFZGdlIEEgLT4gQiBtZWFuIHRoYXQgQSBkZXBlbmRzIG9uIEJcbiAgfCAnb3Bwb3NpdGUnOyAvLyBFZGdlIEEgLT4gQiBtZWFuIHRoYXQgQiBkZXBlbmRzIG9uIEFcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgZGlnZXN0IGZvciBlYWNoIHJlc291cmNlIGluIHRoZSB0ZW1wbGF0ZS5cbiAqXG4gKiBDb25jZXB0dWFsbHksIHRoZSBkaWdlc3QgaXMgY29tcHV0ZWQgYXM6XG4gKlxuICogICAgIGRpZ2VzdChyZXNvdXJjZSkgPSBoYXNoKHR5cGUgKyBwcm9wZXJ0aWVzICsgZGVwZW5kZW5jaWVzLm1hcChkKSlcbiAqXG4gKiB3aGVyZSBgaGFzaGAgaXMgYSBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24uIEluIG90aGVyIHdvcmRzLCB0aGUgZGlnZXN0IG9mIGFcbiAqIHJlc291cmNlIGlzIGNvbXB1dGVkIGZyb20gaXRzIHR5cGUsIGl0cyBvd24gcHJvcGVydGllcyAodGhhdCBpcywgZXhjbHVkaW5nXG4gKiBwcm9wZXJ0aWVzIHRoYXQgcmVmZXIgdG8gb3RoZXIgcmVzb3VyY2VzKSwgYW5kIHRoZSBkaWdlc3RzIG9mIGVhY2ggb2YgaXRzXG4gKiBkZXBlbmRlbmNpZXMuXG4gKlxuICogVGhlIGRpZ2VzdCBvZiBhIHJlc291cmNlLCBkZWZpbmVkIHJlY3Vyc2l2ZWx5IHRoaXMgd2F5LCByZW1haW5zIHN0YWJsZSBldmVuIGlmXG4gKiBvbmUgb3IgbW9yZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGdldHMgcmVuYW1lZC4gU2luY2UgdGhlIHJlc291cmNlcyBpbiBhXG4gKiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBmb3JtIGEgZGlyZWN0ZWQgYWN5Y2xpYyBncmFwaCwgdGhpcyBmdW5jdGlvbiBpc1xuICogd2VsbC1kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVJlc291cmNlRGlnZXN0cyhzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSwgZGlyZWN0aW9uOiBHcmFwaERpcmVjdGlvbiA9ICdkaXJlY3QnKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGV4cG9ydHM6IHsgW3A6IHN0cmluZ106IHsgc3RhY2tOYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfSB9ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHN0YWNrcy5mbGF0TWFwKChzKSA9PlxuICAgICAgT2JqZWN0LnZhbHVlcyhzLnRlbXBsYXRlLk91dHB1dHMgPz8ge30pXG4gICAgICAgIC5maWx0ZXIoKG8pID0+IG8uRXhwb3J0ICE9IG51bGwgJiYgdHlwZW9mIG8uRXhwb3J0Lk5hbWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAubWFwKFxuICAgICAgICAgIChvKSA9PlxuICAgICAgICAgICAgW28uRXhwb3J0Lk5hbWUsIHsgc3RhY2tOYW1lOiBzLnN0YWNrTmFtZSwgdmFsdWU6IG8uVmFsdWUgfV0gYXMgW3N0cmluZywgeyBzdGFja05hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9XSxcbiAgICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0IHJlc291cmNlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBzdGFja3MuZmxhdE1hcCgocykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHMudGVtcGxhdGUuUmVzb3VyY2VzID8/IHt9KVxuICAgICAgICAuZmlsdGVyKChbXywgcmVzXSkgPT4gcmVzLlR5cGUgIT09ICdBV1M6OkNESzo6TWV0YWRhdGEnKVxuICAgICAgICAubWFwKChbaWQsIHJlc10pID0+IFtgJHtzLnN0YWNrTmFtZX0uJHtpZH1gLCByZXNdIGFzIFtzdHJpbmcsIENsb3VkRm9ybWF0aW9uUmVzb3VyY2VdKTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBncmFwaCA9IGRpcmVjdGlvbiA9PSAnZGlyZWN0J1xuICAgID8gUmVzb3VyY2VHcmFwaC5mcm9tU3RhY2tzKHN0YWNrcylcbiAgICA6IFJlc291cmNlR3JhcGguZnJvbVN0YWNrcyhzdGFja3MpLm9wcG9zaXRlKCk7XG5cbiAgcmV0dXJuIGNvbXB1dGVEaWdlc3RzSW5Ub3BvbG9naWNhbE9yZGVyKGdyYXBoLCByZXNvdXJjZXMsIGV4cG9ydHMpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRGlnZXN0c0luVG9wb2xvZ2ljYWxPcmRlcihcbiAgZ3JhcGg6IFJlc291cmNlR3JhcGgsXG4gIHJlc291cmNlczogUmVjb3JkPHN0cmluZywgQ2xvdWRGb3JtYXRpb25SZXNvdXJjZT4sXG4gIGV4cG9ydHM6IFJlY29yZDxzdHJpbmcsIHsgc3RhY2tOYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3Qgbm9kZXMgPSBncmFwaC5zb3J0ZWROb2Rlcy5maWx0ZXIobiA9PiByZXNvdXJjZXNbbl0gIT0gbnVsbCk7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IGlkIG9mIG5vZGVzKSB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSByZXNvdXJjZXNbaWRdO1xuICAgIGNvbnN0IGRlcERpZ2VzdHMgPSBBcnJheS5mcm9tKGdyYXBoLm91dE5laWdoYm9ycyhpZCkpLm1hcCgoZCkgPT4gcmVzdWx0W2RdKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzSGFzaCA9IGhhc2hPYmplY3Qoc3RyaXBSZWZlcmVuY2VzKHN0cmlwQ29uc3RydWN0UGF0aChyZXNvdXJjZSksIGV4cG9ydHMpKTtcbiAgICBjb25zdCB0b0hhc2ggPSByZXNvdXJjZS5UeXBlICsgcHJvcGVydGllc0hhc2ggKyBkZXBEaWdlc3RzLmpvaW4oJycpO1xuICAgIHJlc3VsdFtpZF0gPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHRvSGFzaCkuZGlnZXN0KCdoZXgnKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoT2JqZWN0KG9iajogYW55KTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKTtcblxuICBmdW5jdGlvbiBhZGRUb0hhc2godmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBhZGRUb0hhc2goJ251bGwnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGFkZFRvSGFzaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSlcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaGFzaC51cGRhdGUoa2V5KTtcbiAgICAgICAgICAgIGFkZFRvSGFzaCh2YWx1ZVtrZXldKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGFzaC51cGRhdGUodHlwZW9mIHZhbHVlICsgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkVG9IYXNoKG9iaik7XG4gIHJldHVybiBoYXNoLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBzdWItcHJvcGVydGllcyBjb250YWluaW5nIFJlZiBvciBGbjo6R2V0QXR0IHRvIGF2b2lkIGhhc2hpbmdcbiAqIHJlZmVyZW5jZXMgdGhlbXNlbHZlcyBidXQga2VlcHMgdGhlIHByb3BlcnR5IHN0cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gc3RyaXBSZWZlcmVuY2VzKHZhbHVlOiBhbnksIGV4cG9ydHM6IHsgW3A6IHN0cmluZ106IHsgc3RhY2tOYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfSB9KTogYW55IHtcbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gdmFsdWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoeCA9PiBzdHJpcFJlZmVyZW5jZXMoeCwgZXhwb3J0cykpO1xuICB9XG4gIGlmICgnUmVmJyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiB7IF9fY2xvdWRfcmVmX186ICdSZWYnIH07XG4gIH1cbiAgaWYgKCdGbjo6R2V0QXR0JyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiB7IF9fY2xvdWRfcmVmX186ICdGbjo6R2V0QXR0JyB9O1xuICB9XG4gIGlmICgnRGVwZW5kc09uJyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiB7IF9fY2xvdWRfcmVmX186ICdEZXBlbmRzT24nIH07XG4gIH1cbiAgaWYgKCdGbjo6SW1wb3J0VmFsdWUnIGluIHZhbHVlKSB7XG4gICAgY29uc3QgdiA9IGV4cG9ydHNbdmFsdWVbJ0ZuOjpJbXBvcnRWYWx1ZSddXS52YWx1ZTtcbiAgICAvLyBUcmVhdCBGbjo6SW1wb3J0VmFsdWUgYXMgaWYgaXQgd2VyZSBhIHJlZmVyZW5jZSB3aXRoIHRoZSBzYW1lIHN0YWNrXG4gICAgaWYgKCdSZWYnIGluIHYpIHtcbiAgICAgIHJldHVybiB7IF9fY2xvdWRfcmVmX186ICdSZWYnIH07XG4gICAgfSBlbHNlIGlmICgnRm46OkdldEF0dCcgaW4gdikge1xuICAgICAgcmV0dXJuIHsgX19jbG91ZF9yZWZfXzogJ0ZuOjpHZXRBdHQnIH07XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgIHJlc3VsdFtrXSA9IHN0cmlwUmVmZXJlbmNlcyh2LCBleHBvcnRzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzdHJpcENvbnN0cnVjdFBhdGgocmVzb3VyY2U6IGFueSk6IGFueSB7XG4gIGlmIChyZXNvdXJjZT8uTWV0YWRhdGE/LlsnYXdzOmNkazpwYXRoJ10gPT0gbnVsbCkge1xuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGNvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc291cmNlKSk7XG4gIGRlbGV0ZSBjb3B5Lk1ldGFkYXRhWydhd3M6Y2RrOnBhdGgnXTtcbiAgcmV0dXJuIGNvcHk7XG59XG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlnZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUJBLHdEQXlCQztBQW1CRCxnQ0F3QkM7QUE3RkQsc0NBQXNDO0FBRXRDLG1DQUF3QztBQU14Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLE1BQTZCLEVBQUUsWUFBNEIsUUFBUTtJQUN4RyxNQUFNLE9BQU8sR0FBdUQsTUFBTSxDQUFDLFdBQVcsQ0FDcEYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3BDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7U0FDcEUsR0FBRyxDQUNGLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBZ0QsQ0FDN0csQ0FDSixDQUNGLENBQUM7SUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQzthQUM5QyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FBQzth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QUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUN2QixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxRQUFhO0lBQ3ZDLElBQUksUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRGb3JtYXRpb25SZXNvdXJjZSwgQ2xvdWRGb3JtYXRpb25TdGFjayB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgUmVzb3VyY2VHcmFwaCB9IGZyb20gJy4vZ3JhcGgnO1xuXG5leHBvcnQgdHlwZSBHcmFwaERpcmVjdGlvbiA9XG4gICdkaXJlY3QnIC8vIEVkZ2UgQSAtPiBCIG1lYW4gdGhhdCBBIGRlcGVuZHMgb24gQlxuICB8ICdvcHBvc2l0ZSc7IC8vIEVkZ2UgQSAtPiBCIG1lYW4gdGhhdCBCIGRlcGVuZHMgb24gQVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBkaWdlc3QgZm9yIGVhY2ggcmVzb3VyY2UgaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIENvbmNlcHR1YWxseSwgdGhlIGRpZ2VzdCBpcyBjb21wdXRlZCBhczpcbiAqXG4gKiAgICAgZGlnZXN0KHJlc291cmNlKSA9IGhhc2godHlwZSArIHByb3BlcnRpZXMgKyBkZXBlbmRlbmNpZXMubWFwKGQpKVxuICpcbiAqIHdoZXJlIGBoYXNoYCBpcyBhIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbi4gSW4gb3RoZXIgd29yZHMsIHRoZSBkaWdlc3Qgb2YgYVxuICogcmVzb3VyY2UgaXMgY29tcHV0ZWQgZnJvbSBpdHMgdHlwZSwgaXRzIG93biBwcm9wZXJ0aWVzICh0aGF0IGlzLCBleGNsdWRpbmdcbiAqIHByb3BlcnRpZXMgdGhhdCByZWZlciB0byBvdGhlciByZXNvdXJjZXMpLCBhbmQgdGhlIGRpZ2VzdHMgb2YgZWFjaCBvZiBpdHNcbiAqIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBUaGUgZGlnZXN0IG9mIGEgcmVzb3VyY2UsIGRlZmluZWQgcmVjdXJzaXZlbHkgdGhpcyB3YXksIHJlbWFpbnMgc3RhYmxlIGV2ZW4gaWZcbiAqIG9uZSBvciBtb3JlIG9mIGl0cyBkZXBlbmRlbmNpZXMgZ2V0cyByZW5hbWVkLiBTaW5jZSB0aGUgcmVzb3VyY2VzIGluIGFcbiAqIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvcm0gYSBkaXJlY3RlZCBhY3ljbGljIGdyYXBoLCB0aGlzIGZ1bmN0aW9uIGlzXG4gKiB3ZWxsLWRlZmluZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmVzb3VyY2VEaWdlc3RzKHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdLCBkaXJlY3Rpb246IEdyYXBoRGlyZWN0aW9uID0gJ2RpcmVjdCcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgZXhwb3J0czogeyBbcDogc3RyaW5nXTogeyBzdGFja05hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9IH0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgc3RhY2tzLmZsYXRNYXAoKHMpID0+XG4gICAgICBPYmplY3QudmFsdWVzKHMudGVtcGxhdGUuT3V0cHV0cyA/PyB7fSlcbiAgICAgICAgLmZpbHRlcigobykgPT4gby5FeHBvcnQgIT0gbnVsbCAmJiB0eXBlb2Ygby5FeHBvcnQuTmFtZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgKG8pID0+XG4gICAgICAgICAgICBbby5FeHBvcnQuTmFtZSwgeyBzdGFja05hbWU6IHMuc3RhY2tOYW1lLCB2YWx1ZTogby5WYWx1ZSB9XSBhcyBbc3RyaW5nLCB7IHN0YWNrTmFtZTogc3RyaW5nOyB2YWx1ZTogYW55IH1dLFxuICAgICAgICApLFxuICAgICksXG4gICk7XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHN0YWNrcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocy50ZW1wbGF0ZS5SZXNvdXJjZXMgPz8ge30pXG4gICAgICAgIC5maWx0ZXIoKFtfLCByZXNdKSA9PiByZXMuVHlwZSAhPT0gJ0FXUzo6Q0RLOjpNZXRhZGF0YScpXG4gICAgICAgIC5tYXAoKFtpZCwgcmVzXSkgPT4gW2Ake3Muc3RhY2tOYW1lfS4ke2lkfWAsIHJlc10gYXMgW3N0cmluZywgQ2xvdWRGb3JtYXRpb25SZXNvdXJjZV0pO1xuICAgIH0pLFxuICApO1xuXG4gIGNvbnN0IGdyYXBoID0gZGlyZWN0aW9uID09ICdkaXJlY3QnXG4gICAgPyBSZXNvdXJjZUdyYXBoLmZyb21TdGFja3Moc3RhY2tzKVxuICAgIDogUmVzb3VyY2VHcmFwaC5mcm9tU3RhY2tzKHN0YWNrcykub3Bwb3NpdGUoKTtcblxuICByZXR1cm4gY29tcHV0ZURpZ2VzdHNJblRvcG9sb2dpY2FsT3JkZXIoZ3JhcGgsIHJlc291cmNlcywgZXhwb3J0cyk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEaWdlc3RzSW5Ub3BvbG9naWNhbE9yZGVyKFxuICBncmFwaDogUmVzb3VyY2VHcmFwaCxcbiAgcmVzb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCBDbG91ZEZvcm1hdGlvblJlc291cmNlPixcbiAgZXhwb3J0czogUmVjb3JkPHN0cmluZywgeyBzdGFja05hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9Pik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBub2RlcyA9IGdyYXBoLnNvcnRlZE5vZGVzLmZpbHRlcihuID0+IHJlc291cmNlc1tuXSAhPSBudWxsKTtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGZvciAoY29uc3QgaWQgb2Ygbm9kZXMpIHtcbiAgICBjb25zdCByZXNvdXJjZSA9IHJlc291cmNlc1tpZF07XG4gICAgY29uc3QgZGVwRGlnZXN0cyA9IEFycmF5LmZyb20oZ3JhcGgub3V0TmVpZ2hib3JzKGlkKSkubWFwKChkKSA9PiByZXN1bHRbZF0pO1xuICAgIGNvbnN0IHByb3BlcnRpZXNIYXNoID0gaGFzaE9iamVjdChzdHJpcFJlZmVyZW5jZXMoc3RyaXBDb25zdHJ1Y3RQYXRoKHJlc291cmNlKSwgZXhwb3J0cykpO1xuICAgIGNvbnN0IHRvSGFzaCA9IHJlc291cmNlLlR5cGUgKyBwcm9wZXJ0aWVzSGFzaCArIGRlcERpZ2VzdHMuam9pbignJyk7XG4gICAgcmVzdWx0W2lkXSA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodG9IYXNoKS5kaWdlc3QoJ2hleCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hPYmplY3Qob2JqOiBhbnkpOiBzdHJpbmcge1xuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpO1xuXG4gIGZ1bmN0aW9uIGFkZFRvSGFzaCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIGFkZFRvSGFzaCgnbnVsbCcpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goYWRkVG9IYXNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKVxuICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBoYXNoLnVwZGF0ZShrZXkpO1xuICAgICAgICAgICAgYWRkVG9IYXNoKHZhbHVlW2tleV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNoLnVwZGF0ZSh0eXBlb2YgdmFsdWUgKyB2YWx1ZS50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICBhZGRUb0hhc2gob2JqKTtcbiAgcmV0dXJuIGhhc2guZGlnZXN0KCdoZXgnKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHN1Yi1wcm9wZXJ0aWVzIGNvbnRhaW5pbmcgUmVmIG9yIEZuOjpHZXRBdHQgdG8gYXZvaWQgaGFzaGluZ1xuICogcmVmZXJlbmNlcyB0aGVtc2VsdmVzIGJ1dCBrZWVwcyB0aGUgcHJvcGVydHkgc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBzdHJpcFJlZmVyZW5jZXModmFsdWU6IGFueSwgZXhwb3J0czogeyBbcDogc3RyaW5nXTogeyBzdGFja05hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9IH0pOiBhbnkge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCh4ID0+IHN0cmlwUmVmZXJlbmNlcyh4LCBleHBvcnRzKSk7XG4gIH1cbiAgaWYgKCdSZWYnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHsgX19jbG91ZF9yZWZfXzogJ1JlZicgfTtcbiAgfVxuICBpZiAoJ0ZuOjpHZXRBdHQnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHsgX19jbG91ZF9yZWZfXzogJ0ZuOjpHZXRBdHQnIH07XG4gIH1cbiAgaWYgKCdEZXBlbmRzT24nIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHsgX19jbG91ZF9yZWZfXzogJ0RlcGVuZHNPbicgfTtcbiAgfVxuICBpZiAoJ0ZuOjpJbXBvcnRWYWx1ZScgaW4gdmFsdWUpIHtcbiAgICBjb25zdCBleHAgPSBleHBvcnRzW3ZhbHVlWydGbjo6SW1wb3J0VmFsdWUnXV07XG4gICAgaWYgKGV4cCAhPSBudWxsKSB7XG4gICAgICBjb25zdCB2ID0gZXhwLnZhbHVlO1xuICAgICAgLy8gVHJlYXQgRm46OkltcG9ydFZhbHVlIGFzIGlmIGl0IHdlcmUgYSByZWZlcmVuY2Ugd2l0aCB0aGUgc2FtZSBzdGFja1xuICAgICAgaWYgKCdSZWYnIGluIHYpIHtcbiAgICAgICAgcmV0dXJuIHsgX19jbG91ZF9yZWZfXzogJ1JlZicgfTtcbiAgICAgIH0gZWxzZSBpZiAoJ0ZuOjpHZXRBdHQnIGluIHYpIHtcbiAgICAgICAgcmV0dXJuIHsgX19jbG91ZF9yZWZfXzogJ0ZuOjpHZXRBdHQnIH07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgIHJlc3VsdFtrXSA9IHN0cmlwUmVmZXJlbmNlcyh2LCBleHBvcnRzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzdHJpcENvbnN0cnVjdFBhdGgocmVzb3VyY2U6IGFueSk6IGFueSB7XG4gIGlmIChyZXNvdXJjZT8uTWV0YWRhdGE/LlsnYXdzOmNkazpwYXRoJ10gPT0gbnVsbCkge1xuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGNvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc291cmNlKSk7XG4gIGRlbGV0ZSBjb3B5Lk1ldGFkYXRhWydhd3M6Y2RrOnBhdGgnXTtcbiAgcmV0dXJuIGNvcHk7XG59XG4iXX0=
|