@liflig/cdk-cloudfront-auth 1.5.42 → 1.6.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/dist/check-auth/index.js +1 -1
- package/dist/generate-secret/index.js +1 -1
- package/dist/http-headers/index.js +1 -1
- package/dist/parse-auth/index.js +1 -1
- package/dist/refresh-auth/index.js +1 -1
- package/dist/sign-out/index.js +1 -1
- package/lib/client-secret.js +6 -32
- package/lib/client-update.js +5 -32
- package/lib/cloudfront-auth.js +55 -69
- package/lib/generate-secret.js +17 -39
- package/lib/handlers/util/axios.js +6 -12
- package/lib/handlers/util/base64.js +3 -7
- package/lib/handlers/util/cloudfront.js +13 -24
- package/lib/handlers/util/config.js +12 -35
- package/lib/handlers/util/cookies.js +11 -15
- package/lib/handlers/util/jwt.js +8 -15
- package/lib/handlers/util/logger.js +6 -9
- package/lib/handlers/util/nonce.js +8 -14
- package/lib/index.js +3 -19
- package/lib/lambdas.js +23 -40
- package/package.json +15 -13
package/lib/client-secret.js
CHANGED
|
@@ -1,33 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.RetrieveClientSecret = void 0;
|
|
27
|
-
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
28
|
-
const cr = __importStar(require("aws-cdk-lib/custom-resources"));
|
|
29
|
-
const constructs_1 = require("constructs");
|
|
30
|
-
class RetrieveClientSecret extends constructs_1.Construct {
|
|
1
|
+
import * as iam from "aws-cdk-lib/aws-iam";
|
|
2
|
+
import * as cr from "aws-cdk-lib/custom-resources";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
export class RetrieveClientSecret extends Construct {
|
|
5
|
+
clientSecretValue;
|
|
31
6
|
constructor(scope, id, props) {
|
|
32
7
|
super(scope, id);
|
|
33
8
|
const clientSecret = new cr.AwsCustomResource(this, "Resource", {
|
|
@@ -50,5 +25,4 @@ class RetrieveClientSecret extends constructs_1.Construct {
|
|
|
50
25
|
this.clientSecretValue = clientSecret.getResponseField("UserPoolClient.ClientSecret");
|
|
51
26
|
}
|
|
52
27
|
}
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXNlY3JldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQtc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseURBQTBDO0FBQzFDLGlFQUFrRDtBQUNsRCwyQ0FBc0M7QUFPdEMsTUFBYSxvQkFBcUIsU0FBUSxzQkFBUztJQUdqRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdDO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM5RCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGdDQUFnQztnQkFDekMsTUFBTSxFQUFFLHdCQUF3QjtnQkFDaEMsVUFBVSxFQUFFO29CQUNWLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVU7b0JBQ3JDLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtpQkFDeEM7Z0JBQ0Qsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDMUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2hFO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDaEQsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO29CQUN0QixPQUFPLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7aUJBQ3hDLENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FDcEQsNkJBQTZCLENBQzlCLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUE5QkQsb0RBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29nbml0byBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZ25pdG9cIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGNyIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcblxuZXhwb3J0IGludGVyZmFjZSBSZXRyaWV2ZUNsaWVudFNlY3JldFByb3BzIHtcbiAgY2xpZW50OiBjb2duaXRvLklVc2VyUG9vbENsaWVudFxuICB1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2xcbn1cblxuZXhwb3J0IGNsYXNzIFJldHJpZXZlQ2xpZW50U2VjcmV0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNsaWVudFNlY3JldFZhbHVlOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmV0cmlldmVDbGllbnRTZWNyZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IGNsaWVudFNlY3JldCA9IG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQ29nbml0b0lkZW50aXR5U2VydmljZVByb3ZpZGVyXCIsXG4gICAgICAgIGFjdGlvbjogXCJkZXNjcmliZVVzZXJQb29sQ2xpZW50XCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBVc2VyUG9vbElkOiBwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgICAgIENsaWVudElkOiBwcm9wcy5jbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjci5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYCR7cHJvcHMudXNlclBvb2wudXNlclBvb2xJZH0tJHtwcm9wcy5jbGllbnQudXNlclBvb2xDbGllbnRJZH1gLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wiY29nbml0by1pZHA6RGVzY3JpYmVVc2VyUG9vbENsaWVudFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy51c2VyUG9vbC51c2VyUG9vbEFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSksXG4gICAgfSlcblxuICAgIHRoaXMuY2xpZW50U2VjcmV0VmFsdWUgPSBjbGllbnRTZWNyZXQuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiVXNlclBvb2xDbGllbnQuQ2xpZW50U2VjcmV0XCIsXG4gICAgKVxuICB9XG59XG4iXX0=
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXNlY3JldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQtc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBT3RDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTO0lBQzFDLGlCQUFpQixDQUFRO0lBRWhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZ0M7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFlBQVksR0FBRyxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZ0NBQWdDO2dCQUN6QyxNQUFNLEVBQUUsd0JBQXdCO2dCQUNoQyxVQUFVLEVBQUU7b0JBQ1YsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVTtvQkFDckMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO2lCQUN4QztnQkFDRCxrQkFBa0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUMxQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FDaEU7YUFDRjtZQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO2dCQUNoRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDLG9DQUFvQyxDQUFDO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDeEMsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUNwRCw2QkFBNkIsQ0FDOUIsQ0FBQTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvZ25pdG8gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBjciBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cmlldmVDbGllbnRTZWNyZXRQcm9wcyB7XG4gIGNsaWVudDogY29nbml0by5JVXNlclBvb2xDbGllbnRcbiAgdXNlclBvb2w6IGNvZ25pdG8uSVVzZXJQb29sXG59XG5cbmV4cG9ydCBjbGFzcyBSZXRyaWV2ZUNsaWVudFNlY3JldCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBjbGllbnRTZWNyZXRWYWx1ZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJldHJpZXZlQ2xpZW50U2VjcmV0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBjbGllbnRTZWNyZXQgPSBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkNvZ25pdG9JZGVudGl0eVNlcnZpY2VQcm92aWRlclwiLFxuICAgICAgICBhY3Rpb246IFwiZGVzY3JpYmVVc2VyUG9vbENsaWVudFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgVXNlclBvb2xJZDogcHJvcHMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgICBDbGllbnRJZDogcHJvcHMuY2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGAke3Byb3BzLnVzZXJQb29sLnVzZXJQb29sSWR9LSR7cHJvcHMuY2xpZW50LnVzZXJQb29sQ2xpZW50SWR9YCxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImNvZ25pdG8taWRwOkRlc2NyaWJlVXNlclBvb2xDbGllbnRcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMudXNlclBvb2wudXNlclBvb2xBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgIH0pXG5cbiAgICB0aGlzLmNsaWVudFNlY3JldFZhbHVlID0gY2xpZW50U2VjcmV0LmdldFJlc3BvbnNlRmllbGQoXG4gICAgICBcIlVzZXJQb29sQ2xpZW50LkNsaWVudFNlY3JldFwiLFxuICAgIClcbiAgfVxufVxuIl19
|
package/lib/client-update.js
CHANGED
|
@@ -1,33 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.ClientUpdate = void 0;
|
|
27
|
-
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
28
|
-
const cr = __importStar(require("aws-cdk-lib/custom-resources"));
|
|
29
|
-
const constructs_1 = require("constructs");
|
|
30
|
-
class ClientUpdate extends constructs_1.Construct {
|
|
1
|
+
import * as iam from "aws-cdk-lib/aws-iam";
|
|
2
|
+
import * as cr from "aws-cdk-lib/custom-resources";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
export class ClientUpdate extends Construct {
|
|
31
5
|
constructor(scope, id, props) {
|
|
32
6
|
super(scope, id);
|
|
33
7
|
new cr.AwsCustomResource(this, "Resource", {
|
|
@@ -55,5 +29,4 @@ class ClientUpdate extends constructs_1.Construct {
|
|
|
55
29
|
});
|
|
56
30
|
}
|
|
57
31
|
}
|
|
58
|
-
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXVwZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQtdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseURBQTBDO0FBQzFDLGlFQUFrRDtBQUNsRCwyQ0FBc0M7QUFXdEMsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDekMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxnQ0FBZ0M7Z0JBQ3pDLE1BQU0sRUFBRSxzQkFBc0I7Z0JBQzlCLFVBQVUsRUFBRTtvQkFDVixpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztvQkFDM0IsK0JBQStCLEVBQUUsSUFBSTtvQkFDckMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtvQkFDbkQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQ3JDLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtvQkFDdkMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztvQkFDakMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztvQkFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVTtpQkFDdEM7Z0JBQ0Qsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDMUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2hFO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDaEQsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO29CQUN0QixPQUFPLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztvQkFDN0MsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7aUJBQ3hDLENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBOUJELG9DQThCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvZ25pdG8gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBjciBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5cbmludGVyZmFjZSBDbGllbnRVcGRhdGVQcm9wcyB7XG4gIG9hdXRoU2NvcGVzOiBzdHJpbmdbXVxuICBjbGllbnQ6IGNvZ25pdG8uSVVzZXJQb29sQ2xpZW50XG4gIHVzZXJQb29sOiBjb2duaXRvLklVc2VyUG9vbFxuICBjYWxsYmFja1VybDogc3RyaW5nXG4gIHNpZ25PdXRVcmw6IHN0cmluZ1xuICBpZGVudGl0eVByb3ZpZGVyczogc3RyaW5nW11cbn1cblxuZXhwb3J0IGNsYXNzIENsaWVudFVwZGF0ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDbGllbnRVcGRhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQ29nbml0b0lkZW50aXR5U2VydmljZVByb3ZpZGVyXCIsXG4gICAgICAgIGFjdGlvbjogXCJ1cGRhdGVVc2VyUG9vbENsaWVudFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQWxsb3dlZE9BdXRoRmxvd3M6IFtcImNvZGVcIl0sXG4gICAgICAgICAgQWxsb3dlZE9BdXRoRmxvd3NVc2VyUG9vbENsaWVudDogdHJ1ZSxcbiAgICAgICAgICBTdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyczogcHJvcHMuaWRlbnRpdHlQcm92aWRlcnMsXG4gICAgICAgICAgQWxsb3dlZE9BdXRoU2NvcGVzOiBwcm9wcy5vYXV0aFNjb3BlcyxcbiAgICAgICAgICBDbGllbnRJZDogcHJvcHMuY2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICAgICAgQ2FsbGJhY2tVUkxzOiBbcHJvcHMuY2FsbGJhY2tVcmxdLFxuICAgICAgICAgIExvZ291dFVSTHM6IFtwcm9wcy5zaWduT3V0VXJsXSxcbiAgICAgICAgICBVc2VyUG9vbElkOiBwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgJHtwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkfS0ke3Byb3BzLmNsaWVudC51c2VyUG9vbENsaWVudElkfWAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJjb2duaXRvLWlkcDpVcGRhdGVVc2VyUG9vbENsaWVudFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy51c2VyUG9vbC51c2VyUG9vbEFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSksXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXVwZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQtdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBV3RDLE1BQU0sT0FBTyxZQUFhLFNBQVEsU0FBUztJQUN6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN6QyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGdDQUFnQztnQkFDekMsTUFBTSxFQUFFLHNCQUFzQjtnQkFDOUIsVUFBVSxFQUFFO29CQUNWLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDO29CQUMzQiwrQkFBK0IsRUFBRSxJQUFJO29CQUNyQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO29CQUNuRCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDckMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO29CQUN2QyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO29CQUNqQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUM5QixVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVO2lCQUN0QztnQkFDRCxrQkFBa0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUMxQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FDaEU7YUFDRjtZQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO2dCQUNoRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDeEMsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb2duaXRvIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29nbml0b1wiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuXG5pbnRlcmZhY2UgQ2xpZW50VXBkYXRlUHJvcHMge1xuICBvYXV0aFNjb3Blczogc3RyaW5nW11cbiAgY2xpZW50OiBjb2duaXRvLklVc2VyUG9vbENsaWVudFxuICB1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2xcbiAgY2FsbGJhY2tVcmw6IHN0cmluZ1xuICBzaWduT3V0VXJsOiBzdHJpbmdcbiAgaWRlbnRpdHlQcm92aWRlcnM6IHN0cmluZ1tdXG59XG5cbmV4cG9ydCBjbGFzcyBDbGllbnRVcGRhdGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xpZW50VXBkYXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkNvZ25pdG9JZGVudGl0eVNlcnZpY2VQcm92aWRlclwiLFxuICAgICAgICBhY3Rpb246IFwidXBkYXRlVXNlclBvb2xDbGllbnRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEFsbG93ZWRPQXV0aEZsb3dzOiBbXCJjb2RlXCJdLFxuICAgICAgICAgIEFsbG93ZWRPQXV0aEZsb3dzVXNlclBvb2xDbGllbnQ6IHRydWUsXG4gICAgICAgICAgU3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IHByb3BzLmlkZW50aXR5UHJvdmlkZXJzLFxuICAgICAgICAgIEFsbG93ZWRPQXV0aFNjb3BlczogcHJvcHMub2F1dGhTY29wZXMsXG4gICAgICAgICAgQ2xpZW50SWQ6IHByb3BzLmNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgICAgICAgIENhbGxiYWNrVVJMczogW3Byb3BzLmNhbGxiYWNrVXJsXSxcbiAgICAgICAgICBMb2dvdXRVUkxzOiBbcHJvcHMuc2lnbk91dFVybF0sXG4gICAgICAgICAgVXNlclBvb2xJZDogcHJvcHMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjci5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYCR7cHJvcHMudXNlclBvb2wudXNlclBvb2xJZH0tJHtwcm9wcy5jbGllbnQudXNlclBvb2xDbGllbnRJZH1gLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wiY29nbml0by1pZHA6VXBkYXRlVXNlclBvb2xDbGllbnRcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMudXNlclBvb2wudXNlclBvb2xBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
package/lib/cloudfront-auth.js
CHANGED
|
@@ -1,48 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.CloudFrontAuth = void 0;
|
|
27
|
-
const cloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
|
|
28
|
-
const aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
29
|
-
const cdk_lambda_config_1 = require("@liflig/cdk-lambda-config");
|
|
30
|
-
const client_secret_1 = require("./client-secret");
|
|
31
|
-
const client_update_1 = require("./client-update");
|
|
32
|
-
const generate_secret_1 = require("./generate-secret");
|
|
33
|
-
const constructs_1 = require("constructs");
|
|
1
|
+
import * as cloudfront from "aws-cdk-lib/aws-cloudfront";
|
|
2
|
+
import { ViewerProtocolPolicy, } from "aws-cdk-lib/aws-cloudfront";
|
|
3
|
+
import { LambdaConfig } from "@liflig/cdk-lambda-config";
|
|
4
|
+
import { RetrieveClientSecret } from "./client-secret";
|
|
5
|
+
import { ClientUpdate } from "./client-update";
|
|
6
|
+
import { GenerateSecret } from "./generate-secret";
|
|
7
|
+
import { Construct } from "constructs";
|
|
34
8
|
/**
|
|
35
9
|
* Configure previously deployed lambda functions, Cognito client
|
|
36
10
|
* and CloudFront distribution.
|
|
37
11
|
*/
|
|
38
|
-
class CloudFrontAuth extends
|
|
12
|
+
export class CloudFrontAuth extends Construct {
|
|
13
|
+
callbackPath;
|
|
14
|
+
signOutRedirectTo;
|
|
15
|
+
signOutPath;
|
|
16
|
+
refreshAuthPath;
|
|
17
|
+
userPool;
|
|
18
|
+
clientCreated;
|
|
19
|
+
client;
|
|
20
|
+
checkAuthFn;
|
|
21
|
+
httpHeadersFn;
|
|
22
|
+
parseAuthFn;
|
|
23
|
+
refreshAuthFn;
|
|
24
|
+
signOutFn;
|
|
25
|
+
oauthScopes;
|
|
39
26
|
constructor(scope, id, props) {
|
|
40
|
-
var _a, _b, _c, _d, _e, _f;
|
|
41
27
|
super(scope, id);
|
|
42
|
-
this.callbackPath =
|
|
43
|
-
this.signOutRedirectTo =
|
|
44
|
-
this.signOutPath =
|
|
45
|
-
this.refreshAuthPath =
|
|
28
|
+
this.callbackPath = props.callbackPath ?? "/auth/callback";
|
|
29
|
+
this.signOutRedirectTo = props.signOutRedirectTo ?? "/";
|
|
30
|
+
this.signOutPath = props.signOutPath ?? "/auth/sign-out";
|
|
31
|
+
this.refreshAuthPath = props.refreshAuthPath ?? "/auth/refresh";
|
|
46
32
|
this.oauthScopes = [
|
|
47
33
|
"phone",
|
|
48
34
|
"email",
|
|
@@ -53,24 +39,25 @@ class CloudFrontAuth extends constructs_1.Construct {
|
|
|
53
39
|
this.userPool = props.userPool;
|
|
54
40
|
this.clientCreated = !props.client;
|
|
55
41
|
this.client =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
oAuth: {
|
|
64
|
-
flows: {
|
|
65
|
-
authorizationCodeGrant: true,
|
|
42
|
+
props.client ??
|
|
43
|
+
props.userPool.addClient("UserPoolClient", {
|
|
44
|
+
// Note: The following must be kept in sync with the API
|
|
45
|
+
// call performed in ClientUpdate.
|
|
46
|
+
authFlows: {
|
|
47
|
+
userPassword: true,
|
|
48
|
+
userSrp: true,
|
|
66
49
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
50
|
+
oAuth: {
|
|
51
|
+
flows: {
|
|
52
|
+
authorizationCodeGrant: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
preventUserExistenceErrors: true,
|
|
56
|
+
generateSecret: true,
|
|
57
|
+
});
|
|
58
|
+
const nonceSigningSecret = new GenerateSecret(this, "NonceSigningSecret")
|
|
72
59
|
.value;
|
|
73
|
-
const { clientSecretValue } = new
|
|
60
|
+
const { clientSecretValue } = new RetrieveClientSecret(this, "ClientSecret", {
|
|
74
61
|
client: this.client,
|
|
75
62
|
userPool: this.userPool,
|
|
76
63
|
});
|
|
@@ -84,7 +71,7 @@ class CloudFrontAuth extends constructs_1.Construct {
|
|
|
84
71
|
"X-Content-Type-Options": "nosniff",
|
|
85
72
|
"Cache-Control": "no-cache",
|
|
86
73
|
},
|
|
87
|
-
logLevel:
|
|
74
|
+
logLevel: props.logLevel ?? "warn",
|
|
88
75
|
userPoolId: this.userPool.userPoolId,
|
|
89
76
|
clientId: this.client.userPoolClientId,
|
|
90
77
|
clientSecret: clientSecretValue,
|
|
@@ -110,23 +97,23 @@ class CloudFrontAuth extends constructs_1.Construct {
|
|
|
110
97
|
},
|
|
111
98
|
nonceSigningSecret,
|
|
112
99
|
};
|
|
113
|
-
this.checkAuthFn = new
|
|
100
|
+
this.checkAuthFn = new LambdaConfig(this, "CheckAuthFn", {
|
|
114
101
|
function: props.authLambdas.checkAuthFn.get(this, "CheckAuthFnImport"),
|
|
115
102
|
config,
|
|
116
103
|
}).version;
|
|
117
|
-
this.httpHeadersFn = new
|
|
104
|
+
this.httpHeadersFn = new LambdaConfig(this, "HttpHeadersFn", {
|
|
118
105
|
function: props.authLambdas.httpHeadersFn.get(this, "HttpHeadersFnImport"),
|
|
119
106
|
config,
|
|
120
107
|
}).version;
|
|
121
|
-
this.parseAuthFn = new
|
|
108
|
+
this.parseAuthFn = new LambdaConfig(this, "ParseAuthFn", {
|
|
122
109
|
function: props.authLambdas.parseAuthFn.get(this, "ParseAuthFnImport"),
|
|
123
110
|
config,
|
|
124
111
|
}).version;
|
|
125
|
-
this.refreshAuthFn = new
|
|
112
|
+
this.refreshAuthFn = new LambdaConfig(this, "RefreshAuthFn", {
|
|
126
113
|
function: props.authLambdas.refreshAuthFn.get(this, "RefreshAuthFnImport"),
|
|
127
114
|
config,
|
|
128
115
|
}).version;
|
|
129
|
-
this.signOutFn = new
|
|
116
|
+
this.signOutFn = new LambdaConfig(this, "SignOutFn", {
|
|
130
117
|
function: props.authLambdas.signOutFn.get(this, "SignOutFnImport"),
|
|
131
118
|
config,
|
|
132
119
|
}).version;
|
|
@@ -177,7 +164,7 @@ class CloudFrontAuth extends constructs_1.Construct {
|
|
|
177
164
|
[path]: {
|
|
178
165
|
origin,
|
|
179
166
|
compress: true,
|
|
180
|
-
viewerProtocolPolicy:
|
|
167
|
+
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
181
168
|
edgeLambdas: [
|
|
182
169
|
{
|
|
183
170
|
eventType: cloudfront.LambdaEdgeEventType.VIEWER_REQUEST,
|
|
@@ -219,13 +206,13 @@ class CloudFrontAuth extends constructs_1.Construct {
|
|
|
219
206
|
* This is to be used with Distribution.
|
|
220
207
|
*/
|
|
221
208
|
createProtectedBehavior(origin, options) {
|
|
222
|
-
if (
|
|
209
|
+
if (options?.edgeLambdas != null) {
|
|
223
210
|
throw Error("User-defined edgeLambdas is currently not supported");
|
|
224
211
|
}
|
|
225
212
|
return {
|
|
226
213
|
origin,
|
|
227
214
|
compress: true,
|
|
228
|
-
viewerProtocolPolicy:
|
|
215
|
+
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
229
216
|
edgeLambdas: [
|
|
230
217
|
{
|
|
231
218
|
eventType: cloudfront.LambdaEdgeEventType.VIEWER_REQUEST,
|
|
@@ -248,20 +235,19 @@ class CloudFrontAuth extends constructs_1.Construct {
|
|
|
248
235
|
* How can we avoid this scenario?
|
|
249
236
|
*/
|
|
250
237
|
updateClient(id, props) {
|
|
251
|
-
var _a;
|
|
252
238
|
if (!this.clientCreated) {
|
|
253
239
|
throw new Error("You cannot use updateClient with a user-provided Cognito Client " +
|
|
254
240
|
"since it would override the user-provided settings");
|
|
255
241
|
}
|
|
256
|
-
return new
|
|
242
|
+
return new ClientUpdate(this, id, {
|
|
257
243
|
client: this.client,
|
|
258
244
|
userPool: this.userPool,
|
|
259
245
|
signOutUrl: props.signOutUrl,
|
|
260
246
|
callbackUrl: props.callbackUrl,
|
|
261
247
|
oauthScopes: this.oauthScopes,
|
|
262
|
-
identityProviders:
|
|
248
|
+
identityProviders: props.identityProviders ??
|
|
249
|
+
["COGNITO"].concat(this.userPool.identityProviders.map((it) => it.providerName)),
|
|
263
250
|
});
|
|
264
251
|
}
|
|
265
252
|
}
|
|
266
|
-
exports.CloudFrontAuth = CloudFrontAuth;
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nsb3VkZnJvbnQtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVFQUF3RDtBQUN4RCwrREFLbUM7QUFJbkMsaUVBQXdEO0FBQ3hELG1EQUFzRDtBQUN0RCxtREFBOEM7QUFDOUMsdURBQWtEO0FBR2xELDJDQUFzQztBQWlFdEM7OztHQUdHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFrQjNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7O1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFBLEtBQUssQ0FBQyxZQUFZLG1DQUFJLGdCQUFnQixDQUFBO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFBLEtBQUssQ0FBQyxpQkFBaUIsbUNBQUksR0FBRyxDQUFBO1FBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBQSxLQUFLLENBQUMsV0FBVyxtQ0FBSSxnQkFBZ0IsQ0FBQTtRQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksZUFBZSxDQUFBO1FBRS9ELElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsT0FBTztZQUNQLE9BQU87WUFDUCxTQUFTO1lBQ1QsUUFBUTtZQUNSLCtCQUErQjtTQUNoQyxDQUFBO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO1FBRTlCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNO1lBQ1QsTUFBQSxLQUFLLENBQUMsTUFBTSxtQ0FDWixLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekMsd0RBQXdEO2dCQUN4RCxrQ0FBa0M7Z0JBQ2xDLFNBQVMsRUFBRTtvQkFDVCxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsT0FBTyxFQUFFLElBQUk7aUJBQ2Q7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLEtBQUssRUFBRTt3QkFDTCxzQkFBc0IsRUFBRSxJQUFJO3FCQUM3QjtpQkFDRjtnQkFDRCwwQkFBMEIsRUFBRSxJQUFJO2dCQUNoQyxjQUFjLEVBQUUsSUFBSTthQUNyQixDQUFDLENBQUE7UUFFSixNQUFNLGtCQUFrQixHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7YUFDdEUsS0FBSyxDQUFBO1FBRVIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxvQ0FBb0IsQ0FDcEQsSUFBSSxFQUNKLGNBQWMsRUFDZDtZQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FDRixDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQWlCO1lBQzNCLFdBQVcsRUFBRTtnQkFDWCx5QkFBeUIsRUFDdkIsZ0lBQWdJO2dCQUNsSSwyQkFBMkIsRUFDekIsOENBQThDO2dCQUNoRCxpQkFBaUIsRUFBRSxhQUFhO2dCQUNoQyxrQkFBa0IsRUFBRSxlQUFlO2dCQUNuQyxpQkFBaUIsRUFBRSxNQUFNO2dCQUN6Qix3QkFBd0IsRUFBRSxTQUFTO2dCQUNuQyxlQUFlLEVBQUUsVUFBVTthQUM1QjtZQUNELFFBQVEsRUFBRSxNQUFBLEtBQUssQ0FBQyxRQUFRLG1DQUFJLE1BQU07WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtZQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDdEMsWUFBWSxFQUFFLGlCQUFpQjtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMsY0FBYyxFQUFFO2dCQUNkOzs7Ozs7a0JBTUU7Z0JBQ0YsT0FBTyxFQUFFLHdDQUF3QztnQkFDakQsV0FBVyxFQUFFLHdDQUF3QztnQkFDckQsWUFBWSxFQUFFLHdDQUF3QztnQkFDdEQsS0FBSyxFQUFFLHdDQUF3QzthQUNoRDtZQUNELGtCQUFrQjtTQUNuQixDQUFBO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGdDQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUN2RCxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQztZQUN0RSxNQUFNO1NBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUVWLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxnQ0FBWSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDM0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDM0MsSUFBSSxFQUNKLHFCQUFxQixDQUN0QjtZQUNELE1BQU07U0FDUCxDQUFDLENBQUMsT0FBTyxDQUFBO1FBRVYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGdDQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUN2RCxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQztZQUN0RSxNQUFNO1NBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUVWLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxnQ0FBWSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDM0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDM0MsSUFBSSxFQUNKLHFCQUFxQixDQUN0QjtZQUNELE1BQU07U0FDUCxDQUFDLENBQUMsT0FBTyxDQUFBO1FBRVYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGdDQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUNuRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQztZQUNsRSxNQUFNO1NBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtJQUNaLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsSUFBWSxFQUNaLEVBQW1CO1FBRW5CLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSTtZQUNqQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7YUFDbEI7WUFDRCwwQkFBMEIsRUFBRTtnQkFDMUI7b0JBQ0UsU0FBUyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO29CQUN4RCxjQUFjLEVBQUUsRUFBRTtpQkFDbkI7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU87WUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4RCxDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksd0JBQXdCLENBQzdCLE1BQWUsRUFDZixPQUE0QjtRQUU1QixTQUFTLElBQUksQ0FBQyxJQUFZLEVBQUUsRUFBWTtZQUN0QyxPQUFPO2dCQUNMLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ04sTUFBTTtvQkFDTixRQUFRLEVBQUUsSUFBSTtvQkFDZCxvQkFBb0IsRUFBRSxxQ0FBb0IsQ0FBQyxpQkFBaUI7b0JBQzVELFdBQVcsRUFBRTt3QkFDWDs0QkFDRSxTQUFTLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGNBQWM7NEJBQ3hELGVBQWUsRUFBRSxFQUFFO3lCQUNwQjtxQkFDRjtvQkFDRCxHQUFHLE9BQU87aUJBQ1g7YUFDRixDQUFBO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDNUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pELEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUMxQyxDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsV0FBVztRQUNwQixPQUFPO1lBQ0w7Z0JBQ0UsU0FBUyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO2dCQUN4RCxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDakM7WUFDRDtnQkFDRSxTQUFTLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGVBQWU7Z0JBQ3pELGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNuQztTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHVCQUF1QixDQUM1QixNQUFlLEVBQ2YsT0FBNEI7UUFFNUIsSUFBSSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXLEtBQUksSUFBSSxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQTtRQUNwRSxDQUFDO1FBRUQsT0FBTztZQUNMLE1BQU07WUFDTixRQUFRLEVBQUUsSUFBSTtZQUNkLG9CQUFvQixFQUFFLHFDQUFvQixDQUFDLGlCQUFpQjtZQUM1RCxXQUFXLEVBQUU7Z0JBQ1g7b0JBQ0UsU0FBUyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO29CQUN4RCxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVc7aUJBQ2xDO2dCQUNEO29CQUNFLFNBQVMsRUFBRSxVQUFVLENBQUMsbUJBQW1CLENBQUMsZUFBZTtvQkFDekQsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUNwQzthQUNGO1lBQ0QsR0FBRyxPQUFPO1NBQ1gsQ0FBQTtJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksWUFBWSxDQUFDLEVBQVUsRUFBRSxLQUF3Qjs7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRTtnQkFDaEUsb0RBQW9ELENBQ3ZELENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGlCQUFpQixFQUNmLE1BQUEsS0FBSyxDQUFDLGlCQUFpQixtQ0FDdkIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQzdEO1NBQ0osQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBblNELHdDQW1TQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCB7XG4gIEFkZEJlaGF2aW9yT3B0aW9ucyxcbiAgQmVoYXZpb3JPcHRpb25zLFxuICBJT3JpZ2luLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCAqIGFzIGNvZ25pdG8gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgeyBJVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCB7IExhbWJkYUNvbmZpZyB9IGZyb20gXCJAbGlmbGlnL2Nkay1sYW1iZGEtY29uZmlnXCJcbmltcG9ydCB7IFJldHJpZXZlQ2xpZW50U2VjcmV0IH0gZnJvbSBcIi4vY2xpZW50LXNlY3JldFwiXG5pbXBvcnQgeyBDbGllbnRVcGRhdGUgfSBmcm9tIFwiLi9jbGllbnQtdXBkYXRlXCJcbmltcG9ydCB7IEdlbmVyYXRlU2VjcmV0IH0gZnJvbSBcIi4vZ2VuZXJhdGUtc2VjcmV0XCJcbmltcG9ydCB7IFN0b3JlZENvbmZpZyB9IGZyb20gXCIuL2hhbmRsZXJzL3V0aWwvY29uZmlnXCJcbmltcG9ydCB7IEF1dGhMYW1iZGFzIH0gZnJvbSBcIi4vbGFtYmRhc1wiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udEF1dGhQcm9wcyB7XG4gIC8qKlxuICAgKiBDb2duaXRvIENsaWVudCB0aGF0IHdpbGwgYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuXG4gICAqXG4gICAqIElmIGEgY3VzdG9tIGNsaWVudCBpcyBwcm92aWRlZCwgdGhlIHVwZGF0ZUNsaWVudCBtZXRob2QgY2Fubm90XG4gICAqIGJlIHVzZWQgc2luY2Ugd2UgY2Fubm90IGtub3cgd2hpY2ggcGFyYW1ldGVycyB3YXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IGNsaWVudCB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgY2xpZW50PzogY29nbml0by5Vc2VyUG9vbENsaWVudFxuICB1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2xcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gdGhhdCBpcyB1c2VkIGZvciBDb2duaXRvIEF1dGguXG4gICAqXG4gICAqIElmIG5vdCB1c2luZyBjdXN0b20gZG9tYWlucyB0aGlzIHdpbGwgYmUgYSBuYW1lIHVuZGVyIGFtYXpvbmNvZ25pdG8uY29tLlxuICAgKlxuICAgKiBAZXhhbXBsZSBgJHtkb21haW4uZG9tYWluTmFtZX0uYXV0aC4ke3JlZ2lvbn0uYW1hem9uY29nbml0by5jb21gXG4gICAqL1xuICBjb2duaXRvQXV0aERvbWFpbjogc3RyaW5nXG4gIGF1dGhMYW1iZGFzOiBBdXRoTGFtYmRhc1xuICAvKipcbiAgICogQGRlZmF1bHQgL2F1dGgvY2FsbGJhY2tcbiAgICovXG4gIGNhbGxiYWNrUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgL1xuICAgKi9cbiAgc2lnbk91dFJlZGlyZWN0VG8/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC9hdXRoL3NpZ24tb3V0XG4gICAqL1xuICBzaWduT3V0UGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgL2F1dGgvcmVmcmVzaFxuICAgKi9cbiAgcmVmcmVzaEF1dGhQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBMb2cgbGV2ZWwuXG4gICAqXG4gICAqIEEgbG9nIGxldmVsIG9mIGRlYnVnIHdpbGwgbG9nIHNlY3JldHMgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgaW5cbiAgICogYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgd2FyblxuICAgKi9cbiAgbG9nTGV2ZWw/OiBcIm5vbmVcIiB8IFwiZXJyb3JcIiB8IFwid2FyblwiIHwgXCJpbmZvXCIgfCBcImRlYnVnXCJcbiAgLyoqXG4gICAqIFJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgcGFydCBvZiBhIHNwZWNpZmljIENvZ25pdG8gZ3JvdXAgdG9cbiAgICogYWNjZXNzIGFueSByZXNvdXJjZS5cbiAgICovXG4gIHJlcXVpcmVHcm91cEFueU9mPzogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDbGllbnRQcm9wcyB7XG4gIHNpZ25PdXRVcmw6IHN0cmluZ1xuICBjYWxsYmFja1VybDogc3RyaW5nXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlkZW50aXR5IHByb3ZpZGVycyB1c2VkIGZvciB0aGUgY2xpZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENPR05JVE8gYW5kIGlkZW50aXR5IHByb3ZpZGVycyByZWdpc3RlcmVkIGluIHRoZSBVc2VyUG9vbCBjb25zdHJ1Y3RcbiAgICovXG4gIGlkZW50aXR5UHJvdmlkZXJzPzogc3RyaW5nW11cbn1cblxuLyoqXG4gKiBDb25maWd1cmUgcHJldmlvdXNseSBkZXBsb3llZCBsYW1iZGEgZnVuY3Rpb25zLCBDb2duaXRvIGNsaWVudFxuICogYW5kIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRGcm9udEF1dGggZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgY2FsbGJhY2tQYXRoOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHNpZ25PdXRSZWRpcmVjdFRvOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHNpZ25PdXRQYXRoOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHJlZnJlc2hBdXRoUGF0aDogc3RyaW5nXG5cbiAgcHJpdmF0ZSByZWFkb25seSB1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2xcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRDcmVhdGVkOiBib29sZWFuXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IGNvZ25pdG8uVXNlclBvb2xDbGllbnRcblxuICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrQXV0aEZuOiBsYW1iZGEuSVZlcnNpb25cbiAgcHJpdmF0ZSByZWFkb25seSBodHRwSGVhZGVyc0ZuOiBsYW1iZGEuSVZlcnNpb25cbiAgcHJpdmF0ZSByZWFkb25seSBwYXJzZUF1dGhGbjogbGFtYmRhLklWZXJzaW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaEF1dGhGbjogbGFtYmRhLklWZXJzaW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbk91dEZuOiBsYW1iZGEuSVZlcnNpb25cblxuICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2NvcGVzOiBzdHJpbmdbXVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDbG91ZEZyb250QXV0aFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5jYWxsYmFja1BhdGggPSBwcm9wcy5jYWxsYmFja1BhdGggPz8gXCIvYXV0aC9jYWxsYmFja1wiXG4gICAgdGhpcy5zaWduT3V0UmVkaXJlY3RUbyA9IHByb3BzLnNpZ25PdXRSZWRpcmVjdFRvID8/IFwiL1wiXG4gICAgdGhpcy5zaWduT3V0UGF0aCA9IHByb3BzLnNpZ25PdXRQYXRoID8/IFwiL2F1dGgvc2lnbi1vdXRcIlxuICAgIHRoaXMucmVmcmVzaEF1dGhQYXRoID0gcHJvcHMucmVmcmVzaEF1dGhQYXRoID8/IFwiL2F1dGgvcmVmcmVzaFwiXG5cbiAgICB0aGlzLm9hdXRoU2NvcGVzID0gW1xuICAgICAgXCJwaG9uZVwiLFxuICAgICAgXCJlbWFpbFwiLFxuICAgICAgXCJwcm9maWxlXCIsXG4gICAgICBcIm9wZW5pZFwiLFxuICAgICAgXCJhd3MuY29nbml0by5zaWduaW4udXNlci5hZG1pblwiLFxuICAgIF1cblxuICAgIHRoaXMudXNlclBvb2wgPSBwcm9wcy51c2VyUG9vbFxuXG4gICAgdGhpcy5jbGllbnRDcmVhdGVkID0gIXByb3BzLmNsaWVudFxuICAgIHRoaXMuY2xpZW50ID1cbiAgICAgIHByb3BzLmNsaWVudCA/P1xuICAgICAgcHJvcHMudXNlclBvb2wuYWRkQ2xpZW50KFwiVXNlclBvb2xDbGllbnRcIiwge1xuICAgICAgICAvLyBOb3RlOiBUaGUgZm9sbG93aW5nIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIEFQSVxuICAgICAgICAvLyBjYWxsIHBlcmZvcm1lZCBpbiBDbGllbnRVcGRhdGUuXG4gICAgICAgIGF1dGhGbG93czoge1xuICAgICAgICAgIHVzZXJQYXNzd29yZDogdHJ1ZSxcbiAgICAgICAgICB1c2VyU3JwOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvQXV0aDoge1xuICAgICAgICAgIGZsb3dzOiB7XG4gICAgICAgICAgICBhdXRob3JpemF0aW9uQ29kZUdyYW50OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZlbnRVc2VyRXhpc3RlbmNlRXJyb3JzOiB0cnVlLFxuICAgICAgICBnZW5lcmF0ZVNlY3JldDogdHJ1ZSxcbiAgICAgIH0pXG5cbiAgICBjb25zdCBub25jZVNpZ25pbmdTZWNyZXQgPSBuZXcgR2VuZXJhdGVTZWNyZXQodGhpcywgXCJOb25jZVNpZ25pbmdTZWNyZXRcIilcbiAgICAgIC52YWx1ZVxuXG4gICAgY29uc3QgeyBjbGllbnRTZWNyZXRWYWx1ZSB9ID0gbmV3IFJldHJpZXZlQ2xpZW50U2VjcmV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ2xpZW50U2VjcmV0XCIsXG4gICAgICB7XG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBjb25maWc6IFN0b3JlZENvbmZpZyA9IHtcbiAgICAgIGh0dHBIZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3lcIjpcbiAgICAgICAgICBcImRlZmF1bHQtc3JjICdub25lJzsgaW1nLXNyYyAnc2VsZic7IHNjcmlwdC1zcmMgJ3NlbGYnOyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJzsgb2JqZWN0LXNyYyAnbm9uZSc7IGNvbm5lY3Qtc3JjICdzZWxmJ1wiLFxuICAgICAgICBcIlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHlcIjpcbiAgICAgICAgICBcIm1heC1hZ2U9MzE1MzYwMDA7IGluY2x1ZGVTdWJkb21haW5zOyBwcmVsb2FkXCIsXG4gICAgICAgIFwiUmVmZXJyZXItUG9saWN5XCI6IFwic2FtZS1vcmlnaW5cIixcbiAgICAgICAgXCJYLVhTUy1Qcm90ZWN0aW9uXCI6IFwiMTsgbW9kZT1ibG9ja1wiLFxuICAgICAgICBcIlgtRnJhbWUtT3B0aW9uc1wiOiBcIkRFTllcIixcbiAgICAgICAgXCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zXCI6IFwibm9zbmlmZlwiLFxuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxuICAgICAgfSxcbiAgICAgIGxvZ0xldmVsOiBwcm9wcy5sb2dMZXZlbCA/PyBcIndhcm5cIixcbiAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgICAgY2xpZW50U2VjcmV0OiBjbGllbnRTZWNyZXRWYWx1ZSxcbiAgICAgIG9hdXRoU2NvcGVzOiB0aGlzLm9hdXRoU2NvcGVzLFxuICAgICAgY29nbml0b0F1dGhEb21haW46IHByb3BzLmNvZ25pdG9BdXRoRG9tYWluLFxuICAgICAgY2FsbGJhY2tQYXRoOiB0aGlzLmNhbGxiYWNrUGF0aCxcbiAgICAgIHNpZ25PdXRSZWRpcmVjdFRvOiB0aGlzLnNpZ25PdXRSZWRpcmVjdFRvLFxuICAgICAgc2lnbk91dFBhdGg6IHRoaXMuc2lnbk91dFBhdGgsXG4gICAgICByZWZyZXNoQXV0aFBhdGg6IHRoaXMucmVmcmVzaEF1dGhQYXRoLFxuICAgICAgcmVxdWlyZUdyb3VwQW55T2Y6IHByb3BzLnJlcXVpcmVHcm91cEFueU9mLFxuICAgICAgY29va2llU2V0dGluZ3M6IHtcbiAgICAgICAgLypcbiAgICAgICAgc3BhTW9kZSAtIGNvbnNpZGVyIGlmIHRoaXMgc2hvdWxkIGJlIHN1cHBvcnRlZFxuICAgICAgICBpZFRva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgYWNjZXNzVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICByZWZyZXNoVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICBub25jZTogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICAqL1xuICAgICAgICBpZFRva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIGFjY2Vzc1Rva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIHJlZnJlc2hUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICBub25jZTogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgfSxcbiAgICAgIG5vbmNlU2lnbmluZ1NlY3JldCxcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrQXV0aEZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIkNoZWNrQXV0aEZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5jaGVja0F1dGhGbi5nZXQodGhpcywgXCJDaGVja0F1dGhGbkltcG9ydFwiKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLmh0dHBIZWFkZXJzRm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiSHR0cEhlYWRlcnNGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMuaHR0cEhlYWRlcnNGbi5nZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiSHR0cEhlYWRlcnNGbkltcG9ydFwiLFxuICAgICAgKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLnBhcnNlQXV0aEZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIlBhcnNlQXV0aEZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5wYXJzZUF1dGhGbi5nZXQodGhpcywgXCJQYXJzZUF1dGhGbkltcG9ydFwiKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLnJlZnJlc2hBdXRoRm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiUmVmcmVzaEF1dGhGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMucmVmcmVzaEF1dGhGbi5nZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiUmVmcmVzaEF1dGhGbkltcG9ydFwiLFxuICAgICAgKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLnNpZ25PdXRGbiA9IG5ldyBMYW1iZGFDb25maWcodGhpcywgXCJTaWduT3V0Rm5cIiwge1xuICAgICAgZnVuY3Rpb246IHByb3BzLmF1dGhMYW1iZGFzLnNpZ25PdXRGbi5nZXQodGhpcywgXCJTaWduT3V0Rm5JbXBvcnRcIiksXG4gICAgICBjb25maWcsXG4gICAgfSkudmVyc2lvblxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYXRoTGFtYmRhKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmbjogbGFtYmRhLklWZXJzaW9uLFxuICApOiBjbG91ZGZyb250LkJlaGF2aW9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aFBhdHRlcm46IHBhdGgsXG4gICAgICBmb3J3YXJkZWRWYWx1ZXM6IHtcbiAgICAgICAgcXVlcnlTdHJpbmc6IHRydWUsXG4gICAgICB9LFxuICAgICAgbGFtYmRhRnVuY3Rpb25Bc3NvY2lhdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNULFxuICAgICAgICAgIGxhbWJkYUZ1bmN0aW9uOiBmbixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBiZWhhdmlvcnMgZm9yIGF1dGhlbnRpY2F0aW9uIHBhZ2VzOlxuICAgKlxuICAgKiAtIGNhbGxiYWNrIHBhZ2VcbiAgICogLSByZWZyZXNoIHBhZ2VcbiAgICogLSBzaWduIG91dCBwYWdlXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb24uIFNlZVxuICAgKiBjcmVhdGVBdXRoUGFnZXNCZWhhdmlvcnMgaWYgdXNpbmcgRGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBhdXRoUGFnZXMoKTogY2xvdWRmcm9udC5CZWhhdmlvcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5jcmVhdGVQYXRoTGFtYmRhKHRoaXMuY2FsbGJhY2tQYXRoLCB0aGlzLnBhcnNlQXV0aEZuKSxcbiAgICAgIHRoaXMuY3JlYXRlUGF0aExhbWJkYSh0aGlzLnJlZnJlc2hBdXRoUGF0aCwgdGhpcy5yZWZyZXNoQXV0aEZuKSxcbiAgICAgIHRoaXMuY3JlYXRlUGF0aExhbWJkYSh0aGlzLnNpZ25PdXRQYXRoLCB0aGlzLnNpZ25PdXRGbiksXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBiZWhhdmlvcnMgZm9yIGF1dGhlbnRpY2F0aW9uIHBhZ2VzLlxuICAgKlxuICAgKiAtIGNhbGxiYWNrIHBhZ2VcbiAgICogLSByZWZyZXNoIHBhZ2VcbiAgICogLSBzaWduIG91dCBwYWdlXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBdXRoUGFnZXNCZWhhdmlvcnMoXG4gICAgb3JpZ2luOiBJT3JpZ2luLFxuICAgIG9wdGlvbnM/OiBBZGRCZWhhdmlvck9wdGlvbnMsXG4gICk6IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz4ge1xuICAgIGZ1bmN0aW9uIHBhdGgocGF0aDogc3RyaW5nLCBmbjogSVZlcnNpb24pOiBSZWNvcmQ8c3RyaW5nLCBCZWhhdmlvck9wdGlvbnM+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICBjb21wcmVzczogdHJ1ZSxcbiAgICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICAgICAgZWRnZUxhbWJkYXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogZm4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGF0aCh0aGlzLmNhbGxiYWNrUGF0aCwgdGhpcy5wYXJzZUF1dGhGbiksXG4gICAgICAuLi5wYXRoKHRoaXMucmVmcmVzaEF1dGhQYXRoLCB0aGlzLnJlZnJlc2hBdXRoRm4pLFxuICAgICAgLi4ucGF0aCh0aGlzLnNpZ25PdXRQYXRoLCB0aGlzLnNpZ25PdXRGbiksXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsYW1iZGEgZnVuY3Rpb24gYXNzb2NpYXRpb24gZm9yIHZpZXdlciByZXF1ZXN0IHRvIGNoZWNrXG4gICAqIGF1dGhlbnRpY2F0aW9uIGFuZCBvcmlnaW5hbCByZXNwb25zZSB0byBhZGQgaGVhZGVycy5cbiAgICpcbiAgICogVGhpcyBpcyB0byBiZSB1c2VkIHdpdGggQ2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbi4gU2VlXG4gICAqIGNyZWF0ZVByb3RlY3RlZEJlaGF2aW9yIGlmIHVzaW5nIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXV0aEZpbHRlcnMoKTogY2xvdWRmcm9udC5MYW1iZGFGdW5jdGlvbkFzc29jaWF0aW9uW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNULFxuICAgICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5jaGVja0F1dGhGbixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLk9SSUdJTl9SRVNQT05TRSxcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IHRoaXMuaHR0cEhlYWRlcnNGbixcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBiZWhhdmlvciB0aGF0IGluY2x1ZGVzIGF1dGhvcml6YXRpb24gY2hlY2suXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQcm90ZWN0ZWRCZWhhdmlvcihcbiAgICBvcmlnaW46IElPcmlnaW4sXG4gICAgb3B0aW9ucz86IEFkZEJlaGF2aW9yT3B0aW9ucyxcbiAgKTogQmVoYXZpb3JPcHRpb25zIHtcbiAgICBpZiAob3B0aW9ucz8uZWRnZUxhbWJkYXMgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJVc2VyLWRlZmluZWQgZWRnZUxhbWJkYXMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWRcIilcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3JpZ2luLFxuICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICBlZGdlTGFtYmRhczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgICAgZnVuY3Rpb25WZXJzaW9uOiB0aGlzLmNoZWNrQXV0aEZuLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuT1JJR0lOX1JFU1BPTlNFLFxuICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogdGhpcy5odHRwSGVhZGVyc0ZuLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBDb2duaXRvIGNsaWVudCB0byB1c2UgdGhlIHByb3BlciBVUkxzIGFuZCBPQXV0aCBzY29wZXMuXG4gICAqXG4gICAqIFRPRE86IEluIGNhc2UgdGhlIGNsaWVudCBjb25maWd1cmF0aW9uIGNoYW5nZXMgYW5kIGlzIHVwZGF0ZWRcbiAgICogIGJ5IENsb3VkRm9ybWF0aW9uLCB0aGlzIHdpbGwgbm90IGJlIHJlYXBwbGllZCBjYXVzaW5nIHRoZSBjbGllbnRcbiAgICogIHRvIG5vdCBiZSBjb3JyZWN0bHkgY29uZmlndXJlZC5cbiAgICogIEhvdyBjYW4gd2UgYXZvaWQgdGhpcyBzY2VuYXJpbz9cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVDbGllbnQoaWQ6IHN0cmluZywgcHJvcHM6IFVwZGF0ZUNsaWVudFByb3BzKTogQ2xpZW50VXBkYXRlIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50Q3JlYXRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIllvdSBjYW5ub3QgdXNlIHVwZGF0ZUNsaWVudCB3aXRoIGEgdXNlci1wcm92aWRlZCBDb2duaXRvIENsaWVudCBcIiArXG4gICAgICAgICAgXCJzaW5jZSBpdCB3b3VsZCBvdmVycmlkZSB0aGUgdXNlci1wcm92aWRlZCBzZXR0aW5nc1wiLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2xpZW50VXBkYXRlKHRoaXMsIGlkLCB7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlclBvb2w6IHRoaXMudXNlclBvb2wsXG4gICAgICBzaWduT3V0VXJsOiBwcm9wcy5zaWduT3V0VXJsLFxuICAgICAgY2FsbGJhY2tVcmw6IHByb3BzLmNhbGxiYWNrVXJsLFxuICAgICAgb2F1dGhTY29wZXM6IHRoaXMub2F1dGhTY29wZXMsXG4gICAgICBpZGVudGl0eVByb3ZpZGVyczpcbiAgICAgICAgcHJvcHMuaWRlbnRpdHlQcm92aWRlcnMgPz9cbiAgICAgICAgW1wiQ09HTklUT1wiXS5jb25jYXQoXG4gICAgICAgICAgdGhpcy51c2VyUG9vbC5pZGVudGl0eVByb3ZpZGVycy5tYXAoKGl0KSA9PiBpdC5wcm92aWRlck5hbWUpLFxuICAgICAgICApLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nsb3VkZnJvbnQtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLDRCQUE0QixDQUFBO0FBQ3hELE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSw0QkFBNEIsQ0FBQTtBQUluQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUdsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBaUV0Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7SUFDM0IsWUFBWSxDQUFRO0lBQ3BCLGlCQUFpQixDQUFRO0lBQ3pCLFdBQVcsQ0FBUTtJQUNuQixlQUFlLENBQVE7SUFFdEIsUUFBUSxDQUFtQjtJQUMzQixhQUFhLENBQVM7SUFDdkIsTUFBTSxDQUF3QjtJQUU3QixXQUFXLENBQWlCO0lBQzVCLGFBQWEsQ0FBaUI7SUFDOUIsV0FBVyxDQUFpQjtJQUM1QixhQUFhLENBQWlCO0lBQzlCLFNBQVMsQ0FBaUI7SUFFMUIsV0FBVyxDQUFVO0lBRXRDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUE7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLENBQUE7UUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FB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V0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGlCQUFpQixFQUNmLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3ZCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUM3RDtTQUNKLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCB7XG4gIEFkZEJlaGF2aW9yT3B0aW9ucyxcbiAgQmVoYXZpb3JPcHRpb25zLFxuICBJT3JpZ2luLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCAqIGFzIGNvZ25pdG8gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgeyBJVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCB7IExhbWJkYUNvbmZpZyB9IGZyb20gXCJAbGlmbGlnL2Nkay1sYW1iZGEtY29uZmlnXCJcbmltcG9ydCB7IFJldHJpZXZlQ2xpZW50U2VjcmV0IH0gZnJvbSBcIi4vY2xpZW50LXNlY3JldFwiXG5pbXBvcnQgeyBDbGllbnRVcGRhdGUgfSBmcm9tIFwiLi9jbGllbnQtdXBkYXRlXCJcbmltcG9ydCB7IEdlbmVyYXRlU2VjcmV0IH0gZnJvbSBcIi4vZ2VuZXJhdGUtc2VjcmV0XCJcbmltcG9ydCB7IFN0b3JlZENvbmZpZyB9IGZyb20gXCIuL2hhbmRsZXJzL3V0aWwvY29uZmlnXCJcbmltcG9ydCB7IEF1dGhMYW1iZGFzIH0gZnJvbSBcIi4vbGFtYmRhc1wiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udEF1dGhQcm9wcyB7XG4gIC8qKlxuICAgKiBDb2duaXRvIENsaWVudCB0aGF0IHdpbGwgYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuXG4gICAqXG4gICAqIElmIGEgY3VzdG9tIGNsaWVudCBpcyBwcm92aWRlZCwgdGhlIHVwZGF0ZUNsaWVudCBtZXRob2QgY2Fubm90XG4gICAqIGJlIHVzZWQgc2luY2Ugd2UgY2Fubm90IGtub3cgd2hpY2ggcGFyYW1ldGVycyB3YXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IGNsaWVudCB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgY2xpZW50PzogY29nbml0by5Vc2VyUG9vbENsaWVudFxuICB1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2xcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gdGhhdCBpcyB1c2VkIGZvciBDb2duaXRvIEF1dGguXG4gICAqXG4gICAqIElmIG5vdCB1c2luZyBjdXN0b20gZG9tYWlucyB0aGlzIHdpbGwgYmUgYSBuYW1lIHVuZGVyIGFtYXpvbmNvZ25pdG8uY29tLlxuICAgKlxuICAgKiBAZXhhbXBsZSBgJHtkb21haW4uZG9tYWluTmFtZX0uYXV0aC4ke3JlZ2lvbn0uYW1hem9uY29nbml0by5jb21gXG4gICAqL1xuICBjb2duaXRvQXV0aERvbWFpbjogc3RyaW5nXG4gIGF1dGhMYW1iZGFzOiBBdXRoTGFtYmRhc1xuICAvKipcbiAgICogQGRlZmF1bHQgL2F1dGgvY2FsbGJhY2tcbiAgICovXG4gIGNhbGxiYWNrUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgL1xuICAgKi9cbiAgc2lnbk91dFJlZGlyZWN0VG8/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC9hdXRoL3NpZ24tb3V0XG4gICAqL1xuICBzaWduT3V0UGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgL2F1dGgvcmVmcmVzaFxuICAgKi9cbiAgcmVmcmVzaEF1dGhQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBMb2cgbGV2ZWwuXG4gICAqXG4gICAqIEEgbG9nIGxldmVsIG9mIGRlYnVnIHdpbGwgbG9nIHNlY3JldHMgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgaW5cbiAgICogYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgd2FyblxuICAgKi9cbiAgbG9nTGV2ZWw/OiBcIm5vbmVcIiB8IFwiZXJyb3JcIiB8IFwid2FyblwiIHwgXCJpbmZvXCIgfCBcImRlYnVnXCJcbiAgLyoqXG4gICAqIFJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgcGFydCBvZiBhIHNwZWNpZmljIENvZ25pdG8gZ3JvdXAgdG9cbiAgICogYWNjZXNzIGFueSByZXNvdXJjZS5cbiAgICovXG4gIHJlcXVpcmVHcm91cEFueU9mPzogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDbGllbnRQcm9wcyB7XG4gIHNpZ25PdXRVcmw6IHN0cmluZ1xuICBjYWxsYmFja1VybDogc3RyaW5nXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlkZW50aXR5IHByb3ZpZGVycyB1c2VkIGZvciB0aGUgY2xpZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENPR05JVE8gYW5kIGlkZW50aXR5IHByb3ZpZGVycyByZWdpc3RlcmVkIGluIHRoZSBVc2VyUG9vbCBjb25zdHJ1Y3RcbiAgICovXG4gIGlkZW50aXR5UHJvdmlkZXJzPzogc3RyaW5nW11cbn1cblxuLyoqXG4gKiBDb25maWd1cmUgcHJldmlvdXNseSBkZXBsb3llZCBsYW1iZGEgZnVuY3Rpb25zLCBDb2duaXRvIGNsaWVudFxuICogYW5kIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRGcm9udEF1dGggZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgY2FsbGJhY2tQYXRoOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHNpZ25PdXRSZWRpcmVjdFRvOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHNpZ25PdXRQYXRoOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHJlZnJlc2hBdXRoUGF0aDogc3RyaW5nXG5cbiAgcHJpdmF0ZSByZWFkb25seSB1c2VyUG9vbDogY29nbml0by5JVXNlclBvb2xcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRDcmVhdGVkOiBib29sZWFuXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IGNvZ25pdG8uVXNlclBvb2xDbGllbnRcblxuICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrQXV0aEZuOiBsYW1iZGEuSVZlcnNpb25cbiAgcHJpdmF0ZSByZWFkb25seSBodHRwSGVhZGVyc0ZuOiBsYW1iZGEuSVZlcnNpb25cbiAgcHJpdmF0ZSByZWFkb25seSBwYXJzZUF1dGhGbjogbGFtYmRhLklWZXJzaW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaEF1dGhGbjogbGFtYmRhLklWZXJzaW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbk91dEZuOiBsYW1iZGEuSVZlcnNpb25cblxuICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2NvcGVzOiBzdHJpbmdbXVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDbG91ZEZyb250QXV0aFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5jYWxsYmFja1BhdGggPSBwcm9wcy5jYWxsYmFja1BhdGggPz8gXCIvYXV0aC9jYWxsYmFja1wiXG4gICAgdGhpcy5zaWduT3V0UmVkaXJlY3RUbyA9IHByb3BzLnNpZ25PdXRSZWRpcmVjdFRvID8/IFwiL1wiXG4gICAgdGhpcy5zaWduT3V0UGF0aCA9IHByb3BzLnNpZ25PdXRQYXRoID8/IFwiL2F1dGgvc2lnbi1vdXRcIlxuICAgIHRoaXMucmVmcmVzaEF1dGhQYXRoID0gcHJvcHMucmVmcmVzaEF1dGhQYXRoID8/IFwiL2F1dGgvcmVmcmVzaFwiXG5cbiAgICB0aGlzLm9hdXRoU2NvcGVzID0gW1xuICAgICAgXCJwaG9uZVwiLFxuICAgICAgXCJlbWFpbFwiLFxuICAgICAgXCJwcm9maWxlXCIsXG4gICAgICBcIm9wZW5pZFwiLFxuICAgICAgXCJhd3MuY29nbml0by5zaWduaW4udXNlci5hZG1pblwiLFxuICAgIF1cblxuICAgIHRoaXMudXNlclBvb2wgPSBwcm9wcy51c2VyUG9vbFxuXG4gICAgdGhpcy5jbGllbnRDcmVhdGVkID0gIXByb3BzLmNsaWVudFxuICAgIHRoaXMuY2xpZW50ID1cbiAgICAgIHByb3BzLmNsaWVudCA/P1xuICAgICAgcHJvcHMudXNlclBvb2wuYWRkQ2xpZW50KFwiVXNlclBvb2xDbGllbnRcIiwge1xuICAgICAgICAvLyBOb3RlOiBUaGUgZm9sbG93aW5nIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIEFQSVxuICAgICAgICAvLyBjYWxsIHBlcmZvcm1lZCBpbiBDbGllbnRVcGRhdGUuXG4gICAgICAgIGF1dGhGbG93czoge1xuICAgICAgICAgIHVzZXJQYXNzd29yZDogdHJ1ZSxcbiAgICAgICAgICB1c2VyU3JwOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvQXV0aDoge1xuICAgICAgICAgIGZsb3dzOiB7XG4gICAgICAgICAgICBhdXRob3JpemF0aW9uQ29kZUdyYW50OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZlbnRVc2VyRXhpc3RlbmNlRXJyb3JzOiB0cnVlLFxuICAgICAgICBnZW5lcmF0ZVNlY3JldDogdHJ1ZSxcbiAgICAgIH0pXG5cbiAgICBjb25zdCBub25jZVNpZ25pbmdTZWNyZXQgPSBuZXcgR2VuZXJhdGVTZWNyZXQodGhpcywgXCJOb25jZVNpZ25pbmdTZWNyZXRcIilcbiAgICAgIC52YWx1ZVxuXG4gICAgY29uc3QgeyBjbGllbnRTZWNyZXRWYWx1ZSB9ID0gbmV3IFJldHJpZXZlQ2xpZW50U2VjcmV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ2xpZW50U2VjcmV0XCIsXG4gICAgICB7XG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBjb25maWc6IFN0b3JlZENvbmZpZyA9IHtcbiAgICAgIGh0dHBIZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3lcIjpcbiAgICAgICAgICBcImRlZmF1bHQtc3JjICdub25lJzsgaW1nLXNyYyAnc2VsZic7IHNjcmlwdC1zcmMgJ3NlbGYnOyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJzsgb2JqZWN0LXNyYyAnbm9uZSc7IGNvbm5lY3Qtc3JjICdzZWxmJ1wiLFxuICAgICAgICBcIlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHlcIjpcbiAgICAgICAgICBcIm1heC1hZ2U9MzE1MzYwMDA7IGluY2x1ZGVTdWJkb21haW5zOyBwcmVsb2FkXCIsXG4gICAgICAgIFwiUmVmZXJyZXItUG9saWN5XCI6IFwic2FtZS1vcmlnaW5cIixcbiAgICAgICAgXCJYLVhTUy1Qcm90ZWN0aW9uXCI6IFwiMTsgbW9kZT1ibG9ja1wiLFxuICAgICAgICBcIlgtRnJhbWUtT3B0aW9uc1wiOiBcIkRFTllcIixcbiAgICAgICAgXCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zXCI6IFwibm9zbmlmZlwiLFxuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxuICAgICAgfSxcbiAgICAgIGxvZ0xldmVsOiBwcm9wcy5sb2dMZXZlbCA/PyBcIndhcm5cIixcbiAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgICAgY2xpZW50U2VjcmV0OiBjbGllbnRTZWNyZXRWYWx1ZSxcbiAgICAgIG9hdXRoU2NvcGVzOiB0aGlzLm9hdXRoU2NvcGVzLFxuICAgICAgY29nbml0b0F1dGhEb21haW46IHByb3BzLmNvZ25pdG9BdXRoRG9tYWluLFxuICAgICAgY2FsbGJhY2tQYXRoOiB0aGlzLmNhbGxiYWNrUGF0aCxcbiAgICAgIHNpZ25PdXRSZWRpcmVjdFRvOiB0aGlzLnNpZ25PdXRSZWRpcmVjdFRvLFxuICAgICAgc2lnbk91dFBhdGg6IHRoaXMuc2lnbk91dFBhdGgsXG4gICAgICByZWZyZXNoQXV0aFBhdGg6IHRoaXMucmVmcmVzaEF1dGhQYXRoLFxuICAgICAgcmVxdWlyZUdyb3VwQW55T2Y6IHByb3BzLnJlcXVpcmVHcm91cEFueU9mLFxuICAgICAgY29va2llU2V0dGluZ3M6IHtcbiAgICAgICAgLypcbiAgICAgICAgc3BhTW9kZSAtIGNvbnNpZGVyIGlmIHRoaXMgc2hvdWxkIGJlIHN1cHBvcnRlZFxuICAgICAgICBpZFRva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgYWNjZXNzVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICByZWZyZXNoVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICBub25jZTogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICAqL1xuICAgICAgICBpZFRva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIGFjY2Vzc1Rva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIHJlZnJlc2hUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICBub25jZTogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgfSxcbiAgICAgIG5vbmNlU2lnbmluZ1NlY3JldCxcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrQXV0aEZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIkNoZWNrQXV0aEZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5jaGVja0F1dGhGbi5nZXQodGhpcywgXCJDaGVja0F1dGhGbkltcG9ydFwiKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLmh0dHBIZWFkZXJzRm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiSHR0cEhlYWRlcnNGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMuaHR0cEhlYWRlcnNGbi5nZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiSHR0cEhlYWRlcnNGbkltcG9ydFwiLFxuICAgICAgKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLnBhcnNlQXV0aEZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIlBhcnNlQXV0aEZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5wYXJzZUF1dGhGbi5nZXQodGhpcywgXCJQYXJzZUF1dGhGbkltcG9ydFwiKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLnJlZnJlc2hBdXRoRm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiUmVmcmVzaEF1dGhGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMucmVmcmVzaEF1dGhGbi5nZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiUmVmcmVzaEF1dGhGbkltcG9ydFwiLFxuICAgICAgKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG5cbiAgICB0aGlzLnNpZ25PdXRGbiA9IG5ldyBMYW1iZGFDb25maWcodGhpcywgXCJTaWduT3V0Rm5cIiwge1xuICAgICAgZnVuY3Rpb246IHByb3BzLmF1dGhMYW1iZGFzLnNpZ25PdXRGbi5nZXQodGhpcywgXCJTaWduT3V0Rm5JbXBvcnRcIiksXG4gICAgICBjb25maWcsXG4gICAgfSkudmVyc2lvblxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYXRoTGFtYmRhKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmbjogbGFtYmRhLklWZXJzaW9uLFxuICApOiBjbG91ZGZyb250LkJlaGF2aW9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aFBhdHRlcm46IHBhdGgsXG4gICAgICBmb3J3YXJkZWRWYWx1ZXM6IHtcbiAgICAgICAgcXVlcnlTdHJpbmc6IHRydWUsXG4gICAgICB9LFxuICAgICAgbGFtYmRhRnVuY3Rpb25Bc3NvY2lhdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNULFxuICAgICAgICAgIGxhbWJkYUZ1bmN0aW9uOiBmbixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBiZWhhdmlvcnMgZm9yIGF1dGhlbnRpY2F0aW9uIHBhZ2VzOlxuICAgKlxuICAgKiAtIGNhbGxiYWNrIHBhZ2VcbiAgICogLSByZWZyZXNoIHBhZ2VcbiAgICogLSBzaWduIG91dCBwYWdlXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb24uIFNlZVxuICAgKiBjcmVhdGVBdXRoUGFnZXNCZWhhdmlvcnMgaWYgdXNpbmcgRGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBhdXRoUGFnZXMoKTogY2xvdWRmcm9udC5CZWhhdmlvcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5jcmVhdGVQYXRoTGFtYmRhKHRoaXMuY2FsbGJhY2tQYXRoLCB0aGlzLnBhcnNlQXV0aEZuKSxcbiAgICAgIHRoaXMuY3JlYXRlUGF0aExhbWJkYSh0aGlzLnJlZnJlc2hBdXRoUGF0aCwgdGhpcy5yZWZyZXNoQXV0aEZuKSxcbiAgICAgIHRoaXMuY3JlYXRlUGF0aExhbWJkYSh0aGlzLnNpZ25PdXRQYXRoLCB0aGlzLnNpZ25PdXRGbiksXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBiZWhhdmlvcnMgZm9yIGF1dGhlbnRpY2F0aW9uIHBhZ2VzLlxuICAgKlxuICAgKiAtIGNhbGxiYWNrIHBhZ2VcbiAgICogLSByZWZyZXNoIHBhZ2VcbiAgICogLSBzaWduIG91dCBwYWdlXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBdXRoUGFnZXNCZWhhdmlvcnMoXG4gICAgb3JpZ2luOiBJT3JpZ2luLFxuICAgIG9wdGlvbnM/OiBBZGRCZWhhdmlvck9wdGlvbnMsXG4gICk6IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz4ge1xuICAgIGZ1bmN0aW9uIHBhdGgocGF0aDogc3RyaW5nLCBmbjogSVZlcnNpb24pOiBSZWNvcmQ8c3RyaW5nLCBCZWhhdmlvck9wdGlvbnM+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICBjb21wcmVzczogdHJ1ZSxcbiAgICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICAgICAgZWRnZUxhbWJkYXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogZm4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGF0aCh0aGlzLmNhbGxiYWNrUGF0aCwgdGhpcy5wYXJzZUF1dGhGbiksXG4gICAgICAuLi5wYXRoKHRoaXMucmVmcmVzaEF1dGhQYXRoLCB0aGlzLnJlZnJlc2hBdXRoRm4pLFxuICAgICAgLi4ucGF0aCh0aGlzLnNpZ25PdXRQYXRoLCB0aGlzLnNpZ25PdXRGbiksXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsYW1iZGEgZnVuY3Rpb24gYXNzb2NpYXRpb24gZm9yIHZpZXdlciByZXF1ZXN0IHRvIGNoZWNrXG4gICAqIGF1dGhlbnRpY2F0aW9uIGFuZCBvcmlnaW5hbCByZXNwb25zZSB0byBhZGQgaGVhZGVycy5cbiAgICpcbiAgICogVGhpcyBpcyB0byBiZSB1c2VkIHdpdGggQ2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbi4gU2VlXG4gICAqIGNyZWF0ZVByb3RlY3RlZEJlaGF2aW9yIGlmIHVzaW5nIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXV0aEZpbHRlcnMoKTogY2xvdWRmcm9udC5MYW1iZGFGdW5jdGlvbkFzc29jaWF0aW9uW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNULFxuICAgICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5jaGVja0F1dGhGbixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLk9SSUdJTl9SRVNQT05TRSxcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IHRoaXMuaHR0cEhlYWRlcnNGbixcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBiZWhhdmlvciB0aGF0IGluY2x1ZGVzIGF1dGhvcml6YXRpb24gY2hlY2suXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQcm90ZWN0ZWRCZWhhdmlvcihcbiAgICBvcmlnaW46IElPcmlnaW4sXG4gICAgb3B0aW9ucz86IEFkZEJlaGF2aW9yT3B0aW9ucyxcbiAgKTogQmVoYXZpb3JPcHRpb25zIHtcbiAgICBpZiAob3B0aW9ucz8uZWRnZUxhbWJkYXMgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJVc2VyLWRlZmluZWQgZWRnZUxhbWJkYXMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWRcIilcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3JpZ2luLFxuICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICBlZGdlTGFtYmRhczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgICAgZnVuY3Rpb25WZXJzaW9uOiB0aGlzLmNoZWNrQXV0aEZuLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuT1JJR0lOX1JFU1BPTlNFLFxuICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogdGhpcy5odHRwSGVhZGVyc0ZuLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBDb2duaXRvIGNsaWVudCB0byB1c2UgdGhlIHByb3BlciBVUkxzIGFuZCBPQXV0aCBzY29wZXMuXG4gICAqXG4gICAqIFRPRE86IEluIGNhc2UgdGhlIGNsaWVudCBjb25maWd1cmF0aW9uIGNoYW5nZXMgYW5kIGlzIHVwZGF0ZWRcbiAgICogIGJ5IENsb3VkRm9ybWF0aW9uLCB0aGlzIHdpbGwgbm90IGJlIHJlYXBwbGllZCBjYXVzaW5nIHRoZSBjbGllbnRcbiAgICogIHRvIG5vdCBiZSBjb3JyZWN0bHkgY29uZmlndXJlZC5cbiAgICogIEhvdyBjYW4gd2UgYXZvaWQgdGhpcyBzY2VuYXJpbz9cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVDbGllbnQoaWQ6IHN0cmluZywgcHJvcHM6IFVwZGF0ZUNsaWVudFByb3BzKTogQ2xpZW50VXBkYXRlIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50Q3JlYXRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIllvdSBjYW5ub3QgdXNlIHVwZGF0ZUNsaWVudCB3aXRoIGEgdXNlci1wcm92aWRlZCBDb2duaXRvIENsaWVudCBcIiArXG4gICAgICAgICAgXCJzaW5jZSBpdCB3b3VsZCBvdmVycmlkZSB0aGUgdXNlci1wcm92aWRlZCBzZXR0aW5nc1wiLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2xpZW50VXBkYXRlKHRoaXMsIGlkLCB7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlclBvb2w6IHRoaXMudXNlclBvb2wsXG4gICAgICBzaWduT3V0VXJsOiBwcm9wcy5zaWduT3V0VXJsLFxuICAgICAgY2FsbGJhY2tVcmw6IHByb3BzLmNhbGxiYWNrVXJsLFxuICAgICAgb2F1dGhTY29wZXM6IHRoaXMub2F1dGhTY29wZXMsXG4gICAgICBpZGVudGl0eVByb3ZpZGVyczpcbiAgICAgICAgcHJvcHMuaWRlbnRpdHlQcm92aWRlcnMgPz9cbiAgICAgICAgW1wiQ09HTklUT1wiXS5jb25jYXQoXG4gICAgICAgICAgdGhpcy51c2VyUG9vbC5pZGVudGl0eVByb3ZpZGVycy5tYXAoKGl0KSA9PiBpdC5wcm92aWRlck5hbWUpLFxuICAgICAgICApLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
package/lib/generate-secret.js
CHANGED
|
@@ -1,61 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.GenerateSecret = void 0;
|
|
27
|
-
const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
28
|
-
const cr = __importStar(require("aws-cdk-lib/custom-resources"));
|
|
29
|
-
const path = __importStar(require("path"));
|
|
30
|
-
const constructs_1 = require("constructs");
|
|
31
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
1
|
+
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
2
|
+
import * as cr from "aws-cdk-lib/custom-resources";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import { Construct } from "constructs";
|
|
5
|
+
import { CustomResource, Stack } from "aws-cdk-lib";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = path.dirname(__filename);
|
|
32
9
|
/**
|
|
33
10
|
* Generate a secret to be used in other parts of the deployment.
|
|
34
11
|
*/
|
|
35
|
-
class GenerateSecret extends
|
|
12
|
+
export class GenerateSecret extends Construct {
|
|
13
|
+
value;
|
|
36
14
|
constructor(scope, id, props) {
|
|
37
|
-
var _a;
|
|
38
15
|
super(scope, id);
|
|
39
|
-
const resource = new
|
|
16
|
+
const resource = new CustomResource(this, "Resource", {
|
|
40
17
|
serviceToken: GenerateSecretProvider.getOrCreate(this).serviceToken,
|
|
41
18
|
properties: {
|
|
42
|
-
Nonce:
|
|
19
|
+
Nonce: props?.nonce ?? "",
|
|
43
20
|
},
|
|
44
21
|
});
|
|
45
22
|
this.value = resource.getAttString("Value");
|
|
46
23
|
}
|
|
47
24
|
}
|
|
48
|
-
|
|
49
|
-
class GenerateSecretProvider extends constructs_1.Construct {
|
|
25
|
+
class GenerateSecretProvider extends Construct {
|
|
50
26
|
/**
|
|
51
27
|
* Returns the singleton provider.
|
|
52
28
|
*/
|
|
53
29
|
static getOrCreate(scope) {
|
|
54
|
-
const stack =
|
|
30
|
+
const stack = Stack.of(scope);
|
|
55
31
|
const id = "liflig-infra.cloudfront-auth.generate-secret.provider";
|
|
56
32
|
return (stack.node.tryFindChild(id) ||
|
|
57
33
|
new GenerateSecretProvider(stack, id));
|
|
58
34
|
}
|
|
35
|
+
provider;
|
|
36
|
+
serviceToken;
|
|
59
37
|
constructor(scope, id) {
|
|
60
38
|
super(scope, id);
|
|
61
39
|
this.provider = new cr.Provider(this, "Provider", {
|
|
@@ -68,4 +46,4 @@ class GenerateSecretProvider extends constructs_1.Construct {
|
|
|
68
46
|
this.serviceToken = this.provider.serviceToken;
|
|
69
47
|
}
|
|
70
48
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtc2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dlbmVyYXRlLXNlY3JldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRW5DLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFTMUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7SUFDM0IsS0FBSyxDQUFRO0lBRTdCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3BELFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUNuRSxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTthQUMxQjtTQUNGLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLHNCQUF1QixTQUFRLFNBQVM7SUFDNUM7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0IsTUFBTSxFQUFFLEdBQUcsdURBQXVELENBQUE7UUFDbEUsT0FBTyxDQUNKLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBNEI7WUFDdkQsSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRWdCLFFBQVEsQ0FBYTtJQUN0QixZQUFZLENBQVE7SUFFcEMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hELGNBQWMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDcEQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQyxDQUNoRDtnQkFDRCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVzthQUNwQyxDQUFDO1NBQ0gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQTtJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcInVybFwiXG5cbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKVxuXG5pbnRlcmZhY2UgR2VuZXJhdGVTZWNyZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBOb25jZSB0byBmb3JjZSBzZWNyZXQgdXBkYXRlLlxuICAgKi9cbiAgbm9uY2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCB0byBiZSB1c2VkIGluIG90aGVyIHBhcnRzIG9mIHRoZSBkZXBsb3ltZW50LlxuICovXG5leHBvcnQgY2xhc3MgR2VuZXJhdGVTZWNyZXQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogR2VuZXJhdGVTZWNyZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBHZW5lcmF0ZVNlY3JldFByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgTm9uY2U6IHByb3BzPy5ub25jZSA/PyBcIlwiLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgdGhpcy52YWx1ZSA9IHJlc291cmNlLmdldEF0dFN0cmluZyhcIlZhbHVlXCIpXG4gIH1cbn1cblxuY2xhc3MgR2VuZXJhdGVTZWNyZXRQcm92aWRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE9yQ3JlYXRlKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKVxuICAgIGNvbnN0IGlkID0gXCJsaWZsaWctaW5mcmEuY2xvdWRmcm9udC1hdXRoLmdlbmVyYXRlLXNlY3JldC5wcm92aWRlclwiXG4gICAgcmV0dXJuIChcbiAgICAgIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkgYXMgR2VuZXJhdGVTZWNyZXRQcm92aWRlcikgfHxcbiAgICAgIG5ldyBHZW5lcmF0ZVNlY3JldFByb3ZpZGVyKHN0YWNrLCBpZClcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlclxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZVRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiRnVuY3Rpb25cIiwge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9kaXN0L2dlbmVyYXRlLXNlY3JldFwiKSxcbiAgICAgICAgKSxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgfSksXG4gICAgfSlcblxuICAgIHRoaXMuc2VydmljZVRva2VuID0gdGhpcy5wcm92aWRlci5zZXJ2aWNlVG9rZW5cbiAgfVxufVxuIl19
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
2
|
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
4
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
-
};
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.httpPostWithRetry = httpPostWithRetry;
|
|
9
3
|
// Workaround for https://github.com/axios/axios/issues/3219
|
|
10
4
|
/// <reference lib="dom" />
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const axiosInstance =
|
|
14
|
-
httpsAgent: new
|
|
5
|
+
import axios from "axios";
|
|
6
|
+
import { Agent } from "https";
|
|
7
|
+
const axiosInstance = axios.create({
|
|
8
|
+
httpsAgent: new Agent({ keepAlive: true }),
|
|
15
9
|
});
|
|
16
|
-
async function httpPostWithRetry(url, data, config, logger) {
|
|
10
|
+
export async function httpPostWithRetry(url, data, config, logger) {
|
|
17
11
|
let attempts = 0;
|
|
18
12
|
while (true) {
|
|
19
13
|
++attempts;
|
|
@@ -38,4 +32,4 @@ async function httpPostWithRetry(url, data, config, logger) {
|
|
|
38
32
|
}
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvdXRpbC9heGlvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsc0VBQXNFO0FBRXRFLDREQUE0RDtBQUM1RCwyQkFBMkI7QUFFM0IsT0FBTyxLQUE0QyxNQUFNLE9BQU8sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRzdCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDakMsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO0NBQzNDLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLEdBQVcsRUFDWCxJQUFTLEVBQ1QsTUFBMEIsRUFDMUIsTUFBYztJQUVkLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUNoQixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1osRUFBRSxRQUFRLENBQUE7UUFDVixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsb0JBQW9CLFFBQVEsSUFBSSxDQUFDLENBQUE7WUFDakUsc0VBQXNFO1lBQ3RFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7WUFDeEQsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLHVCQUF1QjtnQkFDdkIsTUFBTSxDQUFDLEtBQUssQ0FDVixvQkFBb0IsUUFBUSxxQ0FBcUMsQ0FDbEUsQ0FBQTtnQkFDRCxNQUFNLEdBQUcsQ0FBQTtZQUNYLENBQUM7WUFDRCxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsK0VBQStFO2dCQUMvRSxNQUFNLENBQUMsS0FBSyxDQUNWLDhFQUE4RSxDQUMvRSxDQUFBO2dCQUNELE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM1QixVQUFVLENBQ1IsT0FBTyxFQUNQLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FDeEQsQ0FDRixDQUFBO2dCQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQTtZQUM1RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlcyAqL1xuXG4vLyBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYXhpb3MvYXhpb3MvaXNzdWVzLzMyMTlcbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCBheGlvcywgeyBBeGlvc1JlcXVlc3RDb25maWcsIEF4aW9zUmVzcG9uc2UgfSBmcm9tIFwiYXhpb3NcIlxuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIlxuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyXCJcblxuY29uc3QgYXhpb3NJbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XG4gIGh0dHBzQWdlbnQ6IG5ldyBBZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbn0pXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBodHRwUG9zdFdpdGhSZXRyeShcbiAgdXJsOiBzdHJpbmcsXG4gIGRhdGE6IGFueSxcbiAgY29uZmlnOiBBeGlvc1JlcXVlc3RDb25maWcsXG4gIGxvZ2dlcjogTG9nZ2VyLFxuKTogUHJvbWlzZTxBeGlvc1Jlc3BvbnNlPGFueT4+IHtcbiAgbGV0IGF0dGVtcHRzID0gMFxuICB3aGlsZSAodHJ1ZSkge1xuICAgICsrYXR0ZW1wdHNcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zSW5zdGFuY2UucG9zdCh1cmwsIGRhdGEsIGNvbmZpZylcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBIVFRQIFBPU1QgdG8gJHt1cmx9IGZhaWxlZCAoYXR0ZW1wdCAke2F0dGVtcHRzfSk6YClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgIGxvZ2dlci5kZWJ1ZygoZXJyLnJlc3BvbnNlICYmIGVyci5yZXNwb25zZS5kYXRhKSB8fCBlcnIpXG4gICAgICBpZiAoYXR0ZW1wdHMgPj0gNSkge1xuICAgICAgICAvLyBUcnkgNSB0aW1lcyBhdCBtb3N0LlxuICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgYE5vIHN1Y2Nlc3MgYWZ0ZXIgJHthdHRlbXB0c30gYXR0ZW1wdHMsIHNlaXppbmcgZnVydGhlciBhdHRlbXB0c2AsXG4gICAgICAgIClcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9XG4gICAgICBpZiAoYXR0ZW1wdHMgPj0gMikge1xuICAgICAgICAvLyBBZnRlciBhdHRlbXB0aW5nIHR3aWNlIGltbWVkaWF0ZWx5LCBkbyBzb21lIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBqaXR0ZXIuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBcIkRvaW5nIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBqaXR0ZXIsIGJlZm9yZSBhdHRlbXB0aW5nIEhUVFAgUE9TVCBhZ2FpbiAuLi5cIixcbiAgICAgICAgKVxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgIDI1ICogKE1hdGgucG93KDIsIGF0dGVtcHRzKSArIE1hdGgucmFuZG9tKCkgKiBhdHRlbXB0cyksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICBsb2dnZXIuZGVidWcoXCJEb25lIHdhaXRpbmcsIHdpbGwgdHJ5IEhUVFAgUE9TVCBhZ2FpbiBub3dcIilcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*
|
|
3
2
|
Functions to translate base64-encoded strings, so they can be used:
|
|
4
3
|
|
|
@@ -6,20 +5,17 @@ Functions to translate base64-encoded strings, so they can be used:
|
|
|
6
5
|
- in OAuth2 PKCE verifier
|
|
7
6
|
- in cookies (to be on the safe side, as = + / are in fact valid characters in cookies)
|
|
8
7
|
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.safeBase64Stringify = safeBase64Stringify;
|
|
11
|
-
exports.decodeSafeBase64 = decodeSafeBase64;
|
|
12
8
|
/**
|
|
13
9
|
* Use this on a base64-encoded string to translate = + / into replacement characters.
|
|
14
10
|
*/
|
|
15
|
-
function safeBase64Stringify(value) {
|
|
11
|
+
export function safeBase64Stringify(value) {
|
|
16
12
|
return value.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
17
13
|
}
|
|
18
14
|
/**
|
|
19
15
|
* Decode a Base64 value that is run through safeBase64Stringify to the actual string.
|
|
20
16
|
*/
|
|
21
|
-
function decodeSafeBase64(value) {
|
|
17
|
+
export function decodeSafeBase64(value) {
|
|
22
18
|
const desafed = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
23
19
|
return Buffer.from(desafed, "base64").toString();
|
|
24
20
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL3V0aWwvYmFzZTY0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7RUFNRTtBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDeEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWE7SUFDNUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMzRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuRnVuY3Rpb25zIHRvIHRyYW5zbGF0ZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmdzLCBzbyB0aGV5IGNhbiBiZSB1c2VkOlxuXG4gIC0gaW4gVVJMJ3Mgd2l0aG91dCBuZWVkaW5nIGFkZGl0aW9uYWwgZW5jb2RpbmdcbiAgLSBpbiBPQXV0aDIgUEtDRSB2ZXJpZmllclxuICAtIGluIGNvb2tpZXMgKHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGFzID0gKyAvIGFyZSBpbiBmYWN0IHZhbGlkIGNoYXJhY3RlcnMgaW4gY29va2llcylcbiovXG5cbi8qKlxuICogVXNlIHRoaXMgb24gYSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcgdG8gdHJhbnNsYXRlID0gKyAvIGludG8gcmVwbGFjZW1lbnQgY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhZmVCYXNlNjRTdHJpbmdpZnkodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC89L2csIFwiXCIpLnJlcGxhY2UoL1xcKy9nLCBcIi1cIikucmVwbGFjZSgvXFwvL2csIFwiX1wiKVxufVxuXG4vKipcbiAqIERlY29kZSBhIEJhc2U2NCB2YWx1ZSB0aGF0IGlzIHJ1biB0aHJvdWdoIHNhZmVCYXNlNjRTdHJpbmdpZnkgdG8gdGhlIGFjdHVhbCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTYWZlQmFzZTY0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkZXNhZmVkID0gdmFsdWUucmVwbGFjZSgvLS9nLCBcIitcIikucmVwbGFjZSgvXy9nLCBcIi9cIilcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlc2FmZWQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKClcbn1cbiJdfQ==
|