@discordeno/bot 22.0.1-next.fca3cbb → 22.0.1-next.fdb61e1
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/bot.d.ts.map +1 -1
- package/dist/bot.js +3 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -2
- package/dist/desiredProperties.d.ts +4 -1
- package/dist/desiredProperties.d.ts.map +1 -1
- package/dist/desiredProperties.js +19 -1
- package/dist/events.d.ts +12 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -1
- package/dist/handlers/channels/CHANNEL_INFO.d.ts +4 -0
- package/dist/handlers/channels/CHANNEL_INFO.d.ts.map +1 -0
- package/dist/handlers/channels/CHANNEL_INFO.js +7 -0
- package/dist/handlers/channels/THREAD_LIST_SYNC.d.ts.map +1 -1
- package/dist/handlers/channels/THREAD_LIST_SYNC.js +3 -6
- package/dist/handlers/channels/index.d.ts +1 -0
- package/dist/handlers/channels/index.d.ts.map +1 -1
- package/dist/handlers/channels/index.js +2 -1
- package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +2 -2
- package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +2 -2
- package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +2 -2
- package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +2 -2
- package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +2 -2
- package/dist/handlers/misc/READY.d.ts.map +1 -1
- package/dist/handlers/misc/READY.js +4 -4
- package/dist/handlers/voice/VOICE_CHANNEL_START_TIME_UPDATE.d.ts +4 -0
- package/dist/handlers/voice/VOICE_CHANNEL_START_TIME_UPDATE.d.ts.map +1 -0
- package/dist/handlers/voice/VOICE_CHANNEL_START_TIME_UPDATE.js +11 -0
- package/dist/handlers/voice/VOICE_CHANNEL_STATUS_UPDATE.d.ts +4 -0
- package/dist/handlers/voice/VOICE_CHANNEL_STATUS_UPDATE.d.ts.map +1 -0
- package/dist/handlers/voice/VOICE_CHANNEL_STATUS_UPDATE.js +11 -0
- package/dist/handlers/voice/index.d.ts +2 -0
- package/dist/handlers/voice/index.d.ts.map +1 -1
- package/dist/handlers/voice/index.js +3 -1
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +5 -2
- package/dist/helpers.d.ts +9 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +244 -224
- package/dist/transformers/activity.d.ts +11 -4
- package/dist/transformers/activity.d.ts.map +1 -1
- package/dist/transformers/activity.js +45 -42
- package/dist/transformers/application.d.ts.map +1 -1
- package/dist/transformers/application.js +49 -46
- package/dist/transformers/applicationCommand.d.ts +3 -1
- package/dist/transformers/applicationCommand.d.ts.map +1 -1
- package/dist/transformers/applicationCommand.js +19 -17
- package/dist/transformers/applicationCommandOption.d.ts +3 -1
- package/dist/transformers/applicationCommandOption.d.ts.map +1 -1
- package/dist/transformers/applicationCommandOption.js +22 -19
- package/dist/transformers/applicationCommandOptionChoice.d.ts +3 -1
- package/dist/transformers/applicationCommandOptionChoice.d.ts.map +1 -1
- package/dist/transformers/applicationCommandOptionChoice.js +10 -8
- package/dist/transformers/applicationCommandPermission.d.ts +7 -2
- package/dist/transformers/applicationCommandPermission.d.ts.map +1 -1
- package/dist/transformers/applicationCommandPermission.js +20 -13
- package/dist/transformers/auditLogEntry.d.ts +7 -2
- package/dist/transformers/auditLogEntry.d.ts.map +1 -1
- package/dist/transformers/auditLogEntry.js +33 -25
- package/dist/transformers/automodActionExecution.d.ts +10 -2
- package/dist/transformers/automodActionExecution.d.ts.map +1 -1
- package/dist/transformers/automodActionExecution.js +35 -23
- package/dist/transformers/automodRule.d.ts +7 -2
- package/dist/transformers/automodRule.d.ts.map +1 -1
- package/dist/transformers/automodRule.js +30 -30
- package/dist/transformers/channel.d.ts +7 -1
- package/dist/transformers/channel.d.ts.map +1 -1
- package/dist/transformers/channel.js +20 -1
- package/dist/transformers/component.js +5 -6
- package/dist/transformers/embed.d.ts +16 -2
- package/dist/transformers/embed.d.ts.map +1 -1
- package/dist/transformers/embed.js +70 -58
- package/dist/transformers/emoji.js +1 -1
- package/dist/transformers/gatewayBot.d.ts +7 -2
- package/dist/transformers/gatewayBot.d.ts.map +1 -1
- package/dist/transformers/gatewayBot.js +20 -13
- package/dist/transformers/guild.d.ts.map +1 -1
- package/dist/transformers/guild.js +2 -10
- package/dist/transformers/integration.d.ts +10 -2
- package/dist/transformers/integration.d.ts.map +1 -1
- package/dist/transformers/integration.js +43 -31
- package/dist/transformers/interaction.d.ts +3 -1
- package/dist/transformers/interaction.d.ts.map +1 -1
- package/dist/transformers/interaction.js +12 -11
- package/dist/transformers/lobby.d.ts +4 -1
- package/dist/transformers/lobby.d.ts.map +1 -1
- package/dist/transformers/lobby.js +11 -1
- package/dist/transformers/member.js +1 -1
- package/dist/transformers/message.js +1 -1
- package/dist/transformers/presence.d.ts.map +1 -1
- package/dist/transformers/presence.js +2 -1
- package/dist/transformers/reverse/presence.d.ts.map +1 -1
- package/dist/transformers/reverse/presence.js +3 -2
- package/dist/transformers/role.js +1 -1
- package/dist/transformers/soundboardSound.js +2 -2
- package/dist/transformers/sticker.d.ts +3 -1
- package/dist/transformers/sticker.d.ts.map +1 -1
- package/dist/transformers/sticker.js +13 -12
- package/dist/transformers/team.d.ts +7 -2
- package/dist/transformers/team.d.ts.map +1 -1
- package/dist/transformers/team.js +22 -16
- package/dist/transformers/template.d.ts +3 -1
- package/dist/transformers/template.d.ts.map +1 -1
- package/dist/transformers/template.js +18 -16
- package/dist/transformers/threadMember.d.ts +6 -2
- package/dist/transformers/threadMember.d.ts.map +1 -1
- package/dist/transformers/threadMember.js +20 -16
- package/dist/transformers/toggles/guild.d.ts +16 -13
- package/dist/transformers/toggles/guild.d.ts.map +1 -1
- package/dist/transformers/toggles/guild.js +27 -21
- package/dist/transformers/types.d.ts +71 -1
- package/dist/transformers/types.d.ts.map +1 -1
- package/dist/transformers/types.js +1 -1
- package/dist/transformers/user.js +1 -1
- package/dist/transformers/voiceRegion.d.ts +3 -1
- package/dist/transformers/voiceRegion.d.ts.map +1 -1
- package/dist/transformers/voiceRegion.js +12 -10
- package/dist/transformers/welcomeScreen.d.ts +7 -2
- package/dist/transformers/welcomeScreen.d.ts.map +1 -1
- package/dist/transformers/welcomeScreen.js +19 -12
- package/dist/transformers/widget.d.ts +3 -1
- package/dist/transformers/widget.d.ts.map +1 -1
- package/dist/transformers/widget.js +17 -15
- package/dist/transformers/widgetSettings.d.ts +3 -1
- package/dist/transformers/widgetSettings.d.ts.map +1 -1
- package/dist/transformers/widgetSettings.js +9 -7
- package/dist/transformers.d.ts +101 -91
- package/dist/transformers.d.ts.map +1 -1
- package/dist/transformers.js +63 -27
- package/package.json +13 -13
package/dist/helpers.js
CHANGED
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { camelize } from '@discordeno/utils';
|
|
2
2
|
export function createBotHelpers(bot) {
|
|
3
3
|
return {
|
|
4
4
|
createAutomodRule: async (guildId, options, reason)=>{
|
|
5
|
-
return bot.transformers.
|
|
5
|
+
return bot.transformers.autoModerationRule(bot, await bot.rest.snake.createAutomodRule(guildId, options, reason));
|
|
6
6
|
},
|
|
7
7
|
createChannel: async (guildId, options, reason)=>{
|
|
8
|
-
return bot.transformers.channel(bot,
|
|
8
|
+
return bot.transformers.channel(bot, await bot.rest.snake.createChannel(guildId, options, reason), {
|
|
9
9
|
guildId
|
|
10
10
|
});
|
|
11
11
|
},
|
|
12
12
|
createEmoji: async (guildId, options, reason)=>{
|
|
13
|
-
return bot.transformers.emoji(bot,
|
|
13
|
+
return bot.transformers.emoji(bot, await bot.rest.snake.createEmoji(guildId, options, reason));
|
|
14
14
|
},
|
|
15
15
|
createApplicationEmoji: async (options)=>{
|
|
16
|
-
return bot.transformers.emoji(bot,
|
|
16
|
+
return bot.transformers.emoji(bot, await bot.rest.snake.createApplicationEmoji(options));
|
|
17
17
|
},
|
|
18
18
|
createForumThread: async (channelId, options, reason)=>{
|
|
19
|
-
return bot.transformers.channel(bot,
|
|
19
|
+
return bot.transformers.channel(bot, await bot.rest.snake.createForumThread(channelId, options, reason));
|
|
20
20
|
},
|
|
21
21
|
createGlobalApplicationCommand: async (command, options)=>{
|
|
22
|
-
return bot.transformers.applicationCommand(bot,
|
|
22
|
+
return bot.transformers.applicationCommand(bot, await bot.rest.snake.createGlobalApplicationCommand(command, options));
|
|
23
23
|
},
|
|
24
24
|
createGuildApplicationCommand: async (command, guildId, options)=>{
|
|
25
|
-
return bot.transformers.applicationCommand(bot,
|
|
25
|
+
return bot.transformers.applicationCommand(bot, await bot.rest.snake.createGuildApplicationCommand(command, guildId, options));
|
|
26
26
|
},
|
|
27
27
|
createGuildSticker: async (guildId, options, reason)=>{
|
|
28
|
-
return bot.transformers.sticker(bot,
|
|
28
|
+
return bot.transformers.sticker(bot, await bot.rest.snake.createGuildSticker(guildId, options, reason));
|
|
29
29
|
},
|
|
30
30
|
createGuildTemplate: async (guildId, options)=>{
|
|
31
|
-
return bot.transformers.template(bot,
|
|
31
|
+
return bot.transformers.template(bot, await bot.rest.snake.createGuildTemplate(guildId, options));
|
|
32
32
|
},
|
|
33
33
|
createInvite: async (channelId, options, reason)=>{
|
|
34
34
|
return await bot.rest.createInvite(channelId, options, reason);
|
|
35
35
|
},
|
|
36
36
|
getGuildRoleMemberCounts: async (guildId)=>{
|
|
37
|
-
return await bot.rest.getGuildRoleMemberCounts(guildId);
|
|
37
|
+
return await bot.rest.snake.getGuildRoleMemberCounts(guildId);
|
|
38
38
|
},
|
|
39
39
|
createRole: async (guildId, options, reason)=>{
|
|
40
|
-
return bot.transformers.role(bot,
|
|
40
|
+
return bot.transformers.role(bot, await bot.rest.snake.createRole(guildId, options, reason), {
|
|
41
41
|
guildId
|
|
42
42
|
});
|
|
43
43
|
},
|
|
44
44
|
createScheduledEvent: async (guildId, options, reason)=>{
|
|
45
|
-
return bot.transformers.scheduledEvent(bot,
|
|
45
|
+
return bot.transformers.scheduledEvent(bot, await bot.rest.snake.createScheduledEvent(guildId, options, reason));
|
|
46
46
|
},
|
|
47
47
|
createStageInstance: async (options, reason)=>{
|
|
48
|
-
return bot.transformers.stageInstance(bot,
|
|
48
|
+
return bot.transformers.stageInstance(bot, await bot.rest.snake.createStageInstance(options, reason));
|
|
49
49
|
},
|
|
50
50
|
createWebhook: async (channelId, options, reason)=>{
|
|
51
|
-
return bot.transformers.webhook(bot,
|
|
51
|
+
return bot.transformers.webhook(bot, await bot.rest.snake.createWebhook(channelId, options, reason));
|
|
52
52
|
},
|
|
53
53
|
editApplicationCommandPermissions: async (guildId, commandId, bearerToken, options)=>{
|
|
54
|
-
return bot.transformers.
|
|
54
|
+
return bot.transformers.guildApplicationCommandPermissions(bot, await bot.rest.snake.editApplicationCommandPermissions(guildId, commandId, bearerToken, options));
|
|
55
55
|
},
|
|
56
56
|
editAutomodRule: async (guildId, ruleId, options, reason)=>{
|
|
57
|
-
return bot.transformers.
|
|
57
|
+
return bot.transformers.autoModerationRule(bot, await bot.rest.snake.editAutomodRule(guildId, ruleId, options, reason));
|
|
58
58
|
},
|
|
59
59
|
editBotProfile: async (options)=>{
|
|
60
|
-
return bot.transformers.user(bot,
|
|
60
|
+
return bot.transformers.user(bot, await bot.rest.snake.editBotProfile(options));
|
|
61
61
|
},
|
|
62
62
|
editChannel: async (channelId, options, reason)=>{
|
|
63
|
-
return bot.transformers.channel(bot,
|
|
63
|
+
return bot.transformers.channel(bot, await bot.rest.snake.editChannel(channelId, options, reason));
|
|
64
64
|
},
|
|
65
65
|
editEmoji: async (guildId, id, options, reason)=>{
|
|
66
|
-
return bot.transformers.emoji(bot,
|
|
66
|
+
return bot.transformers.emoji(bot, await bot.rest.snake.editEmoji(guildId, id, options, reason));
|
|
67
67
|
},
|
|
68
68
|
editApplicationEmoji: async (id, options)=>{
|
|
69
|
-
return bot.transformers.emoji(bot,
|
|
69
|
+
return bot.transformers.emoji(bot, await bot.rest.snake.editApplicationEmoji(id, options));
|
|
70
70
|
},
|
|
71
71
|
editFollowupMessage: async (token, messageId, options)=>{
|
|
72
|
-
return bot.transformers.message(bot,
|
|
72
|
+
return bot.transformers.message(bot, await bot.rest.snake.editFollowupMessage(token, messageId, options));
|
|
73
73
|
},
|
|
74
74
|
editGlobalApplicationCommand: async (commandId, options)=>{
|
|
75
|
-
return bot.transformers.applicationCommand(bot,
|
|
75
|
+
return bot.transformers.applicationCommand(bot, await bot.rest.snake.editGlobalApplicationCommand(commandId, options));
|
|
76
76
|
},
|
|
77
77
|
editGuild: async (guildId, options, reason)=>{
|
|
78
|
-
return bot.transformers.guild(bot,
|
|
78
|
+
return bot.transformers.guild(bot, await bot.rest.snake.editGuild(guildId, options, reason));
|
|
79
79
|
},
|
|
80
80
|
editGuildApplicationCommand: async (commandId, guildId, options)=>{
|
|
81
|
-
return bot.transformers.applicationCommand(bot,
|
|
81
|
+
return bot.transformers.applicationCommand(bot, await bot.rest.snake.editGuildApplicationCommand(commandId, guildId, options));
|
|
82
82
|
},
|
|
83
83
|
editGuildSticker: async (guildId, stickerId, options, reason)=>{
|
|
84
|
-
return bot.transformers.sticker(bot,
|
|
84
|
+
return bot.transformers.sticker(bot, await bot.rest.snake.editGuildSticker(guildId, stickerId, options, reason));
|
|
85
85
|
},
|
|
86
86
|
editGuildTemplate: async (guildId, templateCode, options)=>{
|
|
87
|
-
return bot.transformers.template(bot,
|
|
87
|
+
return bot.transformers.template(bot, await bot.rest.snake.editGuildTemplate(guildId, templateCode, options));
|
|
88
88
|
},
|
|
89
89
|
editMessage: async (channelId, messageId, options)=>{
|
|
90
|
-
return bot.transformers.message(bot,
|
|
90
|
+
return bot.transformers.message(bot, await bot.rest.snake.editMessage(channelId, messageId, options));
|
|
91
91
|
},
|
|
92
92
|
editOriginalInteractionResponse: async (token, options)=>{
|
|
93
|
-
return bot.transformers.message(bot,
|
|
93
|
+
return bot.transformers.message(bot, await bot.rest.snake.editOriginalInteractionResponse(token, options));
|
|
94
94
|
},
|
|
95
95
|
editRole: async (guildId, roleId, options, reason)=>{
|
|
96
|
-
return bot.transformers.role(bot,
|
|
96
|
+
return bot.transformers.role(bot, await bot.rest.snake.editRole(guildId, roleId, options, reason), {
|
|
97
97
|
guildId
|
|
98
98
|
});
|
|
99
99
|
},
|
|
100
100
|
editRolePositions: async (guildId, options, reason)=>{
|
|
101
|
-
return
|
|
101
|
+
return (await bot.rest.snake.editRolePositions(guildId, options, reason)).map((role)=>bot.transformers.role(bot, role, {
|
|
102
102
|
guildId
|
|
103
103
|
}));
|
|
104
104
|
},
|
|
105
105
|
editScheduledEvent: async (guildId, eventId, options, reason)=>{
|
|
106
|
-
return bot.transformers.scheduledEvent(bot,
|
|
106
|
+
return bot.transformers.scheduledEvent(bot, await bot.rest.snake.editScheduledEvent(guildId, eventId, options, reason));
|
|
107
107
|
},
|
|
108
108
|
editStageInstance: async (channelId, topic, reason)=>{
|
|
109
|
-
return bot.transformers.stageInstance(bot,
|
|
109
|
+
return bot.transformers.stageInstance(bot, await bot.rest.snake.editStageInstance(channelId, topic, reason));
|
|
110
110
|
},
|
|
111
111
|
editWebhook: async (webhookId, options, reason)=>{
|
|
112
|
-
return bot.transformers.webhook(bot,
|
|
112
|
+
return bot.transformers.webhook(bot, await bot.rest.snake.editWebhook(webhookId, options, reason));
|
|
113
113
|
},
|
|
114
114
|
editWebhookMessage: async (webhookId, token, messageId, options)=>{
|
|
115
|
-
return bot.transformers.message(bot,
|
|
115
|
+
return bot.transformers.message(bot, await bot.rest.snake.editWebhookMessage(webhookId, token, messageId, options));
|
|
116
116
|
},
|
|
117
117
|
editWebhookWithToken: async (webhookId, token, options)=>{
|
|
118
|
-
return bot.transformers.webhook(bot,
|
|
118
|
+
return bot.transformers.webhook(bot, await bot.rest.snake.editWebhookWithToken(webhookId, token, options));
|
|
119
119
|
},
|
|
120
120
|
editWelcomeScreen: async (guildId, options, reason)=>{
|
|
121
|
-
return bot.transformers.welcomeScreen(bot,
|
|
121
|
+
return bot.transformers.welcomeScreen(bot, await bot.rest.snake.editWelcomeScreen(guildId, options, reason));
|
|
122
122
|
},
|
|
123
123
|
editWidgetSettings: async (guildId, options, reason)=>{
|
|
124
|
-
return bot.transformers.
|
|
124
|
+
return bot.transformers.guildWidgetSettings(bot, await bot.rest.snake.editWidgetSettings(guildId, options, reason));
|
|
125
125
|
},
|
|
126
126
|
executeWebhook: async (webhookId, token, options)=>{
|
|
127
|
-
const result = await bot.rest.executeWebhook(webhookId, token, options);
|
|
127
|
+
const result = await bot.rest.snake.executeWebhook(webhookId, token, options);
|
|
128
128
|
if (!result) return;
|
|
129
|
-
return bot.transformers.message(bot,
|
|
129
|
+
return bot.transformers.message(bot, result);
|
|
130
130
|
},
|
|
131
131
|
followAnnouncement: async (sourceChannelId, targetChannelId)=>{
|
|
132
132
|
return await bot.rest.followAnnouncement(sourceChannelId, targetChannelId);
|
|
133
133
|
},
|
|
134
134
|
getActiveThreads: async (guildId)=>{
|
|
135
|
-
const result = await bot.rest.getActiveThreads(guildId);
|
|
135
|
+
const result = await bot.rest.snake.getActiveThreads(guildId);
|
|
136
136
|
return {
|
|
137
|
-
threads: result.threads.map((thread)=>bot.transformers.channel(bot,
|
|
137
|
+
threads: result.threads.map((thread)=>bot.transformers.channel(bot, thread, {
|
|
138
138
|
guildId
|
|
139
139
|
})),
|
|
140
|
-
members: result.members.map((member)=>bot.transformers.threadMember(bot,
|
|
140
|
+
members: result.members.map((member)=>bot.transformers.threadMember(bot, member, {
|
|
141
141
|
guildId
|
|
142
142
|
}))
|
|
143
143
|
};
|
|
144
144
|
},
|
|
145
145
|
getApplicationInfo: async ()=>{
|
|
146
|
-
return bot.transformers.application(bot,
|
|
146
|
+
return bot.transformers.application(bot, await bot.rest.snake.getApplicationInfo());
|
|
147
147
|
},
|
|
148
148
|
editApplicationInfo: async (body)=>{
|
|
149
|
-
return bot.transformers.application(bot,
|
|
149
|
+
return bot.transformers.application(bot, await bot.rest.snake.editApplicationInfo(body));
|
|
150
150
|
},
|
|
151
151
|
getCurrentAuthenticationInfo: async (bearerToken)=>{
|
|
152
152
|
return await bot.rest.getCurrentAuthenticationInfo(bearerToken);
|
|
@@ -155,27 +155,25 @@ export function createBotHelpers(bot) {
|
|
|
155
155
|
return await bot.rest.exchangeToken(clientId, clientSecret, options);
|
|
156
156
|
},
|
|
157
157
|
revokeToken: async (clientId, clientSecret, options)=>{
|
|
158
|
-
return await bot.rest.revokeToken(clientId, clientSecret, options);
|
|
158
|
+
return await bot.rest.snake.revokeToken(clientId, clientSecret, options);
|
|
159
159
|
},
|
|
160
160
|
getApplicationCommandPermission: async (guildId, commandId, options)=>{
|
|
161
|
-
|
|
162
|
-
const snakedRes = snakelize(res);
|
|
163
|
-
return bot.transformers.applicationCommandPermission(bot, snakedRes);
|
|
161
|
+
return bot.transformers.guildApplicationCommandPermissions(bot, await bot.rest.snake.getApplicationCommandPermission(guildId, commandId, options));
|
|
164
162
|
},
|
|
165
163
|
getApplicationCommandPermissions: async (guildId, options)=>{
|
|
166
|
-
return (await bot.rest.getApplicationCommandPermissions(guildId, options)).map((res)=>bot.transformers.
|
|
164
|
+
return (await bot.rest.snake.getApplicationCommandPermissions(guildId, options)).map((res)=>bot.transformers.guildApplicationCommandPermissions(bot, res));
|
|
167
165
|
},
|
|
168
166
|
getAuditLog: async (guildId, options)=>{
|
|
169
167
|
return await bot.rest.getAuditLog(guildId, options);
|
|
170
168
|
},
|
|
171
169
|
getAutomodRule: async (guildId, ruleId)=>{
|
|
172
|
-
return bot.transformers.
|
|
170
|
+
return bot.transformers.autoModerationRule(bot, await bot.rest.snake.getAutomodRule(guildId, ruleId));
|
|
173
171
|
},
|
|
174
172
|
getAutomodRules: async (guildId)=>{
|
|
175
|
-
return (await bot.rest.getAutomodRules(guildId)).map((res)=>bot.transformers.
|
|
173
|
+
return (await bot.rest.snake.getAutomodRules(guildId)).map((res)=>bot.transformers.autoModerationRule(bot, res));
|
|
176
174
|
},
|
|
177
175
|
getAvailableVoiceRegions: async ()=>{
|
|
178
|
-
return (await bot.rest.getAvailableVoiceRegions()).map((res)=>bot.transformers.voiceRegion(bot,
|
|
176
|
+
return (await bot.rest.snake.getAvailableVoiceRegions()).map((res)=>bot.transformers.voiceRegion(bot, res));
|
|
179
177
|
},
|
|
180
178
|
getBan: async (guildId, userId)=>{
|
|
181
179
|
return await bot.rest.getBan(guildId, userId);
|
|
@@ -184,121 +182,120 @@ export function createBotHelpers(bot) {
|
|
|
184
182
|
return await bot.rest.getBans(guildId, options);
|
|
185
183
|
},
|
|
186
184
|
getChannel: async (channelId)=>{
|
|
187
|
-
return bot.transformers.channel(bot,
|
|
185
|
+
return bot.transformers.channel(bot, await bot.rest.snake.getChannel(channelId));
|
|
188
186
|
},
|
|
189
187
|
getChannelInvites: async (channelId)=>{
|
|
190
|
-
return (await bot.rest.getChannelInvites(channelId)).map((res)=>bot.transformers.invite(bot,
|
|
188
|
+
return (await bot.rest.snake.getChannelInvites(channelId)).map((res)=>bot.transformers.invite(bot, res));
|
|
191
189
|
},
|
|
192
190
|
getChannels: async (guildId)=>{
|
|
193
|
-
return (await bot.rest.getChannels(guildId)).map((res)=>bot.transformers.channel(bot,
|
|
191
|
+
return (await bot.rest.snake.getChannels(guildId)).map((res)=>bot.transformers.channel(bot, res, {
|
|
194
192
|
guildId
|
|
195
193
|
}));
|
|
196
194
|
},
|
|
197
195
|
getChannelWebhooks: async (channelId)=>{
|
|
198
|
-
return (await bot.rest.getChannelWebhooks(channelId)).map((res)=>bot.transformers.webhook(bot,
|
|
196
|
+
return (await bot.rest.snake.getChannelWebhooks(channelId)).map((res)=>bot.transformers.webhook(bot, res));
|
|
199
197
|
},
|
|
200
198
|
getDmChannel: async (userId)=>{
|
|
201
|
-
return bot.transformers.channel(bot,
|
|
199
|
+
return bot.transformers.channel(bot, await bot.rest.snake.getDmChannel(userId));
|
|
202
200
|
},
|
|
203
201
|
getGroupDmChannel: async (options)=>{
|
|
204
|
-
return bot.transformers.channel(bot,
|
|
202
|
+
return bot.transformers.channel(bot, await bot.rest.snake.getGroupDmChannel(options));
|
|
205
203
|
},
|
|
206
204
|
getEmoji: async (guildId, emojiId)=>{
|
|
207
|
-
return bot.transformers.emoji(bot,
|
|
205
|
+
return bot.transformers.emoji(bot, await bot.rest.snake.getEmoji(guildId, emojiId));
|
|
208
206
|
},
|
|
209
207
|
getApplicationEmoji: async (emojiId)=>{
|
|
210
|
-
return bot.transformers.emoji(bot,
|
|
208
|
+
return bot.transformers.emoji(bot, await bot.rest.snake.getApplicationEmoji(emojiId));
|
|
211
209
|
},
|
|
212
210
|
getEmojis: async (guildId)=>{
|
|
213
|
-
return (await bot.rest.getEmojis(guildId)).map((res)=>bot.transformers.emoji(bot,
|
|
211
|
+
return (await bot.rest.snake.getEmojis(guildId)).map((res)=>bot.transformers.emoji(bot, res));
|
|
214
212
|
},
|
|
215
213
|
getApplicationEmojis: async ()=>{
|
|
216
|
-
const res = await bot.rest.getApplicationEmojis();
|
|
214
|
+
const res = await bot.rest.snake.getApplicationEmojis();
|
|
217
215
|
return {
|
|
218
|
-
items: res.items.map((item)=>bot.transformers.emoji(bot,
|
|
216
|
+
items: res.items.map((item)=>bot.transformers.emoji(bot, item))
|
|
219
217
|
};
|
|
220
218
|
},
|
|
221
219
|
getFollowupMessage: async (token, messageId)=>{
|
|
222
|
-
return bot.transformers.message(bot,
|
|
220
|
+
return bot.transformers.message(bot, await bot.rest.snake.getFollowupMessage(token, messageId));
|
|
223
221
|
},
|
|
224
222
|
getGatewayBot: async ()=>{
|
|
225
|
-
return bot.transformers.gatewayBot(bot,
|
|
223
|
+
return bot.transformers.gatewayBot(bot, await bot.rest.snake.getGatewayBot());
|
|
226
224
|
},
|
|
227
225
|
getGlobalApplicationCommand: async (commandId)=>{
|
|
228
|
-
return bot.transformers.applicationCommand(bot,
|
|
226
|
+
return bot.transformers.applicationCommand(bot, await bot.rest.snake.getGlobalApplicationCommand(commandId));
|
|
229
227
|
},
|
|
230
228
|
getGlobalApplicationCommands: async (options)=>{
|
|
231
|
-
return (await bot.rest.getGlobalApplicationCommands(options)).map((res)=>bot.transformers.applicationCommand(bot,
|
|
229
|
+
return (await bot.rest.snake.getGlobalApplicationCommands(options)).map((res)=>bot.transformers.applicationCommand(bot, res));
|
|
232
230
|
},
|
|
233
231
|
getGuild: async (guildId, options)=>{
|
|
234
|
-
return bot.transformers.guild(bot,
|
|
232
|
+
return bot.transformers.guild(bot, await bot.rest.snake.getGuild(guildId, options));
|
|
235
233
|
},
|
|
236
234
|
getGuilds: async (bearerToken, options)=>{
|
|
237
|
-
return (await bot.rest.getGuilds(bearerToken, options)).map((res)=>bot.transformers.guild(bot,
|
|
235
|
+
return (await bot.rest.snake.getGuilds(bearerToken, options)).map((res)=>bot.transformers.guild(bot, res, {
|
|
238
236
|
partial: true
|
|
239
237
|
}));
|
|
240
238
|
},
|
|
241
239
|
getGuildApplicationCommand: async (commandId, guildId)=>{
|
|
242
|
-
return bot.transformers.applicationCommand(bot,
|
|
240
|
+
return bot.transformers.applicationCommand(bot, await bot.rest.snake.getGuildApplicationCommand(commandId, guildId));
|
|
243
241
|
},
|
|
244
242
|
getGuildApplicationCommands: async (guildId, options)=>{
|
|
245
|
-
return (await bot.rest.getGuildApplicationCommands(guildId, options)).map((res)=>bot.transformers.applicationCommand(bot,
|
|
243
|
+
return (await bot.rest.snake.getGuildApplicationCommands(guildId, options)).map((res)=>bot.transformers.applicationCommand(bot, res));
|
|
246
244
|
},
|
|
247
245
|
getGuildPreview: async (guildId)=>{
|
|
248
246
|
return await bot.rest.getGuildPreview(guildId);
|
|
249
|
-
// return bot.transformers.xxx(bot, snakelize(await bot.rest.getGuildPreview(guildId)))
|
|
250
247
|
},
|
|
251
248
|
getGuildSticker: async (guildId, stickerId)=>{
|
|
252
|
-
return bot.transformers.sticker(bot,
|
|
249
|
+
return bot.transformers.sticker(bot, await bot.rest.snake.getGuildSticker(guildId, stickerId));
|
|
253
250
|
},
|
|
254
251
|
getGuildStickers: async (guildId)=>{
|
|
255
|
-
return (await bot.rest.getGuildStickers(guildId)).map((res)=>bot.transformers.sticker(bot,
|
|
252
|
+
return (await bot.rest.snake.getGuildStickers(guildId)).map((res)=>bot.transformers.sticker(bot, res));
|
|
256
253
|
},
|
|
257
254
|
getGuildTemplate: async (templateCode)=>{
|
|
258
|
-
return bot.transformers.template(bot,
|
|
255
|
+
return bot.transformers.template(bot, await bot.rest.snake.getGuildTemplate(templateCode));
|
|
259
256
|
},
|
|
260
257
|
getGuildTemplates: async (guildId)=>{
|
|
261
|
-
return (await bot.rest.getGuildTemplates(guildId)).map((res)=>bot.transformers.template(bot,
|
|
258
|
+
return (await bot.rest.snake.getGuildTemplates(guildId)).map((res)=>bot.transformers.template(bot, res));
|
|
262
259
|
},
|
|
263
260
|
getGuildWebhooks: async (guildId)=>{
|
|
264
|
-
return (await bot.rest.getGuildWebhooks(guildId)).map((res)=>bot.transformers.webhook(bot,
|
|
261
|
+
return (await bot.rest.snake.getGuildWebhooks(guildId)).map((res)=>bot.transformers.webhook(bot, res));
|
|
265
262
|
},
|
|
266
263
|
getIntegrations: async (guildId)=>{
|
|
267
|
-
return (await bot.rest.getIntegrations(guildId)).map((res)=>bot.transformers.integration(bot,
|
|
264
|
+
return (await bot.rest.snake.getIntegrations(guildId)).map((res)=>bot.transformers.integration(bot, {
|
|
268
265
|
...res,
|
|
269
|
-
|
|
270
|
-
}))
|
|
266
|
+
guild_id: guildId.toString()
|
|
267
|
+
}));
|
|
271
268
|
},
|
|
272
269
|
getInvite: async (inviteCode, options)=>{
|
|
273
|
-
return bot.transformers.invite(bot,
|
|
270
|
+
return bot.transformers.invite(bot, await bot.rest.snake.getInvite(inviteCode, options));
|
|
274
271
|
},
|
|
275
272
|
getInvites: async (guildId)=>{
|
|
276
|
-
return (await bot.rest.getInvites(guildId)).map((res)=>bot.transformers.invite(bot,
|
|
273
|
+
return (await bot.rest.snake.getInvites(guildId)).map((res)=>bot.transformers.invite(bot, res));
|
|
277
274
|
},
|
|
278
275
|
getMessage: async (channelId, messageId)=>{
|
|
279
|
-
return bot.transformers.message(bot,
|
|
276
|
+
return bot.transformers.message(bot, await bot.rest.snake.getMessage(channelId, messageId));
|
|
280
277
|
},
|
|
281
278
|
getMessages: async (channelId, options)=>{
|
|
282
|
-
return (await bot.rest.getMessages(channelId, options)).map((res)=>bot.transformers.message(bot,
|
|
279
|
+
return (await bot.rest.snake.getMessages(channelId, options)).map((res)=>bot.transformers.message(bot, res));
|
|
283
280
|
},
|
|
284
281
|
getStickerPack: async (stickerPackId)=>{
|
|
285
|
-
return bot.transformers.stickerPack(bot,
|
|
282
|
+
return bot.transformers.stickerPack(bot, await bot.rest.snake.getStickerPack(stickerPackId));
|
|
286
283
|
},
|
|
287
284
|
getStickerPacks: async ()=>{
|
|
288
|
-
return (await bot.rest.getStickerPacks()).map((res)=>bot.transformers.stickerPack(bot,
|
|
285
|
+
return (await bot.rest.snake.getStickerPacks()).map((res)=>bot.transformers.stickerPack(bot, res));
|
|
289
286
|
},
|
|
290
287
|
getOriginalInteractionResponse: async (token)=>{
|
|
291
|
-
return bot.transformers.message(bot,
|
|
288
|
+
return bot.transformers.message(bot, await bot.rest.snake.getOriginalInteractionResponse(token));
|
|
292
289
|
},
|
|
293
290
|
getChannelPins: async (channelId, options)=>{
|
|
294
|
-
const res =
|
|
291
|
+
const res = await bot.rest.snake.getChannelPins(channelId, options);
|
|
295
292
|
return {
|
|
296
293
|
hasMore: res.has_more,
|
|
297
294
|
items: res.items.map((item)=>bot.transformers.messagePin(bot, item))
|
|
298
295
|
};
|
|
299
296
|
},
|
|
300
297
|
getPinnedMessages: async (channelId)=>{
|
|
301
|
-
return (await bot.rest.getPinnedMessages(channelId)).map((res)=>bot.transformers.message(bot,
|
|
298
|
+
return (await bot.rest.snake.getPinnedMessages(channelId)).map((res)=>bot.transformers.message(bot, res));
|
|
302
299
|
},
|
|
303
300
|
getPrivateArchivedThreads: async (channelId, options)=>{
|
|
304
301
|
return await bot.rest.getPrivateArchivedThreads(channelId, options);
|
|
@@ -307,32 +304,32 @@ export function createBotHelpers(bot) {
|
|
|
307
304
|
return await bot.rest.getPrivateJoinedArchivedThreads(channelId, options);
|
|
308
305
|
},
|
|
309
306
|
getPruneCount: async (guildId, options)=>{
|
|
310
|
-
return await bot.rest.getPruneCount(guildId, options);
|
|
307
|
+
return await bot.rest.snake.getPruneCount(guildId, options);
|
|
311
308
|
},
|
|
312
309
|
getPublicArchivedThreads: async (channelId, options)=>{
|
|
313
310
|
return await bot.rest.getPublicArchivedThreads(channelId, options);
|
|
314
311
|
},
|
|
315
312
|
getRoles: async (guildId)=>{
|
|
316
|
-
return
|
|
313
|
+
return (await bot.rest.snake.getRoles(guildId)).map((role)=>bot.transformers.role(bot, role, {
|
|
317
314
|
guildId
|
|
318
315
|
}));
|
|
319
316
|
},
|
|
320
317
|
getRole: async (guildId, roleId)=>{
|
|
321
|
-
return bot.transformers.role(bot,
|
|
318
|
+
return bot.transformers.role(bot, await bot.rest.snake.getRole(guildId, roleId), {
|
|
322
319
|
guildId
|
|
323
320
|
});
|
|
324
321
|
},
|
|
325
322
|
getScheduledEvent: async (guildId, eventId, options)=>{
|
|
326
|
-
return bot.transformers.scheduledEvent(bot,
|
|
323
|
+
return bot.transformers.scheduledEvent(bot, await bot.rest.snake.getScheduledEvent(guildId, eventId, options));
|
|
327
324
|
},
|
|
328
325
|
getScheduledEvents: async (guildId, options)=>{
|
|
329
|
-
return (await bot.rest.getScheduledEvents(guildId, options)).map((res)=>bot.transformers.scheduledEvent(bot,
|
|
326
|
+
return (await bot.rest.snake.getScheduledEvents(guildId, options)).map((res)=>bot.transformers.scheduledEvent(bot, res));
|
|
330
327
|
},
|
|
331
328
|
getScheduledEventUsers: async (guildId, eventId, options)=>{
|
|
332
|
-
return (await bot.rest.getScheduledEventUsers(guildId, eventId, options)).map((u)=>{
|
|
329
|
+
return (await bot.rest.snake.getScheduledEventUsers(guildId, eventId, options)).map((u)=>{
|
|
333
330
|
return {
|
|
334
|
-
user: bot.transformers.user(bot,
|
|
335
|
-
member: u.member && bot.transformers.member(bot,
|
|
331
|
+
user: bot.transformers.user(bot, u.user),
|
|
332
|
+
member: u.member && bot.transformers.member(bot, u.member, {
|
|
336
333
|
guildId,
|
|
337
334
|
userId: bot.transformers.snowflake(u.user.id)
|
|
338
335
|
})
|
|
@@ -340,38 +337,38 @@ export function createBotHelpers(bot) {
|
|
|
340
337
|
});
|
|
341
338
|
},
|
|
342
339
|
getSessionInfo: async ()=>{
|
|
343
|
-
return bot.transformers.gatewayBot(bot,
|
|
340
|
+
return bot.transformers.gatewayBot(bot, await bot.rest.snake.getSessionInfo());
|
|
344
341
|
},
|
|
345
342
|
getStageInstance: async (channelId)=>{
|
|
346
|
-
return bot.transformers.stageInstance(bot,
|
|
343
|
+
return bot.transformers.stageInstance(bot, await bot.rest.snake.getStageInstance(channelId));
|
|
347
344
|
},
|
|
348
345
|
getOwnVoiceState: async (guildId)=>{
|
|
349
|
-
return bot.transformers.voiceState(bot,
|
|
346
|
+
return bot.transformers.voiceState(bot, await bot.rest.snake.getOwnVoiceState(guildId), {
|
|
350
347
|
guildId
|
|
351
348
|
});
|
|
352
349
|
},
|
|
353
350
|
getUserVoiceState: async (guildId, userId)=>{
|
|
354
|
-
return bot.transformers.voiceState(bot,
|
|
351
|
+
return bot.transformers.voiceState(bot, await bot.rest.snake.getUserVoiceState(guildId, userId), {
|
|
355
352
|
guildId
|
|
356
353
|
});
|
|
357
354
|
},
|
|
358
355
|
getSticker: async (stickerId)=>{
|
|
359
|
-
return bot.transformers.sticker(bot,
|
|
356
|
+
return bot.transformers.sticker(bot, await bot.rest.snake.getSticker(stickerId));
|
|
360
357
|
},
|
|
361
358
|
getThreadMember: async (channelId, userId, options, extra)=>{
|
|
362
|
-
return bot.transformers.threadMember(bot,
|
|
359
|
+
return bot.transformers.threadMember(bot, await bot.rest.snake.getThreadMember(channelId, userId, options), extra);
|
|
363
360
|
},
|
|
364
361
|
getThreadMembers: async (channelId, options, extra)=>{
|
|
365
|
-
return (await bot.rest.getThreadMembers(channelId, options)).map((res)=>bot.transformers.threadMember(bot,
|
|
362
|
+
return (await bot.rest.snake.getThreadMembers(channelId, options)).map((res)=>bot.transformers.threadMember(bot, res, extra));
|
|
366
363
|
},
|
|
367
364
|
getReactions: async (channelId, messageId, reaction, options)=>{
|
|
368
|
-
return (await bot.rest.getReactions(channelId, messageId, reaction, options)).map((res)=>bot.transformers.user(bot,
|
|
365
|
+
return (await bot.rest.snake.getReactions(channelId, messageId, reaction, options)).map((res)=>bot.transformers.user(bot, res));
|
|
369
366
|
},
|
|
370
367
|
getUser: async (id)=>{
|
|
371
|
-
return bot.transformers.user(bot,
|
|
368
|
+
return bot.transformers.user(bot, await bot.rest.snake.getUser(id));
|
|
372
369
|
},
|
|
373
370
|
getCurrentUser: async (bearerToken)=>{
|
|
374
|
-
return bot.transformers.user(bot,
|
|
371
|
+
return bot.transformers.user(bot, await bot.rest.snake.getCurrentUser(bearerToken));
|
|
375
372
|
},
|
|
376
373
|
getUserConnections: async (bearerToken)=>{
|
|
377
374
|
return await bot.rest.getUserConnections(bearerToken);
|
|
@@ -383,100 +380,115 @@ export function createBotHelpers(bot) {
|
|
|
383
380
|
return await bot.rest.getVanityUrl(guildId);
|
|
384
381
|
},
|
|
385
382
|
getVoiceRegions: async (guildId)=>{
|
|
386
|
-
return (await bot.rest.getVoiceRegions(guildId)).map((res)=>bot.transformers.voiceRegion(bot,
|
|
383
|
+
return (await bot.rest.snake.getVoiceRegions(guildId)).map((res)=>bot.transformers.voiceRegion(bot, res));
|
|
387
384
|
},
|
|
388
385
|
getWebhook: async (webhookId)=>{
|
|
389
|
-
return bot.transformers.webhook(bot,
|
|
386
|
+
return bot.transformers.webhook(bot, await bot.rest.snake.getWebhook(webhookId));
|
|
390
387
|
},
|
|
391
388
|
getWebhookMessage: async (webhookId, token, messageId, options)=>{
|
|
392
|
-
return bot.transformers.message(bot,
|
|
389
|
+
return bot.transformers.message(bot, await bot.rest.snake.getWebhookMessage(webhookId, token, messageId, options));
|
|
393
390
|
},
|
|
394
391
|
getWebhookWithToken: async (webhookId, token)=>{
|
|
395
|
-
return bot.transformers.webhook(bot,
|
|
392
|
+
return bot.transformers.webhook(bot, await bot.rest.snake.getWebhookWithToken(webhookId, token));
|
|
396
393
|
},
|
|
397
394
|
getWelcomeScreen: async (guildId)=>{
|
|
398
|
-
return bot.transformers.welcomeScreen(bot,
|
|
395
|
+
return bot.transformers.welcomeScreen(bot, await bot.rest.snake.getWelcomeScreen(guildId));
|
|
399
396
|
},
|
|
400
397
|
getWidget: async (guildId)=>{
|
|
401
|
-
return bot.transformers.
|
|
398
|
+
return bot.transformers.guildWidget(bot, await bot.rest.snake.getWidget(guildId));
|
|
402
399
|
},
|
|
403
400
|
getWidgetSettings: async (guildId)=>{
|
|
404
|
-
return bot.transformers.
|
|
401
|
+
return bot.transformers.guildWidgetSettings(bot, await bot.rest.snake.getWidgetSettings(guildId));
|
|
405
402
|
},
|
|
406
403
|
publishMessage: async (channelId, messageId)=>{
|
|
407
|
-
return bot.transformers.message(bot,
|
|
404
|
+
return bot.transformers.message(bot, await bot.rest.snake.publishMessage(channelId, messageId));
|
|
408
405
|
},
|
|
409
406
|
searchGuildMessages: async (guildId, options)=>{
|
|
410
|
-
const result = await bot.rest.searchGuildMessages(guildId, options);
|
|
411
|
-
if ('code' in result) return result;
|
|
407
|
+
const result = await bot.rest.snake.searchGuildMessages(guildId, options);
|
|
408
|
+
if ('code' in result) return camelize(result);
|
|
412
409
|
return {
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
410
|
+
// We would waste time and memory camelizing the entire result object, so we only camelize the parts we need to. The rest of the data is converted below
|
|
411
|
+
...camelize({
|
|
412
|
+
...result,
|
|
413
|
+
messages: undefined,
|
|
414
|
+
threads: undefined,
|
|
415
|
+
members: undefined
|
|
416
|
+
}),
|
|
417
|
+
messages: result.messages.map((messages)=>messages.map((message)=>bot.transformers.message(bot, message))),
|
|
418
|
+
threads: result.threads?.map((thread)=>bot.transformers.channel(bot, thread, {
|
|
416
419
|
guildId
|
|
417
420
|
})),
|
|
418
|
-
members: result.members?.map((member)=>bot.transformers.threadMember(bot,
|
|
421
|
+
members: result.members?.map((member)=>bot.transformers.threadMember(bot, member, {
|
|
419
422
|
guildId
|
|
420
423
|
}))
|
|
421
424
|
};
|
|
422
425
|
},
|
|
423
426
|
sendMessage: async (channelId, options)=>{
|
|
424
|
-
return bot.transformers.message(bot,
|
|
427
|
+
return bot.transformers.message(bot, await bot.rest.snake.sendMessage(channelId, options));
|
|
425
428
|
},
|
|
426
429
|
sendFollowupMessage: async (token, options)=>{
|
|
427
|
-
return bot.transformers.message(bot,
|
|
430
|
+
return bot.transformers.message(bot, await bot.rest.snake.sendFollowupMessage(token, options));
|
|
428
431
|
},
|
|
429
432
|
startThreadWithMessage: async (channelId, messageId, options, reason)=>{
|
|
430
|
-
return bot.transformers.channel(bot,
|
|
433
|
+
return bot.transformers.channel(bot, await bot.rest.snake.startThreadWithMessage(channelId, messageId, options, reason));
|
|
431
434
|
},
|
|
432
435
|
startThreadWithoutMessage: async (channelId, options, reason)=>{
|
|
433
|
-
return bot.transformers.channel(bot,
|
|
436
|
+
return bot.transformers.channel(bot, await bot.rest.snake.startThreadWithoutMessage(channelId, options, reason));
|
|
437
|
+
},
|
|
438
|
+
getPollAnswerVoters: async (channelId, messageId, answerId, options)=>{
|
|
439
|
+
const res = await bot.rest.snake.getPollAnswerVoters(channelId, messageId, answerId, options);
|
|
440
|
+
return {
|
|
441
|
+
users: res.users.map((user)=>bot.transformers.user(bot, user))
|
|
442
|
+
};
|
|
443
|
+
},
|
|
444
|
+
endPoll: async (channelId, messageId)=>{
|
|
445
|
+
return bot.transformers.message(bot, await bot.rest.snake.endPoll(channelId, messageId));
|
|
434
446
|
},
|
|
435
447
|
syncGuildTemplate: async (guildId)=>{
|
|
436
|
-
return bot.transformers.template(bot,
|
|
448
|
+
return bot.transformers.template(bot, await bot.rest.snake.syncGuildTemplate(guildId));
|
|
437
449
|
},
|
|
438
450
|
upsertGlobalApplicationCommands: async (commands, options)=>{
|
|
439
|
-
return (await bot.rest.upsertGlobalApplicationCommands(commands, options)).map((res)=>bot.transformers.applicationCommand(bot,
|
|
451
|
+
return (await bot.rest.snake.upsertGlobalApplicationCommands(commands, options)).map((res)=>bot.transformers.applicationCommand(bot, res));
|
|
440
452
|
},
|
|
441
453
|
upsertGuildApplicationCommands: async (guildId, commands, options)=>{
|
|
442
|
-
return (await bot.rest.upsertGuildApplicationCommands(guildId, commands, options)).map((res)=>bot.transformers.applicationCommand(bot,
|
|
454
|
+
return (await bot.rest.snake.upsertGuildApplicationCommands(guildId, commands, options)).map((res)=>bot.transformers.applicationCommand(bot, res));
|
|
443
455
|
},
|
|
444
456
|
editCurrentMember: async (guildId, options, reason)=>{
|
|
445
|
-
return bot.transformers.member(bot,
|
|
457
|
+
return bot.transformers.member(bot, await bot.rest.snake.editCurrentMember(guildId, options, reason), {
|
|
446
458
|
guildId,
|
|
447
459
|
userId: bot.id
|
|
448
460
|
});
|
|
449
461
|
},
|
|
450
462
|
editMember: async (guildId, userId, options, reason)=>{
|
|
451
|
-
return bot.transformers.member(bot,
|
|
463
|
+
return bot.transformers.member(bot, await bot.rest.snake.editMember(guildId, userId, options, reason), {
|
|
452
464
|
guildId,
|
|
453
465
|
userId
|
|
454
466
|
});
|
|
455
467
|
},
|
|
456
468
|
getCurrentMember: async (guildId, bearerToken)=>{
|
|
457
|
-
const res = await bot.rest.getCurrentMember(guildId, bearerToken);
|
|
458
|
-
return bot.transformers.member(bot,
|
|
469
|
+
const res = await bot.rest.snake.getCurrentMember(guildId, bearerToken);
|
|
470
|
+
return bot.transformers.member(bot, res, {
|
|
459
471
|
guildId,
|
|
460
472
|
userId: bot.transformers.snowflake(res.user.id)
|
|
461
473
|
});
|
|
462
474
|
},
|
|
463
475
|
getMember: async (guildId, userId)=>{
|
|
464
|
-
return bot.transformers.member(bot,
|
|
476
|
+
return bot.transformers.member(bot, await bot.rest.snake.getMember(guildId, userId), {
|
|
465
477
|
guildId,
|
|
466
478
|
userId
|
|
467
479
|
});
|
|
468
480
|
},
|
|
469
481
|
getMembers: async (guildId, options)=>{
|
|
470
|
-
return (await bot.rest.getMembers(guildId, options)).map((res)=>bot.transformers.member(bot,
|
|
482
|
+
return (await bot.rest.snake.getMembers(guildId, options)).map((res)=>bot.transformers.member(bot, res, {
|
|
471
483
|
guildId,
|
|
472
484
|
userId: bot.transformers.snowflake(res.user.id)
|
|
473
485
|
}));
|
|
474
486
|
},
|
|
475
487
|
pruneMembers: async (guildId, options, reason)=>{
|
|
476
|
-
return await bot.rest.pruneMembers(guildId, options, reason);
|
|
488
|
+
return await bot.rest.snake.pruneMembers(guildId, options, reason);
|
|
477
489
|
},
|
|
478
490
|
searchMembers: async (guildId, query, options)=>{
|
|
479
|
-
return (await bot.rest.searchMembers(guildId, query, options)).map((res)=>bot.transformers.member(bot,
|
|
491
|
+
return (await bot.rest.snake.searchMembers(guildId, query, options)).map((res)=>bot.transformers.member(bot, res, {
|
|
480
492
|
guildId,
|
|
481
493
|
userId: bot.transformers.snowflake(res.user.id)
|
|
482
494
|
}));
|
|
@@ -498,269 +510,277 @@ export function createBotHelpers(bot) {
|
|
|
498
510
|
return await bot.rest.updateApplicationRoleConnectionsMetadataRecords(applicationId, options);
|
|
499
511
|
},
|
|
500
512
|
createLobby: async (options)=>{
|
|
501
|
-
return bot.transformers.lobby(bot,
|
|
513
|
+
return bot.transformers.lobby(bot, await bot.rest.snake.createLobby(options));
|
|
502
514
|
},
|
|
503
515
|
createOrJoinLobby: async (options)=>{
|
|
504
|
-
return bot.transformers.lobby(bot,
|
|
516
|
+
return bot.transformers.lobby(bot, await bot.rest.snake.createOrJoinLobby(options));
|
|
505
517
|
},
|
|
506
518
|
getLobby: async (lobbyId)=>{
|
|
507
|
-
return bot.transformers.lobby(bot,
|
|
519
|
+
return bot.transformers.lobby(bot, await bot.rest.snake.getLobby(lobbyId));
|
|
508
520
|
},
|
|
509
521
|
modifyLobby: async (lobbyId, options)=>{
|
|
510
|
-
return bot.transformers.lobby(bot,
|
|
522
|
+
return bot.transformers.lobby(bot, await bot.rest.snake.modifyLobby(lobbyId, options));
|
|
511
523
|
},
|
|
512
524
|
addMemberToLobby: async (lobbyId, userId, options)=>{
|
|
513
|
-
return bot.transformers.lobbyMember(bot,
|
|
525
|
+
return bot.transformers.lobbyMember(bot, await bot.rest.snake.addMemberToLobby(lobbyId, userId, options));
|
|
514
526
|
},
|
|
515
527
|
bulkUpdateLobbyMembers: async (lobbyId, options)=>{
|
|
516
|
-
return (await bot.rest.bulkUpdateLobbyMembers(lobbyId, options)).map((res)=>bot.transformers.lobbyMember(bot,
|
|
528
|
+
return (await bot.rest.snake.bulkUpdateLobbyMembers(lobbyId, options)).map((res)=>bot.transformers.lobbyMember(bot, res));
|
|
517
529
|
},
|
|
518
530
|
linkChannelToLobby: async (lobbyId, bearerToken, options)=>{
|
|
519
|
-
return bot.transformers.lobby(bot,
|
|
531
|
+
return bot.transformers.lobby(bot, await bot.rest.snake.linkChannelToLobby(lobbyId, bearerToken, options));
|
|
520
532
|
},
|
|
521
533
|
unlinkChannelToLobby: async (lobbyId, bearerToken)=>{
|
|
522
|
-
return bot.transformers.lobby(bot,
|
|
534
|
+
return bot.transformers.lobby(bot, await bot.rest.snake.unlinkChannelToLobby(lobbyId, bearerToken));
|
|
523
535
|
},
|
|
524
536
|
updateLobbyMessageModerationMetadata: async (lobbyId, messageId, options)=>{
|
|
525
|
-
return await bot.rest.updateLobbyMessageModerationMetadata(lobbyId, messageId, options);
|
|
537
|
+
return await bot.rest.snake.updateLobbyMessageModerationMetadata(lobbyId, messageId, options);
|
|
526
538
|
},
|
|
527
539
|
sendLobbyMessage: async (bearerToken, lobbyId, options)=>{
|
|
528
|
-
return bot.transformers.lobbyMessage(bot,
|
|
540
|
+
return bot.transformers.lobbyMessage(bot, await bot.rest.snake.sendLobbyMessage(bearerToken, lobbyId, options));
|
|
529
541
|
},
|
|
530
542
|
getLobbyMessages: async (bearerToken, lobbyId, options)=>{
|
|
531
|
-
return (await bot.rest.getLobbyMessages(bearerToken, lobbyId, options)).map((res)=>bot.transformers.lobbyMessage(bot,
|
|
543
|
+
return (await bot.rest.snake.getLobbyMessages(bearerToken, lobbyId, options)).map((res)=>bot.transformers.lobbyMessage(bot, res));
|
|
532
544
|
},
|
|
533
545
|
createLobbyChannelInviteForSelf: async (bearerToken, lobbyId)=>{
|
|
534
|
-
return bot.transformers.lobbyInvite(bot,
|
|
546
|
+
return bot.transformers.lobbyInvite(bot, await bot.rest.snake.createLobbyChannelInviteForSelf(bearerToken, lobbyId));
|
|
535
547
|
},
|
|
536
548
|
createLobbyChannelInviteForUser: async (lobbyId, userId)=>{
|
|
537
|
-
return bot.transformers.lobbyInvite(bot,
|
|
549
|
+
return bot.transformers.lobbyInvite(bot, await bot.rest.snake.createLobbyChannelInviteForUser(lobbyId, userId));
|
|
538
550
|
},
|
|
539
551
|
getTargetUsers: async (inviteCode)=>{
|
|
540
|
-
return await bot.rest.getTargetUsers(inviteCode);
|
|
552
|
+
return await bot.rest.snake.getTargetUsers(inviteCode);
|
|
541
553
|
},
|
|
542
554
|
updateTargetUsers: async (inviteCode, targetUsersFile)=>{
|
|
543
|
-
await bot.rest.updateTargetUsers(inviteCode, targetUsersFile);
|
|
555
|
+
await bot.rest.snake.updateTargetUsers(inviteCode, targetUsersFile);
|
|
544
556
|
},
|
|
545
557
|
getTargetUsersJobStatus: async (inviteCode)=>{
|
|
546
558
|
return await bot.rest.getTargetUsersJobStatus(inviteCode);
|
|
547
559
|
},
|
|
548
|
-
// All useless void return functions here
|
|
549
560
|
addReaction: async (channelId, messageId, reaction)=>{
|
|
550
|
-
return await bot.rest.addReaction(channelId, messageId, reaction);
|
|
561
|
+
return await bot.rest.snake.addReaction(channelId, messageId, reaction);
|
|
551
562
|
},
|
|
552
563
|
addReactions: async (channelId, messageId, reactions, ordered)=>{
|
|
553
|
-
return await bot.rest.addReactions(channelId, messageId, reactions, ordered);
|
|
564
|
+
return await bot.rest.snake.addReactions(channelId, messageId, reactions, ordered);
|
|
554
565
|
},
|
|
555
566
|
addRole: async (guildId, userId, roleId, reason)=>{
|
|
556
|
-
return await bot.rest.addRole(guildId, userId, roleId, reason);
|
|
567
|
+
return await bot.rest.snake.addRole(guildId, userId, roleId, reason);
|
|
557
568
|
},
|
|
558
569
|
addThreadMember: async (channelId, userId)=>{
|
|
559
|
-
return await bot.rest.addThreadMember(channelId, userId);
|
|
570
|
+
return await bot.rest.snake.addThreadMember(channelId, userId);
|
|
560
571
|
},
|
|
561
572
|
addDmRecipient: async (channelId, userId, options)=>{
|
|
562
|
-
return await bot.rest.addDmRecipient(channelId, userId, options);
|
|
573
|
+
return await bot.rest.snake.addDmRecipient(channelId, userId, options);
|
|
563
574
|
},
|
|
564
575
|
addGuildMember: async (guildId, userId, options)=>{
|
|
565
|
-
return await bot.rest.addGuildMember(guildId, userId, options);
|
|
576
|
+
return await bot.rest.snake.addGuildMember(guildId, userId, options);
|
|
566
577
|
},
|
|
567
578
|
deleteAutomodRule: async (guildId, ruleId, reason)=>{
|
|
568
|
-
return await bot.rest.deleteAutomodRule(guildId, ruleId, reason);
|
|
579
|
+
return await bot.rest.snake.deleteAutomodRule(guildId, ruleId, reason);
|
|
580
|
+
},
|
|
581
|
+
setVoiceChannelStatus: async (channelId, options, reason)=>{
|
|
582
|
+
return await bot.rest.snake.setVoiceChannelStatus(channelId, options, reason);
|
|
569
583
|
},
|
|
570
584
|
deleteChannel: async (channelId, reason)=>{
|
|
571
|
-
return await bot.rest.deleteChannel(channelId, reason);
|
|
585
|
+
return await bot.rest.snake.deleteChannel(channelId, reason);
|
|
572
586
|
},
|
|
573
587
|
deleteChannelPermissionOverride: async (channelId, overwriteId, reason)=>{
|
|
574
|
-
return await bot.rest.deleteChannelPermissionOverride(channelId, overwriteId, reason);
|
|
588
|
+
return await bot.rest.snake.deleteChannelPermissionOverride(channelId, overwriteId, reason);
|
|
575
589
|
},
|
|
576
590
|
deleteEmoji: async (guildId, id, reason)=>{
|
|
577
|
-
return await bot.rest.deleteEmoji(guildId, id, reason);
|
|
591
|
+
return await bot.rest.snake.deleteEmoji(guildId, id, reason);
|
|
578
592
|
},
|
|
579
593
|
deleteApplicationEmoji: async (id)=>{
|
|
580
|
-
return await bot.rest.deleteApplicationEmoji(id);
|
|
594
|
+
return await bot.rest.snake.deleteApplicationEmoji(id);
|
|
581
595
|
},
|
|
582
596
|
deleteFollowupMessage: async (token, messageId)=>{
|
|
583
|
-
return await bot.rest.deleteFollowupMessage(token, messageId);
|
|
597
|
+
return await bot.rest.snake.deleteFollowupMessage(token, messageId);
|
|
584
598
|
},
|
|
585
599
|
deleteGlobalApplicationCommand: async (commandId)=>{
|
|
586
|
-
return await bot.rest.deleteGlobalApplicationCommand(commandId);
|
|
600
|
+
return await bot.rest.snake.deleteGlobalApplicationCommand(commandId);
|
|
587
601
|
},
|
|
588
602
|
deleteGuildApplicationCommand: async (commandId, guildId)=>{
|
|
589
|
-
return await bot.rest.deleteGuildApplicationCommand(commandId, guildId);
|
|
603
|
+
return await bot.rest.snake.deleteGuildApplicationCommand(commandId, guildId);
|
|
590
604
|
},
|
|
591
605
|
deleteGuildSticker: async (guildId, stickerId, reason)=>{
|
|
592
|
-
return await bot.rest.deleteGuildSticker(guildId, stickerId, reason);
|
|
606
|
+
return await bot.rest.snake.deleteGuildSticker(guildId, stickerId, reason);
|
|
593
607
|
},
|
|
594
608
|
deleteGuildTemplate: async (guildId, templateCode)=>{
|
|
595
|
-
return await bot.rest.deleteGuildTemplate(guildId, templateCode);
|
|
609
|
+
return await bot.rest.snake.deleteGuildTemplate(guildId, templateCode);
|
|
596
610
|
},
|
|
597
611
|
deleteIntegration: async (guildId, integrationId, reason)=>{
|
|
598
|
-
return await bot.rest.deleteIntegration(guildId, integrationId, reason);
|
|
612
|
+
return await bot.rest.snake.deleteIntegration(guildId, integrationId, reason);
|
|
599
613
|
},
|
|
600
614
|
deleteInvite: async (inviteCode, reason)=>{
|
|
601
|
-
return await bot.rest.deleteInvite(inviteCode, reason);
|
|
615
|
+
return await bot.rest.snake.deleteInvite(inviteCode, reason);
|
|
602
616
|
},
|
|
603
617
|
deleteMessage: async (channelId, messageId, reason)=>{
|
|
604
|
-
return await bot.rest.deleteMessage(channelId, messageId, reason);
|
|
618
|
+
return await bot.rest.snake.deleteMessage(channelId, messageId, reason);
|
|
605
619
|
},
|
|
606
620
|
deleteMessages: async (channelId, messageIds, reason)=>{
|
|
607
|
-
return await bot.rest.deleteMessages(channelId, messageIds, reason);
|
|
621
|
+
return await bot.rest.snake.deleteMessages(channelId, messageIds, reason);
|
|
608
622
|
},
|
|
609
623
|
deleteOriginalInteractionResponse: async (token)=>{
|
|
610
|
-
return await bot.rest.deleteOriginalInteractionResponse(token);
|
|
624
|
+
return await bot.rest.snake.deleteOriginalInteractionResponse(token);
|
|
611
625
|
},
|
|
612
626
|
deleteOwnReaction: async (channelId, messageId, reaction)=>{
|
|
613
|
-
return await bot.rest.deleteOwnReaction(channelId, messageId, reaction);
|
|
627
|
+
return await bot.rest.snake.deleteOwnReaction(channelId, messageId, reaction);
|
|
614
628
|
},
|
|
615
629
|
deleteReactionsAll: async (channelId, messageId)=>{
|
|
616
|
-
return await bot.rest.deleteReactionsAll(channelId, messageId);
|
|
630
|
+
return await bot.rest.snake.deleteReactionsAll(channelId, messageId);
|
|
617
631
|
},
|
|
618
632
|
deleteReactionsEmoji: async (channelId, messageId, reaction)=>{
|
|
619
|
-
return await bot.rest.deleteReactionsEmoji(channelId, messageId, reaction);
|
|
633
|
+
return await bot.rest.snake.deleteReactionsEmoji(channelId, messageId, reaction);
|
|
620
634
|
},
|
|
621
635
|
deleteRole: async (guildId, roleId, reason)=>{
|
|
622
|
-
return await bot.rest.deleteRole(guildId, roleId, reason);
|
|
636
|
+
return await bot.rest.snake.deleteRole(guildId, roleId, reason);
|
|
623
637
|
},
|
|
624
638
|
deleteScheduledEvent: async (guildId, eventId)=>{
|
|
625
|
-
return await bot.rest.deleteScheduledEvent(guildId, eventId);
|
|
639
|
+
return await bot.rest.snake.deleteScheduledEvent(guildId, eventId);
|
|
626
640
|
},
|
|
627
641
|
deleteStageInstance: async (channelId, reason)=>{
|
|
628
|
-
return await bot.rest.deleteStageInstance(channelId, reason);
|
|
642
|
+
return await bot.rest.snake.deleteStageInstance(channelId, reason);
|
|
629
643
|
},
|
|
630
644
|
deleteUserReaction: async (channelId, messageId, userId, reaction)=>{
|
|
631
|
-
return await bot.rest.deleteUserReaction(channelId, messageId, userId, reaction);
|
|
645
|
+
return await bot.rest.snake.deleteUserReaction(channelId, messageId, userId, reaction);
|
|
632
646
|
},
|
|
633
647
|
deleteWebhook: async (webhookId, reason)=>{
|
|
634
|
-
return await bot.rest.deleteWebhook(webhookId, reason);
|
|
648
|
+
return await bot.rest.snake.deleteWebhook(webhookId, reason);
|
|
635
649
|
},
|
|
636
650
|
deleteWebhookMessage: async (webhookId, token, messageId, options)=>{
|
|
637
|
-
return await bot.rest.deleteWebhookMessage(webhookId, token, messageId, options);
|
|
651
|
+
return await bot.rest.snake.deleteWebhookMessage(webhookId, token, messageId, options);
|
|
638
652
|
},
|
|
639
653
|
deleteWebhookWithToken: async (webhookId, token)=>{
|
|
640
|
-
return await bot.rest.deleteWebhookWithToken(webhookId, token);
|
|
654
|
+
return await bot.rest.snake.deleteWebhookWithToken(webhookId, token);
|
|
641
655
|
},
|
|
642
656
|
editChannelPermissionOverrides: async (channelId, options, reason)=>{
|
|
643
|
-
return await bot.rest.editChannelPermissionOverrides(channelId, options, reason);
|
|
657
|
+
return await bot.rest.snake.editChannelPermissionOverrides(channelId, options, reason);
|
|
644
658
|
},
|
|
645
659
|
editChannelPositions: async (guildId, channelPositions)=>{
|
|
646
|
-
return await bot.rest.editChannelPositions(guildId, channelPositions);
|
|
660
|
+
return await bot.rest.snake.editChannelPositions(guildId, channelPositions);
|
|
647
661
|
},
|
|
648
662
|
editOwnVoiceState: async (guildId, options)=>{
|
|
649
|
-
return await bot.rest.editOwnVoiceState(guildId, options);
|
|
663
|
+
return await bot.rest.snake.editOwnVoiceState(guildId, options);
|
|
650
664
|
},
|
|
651
665
|
editUserVoiceState: async (guildId, options)=>{
|
|
652
|
-
return await bot.rest.editUserVoiceState(guildId, options);
|
|
666
|
+
return await bot.rest.snake.editUserVoiceState(guildId, options);
|
|
653
667
|
},
|
|
654
668
|
editUserApplicationRoleConnection: async (bearerToken, applicationId, options)=>{
|
|
655
669
|
return await bot.rest.editUserApplicationRoleConnection(bearerToken, applicationId, options);
|
|
656
670
|
},
|
|
657
671
|
deleteCurrentUserApplicationRoleConnection: async (bearerToken, applicationId)=>{
|
|
658
|
-
return await bot.rest.deleteCurrentUserApplicationRoleConnection(bearerToken, applicationId);
|
|
672
|
+
return await bot.rest.snake.deleteCurrentUserApplicationRoleConnection(bearerToken, applicationId);
|
|
659
673
|
},
|
|
660
674
|
joinThread: async (channelId)=>{
|
|
661
|
-
return await bot.rest.joinThread(channelId);
|
|
675
|
+
return await bot.rest.snake.joinThread(channelId);
|
|
662
676
|
},
|
|
663
677
|
leaveGuild: async (guildId)=>{
|
|
664
|
-
return await bot.rest.leaveGuild(guildId);
|
|
678
|
+
return await bot.rest.snake.leaveGuild(guildId);
|
|
665
679
|
},
|
|
666
680
|
leaveThread: async (channelId)=>{
|
|
667
|
-
return await bot.rest.leaveThread(channelId);
|
|
681
|
+
return await bot.rest.snake.leaveThread(channelId);
|
|
668
682
|
},
|
|
669
683
|
removeRole: async (guildId, userId, roleId, reason)=>{
|
|
670
|
-
return await bot.rest.removeRole(guildId, userId, roleId, reason);
|
|
684
|
+
return await bot.rest.snake.removeRole(guildId, userId, roleId, reason);
|
|
671
685
|
},
|
|
672
686
|
removeThreadMember: async (channelId, userId)=>{
|
|
673
|
-
return await bot.rest.removeThreadMember(channelId, userId);
|
|
687
|
+
return await bot.rest.snake.removeThreadMember(channelId, userId);
|
|
674
688
|
},
|
|
675
689
|
removeDmRecipient: async (channelId, userId)=>{
|
|
676
|
-
return await bot.rest.removeDmRecipient(channelId, userId);
|
|
690
|
+
return await bot.rest.snake.removeDmRecipient(channelId, userId);
|
|
677
691
|
},
|
|
678
692
|
sendInteractionResponse: async (interactionId, token, options, params)=>{
|
|
679
|
-
const response = await bot.rest.sendInteractionResponse(interactionId, token, options, params);
|
|
693
|
+
const response = await bot.rest.snake.sendInteractionResponse(interactionId, token, options, params);
|
|
680
694
|
if (!response) return;
|
|
681
|
-
return bot.transformers.interactionCallbackResponse(bot,
|
|
695
|
+
return bot.transformers.interactionCallbackResponse(bot, response);
|
|
682
696
|
},
|
|
683
697
|
triggerTypingIndicator: async (channelId)=>{
|
|
684
|
-
return await bot.rest.triggerTypingIndicator(channelId);
|
|
698
|
+
return await bot.rest.snake.triggerTypingIndicator(channelId);
|
|
685
699
|
},
|
|
686
700
|
banMember: async (guildId, userId, options, reason)=>{
|
|
687
|
-
return await bot.rest.banMember(guildId, userId, options, reason);
|
|
701
|
+
return await bot.rest.snake.banMember(guildId, userId, options, reason);
|
|
688
702
|
},
|
|
689
703
|
kickMember: async (guildId, userId, reason)=>{
|
|
690
|
-
return await bot.rest.kickMember(guildId, userId, reason);
|
|
704
|
+
return await bot.rest.snake.kickMember(guildId, userId, reason);
|
|
691
705
|
},
|
|
692
706
|
pinMessage: async (channelId, messageId, reason)=>{
|
|
693
|
-
return await bot.rest.pinMessage(channelId, messageId, reason);
|
|
707
|
+
return await bot.rest.snake.pinMessage(channelId, messageId, reason);
|
|
694
708
|
},
|
|
695
709
|
unbanMember: async (guildId, userId, reason)=>{
|
|
696
|
-
return await bot.rest.unbanMember(guildId, userId, reason);
|
|
710
|
+
return await bot.rest.snake.unbanMember(guildId, userId, reason);
|
|
697
711
|
},
|
|
698
712
|
unpinMessage: async (channelId, messageId, reason)=>{
|
|
699
|
-
return await bot.rest.unpinMessage(channelId, messageId, reason);
|
|
713
|
+
return await bot.rest.snake.unpinMessage(channelId, messageId, reason);
|
|
700
714
|
},
|
|
701
715
|
getGuildOnboarding: async (guildId)=>{
|
|
702
|
-
return bot.transformers.guildOnboarding(bot,
|
|
716
|
+
return bot.transformers.guildOnboarding(bot, await bot.rest.snake.getGuildOnboarding(guildId));
|
|
703
717
|
},
|
|
704
718
|
editGuildOnboarding: async (guildId, options, reason)=>{
|
|
705
|
-
return bot.transformers.guildOnboarding(bot,
|
|
719
|
+
return bot.transformers.guildOnboarding(bot, await bot.rest.snake.editGuildOnboarding(guildId, options, reason));
|
|
720
|
+
},
|
|
721
|
+
modifyGuildIncidentActions: async (guildId, options)=>{
|
|
722
|
+
return bot.transformers.incidentsData(bot, await bot.rest.snake.modifyGuildIncidentActions(guildId, options));
|
|
706
723
|
},
|
|
707
724
|
listEntitlements: async (applicationId, options)=>{
|
|
708
|
-
return (await bot.rest.listEntitlements(applicationId, options)).map((entitlement)=>bot.transformers.entitlement(bot,
|
|
725
|
+
return (await bot.rest.snake.listEntitlements(applicationId, options)).map((entitlement)=>bot.transformers.entitlement(bot, entitlement));
|
|
709
726
|
},
|
|
710
727
|
getEntitlement: async (applicationId, entitlementId)=>{
|
|
711
|
-
return bot.transformers.entitlement(bot,
|
|
728
|
+
return bot.transformers.entitlement(bot, await bot.rest.snake.getEntitlement(applicationId, entitlementId));
|
|
712
729
|
},
|
|
713
730
|
createTestEntitlement: async (applicationId, body)=>{
|
|
714
|
-
return bot.transformers.entitlement(bot,
|
|
731
|
+
return bot.transformers.entitlement(bot, await bot.rest.snake.createTestEntitlement(applicationId, body), {
|
|
715
732
|
partial: true
|
|
716
733
|
});
|
|
717
734
|
},
|
|
718
735
|
deleteTestEntitlement: async (applicationId, entitlementId)=>{
|
|
719
|
-
await bot.rest.deleteTestEntitlement(applicationId, entitlementId);
|
|
736
|
+
await bot.rest.snake.deleteTestEntitlement(applicationId, entitlementId);
|
|
737
|
+
},
|
|
738
|
+
consumeEntitlement: async (applicationId, entitlementId)=>{
|
|
739
|
+
await bot.rest.snake.consumeEntitlement(applicationId, entitlementId);
|
|
720
740
|
},
|
|
721
741
|
listSkus: async (applicationId)=>{
|
|
722
|
-
return (await bot.rest.listSkus(applicationId)).map((sku)=>bot.transformers.sku(bot,
|
|
742
|
+
return (await bot.rest.snake.listSkus(applicationId)).map((sku)=>bot.transformers.sku(bot, sku));
|
|
723
743
|
},
|
|
724
744
|
getSubscription: async (skuId, subscriptionId)=>{
|
|
725
|
-
return bot.transformers.subscription(bot,
|
|
745
|
+
return bot.transformers.subscription(bot, await bot.rest.snake.getSubscription(skuId, subscriptionId));
|
|
726
746
|
},
|
|
727
747
|
listSubscriptions: async (skuId, options)=>{
|
|
728
|
-
return (await bot.rest.listSubscriptions(skuId, options)).map((subscription)=>bot.transformers.subscription(bot,
|
|
748
|
+
return (await bot.rest.snake.listSubscriptions(skuId, options)).map((subscription)=>bot.transformers.subscription(bot, subscription));
|
|
729
749
|
},
|
|
730
750
|
sendSoundboardSound: async (channelId, options)=>{
|
|
731
|
-
await bot.rest.sendSoundboardSound(channelId, options);
|
|
751
|
+
await bot.rest.snake.sendSoundboardSound(channelId, options);
|
|
732
752
|
},
|
|
733
753
|
listDefaultSoundboardSounds: async ()=>{
|
|
734
|
-
return (await bot.rest.listDefaultSoundboardSounds()).map((sound)=>bot.transformers.soundboardSound(bot,
|
|
754
|
+
return (await bot.rest.snake.listDefaultSoundboardSounds()).map((sound)=>bot.transformers.soundboardSound(bot, sound));
|
|
735
755
|
},
|
|
736
756
|
listGuildSoundboardSounds: async (guildId)=>{
|
|
737
|
-
const res = await bot.rest.listGuildSoundboardSounds(guildId);
|
|
757
|
+
const res = await bot.rest.snake.listGuildSoundboardSounds(guildId);
|
|
738
758
|
return {
|
|
739
|
-
items: res.items.map((sound)=>bot.transformers.soundboardSound(bot,
|
|
759
|
+
items: res.items.map((sound)=>bot.transformers.soundboardSound(bot, sound))
|
|
740
760
|
};
|
|
741
761
|
},
|
|
742
762
|
getGuildSoundboardSound: async (guildId, soundId)=>{
|
|
743
|
-
return bot.transformers.soundboardSound(bot,
|
|
763
|
+
return bot.transformers.soundboardSound(bot, await bot.rest.snake.getGuildSoundboardSound(guildId, soundId));
|
|
744
764
|
},
|
|
745
765
|
createGuildSoundboardSound: async (guildId, options, reason)=>{
|
|
746
|
-
return bot.transformers.soundboardSound(bot,
|
|
766
|
+
return bot.transformers.soundboardSound(bot, await bot.rest.snake.createGuildSoundboardSound(guildId, options, reason));
|
|
747
767
|
},
|
|
748
768
|
modifyGuildSoundboardSound: async (guildId, soundId, options, reason)=>{
|
|
749
|
-
return bot.transformers.soundboardSound(bot,
|
|
769
|
+
return bot.transformers.soundboardSound(bot, await bot.rest.snake.modifyGuildSoundboardSound(guildId, soundId, options, reason));
|
|
750
770
|
},
|
|
751
771
|
deleteGuildSoundboardSound: async (guildId, soundId, reason)=>{
|
|
752
|
-
await bot.rest.deleteGuildSoundboardSound(guildId, soundId, reason);
|
|
772
|
+
await bot.rest.snake.deleteGuildSoundboardSound(guildId, soundId, reason);
|
|
753
773
|
},
|
|
754
774
|
deleteLobby: async (lobbyId)=>{
|
|
755
|
-
await bot.rest.deleteLobby(lobbyId);
|
|
775
|
+
await bot.rest.snake.deleteLobby(lobbyId);
|
|
756
776
|
},
|
|
757
777
|
removeMemberFromLobby: async (lobbyId, userId)=>{
|
|
758
|
-
await bot.rest.removeMemberFromLobby(lobbyId, userId);
|
|
778
|
+
await bot.rest.snake.removeMemberFromLobby(lobbyId, userId);
|
|
759
779
|
},
|
|
760
780
|
leaveLobby: async (lobbyId, bearerToken)=>{
|
|
761
|
-
await bot.rest.leaveLobby(lobbyId, bearerToken);
|
|
781
|
+
await bot.rest.snake.leaveLobby(lobbyId, bearerToken);
|
|
762
782
|
}
|
|
763
783
|
};
|
|
764
784
|
}
|
|
765
785
|
|
|
766
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQWRkRG1SZWNpcGllbnRPcHRpb25zLFxuICBBZGRHdWlsZE1lbWJlck9wdGlvbnMsXG4gIEFkZExvYmJ5TWVtYmVyLFxuICBBdExlYXN0T25lLFxuICBCZWdpbkd1aWxkUHJ1bmUsXG4gIEJpZ1N0cmluZyxcbiAgQnVsa1VwZGF0ZUxvYmJ5TWVtYmVyLFxuICBDYW1lbGl6ZSxcbiAgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICBDcmVhdGVBcHBsaWNhdGlvbkVtb2ppLFxuICBDcmVhdGVBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLFxuICBDcmVhdGVDaGFubmVsSW52aXRlLFxuICBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSxcbiAgQ3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgQ3JlYXRlR3JvdXBEbU9wdGlvbnMsXG4gIENyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgQ3JlYXRlR3VpbGRCYW4sXG4gIENyZWF0ZUd1aWxkQnVsa0JhbixcbiAgQ3JlYXRlR3VpbGRDaGFubmVsLFxuICBDcmVhdGVHdWlsZEVtb2ppLFxuICBDcmVhdGVHdWlsZFJvbGUsXG4gIENyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kLFxuICBDcmVhdGVHdWlsZFN0aWNrZXJPcHRpb25zLFxuICBDcmVhdGVMb2JieSxcbiAgQ3JlYXRlTWVzc2FnZU9wdGlvbnMsXG4gIENyZWF0ZU9ySm9pbkxvYmJ5LFxuICBDcmVhdGVTY2hlZHVsZWRFdmVudCxcbiAgQ3JlYXRlU3RhZ2VJbnN0YW5jZSxcbiAgQ3JlYXRlVGVtcGxhdGUsXG4gIENyZWF0ZVRlc3RFbnRpdGxlbWVudCxcbiAgQ3JlYXRlV2ViaG9vayxcbiAgRGVsZXRlV2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBEaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZSxcbiAgRGlzY29yZEFjdGl2aXR5SW5zdGFuY2UsXG4gIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyxcbiAgRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24sXG4gIERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGEsXG4gIERpc2NvcmRBdWRpdExvZyxcbiAgRGlzY29yZEJhbixcbiAgRGlzY29yZENvbm5lY3Rpb24sXG4gIERpc2NvcmRDdXJyZW50QXV0aG9yaXphdGlvbixcbiAgRGlzY29yZEZvbGxvd2VkQ2hhbm5lbCxcbiAgRGlzY29yZEd1aWxkUHJldmlldyxcbiAgRGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIERpc2NvcmRJbnZpdGUsXG4gIERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzLFxuICBEaXNjb3JkUHJ1bmVkQ291bnQsXG4gIERpc2NvcmRTZWFyY2hHdWlsZE1lc3NhZ2VzLFxuICBEaXNjb3JkU2VhcmNoR3VpbGRNZXNzYWdlc0luZGV4aW5nLFxuICBEaXNjb3JkVGFyZ2V0VXNlcnNKb2JTdGF0dXMsXG4gIERpc2NvcmRUb2tlbkV4Y2hhbmdlLFxuICBEaXNjb3JkVG9rZW5SZXZvY2F0aW9uLFxuICBEaXNjb3JkVmFuaXR5VXJsLFxuICBFZGl0QXBwbGljYXRpb24sXG4gIEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLFxuICBFZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXNPcHRpb25zLFxuICBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICBFZGl0R3VpbGRSb2xlLFxuICBFZGl0R3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgRWRpdE1lc3NhZ2UsXG4gIEVkaXRPd25Wb2ljZVN0YXRlLFxuICBFZGl0U2NoZWR1bGVkRXZlbnQsXG4gIEVkaXRVc2VyVm9pY2VTdGF0ZSxcbiAgRWRpdFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgRXhlY3V0ZVdlYmhvb2ssXG4gIEdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25PcHRpb25zLFxuICBHZXRCYW5zLFxuICBHZXRDaGFubmVsUGluc09wdGlvbnMsXG4gIEdldEVudGl0bGVtZW50cyxcbiAgR2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gIEdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gIEdldEd1aWxkQXVkaXRMb2csXG4gIEdldEd1aWxkUHJ1bmVDb3VudFF1ZXJ5LFxuICBHZXRJbnZpdGUsXG4gIEdldExvYmJ5TWVzc2FnZXMsXG4gIEdldE1lc3NhZ2VzT3B0aW9ucyxcbiAgR2V0UmVhY3Rpb25zLFxuICBHZXRTY2hlZHVsZWRFdmVudHMsXG4gIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsXG4gIEdldFRocmVhZE1lbWJlcixcbiAgR2V0VXNlckd1aWxkcyxcbiAgR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gIEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIExpbmtDaGFubmVsVG9Mb2JieSxcbiAgTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgTGlzdEd1aWxkTWVtYmVycyxcbiAgTGlzdFNrdVN1YnNjcmlwdGlvbnNPcHRpb25zLFxuICBMaXN0VGhyZWFkTWVtYmVycyxcbiAgTW9kaWZ5QXBwbGljYXRpb25FbW9qaSxcbiAgTW9kaWZ5Q2hhbm5lbCxcbiAgTW9kaWZ5Q3VycmVudE1lbWJlcixcbiAgTW9kaWZ5R3VpbGQsXG4gIE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9ucyxcbiAgTW9kaWZ5R3VpbGRFbW9qaSxcbiAgTW9kaWZ5R3VpbGRNZW1iZXIsXG4gIE1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kLFxuICBNb2RpZnlHdWlsZFRlbXBsYXRlLFxuICBNb2RpZnlHdWlsZFdlbGNvbWVTY3JlZW4sXG4gIE1vZGlmeUxvYmJ5LFxuICBNb2RpZnlSb2xlUG9zaXRpb25zLFxuICBNb2RpZnlXZWJob29rLFxuICBTZWFyY2hHdWlsZE1lc3NhZ2VzT3B0aW9ucyxcbiAgU2VhcmNoTWVtYmVycyxcbiAgU2VuZExvYmJ5TWVzc2FnZSxcbiAgU2VuZFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgU3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSxcbiAgVXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgeyBzbmFrZWxpemUgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4vYm90LmpzJztcbmltcG9ydCB0eXBlIHsgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciwgU2V0dXBEZXNpcmVkUHJvcHMsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFRocmVhZE1lbWJlclRyYW5zZm9ybWVyRXh0cmEgfSBmcm9tICcuL3RyYW5zZm9ybWVycy90aHJlYWRNZW1iZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBcHBsaWNhdGlvbixcbiAgQXBwbGljYXRpb25Db21tYW5kLFxuICBBdXRvTW9kZXJhdGlvblJ1bGUsXG4gIENoYW5uZWwsXG4gIEVtb2ppLFxuICBFbnRpdGxlbWVudCxcbiAgR2V0R2F0ZXdheUJvdCxcbiAgR3VpbGQsXG4gIEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsXG4gIEd1aWxkT25ib2FyZGluZyxcbiAgR3VpbGRXaWRnZXQsXG4gIEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIEludGVncmF0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludml0ZSxcbiAgTG9iYnksXG4gIExvYmJ5SW52aXRlLFxuICBMb2JieU1lbWJlcixcbiAgTG9iYnlNZXNzYWdlLFxuICBNZW1iZXIsXG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VQaW4sXG4gIFJvbGUsXG4gIFNjaGVkdWxlZEV2ZW50LFxuICBTa3UsXG4gIFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhZ2VJbnN0YW5jZSxcbiAgU3RpY2tlcixcbiAgU3RpY2tlclBhY2ssXG4gIFN1YnNjcmlwdGlvbixcbiAgVGVtcGxhdGUsXG4gIFRocmVhZE1lbWJlcixcbiAgVXNlcixcbiAgVm9pY2VSZWdpb24sXG4gIFZvaWNlU3RhdGUsXG4gIFdlYmhvb2ssXG4gIFdlbGNvbWVTY3JlZW4sXG59IGZyb20gJy4vdHJhbnNmb3JtZXJzL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJvdEhlbHBlcnM8VFByb3BzIGV4dGVuZHMgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIFRCZWhhdmlvciBleHRlbmRzIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+KFxuICBib3Q6IEJvdDxUUHJvcHMsIFRCZWhhdmlvcj4sXG4pOiBCb3RIZWxwZXJzPFRQcm9wcywgVEJlaGF2aW9yPiB7XG4gIHJldHVybiB7XG4gICAgY3JlYXRlQXV0b21vZFJ1bGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmF1dG9tb2RSdWxlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUF1dG9tb2RSdWxlKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUNoYW5uZWw6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlQ2hhbm5lbChndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgY3JlYXRlRW1vamk6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUVtb2ppKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVBcHBsaWNhdGlvbkVtb2ppKG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVGb3J1bVRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUZvcnVtVGhyZWFkKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kLCBndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZCwgZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVHdWlsZFN0aWNrZXIoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUludml0ZTogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuY3JlYXRlSW52aXRlKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKTtcbiAgICB9LFxuICAgIGdldEd1aWxkUm9sZU1lbWJlckNvdW50czogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRHdWlsZFJvbGVNZW1iZXJDb3VudHMoZ3VpbGRJZCk7XG4gICAgfSxcbiAgICBjcmVhdGVSb2xlOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVJvbGUoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVTY2hlZHVsZWRFdmVudChndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBjcmVhdGVTdGFnZUluc3RhbmNlOiBhc3luYyAob3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGFnZUluc3RhbmNlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVN0YWdlSW5zdGFuY2Uob3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlV2ViaG9vazogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVdlYmhvb2soY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IGFzeW5jIChndWlsZElkLCBjb21tYW5kSWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKFxuICAgICAgICBib3QsXG4gICAgICAgIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMoZ3VpbGRJZCwgY29tbWFuZElkLCBiZWFyZXJUb2tlbiwgb3B0aW9ucykpLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGVkaXRBdXRvbW9kUnVsZTogYXN5bmMgKGd1aWxkSWQsIHJ1bGVJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0QXV0b21vZFJ1bGUoZ3VpbGRJZCwgcnVsZUlkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0Qm90UHJvZmlsZTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEJvdFByb2ZpbGUob3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdENoYW5uZWwoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0RW1vamk6IGFzeW5jIChndWlsZElkLCBpZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0RW1vamkoZ3VpbGRJZCwgaWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGVkaXRBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoaWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRBcHBsaWNhdGlvbkVtb2ppKGlkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdEZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0R3VpbGQoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkLCBndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRHdWlsZFN0aWNrZXI6IGFzeW5jIChndWlsZElkLCBzdGlja2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0R3VpbGRTdGlja2VyKGd1aWxkSWQsIHN0aWNrZXJJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkVGVtcGxhdGU6IGFzeW5jIChndWlsZElkLCB0ZW1wbGF0ZUNvZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRHdWlsZFRlbXBsYXRlKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAodG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbiwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRSb2xlOiBhc3luYyAoZ3VpbGRJZCwgcm9sZUlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFJvbGUoZ3VpbGRJZCwgcm9sZUlkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgZWRpdFJvbGVQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFJvbGVQb3NpdGlvbnMoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCByb2xlLCB7IGd1aWxkSWQgfSkpO1xuICAgIH0sXG4gICAgZWRpdFNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0U2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdFN0YWdlSW5zdGFuY2U6IGFzeW5jIChjaGFubmVsSWQsIHRvcGljLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0YWdlSW5zdGFuY2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFN0YWdlSW5zdGFuY2UoY2hhbm5lbElkLCB0b3BpYywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2ViaG9vayh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGVkaXRXZWJob29rTWVzc2FnZTogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2ViaG9va01lc3NhZ2Uod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdFdlYmhvb2tXaXRoVG9rZW46IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBlZGl0V2VsY29tZVNjcmVlbjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2VsY29tZVNjcmVlbihndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0V2lkZ2V0U2V0dGluZ3M6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndpZGdldFNldHRpbmdzKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRXaWRnZXRTZXR0aW5ncyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBleGVjdXRlV2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdC5yZXN0LmV4ZWN1dGVXZWJob29rKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcblxuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShyZXN1bHQpKTtcbiAgICB9LFxuICAgIGZvbGxvd0Fubm91bmNlbWVudDogYXN5bmMgKHNvdXJjZUNoYW5uZWxJZCwgdGFyZ2V0Q2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZm9sbG93QW5ub3VuY2VtZW50KHNvdXJjZUNoYW5uZWxJZCwgdGFyZ2V0Q2hhbm5lbElkKTtcbiAgICB9LFxuICAgIGdldEFjdGl2ZVRocmVhZHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBib3QucmVzdC5nZXRBY3RpdmVUaHJlYWRzKGd1aWxkSWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGhyZWFkczogcmVzdWx0LnRocmVhZHMubWFwKCh0aHJlYWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHNuYWtlbGl6ZSh0aHJlYWQpLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgICBtZW1iZXJzOiByZXN1bHQubWVtYmVycy5tYXAoKG1lbWJlcikgPT4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCBzbmFrZWxpemUobWVtYmVyKSwgeyBndWlsZElkIH0pKSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uSW5mbygpKSk7XG4gICAgfSxcbiAgICBlZGl0QXBwbGljYXRpb25JbmZvOiBhc3luYyAoYm9keSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb24oYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEFwcGxpY2F0aW9uSW5mbyhib2R5KSkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbzogYXN5bmMgKGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbyhiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgICBleGNoYW5nZVRva2VuOiBhc3luYyAoY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmV4Y2hhbmdlVG9rZW4oY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICByZXZva2VUb2tlbjogYXN5bmMgKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZXZva2VUb2tlbihjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb246IGFzeW5jIChndWlsZElkLCBjb21tYW5kSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24oZ3VpbGRJZCwgY29tbWFuZElkLCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IHNuYWtlZFJlcyA9IHNuYWtlbGl6ZShyZXMpO1xuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKGJvdCwgc25ha2VkUmVzKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbihib3QsIHNuYWtlbGl6ZShyZXMpKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBnZXRBdWRpdExvZzogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRBdWRpdExvZyhndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldEF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQpKSk7XG4gICAgfSxcbiAgICBnZXRBdXRvbW9kUnVsZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEF1dG9tb2RSdWxlcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXV0b21vZFJ1bGUoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEF2YWlsYWJsZVZvaWNlUmVnaW9ucygpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy52b2ljZVJlZ2lvbihib3QsIHNuYWtlbGl6ZShyZXMpKSk7XG4gICAgfSxcbiAgICBnZXRCYW46IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRCYW4oZ3VpbGRJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGdldEJhbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0QmFucyhndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldENoYW5uZWw6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0Q2hhbm5lbChjaGFubmVsSWQpKSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsSW52aXRlczogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRDaGFubmVsSW52aXRlcyhjaGFubmVsSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldENoYW5uZWxzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKHJlcyksIHsgZ3VpbGRJZCB9KSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsV2ViaG9va3M6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0Q2hhbm5lbFdlYmhvb2tzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0RG1DaGFubmVsOiBhc3luYyAodXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldERtQ2hhbm5lbCh1c2VySWQpKSk7XG4gICAgfSxcbiAgICBnZXRHcm91cERtQ2hhbm5lbDogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3JvdXBEbUNoYW5uZWwob3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGdldEVtb2ppOiBhc3luYyAoZ3VpbGRJZCwgZW1vamlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0RW1vamkoZ3VpbGRJZCwgZW1vamlJZCkpKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChlbW9qaUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkVtb2ppKGVtb2ppSWQpKSk7XG4gICAgfSxcbiAgICBnZXRFbW9qaXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEVtb2ppcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25FbW9qaXM6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uRW1vamlzKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXMuaXRlbXMubWFwKChpdGVtKSA9PiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGl0ZW0pKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0Rm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG1lc3NhZ2VJZCkpKTtcbiAgICB9LFxuICAgIGdldEdhdGV3YXlCb3Q6IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmdhdGV3YXlCb3QoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R2F0ZXdheUJvdCgpKSk7XG4gICAgfSxcbiAgICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkKSkpO1xuICAgIH0sXG4gICAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyhvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGQoZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkczogYXN5bmMgKGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkcyhiZWFyZXJUb2tlbiwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgc25ha2VsaXplKHJlcyksIHsgcGFydGlhbDogdHJ1ZSB9KSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZCkpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzKGd1aWxkSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRQcmV2aWV3OiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkUHJldmlldyhndWlsZElkKTtcbiAgICAgIC8vIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnh4eChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHdWlsZFByZXZpZXcoZ3VpbGRJZCkpKVxuICAgIH0sXG4gICAgZ2V0R3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkU3RpY2tlcihndWlsZElkLCBzdGlja2VySWQpKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZFN0aWNrZXJzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFN0aWNrZXJzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkVGVtcGxhdGU6IGFzeW5jICh0ZW1wbGF0ZUNvZGUpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkVGVtcGxhdGUodGVtcGxhdGVDb2RlKSkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRUZW1wbGF0ZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkVGVtcGxhdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy50ZW1wbGF0ZShib3QsIHNuYWtlbGl6ZShyZXMpKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZFdlYmhvb2tzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFdlYmhvb2tzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldEludGVncmF0aW9uczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0SW50ZWdyYXRpb25zKGd1aWxkSWQpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5pbnRlZ3JhdGlvbihib3QsIHNuYWtlbGl6ZSh7IC4uLnJlcywgZ3VpbGRJZDogZ3VpbGRJZC50b1N0cmluZygpIH0pKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBnZXRJbnZpdGU6IGFzeW5jIChpbnZpdGVDb2RlLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0SW52aXRlKGludml0ZUNvZGUsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRJbnZpdGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRJbnZpdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQpKSk7XG4gICAgfSxcbiAgICBnZXRNZXNzYWdlczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRNZXNzYWdlcyhjaGFubmVsSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrOiBhc3luYyAoc3RpY2tlclBhY2tJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3RpY2tlclBhY2soc3RpY2tlclBhY2tJZCkpKTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRTdGlja2VyUGFja3MoKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAodG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRva2VuKSkpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbFBpbnM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRDaGFubmVsUGlucyhjaGFubmVsSWQsIG9wdGlvbnMpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGFzTW9yZTogcmVzLmhhc19tb3JlLFxuICAgICAgICBpdGVtczogcmVzLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlUGluKGJvdCwgaXRlbSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldFBpbm5lZE1lc3NhZ2VzOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFBpbm5lZE1lc3NhZ2VzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFByaXZhdGVBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRQcnVuZUNvdW50OiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFBydW5lQ291bnQoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRQdWJsaWNBcmNoaXZlZFRocmVhZHM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRQdWJsaWNBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldFJvbGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRSb2xlcyhndWlsZElkKSkubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCByb2xlLCB7IGd1aWxkSWQgfSkpO1xuICAgIH0sXG4gICAgZ2V0Um9sZTogYXN5bmMgKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRSb2xlKGd1aWxkSWQsIHJvbGVJZCkpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudDogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFNjaGVkdWxlZEV2ZW50KGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudHM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFNjaGVkdWxlZEV2ZW50cyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc2NoZWR1bGVkRXZlbnQoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0U2NoZWR1bGVkRXZlbnRVc2VyczogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0U2NoZWR1bGVkRXZlbnRVc2VycyhndWlsZElkLCBldmVudElkLCBvcHRpb25zKSkubWFwKCh1KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdXNlcjogYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgc25ha2VsaXplKHUudXNlcikpLFxuICAgICAgICAgIG1lbWJlcjogdS5tZW1iZXIgJiYgYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBzbmFrZWxpemUodS5tZW1iZXIpLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UodS51c2VyLmlkKSB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0U2Vzc2lvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmdhdGV3YXlCb3QoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U2Vzc2lvbkluZm8oKSkpO1xuICAgIH0sXG4gICAgZ2V0U3RhZ2VJbnN0YW5jZTogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RhZ2VJbnN0YW5jZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCkpKTtcbiAgICB9LFxuICAgIGdldE93blZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy52b2ljZVN0YXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldE93blZvaWNlU3RhdGUoZ3VpbGRJZCkpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudm9pY2VTdGF0ZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRVc2VyVm9pY2VTdGF0ZShndWlsZElkLCB1c2VySWQpKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgZ2V0U3RpY2tlcjogYXN5bmMgKHN0aWNrZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRTdGlja2VyKHN0aWNrZXJJZCkpKTtcbiAgICB9LFxuICAgIGdldFRocmVhZE1lbWJlcjogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zLCBleHRyYSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGhyZWFkTWVtYmVyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFRocmVhZE1lbWJlcihjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucykpLCBleHRyYSk7XG4gICAgfSxcbiAgICBnZXRUaHJlYWRNZW1iZXJzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCBleHRyYSkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRUaHJlYWRNZW1iZXJzKGNoYW5uZWxJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHNuYWtlbGl6ZShyZXMpLCBleHRyYSkpO1xuICAgIH0sXG4gICAgZ2V0UmVhY3Rpb25zOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFJlYWN0aW9ucyhjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb24sIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldFVzZXI6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRVc2VyKGlkKSkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudFVzZXI6IGFzeW5jIChiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRDdXJyZW50VXNlcihiZWFyZXJUb2tlbikpKTtcbiAgICB9LFxuICAgIGdldFVzZXJDb25uZWN0aW9uczogYXN5bmMgKGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VXNlckNvbm5lY3Rpb25zKGJlYXJlclRva2VuKTtcbiAgICB9LFxuICAgIGdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiBhc3luYyAoYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICBnZXRWYW5pdHlVcmw6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VmFuaXR5VXJsKGd1aWxkSWQpO1xuICAgIH0sXG4gICAgZ2V0Vm9pY2VSZWdpb25zOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRWb2ljZVJlZ2lvbnMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnZvaWNlUmVnaW9uKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0V2ViaG9vayh3ZWJob29rSWQpKSk7XG4gICAgfSxcbiAgICBnZXRXZWJob29rTWVzc2FnZTogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRXZWJob29rV2l0aFRva2VuOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pKSk7XG4gICAgfSxcbiAgICBnZXRXZWxjb21lU2NyZWVuOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWxjb21lU2NyZWVuKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBnZXRXaWRnZXQ6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53aWRnZXQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0V2lkZ2V0KGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBnZXRXaWRnZXRTZXR0aW5nczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndpZGdldFNldHRpbmdzKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFdpZGdldFNldHRpbmdzKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBwdWJsaXNoTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnB1Ymxpc2hNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSkpO1xuICAgIH0sXG4gICAgc2VhcmNoR3VpbGRNZXNzYWdlczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdC5yZXN0LnNlYXJjaEd1aWxkTWVzc2FnZXMoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgICBpZiAoJ2NvZGUnIGluIHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcy5tYXAoKG1lc3NhZ2VzKSA9PiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShtZXNzYWdlKSkpKSxcbiAgICAgICAgdGhyZWFkczogcmVzdWx0LnRocmVhZHM/Lm1hcCgodGhyZWFkKSA9PiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUodGhyZWFkKSwgeyBndWlsZElkIH0pKSxcbiAgICAgICAgbWVtYmVyczogcmVzdWx0Lm1lbWJlcnM/Lm1hcCgobWVtYmVyKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHNuYWtlbGl6ZShtZW1iZXIpLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHNlbmRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnNlbmRNZXNzYWdlKGNoYW5uZWxJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIHNlbmRGb2xsb3d1cE1lc3NhZ2U6IGFzeW5jICh0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5zZW5kRm9sbG93dXBNZXNzYWdlKHRva2VuLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgc3RhcnRUaHJlYWRXaXRoTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3Quc3RhcnRUaHJlYWRXaXRoTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBzeW5jR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnN5bmNHdWlsZFRlbXBsYXRlKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICB1cHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiBhc3luYyAoY29tbWFuZHMsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QudXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyhjb21tYW5kcywgb3B0aW9ucykpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShyZXMpKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB1cHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IGFzeW5jIChndWlsZElkLCBjb21tYW5kcywgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC51cHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHMoZ3VpbGRJZCwgY29tbWFuZHMsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUocmVzKSksXG4gICAgICApO1xuICAgIH0sXG4gICAgZWRpdEN1cnJlbnRNZW1iZXI6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0Q3VycmVudE1lbWJlcihndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkLCB1c2VySWQ6IGJvdC5pZCB9KTtcbiAgICB9LFxuICAgIGVkaXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkLCB1c2VySWQgfSk7XG4gICAgfSxcbiAgICBnZXRDdXJyZW50TWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEN1cnJlbnRNZW1iZXIoZ3VpbGRJZCwgYmVhcmVyVG9rZW4pO1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcyksIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShyZXMudXNlci5pZCkgfSk7XG4gICAgfSxcbiAgICBnZXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkKSksIHsgZ3VpbGRJZCwgdXNlcklkIH0pO1xuICAgIH0sXG4gICAgZ2V0TWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcyksIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShyZXMudXNlci5pZCkgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgcHJ1bmVNZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QucHJ1bmVNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbik7XG4gICAgfSxcbiAgICBzZWFyY2hNZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc2VhcmNoTWVtYmVycyhndWlsZElkLCBxdWVyeSwgb3B0aW9ucykpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHNuYWtlbGl6ZShyZXMpLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocmVzLnVzZXIuaWQpIH0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGJ1bGtCYW5NZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5idWxrQmFuTWVtYmVycyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYW5uZWRVc2VyczogcmVzLmJhbm5lZFVzZXJzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpLFxuICAgICAgICBmYWlsZWRVc2VyczogcmVzLmZhaWxlZFVzZXJzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkFjdGl2aXR5SW5zdGFuY2UoYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCk7XG4gICAgfSxcbiAgICBsaXN0QXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IGFzeW5jIChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QubGlzdEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzKGFwcGxpY2F0aW9uSWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QudXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHMoYXBwbGljYXRpb25JZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBjcmVhdGVMb2JieTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUxvYmJ5KG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVPckpvaW5Mb2JieTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZU9ySm9pbkxvYmJ5KG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRMb2JieTogYXN5bmMgKGxvYmJ5SWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldExvYmJ5KGxvYmJ5SWQpKSk7XG4gICAgfSxcbiAgICBtb2RpZnlMb2JieTogYXN5bmMgKGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0Lm1vZGlmeUxvYmJ5KGxvYmJ5SWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBhZGRNZW1iZXJUb0xvYmJ5OiBhc3luYyAobG9iYnlJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lbWJlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5hZGRNZW1iZXJUb0xvYmJ5KGxvYmJ5SWQsIHVzZXJJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGJ1bGtVcGRhdGVMb2JieU1lbWJlcnM6IGFzeW5jIChsb2JieUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmJ1bGtVcGRhdGVMb2JieU1lbWJlcnMobG9iYnlJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5TWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGxpbmtDaGFubmVsVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5saW5rQ2hhbm5lbFRvTG9iYnkobG9iYnlJZCwgYmVhcmVyVG9rZW4sIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICB1bmxpbmtDaGFubmVsVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC51bmxpbmtDaGFubmVsVG9Mb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbikpKTtcbiAgICB9LFxuICAgIHVwZGF0ZUxvYmJ5TWVzc2FnZU1vZGVyYXRpb25NZXRhZGF0YTogYXN5bmMgKGxvYmJ5SWQsIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnVwZGF0ZUxvYmJ5TWVzc2FnZU1vZGVyYXRpb25NZXRhZGF0YShsb2JieUlkLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgc2VuZExvYmJ5TWVzc2FnZTogYXN5bmMgKGJlYXJlclRva2VuLCBsb2JieUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3Quc2VuZExvYmJ5TWVzc2FnZShiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGdldExvYmJ5TWVzc2FnZXM6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRMb2JieU1lc3NhZ2VzKGJlYXJlclRva2VuLCBsb2JieUlkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZXNzYWdlKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclNlbGY6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnlJbnZpdGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yU2VsZihiZWFyZXJUb2tlbiwgbG9iYnlJZCkpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXI6IGFzeW5jIChsb2JieUlkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5SW52aXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXIobG9iYnlJZCwgdXNlcklkKSkpO1xuICAgIH0sXG4gICAgZ2V0VGFyZ2V0VXNlcnM6IGFzeW5jIChpbnZpdGVDb2RlKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VGFyZ2V0VXNlcnMoaW52aXRlQ29kZSk7XG4gICAgfSxcbiAgICB1cGRhdGVUYXJnZXRVc2VyczogYXN5bmMgKGludml0ZUNvZGUsIHRhcmdldFVzZXJzRmlsZSkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QudXBkYXRlVGFyZ2V0VXNlcnMoaW52aXRlQ29kZSwgdGFyZ2V0VXNlcnNGaWxlKTtcbiAgICB9LFxuICAgIGdldFRhcmdldFVzZXJzSm9iU3RhdHVzOiBhc3luYyAoaW52aXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFRhcmdldFVzZXJzSm9iU3RhdHVzKGludml0ZUNvZGUpO1xuICAgIH0sXG4gICAgLy8gQWxsIHVzZWxlc3Mgdm9pZCByZXR1cm4gZnVuY3Rpb25zIGhlcmVcbiAgICBhZGRSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmFkZFJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbik7XG4gICAgfSxcbiAgICBhZGRSZWFjdGlvbnM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb25zLCBvcmRlcmVkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuYWRkUmVhY3Rpb25zKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbnMsIG9yZGVyZWQpO1xuICAgIH0sXG4gICAgYWRkUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5hZGRSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgYWRkVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5hZGRUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgYWRkRG1SZWNpcGllbnQ6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmFkZERtUmVjaXBpZW50KGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGFkZEd1aWxkTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuYWRkR3VpbGRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGRlbGV0ZUF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVDaGFubmVsKGNoYW5uZWxJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IGFzeW5jIChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVFbW9qaTogYXN5bmMgKGd1aWxkSWQsIGlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVFbW9qaShndWlsZElkLCBpZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUFwcGxpY2F0aW9uRW1vamkoaWQpO1xuICAgIH0sXG4gICAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQsIGd1aWxkSWQpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVHdWlsZFN0aWNrZXIoZ3VpbGRJZCwgc3RpY2tlcklkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgdGVtcGxhdGVDb2RlKTtcbiAgICB9LFxuICAgIGRlbGV0ZUludGVncmF0aW9uOiBhc3luYyAoZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlSW50ZWdyYXRpb24oZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUludml0ZTogYXN5bmMgKGludml0ZUNvZGUsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUludml0ZShpbnZpdGVDb2RlLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZXM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZHMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZU1lc3NhZ2VzKGNoYW5uZWxJZCwgbWVzc2FnZUlkcywgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRva2VuKTtcbiAgICB9LFxuICAgIGRlbGV0ZU93blJlYWN0aW9uOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlT3duUmVhY3Rpb24oY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJlYWN0aW9uc0FsbDogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlUmVhY3Rpb25zQWxsKGNoYW5uZWxJZCwgbWVzc2FnZUlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJlYWN0aW9uc0Vtb2ppOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlUmVhY3Rpb25zRW1vamkoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZVJvbGUoZ3VpbGRJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlU2NoZWR1bGVkRXZlbnQ6IGFzeW5jIChndWlsZElkLCBldmVudElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlU2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCk7XG4gICAgfSxcbiAgICBkZWxldGVTdGFnZUluc3RhbmNlOiBhc3luYyAoY2hhbm5lbElkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVVzZXJSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlVXNlclJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZVdlYmhvb2sod2ViaG9va0lkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va01lc3NhZ2U6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va1dpdGhUb2tlbjogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pO1xuICAgIH0sXG4gICAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXMoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pO1xuICAgIH0sXG4gICAgZWRpdENoYW5uZWxQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBjaGFubmVsUG9zaXRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZWRpdENoYW5uZWxQb3NpdGlvbnMoZ3VpbGRJZCwgY2hhbm5lbFBvc2l0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0T3duVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0T3duVm9pY2VTdGF0ZShndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGVkaXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0VXNlclZvaWNlU3RhdGUoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBkZWxldGVDdXJyZW50VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICBqb2luVGhyZWFkOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quam9pblRocmVhZChjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgbGVhdmVHdWlsZDogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5sZWF2ZUd1aWxkKGd1aWxkSWQpO1xuICAgIH0sXG4gICAgbGVhdmVUaHJlYWQ6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5sZWF2ZVRocmVhZChjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZW1vdmVSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgcmVtb3ZlVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZW1vdmVUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlRG1SZWNpcGllbnQ6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnJlbW92ZURtUmVjaXBpZW50KGNoYW5uZWxJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIHNlbmRJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAoaW50ZXJhY3Rpb25JZCwgdG9rZW4sIG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBib3QucmVzdC5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShpbnRlcmFjdGlvbklkLCB0b2tlbiwgb3B0aW9ucywgcGFyYW1zKTtcblxuICAgICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuO1xuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoYm90LCBzbmFrZWxpemUocmVzcG9uc2UpKTtcbiAgICB9LFxuICAgIHRyaWdnZXJUeXBpbmdJbmRpY2F0b3I6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC50cmlnZ2VyVHlwaW5nSW5kaWNhdG9yKGNoYW5uZWxJZCk7XG4gICAgfSxcbiAgICBiYW5NZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmJhbk1lbWJlcihndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbik7XG4gICAgfSxcblxuICAgIGtpY2tNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmtpY2tNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCByZWFzb24pO1xuICAgIH0sXG4gICAgcGluTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5waW5NZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgdW5iYW5NZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnVuYmFuTWVtYmVyKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIHVucGluTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC51bnBpbk1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBnZXRHdWlsZE9uYm9hcmRpbmc6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZE9uYm9hcmRpbmcoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRPbmJvYXJkaW5nKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBlZGl0R3VpbGRPbmJvYXJkaW5nOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZE9uYm9hcmRpbmcoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkT25ib2FyZGluZyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBsaXN0RW50aXRsZW1lbnRzOiBhc3luYyAoYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5saXN0RW50aXRsZW1lbnRzKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpKS5tYXAoKGVudGl0bGVtZW50KSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgc25ha2VsaXplKGVudGl0bGVtZW50KSksXG4gICAgICApO1xuICAgIH0sXG4gICAgZ2V0RW50aXRsZW1lbnQ6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbnRpdGxlbWVudChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgYm9keSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW50aXRsZW1lbnQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlVGVzdEVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGJvZHkpKSwgeyBwYXJ0aWFsOiB0cnVlIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QuZGVsZXRlVGVzdEVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpO1xuICAgIH0sXG4gICAgbGlzdFNrdXM6IGFzeW5jIChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0Lmxpc3RTa3VzKGFwcGxpY2F0aW9uSWQpKS5tYXAoKHNrdSkgPT4gYm90LnRyYW5zZm9ybWVycy5za3UoYm90LCBzbmFrZWxpemUoc2t1KSkpO1xuICAgIH0sXG4gICAgZ2V0U3Vic2NyaXB0aW9uOiBhc3luYyAoc2t1SWQsIHN1YnNjcmlwdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdWJzY3JpcHRpb24oYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3Vic2NyaXB0aW9uKHNrdUlkLCBzdWJzY3JpcHRpb25JZCkpKTtcbiAgICB9LFxuICAgIGxpc3RTdWJzY3JpcHRpb25zOiBhc3luYyAoc2t1SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QubGlzdFN1YnNjcmlwdGlvbnMoc2t1SWQsIG9wdGlvbnMpKS5tYXAoKHN1YnNjcmlwdGlvbikgPT4gYm90LnRyYW5zZm9ybWVycy5zdWJzY3JpcHRpb24oYm90LCBzbmFrZWxpemUoc3Vic2NyaXB0aW9uKSkpO1xuICAgIH0sXG4gICAgc2VuZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc2VuZFNvdW5kYm9hcmRTb3VuZChjaGFubmVsSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbGlzdERlZmF1bHRTb3VuZGJvYXJkU291bmRzOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0Lmxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kcygpKS5tYXAoKHNvdW5kKSA9PiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIHNuYWtlbGl6ZShzb3VuZCkpKTtcbiAgICB9LFxuICAgIGxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5saXN0R3VpbGRTb3VuZGJvYXJkU291bmRzKGd1aWxkSWQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogcmVzLml0ZW1zLm1hcCgoc291bmQpID0+IGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKHNvdW5kKSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEd1aWxkU291bmRib2FyZFNvdW5kOiBhc3luYyAoZ3VpbGRJZCwgc291bmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIHNvdW5kSWQpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIG1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kOiBhc3luYyAoZ3VpbGRJZCwgc291bmRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QubW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQoZ3VpbGRJZCwgc291bmRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBzb3VuZElkLCByZWFzb24pID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIHNvdW5kSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVMb2JieTogYXN5bmMgKGxvYmJ5SWQpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUxvYmJ5KGxvYmJ5SWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlTWVtYmVyRnJvbUxvYmJ5OiBhc3luYyAobG9iYnlJZCwgdXNlcklkKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5yZW1vdmVNZW1iZXJGcm9tTG9iYnkobG9iYnlJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGxlYXZlTG9iYnk6IGFzeW5jIChsb2JieUlkLCBiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QubGVhdmVMb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQm90SGVscGVyczxUUHJvcHMgZXh0ZW5kcyBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgVEJlaGF2aW9yIGV4dGVuZHMgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4gPSB7XG4gIGNyZWF0ZUF1dG9tb2RSdWxlOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVDaGFubmVsOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZENoYW5uZWwsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVBcHBsaWNhdGlvbkVtb2ppOiAob3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25FbW9qaSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlRm9ydW1UaHJlYWQ6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICAgb3B0aW9ucz86IENyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHdWlsZFN0aWNrZXI6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlR3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHdWlsZFRlbXBsYXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVUZW1wbGF0ZSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlSW52aXRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVDaGFubmVsSW52aXRlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZT4+O1xuICBnZXRHdWlsZFJvbGVNZW1iZXJDb3VudHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGNyZWF0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZVNjaGVkdWxlZEV2ZW50LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNjaGVkdWxlZEV2ZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVTdGFnZUluc3RhbmNlOiAob3B0aW9uczogQ3JlYXRlU3RhZ2VJbnN0YW5jZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0YWdlSW5zdGFuY2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZVdlYmhvb2s6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlV2ViaG9vaywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz5bXSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBdXRvbW9kUnVsZTogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBydWxlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBdXRvTW9kZXJhdGlvblJ1bGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRCb3RQcm9maWxlOiAob3B0aW9uczoge1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIGJvdEF2YXRhclVSTD86IHN0cmluZyB8IG51bGw7XG4gICAgYm90QmFubmVyVVJMPzogc3RyaW5nIHwgbnVsbDtcbiAgfSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0Q2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlDaGFubmVsLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZEVtb2ppLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBcHBsaWNhdGlvbkVtb2ppOiAoaWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5QXBwbGljYXRpb25FbW9qaSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEZvbGxvd3VwTWVzc2FnZTogKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZFN0aWNrZXI6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgc3RpY2tlcklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQXRMZWFzdE9uZTxFZGl0R3VpbGRTdGlja2VyT3B0aW9ucz4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkVGVtcGxhdGU6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgdGVtcGxhdGVDb2RlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogTW9kaWZ5R3VpbGRUZW1wbGF0ZSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRlbXBsYXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE1lc3NhZ2UpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyYWN0aW9uQ2FsbGJhY2tEYXRhKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRSb2xlUG9zaXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlSb2xlUG9zaXRpb25zW10sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGVkaXRTY2hlZHVsZWRFdmVudDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBldmVudElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogUGFydGlhbDxFZGl0U2NoZWR1bGVkRXZlbnQ+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNjaGVkdWxlZEV2ZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0U3RhZ2VJbnN0YW5jZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB0b3BpYzogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RhZ2VJbnN0YW5jZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFdlYmhvb2s6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5V2ViaG9vaywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWJob29rTWVzc2FnZTogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogRWRpdFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWJob29rV2l0aFRva2VuOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBPbWl0PE1vZGlmeVdlYmhvb2ssICdjaGFubmVsSWQnPixcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWxjb21lU2NyZWVuOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWxjb21lU2NyZWVuLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0V2lkZ2V0U2V0dGluZ3M6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3M+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkV2lkZ2V0U2V0dGluZ3MsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uPixcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uPj47XG4gIGRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZXhlY3V0ZVdlYmhvb2s6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEV4ZWN1dGVXZWJob29rLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+IHwgdW5kZWZpbmVkPjtcbiAgZm9sbG93QW5ub3VuY2VtZW50OiAoc291cmNlQ2hhbm5lbElkOiBCaWdTdHJpbmcsIHRhcmdldENoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRGb2xsb3dlZENoYW5uZWw+PjtcbiAgZ2V0QWN0aXZlVGhyZWFkczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgKSA9PiBQcm9taXNlPHsgdGhyZWFkczogU2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+W107IG1lbWJlcnM6IFNldHVwRGVzaXJlZFByb3BzPFRocmVhZE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10gfT47XG4gIGdldEFwcGxpY2F0aW9uSW5mbzogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEFwcGxpY2F0aW9uSW5mbzogKGJvZHk6IEVkaXRBcHBsaWNhdGlvbikgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbzogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9uPj47XG4gIGV4Y2hhbmdlVG9rZW46IChcbiAgICBjbGllbnRJZDogQmlnU3RyaW5nLFxuICAgIGNsaWVudFNlY3JldDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRUb2tlbkV4Y2hhbmdlPixcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBY2Nlc3NUb2tlblJlc3BvbnNlPj47XG4gIHJldm9rZVRva2VuOiAoY2xpZW50SWQ6IEJpZ1N0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRUb2tlblJldm9jYXRpb24+KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0QXVkaXRMb2c6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZEF1ZGl0TG9nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdWRpdExvZz4+O1xuICBnZXRBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRBdXRvbW9kUnVsZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEF2YWlsYWJsZVZvaWNlUmVnaW9uczogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxWb2ljZVJlZ2lvbiwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRCYW46IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCYW4+PjtcbiAgZ2V0QmFuczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEJhbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEJhbj5bXT47XG4gIGdldENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRDaGFubmVsSW52aXRlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRDaGFubmVsczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldENoYW5uZWxXZWJob29rczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0RG1DaGFubmVsOiAodXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R3JvdXBEbUNoYW5uZWw6IChvcHRpb25zOiBDcmVhdGVHcm91cERtT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgZW1vamlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRBcHBsaWNhdGlvbkVtb2ppOiAoZW1vamlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRFbW9qaXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0QXBwbGljYXRpb25FbW9qaXM6ICgpID0+IFByb21pc2U8eyBpdGVtczogU2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPltdIH0+O1xuICBnZXRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHYXRld2F5Qm90OiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEdldEdhdGV3YXlCb3QsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIG9wdGlvbnM/OiBHZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IHsgY291bnRzPzogYm9vbGVhbiB9KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZHM6IChiZWFyZXJUb2tlbjogc3RyaW5nLCBvcHRpb25zPzogR2V0VXNlckd1aWxkcykgPT4gUHJvbWlzZTxQYXJ0aWFsPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkLCBUUHJvcHMsIFRCZWhhdmlvcj4+W10+O1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0R3VpbGRQcmV2aWV3OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZFByZXZpZXc+PjtcbiAgZ2V0R3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzdGlja2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZFN0aWNrZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0R3VpbGRUZW1wbGF0ZTogKHRlbXBsYXRlQ29kZTogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRlbXBsYXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZFRlbXBsYXRlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRHdWlsZFdlYmhvb2tzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0SW50ZWdyYXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEludGVncmF0aW9uLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEludml0ZTogKGludml0ZUNvZGU6IHN0cmluZywgb3B0aW9ucz86IEdldEludml0ZSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEludml0ZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8SW52aXRlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0TWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldE1lc3NhZ2VzT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIHNlYXJjaEd1aWxkTWVzc2FnZXM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IFNlYXJjaEd1aWxkTWVzc2FnZXNPcHRpb25zLFxuICApID0+IFByb21pc2U8XG4gICAgfCBDYW1lbGl6ZTxEaXNjb3JkU2VhcmNoR3VpbGRNZXNzYWdlc0luZGV4aW5nPlxuICAgIHwgKE9taXQ8Q2FtZWxpemU8RGlzY29yZFNlYXJjaEd1aWxkTWVzc2FnZXM+LCAnbWVzc2FnZXMnIHwgJ3RocmVhZHMnIHwgJ21lbWJlcnMnPiAmIHtcbiAgICAgICAgbWVzc2FnZXM6IFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdW107XG4gICAgICAgIHRocmVhZHM/OiBTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj5bXTtcbiAgICAgICAgbWVtYmVycz86IFNldHVwRGVzaXJlZFByb3BzPFRocmVhZE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W107XG4gICAgICB9KVxuICA+O1xuICBnZXRTdGlja2VyUGFjazogKHN0aWNrZXJQYWNrSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyUGFjaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0U3RpY2tlclBhY2tzOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXJQYWNrLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q2hhbm5lbFBpbnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0Q2hhbm5lbFBpbnNPcHRpb25zLFxuICApID0+IFByb21pc2U8eyBpdGVtczogU2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZVBpbiwgVFByb3BzLCBUQmVoYXZpb3I+W107IGhhc01vcmU6IGJvb2xlYW4gfT47XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIEJvdEhlbHBlcnMuZ2V0Q2hhbm5lbFBpbnN9IGluc3RlYWQgKi9cbiAgZ2V0UGlubmVkTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFByaXZhdGVBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PjtcbiAgZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcz4+O1xuICBnZXRQcnVuZUNvdW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRQcnVuZUNvdW50UXVlcnkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFBydW5lZENvdW50Pj47XG4gIGdldFB1YmxpY0FyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcz4+O1xuICBnZXRSb2xlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogeyB3aXRoVXNlckNvdW50PzogYm9vbGVhbiB9LFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U2NoZWR1bGVkRXZlbnQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFNjaGVkdWxlZEV2ZW50czogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50cykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTY2hlZHVsZWRFdmVudCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRTY2hlZHVsZWRFdmVudFVzZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycyxcbiAgKSA9PiBQcm9taXNlPEFycmF5PHsgdXNlcjogU2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+OyBtZW1iZXI/OiBTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPiB9Pj47XG4gIGdldFNlc3Npb25JbmZvOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEdldEdhdGV3YXlCb3QsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGFnZUluc3RhbmNlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRPd25Wb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFZvaWNlU3RhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxWb2ljZVN0YXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRTdGlja2VyOiAoc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0VGhyZWFkTWVtYmVyOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgdXNlcklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFRocmVhZE1lbWJlcixcbiAgICBleHRyYT86IFRocmVhZE1lbWJlclRyYW5zZm9ybWVyRXh0cmEsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUaHJlYWRNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFRocmVhZE1lbWJlcnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogTGlzdFRocmVhZE1lbWJlcnMsXG4gICAgZXh0cmE/OiBUaHJlYWRNZW1iZXJUcmFuc2Zvcm1lckV4dHJhLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGhyZWFkTWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFJlYWN0aW9uczogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIHJlYWN0aW9uOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFJlYWN0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0VXNlcjogKGlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudFVzZXI6IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFVzZXJDb25uZWN0aW9uczogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENvbm5lY3Rpb24+W10+O1xuICBnZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbj4+O1xuICBnZXRWYW5pdHlVcmw6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFZhbml0eVVybD4+O1xuICBnZXRWb2ljZVJlZ2lvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Vm9pY2VSZWdpb24sIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdlYmhvb2tNZXNzYWdlOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2ViaG9va1dpdGhUb2tlbjogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdlbGNvbWVTY3JlZW46IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2VsY29tZVNjcmVlbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2lkZ2V0OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkV2lkZ2V0LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRXaWRnZXRTZXR0aW5nczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZFdpZGdldFNldHRpbmdzLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBwdWJsaXNoTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzZW5kTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzZW5kRm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3RhcnRUaHJlYWRXaXRoTWVzc2FnZTogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2UsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3luY0d1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGVkaXRDdXJyZW50TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlDdXJyZW50TWVtYmVyLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0TWVtYmVyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHVzZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkTWVtYmVyLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBMaXN0R3VpbGRNZW1iZXJzKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBwcnVuZU1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEJlZ2luR3VpbGRQcnVuZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgcHJ1bmVkOiBudW1iZXIgfCBudWxsIH0+O1xuICBzZWFyY2hNZW1iZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9taXQ8U2VhcmNoTWVtYmVycywgJ3F1ZXJ5Jz4sXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgYnVsa0Jhbk1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQnVsa0JhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgYmFubmVkVXNlcnM6IGJpZ2ludFtdOyBmYWlsZWRVc2VyczogYmlnaW50W10gfT47XG4gIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBY3Rpdml0eUluc3RhbmNlPj47XG4gIGxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdPjtcbiAgdXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IChcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YT5bXSxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGE+W10+O1xuICBjcmVhdGVMb2JieTogKG9wdGlvbnM6IENyZWF0ZUxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVPckpvaW5Mb2JieTogKG9wdGlvbnM6IENyZWF0ZU9ySm9pbkxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbW9kaWZ5TG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBhZGRNZW1iZXJUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkTG9iYnlNZW1iZXIpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGJ1bGtVcGRhdGVMb2JieU1lbWJlcnM6IChsb2JieUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEJ1bGtVcGRhdGVMb2JieU1lbWJlcltdKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZywgb3B0aW9uczogTGlua0NoYW5uZWxUb0xvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICB1bmxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgdXBkYXRlTG9iYnlNZXNzYWdlTW9kZXJhdGlvbk1ldGFkYXRhOiAobG9iYnlJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VGFyZ2V0VXNlcnM6IChpbnZpdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgdXBkYXRlVGFyZ2V0VXNlcnM6IChpbnZpdGVDb2RlOiBzdHJpbmcsIHRhcmdldFVzZXJzRmlsZTogQmxvYikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXM6IChpbnZpdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRhcmdldFVzZXJzSm9iU3RhdHVzPj47XG4gIHNlbmRMb2JieU1lc3NhZ2U6IChcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIGxvYmJ5SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBTZW5kTG9iYnlNZXNzYWdlLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRMb2JieU1lc3NhZ2VzOiAoXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBsb2JieUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldExvYmJ5TWVzc2FnZXMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieU1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yU2VsZjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieUludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yVXNlcjogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIC8vIGZ1bmN0aW9ucyByZXR1cm4gVm9pZCBzbyBkb250IG5lZWQgYW55IHNwZWNpYWwgaGFuZGxpbmdcbiAgYWRkUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZFJlYWN0aW9uczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb25zOiBzdHJpbmdbXSwgb3JkZXJlZD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGFkZFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZERtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGREbVJlY2lwaWVudE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZEd1aWxkTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkR3VpbGRNZW1iZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3ZlcndyaXRlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBcHBsaWNhdGlvbkVtb2ppOiAoaWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc3RpY2tlcklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUludGVncmF0aW9uOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbnRlZ3JhdGlvbklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlSW52aXRlOiAoaW52aXRlQ29kZTogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZU1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkczogQmlnU3RyaW5nW10sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlT3duUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVJlYWN0aW9uc0FsbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlUmVhY3Rpb25zRW1vamk6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBldmVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVVc2VyUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlV2ViaG9va01lc3NhZ2U6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBEZWxldGVXZWJob29rTWVzc2FnZU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZWRpdENoYW5uZWxQb3NpdGlvbnM6IChndWlsZElkOiBCaWdTdHJpbmcsIGNoYW5uZWxQb3NpdGlvbnM6IE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9uc1tdKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBlZGl0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE93blZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD47XG4gIGVkaXRVc2VyVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdFVzZXJWb2ljZVN0YXRlKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBqb2luVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGxlYXZlR3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGxlYXZlVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZURtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZW5kSW50ZXJhY3Rpb25SZXNwb25zZTogKFxuICAgIGludGVyYWN0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEludGVyYWN0aW9uUmVzcG9uc2UsXG4gICAgcGFyYW1zPzogSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTx2b2lkIHwgU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICB0cmlnZ2VyVHlwaW5nSW5kaWNhdG9yOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGJhbk1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVHdWlsZEJhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBraWNrTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwaW5NZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHVuYmFuTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB1bnBpbk1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0R3VpbGRPbmJvYXJkaW5nOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkT25ib2FyZGluZywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkT25ib2FyZGluZzogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkT25ib2FyZGluZywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbGlzdEVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEVudGl0bGVtZW50cykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVudGl0bGVtZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVUZXN0RW50aXRsZW1lbnQ6IChcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgYm9keTogQ3JlYXRlVGVzdEVudGl0bGVtZW50LFxuICApID0+IFByb21pc2U8UGFydGlhbDxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+Pj47XG4gIGRlbGV0ZVRlc3RFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsaXN0U2t1czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTa3UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgbGlzdFN1YnNjcmlwdGlvbnM6IChza3VJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdFNrdVN1YnNjcmlwdGlvbnNPcHRpb25zKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN1YnNjcmlwdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRTdWJzY3JpcHRpb246IChza3VJZDogQmlnU3RyaW5nLCBzdWJzY3JpcHRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN1YnNjcmlwdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc2VuZFNvdW5kYm9hcmRTb3VuZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTZW5kU291bmRib2FyZFNvdW5kKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsaXN0RGVmYXVsdFNvdW5kYm9hcmRTb3VuZHM6ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8eyBpdGVtczogU2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXSB9PjtcbiAgZ2V0R3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHNvdW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTb3VuZGJvYXJkU291bmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgc291bmRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHNvdW5kSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlTWVtYmVyRnJvbUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGVhdmVMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn07XG4iXSwibmFtZXMiOlsic25ha2VsaXplIiwiY3JlYXRlQm90SGVscGVycyIsImJvdCIsImNyZWF0ZUF1dG9tb2RSdWxlIiwiZ3VpbGRJZCIsIm9wdGlvbnMiLCJyZWFzb24iLCJ0cmFuc2Zvcm1lcnMiLCJhdXRvbW9kUnVsZSIsInJlc3QiLCJjcmVhdGVDaGFubmVsIiwiY2hhbm5lbCIsImNyZWF0ZUVtb2ppIiwiZW1vamkiLCJjcmVhdGVBcHBsaWNhdGlvbkVtb2ppIiwiY3JlYXRlRm9ydW1UaHJlYWQiLCJjaGFubmVsSWQiLCJjcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJjb21tYW5kIiwiYXBwbGljYXRpb25Db21tYW5kIiwiY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJjcmVhdGVHdWlsZFN0aWNrZXIiLCJzdGlja2VyIiwiY3JlYXRlR3VpbGRUZW1wbGF0ZSIsInRlbXBsYXRlIiwiY3JlYXRlSW52aXRlIiwiZ2V0R3VpbGRSb2xlTWVtYmVyQ291bnRzIiwiY3JlYXRlUm9sZSIsInJvbGUiLCJjcmVhdGVTY2hlZHVsZWRFdmVudCIsInNjaGVkdWxlZEV2ZW50IiwiY3JlYXRlU3RhZ2VJbnN0YW5jZSIsInN0YWdlSW5zdGFuY2UiLCJjcmVhdGVXZWJob29rIiwid2ViaG9vayIsImVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyIsImNvbW1hbmRJZCIsImJlYXJlclRva2VuIiwiYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbiIsImVkaXRBdXRvbW9kUnVsZSIsInJ1bGVJZCIsImVkaXRCb3RQcm9maWxlIiwidXNlciIsImVkaXRDaGFubmVsIiwiZWRpdEVtb2ppIiwiaWQiLCJlZGl0QXBwbGljYXRpb25FbW9qaSIsImVkaXRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIm1lc3NhZ2VJZCIsIm1lc3NhZ2UiLCJlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiZWRpdEd1aWxkIiwiZ3VpbGQiLCJlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJlZGl0R3VpbGRTdGlja2VyIiwic3RpY2tlcklkIiwiZWRpdEd1aWxkVGVtcGxhdGUiLCJ0ZW1wbGF0ZUNvZGUiLCJlZGl0TWVzc2FnZSIsImVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJlZGl0Um9sZSIsInJvbGVJZCIsImVkaXRSb2xlUG9zaXRpb25zIiwibWFwIiwiZWRpdFNjaGVkdWxlZEV2ZW50IiwiZXZlbnRJZCIsImVkaXRTdGFnZUluc3RhbmNlIiwidG9waWMiLCJlZGl0V2ViaG9vayIsIndlYmhvb2tJZCIsImVkaXRXZWJob29rTWVzc2FnZSIsImVkaXRXZWJob29rV2l0aFRva2VuIiwiZWRpdFdlbGNvbWVTY3JlZW4iLCJ3ZWxjb21lU2NyZWVuIiwiZWRpdFdpZGdldFNldHRpbmdzIiwid2lkZ2V0U2V0dGluZ3MiLCJleGVjdXRlV2ViaG9vayIsInJlc3VsdCIsImZvbGxvd0Fubm91bmNlbWVudCIsInNvdXJjZUNoYW5uZWxJZCIsInRhcmdldENoYW5uZWxJZCIsImdldEFjdGl2ZVRocmVhZHMiLCJ0aHJlYWRzIiwidGhyZWFkIiwibWVtYmVycyIsIm1lbWJlciIsInRocmVhZE1lbWJlciIsImdldEFwcGxpY2F0aW9uSW5mbyIsImFwcGxpY2F0aW9uIiwiZWRpdEFwcGxpY2F0aW9uSW5mbyIsImJvZHkiLCJnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvIiwiZXhjaGFuZ2VUb2tlbiIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwicmV2b2tlVG9rZW4iLCJnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uIiwicmVzIiwic25ha2VkUmVzIiwiZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMiLCJnZXRBdWRpdExvZyIsImdldEF1dG9tb2RSdWxlIiwiZ2V0QXV0b21vZFJ1bGVzIiwiZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zIiwidm9pY2VSZWdpb24iLCJnZXRCYW4iLCJ1c2VySWQiLCJnZXRCYW5zIiwiZ2V0Q2hhbm5lbCIsImdldENoYW5uZWxJbnZpdGVzIiwiaW52aXRlIiwiZ2V0Q2hhbm5lbHMiLCJnZXRDaGFubmVsV2ViaG9va3MiLCJnZXREbUNoYW5uZWwiLCJnZXRHcm91cERtQ2hhbm5lbCIsImdldEVtb2ppIiwiZW1vamlJZCIsImdldEFwcGxpY2F0aW9uRW1vamkiLCJnZXRFbW9qaXMiLCJnZXRBcHBsaWNhdGlvbkVtb2ppcyIsIml0ZW1zIiwiaXRlbSIsImdldEZvbGxvd3VwTWVzc2FnZSIsImdldEdhdGV3YXlCb3QiLCJnYXRld2F5Qm90IiwiZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyIsImdldEd1aWxkIiwiZ2V0R3VpbGRzIiwicGFydGlhbCIsImdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZ2V0R3VpbGRQcmV2aWV3IiwiZ2V0R3VpbGRTdGlja2VyIiwiZ2V0R3VpbGRTdGlja2VycyIsImdldEd1aWxkVGVtcGxhdGUiLCJnZXRHdWlsZFRlbXBsYXRlcyIsImdldEd1aWxkV2ViaG9va3MiLCJnZXRJbnRlZ3JhdGlvbnMiLCJpbnRlZ3JhdGlvbiIsInRvU3RyaW5nIiwiZ2V0SW52aXRlIiwiaW52aXRlQ29kZSIsImdldEludml0ZXMiLCJnZXRNZXNzYWdlIiwiZ2V0TWVzc2FnZXMiLCJnZXRTdGlja2VyUGFjayIsInN0aWNrZXJQYWNrSWQiLCJzdGlja2VyUGFjayIsImdldFN0aWNrZXJQYWNrcyIsImdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImdldENoYW5uZWxQaW5zIiwiaGFzTW9yZSIsImhhc19tb3JlIiwibWVzc2FnZVBpbiIsImdldFBpbm5lZE1lc3NhZ2VzIiwiZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkcyIsImdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHMiLCJnZXRQcnVuZUNvdW50IiwiZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzIiwiZ2V0Um9sZXMiLCJnZXRSb2xlIiwiZ2V0U2NoZWR1bGVkRXZlbnQiLCJnZXRTY2hlZHVsZWRFdmVudHMiLCJnZXRTY2hlZHVsZWRFdmVudFVzZXJzIiwidSIsInNub3dmbGFrZSIsImdldFNlc3Npb25JbmZvIiwiZ2V0U3RhZ2VJbnN0YW5jZSIsImdldE93blZvaWNlU3RhdGUiLCJ2b2ljZVN0YXRlIiwiZ2V0VXNlclZvaWNlU3RhdGUiLCJnZXRTdGlja2VyIiwiZ2V0VGhyZWFkTWVtYmVyIiwiZXh0cmEiLCJnZXRUaHJlYWRNZW1iZXJzIiwiZ2V0UmVhY3Rpb25zIiwicmVhY3Rpb24iLCJnZXRVc2VyIiwiZ2V0Q3VycmVudFVzZXIiLCJnZXRVc2VyQ29ubmVjdGlvbnMiLCJnZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImFwcGxpY2F0aW9uSWQiLCJnZXRWYW5pdHlVcmwiLCJnZXRWb2ljZVJlZ2lvbnMiLCJnZXRXZWJob29rIiwiZ2V0V2ViaG9va01lc3NhZ2UiLCJnZXRXZWJob29rV2l0aFRva2VuIiwiZ2V0V2VsY29tZVNjcmVlbiIsImdldFdpZGdldCIsIndpZGdldCIsImdldFdpZGdldFNldHRpbmdzIiwicHVibGlzaE1lc3NhZ2UiLCJzZWFyY2hHdWlsZE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJzZW5kTWVzc2FnZSIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJzdGFydFRocmVhZFdpdGhNZXNzYWdlIiwic3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSIsInN5bmNHdWlsZFRlbXBsYXRlIiwidXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyIsImNvbW1hbmRzIiwidXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZWRpdEN1cnJlbnRNZW1iZXIiLCJlZGl0TWVtYmVyIiwiZ2V0Q3VycmVudE1lbWJlciIsImdldE1lbWJlciIsImdldE1lbWJlcnMiLCJwcnVuZU1lbWJlcnMiLCJzZWFyY2hNZW1iZXJzIiwicXVlcnkiLCJidWxrQmFuTWVtYmVycyIsImJhbm5lZFVzZXJzIiwieCIsImZhaWxlZFVzZXJzIiwiZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlIiwiaW5zdGFuY2VJZCIsImxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkcyIsInVwZGF0ZUFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzIiwiY3JlYXRlTG9iYnkiLCJsb2JieSIsImNyZWF0ZU9ySm9pbkxvYmJ5IiwiZ2V0TG9iYnkiLCJsb2JieUlkIiwibW9kaWZ5TG9iYnkiLCJhZGRNZW1iZXJUb0xvYmJ5IiwibG9iYnlNZW1iZXIiLCJidWxrVXBkYXRlTG9iYnlNZW1iZXJzIiwibGlua0NoYW5uZWxUb0xvYmJ5IiwidW5saW5rQ2hhbm5lbFRvTG9iYnkiLCJ1cGRhdGVMb2JieU1lc3NhZ2VNb2RlcmF0aW9uTWV0YWRhdGEiLCJzZW5kTG9iYnlNZXNzYWdlIiwibG9iYnlNZXNzYWdlIiwiZ2V0TG9iYnlNZXNzYWdlcyIsImNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclNlbGYiLCJsb2JieUludml0ZSIsImNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXIiLCJnZXRUYXJnZXRVc2VycyIsInVwZGF0ZVRhcmdldFVzZXJzIiwidGFyZ2V0VXNlcnNGaWxlIiwiZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXMiLCJhZGRSZWFjdGlvbiIsImFkZFJlYWN0aW9ucyIsInJlYWN0aW9ucyIsIm9yZGVyZWQiLCJhZGRSb2xlIiwiYWRkVGhyZWFkTWVtYmVyIiwiYWRkRG1SZWNpcGllbnQiLCJhZGRHdWlsZE1lbWJlciIsImRlbGV0ZUF1dG9tb2RSdWxlIiwiZGVsZXRlQ2hhbm5lbCIsImRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGUiLCJvdmVyd3JpdGVJZCIsImRlbGV0ZUVtb2ppIiwiZGVsZXRlQXBwbGljYXRpb25FbW9qaSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZCIsImRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZGVsZXRlR3VpbGRTdGlja2VyIiwiZGVsZXRlR3VpbGRUZW1wbGF0ZSIsImRlbGV0ZUludGVncmF0aW9uIiwiaW50ZWdyYXRpb25JZCIsImRlbGV0ZUludml0ZSIsImRlbGV0ZU1lc3NhZ2UiLCJkZWxldGVNZXNzYWdlcyIsIm1lc3NhZ2VJZHMiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJkZWxldGVPd25SZWFjdGlvbiIsImRlbGV0ZVJlYWN0aW9uc0FsbCIsImRlbGV0ZVJlYWN0aW9uc0Vtb2ppIiwiZGVsZXRlUm9sZSIsImRlbGV0ZVNjaGVkdWxlZEV2ZW50IiwiZGVsZXRlU3RhZ2VJbnN0YW5jZSIsImRlbGV0ZVVzZXJSZWFjdGlvbiIsImRlbGV0ZVdlYmhvb2siLCJkZWxldGVXZWJob29rTWVzc2FnZSIsImRlbGV0ZVdlYmhvb2tXaXRoVG9rZW4iLCJlZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXMiLCJlZGl0Q2hhbm5lbFBvc2l0aW9ucyIsImNoYW5uZWxQb3NpdGlvbnMiLCJlZGl0T3duVm9pY2VTdGF0ZSIsImVkaXRVc2VyVm9pY2VTdGF0ZSIsImVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImpvaW5UaHJlYWQiLCJsZWF2ZUd1aWxkIiwibGVhdmVUaHJlYWQiLCJyZW1vdmVSb2xlIiwicmVtb3ZlVGhyZWFkTWVtYmVyIiwicmVtb3ZlRG1SZWNpcGllbnQiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImludGVyYWN0aW9uSWQiLCJwYXJhbXMiLCJyZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsInRyaWdnZXJUeXBpbmdJbmRpY2F0b3IiLCJiYW5NZW1iZXIiLCJraWNrTWVtYmVyIiwicGluTWVzc2FnZSIsInVuYmFuTWVtYmVyIiwidW5waW5NZXNzYWdlIiwiZ2V0R3VpbGRPbmJvYXJkaW5nIiwiZ3VpbGRPbmJvYXJkaW5nIiwiZWRpdEd1aWxkT25ib2FyZGluZyIsImxpc3RFbnRpdGxlbWVudHMiLCJlbnRpdGxlbWVudCIsImdldEVudGl0bGVtZW50IiwiZW50aXRsZW1lbnRJZCIsImNyZWF0ZVRlc3RFbnRpdGxlbWVudCIsImRlbGV0ZVRlc3RFbnRpdGxlbWVudCIsImxpc3RTa3VzIiwic2t1IiwiZ2V0U3Vic2NyaXB0aW9uIiwic2t1SWQiLCJzdWJzY3JpcHRpb25JZCIsInN1YnNjcmlwdGlvbiIsImxpc3RTdWJzY3JpcHRpb25zIiwic2VuZFNvdW5kYm9hcmRTb3VuZCIsImxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kcyIsInNvdW5kIiwic291bmRib2FyZFNvdW5kIiwibGlzdEd1aWxkU291bmRib2FyZFNvdW5kcyIsImdldEd1aWxkU291bmRib2FyZFNvdW5kIiwic291bmRJZCIsImNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kIiwibW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQiLCJkZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZCIsImRlbGV0ZUxvYmJ5IiwicmVtb3ZlTWVtYmVyRnJvbUxvYmJ5IiwibGVhdmVMb2JieSJdLCJtYXBw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
|
|
786
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVzdEVuZHBvaW50cyB9IGZyb20gJ0BkaXNjb3JkZW5vL3Jlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBZGREbVJlY2lwaWVudE9wdGlvbnMsXG4gIEFkZEd1aWxkTWVtYmVyT3B0aW9ucyxcbiAgQWRkTG9iYnlNZW1iZXIsXG4gIEF0TGVhc3RPbmUsXG4gIEJlZ2luR3VpbGRQcnVuZSxcbiAgQmlnU3RyaW5nLFxuICBCdWxrVXBkYXRlTG9iYnlNZW1iZXIsXG4gIENhbWVsaXplLFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZUFwcGxpY2F0aW9uRW1vamksXG4gIENyZWF0ZUF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIENyZWF0ZUNoYW5uZWxJbnZpdGUsXG4gIENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLFxuICBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHcm91cERtT3B0aW9ucyxcbiAgQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZEJhbixcbiAgQ3JlYXRlR3VpbGRCdWxrQmFuLFxuICBDcmVhdGVHdWlsZENoYW5uZWwsXG4gIENyZWF0ZUd1aWxkRW1vamksXG4gIENyZWF0ZUd1aWxkUm9sZSxcbiAgQ3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQsXG4gIENyZWF0ZUd1aWxkU3RpY2tlck9wdGlvbnMsXG4gIENyZWF0ZUxvYmJ5LFxuICBDcmVhdGVNZXNzYWdlT3B0aW9ucyxcbiAgQ3JlYXRlT3JKb2luTG9iYnksXG4gIENyZWF0ZVNjaGVkdWxlZEV2ZW50LFxuICBDcmVhdGVTdGFnZUluc3RhbmNlLFxuICBDcmVhdGVUZW1wbGF0ZSxcbiAgQ3JlYXRlVGVzdEVudGl0bGVtZW50LFxuICBDcmVhdGVXZWJob29rLFxuICBEZWxldGVXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gIERpc2NvcmRBY2Nlc3NUb2tlblJlc3BvbnNlLFxuICBEaXNjb3JkQWN0aXZpdHlJbnN0YW5jZSxcbiAgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLFxuICBEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbixcbiAgRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YSxcbiAgRGlzY29yZEF1ZGl0TG9nLFxuICBEaXNjb3JkQmFuLFxuICBEaXNjb3JkQ29ubmVjdGlvbixcbiAgRGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9uLFxuICBEaXNjb3JkRm9sbG93ZWRDaGFubmVsLFxuICBEaXNjb3JkR3VpbGRQcmV2aWV3LFxuICBEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncyxcbiAgRGlzY29yZEludml0ZSxcbiAgRGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHMsXG4gIERpc2NvcmRQcnVuZWRDb3VudCxcbiAgRGlzY29yZFNlYXJjaEd1aWxkTWVzc2FnZXMsXG4gIERpc2NvcmRTZWFyY2hHdWlsZE1lc3NhZ2VzSW5kZXhpbmcsXG4gIERpc2NvcmRUYXJnZXRVc2Vyc0pvYlN0YXR1cyxcbiAgRGlzY29yZFRva2VuRXhjaGFuZ2UsXG4gIERpc2NvcmRUb2tlblJldm9jYXRpb24sXG4gIERpc2NvcmRWYW5pdHlVcmwsXG4gIEVkaXRBcHBsaWNhdGlvbixcbiAgRWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsXG4gIEVkaXRHdWlsZE9uYm9hcmRpbmcsXG4gIEVkaXRHdWlsZFJvbGUsXG4gIEVkaXRHdWlsZFN0aWNrZXJPcHRpb25zLFxuICBFZGl0TWVzc2FnZSxcbiAgRWRpdE93blZvaWNlU3RhdGUsXG4gIEVkaXRTY2hlZHVsZWRFdmVudCxcbiAgRWRpdFVzZXJWb2ljZVN0YXRlLFxuICBFZGl0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBFeGVjdXRlV2ViaG9vayxcbiAgR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gIEdldEJhbnMsXG4gIEdldENoYW5uZWxQaW5zT3B0aW9ucyxcbiAgR2V0RW50aXRsZW1lbnRzLFxuICBHZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgR2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgR2V0R3VpbGRBdWRpdExvZyxcbiAgR2V0R3VpbGRQcnVuZUNvdW50UXVlcnksXG4gIEdldEludml0ZSxcbiAgR2V0TG9iYnlNZXNzYWdlcyxcbiAgR2V0TWVzc2FnZXNPcHRpb25zLFxuICBHZXRQb2xsQW5zd2VyVm90ZXMsXG4gIEdldFJlYWN0aW9ucyxcbiAgR2V0U2NoZWR1bGVkRXZlbnRzLFxuICBHZXRTY2hlZHVsZWRFdmVudFVzZXJzLFxuICBHZXRUaHJlYWRNZW1iZXIsXG4gIEdldFVzZXJHdWlsZHMsXG4gIEdldFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsXG4gIEludGVyYWN0aW9uQ2FsbGJhY2tPcHRpb25zLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICBMaW5rQ2hhbm5lbFRvTG9iYnksXG4gIExpc3RBcmNoaXZlZFRocmVhZHMsXG4gIExpc3RHdWlsZE1lbWJlcnMsXG4gIExpc3RTa3VTdWJzY3JpcHRpb25zT3B0aW9ucyxcbiAgTGlzdFRocmVhZE1lbWJlcnMsXG4gIE1vZGlmeUFwcGxpY2F0aW9uRW1vamksXG4gIE1vZGlmeUNoYW5uZWwsXG4gIE1vZGlmeUN1cnJlbnRNZW1iZXIsXG4gIE1vZGlmeUd1aWxkLFxuICBNb2RpZnlHdWlsZENoYW5uZWxQb3NpdGlvbnMsXG4gIE1vZGlmeUd1aWxkRW1vamksXG4gIE1vZGlmeUd1aWxkSW5jaWRlbnRBY3Rpb25zLFxuICBNb2RpZnlHdWlsZE1lbWJlcixcbiAgTW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQsXG4gIE1vZGlmeUd1aWxkVGVtcGxhdGUsXG4gIE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbixcbiAgTW9kaWZ5TG9iYnksXG4gIE1vZGlmeVJvbGVQb3NpdGlvbnMsXG4gIE1vZGlmeVdlYmhvb2ssXG4gIFNlYXJjaEd1aWxkTWVzc2FnZXNPcHRpb25zLFxuICBTZWFyY2hNZW1iZXJzLFxuICBTZW5kTG9iYnlNZXNzYWdlLFxuICBTZW5kU291bmRib2FyZFNvdW5kLFxuICBTZXRWb2ljZUNoYW5uZWxTdGF0dXMsXG4gIFN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2UsXG4gIFN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UsXG4gIFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gIFVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgY2FtZWxpemUgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4vYm90LmpzJztcbmltcG9ydCB0eXBlIHsgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciwgU2V0dXBEZXNpcmVkUHJvcHMsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFRocmVhZE1lbWJlclRyYW5zZm9ybWVyRXh0cmEgfSBmcm9tICcuL3RyYW5zZm9ybWVycy90aHJlYWRNZW1iZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBcHBsaWNhdGlvbixcbiAgQXBwbGljYXRpb25Db21tYW5kLFxuICBBdXRvTW9kZXJhdGlvblJ1bGUsXG4gIENoYW5uZWwsXG4gIEVtb2ppLFxuICBFbnRpdGxlbWVudCxcbiAgR2V0R2F0ZXdheUJvdCxcbiAgR3VpbGQsXG4gIEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsXG4gIEd1aWxkT25ib2FyZGluZyxcbiAgR3VpbGRXaWRnZXQsXG4gIEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIEluY2lkZW50c0RhdGEsXG4gIEludGVncmF0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludml0ZSxcbiAgTG9iYnksXG4gIExvYmJ5SW52aXRlLFxuICBMb2JieU1lbWJlcixcbiAgTG9iYnlNZXNzYWdlLFxuICBNZW1iZXIsXG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VQaW4sXG4gIFJvbGUsXG4gIFNjaGVkdWxlZEV2ZW50LFxuICBTa3UsXG4gIFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhZ2VJbnN0YW5jZSxcbiAgU3RpY2tlcixcbiAgU3RpY2tlclBhY2ssXG4gIFN1YnNjcmlwdGlvbixcbiAgVGVtcGxhdGUsXG4gIFRocmVhZE1lbWJlcixcbiAgVXNlcixcbiAgVm9pY2VSZWdpb24sXG4gIFZvaWNlU3RhdGUsXG4gIFdlYmhvb2ssXG4gIFdlbGNvbWVTY3JlZW4sXG59IGZyb20gJy4vdHJhbnNmb3JtZXJzL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJvdEhlbHBlcnM8VFByb3BzIGV4dGVuZHMgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIFRCZWhhdmlvciBleHRlbmRzIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+KFxuICBib3Q6IEJvdDxUUHJvcHMsIFRCZWhhdmlvcj4sXG4pOiBCb3RIZWxwZXJzPFRQcm9wcywgVEJlaGF2aW9yPiB7XG4gIHJldHVybiB7XG4gICAgY3JlYXRlQXV0b21vZFJ1bGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmF1dG9Nb2RlcmF0aW9uUnVsZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUF1dG9tb2RSdWxlKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgY3JlYXRlQ2hhbm5lbDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUNoYW5uZWwoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgY3JlYXRlRW1vamk6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlRW1vamkoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBjcmVhdGVBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVBcHBsaWNhdGlvbkVtb2ppKG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUZvcnVtVGhyZWFkOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVGb3J1bVRocmVhZChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZCwgZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZCwgZ3VpbGRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlR3VpbGRTdGlja2VyKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlR3VpbGRUZW1wbGF0ZShndWlsZElkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjcmVhdGVJbnZpdGU6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUludml0ZShjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbik7XG4gICAgfSxcbiAgICBnZXRHdWlsZFJvbGVNZW1iZXJDb3VudHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRSb2xlTWVtYmVyQ291bnRzKGd1aWxkSWQpO1xuICAgIH0sXG4gICAgY3JlYXRlUm9sZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZVJvbGUoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgY3JlYXRlU2NoZWR1bGVkRXZlbnQ6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlU2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBjcmVhdGVTdGFnZUluc3RhbmNlOiBhc3luYyAob3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGFnZUluc3RhbmNlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlU3RhZ2VJbnN0YW5jZShvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGNyZWF0ZVdlYmhvb2s6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZVdlYmhvb2soY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogYXN5bmMgKGd1aWxkSWQsIGNvbW1hbmRJZCwgYmVhcmVyVG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMoXG4gICAgICAgIGJvdCxcbiAgICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zKGd1aWxkSWQsIGNvbW1hbmRJZCwgYmVhcmVyVG9rZW4sIG9wdGlvbnMpLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGVkaXRBdXRvbW9kUnVsZTogYXN5bmMgKGd1aWxkSWQsIHJ1bGVJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvTW9kZXJhdGlvblJ1bGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0QXV0b21vZFJ1bGUoZ3VpbGRJZCwgcnVsZUlkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRCb3RQcm9maWxlOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRCb3RQcm9maWxlKG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0Q2hhbm5lbChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZWRpdEVtb2ppOiBhc3luYyAoZ3VpbGRJZCwgaWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0RW1vamkoZ3VpbGRJZCwgaWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZWRpdEFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChpZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0QXBwbGljYXRpb25FbW9qaShpZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZWRpdEZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0Rm9sbG93dXBNZXNzYWdlKHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0R3VpbGQ6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEd1aWxkKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkLCBndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBndWlsZElkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0R3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0R3VpbGRTdGlja2VyKGd1aWxkSWQsIHN0aWNrZXJJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0R3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGVtcGxhdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0R3VpbGRUZW1wbGF0ZShndWlsZElkLCB0ZW1wbGF0ZUNvZGUsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0TWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbiwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZWRpdFJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRSb2xlKGd1aWxkSWQsIHJvbGVJZCwgb3B0aW9ucywgcmVhc29uKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgZWRpdFJvbGVQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdFJvbGVQb3NpdGlvbnMoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCByb2xlLCB7IGd1aWxkSWQgfSkpO1xuICAgIH0sXG4gICAgZWRpdFNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRTY2hlZHVsZWRFdmVudChndWlsZElkLCBldmVudElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRTdGFnZUluc3RhbmNlOiBhc3luYyAoY2hhbm5lbElkLCB0b3BpYywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGFnZUluc3RhbmNlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdFN0YWdlSW5zdGFuY2UoY2hhbm5lbElkLCB0b3BpYywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0V2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdFdlYmhvb2sod2ViaG9va0lkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRXZWJob29rTWVzc2FnZTogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRXZWJob29rV2l0aFRva2VuOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRXZWxjb21lU2NyZWVuOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWxjb21lU2NyZWVuKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdFdlbGNvbWVTY3JlZW4oZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0V2lkZ2V0U2V0dGluZ3M6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkV2lkZ2V0U2V0dGluZ3MoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0V2lkZ2V0U2V0dGluZ3MoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBleGVjdXRlV2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdC5yZXN0LnNuYWtlLmV4ZWN1dGVXZWJob29rKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcblxuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHJlc3VsdCk7XG4gICAgfSxcbiAgICBmb2xsb3dBbm5vdW5jZW1lbnQ6IGFzeW5jIChzb3VyY2VDaGFubmVsSWQsIHRhcmdldENoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmZvbGxvd0Fubm91bmNlbWVudChzb3VyY2VDaGFubmVsSWQsIHRhcmdldENoYW5uZWxJZCk7XG4gICAgfSxcbiAgICBnZXRBY3RpdmVUaHJlYWRzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QWN0aXZlVGhyZWFkcyhndWlsZElkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRocmVhZHM6IHJlc3VsdC50aHJlYWRzLm1hcCgodGhyZWFkKSA9PiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB0aHJlYWQsIHsgZ3VpbGRJZCB9KSksXG4gICAgICAgIG1lbWJlcnM6IHJlc3VsdC5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIG1lbWJlciwgeyBndWlsZElkIH0pKSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QXBwbGljYXRpb25JbmZvKCkpO1xuICAgIH0sXG4gICAgZWRpdEFwcGxpY2F0aW9uSW5mbzogYXN5bmMgKGJvZHkpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEFwcGxpY2F0aW9uSW5mbyhib2R5KSk7XG4gICAgfSxcbiAgICBnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvOiBhc3luYyAoYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvKGJlYXJlclRva2VuKTtcbiAgICB9LFxuICAgIGV4Y2hhbmdlVG9rZW46IGFzeW5jIChjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZXhjaGFuZ2VUb2tlbihjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBvcHRpb25zKTtcbiAgICB9LFxuICAgIHJldm9rZVRva2VuOiBhc3luYyAoY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnJldm9rZVRva2VuKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbjogYXN5bmMgKGd1aWxkSWQsIGNvbW1hbmRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhcbiAgICAgICAgYm90LFxuICAgICAgICBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKGd1aWxkSWQsIGNvbW1hbmRJZCwgb3B0aW9ucyksXG4gICAgICApO1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zKGd1aWxkSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5ndWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zKGJvdCwgcmVzKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBnZXRBdWRpdExvZzogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRBdWRpdExvZyhndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldEF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvTW9kZXJhdGlvblJ1bGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQpKTtcbiAgICB9LFxuICAgIGdldEF1dG9tb2RSdWxlczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QXV0b21vZFJ1bGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5hdXRvTW9kZXJhdGlvblJ1bGUoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldEF2YWlsYWJsZVZvaWNlUmVnaW9uczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnMoKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudm9pY2VSZWdpb24oYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldEJhbjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEJhbihndWlsZElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgZ2V0QmFuczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRCYW5zKGd1aWxkSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbDogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldENoYW5uZWwoY2hhbm5lbElkKSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsSW52aXRlczogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRDaGFubmVsSW52aXRlcyhjaGFubmVsSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldENoYW5uZWxzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRDaGFubmVscyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHJlcywgeyBndWlsZElkIH0pKTtcbiAgICB9LFxuICAgIGdldENoYW5uZWxXZWJob29rczogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRDaGFubmVsV2ViaG9va3MoY2hhbm5lbElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0RG1DaGFubmVsOiBhc3luYyAodXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0RG1DaGFubmVsKHVzZXJJZCkpO1xuICAgIH0sXG4gICAgZ2V0R3JvdXBEbUNoYW5uZWw6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3JvdXBEbUNoYW5uZWwob3B0aW9ucykpO1xuICAgIH0sXG4gICAgZ2V0RW1vamk6IGFzeW5jIChndWlsZElkLCBlbW9qaUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEVtb2ppKGd1aWxkSWQsIGVtb2ppSWQpKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChlbW9qaUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEFwcGxpY2F0aW9uRW1vamkoZW1vamlJZCkpO1xuICAgIH0sXG4gICAgZ2V0RW1vamlzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRFbW9qaXMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkVtb2ppczogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QXBwbGljYXRpb25FbW9qaXMoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlcy5pdGVtcy5tYXAoKGl0ZW0pID0+IGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBpdGVtKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0Rm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkKSk7XG4gICAgfSxcbiAgICBnZXRHYXRld2F5Qm90OiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5nYXRld2F5Qm90KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R2F0ZXdheUJvdCgpKTtcbiAgICB9LFxuICAgIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCkpO1xuICAgIH0sXG4gICAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyhvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGQoZ3VpbGRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRzOiBhc3luYyAoYmVhcmVyVG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRzKGJlYXJlclRva2VuLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGQoYm90LCByZXMsIHsgcGFydGlhbDogdHJ1ZSB9KSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBndWlsZElkKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kcyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZFByZXZpZXc6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRQcmV2aWV3KGd1aWxkSWQpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRTdGlja2VyKGd1aWxkSWQsIHN0aWNrZXJJZCkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRTdGlja2VyczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRTdGlja2VycyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRUZW1wbGF0ZTogYXN5bmMgKHRlbXBsYXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGVtcGxhdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRHdWlsZFRlbXBsYXRlKHRlbXBsYXRlQ29kZSkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRUZW1wbGF0ZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkVGVtcGxhdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy50ZW1wbGF0ZShib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRXZWJob29rczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRXZWJob29rcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0SW50ZWdyYXRpb25zOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRJbnRlZ3JhdGlvbnMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmludGVncmF0aW9uKGJvdCwgeyAuLi5yZXMsIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCkgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgZ2V0SW52aXRlOiBhc3luYyAoaW52aXRlQ29kZSwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuaW52aXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0SW52aXRlKGludml0ZUNvZGUsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGdldEludml0ZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEludml0ZXMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmludml0ZShib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0TWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCkpO1xuICAgIH0sXG4gICAgZ2V0TWVzc2FnZXM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0TWVzc2FnZXMoY2hhbm5lbElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0U3RpY2tlclBhY2s6IGFzeW5jIChzdGlja2VyUGFja0lkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyUGFjayhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFN0aWNrZXJQYWNrKHN0aWNrZXJQYWNrSWQpKTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTdGlja2VyUGFja3MoKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRva2VuKSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsUGluczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Q2hhbm5lbFBpbnMoY2hhbm5lbElkLCBvcHRpb25zKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGFzTW9yZTogcmVzLmhhc19tb3JlLFxuICAgICAgICBpdGVtczogcmVzLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlUGluKGJvdCwgaXRlbSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldFBpbm5lZE1lc3NhZ2VzOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFBpbm5lZE1lc3NhZ2VzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldFByaXZhdGVBcmNoaXZlZFRocmVhZHM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkcyhjaGFubmVsSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2V0UHJ1bmVDb3VudDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRQcnVuZUNvdW50KGd1aWxkSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRSb2xlczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Um9sZXMoZ3VpbGRJZCkpLm1hcCgocm9sZSkgPT4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgcm9sZSwgeyBndWlsZElkIH0pKTtcbiAgICB9LFxuICAgIGdldFJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRSb2xlKGd1aWxkSWQsIHJvbGVJZCksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGdldFNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc2NoZWR1bGVkRXZlbnQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTY2hlZHVsZWRFdmVudChndWlsZElkLCBldmVudElkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudHM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFNjaGVkdWxlZEV2ZW50cyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc2NoZWR1bGVkRXZlbnQoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldFNjaGVkdWxlZEV2ZW50VXNlcnM6IGFzeW5jIChndWlsZElkLCBldmVudElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFNjaGVkdWxlZEV2ZW50VXNlcnMoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucykpLm1hcCgodSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVzZXI6IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHUudXNlciksXG4gICAgICAgICAgbWVtYmVyOiB1Lm1lbWJlciAmJiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHUubWVtYmVyLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UodS51c2VyLmlkKSB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0U2Vzc2lvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmdhdGV3YXlCb3QoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTZXNzaW9uSW5mbygpKTtcbiAgICB9LFxuICAgIGdldFN0YWdlSW5zdGFuY2U6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0YWdlSW5zdGFuY2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCkpO1xuICAgIH0sXG4gICAgZ2V0T3duVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnZvaWNlU3RhdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRPd25Wb2ljZVN0YXRlKGd1aWxkSWQpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudm9pY2VTdGF0ZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFVzZXJWb2ljZVN0YXRlKGd1aWxkSWQsIHVzZXJJZCksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXI6IGFzeW5jIChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTdGlja2VyKHN0aWNrZXJJZCkpO1xuICAgIH0sXG4gICAgZ2V0VGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQsIG9wdGlvbnMsIGV4dHJhKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQsIG9wdGlvbnMpLCBleHRyYSk7XG4gICAgfSxcbiAgICBnZXRUaHJlYWRNZW1iZXJzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCBleHRyYSkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRUaHJlYWRNZW1iZXJzKGNoYW5uZWxJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHJlcywgZXh0cmEpKTtcbiAgICB9LFxuICAgIGdldFJlYWN0aW9uczogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRSZWFjdGlvbnMoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0VXNlcjogYXN5bmMgKGlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0VXNlcihpZCkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudFVzZXI6IGFzeW5jIChiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEN1cnJlbnRVc2VyKGJlYXJlclRva2VuKSk7XG4gICAgfSxcbiAgICBnZXRVc2VyQ29ubmVjdGlvbnM6IGFzeW5jIChiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFVzZXJDb25uZWN0aW9ucyhiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgICBnZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogYXN5bmMgKGJlYXJlclRva2VuLCBhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24oYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQpO1xuICAgIH0sXG4gICAgZ2V0VmFuaXR5VXJsOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFZhbml0eVVybChndWlsZElkKTtcbiAgICB9LFxuICAgIGdldFZvaWNlUmVnaW9uczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Vm9pY2VSZWdpb25zKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy52b2ljZVJlZ2lvbihib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0V2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFdlYmhvb2sod2ViaG9va0lkKSk7XG4gICAgfSxcbiAgICBnZXRXZWJob29rTWVzc2FnZTogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFdlYmhvb2tNZXNzYWdlKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZ2V0V2ViaG9va1dpdGhUb2tlbjogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pKTtcbiAgICB9LFxuICAgIGdldFdlbGNvbWVTY3JlZW46IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWxjb21lU2NyZWVuKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0V2VsY29tZVNjcmVlbihndWlsZElkKSk7XG4gICAgfSxcbiAgICBnZXRXaWRnZXQ6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZFdpZGdldChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFdpZGdldChndWlsZElkKSk7XG4gICAgfSxcbiAgICBnZXRXaWRnZXRTZXR0aW5nczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkV2lkZ2V0U2V0dGluZ3MoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRXaWRnZXRTZXR0aW5ncyhndWlsZElkKSk7XG4gICAgfSxcbiAgICBwdWJsaXNoTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UucHVibGlzaE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQpKTtcbiAgICB9LFxuICAgIHNlYXJjaEd1aWxkTWVzc2FnZXM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBib3QucmVzdC5zbmFrZS5zZWFyY2hHdWlsZE1lc3NhZ2VzKGd1aWxkSWQsIG9wdGlvbnMpO1xuICAgICAgaWYgKCdjb2RlJyBpbiByZXN1bHQpIHJldHVybiBjYW1lbGl6ZShyZXN1bHQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gV2Ugd291bGQgd2FzdGUgdGltZSBhbmQgbWVtb3J5IGNhbWVsaXppbmcgdGhlIGVudGlyZSByZXN1bHQgb2JqZWN0LCBzbyB3ZSBvbmx5IGNhbWVsaXplIHRoZSBwYXJ0cyB3ZSBuZWVkIHRvLiBUaGUgcmVzdCBvZiB0aGUgZGF0YSBpcyBjb252ZXJ0ZWQgYmVsb3dcbiAgICAgICAgLi4uY2FtZWxpemUoeyAuLi5yZXN1bHQsIG1lc3NhZ2VzOiB1bmRlZmluZWQsIHRocmVhZHM6IHVuZGVmaW5lZCwgbWVtYmVyczogdW5kZWZpbmVkIH0pLFxuICAgICAgICBtZXNzYWdlczogcmVzdWx0Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZXMpID0+IG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgbWVzc2FnZSkpKSxcbiAgICAgICAgdGhyZWFkczogcmVzdWx0LnRocmVhZHM/Lm1hcCgodGhyZWFkKSA9PiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB0aHJlYWQsIHsgZ3VpbGRJZCB9KSksXG4gICAgICAgIG1lbWJlcnM6IHJlc3VsdC5tZW1iZXJzPy5tYXAoKG1lbWJlcikgPT4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCBtZW1iZXIsIHsgZ3VpbGRJZCB9KSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgc2VuZE1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5zZW5kTWVzc2FnZShjaGFubmVsSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIHNlbmRGb2xsb3d1cE1lc3NhZ2U6IGFzeW5jICh0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnNlbmRGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIHN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2Uuc3RhcnRUaHJlYWRXaXRoTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBzdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5zdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBnZXRQb2xsQW5zd2VyVm90ZXJzOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGFuc3dlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRQb2xsQW5zd2VyVm90ZXJzKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiB7IHVzZXJzOiByZXMudXNlcnMubWFwKCh1c2VyKSA9PiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB1c2VyKSkgfTtcbiAgICB9LFxuICAgIGVuZFBvbGw6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVuZFBvbGwoY2hhbm5lbElkLCBtZXNzYWdlSWQpKTtcbiAgICB9LFxuICAgIHN5bmNHdWlsZFRlbXBsYXRlOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGVtcGxhdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5zeW5jR3VpbGRUZW1wbGF0ZShndWlsZElkKSk7XG4gICAgfSxcbiAgICB1cHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiBhc3luYyAoY29tbWFuZHMsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UudXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyhjb21tYW5kcywgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHJlcykpO1xuICAgIH0sXG4gICAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiBhc3luYyAoZ3VpbGRJZCwgY29tbWFuZHMsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UudXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzKGd1aWxkSWQsIGNvbW1hbmRzLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgcmVzKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBlZGl0Q3VycmVudE1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEN1cnJlbnRNZW1iZXIoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSwgeyBndWlsZElkLCB1c2VySWQ6IGJvdC5pZCB9KTtcbiAgICB9LFxuICAgIGVkaXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdE1lbWJlcihndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbiksIHsgZ3VpbGRJZCwgdXNlcklkIH0pO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudE1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIGJlYXJlclRva2VuKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRDdXJyZW50TWVtYmVyKGd1aWxkSWQsIGJlYXJlclRva2VuKTtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHJlcywgeyBndWlsZElkLCB1c2VySWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHJlcy51c2VyLmlkKSB9KTtcbiAgICB9LFxuICAgIGdldE1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0TWVtYmVyKGd1aWxkSWQsIHVzZXJJZCksIHsgZ3VpbGRJZCwgdXNlcklkIH0pO1xuICAgIH0sXG4gICAgZ2V0TWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcmVzLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocmVzLnVzZXIuaWQpIH0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIHBydW5lTWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnBydW5lTWVtYmVycyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pO1xuICAgIH0sXG4gICAgc2VhcmNoTWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLnNlYXJjaE1lbWJlcnMoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCByZXMsIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShyZXMudXNlci5pZCkgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgYnVsa0Jhbk1lbWJlcnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmJ1bGtCYW5NZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbik7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhbm5lZFVzZXJzOiByZXMuYmFubmVkVXNlcnMubWFwKCh4KSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh4KSksXG4gICAgICAgIGZhaWxlZFVzZXJzOiByZXMuZmFpbGVkVXNlcnMubWFwKCh4KSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh4KSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlOiBhc3luYyAoYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZShhcHBsaWNhdGlvbklkLCBpbnN0YW5jZUlkKTtcbiAgICB9LFxuICAgIGxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogYXN5bmMgKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5saXN0QXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHMoYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICB1cGRhdGVBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC51cGRhdGVBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkcyhhcHBsaWNhdGlvbklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGNyZWF0ZUxvYmJ5OiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVMb2JieShvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjcmVhdGVPckpvaW5Mb2JieTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlT3JKb2luTG9iYnkob3B0aW9ucykpO1xuICAgIH0sXG4gICAgZ2V0TG9iYnk6IGFzeW5jIChsb2JieUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldExvYmJ5KGxvYmJ5SWQpKTtcbiAgICB9LFxuICAgIG1vZGlmeUxvYmJ5OiBhc3luYyAobG9iYnlJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5tb2RpZnlMb2JieShsb2JieUlkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBhZGRNZW1iZXJUb0xvYmJ5OiBhc3luYyAobG9iYnlJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lbWJlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmFkZE1lbWJlclRvTG9iYnkobG9iYnlJZCwgdXNlcklkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBidWxrVXBkYXRlTG9iYnlNZW1iZXJzOiBhc3luYyAobG9iYnlJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5idWxrVXBkYXRlTG9iYnlNZW1iZXJzKGxvYmJ5SWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lbWJlcihib3QsIHJlcykpO1xuICAgIH0sXG4gICAgbGlua0NoYW5uZWxUb0xvYmJ5OiBhc3luYyAobG9iYnlJZCwgYmVhcmVyVG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UubGlua0NoYW5uZWxUb0xvYmJ5KGxvYmJ5SWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICB1bmxpbmtDaGFubmVsVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnVubGlua0NoYW5uZWxUb0xvYmJ5KGxvYmJ5SWQsIGJlYXJlclRva2VuKSk7XG4gICAgfSxcbiAgICB1cGRhdGVMb2JieU1lc3NhZ2VNb2RlcmF0aW9uTWV0YWRhdGE6IGFzeW5jIChsb2JieUlkLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS51cGRhdGVMb2JieU1lc3NhZ2VNb2RlcmF0aW9uTWV0YWRhdGEobG9iYnlJZCwgbWVzc2FnZUlkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIHNlbmRMb2JieU1lc3NhZ2U6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2Uuc2VuZExvYmJ5TWVzc2FnZShiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZ2V0TG9iYnlNZXNzYWdlczogYXN5bmMgKGJlYXJlclRva2VuLCBsb2JieUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldExvYmJ5TWVzc2FnZXMoYmVhcmVyVG9rZW4sIGxvYmJ5SWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lc3NhZ2UoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclNlbGY6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnlJbnZpdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JTZWxmKGJlYXJlclRva2VuLCBsb2JieUlkKSk7XG4gICAgfSxcbiAgICBjcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JVc2VyOiBhc3luYyAobG9iYnlJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieUludml0ZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXIobG9iYnlJZCwgdXNlcklkKSk7XG4gICAgfSxcbiAgICBnZXRUYXJnZXRVc2VyczogYXN5bmMgKGludml0ZUNvZGUpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRUYXJnZXRVc2VycyhpbnZpdGVDb2RlKTtcbiAgICB9LFxuICAgIHVwZGF0ZVRhcmdldFVzZXJzOiBhc3luYyAoaW52aXRlQ29kZSwgdGFyZ2V0VXNlcnNGaWxlKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5zbmFrZS51cGRhdGVUYXJnZXRVc2VycyhpbnZpdGVDb2RlLCB0YXJnZXRVc2Vyc0ZpbGUpO1xuICAgIH0sXG4gICAgZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXM6IGFzeW5jIChpbnZpdGVDb2RlKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXMoaW52aXRlQ29kZSk7XG4gICAgfSxcbiAgICBhZGRSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmFkZFJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbik7XG4gICAgfSxcbiAgICBhZGRSZWFjdGlvbnM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb25zLCBvcmRlcmVkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuYWRkUmVhY3Rpb25zKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbnMsIG9yZGVyZWQpO1xuICAgIH0sXG4gICAgYWRkUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5hZGRSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgYWRkVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5hZGRUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgYWRkRG1SZWNpcGllbnQ6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmFkZERtUmVjaXBpZW50KGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGFkZEd1aWxkTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuYWRkR3VpbGRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGRlbGV0ZUF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBzZXRWb2ljZUNoYW5uZWxTdGF0dXM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnNldFZvaWNlQ2hhbm5lbFN0YXR1cyhjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVDaGFubmVsKGNoYW5uZWxJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IGFzeW5jIChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVFbW9qaTogYXN5bmMgKGd1aWxkSWQsIGlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVFbW9qaShndWlsZElkLCBpZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUFwcGxpY2F0aW9uRW1vamkoaWQpO1xuICAgIH0sXG4gICAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQsIGd1aWxkSWQpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVHdWlsZFN0aWNrZXIoZ3VpbGRJZCwgc3RpY2tlcklkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgdGVtcGxhdGVDb2RlKTtcbiAgICB9LFxuICAgIGRlbGV0ZUludGVncmF0aW9uOiBhc3luYyAoZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlSW50ZWdyYXRpb24oZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUludml0ZTogYXN5bmMgKGludml0ZUNvZGUsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUludml0ZShpbnZpdGVDb2RlLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZXM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZHMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZU1lc3NhZ2VzKGNoYW5uZWxJZCwgbWVzc2FnZUlkcywgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRva2VuKTtcbiAgICB9LFxuICAgIGRlbGV0ZU93blJlYWN0aW9uOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlT3duUmVhY3Rpb24oY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJlYWN0aW9uc0FsbDogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlUmVhY3Rpb25zQWxsKGNoYW5uZWxJZCwgbWVzc2FnZUlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJlYWN0aW9uc0Vtb2ppOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlUmVhY3Rpb25zRW1vamkoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVJvbGUoZ3VpbGRJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlU2NoZWR1bGVkRXZlbnQ6IGFzeW5jIChndWlsZElkLCBldmVudElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlU2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCk7XG4gICAgfSxcbiAgICBkZWxldGVTdGFnZUluc3RhbmNlOiBhc3luYyAoY2hhbm5lbElkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVVzZXJSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlVXNlclJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVdlYmhvb2sod2ViaG9va0lkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va01lc3NhZ2U6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va1dpdGhUb2tlbjogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pO1xuICAgIH0sXG4gICAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXMoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pO1xuICAgIH0sXG4gICAgZWRpdENoYW5uZWxQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBjaGFubmVsUG9zaXRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdENoYW5uZWxQb3NpdGlvbnMoZ3VpbGRJZCwgY2hhbm5lbFBvc2l0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0T3duVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0T3duVm9pY2VTdGF0ZShndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGVkaXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0VXNlclZvaWNlU3RhdGUoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBkZWxldGVDdXJyZW50VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICBqb2luVGhyZWFkOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2Uuam9pblRocmVhZChjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgbGVhdmVHdWlsZDogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5sZWF2ZUd1aWxkKGd1aWxkSWQpO1xuICAgIH0sXG4gICAgbGVhdmVUaHJlYWQ6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5sZWF2ZVRocmVhZChjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5yZW1vdmVSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgcmVtb3ZlVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5yZW1vdmVUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlRG1SZWNpcGllbnQ6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnJlbW92ZURtUmVjaXBpZW50KGNoYW5uZWxJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIHNlbmRJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAoaW50ZXJhY3Rpb25JZCwgdG9rZW4sIG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBib3QucmVzdC5zbmFrZS5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShpbnRlcmFjdGlvbklkLCB0b2tlbiwgb3B0aW9ucywgcGFyYW1zKTtcblxuICAgICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuO1xuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoYm90LCByZXNwb25zZSk7XG4gICAgfSxcbiAgICB0cmlnZ2VyVHlwaW5nSW5kaWNhdG9yOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UudHJpZ2dlclR5cGluZ0luZGljYXRvcihjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgYmFuTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5iYW5NZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pO1xuICAgIH0sXG5cbiAgICBraWNrTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5raWNrTWVtYmVyKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIHBpbk1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UucGluTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIHVuYmFuTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS51bmJhbk1lbWJlcihndWlsZElkLCB1c2VySWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICB1bnBpbk1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UudW5waW5NZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRPbmJvYXJkaW5nOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGRPbmJvYXJkaW5nKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRPbmJvYXJkaW5nKGd1aWxkSWQpKTtcbiAgICB9LFxuICAgIGVkaXRHdWlsZE9uYm9hcmRpbmc6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkT25ib2FyZGluZyhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRHdWlsZE9uYm9hcmRpbmcoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBtb2RpZnlHdWlsZEluY2lkZW50QWN0aW9uczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmluY2lkZW50c0RhdGEoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5tb2RpZnlHdWlsZEluY2lkZW50QWN0aW9ucyhndWlsZElkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBsaXN0RW50aXRsZW1lbnRzOiBhc3luYyAoYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5saXN0RW50aXRsZW1lbnRzKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpKS5tYXAoKGVudGl0bGVtZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgZW50aXRsZW1lbnQpKTtcbiAgICB9LFxuICAgIGdldEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW50aXRsZW1lbnQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSk7XG4gICAgfSxcbiAgICBjcmVhdGVUZXN0RW50aXRsZW1lbnQ6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBib2R5KSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbnRpdGxlbWVudChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZVRlc3RFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBib2R5KSwgeyBwYXJ0aWFsOiB0cnVlIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlVGVzdEVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpO1xuICAgIH0sXG4gICAgY29uc3VtZUVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UuY29uc3VtZUVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpO1xuICAgIH0sXG4gICAgbGlzdFNrdXM6IGFzeW5jIChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmxpc3RTa3VzKGFwcGxpY2F0aW9uSWQpKS5tYXAoKHNrdSkgPT4gYm90LnRyYW5zZm9ybWVycy5za3UoYm90LCBza3UpKTtcbiAgICB9LFxuICAgIGdldFN1YnNjcmlwdGlvbjogYXN5bmMgKHNrdUlkLCBzdWJzY3JpcHRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3Vic2NyaXB0aW9uKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0U3Vic2NyaXB0aW9uKHNrdUlkLCBzdWJzY3JpcHRpb25JZCkpO1xuICAgIH0sXG4gICAgbGlzdFN1YnNjcmlwdGlvbnM6IGFzeW5jIChza3VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5saXN0U3Vic2NyaXB0aW9ucyhza3VJZCwgb3B0aW9ucykpLm1hcCgoc3Vic2NyaXB0aW9uKSA9PiBib3QudHJhbnNmb3JtZXJzLnN1YnNjcmlwdGlvbihib3QsIHN1YnNjcmlwdGlvbikpO1xuICAgIH0sXG4gICAgc2VuZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2Uuc2VuZFNvdW5kYm9hcmRTb3VuZChjaGFubmVsSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbGlzdERlZmF1bHRTb3VuZGJvYXJkU291bmRzOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kcygpKS5tYXAoKHNvdW5kKSA9PiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIHNvdW5kKSk7XG4gICAgfSxcbiAgICBsaXN0R3VpbGRTb3VuZGJvYXJkU291bmRzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3Quc25ha2UubGlzdEd1aWxkU291bmRib2FyZFNvdW5kcyhndWlsZElkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlcy5pdGVtcy5tYXAoKHNvdW5kKSA9PiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIHNvdW5kKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0R3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBzb3VuZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRHdWlsZFNvdW5kYm9hcmRTb3VuZChndWlsZElkLCBzb3VuZElkKSk7XG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBtb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIHNvdW5kSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UubW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQoZ3VpbGRJZCwgc291bmRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBkZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIHNvdW5kSWQsIHJlYXNvbikgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQoZ3VpbGRJZCwgc291bmRJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUxvYmJ5OiBhc3luYyAobG9iYnlJZCkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlTG9iYnkobG9iYnlJZCk7XG4gICAgfSxcbiAgICByZW1vdmVNZW1iZXJGcm9tTG9iYnk6IGFzeW5jIChsb2JieUlkLCB1c2VySWQpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnJlbW92ZU1lbWJlckZyb21Mb2JieShsb2JieUlkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgbGVhdmVMb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5zbmFrZS5sZWF2ZUxvYmJ5KGxvYmJ5SWQsIGJlYXJlclRva2VuKTtcbiAgICB9LFxuICAgIC8vIFRoZSBzYXRpc2ZpZXMgd2l0aCB0aGUgcmVjb3JkIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgYWxsIFJlc3RlbmRwb2ludHMgaGF2ZSBhIG1hdGNoaW5nIGhlbHBlci4gSXQgY2FuJ3QgYmUgZG9uZSBpbiBCb3RIZWxwZXJzIGl0c2VsZiBhcyB0eXBlcyBkb24ndCBzdXBwb3J0IHRoYXQuXG4gIH0gc2F0aXNmaWVzIEJvdEhlbHBlcnM8VFByb3BzLCBUQmVoYXZpb3I+IHNhdGlzZmllcyBSZWNvcmQ8a2V5b2YgUmVzdEVuZHBvaW50cywgdW5rbm93bj47XG59XG5cbmV4cG9ydCB0eXBlIEJvdEhlbHBlcnM8VFByb3BzIGV4dGVuZHMgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIFRCZWhhdmlvciBleHRlbmRzIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+ID0ge1xuICBjcmVhdGVBdXRvbW9kUnVsZTogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEF1dG9Nb2RlcmF0aW9uUnVsZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRDaGFubmVsLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlRW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkRW1vamksIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlQXBwbGljYXRpb25FbW9qaTogKG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUZvcnVtVGhyZWFkOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlRm9ydW1Qb3N0V2l0aE1lc3NhZ2UsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmQ6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IENyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlR3VpbGRTdGlja2VyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUd1aWxkU3RpY2tlck9wdGlvbnMsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlVGVtcGxhdGUpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUludml0ZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQ3JlYXRlQ2hhbm5lbEludml0ZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRJbnZpdGU+PjtcbiAgZ2V0R3VpbGRSb2xlTWVtYmVyQ291bnRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+O1xuICBjcmVhdGVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZFJvbGUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVTY2hlZHVsZWRFdmVudDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVTY2hlZHVsZWRFdmVudCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTY2hlZHVsZWRFdmVudCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlU3RhZ2VJbnN0YW5jZTogKG9wdGlvbnM6IENyZWF0ZVN0YWdlSW5zdGFuY2UsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGFnZUluc3RhbmNlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVXZWJob29rOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZVdlYmhvb2ssIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM+W10sXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0QXV0b21vZFJ1bGU6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgcnVsZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogUGFydGlhbDxFZGl0QXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucz4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0Qm90UHJvZmlsZTogKG9wdGlvbnM6IHtcbiAgICB1c2VybmFtZT86IHN0cmluZztcbiAgICBib3RBdmF0YXJVUkw/OiBzdHJpbmcgfCBudWxsO1xuICAgIGJvdEJhbm5lclVSTD86IHN0cmluZyB8IG51bGw7XG4gIH0pID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Q2hhbm5lbCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0QXBwbGljYXRpb25FbW9qaTogKGlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRGb2xsb3d1cE1lc3NhZ2U6IChcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEludGVyYWN0aW9uQ2FsbGJhY2tEYXRhLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R3VpbGRTdGlja2VyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHN0aWNrZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEF0TGVhc3RPbmU8RWRpdEd1aWxkU3RpY2tlck9wdGlvbnM+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZFRlbXBsYXRlOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHRlbXBsYXRlQ29kZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkVGVtcGxhdGUsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRNZXNzYWdlKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0Um9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRHdWlsZFJvbGUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0Um9sZVBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Um9sZVBvc2l0aW9uc1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Um9sZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBlZGl0U2NoZWR1bGVkRXZlbnQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8RWRpdFNjaGVkdWxlZEV2ZW50PixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTY2hlZHVsZWRFdmVudCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdG9waWM6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0YWdlSW5zdGFuY2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeVdlYmhvb2ssIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0V2ViaG9va01lc3NhZ2U6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEVkaXRXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0V2ViaG9va1dpdGhUb2tlbjogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT21pdDxNb2RpZnlXZWJob29rLCAnY2hhbm5lbElkJz4sXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0V2VsY29tZVNjcmVlbjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBNb2RpZnlHdWlsZFdlbGNvbWVTY3JlZW4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2VsY29tZVNjcmVlbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFdpZGdldFNldHRpbmdzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZFdpZGdldFNldHRpbmdzLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IChcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbj4sXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbj4+O1xuICBkZWxldGVDdXJyZW50VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IChiZWFyZXJUb2tlbjogc3RyaW5nLCBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGV4ZWN1dGVXZWJob29rOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBFeGVjdXRlV2ViaG9vayxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPiB8IHVuZGVmaW5lZD47XG4gIGZvbGxvd0Fubm91bmNlbWVudDogKHNvdXJjZUNoYW5uZWxJZDogQmlnU3RyaW5nLCB0YXJnZXRDaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRm9sbG93ZWRDaGFubmVsPj47XG4gIGdldEFjdGl2ZVRocmVhZHM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICkgPT4gUHJvbWlzZTx7IHRocmVhZHM6IFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPltdOyBtZW1iZXJzOiBTZXR1cERlc2lyZWRQcm9wczxUaHJlYWRNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdIH0+O1xuICBnZXRBcHBsaWNhdGlvbkluZm86ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb24sIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBcHBsaWNhdGlvbkluZm86IChib2R5OiBFZGl0QXBwbGljYXRpb24pID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb24sIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEN1cnJlbnRBdXRoZW50aWNhdGlvbkluZm86IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDdXJyZW50QXV0aG9yaXphdGlvbj4+O1xuICBleGNoYW5nZVRva2VuOiAoXG4gICAgY2xpZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBjbGllbnRTZWNyZXQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkVG9rZW5FeGNoYW5nZT4sXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZT4+O1xuICByZXZva2VUb2tlbjogKGNsaWVudElkOiBCaWdTdHJpbmcsIGNsaWVudFNlY3JldDogc3RyaW5nLCBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkVG9rZW5SZXZvY2F0aW9uPikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEF1ZGl0TG9nOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRBdWRpdExvZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXVkaXRMb2c+PjtcbiAgZ2V0QXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEF1dG9Nb2RlcmF0aW9uUnVsZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0QXV0b21vZFJ1bGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEF1dG9Nb2RlcmF0aW9uUnVsZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnM6ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Vm9pY2VSZWdpb24sIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0QmFuOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQmFuPj47XG4gIGdldEJhbnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRCYW5zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCYW4+W10+O1xuICBnZXRDaGFubmVsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q2hhbm5lbEludml0ZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0Q2hhbm5lbHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRDaGFubmVsV2ViaG9va3M6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldERtQ2hhbm5lbDogKHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEdyb3VwRG1DaGFubmVsOiAob3B0aW9uczogQ3JlYXRlR3JvdXBEbU9wdGlvbnMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0RW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0QXBwbGljYXRpb25FbW9qaTogKGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0RW1vamlzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEFwcGxpY2F0aW9uRW1vamlzOiAoKSA9PiBQcm9taXNlPHsgaXRlbXM6IFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj5bXSB9PjtcbiAgZ2V0Rm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R2F0ZXdheUJvdDogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHZXRHYXRld2F5Qm90LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChjb21tYW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBvcHRpb25zPzogR2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0R3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiB7IGNvdW50cz86IGJvb2xlYW4gfSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R3VpbGRzOiAoYmVhcmVyVG9rZW46IHN0cmluZywgb3B0aW9ucz86IEdldFVzZXJHdWlsZHMpID0+IFByb21pc2U8UGFydGlhbDxTZXR1cERlc2lyZWRQcm9wczxHdWlsZCwgVFByb3BzLCBUQmVoYXZpb3I+PltdPjtcbiAgZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IChjb21tYW5kSWQ6IEJpZ1N0cmluZywgZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEd1aWxkUHJldmlldzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRQcmV2aWV3Pj47XG4gIGdldEd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R3VpbGRTdGlja2VyczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEd1aWxkVGVtcGxhdGU6ICh0ZW1wbGF0ZUNvZGU6IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R3VpbGRUZW1wbGF0ZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0R3VpbGRXZWJob29rczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEludGVncmF0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxJbnRlZ3JhdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRJbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRJbnZpdGUpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8SW52aXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRJbnZpdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldE1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRNZXNzYWdlc09wdGlvbnMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBzZWFyY2hHdWlsZE1lc3NhZ2VzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBTZWFyY2hHdWlsZE1lc3NhZ2VzT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFxuICAgIHwgQ2FtZWxpemU8RGlzY29yZFNlYXJjaEd1aWxkTWVzc2FnZXNJbmRleGluZz5cbiAgICB8IChPbWl0PENhbWVsaXplPERpc2NvcmRTZWFyY2hHdWlsZE1lc3NhZ2VzPiwgJ21lc3NhZ2VzJyB8ICd0aHJlYWRzJyB8ICdtZW1iZXJzJz4gJiB7XG4gICAgICAgIG1lc3NhZ2VzOiBTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXVtdO1xuICAgICAgICB0aHJlYWRzPzogU2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+W107XG4gICAgICAgIG1lbWJlcnM/OiBTZXR1cERlc2lyZWRQcm9wczxUaHJlYWRNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdO1xuICAgICAgfSlcbiAgPjtcbiAgZ2V0U3RpY2tlclBhY2s6IChzdGlja2VyUGFja0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlclBhY2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFN0aWNrZXJQYWNrczogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyUGFjaywgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldENoYW5uZWxQaW5zOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldENoYW5uZWxQaW5zT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPHsgaXRlbXM6IFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2VQaW4sIFRQcm9wcywgVEJlaGF2aW9yPltdOyBoYXNNb3JlOiBib29sZWFuIH0+O1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBCb3RIZWxwZXJzLmdldENoYW5uZWxQaW5zfSBpbnN0ZWFkICovXG4gIGdldFBpbm5lZE1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzPj47XG4gIGdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PjtcbiAgZ2V0UHJ1bmVDb3VudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkUHJ1bmVDb3VudFF1ZXJ5KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRQcnVuZWRDb3VudD4+O1xuICBnZXRQdWJsaWNBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PjtcbiAgZ2V0Um9sZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Um9sZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRTY2hlZHVsZWRFdmVudDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBldmVudElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IHsgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4gfSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNjaGVkdWxlZEV2ZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRTY2hlZHVsZWRFdmVudHM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudHMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U2NoZWR1bGVkRXZlbnQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0U2NoZWR1bGVkRXZlbnRVc2VyczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBldmVudElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsXG4gICkgPT4gUHJvbWlzZTxBcnJheTx7IHVzZXI6IFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPjsgbWVtYmVyPzogU2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4gfT4+O1xuICBnZXRTZXNzaW9uSW5mbzogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHZXRHYXRld2F5Qm90LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RhZ2VJbnN0YW5jZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxWb2ljZVN0YXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRVc2VyVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Vm9pY2VTdGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0U3RpY2tlcjogKHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFRocmVhZE1lbWJlcjogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIHVzZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRUaHJlYWRNZW1iZXIsXG4gICAgZXh0cmE/OiBUaHJlYWRNZW1iZXJUcmFuc2Zvcm1lckV4dHJhLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGhyZWFkTWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRUaHJlYWRNZW1iZXJzOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IExpc3RUaHJlYWRNZW1iZXJzLFxuICAgIGV4dHJhPzogVGhyZWFkTWVtYmVyVHJhbnNmb3JtZXJFeHRyYSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRocmVhZE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRSZWFjdGlvbnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICByZWFjdGlvbjogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRSZWFjdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFVzZXI6IChpZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEN1cnJlbnRVc2VyOiAoYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRVc2VyQ29ubmVjdGlvbnM6IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDb25uZWN0aW9uPltdPjtcbiAgZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IChiZWFyZXJUb2tlbjogc3RyaW5nLCBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+PjtcbiAgZ2V0VmFuaXR5VXJsOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRWYW5pdHlVcmw+PjtcbiAgZ2V0Vm9pY2VSZWdpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFZvaWNlUmVnaW9uLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFdlYmhvb2s6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRXZWJob29rTWVzc2FnZTogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWJob29rLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRXZWxjb21lU2NyZWVuOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlbGNvbWVTY3JlZW4sIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdpZGdldDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZFdpZGdldCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2lkZ2V0U2V0dGluZ3M6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRXaWRnZXRTZXR0aW5ncywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgcHVibGlzaE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc2VuZE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlTWVzc2FnZU9wdGlvbnMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc2VuZEZvbGxvd3VwTWVzc2FnZTogKHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyYWN0aW9uQ2FsbGJhY2tEYXRhKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2U6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhNZXNzYWdlLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2U6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFBvbGxBbnN3ZXJWb3RlcnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBhbnN3ZXJJZDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBHZXRQb2xsQW5zd2VyVm90ZXMsXG4gICkgPT4gUHJvbWlzZTx7IHVzZXJzOiBTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXSB9PjtcbiAgZW5kUG9sbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzeW5jR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgdXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICB1cHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgY29tbWFuZHM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZFtdLFxuICAgIG9wdGlvbnM/OiBVcHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZWRpdEN1cnJlbnRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUN1cnJlbnRNZW1iZXIsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRNZW1iZXI6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgdXNlcklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogTW9kaWZ5R3VpbGRNZW1iZXIsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRDdXJyZW50TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldE1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IExpc3RHdWlsZE1lbWJlcnMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIHBydW5lTWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQmVnaW5HdWlsZFBydW5lLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8eyBwcnVuZWQ6IG51bWJlciB8IG51bGwgfT47XG4gIHNlYXJjaE1lbWJlcnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogT21pdDxTZWFyY2hNZW1iZXJzLCAncXVlcnknPixcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBidWxrQmFuTWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRCdWxrQmFuLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8eyBiYW5uZWRVc2VyczogYmlnaW50W107IGZhaWxlZFVzZXJzOiBiaWdpbnRbXSB9PjtcbiAgZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBpbnN0YW5jZUlkOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFjdGl2aXR5SW5zdGFuY2U+PjtcbiAgbGlzdEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGE+W10+O1xuICB1cGRhdGVBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogKFxuICAgIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YT5bXT47XG4gIGNyZWF0ZUxvYmJ5OiAob3B0aW9uczogQ3JlYXRlTG9iYnkpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZU9ySm9pbkxvYmJ5OiAob3B0aW9uczogQ3JlYXRlT3JKb2luTG9iYnkpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldExvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBtb2RpZnlMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5TG9iYnkpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGFkZE1lbWJlclRvTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGRMb2JieU1lbWJlcikgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieU1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgYnVsa1VwZGF0ZUxvYmJ5TWVtYmVyczogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQnVsa1VwZGF0ZUxvYmJ5TWVtYmVyW10pID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgbGlua0NoYW5uZWxUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nLCBvcHRpb25zOiBMaW5rQ2hhbm5lbFRvTG9iYnkpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHVubGlua0NoYW5uZWxUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICB1cGRhdGVMb2JieU1lc3NhZ2VNb2RlcmF0aW9uTWV0YWRhdGE6IChsb2JieUlkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRUYXJnZXRVc2VyczogKGludml0ZUNvZGU6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICB1cGRhdGVUYXJnZXRVc2VyczogKGludml0ZUNvZGU6IHN0cmluZywgdGFyZ2V0VXNlcnNGaWxlOiBCbG9iKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRUYXJnZXRVc2Vyc0pvYlN0YXR1czogKGludml0ZUNvZGU6IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVGFyZ2V0VXNlcnNKb2JTdGF0dXM+PjtcbiAgc2VuZExvYmJ5TWVzc2FnZTogKFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICAgbG9iYnlJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFNlbmRMb2JieU1lc3NhZ2UsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieU1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldExvYmJ5TWVzc2FnZXM6IChcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIGxvYmJ5SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0TG9iYnlNZXNzYWdlcyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBjcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JTZWxmOiAoYmVhcmVyVG9rZW46IHN0cmluZywgbG9iYnlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5SW52aXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JVc2VyOiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieUludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgYWRkUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZFJlYWN0aW9uczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb25zOiBzdHJpbmdbXSwgb3JkZXJlZD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGFkZFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZERtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGREbVJlY2lwaWVudE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZEd1aWxkTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkR3VpbGRNZW1iZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0Vm9pY2VDaGFubmVsU3RhdHVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IFNldFZvaWNlQ2hhbm5lbFN0YXR1cywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVDaGFubmVsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvdmVyd3JpdGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUFwcGxpY2F0aW9uRW1vamk6IChpZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlR3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzdGlja2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVHdWlsZFRlbXBsYXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB0ZW1wbGF0ZUNvZGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlSW50ZWdyYXRpb246IChndWlsZElkOiBCaWdTdHJpbmcsIGludGVncmF0aW9uSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVJbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVNZXNzYWdlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWRzOiBCaWdTdHJpbmdbXSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVPd25SZWFjdGlvbjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlUmVhY3Rpb25zQWxsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVSZWFjdGlvbnNFbW9qaTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlU2NoZWR1bGVkRXZlbnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIGV2ZW50SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlU3RhZ2VJbnN0YW5jZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVVzZXJSZWFjdGlvbjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVdlYmhvb2s6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVXZWJob29rTWVzc2FnZTogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IERlbGV0ZVdlYmhvb2tNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlV2ViaG9va1dpdGhUb2tlbjogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBlZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBlZGl0Q2hhbm5lbFBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgY2hhbm5lbFBvc2l0aW9uczogTW9kaWZ5R3VpbGRDaGFubmVsUG9zaXRpb25zW10pID0+IFByb21pc2U8dm9pZD47XG4gIGVkaXRPd25Wb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0T3duVm9pY2VTdGF0ZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZWRpdFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0VXNlclZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD47XG4gIGpvaW5UaHJlYWQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGVhdmVHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGVhdmVUaHJlYWQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZVRocmVhZE1lbWJlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlRG1SZWNpcGllbnQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHNlbmRJbnRlcmFjdGlvblJlc3BvbnNlOiAoXG4gICAgaW50ZXJhY3Rpb25JZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgb3B0aW9uczogSW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgICBwYXJhbXM/OiBJbnRlcmFjdGlvbkNhbGxiYWNrT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPHZvaWQgfCBTZXR1cERlc2lyZWRQcm9wczxJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHRyaWdnZXJUeXBpbmdJbmRpY2F0b3I6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgYmFuTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IENyZWF0ZUd1aWxkQmFuLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGtpY2tNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHBpbk1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgdW5iYW5NZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHVucGluTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRHdWlsZE9uYm9hcmRpbmc6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRPbmJvYXJkaW5nLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R3VpbGRPbmJvYXJkaW5nOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEVkaXRHdWlsZE9uYm9hcmRpbmcsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRPbmJvYXJkaW5nLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBtb2RpZnlHdWlsZEluY2lkZW50QWN0aW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBNb2RpZnlHdWlsZEluY2lkZW50QWN0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEluY2lkZW50c0RhdGEsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGxpc3RFbnRpdGxlbWVudHM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRFbnRpdGxlbWVudHMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW50aXRsZW1lbnQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0RW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGVudGl0bGVtZW50SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlVGVzdEVudGl0bGVtZW50OiAoXG4gICAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICAgIGJvZHk6IENyZWF0ZVRlc3RFbnRpdGxlbWVudCxcbiAgKSA9PiBQcm9taXNlPFBhcnRpYWw8U2V0dXBEZXNpcmVkUHJvcHM8RW50aXRsZW1lbnQsIFRQcm9wcywgVEJlaGF2aW9yPj4+O1xuICBkZWxldGVUZXN0RW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGVudGl0bGVtZW50SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGxpc3RTa3VzOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNrdSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBsaXN0U3Vic2NyaXB0aW9uczogKHNrdUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0U2t1U3Vic2NyaXB0aW9uc09wdGlvbnMpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3Vic2NyaXB0aW9uLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFN1YnNjcmlwdGlvbjogKHNrdUlkOiBCaWdTdHJpbmcsIHN1YnNjcmlwdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3Vic2NyaXB0aW9uLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzZW5kU291bmRib2FyZFNvdW5kOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IFNlbmRTb3VuZGJvYXJkU291bmQpID0+IFByb21pc2U8dm9pZD47XG4gIGxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kczogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTb3VuZGJvYXJkU291bmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgbGlzdEd1aWxkU291bmRib2FyZFNvdW5kczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx7IGl0ZW1zOiBTZXR1cERlc2lyZWRQcm9wczxTb3VuZGJvYXJkU291bmQsIFRQcm9wcywgVEJlaGF2aW9yPltdIH0+O1xuICBnZXRHdWlsZFNvdW5kYm9hcmRTb3VuZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc291bmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBtb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBzb3VuZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogTW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBkZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc291bmRJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVNZW1iZXJGcm9tTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsZWF2ZUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xufTtcbiJdLCJuYW1lcyI6WyJjYW1lbGl6ZSIsImNyZWF0ZUJvdEhlbHBlcnMiLCJib3QiLCJjcmVhdGVBdXRvbW9kUnVsZSIsImd1aWxkSWQiLCJvcHRpb25zIiwicmVhc29uIiwidHJhbnNmb3JtZXJzIiwiYXV0b01vZGVyYXRpb25SdWxlIiwicmVzdCIsInNuYWtlIiwiY3JlYXRlQ2hhbm5lbCIsImNoYW5uZWwiLCJjcmVhdGVFbW9qaSIsImVtb2ppIiwiY3JlYXRlQXBwbGljYXRpb25FbW9qaSIsImNyZWF0ZUZvcnVtVGhyZWFkIiwiY2hhbm5lbElkIiwiY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiY29tbWFuZCIsImFwcGxpY2F0aW9uQ29tbWFuZCIsImNyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiY3JlYXRlR3VpbGRTdGlja2VyIiwic3RpY2tlciIsImNyZWF0ZUd1aWxkVGVtcGxhdGUiLCJ0ZW1wbGF0ZSIsImNyZWF0ZUludml0ZSIsImdldEd1aWxkUm9sZU1lbWJlckNvdW50cyIsImNyZWF0ZVJvbGUiLCJyb2xlIiwiY3JlYXRlU2NoZWR1bGVkRXZlbnQiLCJzY2hlZHVsZWRFdmVudCIsImNyZWF0ZVN0YWdlSW5zdGFuY2UiLCJzdGFnZUluc3RhbmNlIiwiY3JlYXRlV2ViaG9vayIsIndlYmhvb2siLCJlZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMiLCJjb21tYW5kSWQiLCJiZWFyZXJUb2tlbiIsImd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMiLCJlZGl0QXV0b21vZFJ1bGUiLCJydWxlSWQiLCJlZGl0Qm90UHJvZmlsZSIsInVzZXIiLCJlZGl0Q2hhbm5lbCIsImVkaXRFbW9qaSIsImlkIiwiZWRpdEFwcGxpY2F0aW9uRW1vamkiLCJlZGl0Rm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJtZXNzYWdlSWQiLCJtZXNzYWdlIiwiZWRpdEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZCIsImVkaXRHdWlsZCIsImd1aWxkIiwiZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZWRpdEd1aWxkU3RpY2tlciIsInN0aWNrZXJJZCIsImVkaXRHdWlsZFRlbXBsYXRlIiwidGVtcGxhdGVDb2RlIiwiZWRpdE1lc3NhZ2UiLCJlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZWRpdFJvbGUiLCJyb2xlSWQiLCJlZGl0Um9sZVBvc2l0aW9ucyIsIm1hcCIsImVkaXRTY2hlZHVsZWRFdmVudCIsImV2ZW50SWQiLCJlZGl0U3RhZ2VJbnN0YW5jZSIsInRvcGljIiwiZWRpdFdlYmhvb2siLCJ3ZWJob29rSWQiLCJlZGl0V2ViaG9va01lc3NhZ2UiLCJlZGl0V2ViaG9va1dpdGhUb2tlbiIsImVkaXRXZWxjb21lU2NyZWVuIiwid2VsY29tZVNjcmVlbiIsImVkaXRXaWRnZXRTZXR0aW5ncyIsImd1aWxkV2lkZ2V0U2V0dGluZ3MiLCJleGVjdXRlV2ViaG9vayIsInJlc3VsdCIsImZvbGxvd0Fubm91bmNlbWVudCIsInNvdXJjZUNoYW5uZWxJZCIsInRhcmdldENoYW5uZWxJZCIsImdldEFjdGl2ZVRocmVhZHMiLCJ0aHJlYWRzIiwidGhyZWFkIiwibWVtYmVycyIsIm1lbWJlciIsInRocmVhZE1lbWJlciIsImdldEFwcGxpY2F0aW9uSW5mbyIsImFwcGxpY2F0aW9uIiwiZWRpdEFwcGxpY2F0aW9uSW5mbyIsImJvZHkiLCJnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvIiwiZXhjaGFuZ2VUb2tlbiIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwicmV2b2tlVG9rZW4iLCJnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uIiwiZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMiLCJyZXMiLCJnZXRBdWRpdExvZyIsImdldEF1dG9tb2RSdWxlIiwiZ2V0QXV0b21vZFJ1bGVzIiwiZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zIiwidm9pY2VSZWdpb24iLCJnZXRCYW4iLCJ1c2VySWQiLCJnZXRCYW5zIiwiZ2V0Q2hhbm5lbCIsImdldENoYW5uZWxJbnZpdGVzIiwiaW52aXRlIiwiZ2V0Q2hhbm5lbHMiLCJnZXRDaGFubmVsV2ViaG9va3MiLCJnZXREbUNoYW5uZWwiLCJnZXRHcm91cERtQ2hhbm5lbCIsImdldEVtb2ppIiwiZW1vamlJZCIsImdldEFwcGxpY2F0aW9uRW1vamkiLCJnZXRFbW9qaXMiLCJnZXRBcHBsaWNhdGlvbkVtb2ppcyIsIml0ZW1zIiwiaXRlbSIsImdldEZvbGxvd3VwTWVzc2FnZSIsImdldEdhdGV3YXlCb3QiLCJnYXRld2F5Qm90IiwiZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyIsImdldEd1aWxkIiwiZ2V0R3VpbGRzIiwicGFydGlhbCIsImdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZ2V0R3VpbGRQcmV2aWV3IiwiZ2V0R3VpbGRTdGlja2VyIiwiZ2V0R3VpbGRTdGlja2VycyIsImdldEd1aWxkVGVtcGxhdGUiLCJnZXRHdWlsZFRlbXBsYXRlcyIsImdldEd1aWxkV2ViaG9va3MiLCJnZXRJbnRlZ3JhdGlvbnMiLCJpbnRlZ3JhdGlvbiIsImd1aWxkX2lkIiwidG9TdHJpbmciLCJnZXRJbnZpdGUiLCJpbnZpdGVDb2RlIiwiZ2V0SW52aXRlcyIsImdldE1lc3NhZ2UiLCJnZXRNZXNzYWdlcyIsImdldFN0aWNrZXJQYWNrIiwic3RpY2tlclBhY2tJZCIsInN0aWNrZXJQYWNrIiwiZ2V0U3RpY2tlclBhY2tzIiwiZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZ2V0Q2hhbm5lbFBpbnMiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJtZXNzYWdlUGluIiwiZ2V0UGlubmVkTWVzc2FnZXMiLCJnZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzIiwiZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkcyIsImdldFBydW5lQ291bnQiLCJnZXRQdWJsaWNBcmNoaXZlZFRocmVhZHMiLCJnZXRSb2xlcyIsImdldFJvbGUiLCJnZXRTY2hlZHVsZWRFdmVudCIsImdldFNjaGVkdWxlZEV2ZW50cyIsImdldFNjaGVkdWxlZEV2ZW50VXNlcnMiLCJ1Iiwic25vd2ZsYWtlIiwiZ2V0U2Vzc2lvbkluZm8iLCJnZXRTdGFnZUluc3RhbmNlIiwiZ2V0T3duVm9pY2VTdGF0ZSIsInZvaWNlU3RhdGUiLCJnZXRVc2VyVm9pY2VTdGF0ZSIsImdldFN0aWNrZXIiLCJnZXRUaHJlYWRNZW1iZXIiLCJleHRyYSIsImdldFRocmVhZE1lbWJlcnMiLCJnZXRSZWFjdGlvbnMiLCJyZWFjdGlvbiIsImdldFVzZXIiLCJnZXRDdXJyZW50VXNlciIsImdldFVzZXJDb25uZWN0aW9ucyIsImdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uIiwiYXBwbGljYXRpb25JZCIsImdldFZhbml0eVVybCIsImdldFZvaWNlUmVnaW9ucyIsImdldFdlYmhvb2siLCJnZXRXZWJob29rTWVzc2FnZSIsImdldFdlYmhvb2tXaXRoVG9rZW4iLCJnZXRXZWxjb21lU2NyZWVuIiwiZ2V0V2lkZ2V0IiwiZ3VpbGRXaWRnZXQiLCJnZXRXaWRnZXRTZXR0aW5ncyIsInB1Ymxpc2hNZXNzYWdlIiwic2VhcmNoR3VpbGRNZXNzYWdlcyIsIm1lc3NhZ2VzIiwidW5kZWZpbmVkIiwic2VuZE1lc3NhZ2UiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwic3RhcnRUaHJlYWRXaXRoTWVzc2FnZSIsInN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UiLCJnZXRQb2xsQW5zd2VyVm90ZXJzIiwiYW5zd2VySWQiLCJ1c2VycyIsImVuZFBvbGwiLCJzeW5jR3VpbGRUZW1wbGF0ZSIsInVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHMiLCJjb21tYW5kcyIsInVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kcyIsImVkaXRDdXJyZW50TWVtYmVyIiwiZWRpdE1lbWJlciIsImdldEN1cnJlbnRNZW1iZXIiLCJnZXRNZW1iZXIiLCJnZXRNZW1iZXJzIiwicHJ1bmVNZW1iZXJzIiwic2VhcmNoTWVtYmVycyIsInF1ZXJ5IiwiYnVsa0Jhbk1lbWJlcnMiLCJiYW5uZWRVc2VycyIsIngiLCJmYWlsZWRVc2VycyIsImdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZSIsImluc3RhbmNlSWQiLCJsaXN0QXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHMiLCJ1cGRhdGVBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkcyIsImNyZWF0ZUxvYmJ5IiwibG9iYnkiLCJjcmVhdGVPckpvaW5Mb2JieSIsImdldExvYmJ5IiwibG9iYnlJZCIsIm1vZGlmeUxvYmJ5IiwiYWRkTWVtYmVyVG9Mb2JieSIsImxvYmJ5TWVtYmVyIiwiYnVsa1VwZGF0ZUxvYmJ5TWVtYmVycyIsImxpbmtDaGFubmVsVG9Mb2JieSIsInVubGlua0NoYW5uZWxUb0xvYmJ5IiwidXBkYXRlTG9iYnlNZXNzYWdlTW9kZXJhdGlvbk1ldGFkYXRhIiwic2VuZExvYmJ5TWVzc2FnZSIsImxvYmJ5TWVzc2FnZSIsImdldExvYmJ5TWVzc2FnZXMiLCJjcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JTZWxmIiwibG9iYnlJbnZpdGUiLCJjcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JVc2VyIiwiZ2V0VGFyZ2V0VXNlcnMiLCJ1cGRhdGVUYXJnZXRVc2VycyIsInRhcmdldFVzZXJzRmlsZSIsImdldFRhcmdldFVzZXJzSm9iU3RhdHVzIiwiYWRkUmVhY3Rpb24iLCJhZGRSZWFjdGlvbnMiLCJyZWFjdGlvbnMiLCJvcmRlcmVkIiwiYWRkUm9sZSIsImFkZFRocmVhZE1lbWJlciIsImFkZERtUmVjaXBpZW50IiwiYWRkR3VpbGRNZW1iZXIiLCJkZWxldGVBdXRvbW9kUnVsZSIsInNldFZvaWNlQ2hhbm5lbFN0YXR1cyIsImRlbGV0ZUNoYW5uZWwiLCJkZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlIiwib3ZlcndyaXRlSWQiLCJkZWxldGVFbW9qaSIsImRlbGV0ZUFwcGxpY2F0aW9uRW1vamkiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJkZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZCIsImRlbGV0ZUd1aWxkU3RpY2tlciIsImRlbGV0ZUd1aWxkVGVtcGxhdGUiLCJkZWxldGVJbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJkZWxldGVJbnZpdGUiLCJkZWxldGVNZXNzYWdlIiwiZGVsZXRlTWVzc2FnZXMiLCJtZXNzYWdlSWRzIiwiZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZGVsZXRlT3duUmVhY3Rpb24iLCJkZWxldGVSZWFjdGlvbnNBbGwiLCJkZWxldGVSZWFjdGlvbnNFbW9qaSIsImRlbGV0ZVJvbGUiLCJkZWxldGVTY2hlZHVsZWRFdmVudCIsImRlbGV0ZVN0YWdlSW5zdGFuY2UiLCJkZWxldGVVc2VyUmVhY3Rpb24iLCJkZWxldGVXZWJob29rIiwiZGVsZXRlV2ViaG9va01lc3NhZ2UiLCJkZWxldGVXZWJob29rV2l0aFRva2VuIiwiZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzIiwiZWRpdENoYW5uZWxQb3NpdGlvbnMiLCJjaGFubmVsUG9zaXRpb25zIiwiZWRpdE93blZvaWNlU3RhdGUiLCJlZGl0VXNlclZvaWNlU3RhdGUiLCJlZGl0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24iLCJkZWxldGVDdXJyZW50VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24iLCJqb2luVGhyZWFkIiwibGVhdmVHdWlsZCIsImxlYXZlVGhyZWFkIiwicmVtb3ZlUm9sZSIsInJlbW92ZVRocmVhZE1lbWJlciIsInJlbW92ZURtUmVjaXBpZW50Iiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpbnRlcmFjdGlvbklkIiwicGFyYW1zIiwicmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJ0cmlnZ2VyVHlwaW5nSW5kaWNhdG9yIiwiYmFuTWVtYmVyIiwia2lja01lbWJlciIsInBpbk1lc3NhZ2UiLCJ1bmJhbk1lbWJlciIsInVucGluTWVzc2FnZSIsImdldEd1aWxkT25ib2FyZGluZyIsImd1aWxkT25ib2FyZGluZyIsImVkaXRHdWlsZE9uYm9hcmRpbmciLCJtb2RpZnlHdWlsZEluY2lkZW50QWN0aW9ucyIsImluY2lkZW50c0RhdGEiLCJsaXN0RW50aXRsZW1lbnRzIiwiZW50aXRsZW1lbnQiLCJnZXRFbnRpdGxlbWVudCIsImVudGl0bGVtZW50SWQiLCJjcmVhdGVUZXN0RW50aXRsZW1lbnQiLCJkZWxldGVUZXN0RW50aXRsZW1lbnQiLCJjb25zdW1lRW50aXRsZW1lbnQiLCJsaXN0U2t1cyIsInNrdSIsImdldFN1YnNjcmlwdGlvbiIsInNrdUlkIiwic3Vic2NyaXB0aW9uSWQiLCJzdWJzY3JpcHRpb24iLCJsaXN0U3Vic2NyaXB0aW9ucyIsInNlbmRTb3VuZGJvYXJkU291bmQiLCJsaXN0RGVmYXVsdFNvdW5kYm9hcmRTb3VuZHMiLCJzb3VuZCIsInNvdW5kYm9hcmRTb3VuZCIsImxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHMiLCJnZXRHdWlsZFNvdW5kYm9hcmRTb3VuZCIsInNvdW5kSWQiLCJjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZCIsIm1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kIiwiZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQiLCJkZWxldGVMb2JieSIsInJlbW92ZU1lbWJlckZyb21Mb2JieSIsImxlYXZlTG9iYnkiXSwibWFwcGluZ3MiOiJBQXFIQSxTQUFTQSxRQUFRLFFBQVEsb0JBQW9CO0FBNkM3QyxPQUFPLFNBQVNDLGlCQUNkQyxHQUEyQjtJQUUzQixPQUFPO1FBQ0xDLG1CQUFtQixPQUFPQyxTQUFTQyxTQUFTQztZQUMxQyxPQUFPSixJQUFJSyxZQUFZLENBQUNDLGtCQUFrQixDQUFDTixLQUFLLE1BQU1BLElBQUlPLElBQUksQ0FBQ0MsS0FBSyxDQUFDUCxpQkFBaUIsQ0FBQ0MsU0FBU0MsU0FBU0M7UUFDM0c7UUFDQUssZUFBZSxPQUFPUCxTQUFTQyxTQUFTQztZQUN0QyxPQUFPSixJQUFJSyxZQUFZLENBQUNLLE9BQU8sQ0FBQ1YsS0FBSyxNQUFNQSxJQUFJTyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsYUFBYSxDQUFDUCxTQUFTQyxTQUFTQyxTQUFTO2dCQUFFRjtZQUFRO1FBQy9HO1FBQ0FTLGFBQWEsT0FBT1QsU0FBU0MsU0FBU0M7WUFDcEMsT0FBT0osSUFBSUssWUFBWSxDQUFDTyxLQUFLLENBQUNaLEtBQUssTUFBTUEsSUFBSU8sSUFBSSxDQUFDQyxLQUFLLENBQUNHLFdBQVcsQ0FBQ1QsU0FBU0MsU0FBU0M7UUFDeEY7UUFDQVMsd0JBQXdCLE9BQU9WO1lBQzdCLE9BQU9ILElBQUlLLFlBQVksQ0FBQ08sS0FBSyxDQUFDWixLQUFLLE1BQU1BLElBQUlPLElBQUksQ0FBQ0MsS0FBSyxDQUFDSyxzQkFBc0IsQ0FBQ1Y7UUFDakY7UUFDQVcsbUJBQW1CLE9BQU9DLFdBQVdaLFNBQVNDO1lBQzVDLE9BQU9KLElBQUlLLFlBQVksQ0FBQ0ssT0FBTyxDQUFDVixLQUFLLE1BQU1BLElBQUlPLElBQUksQ0FBQ0MsS0FBSyxDQUFDTSxpQkFBaUIsQ0FBQ0MsV0FBV1osU0FBU0M7UUFDbEc7UUFDQVksZ0NBQWdDLE9BQU9DLFNBQVNkO1lBQzlDLE9BQU9ILElB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
|