cloudstructs 0.2.8 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.jsii +1477 -149
  2. package/API.md +346 -4
  3. package/lib/codecommit-mirror/index.js +4 -5
  4. package/lib/ecs-service-roller/index.js +2 -2
  5. package/lib/email-receiver/receiver.js +3 -4
  6. package/lib/saml-identity-provider/index.js +2 -2
  7. package/lib/slack-app/index.d.ts +2 -95
  8. package/lib/slack-app/index.js +13 -47
  9. package/lib/slack-app/manifest.d.ts +482 -0
  10. package/lib/slack-app/manifest.js +198 -0
  11. package/lib/slack-app/provider.handler.js +4 -3
  12. package/lib/slack-app/provider.js +1 -3
  13. package/lib/slack-app/slack-app.d.ts +127 -0
  14. package/lib/slack-app/slack-app.js +103 -0
  15. package/lib/slack-events/index.js +2 -4
  16. package/lib/slack-textract/index.js +2 -4
  17. package/lib/state-machine-cr-provider/index.js +4 -4
  18. package/lib/static-website/index.d.ts +9 -5
  19. package/lib/static-website/index.js +36 -20
  20. package/lib/url-shortener/index.js +2 -4
  21. package/node_modules/@types/cacheable-request/node_modules/@types/node/README.md +1 -1
  22. package/node_modules/@types/cacheable-request/node_modules/@types/node/http2.d.ts +1 -1
  23. package/node_modules/@types/cacheable-request/node_modules/@types/node/package.json +2 -2
  24. package/node_modules/@types/is-stream/node_modules/@types/node/README.md +1 -1
  25. package/node_modules/@types/is-stream/node_modules/@types/node/http2.d.ts +1 -1
  26. package/node_modules/@types/is-stream/node_modules/@types/node/package.json +2 -2
  27. package/node_modules/@types/keyv/node_modules/@types/node/README.md +1 -1
  28. package/node_modules/@types/keyv/node_modules/@types/node/http2.d.ts +1 -1
  29. package/node_modules/@types/keyv/node_modules/@types/node/package.json +2 -2
  30. package/node_modules/@types/responselike/node_modules/@types/node/README.md +1 -1
  31. package/node_modules/@types/responselike/node_modules/@types/node/http2.d.ts +1 -1
  32. package/node_modules/@types/responselike/node_modules/@types/node/package.json +2 -2
  33. package/package.json +8 -2
  34. package/lib/static-website/origin-response-handler/index.d.ts +0 -1
  35. package/lib/static-website/origin-response-handler/index.js +0 -25
  36. package/lib/static-website/security-headers.d.ts +0 -10
  37. package/lib/static-website/security-headers.js +0 -14
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SlackAppManifest = exports.SlackAppManifestShortcutType = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const nodeUrl = require("url");
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
+ /**
9
+ * Type of shortcuts.
10
+ *
11
+ * @see https://api.slack.com/interactivity/shortcuts
12
+ * @stability stable
13
+ */
14
+ var SlackAppManifestShortcutType;
15
+ (function (SlackAppManifestShortcutType) {
16
+ SlackAppManifestShortcutType["MESSAGE"] = "message";
17
+ SlackAppManifestShortcutType["GLOBAL"] = "global";
18
+ })(SlackAppManifestShortcutType = exports.SlackAppManifestShortcutType || (exports.SlackAppManifestShortcutType = {}));
19
+ ;
20
+ /**
21
+ * A Slack app manifest.
22
+ *
23
+ * @see https://api.slack.com/reference/manifests
24
+ * @stability stable
25
+ */
26
+ class SlackAppManifest {
27
+ /**
28
+ * @stability stable
29
+ */
30
+ constructor(props) {
31
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
32
+ this.props = props;
33
+ validateLength('app name', 35, props.name);
34
+ validateLength('app description', 140, props.description);
35
+ validateLength('app long description', 4000, props.longDescription);
36
+ validateColor(props.backgroundColor);
37
+ validateUrl((_b = props.eventSubscriptions) === null || _b === void 0 ? void 0 : _b.requestUrl);
38
+ validateItems('bot events', 100, (_c = props.eventSubscriptions) === null || _c === void 0 ? void 0 : _c.botEvents);
39
+ validateItems('users events', 100, (_d = props.eventSubscriptions) === null || _d === void 0 ? void 0 : _d.userEvents);
40
+ validateUrl((_e = props.interactivity) === null || _e === void 0 ? void 0 : _e.requestUrl);
41
+ validateUrl((_f = props.interactivity) === null || _f === void 0 ? void 0 : _f.messageMenuOptionsUrl);
42
+ validateLength('bot display name', 80, (_g = props.botUser) === null || _g === void 0 ? void 0 : _g.displayName);
43
+ validateItems('shortcuts', 5, props.shortcuts);
44
+ (_h = props.shortcuts) === null || _h === void 0 ? void 0 : _h.forEach((shortcut) => {
45
+ validateLength('shortcut callback ID', 255, shortcut.callbackId);
46
+ validateLength('shortcut description', 150, shortcut.description);
47
+ });
48
+ validateItems('slash commands', 5, props.slashCommands);
49
+ (_j = props.slashCommands) === null || _j === void 0 ? void 0 : _j.forEach((command) => {
50
+ validateLength('slash command', 32, command.command);
51
+ validateLength('slash command description', 2000, command.description),
52
+ validateUrl(command.url);
53
+ validateLength('slash command use hint', 1000, command.usageHint);
54
+ });
55
+ validateItems('workflow steps', 10, props.workflowSteps);
56
+ (_k = props.workflowSteps) === null || _k === void 0 ? void 0 : _k.forEach((step) => {
57
+ validateLength('workflow step name', 50, step.name);
58
+ validateLength('workflow step callback ID', 50, step.callbackId);
59
+ });
60
+ validateItems('unfurls domains', 5, props.unfurlDomains);
61
+ validateItems('OAuth redirect URLs', 1000, (_l = props.oauthConfig) === null || _l === void 0 ? void 0 : _l.redirectUrls);
62
+ (_o = (_m = props.oauthConfig) === null || _m === void 0 ? void 0 : _m.redirectUrls) === null || _o === void 0 ? void 0 : _o.forEach((url) => {
63
+ validateUrl(url, false);
64
+ });
65
+ validateItems('bot scopes', 255, (_p = props.oauthConfig) === null || _p === void 0 ? void 0 : _p.botScopes);
66
+ validateItems('user scopes', 255, (_q = props.oauthConfig) === null || _q === void 0 ? void 0 : _q.userScopes);
67
+ }
68
+ /**
69
+ * @stability stable
70
+ */
71
+ render(construct) {
72
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
73
+ const schema = {
74
+ _metadata: {
75
+ major_version: this.props.majorVersion,
76
+ minor_version: this.props.minorVersion,
77
+ },
78
+ display_information: {
79
+ name: this.props.name,
80
+ description: this.props.description,
81
+ long_description: this.props.longDescription,
82
+ background_color: (_b = prefixWith('#', this.props.backgroundColor)) === null || _b === void 0 ? void 0 : _b.toLowerCase(),
83
+ },
84
+ settings: {
85
+ allowed_ip_address_ranges: this.props.allowedIpAddressRanges,
86
+ event_subscriptions: {
87
+ request_url: (_c = this.props.eventSubscriptions) === null || _c === void 0 ? void 0 : _c.requestUrl,
88
+ bot_events: (_d = this.props.eventSubscriptions) === null || _d === void 0 ? void 0 : _d.botEvents,
89
+ user_events: (_e = this.props.eventSubscriptions) === null || _e === void 0 ? void 0 : _e.userEvents,
90
+ },
91
+ interactivity: this.props.interactivity
92
+ ? {
93
+ is_enabled: (_g = (_f = this.props.interactivity) === null || _f === void 0 ? void 0 : _f.enabled) !== null && _g !== void 0 ? _g : true,
94
+ request_url: (_h = this.props.interactivity) === null || _h === void 0 ? void 0 : _h.requestUrl,
95
+ message_menu_options_url: (_j = this.props.interactivity) === null || _j === void 0 ? void 0 : _j.messageMenuOptionsUrl,
96
+ }
97
+ : undefined,
98
+ org_deploy_enabled: this.props.orgDeploy,
99
+ socket_mode_enabled: this.props.socketMode,
100
+ },
101
+ features: {
102
+ app_home: {
103
+ home_tab_enabled: (_k = this.props.appHome) === null || _k === void 0 ? void 0 : _k.homeTab,
104
+ messages_tab_enabled: (_l = this.props.appHome) === null || _l === void 0 ? void 0 : _l.messagesTab,
105
+ messages_tab_read_only_enabled: (_m = this.props.appHome) === null || _m === void 0 ? void 0 : _m.messagesTabReadOnly,
106
+ },
107
+ bot_user: this.props.botUser
108
+ ? {
109
+ display_name: (_o = this.props.botUser) === null || _o === void 0 ? void 0 : _o.displayName,
110
+ always_online: (_p = this.props.botUser) === null || _p === void 0 ? void 0 : _p.alwaysOnline,
111
+ }
112
+ : undefined,
113
+ shortcuts: (_q = this.props.shortcuts) === null || _q === void 0 ? void 0 : _q.map((shortcut) => ({
114
+ name: shortcut.name,
115
+ type: shortcut.type,
116
+ callback_id: shortcut.callbackId,
117
+ description: shortcut.description,
118
+ })),
119
+ slash_commands: (_r = this.props.slashCommands) === null || _r === void 0 ? void 0 : _r.map((command) => ({
120
+ command: prefixWith('/', command.command),
121
+ description: command.description,
122
+ url: command.url,
123
+ usage_hint: command.usageHint,
124
+ should_escape: command.shouldEscape,
125
+ })),
126
+ workflow_steps: (_s = this.props.workflowSteps) === null || _s === void 0 ? void 0 : _s.map((step) => ({
127
+ name: step.name,
128
+ callback_id: step.callbackId,
129
+ })),
130
+ unfurl_domains: this.props.unfurlDomains,
131
+ },
132
+ oauth_config: {
133
+ redirect_urls: (_t = this.props.oauthConfig) === null || _t === void 0 ? void 0 : _t.redirectUrls,
134
+ scopes: {
135
+ bot: (_u = this.props.oauthConfig) === null || _u === void 0 ? void 0 : _u.botScopes,
136
+ users: (_v = this.props.oauthConfig) === null || _v === void 0 ? void 0 : _v.userScopes,
137
+ },
138
+ },
139
+ };
140
+ return aws_cdk_lib_1.Stack.of(construct).toJsonString(removeUndefined(schema));
141
+ }
142
+ }
143
+ exports.SlackAppManifest = SlackAppManifest;
144
+ _a = JSII_RTTI_SYMBOL_1;
145
+ SlackAppManifest[_a] = { fqn: "cloudstructs.SlackAppManifest", version: "0.4.0" };
146
+ function prefixWith(prefix, string) {
147
+ if (!string) {
148
+ return undefined;
149
+ }
150
+ if (string.startsWith(prefix)) {
151
+ return string;
152
+ }
153
+ return `${prefix}${string}`;
154
+ }
155
+ function validateLength(description, max, xs) {
156
+ if (xs && !aws_cdk_lib_1.Token.isUnresolved(xs) && xs.length > max) {
157
+ throw new Error(`Maximum length for ${description} is ${max}, got ${xs.length}: ${xs}`);
158
+ }
159
+ }
160
+ function validateItems(description, max, xs) {
161
+ if (xs && !aws_cdk_lib_1.Token.isUnresolved(xs) && xs.length > max) {
162
+ throw new Error(`Maximum number of items for ${description} is ${max}, got ${xs.length}`);
163
+ }
164
+ }
165
+ function validateColor(color) {
166
+ if (color && !aws_cdk_lib_1.Token.isUnresolved(color) && !/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(color)) {
167
+ throw new Error(`Invalid hex color: ${color}`);
168
+ }
169
+ }
170
+ function validateUrl(url, https = true) {
171
+ if (url && !aws_cdk_lib_1.Token.isUnresolved(url)) {
172
+ try {
173
+ const parsed = new nodeUrl.URL(url);
174
+ if (https && parsed.protocol !== 'https:') {
175
+ throw new Error('Invalid protocol');
176
+ }
177
+ }
178
+ catch (err) {
179
+ throw new Error(`${url} is not a valid${https ? ' HTTPS' : ''} url`);
180
+ }
181
+ }
182
+ }
183
+ function removeUndefined(obj) {
184
+ if (typeof obj === 'string') {
185
+ return obj;
186
+ }
187
+ if (Array.isArray(obj)) {
188
+ const ret = obj
189
+ .map(v => (v && typeof v === 'object') ? removeUndefined(v) : v)
190
+ .filter(v => !(v == null));
191
+ return ret.length !== 0 ? ret : undefined;
192
+ }
193
+ const ret = Object.entries(obj)
194
+ .map(([k, v]) => [k, v && typeof v === 'object' ? removeUndefined(v) : v])
195
+ .reduce((a, [k, v]) => (v == null ? a : (a[k] = v, a)), {});
196
+ return Object.keys(ret).length !== 0 ? ret : undefined;
197
+ }
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2xhY2stYXBwL21hbmlmZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLDZDQUEyQzs7Ozs7OztBQTJJM0MsSUFBWSw0QkFNWDtBQU5ELFdBQVksNEJBQTRCO0lBRXRDLG1EQUFtQixDQUFBO0lBR25CLGlEQUFpQixDQUFBO0FBQ25CLENBQUMsRUFOVyw0QkFBNEIsR0FBNUIsb0NBQTRCLEtBQTVCLG9DQUE0QixRQU12QztBQTJCQSxDQUFDOzs7Ozs7O0FBZ0JGLE1BQWEsZ0JBQWdCOzs7O0lBQzNCLFlBQTZCLEtBQTRCOztRQUE1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUN2RCxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsY0FBYyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsY0FBYyxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEUsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVyQyxXQUFXLE9BQUMsS0FBSyxDQUFDLGtCQUFrQiwwQ0FBRSxVQUFVLENBQUMsQ0FBQztRQUNsRCxhQUFhLENBQUMsWUFBWSxFQUFFLEdBQUcsUUFBRSxLQUFLLENBQUMsa0JBQWtCLDBDQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RFLGFBQWEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxRQUFFLEtBQUssQ0FBQyxrQkFBa0IsMENBQUUsVUFBVSxDQUFDLENBQUM7UUFFekUsV0FBVyxPQUFDLEtBQUssQ0FBQyxhQUFhLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFdBQVcsT0FBQyxLQUFLLENBQUMsYUFBYSwwQ0FBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hELGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQUUsS0FBSyxDQUFDLE9BQU8sMENBQUUsV0FBVyxDQUFDLENBQUM7UUFFbkUsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLE1BQUEsS0FBSyxDQUFDLFNBQVMsMENBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDcEMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakUsY0FBYyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxFQUFFO1FBRUgsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEQsTUFBQSxLQUFLLENBQUMsYUFBYSwwQ0FBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsY0FBYyxDQUFDLDJCQUEyQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDO2dCQUN0RSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsRUFBRTtRQUVILGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELE1BQUEsS0FBSyxDQUFDLGFBQWEsMENBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsY0FBYyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxFQUFFO1FBRUgsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFekQsYUFBYSxDQUFDLHFCQUFxQixFQUFFLElBQUksUUFBRSxLQUFLLENBQUMsV0FBVywwQ0FBRSxZQUFZLENBQUMsQ0FBQztRQUM1RSxZQUFBLEtBQUssQ0FBQyxXQUFXLDBDQUFFLFlBQVksMENBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0MsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLEVBQUU7UUFDSCxhQUFhLENBQUMsWUFBWSxFQUFFLEdBQUcsUUFBRSxLQUFLLENBQUMsV0FBVywwQ0FBRSxTQUFTLENBQUMsQ0FBQztRQUMvRCxhQUFhLENBQUMsYUFBYSxFQUFFLEdBQUcsUUFBRSxLQUFLLENBQUMsV0FBVywwQ0FBRSxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDOzs7O0lBRU0sTUFBTSxDQUFDLFNBQXFCOztRQUNqQyxNQUFNLE1BQU0sR0FBMkI7WUFDckMsU0FBUyxFQUFFO2dCQUNULGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7Z0JBQ3RDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7YUFDdkM7WUFDRCxtQkFBbUIsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtnQkFDckIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFDbkMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO2dCQUM1QyxnQkFBZ0IsUUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLDBDQUFFLFdBQVcsRUFBRTthQUM3RTtZQUNELFFBQVEsRUFBRTtnQkFDUix5QkFBeUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQjtnQkFDNUQsbUJBQW1CLEVBQUU7b0JBQ25CLFdBQVcsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQiwwQ0FBRSxVQUFVO29CQUN0RCxVQUFVLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsMENBQUUsU0FBUztvQkFDcEQsV0FBVyxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLDBDQUFFLFVBQVU7aUJBQ3ZEO2dCQUNELGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7b0JBQ3JDLENBQUMsQ0FBQzt3QkFDQSxVQUFVLGNBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLDBDQUFFLE9BQU8sbUNBQUksSUFBSTt3QkFDckQsV0FBVyxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSwwQ0FBRSxVQUFVO3dCQUNqRCx3QkFBd0IsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsMENBQUUscUJBQXFCO3FCQUMxRTtvQkFDRCxDQUFDLENBQUMsU0FBUztnQkFDYixrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQ3hDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTthQUMzQztZQUNELFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUU7b0JBQ1IsZ0JBQWdCLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLDBDQUFFLE9BQU87b0JBQzdDLG9CQUFvQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTywwQ0FBRSxXQUFXO29CQUNyRCw4QkFBOEIsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sMENBQUUsbUJBQW1CO2lCQUN4RTtnQkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO29CQUMxQixDQUFDLENBQUM7d0JBQ0EsWUFBWSxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTywwQ0FBRSxXQUFXO3dCQUM3QyxhQUFhLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLDBDQUFFLFlBQVk7cUJBQ2hEO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLFNBQVMsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsMENBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7b0JBQ25CLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDbkIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxVQUFVO29CQUNoQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxjQUFjLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLDBDQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDMUQsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQztvQkFDekMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUNoQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ2hCLFVBQVUsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDN0IsYUFBYSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2lCQUNwQyxDQUFDLENBQUM7Z0JBQ0gsY0FBYyxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzdCLENBQUMsQ0FBQztnQkFDSCxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2FBQ3pDO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLGFBQWEsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsMENBQUUsWUFBWTtnQkFDbkQsTUFBTSxFQUFFO29CQUNOLEdBQUcsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsMENBQUUsU0FBUztvQkFDdEMsS0FBSyxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVywwQ0FBRSxVQUFVO2lCQUMxQzthQUNGO1NBQ0YsQ0FBQztRQUVGLE9BQU8sbUJBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7O0FBbkhILDRDQW9IQzs7O0FBa0VELFNBQVMsVUFBVSxDQUErQixNQUFjLEVBQUUsTUFBUztJQUN6RSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsT0FBTyxTQUFjLENBQUM7S0FDdkI7SUFFRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDN0IsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sR0FBRyxNQUFNLEdBQUcsTUFBTSxFQUFPLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLFdBQW1CLEVBQUUsR0FBVyxFQUFFLEVBQVc7SUFDbkUsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixXQUFXLE9BQU8sR0FBRyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztLQUN6RjtBQUNILENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBSSxXQUFtQixFQUFFLEdBQVcsRUFBRSxFQUFRO0lBQ2xFLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsV0FBVyxPQUFPLEdBQUcsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUMzRjtBQUNILENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLElBQUksS0FBSyxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDN0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNoRDtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUFZLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNuQyxJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO2dCQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDckM7U0FDRjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsa0JBQWtCLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3RFO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsR0FBUTtJQUMvQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLEdBQUc7YUFDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0tBQzNDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekUsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBub2RlVXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgeyBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FwcE1hbmlmZXN0UHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsb25nRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWlub3JWZXJzaW9uPzogbnVtYmVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbGxvd2VkSXBBZGRyZXNzUmFuZ2VzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGV2ZW50U3Vic2NyaXB0aW9ucz86IFNsYWNrQXBwTWFuaWZlc3RFdmVudFN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGludGVyYWN0aXZpdHk/OiBTbGFja0FwcE1hbmlmZXN0SW50ZXJhY3Rpdml0eTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBvcmdEZXBsb3k/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNvY2tldE1vZGU/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXBwSG9tZT86IFNsYWNrQXBwTWFuaWZlc3RBcHBIb21lO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBib3RVc2VyPzogU2xhY2trQXBwTWFuaWZlc3RCb3RVc2VyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNob3J0Y3V0cz86IFNsYWNrQXBwTWFuaWZlc3RTaG9ydGN1dFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNsYXNoQ29tbWFuZHM/OiBTbGFja0FwcE1hbmlmZXN0U2xhc2hDb21tYW5kW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHdvcmtmbG93U3RlcHM/OiBTbGFja0FwcE1hbmlmZXN0V29ya2Zsb3dTdGVwW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdW5mdXJsRG9tYWlucz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgb2F1dGhDb25maWc/OiBTbGFja0FwcE1hbmlmZXN0T2F1dGhDb25maWc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FwcE1hbmlmZXN0U2V0dGluZ3Mge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYWxsb3dlZElwQWRkcmVzc1Jhbmdlcz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBldmVudFN1YnNjcmlwdGlvbnM/OiBTbGFja0FwcE1hbmlmZXN0RXZlbnRTdWJzY3JpcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpbnRlcmFjdGl2aXR5PzogU2xhY2tBcHBNYW5pZmVzdEludGVyYWN0aXZpdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgb3JnRGVwbG95PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzb2NrZXRNb2RlPzogYm9vbGVhbjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FwcE1hbmlmZXN0RXZlbnRTdWJzY3JpcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlcXVlc3RVcmw6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBib3RFdmVudHM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHVzZXJFdmVudHM/OiBzdHJpbmdbXTtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FwcE1hbmlmZXN0SW50ZXJhY3Rpdml0eSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVxdWVzdFVybD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWVzc2FnZU1lbnVPcHRpb25zVXJsPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FwcE1hbmlmZXN0QXBwSG9tZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgaG9tZVRhYj86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtZXNzYWdlc1RhYj86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG1lc3NhZ2VzVGFiUmVhZE9ubHk/OiBib29sZWFuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFNsYWNra0FwcE1hbmlmZXN0Qm90VXNlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbHdheXNPbmxpbmU/OiBib29sZWFuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgU2xhY2tBcHBNYW5pZmVzdFNob3J0Y3V0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdHlwZTogU2xhY2tBcHBNYW5pZmVzdFNob3J0Y3V0VHlwZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNhbGxiYWNrSWQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGVudW0gU2xhY2tBcHBNYW5pZmVzdFNob3J0Y3V0VHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIE1FU1NBR0UgPSAnbWVzc2FnZScsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIEdMT0JBTCA9ICdnbG9iYWwnLFxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFNsYWNrQXBwTWFuaWZlc3RTbGFzaENvbW1hbmQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHVzYWdlSGludD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNob3VsZEVzY2FwZT86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgU2xhY2tBcHBNYW5pZmVzdFdvcmtmbG93U3RlcCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNhbGxiYWNrSWQ6IHN0cmluZztcbn07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FwcE1hbmlmZXN0T2F1dGhDb25maWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVkaXJlY3RVcmxzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBib3RTY29wZXM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB1c2VyU2NvcGVzPzogc3RyaW5nW107XG59XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgU2xhY2tBcHBNYW5pZmVzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFNsYWNrQXBwTWFuaWZlc3RQcm9wcykge1xuICAgIHZhbGlkYXRlTGVuZ3RoKCdhcHAgbmFtZScsIDM1LCBwcm9wcy5uYW1lKTtcbiAgICB2YWxpZGF0ZUxlbmd0aCgnYXBwIGRlc2NyaXB0aW9uJywgMTQwLCBwcm9wcy5kZXNjcmlwdGlvbik7XG4gICAgdmFsaWRhdGVMZW5ndGgoJ2FwcCBsb25nIGRlc2NyaXB0aW9uJywgNDAwMCwgcHJvcHMubG9uZ0Rlc2NyaXB0aW9uKTtcbiAgICB2YWxpZGF0ZUNvbG9yKHByb3BzLmJhY2tncm91bmRDb2xvcik7XG5cbiAgICB2YWxpZGF0ZVVybChwcm9wcy5ldmVudFN1YnNjcmlwdGlvbnM/LnJlcXVlc3RVcmwpO1xuICAgIHZhbGlkYXRlSXRlbXMoJ2JvdCBldmVudHMnLCAxMDAsIHByb3BzLmV2ZW50U3Vic2NyaXB0aW9ucz8uYm90RXZlbnRzKTtcbiAgICB2YWxpZGF0ZUl0ZW1zKCd1c2VycyBldmVudHMnLCAxMDAsIHByb3BzLmV2ZW50U3Vic2NyaXB0aW9ucz8udXNlckV2ZW50cyk7XG5cbiAgICB2YWxpZGF0ZVVybChwcm9wcy5pbnRlcmFjdGl2aXR5Py5yZXF1ZXN0VXJsKTtcbiAgICB2YWxpZGF0ZVVybChwcm9wcy5pbnRlcmFjdGl2aXR5Py5tZXNzYWdlTWVudU9wdGlvbnNVcmwpO1xuICAgIHZhbGlkYXRlTGVuZ3RoKCdib3QgZGlzcGxheSBuYW1lJywgODAsIHByb3BzLmJvdFVzZXI/LmRpc3BsYXlOYW1lKTtcblxuICAgIHZhbGlkYXRlSXRlbXMoJ3Nob3J0Y3V0cycsIDUsIHByb3BzLnNob3J0Y3V0cyk7XG4gICAgcHJvcHMuc2hvcnRjdXRzPy5mb3JFYWNoKChzaG9ydGN1dCkgPT4ge1xuICAgICAgdmFsaWRhdGVMZW5ndGgoJ3Nob3J0Y3V0IGNhbGxiYWNrIElEJywgMjU1LCBzaG9ydGN1dC5jYWxsYmFja0lkKTtcbiAgICAgIHZhbGlkYXRlTGVuZ3RoKCdzaG9ydGN1dCBkZXNjcmlwdGlvbicsIDE1MCwgc2hvcnRjdXQuZGVzY3JpcHRpb24pO1xuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVJdGVtcygnc2xhc2ggY29tbWFuZHMnLCA1LCBwcm9wcy5zbGFzaENvbW1hbmRzKTtcbiAgICBwcm9wcy5zbGFzaENvbW1hbmRzPy5mb3JFYWNoKChjb21tYW5kKSA9PiB7XG4gICAgICB2YWxpZGF0ZUxlbmd0aCgnc2xhc2ggY29tbWFuZCcsIDMyLCBjb21tYW5kLmNvbW1hbmQpO1xuICAgICAgdmFsaWRhdGVMZW5ndGgoJ3NsYXNoIGNvbW1hbmQgZGVzY3JpcHRpb24nLCAyMDAwLCBjb21tYW5kLmRlc2NyaXB0aW9uKSxcbiAgICAgIHZhbGlkYXRlVXJsKGNvbW1hbmQudXJsKTtcbiAgICAgIHZhbGlkYXRlTGVuZ3RoKCdzbGFzaCBjb21tYW5kIHVzZSBoaW50JywgMTAwMCwgY29tbWFuZC51c2FnZUhpbnQpO1xuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVJdGVtcygnd29ya2Zsb3cgc3RlcHMnLCAxMCwgcHJvcHMud29ya2Zsb3dTdGVwcyk7XG4gICAgcHJvcHMud29ya2Zsb3dTdGVwcz8uZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgdmFsaWRhdGVMZW5ndGgoJ3dvcmtmbG93IHN0ZXAgbmFtZScsIDUwLCBzdGVwLm5hbWUpO1xuICAgICAgdmFsaWRhdGVMZW5ndGgoJ3dvcmtmbG93IHN0ZXAgY2FsbGJhY2sgSUQnLCA1MCwgc3RlcC5jYWxsYmFja0lkKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRlSXRlbXMoJ3VuZnVybHMgZG9tYWlucycsIDUsIHByb3BzLnVuZnVybERvbWFpbnMpO1xuXG4gICAgdmFsaWRhdGVJdGVtcygnT0F1dGggcmVkaXJlY3QgVVJMcycsIDEwMDAsIHByb3BzLm9hdXRoQ29uZmlnPy5yZWRpcmVjdFVybHMpO1xuICAgIHByb3BzLm9hdXRoQ29uZmlnPy5yZWRpcmVjdFVybHM/LmZvckVhY2goKHVybCkgPT4ge1xuICAgICAgdmFsaWRhdGVVcmwodXJsLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgdmFsaWRhdGVJdGVtcygnYm90IHNjb3BlcycsIDI1NSwgcHJvcHMub2F1dGhDb25maWc/LmJvdFNjb3Blcyk7XG4gICAgdmFsaWRhdGVJdGVtcygndXNlciBzY29wZXMnLCAyNTUsIHByb3BzLm9hdXRoQ29uZmlnPy51c2VyU2NvcGVzKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoY29uc3RydWN0OiBJQ29uc3RydWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBzY2hlbWE6IFNsYWNrQXBwTWFuaWZlc3RTY2hlbWEgPSB7XG4gICAgICBfbWV0YWRhdGE6IHtcbiAgICAgICAgbWFqb3JfdmVyc2lvbjogdGhpcy5wcm9wcy5tYWpvclZlcnNpb24sXG4gICAgICAgIG1pbm9yX3ZlcnNpb246IHRoaXMucHJvcHMubWlub3JWZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIGRpc3BsYXlfaW5mb3JtYXRpb246IHtcbiAgICAgICAgbmFtZTogdGhpcy5wcm9wcy5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5wcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgbG9uZ19kZXNjcmlwdGlvbjogdGhpcy5wcm9wcy5sb25nRGVzY3JpcHRpb24sXG4gICAgICAgIGJhY2tncm91bmRfY29sb3I6IHByZWZpeFdpdGgoJyMnLCB0aGlzLnByb3BzLmJhY2tncm91bmRDb2xvcik/LnRvTG93ZXJDYXNlKCksXG4gICAgICB9LFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgYWxsb3dlZF9pcF9hZGRyZXNzX3JhbmdlczogdGhpcy5wcm9wcy5hbGxvd2VkSXBBZGRyZXNzUmFuZ2VzLFxuICAgICAgICBldmVudF9zdWJzY3JpcHRpb25zOiB7XG4gICAgICAgICAgcmVxdWVzdF91cmw6IHRoaXMucHJvcHMuZXZlbnRTdWJzY3JpcHRpb25zPy5yZXF1ZXN0VXJsLFxuICAgICAgICAgIGJvdF9ldmVudHM6IHRoaXMucHJvcHMuZXZlbnRTdWJzY3JpcHRpb25zPy5ib3RFdmVudHMsXG4gICAgICAgICAgdXNlcl9ldmVudHM6IHRoaXMucHJvcHMuZXZlbnRTdWJzY3JpcHRpb25zPy51c2VyRXZlbnRzLFxuICAgICAgICB9LFxuICAgICAgICBpbnRlcmFjdGl2aXR5OiB0aGlzLnByb3BzLmludGVyYWN0aXZpdHlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIGlzX2VuYWJsZWQ6IHRoaXMucHJvcHMuaW50ZXJhY3Rpdml0eT8uZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICAgICAgcmVxdWVzdF91cmw6IHRoaXMucHJvcHMuaW50ZXJhY3Rpdml0eT8ucmVxdWVzdFVybCxcbiAgICAgICAgICAgIG1lc3NhZ2VfbWVudV9vcHRpb25zX3VybDogdGhpcy5wcm9wcy5pbnRlcmFjdGl2aXR5Py5tZXNzYWdlTWVudU9wdGlvbnNVcmwsXG4gICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBvcmdfZGVwbG95X2VuYWJsZWQ6IHRoaXMucHJvcHMub3JnRGVwbG95LFxuICAgICAgICBzb2NrZXRfbW9kZV9lbmFibGVkOiB0aGlzLnByb3BzLnNvY2tldE1vZGUsXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgYXBwX2hvbWU6IHtcbiAgICAgICAgICBob21lX3RhYl9lbmFibGVkOiB0aGlzLnByb3BzLmFwcEhvbWU/LmhvbWVUYWIsXG4gICAgICAgICAgbWVzc2FnZXNfdGFiX2VuYWJsZWQ6IHRoaXMucHJvcHMuYXBwSG9tZT8ubWVzc2FnZXNUYWIsXG4gICAgICAgICAgbWVzc2FnZXNfdGFiX3JlYWRfb25seV9lbmFibGVkOiB0aGlzLnByb3BzLmFwcEhvbWU/Lm1lc3NhZ2VzVGFiUmVhZE9ubHksXG4gICAgICAgIH0sXG4gICAgICAgIGJvdF91c2VyOiB0aGlzLnByb3BzLmJvdFVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIGRpc3BsYXlfbmFtZTogdGhpcy5wcm9wcy5ib3RVc2VyPy5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIGFsd2F5c19vbmxpbmU6IHRoaXMucHJvcHMuYm90VXNlcj8uYWx3YXlzT25saW5lLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgc2hvcnRjdXRzOiB0aGlzLnByb3BzLnNob3J0Y3V0cz8ubWFwKChzaG9ydGN1dCkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzaG9ydGN1dC5uYW1lLFxuICAgICAgICAgIHR5cGU6IHNob3J0Y3V0LnR5cGUsXG4gICAgICAgICAgY2FsbGJhY2tfaWQ6IHNob3J0Y3V0LmNhbGxiYWNrSWQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHNob3J0Y3V0LmRlc2NyaXB0aW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHNsYXNoX2NvbW1hbmRzOiB0aGlzLnByb3BzLnNsYXNoQ29tbWFuZHM/Lm1hcCgoY29tbWFuZCkgPT4gKHtcbiAgICAgICAgICBjb21tYW5kOiBwcmVmaXhXaXRoKCcvJywgY29tbWFuZC5jb21tYW5kKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogY29tbWFuZC5kZXNjcmlwdGlvbixcbiAgICAgICAgICB1cmw6IGNvbW1hbmQudXJsLFxuICAgICAgICAgIHVzYWdlX2hpbnQ6IGNvbW1hbmQudXNhZ2VIaW50LFxuICAgICAgICAgIHNob3VsZF9lc2NhcGU6IGNvbW1hbmQuc2hvdWxkRXNjYXBlLFxuICAgICAgICB9KSksXG4gICAgICAgIHdvcmtmbG93X3N0ZXBzOiB0aGlzLnByb3BzLndvcmtmbG93U3RlcHM/Lm1hcCgoc3RlcCkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzdGVwLm5hbWUsXG4gICAgICAgICAgY2FsbGJhY2tfaWQ6IHN0ZXAuY2FsbGJhY2tJZCxcbiAgICAgICAgfSkpLFxuICAgICAgICB1bmZ1cmxfZG9tYWluczogdGhpcy5wcm9wcy51bmZ1cmxEb21haW5zLFxuICAgICAgfSxcbiAgICAgIG9hdXRoX2NvbmZpZzoge1xuICAgICAgICByZWRpcmVjdF91cmxzOiB0aGlzLnByb3BzLm9hdXRoQ29uZmlnPy5yZWRpcmVjdFVybHMsXG4gICAgICAgIHNjb3Blczoge1xuICAgICAgICAgIGJvdDogdGhpcy5wcm9wcy5vYXV0aENvbmZpZz8uYm90U2NvcGVzLFxuICAgICAgICAgIHVzZXJzOiB0aGlzLnByb3BzLm9hdXRoQ29uZmlnPy51c2VyU2NvcGVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIFN0YWNrLm9mKGNvbnN0cnVjdCkudG9Kc29uU3RyaW5nKHJlbW92ZVVuZGVmaW5lZChzY2hlbWEpKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgU2xhY2tBcHBNYW5pZmVzdFNjaGVtYSB7XG4gIF9tZXRhZGF0YT86IHtcbiAgICBtYWpvcl92ZXJzaW9uPzogbnVtYmVyO1xuICAgIG1pbm9yX3ZlcnNpb24/OiBudW1iZXI7XG4gIH07XG4gIGRpc3BsYXlfaW5mb3JtYXRpb246IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbG9uZ19kZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBiYWNrZ3JvdW5kX2NvbG9yPzogc3RyaW5nO1xuICB9O1xuICBzZXR0aW5ncz86IHtcbiAgICBhbGxvd2VkX2lwX2FkZHJlc3NfcmFuZ2VzPzogc3RyaW5nW107XG4gICAgZXZlbnRfc3Vic2NyaXB0aW9ucz86IHtcbiAgICAgIHJlcXVlc3RfdXJsPzogc3RyaW5nO1xuICAgICAgYm90X2V2ZW50cz86IHN0cmluZ1tdO1xuICAgICAgdXNlcl9ldmVudHM/OiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGludGVyYWN0aXZpdHk/OiB7XG4gICAgICBpc19lbmFibGVkOiBib29sZWFuO1xuICAgICAgcmVxdWVzdF91cmw/OiBzdHJpbmc7XG4gICAgICBtZXNzYWdlX21lbnVfb3B0aW9uc191cmw/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBvcmdfZGVwbG95X2VuYWJsZWQ/OiBib29sZWFuO1xuICAgIHNvY2tldF9tb2RlX2VuYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuICBmZWF0dXJlcz86IHtcbiAgICBhcHBfaG9tZT86IHtcbiAgICAgIGhvbWVfdGFiX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgbWVzc2FnZXNfdGFiX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgbWVzc2FnZXNfdGFiX3JlYWRfb25seV9lbmFibGVkPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIGJvdF91c2VyPzoge1xuICAgICAgZGlzcGxheV9uYW1lOiBzdHJpbmc7XG4gICAgICBhbHdheXNfb25saW5lPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHNob3J0Y3V0cz86IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgIGNhbGxiYWNrX2lkOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIH1bXTtcbiAgICBzbGFzaF9jb21tYW5kcz86IHtcbiAgICAgIGNvbW1hbmQ6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICB1cmw/OiBzdHJpbmc7XG4gICAgICB1c2FnZV9oaW50Pzogc3RyaW5nO1xuICAgICAgc2hvdWxkX2VzY2FwZT86IGJvb2xlYW47XG4gICAgfVtdO1xuICAgIHdvcmtmbG93X3N0ZXBzPzoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgY2FsbGJhY2tfaWQ6IHN0cmluZztcbiAgICB9W107XG4gICAgdW5mdXJsX2RvbWFpbnM/OiBzdHJpbmdbXTtcbiAgfTtcbiAgb2F1dGhfY29uZmlnPzoge1xuICAgIHJlZGlyZWN0X3VybHM/OiBzdHJpbmdbXTtcbiAgICBzY29wZXM/OiB7XG4gICAgICBib3Q/OiBzdHJpbmdbXTtcbiAgICAgIHVzZXJzPzogc3RyaW5nW107XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJlZml4V2l0aDxUIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkPihwcmVmaXg6IHN0cmluZywgc3RyaW5nOiBUKTogVCB7XG4gIGlmICghc3RyaW5nKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBUO1xuICB9XG5cbiAgaWYgKHN0cmluZy5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGAke3ByZWZpeH0ke3N0cmluZ31gIGFzIFQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTGVuZ3RoKGRlc2NyaXB0aW9uOiBzdHJpbmcsIG1heDogbnVtYmVyLCB4cz86IHN0cmluZyk6IHZvaWQge1xuICBpZiAoeHMgJiYgIVRva2VuLmlzVW5yZXNvbHZlZCh4cykgJiYgeHMubGVuZ3RoID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNYXhpbXVtIGxlbmd0aCBmb3IgJHtkZXNjcmlwdGlvbn0gaXMgJHttYXh9LCBnb3QgJHt4cy5sZW5ndGh9OiAke3hzfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSXRlbXM8VD4oZGVzY3JpcHRpb246IHN0cmluZywgbWF4OiBudW1iZXIsIHhzPzogVFtdKTogdm9pZCB7XG4gIGlmICh4cyAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHhzKSAmJiB4cy5sZW5ndGggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGZvciAke2Rlc2NyaXB0aW9ufSBpcyAke21heH0sIGdvdCAke3hzLmxlbmd0aH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbG9yKGNvbG9yPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChjb2xvciAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGNvbG9yKSAmJiAhL14jPyhbMC05YS1mQS1GXXszfXxbMC05YS1mQS1GXXs2fSkkLy50ZXN0KGNvbG9yKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBoZXggY29sb3I6ICR7Y29sb3J9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVVcmwodXJsPzogc3RyaW5nLCBodHRwcyA9IHRydWUpOiB2b2lkIHtcbiAgaWYgKHVybCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHVybCkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gbmV3IG5vZGVVcmwuVVJMKHVybCk7XG4gICAgICBpZiAoaHR0cHMgJiYgcGFyc2VkLnByb3RvY29sICE9PSAnaHR0cHM6Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJvdG9jb2wnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt1cmx9IGlzIG5vdCBhIHZhbGlkJHtodHRwcyA/ICcgSFRUUFMnIDogJyd9IHVybGApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVVbmRlZmluZWQob2JqOiBhbnkpOiBhbnkge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIGNvbnN0IHJldCA9IG9ialxuICAgICAgLm1hcCh2ID0+ICh2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JykgPyByZW1vdmVVbmRlZmluZWQodikgOiB2KVxuICAgICAgLmZpbHRlcih2ID0+ICEodiA9PSBudWxsKSk7XG4gICAgcmV0dXJuIHJldC5sZW5ndGggIT09IDAgPyByZXQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCByZXQgPSBPYmplY3QuZW50cmllcyhvYmopXG4gICAgLm1hcCgoW2ssIHZdKSA9PiBbaywgdiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyByZW1vdmVVbmRlZmluZWQodikgOiB2XSlcbiAgICAucmVkdWNlKChhOiBhbnksIFtrLCB2XSkgPT4gKHYgPT0gbnVsbCA/IGEgOiAoYVtrXT12LCBhKSksIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHJldCkubGVuZ3RoICE9PSAwID8gcmV0IDogdW5kZWZpbmVkO1xufVxuIl19
@@ -43,10 +43,11 @@ async function handler(event) {
43
43
  console.log(`Successfully saved access token in secret ${putSecretValue.ARN}`);
44
44
  }
45
45
  const operation = event.RequestType.toLowerCase();
46
- console.log('Calling manifest API');
46
+ const request = getManifestRequest(event);
47
+ console.log(`Calling ${operation} manifest API: %j`, request);
47
48
  const response = await slackClient.post(`apps.manifest.${operation}`, {
48
49
  headers: { Authorization: `Bearer ${accessToken}` },
49
- json: getManifestRequest(event),
50
+ json: request,
50
51
  }).json();
51
52
  if (!response.ok) {
52
53
  const errors = response.errors
@@ -97,4 +98,4 @@ function getManifestRequest(event) {
97
98
  };
98
99
  }
99
100
  }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbGFjay1hcHAvcHJvdmlkZXIuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxQ0FBeUMsQ0FBQyx3REFBd0Q7QUFDbEcsNkJBQXNCO0FBaUR0QixNQUFNLGNBQWMsR0FBRyxJQUFJLHdCQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUV4RSxNQUFNLFdBQVcsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO0lBQzdCLFNBQVMsRUFBRSx1QkFBdUI7Q0FDbkMsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFxQjs7SUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQy9DLFFBQVEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCO0tBQy9ELENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUViLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztLQUN6RTtJQUVELE1BQU0sTUFBTSxHQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUxRCxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBRXJDLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxPQUFDLE1BQU0sQ0FBQyxHQUFHLG1DQUFJLENBQUMsQ0FBQyxFQUFFO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztTQUN6RTtRQUVELE9BQU8sQ0FBQyxHQUFH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QUFXLENBQUMsYUFBYTtnQkFDaEQsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0I7Z0JBQzFELGFBQWEsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLGNBQWM7YUFDbkQsQ0FBQztTQUNILENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0RBQWdELGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ25GO0lBRUQsT0FBTztRQUNMLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxNQUFNO1FBQ25DLElBQUksRUFBRTtZQUNKLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTTtTQUN2QjtLQUNGLENBQUM7QUFDSixDQUFDO0FBakZELDBCQWlGQztBQUVELFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDNUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFxQjtJQUMvQyxRQUFRLEtBQUssQ0FBQyxXQUFXLEVBQUU7UUFDekIsS0FBSyxRQUFRO1lBQ1gsT0FBTztnQkFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQVE7YUFDNUMsQ0FBQztRQUNKLEtBQUssUUFBUTtZQUNYLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUTthQUM1QyxDQUFDO1FBQ0osS0FBSyxRQUFRO1lBQ1gsT0FBTztnQkFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFtQjthQUNsQyxDQUFDO0tBQ0w7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgT25FdmVudFJlcXVlc3QsIE9uRXZlbnRSZXNwb25zZSB9IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMvbGliL3Byb3ZpZGVyLWZyYW1ld29yay90eXBlcyc7XG5pbXBvcnQgeyBTZWNyZXRzTWFuYWdlciB9IGZyb20gJ2F3cy1zZGsnOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IGdvdCBmcm9tICdnb3QnO1xuXG5pbnRlcmZhY2UgU2xhY2tTZWNyZXQge1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBleHA/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSb3RhdGVSZXNwb25zZSB7XG4gIG9rOiBib29sZWFuO1xuICBlcnJvcj86IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICB0ZWFtX2lkOiBzdHJpbmc7XG4gIHVzZXJfaWQ6IHN0cmluZztcbiAgaWF0OiBudW1iZXI7XG4gIGV4cDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTWFuaWZlc3RDcmVhdGVSZXF1ZXN0IHtcbiAgbWFuaWZlc3Q6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE1hbmlmZXN0VXBkYXRlUmVxdWVzdCBleHRlbmRzIE1hbmlmZXN0Q3JlYXRlUmVxdWVzdCB7XG4gIGFwcF9pZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWFuaWZlc3REZWxldGVSZXF1ZXN0IHtcbiAgYXBwX2lkOiBzdHJpbmc7XG59XG5cbnR5cGUgTWFuaWZlc3RSZXF1ZXN0ID0gTWFuaWZlc3RDcmVhdGVSZXF1ZXN0IHwgTWFuaWZlc3RVcGRhdGVSZXF1ZXN0IHwgTWFuaWZlc3REZWxldGVSZXF1ZXN0O1xuXG5pbnRlcmZhY2UgTWFuaWZlc3RSZXNwb25zZSB7XG4gIG9rOiBib29sZWFuO1xuICBlcnJvcj86IHN0cmluZztcbiAgZXJyb3JzPzoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBwb2ludGVyOiBzdHJpbmc7XG4gIH1bXTtcbiAgYXBwX2lkPzogc3RyaW5nO1xuICBjcmVkZW50aWFscz86IHtcbiAgICBjbGllbnRfaWQ6IHN0cmluZztcbiAgICBjbGllbnRfc2VjcmV0OiBzdHJpbmc7XG4gICAgdmVyaWZpY2F0aW9uX3Rva2VuOiBzdHJpbmc7XG4gICAgc2lnbmluZ19zZWNyZXQ6IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3Qgc2VjcmV0c21hbmFnZXIgPSBuZXcgU2VjcmV0c01hbmFnZXIoeyBhcGlWZXJzaW9uOiAnMjAxNy0xMC0xNycgfSk7XG5cbmNvbnN0IHNsYWNrQ2xpZW50ID0gZ290LmV4dGVuZCh7XG4gIHByZWZpeFVybDogJ2h0dHBzOi8vc2xhY2suY29tL2FwaScsXG59KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IE9uRXZlbnRSZXF1ZXN0KTogUHJvbWlzZTxPbkV2ZW50UmVzcG9uc2U+IHtcbiAgY29uc29sZS5sb2coJ0V2ZW50OiAlaicsIGV2ZW50KTtcblxuICBjb25zdCBkYXRhID0gYXdhaXQgc2VjcmV0c21hbmFnZXIuZ2V0U2VjcmV0VmFsdWUoe1xuICAgIFNlY3JldElkOiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuY29uZmlndXJhdGlvblRva2VuU2VjcmV0QXJuLFxuICB9KS5wcm9taXNlKCk7XG5cbiAgaWYgKCFkYXRhLlNlY3JldFN0cmluZykge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gc2VjcmV0IHN0cmluZyBmb3VuZCBpbiBjb25maWd1cmF0aW9uIHRva2VuIHNlY3JldCcpO1xuICB9XG5cbiAgY29uc3Qgc2VjcmV0OiBTbGFja1NlY3JldCA9IEpTT04ucGFyc2UoZGF0YS5TZWNyZXRTdHJpbmcpO1xuXG4gIGxldCBhY2Nlc3NUb2tlbiA9IHNlY3JldC5hY2Nlc3NUb2tlbjtcblxuICBpZiAoIWFjY2Vzc1Rva2VuIHx8IGlzRXhwaXJlZChzZWNyZXQuZXhwID8/IDApKSB7XG4gICAgaWYgKCFzZWNyZXQucmVmcmVzaFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlZnJlc2ggdG9rZW4gZm91bmQgaW4gY29uZmlndXJhdGlvbiB0b2tlbiBzZWNyZXQnKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4nKTtcbiAgICBjb25zdCByb3RhdGUgPSBhd2FpdCBzbGFja0NsaWVudC5nZXQoJ3Rvb2xpbmcudG9rZW5zLnJvdGF0ZScsIHtcbiAgICAgIHNlYXJjaFBhcmFtczogeyByZWZyZXNoX3Rva2VuOiBzZWNyZXQucmVmcmVzaFRva2VuIH0sXG4gICAgfSkuanNvbjxSb3RhdGVSZXNwb25zZT4oKTtcblxuICAgIGlmICghcm90YXRlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZWZyZXNoIGFjY2VzcyB0b2tlbjogJHtyb3RhdGUuZXJyb3J9YCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdBY2Nlc3MgdG9rZW4gcmVmcmVzaGVkJyk7XG5cbiAgICBhY2Nlc3NUb2tlbiA9IHJvdGF0ZS50b2tlbjtcblxuICAgIGNvbnNvbGUubG9nKCdTYXZpbmcgYWNjZXNzIHRva2VuJyk7XG4gICAgY29uc3QgcHV0U2VjcmV0VmFsdWUgPSBhd2FpdCBzZWNyZXRzbWFuYWdlci5wdXRTZWNyZXRWYWx1ZSh7XG4gICAgICBTZWNyZXRJZDogZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLmNvbmZpZ3VyYXRpb25Ub2tlblNlY3JldEFybixcbiAgICAgIFNlY3JldFN0cmluZzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhY2Nlc3NUb2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiByb3RhdGUucmVmcmVzaF90b2tlbixcbiAgICAgICAgZXhwOiByb3RhdGUuZXhwLFxuICAgICAgfSksXG4gICAgfSkucHJvbWlzZSgpO1xuICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgc2F2ZWQgYWNjZXNzIHRva2VuIGluIHNlY3JldCAke3B1dFNlY3JldFZhbHVlLkFSTn1gKTtcbiAgfVxuXG4gIGNvbnN0IG9wZXJhdGlvbiA9IGV2ZW50LlJlcXVlc3RUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnNvbGUubG9nKCdDYWxsaW5nIG1hbmlmZXN0IEFQSScpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNsYWNrQ2xpZW50LnBvc3QoYGFwcHMubWFuaWZlc3QuJHtvcGVyYXRpb259YCwge1xuICAgIGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAgfSxcbiAgICBqc29uOiBnZXRNYW5pZmVzdFJlcXVlc3QoZXZlbnQpLFxuICB9KS5qc29uPE1hbmlmZXN0UmVzcG9uc2U+KCk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIGNvbnN0IGVycm9ycyA9IHJlc3BvbnNlLmVycm9yc1xuICAgICAgPyByZXNwb25zZS5lcnJvcnMubWFwKChlcnIpID0+IGAke2Vyci5tZXNzYWdlfSBhdCAke2Vyci5wb2ludGVyfWApLmpvaW4oJ1xcbicpXG4gICAgICA6ICcnO1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvICR7b3BlcmF0aW9ufSBtYW5pZmVzdDogJHtyZXNwb25zZS5lcnJvcn0uJHtlcnJvcnMgPyBgXFxuJHtlcnJvcnN9fWAgOiAnJ31gKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgJHtvcGVyYXRpb259ZCBTbGFjayBhcHAgJHtldmVudC5QaHlzaWNhbFJlc291cmNlSWQgPz8gcmVzcG9uc2UuYXBwX2lkfWApO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0NyZWF0ZScgJiYgcmVzcG9uc2UuY3JlZGVudGlhbHMpIHtcbiAgICBjb25zb2xlLmxvZygnU2F2aW5nIGFwcCBjcmVkZW50aWFscycpO1xuICAgIGNvbnN0IHB1dFNlY3JldFZhbHVlID0gYXdhaXQgc2VjcmV0c21hbmFnZXIucHV0U2VjcmV0VmFsdWUoe1xuICAgICAgU2VjcmV0SWQ6IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5jcmVkZW50aWFsc1NlY3JldEFybixcbiAgICAgIFNlY3JldFN0cmluZzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhcHBJZDogcmVzcG9uc2UuYXBwX2lkLFxuICAgICAgICBjbGllbnRJZDogcmVzcG9uc2UuY3JlZGVudGlhbHMuY2xpZW50X2lkLFxuICAgICAgICBjbGllbnRTZWNyZXQ6IHJlc3BvbnNlLmNyZWRlbnRpYWxzLmNsaWVudF9zZWNyZXQsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiByZXNwb25zZS5jcmVkZW50aWFscy52ZXJpZmljYXRpb25fdG9rZW4sXG4gICAgICAgIHNpZ25pbmdTZWNyZXQ6IHJlc3BvbnNlLmNyZWRlbnRpYWxzLnNpZ25pbmdfc2VjcmV0LFxuICAgICAgfSksXG4gICAgfSkucHJvbWlzZSgpO1xuICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgc2F2ZWQgYXBwIGNyZWRlbnRpYWxzIGluIHNlY3JldCAke3B1dFNlY3JldFZhbHVlLkFSTn1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgUGh5c2ljYWxSZXNvdXJjZUlkOiByZXNwb25zZS5hcHBfaWQsXG4gICAgRGF0YToge1xuICAgICAgYXBwSWQ6IHJlc3BvbnNlLmFwcF9pZCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0V4cGlyZWQoaWF0OiBudW1iZXIpIHtcbiAgcmV0dXJuIChpYXQgLSAoRGF0ZS5ub3coKSAvIDEwMDApKSA8IDA7XG59XG5cbmZ1bmN0aW9uIGdldE1hbmlmZXN0UmVxdWVzdChldmVudDogT25FdmVudFJlcXVlc3QpOiBNYW5pZmVzdFJlcXVlc3Qge1xuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hbmlmZXN0OiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMubWFuaWZlc3QsXG4gICAgICB9O1xuICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhcHBfaWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICAgbWFuaWZlc3Q6IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5tYW5pZmVzdCxcbiAgICAgIH07XG4gICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFwcF9pZDogZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkISxcbiAgICAgIH07XG4gIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbGFjay1hcHAvcHJvdmlkZXIuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxQ0FBeUMsQ0FBQyx3REFBd0Q7QUFDbEcsNkJBQXNCO0FBaUR0QixNQUFNLGNBQWMsR0FBRyxJQUFJLHdCQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUV4RSxNQUFNLFdBQVcsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO0lBQzdCLFNBQVMsRUFBRSx1QkFBdUI7Q0FDbkMsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFxQjs7SUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQy9DLFFBQVEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCO0tBQy9ELENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUViLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztLQUN6RTtJQUVELE1BQU0sTUFBTSxHQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUxRCxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBRXJDLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxPQUFDLE1BQU0sQ0FBQyxHQUFHLG1DQUFJLENBQUMsQ0FBQyxFQUFFO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztTQUN6RTtRQUVELE9BQU8sQ0FBQyxHQUFH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bXBvcnQgeyBPbkV2ZW50UmVxdWVzdCwgT25FdmVudFJlc3BvbnNlIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcy9saWIvcHJvdmlkZXItZnJhbWV3b3JrL3R5cGVzJztcbmltcG9ydCB7IFNlY3JldHNNYW5hZ2VyIH0gZnJvbSAnYXdzLXNkayc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgZ290IGZyb20gJ2dvdCc7XG5cbmludGVyZmFjZSBTbGFja1NlY3JldCB7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGV4cD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJvdGF0ZVJlc3BvbnNlIHtcbiAgb2s6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nO1xuICB0b2tlbjogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gIHRlYW1faWQ6IHN0cmluZztcbiAgdXNlcl9pZDogc3RyaW5nO1xuICBpYXQ6IG51bWJlcjtcbiAgZXhwOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBNYW5pZmVzdENyZWF0ZVJlcXVlc3Qge1xuICBtYW5pZmVzdDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWFuaWZlc3RVcGRhdGVSZXF1ZXN0IGV4dGVuZHMgTWFuaWZlc3RDcmVhdGVSZXF1ZXN0IHtcbiAgYXBwX2lkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBNYW5pZmVzdERlbGV0ZVJlcXVlc3Qge1xuICBhcHBfaWQ6IHN0cmluZztcbn1cblxudHlwZSBNYW5pZmVzdFJlcXVlc3QgPSBNYW5pZmVzdENyZWF0ZVJlcXVlc3QgfCBNYW5pZmVzdFVwZGF0ZVJlcXVlc3QgfCBNYW5pZmVzdERlbGV0ZVJlcXVlc3Q7XG5cbmludGVyZmFjZSBNYW5pZmVzdFJlc3BvbnNlIHtcbiAgb2s6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nO1xuICBlcnJvcnM/OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHBvaW50ZXI6IHN0cmluZztcbiAgfVtdO1xuICBhcHBfaWQ/OiBzdHJpbmc7XG4gIGNyZWRlbnRpYWxzPzoge1xuICAgIGNsaWVudF9pZDogc3RyaW5nO1xuICAgIGNsaWVudF9zZWNyZXQ6IHN0cmluZztcbiAgICB2ZXJpZmljYXRpb25fdG9rZW46IHN0cmluZztcbiAgICBzaWduaW5nX3NlY3JldDogc3RyaW5nO1xuICB9O1xufVxuXG5jb25zdCBzZWNyZXRzbWFuYWdlciA9IG5ldyBTZWNyZXRzTWFuYWdlcih7IGFwaVZlcnNpb246ICcyMDE3LTEwLTE3JyB9KTtcblxuY29uc3Qgc2xhY2tDbGllbnQgPSBnb3QuZXh0ZW5kKHtcbiAgcHJlZml4VXJsOiAnaHR0cHM6Ly9zbGFjay5jb20vYXBpJyxcbn0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogT25FdmVudFJlcXVlc3QpOiBQcm9taXNlPE9uRXZlbnRSZXNwb25zZT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6ICVqJywgZXZlbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBzZWNyZXRzbWFuYWdlci5nZXRTZWNyZXRWYWx1ZSh7XG4gICAgU2VjcmV0SWQ6IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5jb25maWd1cmF0aW9uVG9rZW5TZWNyZXRBcm4sXG4gIH0pLnByb21pc2UoKTtcblxuICBpZiAoIWRhdGEuU2VjcmV0U3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBzZWNyZXQgc3RyaW5nIGZvdW5kIGluIGNvbmZpZ3VyYXRpb24gdG9rZW4gc2VjcmV0Jyk7XG4gIH1cblxuICBjb25zdCBzZWNyZXQ6IFNsYWNrU2VjcmV0ID0gSlNPTi5wYXJzZShkYXRhLlNlY3JldFN0cmluZyk7XG5cbiAgbGV0IGFjY2Vzc1Rva2VuID0gc2VjcmV0LmFjY2Vzc1Rva2VuO1xuXG4gIGlmICghYWNjZXNzVG9rZW4gfHwgaXNFeHBpcmVkKHNlY3JldC5leHAgPz8gMCkpIHtcbiAgICBpZiAoIXNlY3JldC5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVmcmVzaCB0b2tlbiBmb3VuZCBpbiBjb25maWd1cmF0aW9uIHRva2VuIHNlY3JldCcpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbicpO1xuICAgIGNvbnN0IHJvdGF0ZSA9IGF3YWl0IHNsYWNrQ2xpZW50LmdldCgndG9vbGluZy50b2tlbnMucm90YXRlJywge1xuICAgICAgc2VhcmNoUGFyYW1zOiB7IHJlZnJlc2hfdG9rZW46IHNlY3JldC5yZWZyZXNoVG9rZW4gfSxcbiAgICB9KS5qc29uPFJvdGF0ZVJlc3BvbnNlPigpO1xuXG4gICAgaWYgKCFyb3RhdGUub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlZnJlc2ggYWNjZXNzIHRva2VuOiAke3JvdGF0ZS5lcnJvcn1gKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ0FjY2VzcyB0b2tlbiByZWZyZXNoZWQnKTtcblxuICAgIGFjY2Vzc1Rva2VuID0gcm90YXRlLnRva2VuO1xuXG4gICAgY29uc29sZS5sb2coJ1NhdmluZyBhY2Nlc3MgdG9rZW4nKTtcbiAgICBjb25zdCBwdXRTZWNyZXRWYWx1ZSA9IGF3YWl0IHNlY3JldHNtYW5hZ2VyLnB1dFNlY3JldFZhbHVlKHtcbiAgICAgIFNlY3JldElkOiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuY29uZmlndXJhdGlvblRva2VuU2VjcmV0QXJuLFxuICAgICAgU2VjcmV0U3RyaW5nOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IHJvdGF0ZS5yZWZyZXNoX3Rva2VuLFxuICAgICAgICBleHA6IHJvdGF0ZS5leHAsXG4gICAgICB9KSxcbiAgICB9KS5wcm9taXNlKCk7XG4gICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBzYXZlZCBhY2Nlc3MgdG9rZW4gaW4gc2VjcmV0ICR7cHV0U2VjcmV0VmFsdWUuQVJOfWApO1xuICB9XG5cbiAgY29uc3Qgb3BlcmF0aW9uID0gZXZlbnQuUmVxdWVzdFR5cGUudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgcmVxdWVzdCA9IGdldE1hbmlmZXN0UmVxdWVzdChldmVudCk7XG5cbiAgY29uc29sZS5sb2coYENhbGxpbmcgJHtvcGVyYXRpb259IG1hbmlmZXN0IEFQSTogJWpgLCByZXF1ZXN0KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzbGFja0NsaWVudC5wb3N0KGBhcHBzLm1hbmlmZXN0LiR7b3BlcmF0aW9ufWAsIHtcbiAgICBoZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gIH0sXG4gICAganNvbjogcmVxdWVzdCxcbiAgfSkuanNvbjxNYW5pZmVzdFJlc3BvbnNlPigpO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICBjb25zdCBlcnJvcnMgPSByZXNwb25zZS5lcnJvcnNcbiAgICAgID8gcmVzcG9uc2UuZXJyb3JzLm1hcCgoZXJyKSA9PiBgJHtlcnIubWVzc2FnZX0gYXQgJHtlcnIucG9pbnRlcn1gKS5qb2luKCdcXG4nKVxuICAgICAgOiAnJztcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byAke29wZXJhdGlvbn0gbWFuaWZlc3Q6ICR7cmVzcG9uc2UuZXJyb3J9LiR7ZXJyb3JzID8gYFxcbiR7ZXJyb3JzfX1gIDogJyd9YCk7XG4gIH1cblxuICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5ICR7b3BlcmF0aW9ufWQgU2xhY2sgYXBwICR7ZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID8/IHJlc3BvbnNlLmFwcF9pZH1gKTtcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdDcmVhdGUnICYmIHJlc3BvbnNlLmNyZWRlbnRpYWxzKSB7XG4gICAgY29uc29sZS5sb2coJ1NhdmluZyBhcHAgY3JlZGVudGlhbHMnKTtcbiAgICBjb25zdCBwdXRTZWNyZXRWYWx1ZSA9IGF3YWl0IHNlY3JldHNtYW5hZ2VyLnB1dFNlY3JldFZhbHVlKHtcbiAgICAgIFNlY3JldElkOiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuY3JlZGVudGlhbHNTZWNyZXRBcm4sXG4gICAgICBTZWNyZXRTdHJpbmc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgYXBwSWQ6IHJlc3BvbnNlLmFwcF9pZCxcbiAgICAgICAgY2xpZW50SWQ6IHJlc3BvbnNlLmNyZWRlbnRpYWxzLmNsaWVudF9pZCxcbiAgICAgICAgY2xpZW50U2VjcmV0OiByZXNwb25zZS5jcmVkZW50aWFscy5jbGllbnRfc2VjcmV0LFxuICAgICAgICB2ZXJpZmljYXRpb25Ub2tlbjogcmVzcG9uc2UuY3JlZGVudGlhbHMudmVyaWZpY2F0aW9uX3Rva2VuLFxuICAgICAgICBzaWduaW5nU2VjcmV0OiByZXNwb25zZS5jcmVkZW50aWFscy5zaWduaW5nX3NlY3JldCxcbiAgICAgIH0pLFxuICAgIH0pLnByb21pc2UoKTtcbiAgICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IHNhdmVkIGFwcCBjcmVkZW50aWFscyBpbiBzZWNyZXQgJHtwdXRTZWNyZXRWYWx1ZS5BUk59YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcmVzcG9uc2UuYXBwX2lkLFxuICAgIERhdGE6IHtcbiAgICAgIGFwcElkOiByZXNwb25zZS5hcHBfaWQsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNFeHBpcmVkKGlhdDogbnVtYmVyKSB7XG4gIHJldHVybiAoaWF0IC0gKERhdGUubm93KCkgLyAxMDAwKSkgPCAwO1xufVxuXG5mdW5jdGlvbiBnZXRNYW5pZmVzdFJlcXVlc3QoZXZlbnQ6IE9uRXZlbnRSZXF1ZXN0KTogTWFuaWZlc3RSZXF1ZXN0IHtcbiAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgJ0NyZWF0ZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYW5pZmVzdDogZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLm1hbmlmZXN0LFxuICAgICAgfTtcbiAgICBjYXNlICdVcGRhdGUnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXBwX2lkOiBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICAgIG1hbmlmZXN0OiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMubWFuaWZlc3QsXG4gICAgICB9O1xuICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhcHBfaWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCEsXG4gICAgICB9O1xuICB9XG59XG4iXX0=
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SlackAppProvider = void 0;
4
4
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const lambda = require("aws-cdk-lib/aws-lambda");
6
5
  const nodejs = require("aws-cdk-lib/aws-lambda-nodejs");
7
6
  const logs = require("aws-cdk-lib/aws-logs");
8
7
  const cr = require("aws-cdk-lib/custom-resources");
@@ -11,7 +10,6 @@ class SlackAppProvider extends constructs_1.Construct {
11
10
  constructor(scope, id) {
12
11
  super(scope, id);
13
12
  this.handler = new nodejs.NodejsFunction(this, 'handler', {
14
- runtime: lambda.Runtime.NODEJS_12_X,
15
13
  logRetention: logs.RetentionDays.ONE_MONTH,
16
14
  });
17
15
  const provider = new cr.Provider(this, 'Resource', {
@@ -30,4 +28,4 @@ class SlackAppProvider extends constructs_1.Construct {
30
28
  }
31
29
  }
32
30
  exports.SlackAppProvider = SlackAppProvider;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2xhY2stYXBwL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUNwQyxpREFBaUQ7QUFDakQsd0RBQXdEO0FBQ3hELDZDQUE2QztBQUM3QyxtREFBbUQ7QUFDbkQsMkNBQXVDO0FBRXZDLE1BQWEsZ0JBQWlCLFNBQVEsc0JBQVM7SUFjN0MsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztTQUMzQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDN0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzVDLENBQUM7SUExQkQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCOztRQUN4QyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUMvQixhQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBcUIsbUNBQUksSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQW9CRjtBQTVCRCw0Q0E0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIG5vZGVqcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBjbGFzcyBTbGFja0FwcFByb3ZpZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdGFjay1zaW5nbGV0b24gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoc2NvcGU6IENvbnN0cnVjdCk6IFNsYWNrQXBwUHJvdmlkZXIge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIGNvbnN0IHVpZCA9ICdTbGFja0FwcFByb3ZpZGVyJztcbiAgICByZXR1cm4gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQodWlkKSBhcyBTbGFja0FwcFByb3ZpZGVyID8/IG5ldyBTbGFja0FwcFByb3ZpZGVyKHN0YWNrLCB1aWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBoYW5kbGVyOiBub2RlanMuTm9kZWpzRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmhhbmRsZXIgPSBuZXcgbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdoYW5kbGVyJywge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogdGhpcy5oYW5kbGVyLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSBwcm92aWRlci5zZXJ2aWNlVG9rZW47XG4gIH1cbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2xhY2stYXBwL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUNwQyx3REFBd0Q7QUFDeEQsNkNBQTZDO0FBQzdDLG1EQUFtRDtBQUNuRCwyQ0FBdUM7QUFFdkMsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQWM3QyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztTQUMzQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDN0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzVDLENBQUM7SUF6QkQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCOztRQUN4QyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUMvQixhQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBcUIsbUNBQUksSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQW1CRjtBQTNCRCw0Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIG5vZGVqcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBjbGFzcyBTbGFja0FwcFByb3ZpZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdGFjay1zaW5nbGV0b24gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoc2NvcGU6IENvbnN0cnVjdCk6IFNsYWNrQXBwUHJvdmlkZXIge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIGNvbnN0IHVpZCA9ICdTbGFja0FwcFByb3ZpZGVyJztcbiAgICByZXR1cm4gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQodWlkKSBhcyBTbGFja0FwcFByb3ZpZGVyID8/IG5ldyBTbGFja0FwcFByb3ZpZGVyKHN0YWNrLCB1aWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBoYW5kbGVyOiBub2RlanMuTm9kZWpzRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmhhbmRsZXIgPSBuZXcgbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdoYW5kbGVyJywge1xuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHRoaXMuaGFuZGxlcixcbiAgICB9KTtcblxuICAgIHRoaXMuc2VydmljZVRva2VuID0gcHJvdmlkZXIuc2VydmljZVRva2VuO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,127 @@
1
+ import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
2
+ import { Construct, IConstruct } from 'constructs';
3
+ import { SlackAppManifestProps } from './manifest';
4
+ /**
5
+ * Properties for a SlackApp.
6
+ *
7
+ * @stability stable
8
+ */
9
+ export interface SlackAppProps {
10
+ /**
11
+ * The definition of the app manifest.
12
+ *
13
+ * @see https://api.slack.com/reference/manifests
14
+ * @stability stable
15
+ */
16
+ readonly manifest: SlackAppManifestDefinition;
17
+ /**
18
+ * An AWS Secrets Manager secret containing the app configuration token.
19
+ *
20
+ * Must use the following JSON format:
21
+ *
22
+ * ```
23
+ * {
24
+ * "refreshToken": "<token>"
25
+ * }
26
+ * ```
27
+ *
28
+ * @stability stable
29
+ */
30
+ readonly configurationTokenSecret: secretsmanager.ISecret;
31
+ /**
32
+ * The AWS Secrets Manager secret where to store the app credentials.
33
+ *
34
+ * @default - a new secret is created
35
+ * @stability stable
36
+ */
37
+ readonly credentialsSecret?: secretsmanager.ISecret;
38
+ }
39
+ /**
40
+ * A Slack app manifest definition.
41
+ *
42
+ * @stability stable
43
+ */
44
+ export declare abstract class SlackAppManifestDefinition {
45
+ /**
46
+ * Create a Slack app manifest from a JSON app manifest encoded as a string.
47
+ *
48
+ * @stability stable
49
+ */
50
+ static fromString(manifest: string): SlackAppManifestDefinition;
51
+ /**
52
+ * Creates a Slack app manifest from a file containg a JSON app manifest.
53
+ *
54
+ * @stability stable
55
+ */
56
+ static fromFile(file: string): SlackAppManifestDefinition;
57
+ /**
58
+ * Creates a Slack app manifest by specifying properties.
59
+ *
60
+ * @stability stable
61
+ */
62
+ static fromManifest(props: SlackAppManifestProps): SlackAppManifestDefinition;
63
+ /**
64
+ * Renders the JSON app manifest encoded as a string.
65
+ *
66
+ * @stability stable
67
+ */
68
+ abstract render(construct: IConstruct): string;
69
+ }
70
+ /**
71
+ * A Slack application deployed with a manifest.
72
+ *
73
+ * @see https://api.slack.com/reference/manifests
74
+ * @stability stable
75
+ */
76
+ export declare class SlackApp extends Construct {
77
+ /**
78
+ * The ID of the application.
79
+ *
80
+ * @stability stable
81
+ */
82
+ readonly appId: string;
83
+ /**
84
+ * An AWS Secrets Manager secret containing the credentials of the application.
85
+ *
86
+ * ```
87
+ * {
88
+ * "appId": "...",
89
+ * "clientId": "...",
90
+ * "clientSecret": "...",
91
+ * "verificationToken": "...",
92
+ * "signingSecret": "..."
93
+ * }
94
+ * ```
95
+ *
96
+ * @stability stable
97
+ */
98
+ readonly credentials: secretsmanager.ISecret;
99
+ /**
100
+ * A dynamic reference to the client ID of the app.
101
+ *
102
+ * @stability stable
103
+ */
104
+ readonly clientId: string;
105
+ /**
106
+ * A dynamic reference to the client secret of the app.
107
+ *
108
+ * @stability stable
109
+ */
110
+ readonly clientSecret: string;
111
+ /**
112
+ * A dynamic reference to the verification token of the app.
113
+ *
114
+ * @stability stable
115
+ */
116
+ readonly verificationToken: string;
117
+ /**
118
+ * A dynamic reference to the signing secret of the app.
119
+ *
120
+ * @stability stable
121
+ */
122
+ readonly signingSecret: string;
123
+ /**
124
+ * @stability stable
125
+ */
126
+ constructor(scope: Construct, id: string, props: SlackAppProps);
127
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SlackApp = exports.SlackAppManifestDefinition = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const fs = require("fs");
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
+ const secretsmanager = require("aws-cdk-lib/aws-secretsmanager");
9
+ const constructs_1 = require("constructs");
10
+ const manifest_1 = require("./manifest");
11
+ const provider_1 = require("./provider");
12
+ /**
13
+ * A Slack app manifest definition.
14
+ *
15
+ * @stability stable
16
+ */
17
+ class SlackAppManifestDefinition {
18
+ /**
19
+ * Create a Slack app manifest from a JSON app manifest encoded as a string.
20
+ *
21
+ * @stability stable
22
+ */
23
+ static fromString(manifest) {
24
+ return new StringManifest(manifest);
25
+ }
26
+ /**
27
+ * Creates a Slack app manifest from a file containg a JSON app manifest.
28
+ *
29
+ * @stability stable
30
+ */
31
+ static fromFile(file) {
32
+ return new FileManifest(file);
33
+ }
34
+ /**
35
+ * Creates a Slack app manifest by specifying properties.
36
+ *
37
+ * @stability stable
38
+ */
39
+ static fromManifest(props) {
40
+ return new manifest_1.SlackAppManifest(props);
41
+ }
42
+ }
43
+ exports.SlackAppManifestDefinition = SlackAppManifestDefinition;
44
+ _a = JSII_RTTI_SYMBOL_1;
45
+ SlackAppManifestDefinition[_a] = { fqn: "cloudstructs.SlackAppManifestDefinition", version: "0.4.0" };
46
+ class StringManifest extends SlackAppManifestDefinition {
47
+ constructor(manifest) {
48
+ super();
49
+ this.manifest = manifest;
50
+ }
51
+ render(_construct) {
52
+ return this.manifest;
53
+ }
54
+ }
55
+ class FileManifest extends SlackAppManifestDefinition {
56
+ constructor(file) {
57
+ super();
58
+ this.file = file;
59
+ }
60
+ render(_construct) {
61
+ return fs.readFileSync(this.file, 'utf8');
62
+ }
63
+ }
64
+ /**
65
+ * A Slack application deployed with a manifest.
66
+ *
67
+ * @see https://api.slack.com/reference/manifests
68
+ * @stability stable
69
+ */
70
+ class SlackApp extends constructs_1.Construct {
71
+ /**
72
+ * @stability stable
73
+ */
74
+ constructor(scope, id, props) {
75
+ var _c;
76
+ super(scope, id);
77
+ const provider = provider_1.SlackAppProvider.getOrCreate(this);
78
+ props.configurationTokenSecret.grantRead(provider.handler);
79
+ props.configurationTokenSecret.grantWrite(provider.handler);
80
+ this.credentials = (_c = props.credentialsSecret) !== null && _c !== void 0 ? _c : new secretsmanager.Secret(this, 'Credentials', {
81
+ description: `Credentials for Slack App ${this.node.id}`,
82
+ });
83
+ this.credentials.grantWrite(provider.handler);
84
+ const resource = new aws_cdk_lib_1.CustomResource(this, 'Resource', {
85
+ serviceToken: provider.serviceToken,
86
+ resourceType: 'Custom::SlackApp',
87
+ properties: {
88
+ manifest: props.manifest.render(this),
89
+ configurationTokenSecretArn: props.configurationTokenSecret.secretArn,
90
+ credentialsSecretArn: this.credentials.secretArn,
91
+ },
92
+ });
93
+ this.appId = resource.getAttString('appId');
94
+ this.clientId = this.credentials.secretValueFromJson('clientId').toString();
95
+ this.clientSecret = this.credentials.secretValueFromJson('clientSecret').toString();
96
+ this.verificationToken = this.credentials.secretValueFromJson('verificationToken').toString();
97
+ this.signingSecret = this.credentials.secretValueFromJson('signingSecret').toString();
98
+ }
99
+ }
100
+ exports.SlackApp = SlackApp;
101
+ _b = JSII_RTTI_SYMBOL_1;
102
+ SlackApp[_b] = { fqn: "cloudstructs.SlackApp", version: "0.4.0" };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2stYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NsYWNrLWFwcC9zbGFjay1hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkNBQTZDO0FBQzdDLGlFQUFpRTtBQUNqRSwyQ0FBbUQ7QUFDbkQseUNBQXFFO0FBQ3JFLHlDQUE4Qzs7Ozs7O0FBZTlDLE1BQXNCLDBCQUEwQjs7Ozs7O0lBRXZDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7SUFHTSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDakMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7Ozs7SUFHTSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQTRCO1FBQ3JELE9BQU8sSUFBSSwyQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDOztBQWRILGdFQWtCQzs7O0FBRUQsTUFBTSxjQUFlLFNBQVEsMEJBQTBCO0lBQ3JELFlBQTZCLFFBQWdCO1FBQzNDLEtBQUssRUFBRSxDQUFDO1FBRG1CLGFBQVEsR0FBUixRQUFRLENBQVE7SUFFN0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFzQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxZQUFhLFNBQVEsMEJBQTBCO0lBQ25ELFlBQTZCLElBQVk7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEbUIsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUV6QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQXNCO1FBQ2xDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjs7Ozs7OztBQUdELE1BQWEsUUFBUyxTQUFRLHNCQUFTOzs7O0lBbUJyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9COztRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLDJCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsV0FBVyxTQUFHLEtBQUssQ0FBQyxpQkFBaUIsbUNBQUksSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDM0YsV0FBVyxFQUFFLDZCQUE2QixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtTQUN6RCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDcEQsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZO1lBQ25DLFlBQVksRUFBRSxrQkFBa0I7WUFDaEMsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3JDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTO2dCQUNyRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7YUFDakQ7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4RixDQUFDOztBQTlDSCw0QkErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHNlY3JldHNtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFNsYWNrQXBwTWFuaWZlc3QsIFNsYWNrQXBwTWFuaWZlc3RQcm9wcyB9IGZyb20gJy4vbWFuaWZlc3QnO1xuaW1wb3J0IHsgU2xhY2tBcHBQcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXInO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgU2xhY2tBcHBQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWFuaWZlc3Q6IFNsYWNrQXBwTWFuaWZlc3REZWZpbml0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvblRva2VuU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzU2VjcmV0Pzogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2xhY2tBcHBNYW5pZmVzdERlZmluaXRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKG1hbmlmZXN0OiBzdHJpbmcpOiBTbGFja0FwcE1hbmlmZXN0RGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTdHJpbmdNYW5pZmVzdChtYW5pZmVzdCk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShmaWxlOiBzdHJpbmcpOiBTbGFja0FwcE1hbmlmZXN0RGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBGaWxlTWFuaWZlc3QoZmlsZSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIGZyb21NYW5pZmVzdChwcm9wczogU2xhY2tBcHBNYW5pZmVzdFByb3BzKTogU2xhY2tBcHBNYW5pZmVzdERlZmluaXRpb24ge1xuICAgIHJldHVybiBuZXcgU2xhY2tBcHBNYW5pZmVzdChwcm9wcyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhYnN0cmFjdCByZW5kZXIoY29uc3RydWN0OiBJQ29uc3RydWN0KTogc3RyaW5nO1xufVxuXG5jbGFzcyBTdHJpbmdNYW5pZmVzdCBleHRlbmRzIFNsYWNrQXBwTWFuaWZlc3REZWZpbml0aW9uIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYW5pZmVzdDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoX2NvbnN0cnVjdDogSUNvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFuaWZlc3Q7XG4gIH1cbn1cblxuY2xhc3MgRmlsZU1hbmlmZXN0IGV4dGVuZHMgU2xhY2tBcHBNYW5pZmVzdERlZmluaXRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbGU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKF9jb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlLCAndXRmOCcpO1xuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFNsYWNrQXBwIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgYXBwSWQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbHM6IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudElkOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnRTZWNyZXQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgdmVyaWZpY2F0aW9uVG9rZW46IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBzaWduaW5nU2VjcmV0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNsYWNrQXBwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBTbGFja0FwcFByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpO1xuICAgIHByb3BzLmNvbmZpZ3VyYXRpb25Ub2tlblNlY3JldC5ncmFudFJlYWQocHJvdmlkZXIuaGFuZGxlcik7XG4gICAgcHJvcHMuY29uZmlndXJhdGlvblRva2VuU2VjcmV0LmdyYW50V3JpdGUocHJvdmlkZXIuaGFuZGxlcik7XG5cbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gcHJvcHMuY3JlZGVudGlhbHNTZWNyZXQgPz8gbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCAnQ3JlZGVudGlhbHMnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYENyZWRlbnRpYWxzIGZvciBTbGFjayBBcHAgJHt0aGlzLm5vZGUuaWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLmNyZWRlbnRpYWxzLmdyYW50V3JpdGUocHJvdmlkZXIuaGFuZGxlcik7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6U2xhY2tBcHAnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBtYW5pZmVzdDogcHJvcHMubWFuaWZlc3QucmVuZGVyKHRoaXMpLFxuICAgICAgICBjb25maWd1cmF0aW9uVG9rZW5TZWNyZXRBcm46IHByb3BzLmNvbmZpZ3VyYXRpb25Ub2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIGNyZWRlbnRpYWxzU2VjcmV0QXJuOiB0aGlzLmNyZWRlbnRpYWxzLnNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcElkID0gcmVzb3VyY2UuZ2V0QXR0U3RyaW5nKCdhcHBJZCcpO1xuICAgIHRoaXMuY2xpZW50SWQgPSB0aGlzLmNyZWRlbnRpYWxzLnNlY3JldFZhbHVlRnJvbUpzb24oJ2NsaWVudElkJykudG9TdHJpbmcoKTtcbiAgICB0aGlzLmNsaWVudFNlY3JldCA9IHRoaXMuY3JlZGVudGlhbHMuc2VjcmV0VmFsdWVGcm9tSnNvbignY2xpZW50U2VjcmV0JykudG9TdHJpbmcoKTtcbiAgICB0aGlzLnZlcmlmaWNhdGlvblRva2VuID0gdGhpcy5jcmVkZW50aWFscy5zZWNyZXRWYWx1ZUZyb21Kc29uKCd2ZXJpZmljYXRpb25Ub2tlbicpLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5zaWduaW5nU2VjcmV0ID0gdGhpcy5jcmVkZW50aWFscy5zZWNyZXRWYWx1ZUZyb21Kc29uKCdzaWduaW5nU2VjcmV0JykudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19