@discordeno/bot 20.0.0 → 21.0.0-next.0db0ffe

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/bot.cjs +1 -1
  3. package/dist/cjs/commandOptionsParser.cjs +2 -2
  4. package/dist/cjs/constants.cjs +2 -2
  5. package/dist/cjs/desiredProperties.cjs +72 -1
  6. package/dist/cjs/helpers.cjs +38 -11
  7. package/dist/cjs/transformers/automodActionExecution.cjs +3 -3
  8. package/dist/cjs/transformers/component.cjs +181 -64
  9. package/dist/cjs/transformers/guild.cjs +2 -1
  10. package/dist/cjs/transformers/incidentsData.cjs +21 -0
  11. package/dist/cjs/transformers/index.cjs +5 -3
  12. package/dist/cjs/transformers/interaction.cjs +8 -4
  13. package/dist/cjs/transformers/lobby.cjs +41 -0
  14. package/dist/cjs/transformers/reverse/component.cjs +97 -11
  15. package/dist/cjs/transformers/subscription.cjs +2 -1
  16. package/dist/cjs/transformers/threadMember.cjs +3 -2
  17. package/dist/cjs/transformers.cjs +14 -1
  18. package/dist/cjs/utils.cjs +5 -5
  19. package/dist/esm/bot.js +2 -7
  20. package/dist/esm/commandOptionsParser.js +2 -2
  21. package/dist/esm/constants.js +2 -2
  22. package/dist/esm/desiredProperties.js +72 -1
  23. package/dist/esm/events.js +1 -1
  24. package/dist/esm/helpers.js +38 -11
  25. package/dist/esm/transformers/automodActionExecution.js +3 -3
  26. package/dist/esm/transformers/component.js +167 -61
  27. package/dist/esm/transformers/guild.js +2 -1
  28. package/dist/esm/transformers/incidentsData.js +11 -0
  29. package/dist/esm/transformers/index.js +6 -4
  30. package/dist/esm/transformers/interaction.js +8 -4
  31. package/dist/esm/transformers/lobby.js +23 -0
  32. package/dist/esm/transformers/reverse/component.js +83 -8
  33. package/dist/esm/transformers/subscription.js +2 -1
  34. package/dist/esm/transformers/threadMember.js +3 -2
  35. package/dist/esm/transformers/types.js +2 -2
  36. package/dist/esm/transformers.js +16 -3
  37. package/dist/esm/utils.js +5 -5
  38. package/dist/types/bot.d.ts +1 -0
  39. package/dist/types/bot.d.ts.map +1 -1
  40. package/dist/types/commandOptionsParser.d.ts +11 -2
  41. package/dist/types/commandOptionsParser.d.ts.map +1 -1
  42. package/dist/types/constants.d.ts.map +1 -1
  43. package/dist/types/desiredProperties.d.ts +9 -3
  44. package/dist/types/desiredProperties.d.ts.map +1 -1
  45. package/dist/types/events.d.ts +51 -52
  46. package/dist/types/events.d.ts.map +1 -1
  47. package/dist/types/helpers.d.ts +115 -106
  48. package/dist/types/helpers.d.ts.map +1 -1
  49. package/dist/types/transformers/automodActionExecution.d.ts.map +1 -1
  50. package/dist/types/transformers/component.d.ts +3 -1
  51. package/dist/types/transformers/component.d.ts.map +1 -1
  52. package/dist/types/transformers/guild.d.ts.map +1 -1
  53. package/dist/types/transformers/incidentsData.d.ts +4 -0
  54. package/dist/types/transformers/incidentsData.d.ts.map +1 -0
  55. package/dist/types/transformers/index.d.ts +5 -3
  56. package/dist/types/transformers/index.d.ts.map +1 -1
  57. package/dist/types/transformers/interaction.d.ts.map +1 -1
  58. package/dist/types/transformers/lobby.d.ts +5 -0
  59. package/dist/types/transformers/lobby.d.ts.map +1 -0
  60. package/dist/types/transformers/reverse/component.d.ts +3 -1
  61. package/dist/types/transformers/reverse/component.d.ts.map +1 -1
  62. package/dist/types/transformers/subscription.d.ts.map +1 -1
  63. package/dist/types/transformers/threadMember.d.ts.map +1 -1
  64. package/dist/types/transformers/types.d.ts +102 -11
  65. package/dist/types/transformers/types.d.ts.map +1 -1
  66. package/dist/types/transformers.d.ts +166 -154
  67. package/dist/types/transformers.d.ts.map +1 -1
  68. package/dist/types/utils.d.ts +1 -1
  69. package/dist/types/utils.d.ts.map +1 -1
  70. package/package.json +23 -18
@@ -12,7 +12,10 @@ export const baseInteraction = {
12
12
  // If user provides an object, determine if it should be an autocomplete or a modal response
13
13
  if (response.title) type = InteractionResponseTypes.Modal;
14
14
  if (this.type === InteractionTypes.ApplicationCommandAutocomplete) type = InteractionResponseTypes.ApplicationCommandAutocompleteResult;
15
- if (type === InteractionResponseTypes.ChannelMessageWithSource && options?.isPrivate) response.flags = MessageFlags.Ephemeral;
15
+ if (type === InteractionResponseTypes.ChannelMessageWithSource && options?.isPrivate) {
16
+ response.flags ??= 0;
17
+ response.flags |= MessageFlags.Ephemeral;
18
+ }
16
19
  // Since this has already been given a response, any further responses must be followups.
17
20
  if (this.acknowledged) return await this.bot.helpers.sendFollowupMessage(this.token, response);
18
21
  // Modals cannot be chained
@@ -35,7 +38,7 @@ export const baseInteraction = {
35
38
  return await this.bot?.helpers.editFollowupMessage(this.token, messageId, response);
36
39
  }
37
40
  if (!this.acknowledged) {
38
- if (this.type !== InteractionTypes.MessageComponent) throw new Error("This interaction has not been responded to yet and this isn't a MessageComponent interaction.");
41
+ if (this.type !== InteractionTypes.MessageComponent && this.type !== InteractionTypes.ModalSubmit) throw new Error("This interaction has not been responded to yet and this isn't a MessageComponent or ModalSubmit interaction.");
39
42
  this.acknowledged = true;
40
43
  return await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
41
44
  type: InteractionResponseTypes.UpdateMessage,
@@ -47,7 +50,7 @@ export const baseInteraction = {
47
50
  async deferEdit (options) {
48
51
  if (this.type === InteractionTypes.ApplicationCommandAutocomplete) throw new Error('Cannot edit an autocomplete interaction.');
49
52
  if (this.acknowledged) throw new Error('Cannot defer an already responded interaction.');
50
- if (this.type !== InteractionTypes.MessageComponent) throw new Error("Cannot defer to then edit an interaction that isn't a MessageComponent interaction.");
53
+ if (this.type !== InteractionTypes.MessageComponent && this.type !== InteractionTypes.ModalSubmit) throw new Error("Cannot defer to then edit an interaction that isn't a MessageComponent or ModalSubmit interaction.");
51
54
  this.acknowledged = true;
52
55
  return await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
53
56
  type: InteractionResponseTypes.DeferredUpdateMessage
@@ -108,6 +111,7 @@ export function transformInteraction(bot, payload) {
108
111
  if (payload.interaction.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['1']);
109
112
  }
110
113
  if (props.context && payload.interaction.context) interaction.context = payload.interaction.context;
114
+ if (props.attachmentSizeLimit && payload.interaction.attachment_size_limit) interaction.attachmentSizeLimit = payload.interaction.attachment_size_limit;
111
115
  if (props.data && payload.interaction.data) {
112
116
  interaction.data = {
113
117
  type: payload.interaction.data.type,
@@ -238,4 +242,4 @@ export function transformInteractionResource(bot, payload) {
238
242
  return bot.transformers.customizers.interactionResource(bot, payload.interactionResource, resource);
239
243
  }
240
244
 
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJvdCxcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcm5hbEJvdCxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogSW50ZXJuYWxCb3RbJ3RyYW5zZm9ybWVycyddWyckaW5mZXJyZWRUeXBlcyddWydpbnRlcmFjdGlvbiddID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEludGVybmFsQm90Wyd0cmFuc2Zvcm1lcnMnXVsnJGluZmVycmVkVHlwZXMnXVsnaW50ZXJhY3Rpb24nXSksXG5cbiAgYXN5bmMgcmVzcG9uZChyZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGxldCB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGFuIG9iamVjdCwgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBhbiBhdXRvY29tcGxldGUgb3IgYSBtb2RhbCByZXNwb25zZVxuICAgIGlmIChyZXNwb25zZS50aXRsZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdFxuICAgIGlmICh0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlICYmIG9wdGlvbnM/LmlzUHJpdmF0ZSkgcmVzcG9uc2UuZmxhZ3MgPSBNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsXG5cbiAgICAvLyBTaW5jZSB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZ2l2ZW4gYSByZXNwb25zZSwgYW55IGZ1cnRoZXIgcmVzcG9uc2VzIG11c3QgYmUgZm9sbG93dXBzLlxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCwgdGhpcy50b2tlbiwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9LCB7IHdpdGhSZXNwb25zZTogb3B0aW9ucz8ud2l0aFJlc3BvbnNlIH0pXG4gIH0sXG4gIGFzeW5jIGVkaXQocmVzcG9uc2UsIG1lc3NhZ2VJZCwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZWRpdEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBpbnRlcmFjdGlvbiBoYXMgbm90IGJlZW4gcmVzcG9uZGVkIHRvIHlldCBhbmQgdGhpcyBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICAgIHRoaXMuaWQsXG4gICAgICAgIHRoaXMudG9rZW4sXG4gICAgICAgIHsgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLlVwZGF0ZU1lc3NhZ2UsIGRhdGE6IHJlc3BvbnNlIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLnRva2VuLCByZXNwb25zZSlcbiAgfSxcbiAgYXN5bmMgZGVmZXJFZGl0KG9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlZmVyIGFuIGFscmVhZHkgcmVzcG9uZGVkIGludGVyYWN0aW9uLicpXG5cbiAgICBpZiAodGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1lc3NhZ2VDb21wb25lbnQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGVmZXIgdG8gdGhlbiBlZGl0IGFuIGludGVyYWN0aW9uIHRoYXQgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IGludGVyYWN0aW9uLlwiKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCwgdGhpcy50b2tlbiwgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRVcGRhdGVNZXNzYWdlIH0sIG9wdGlvbnMpXG4gIH0sXG4gIGFzeW5jIGRlZmVyKGlzUHJpdmF0ZSwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgdGhpcy5pZCxcbiAgICAgIHRoaXMudG9rZW4sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGZsYWdzOiBpc1ByaXZhdGUgPyBNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKVxuICB9LFxuICBhc3luYyBkZWxldGUobWVzc2FnZUlkKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlbGV0ZSBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24nKVxuXG4gICAgaWYgKG1lc3NhZ2VJZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90Py5oZWxwZXJzLmRlbGV0ZUZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQpXG4gICAgZWxzZSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4pXG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbihcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogeyBpbnRlcmFjdGlvbjogRGlzY29yZEludGVyYWN0aW9uOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uIHtcbiAgY29uc3QgZ3VpbGRJZCA9IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkX2lkKSA6IHVuZGVmaW5lZFxuICBjb25zdCB1c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZW1iZXI/LnVzZXIgPz8gcGF5bG9hZC5pbnRlcmFjdGlvbi51c2VyISlcblxuICBjb25zdCBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24gPSBPYmplY3QuY3JlYXRlKGJhc2VJbnRlcmFjdGlvbilcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uXG4gIC8vIFR5cGVzY3JpcHQgaGFzIGFuIGhhcmQgdGltZSB3aXRoIHRoaXMsIHNvIHdlIG5lZWQgdG8gdGVsbCBoaW0gZm9yIHN1cmUgdGhpcyBpcyBhIEJvdFxuICBpbnRlcmFjdGlvbi5ib3QgPSBib3QgYXMgdW5rbm93biBhcyBCb3RcbiAgaW50ZXJhY3Rpb24uYWNrbm93bGVkZ2VkID0gZmFsc2VcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5pZCkgaW50ZXJhY3Rpb24uaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmlkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICAgIGludGVyYWN0aW9uLmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGUpIGludGVyYWN0aW9uLnR5cGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGVcbiAgaWYgKHByb3BzLnRva2VuICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udG9rZW4pIGludGVyYWN0aW9uLnRva2VuID0gcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlblxuICBpZiAocHJvcHMudmVyc2lvbiAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb24pIGludGVyYWN0aW9uLnZlcnNpb24gPSBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb25cbiAgaWYgKHByb3BzLmxvY2FsZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZSkgaW50ZXJhY3Rpb24ubG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkTG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlKSBpbnRlcmFjdGlvbi5ndWlsZExvY2FsZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlXG4gIGlmIChwcm9wcy5ndWlsZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCBpcyBhIFBhcnRpYWw8RGlzY29yZEd1aWxkPlxuICAgIGludGVyYWN0aW9uLmd1aWxkID0gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHsgZ3VpbGQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICBpZiAocHJvcHMuZ3VpbGRJZCAmJiBndWlsZElkKSBpbnRlcmFjdGlvbi5ndWlsZElkID0gZ3VpbGRJZFxuICBpZiAocHJvcHMudXNlciAmJiB1c2VyKSBpbnRlcmFjdGlvbi51c2VyID0gdXNlclxuICBpZiAocHJvcHMuYXBwUGVybWlzc2lvbnMgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBfcGVybWlzc2lvbnMpXG4gICAgaW50ZXJhY3Rpb24uYXBwUGVybWlzc2lvbnMgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlKVxuICAgIGludGVyYWN0aW9uLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB7IG1lc3NhZ2U6IHBheWxvYWQuaW50ZXJhY3Rpb24ubWVzc2FnZSwgc2hhcmRJZDogMCB9KVxuICBpZiAocHJvcHMuY2hhbm5lbCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwpXG4gICAgaW50ZXJhY3Rpb24uY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsIGFzIERpc2NvcmRDaGFubmVsLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsX2lkKSBpbnRlcmFjdGlvbi5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcilcbiAgICBpbnRlcmFjdGlvbi5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyLCBndWlsZElkLCB1c2VyLmlkKVxuICBpZiAocHJvcHMuYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycykge1xuICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgPSB7fVxuXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5HdWlsZEluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10sXG4gICAgICApXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5Vc2VySW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSxcbiAgICAgIClcbiAgfVxuICBpZiAocHJvcHMuY29udGV4dCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHQpIGludGVyYWN0aW9uLmNvbnRleHQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHRcbiAgaWYgKHByb3BzLmRhdGEgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhKSB7XG4gICAgaW50ZXJhY3Rpb24uZGF0YSA9IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50eXBlLFxuICAgICAgY29tcG9uZW50VHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmNvbXBvbmVudF90eXBlLFxuICAgICAgY3VzdG9tSWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jdXN0b21faWQsXG4gICAgICBjb21wb25lbnRzOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50cz8ubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSksXG4gICAgICB2YWx1ZXM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS52YWx1ZXMsXG4gICAgICBpZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5uYW1lLFxuICAgICAgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZFxuICAgICAgICA/IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCB7IHJlc29sdmVkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCwgZ3VpbGRJZCB9KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG9wdGlvbnM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5vcHRpb25zPy5tYXAoKG9wdCkgPT4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0KSksXG4gICAgICB0YXJnZXRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50YXJnZXRfaWQpIDogdW5kZWZpbmVkLFxuICAgIH1cbiAgfVxuXG4gIC8vIFR5cGVzY3JpcHQgaGFzIGFuIGhhcmQgdGltZSB3aXRoIGludGVyYWN0aW9uLmJvdCwgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGludGVyYWN0aW9uIGlzIHRoZSBvZiB0aGUgY29ycmVjdCB0eXBlXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uKGJvdCwgcGF5bG9hZCwgaW50ZXJhY3Rpb24gYXMgdW5rbm93biBhcyB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbihib3Q6IEJvdCwgb3B0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhT3B0aW9uKTogSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgY29uc3Qgb3B0ID0ge1xuICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgb3B0aW9uczogb3B0aW9uLm9wdGlvbnMsXG4gICAgZm9jdXNlZDogb3B0aW9uLmZvY3VzZWQsXG4gIH0gYXMgSW50ZXJhY3Rpb25EYXRhT3B0aW9uXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdGlvbiwgb3B0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgcmVzb2x2ZWQ6IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZDsgc2hhcmRJZDogbnVtYmVyOyBndWlsZElkPzogYmlnaW50IH0sXG4pOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIGNvbnN0IHRyYW5zZm9ybWVkOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCA9IHt9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQubWVzc2FnZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZXNzYWdlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogdmFsdWUsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICAgICAgICByZXR1cm4gW21lc3NhZ2UuaWQsIG1lc3NhZ2VdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC51c2Vycykge1xuICAgIHRyYW5zZm9ybWVkLnVzZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLnVzZXJzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgdmFsdWUpXG4gICAgICAgIHJldHVybiBbdXNlci5pZCwgdXNlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLmd1aWxkSWQgJiYgcGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbWJlcjogTWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCB2YWx1ZSwgcGF5bG9hZC5ndWlsZElkISwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKVxuICAgICAgICByZXR1cm4gW21lbWJlci5pZCwgbWVtYmVyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQucm9sZXMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHZhbHVlLCBndWlsZElkOiBwYXlsb2FkLmd1aWxkSWQhIH0pXG4gICAgICAgIHJldHVybiBbcm9sZS5pZCwgcm9sZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLmNoYW5uZWxzKSB7XG4gICAgdHJhbnNmb3JtZWQuY2hhbm5lbHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHZhbHVlIH0pIGFzIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsXG4gICAgICAgIHJldHVybiBbY2hhbm5lbC5pZCwgY2hhbm5lbF1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLmF0dGFjaG1lbnRzKSB7XG4gICAgdHJhbnNmb3JtZWQuYXR0YWNobWVudHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICByZXR1cm4gW2lkLCBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCB2YWx1ZSldXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQsIHRyYW5zZm9ybWVkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZTogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZTsgc2hhcmRJZDogbnVtYmVyIH0sXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG4gIGNvbnN0IHJlc3BvbnNlID0ge30gYXMgSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG5cbiAgaWYgKHByb3BzLmludGVyYWN0aW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLmludGVyYWN0aW9uKVxuICAgIHJlc3BvbnNlLmludGVyYWN0aW9uID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UuaW50ZXJhY3Rpb24pXG4gIGlmIChwcm9wcy5yZXNvdXJjZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5yZXNvdXJjZSlcbiAgICByZXNwb25zZS5yZXNvdXJjZSA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25SZXNvdXJjZShib3QsIHtcbiAgICAgIGludGVyYWN0aW9uUmVzb3VyY2U6IHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLnJlc291cmNlLFxuICAgICAgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkLFxuICAgIH0pXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsIHJlc3BvbnNlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayhcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2ssXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbkNhbGxiYWNrIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uQ2FsbGJhY2tcbiAgY29uc3QgY2FsbGJhY2sgPSB7fSBhcyBJbnRlcmFjdGlvbkNhbGxiYWNrXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNhbGxiYWNrLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjYWxsYmFjay50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlSWQgJiYgcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZCkgY2FsbGJhY2suYWN0aXZpdHlJbnN0YW5jZUlkID0gcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZFxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlSWQgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9pZClcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nID0gcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmdcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZCwgY2FsbGJhY2spXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uUmVzb3VyY2U6IERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uUmVzb3VyY2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25SZXNvdXJjZVxuICBjb25zdCByZXNvdXJjZSA9IHt9IGFzIEludGVyYWN0aW9uUmVzb3VyY2VcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UudHlwZSkgcmVzb3VyY2UudHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5hY3Rpdml0eV9pbnN0YW5jZSlcbiAgICByZXNvdXJjZS5hY3Rpdml0eUluc3RhbmNlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlKVxuICAgIHJlc291cmNlLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB7IG1lc3NhZ2U6IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlLCBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLCByZXNvdXJjZSlcbn1cbiJdLCJuYW1lcyI6WyJEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJJbnRlcmFjdGlvblR5cGVzIiwiTWVzc2FnZUZsYWdzIiwiQ29sbGVjdGlvbiIsImJhc2VJbnRlcmFjdGlvbiIsInVuZGVmaW5lZCIsInJlc3BvbmQiLCJyZXNwb25zZSIsIm9wdGlvbnMiLCJ0eXBlIiwiQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlIiwiY29udGVudCIsInRpdGxlIiwiTW9kYWwiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJ3aXRoUmVzcG9uc2UiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbiIsInBheWxvYWQiLCJndWlsZElkIiwiaW50ZXJhY3Rpb24iLCJndWlsZF9pZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsInVzZXIiLCJtZW1iZXIiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwidmVyc2lvbiIsImxvY2FsZSIsImd1aWxkTG9jYWxlIiwiZ3VpbGRfbG9jYWxlIiwiZ3VpbGQiLCJzaGFyZElkIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiY29tcG9uZW50VHlwZSIsImNvbXBvbmVudF90eXBlIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJjb21wb25lbnRzIiwibWFwIiwiY29tcG9uZW50IiwidmFsdWVzIiwibmFtZSIsInJlc29sdmVkIiwiaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJvcHQiLCJpbnRlcmFjdGlvbkRhdGFPcHRpb25zIiwidGFyZ2V0SWQiLCJ0YXJnZXRfaWQiLCJjdXN0b21pemVycyIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbiIsIm9wdGlvbiIsInZhbHVlIiwiZm9jdXNlZCIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwidHJhbnNmb3JtZWQiLCJtZXNzYWdlcyIsImVudHJpZXMiLCJfaWQiLCJ1c2VycyIsIm1lbWJlcnMiLCJyb2xlcyIsInJvbGUiLCJjaGFubmVscyIsImF0dGFjaG1lbnRzIiwia2V5IiwiYXR0YWNobWVudCIsInRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2siLCJyZXNvdXJjZSIsImludGVyYWN0aW9uUmVzb3VyY2UiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrIiwiY2FsbGJhY2siLCJhY3Rpdml0eUluc3RhbmNlSWQiLCJhY3Rpdml0eV9pbnN0YW5jZV9pZCIsInJlc3BvbnNlTWVzc2FnZUlkIiwicmVzcG9uc2VfbWVzc2FnZV9pZCIsInJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCIsInJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsIiwicmVzcG9uc2VNZXNzYWdlTG9hZGluZyIsInJlc3BvbnNlX21lc3NhZ2VfbG9hZGluZyIsInRyYW5zZm9ybUludGVyYWN0aW9uUmVzb3VyY2UiLCJhY3Rpdml0eUluc3RhbmNl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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJvdCxcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcm5hbEJvdCxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogSW50ZXJuYWxCb3RbJ3RyYW5zZm9ybWVycyddWyckaW5mZXJyZWRUeXBlcyddWydpbnRlcmFjdGlvbiddID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEludGVybmFsQm90Wyd0cmFuc2Zvcm1lcnMnXVsnJGluZmVycmVkVHlwZXMnXVsnaW50ZXJhY3Rpb24nXSksXG5cbiAgYXN5bmMgcmVzcG9uZChyZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGxldCB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGFuIG9iamVjdCwgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBhbiBhdXRvY29tcGxldGUgb3IgYSBtb2RhbCByZXNwb25zZVxuICAgIGlmIChyZXNwb25zZS50aXRsZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdFxuICAgIGlmICh0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlICYmIG9wdGlvbnM/LmlzUHJpdmF0ZSkge1xuICAgICAgcmVzcG9uc2UuZmxhZ3MgPz89IDBcbiAgICAgIHJlc3BvbnNlLmZsYWdzIHw9IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWxcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZ2l2ZW4gYSByZXNwb25zZSwgYW55IGZ1cnRoZXIgcmVzcG9uc2VzIG11c3QgYmUgZm9sbG93dXBzLlxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCwgdGhpcy50b2tlbiwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9LCB7IHdpdGhSZXNwb25zZTogb3B0aW9ucz8ud2l0aFJlc3BvbnNlIH0pXG4gIH0sXG4gIGFzeW5jIGVkaXQocmVzcG9uc2UsIG1lc3NhZ2VJZCwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZWRpdEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudCAmJiB0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgaW50ZXJhY3Rpb24gaGFzIG5vdCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQgYW5kIHRoaXMgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IG9yIE1vZGFsU3VibWl0IGludGVyYWN0aW9uLlwiKVxuXG4gICAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdChvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50ICYmIHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgb3IgTW9kYWxTdWJtaXQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkLCB0aGlzLnRva2VuLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSwgb3B0aW9ucylcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHtcbiAgICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApXG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbilcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb247IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG4gIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcj8udXNlciA/PyBwYXlsb2FkLmludGVyYWN0aW9uLnVzZXIhKVxuXG4gIGNvbnN0IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiA9IE9iamVjdC5jcmVhdGUoYmFzZUludGVyYWN0aW9uKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggdGhpcywgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGlzIGEgQm90XG4gIGludGVyYWN0aW9uLmJvdCA9IGJvdCBhcyB1bmtub3duIGFzIEJvdFxuICBpbnRlcmFjdGlvbi5hY2tub3dsZWRnZWQgPSBmYWxzZVxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmlkKSBpbnRlcmFjdGlvbi5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uaWQpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gICAgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLmludGVyYWN0aW9uLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkIGlzIGEgUGFydGlhbDxEaXNjb3JkR3VpbGQ+XG4gICAgaW50ZXJhY3Rpb24uZ3VpbGQgPSBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgeyBndWlsZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gIGlmIChwcm9wcy5ndWlsZElkICYmIGd1aWxkSWQpIGludGVyYWN0aW9uLmd1aWxkSWQgPSBndWlsZElkXG4gIGlmIChwcm9wcy51c2VyICYmIHVzZXIpIGludGVyYWN0aW9uLnVzZXIgPSB1c2VyXG4gIGlmIChwcm9wcy5hcHBQZXJtaXNzaW9ucyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgICBpbnRlcmFjdGlvbi5hcHBQZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwX3Blcm1pc3Npb25zKVxuICBpZiAocHJvcHMubWVzc2FnZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lc3NhZ2UpXG4gICAgaW50ZXJhY3Rpb24ubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlLCBzaGFyZElkOiAwIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbClcbiAgICBpbnRlcmFjdGlvbi5jaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwgYXMgRGlzY29yZENoYW5uZWwsIGd1aWxkSWQgfSlcbiAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpIGludGVyYWN0aW9uLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLm1lbWJlciAmJiBndWlsZElkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyKVxuICAgIGludGVyYWN0aW9uLm1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZW1iZXIsIGd1aWxkSWQsIHVzZXIuaWQpXG4gIGlmIChwcm9wcy5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzKSB7XG4gICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyA9IHt9XG5cbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLkd1aWxkSW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSxcbiAgICAgIClcbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddLFxuICAgICAgKVxuICB9XG4gIGlmIChwcm9wcy5jb250ZXh0ICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dCkgaW50ZXJhY3Rpb24uY29udGV4dCA9IHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dFxuICBpZiAocHJvcHMuYXR0YWNobWVudFNpemVMaW1pdCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmF0dGFjaG1lbnRfc2l6ZV9saW1pdClcbiAgICBpbnRlcmFjdGlvbi5hdHRhY2htZW50U2l6ZUxpbWl0ID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5hdHRhY2htZW50X3NpemVfbGltaXRcbiAgaWYgKHByb3BzLmRhdGEgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhKSB7XG4gICAgaW50ZXJhY3Rpb24uZGF0YSA9IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50eXBlLFxuICAgICAgY29tcG9uZW50VHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmNvbXBvbmVudF90eXBlLFxuICAgICAgY3VzdG9tSWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jdXN0b21faWQsXG4gICAgICBjb21wb25lbnRzOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50cz8ubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSksXG4gICAgICB2YWx1ZXM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS52YWx1ZXMsXG4gICAgICBpZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5uYW1lLFxuICAgICAgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZFxuICAgICAgICA/IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCB7IHJlc29sdmVkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCwgZ3VpbGRJZCB9KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG9wdGlvbnM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5vcHRpb25zPy5tYXAoKG9wdCkgPT4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0KSksXG4gICAgICB0YXJnZXRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50YXJnZXRfaWQpIDogdW5kZWZpbmVkLFxuICAgIH1cbiAgfVxuXG4gIC8vIFR5cGVzY3JpcHQgaGFzIGFuIGhhcmQgdGltZSB3aXRoIGludGVyYWN0aW9uLmJvdCwgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGludGVyYWN0aW9uIGlzIHRoZSBvZiB0aGUgY29ycmVjdCB0eXBlXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uKGJvdCwgcGF5bG9hZCwgaW50ZXJhY3Rpb24gYXMgdW5rbm93biBhcyB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbihib3Q6IEJvdCwgb3B0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhT3B0aW9uKTogSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgY29uc3Qgb3B0ID0ge1xuICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgb3B0aW9uczogb3B0aW9uLm9wdGlvbnMsXG4gICAgZm9jdXNlZDogb3B0aW9uLmZvY3VzZWQsXG4gIH0gYXMgSW50ZXJhY3Rpb25EYXRhT3B0aW9uXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdGlvbiwgb3B0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgcmVzb2x2ZWQ6IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZDsgc2hhcmRJZDogbnVtYmVyOyBndWlsZElkPzogYmlnaW50IH0sXG4pOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIGNvbnN0IHRyYW5zZm9ybWVkOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCA9IHt9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQubWVzc2FnZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZXNzYWdlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogdmFsdWUsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICAgICAgICByZXR1cm4gW21lc3NhZ2UuaWQsIG1lc3NhZ2VdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC51c2Vycykge1xuICAgIHRyYW5zZm9ybWVkLnVzZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLnVzZXJzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgdmFsdWUpXG4gICAgICAgIHJldHVybiBbdXNlci5pZCwgdXNlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLmd1aWxkSWQgJiYgcGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbWJlcjogTWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCB2YWx1ZSwgcGF5bG9hZC5ndWlsZElkISwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKVxuICAgICAgICByZXR1cm4gW21lbWJlci5pZCwgbWVtYmVyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQucm9sZXMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHZhbHVlLCBndWlsZElkOiBwYXlsb2FkLmd1aWxkSWQhIH0pXG4gICAgICAgIHJldHVybiBbcm9sZS5pZCwgcm9sZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLmNoYW5uZWxzKSB7XG4gICAgdHJhbnNmb3JtZWQuY2hhbm5lbHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHZhbHVlIH0pIGFzIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsXG4gICAgICAgIHJldHVybiBbY2hhbm5lbC5pZCwgY2hhbm5lbF1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLmF0dGFjaG1lbnRzKSB7XG4gICAgdHJhbnNmb3JtZWQuYXR0YWNobWVudHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICByZXR1cm4gW2lkLCBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCB2YWx1ZSldXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQsIHRyYW5zZm9ybWVkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZTogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZTsgc2hhcmRJZDogbnVtYmVyIH0sXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG4gIGNvbnN0IHJlc3BvbnNlID0ge30gYXMgSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG5cbiAgaWYgKHByb3BzLmludGVyYWN0aW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLmludGVyYWN0aW9uKVxuICAgIHJlc3BvbnNlLmludGVyYWN0aW9uID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UuaW50ZXJhY3Rpb24pXG4gIGlmIChwcm9wcy5yZXNvdXJjZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5yZXNvdXJjZSlcbiAgICByZXNwb25zZS5yZXNvdXJjZSA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25SZXNvdXJjZShib3QsIHtcbiAgICAgIGludGVyYWN0aW9uUmVzb3VyY2U6IHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLnJlc291cmNlLFxuICAgICAgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkLFxuICAgIH0pXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsIHJlc3BvbnNlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayhcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2ssXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbkNhbGxiYWNrIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uQ2FsbGJhY2tcbiAgY29uc3QgY2FsbGJhY2sgPSB7fSBhcyBJbnRlcmFjdGlvbkNhbGxiYWNrXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNhbGxiYWNrLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjYWxsYmFjay50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlSWQgJiYgcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZCkgY2FsbGJhY2suYWN0aXZpdHlJbnN0YW5jZUlkID0gcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZFxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlSWQgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9pZClcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nID0gcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmdcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZCwgY2FsbGJhY2spXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uUmVzb3VyY2U6IERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uUmVzb3VyY2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25SZXNvdXJjZVxuICBjb25zdCByZXNvdXJjZSA9IHt9IGFzIEludGVyYWN0aW9uUmVzb3VyY2VcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UudHlwZSkgcmVzb3VyY2UudHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5hY3Rpdml0eV9pbnN0YW5jZSlcbiAgICByZXNvdXJjZS5hY3Rpdml0eUluc3RhbmNlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlKVxuICAgIHJlc291cmNlLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB7IG1lc3NhZ2U6IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlLCBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLCByZXNvdXJjZSlcbn1cbiJdLCJuYW1lcyI6WyJEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJJbnRlcmFjdGlvblR5cGVzIiwiTWVzc2FnZUZsYWdzIiwiQ29sbGVjdGlvbiIsImJhc2VJbnRlcmFjdGlvbiIsInVuZGVmaW5lZCIsInJlc3BvbmQiLCJyZXNwb25zZSIsIm9wdGlvbnMiLCJ0eXBlIiwiQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlIiwiY29udGVudCIsInRpdGxlIiwiTW9kYWwiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJ3aXRoUmVzcG9uc2UiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbiIsInBheWxvYWQiLCJndWlsZElkIiwiaW50ZXJhY3Rpb24iLCJndWlsZF9pZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsInVzZXIiLCJtZW1iZXIiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwidmVyc2lvbiIsImxvY2FsZSIsImd1aWxkTG9jYWxlIiwiZ3VpbGRfbG9jYWxlIiwiZ3VpbGQiLCJzaGFyZElkIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiYXR0YWNobWVudFNpemVMaW1pdCIsImF0dGFjaG1lbnRfc2l6ZV9saW1pdCIsImNvbXBvbmVudFR5cGUiLCJjb21wb25lbnRfdHlwZSIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwiY29tcG9uZW50cyIsIm1hcCIsImNvbXBvbmVudCIsInZhbHVlcyIsIm5hbWUiLCJyZXNvbHZlZCIsImludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwib3B0IiwiaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyIsInRhcmdldElkIiwidGFyZ2V0X2lkIiwiY3VzdG9taXplcnMiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFPcHRpb24iLCJvcHRpb24iLCJ2YWx1ZSIsImZvY3VzZWQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsInRyYW5zZm9ybWVkIiwibWVzc2FnZXMiLCJlbnRyaWVzIiwiX2lkIiwidXNlcnMiLCJtZW1iZXJzIiwicm9sZXMiLCJyb2xlIiwiY2hhbm5lbHMiLCJhdHRhY2htZW50cyIsImtleSIsImF0dGFjaG1lbnQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrIiwicmVzb3VyY2UiLCJpbnRlcmFjdGlvblJlc291cmNlIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayIsImNhbGxiYWNrIiwiYWN0aXZpdHlJbnN0YW5jZUlkIiwiYWN0aXZpdHlfaW5zdGFuY2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VJZCIsInJlc3BvbnNlX21lc3NhZ2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwiLCJyZXNwb25zZV9tZXNzYWdlX2VwaGVtZXJhbCIsInJlc3BvbnNlTWVzc2FnZUxvYWRpbmciLCJyZXNwb25zZV9tZXNzYWdlX2xvYWRpbmciLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlIiwiYWN0aXZpdHlJbnN0YW5jZSIsImFjdGl2aXR5X2luc3RhbmNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxpQ0FBaUMsRUFPakNDLHdCQUF3QixFQUN4QkMsZ0JBQWdCLEVBQ2hCQyxZQUFZLFFBQ1Asb0JBQW1CO0FBQzFCLFNBQVNDLFVBQVUsUUFBUSxvQkFBbUI7QUFnQjlDLE9BQU8sTUFBTUMsa0JBQWdGO0lBQzNGLDJFQUEyRTtJQUMzRSxHQUFJQyxTQUFTO0lBRWIsTUFBTUMsU0FBUUMsUUFBUSxFQUFFQyxPQUFPO1FBQzdCLElBQUlDLE9BQU9ULHlCQUF5QlUsd0JBQXdCO1FBRTVELDREQUE0RDtRQUM1RCxJQUFJLE9BQU9ILGFBQWEsVUFBVUEsV0FBVztZQUFFSSxTQUFTSjtRQUFTO1FBRWpFLDRGQUE0RjtRQUM1RixJQUFJQSxTQUFTSyxLQUFLLEVBQUVILE9BQU9ULHlCQUF5QmEsS0FBSztRQUN6RCxJQUFJLElBQUksQ0FBQ0osSUFBSSxLQUFLUixpQkFBaUJhLDhCQUE4QixFQUFFTCxPQUFPVCx5QkFBeUJlLG9DQUFvQztRQUN2SSxJQUFJTixTQUFTVCx5QkFBeUJVLHdCQUF3QixJQUFJRixTQUFTUSxXQUFXO1lBQ3BGVCxTQUFTVSxLQUFLLEtBQUs7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
@@ -0,0 +1,23 @@
1
+ import { ToggleBitfield } from '../index.js';
2
+ export function transformLobby(bot, payload) {
3
+ const props = bot.transformers.desiredProperties.lobby;
4
+ const lobby = {};
5
+ if (props.id && payload.id) lobby.id = bot.transformers.snowflake(payload.id);
6
+ if (props.applicationId && payload.application_id) lobby.applicationId = bot.transformers.snowflake(payload.application_id);
7
+ if (props.metadata && payload.metadata) lobby.metadata = payload.metadata;
8
+ if (props.members && payload.members) lobby.members = payload.members.map((member)=>bot.transformers.lobbyMember(bot, member));
9
+ if (props.linkedChannel && payload.linked_channel) lobby.linkedChannel = bot.transformers.channel(bot, {
10
+ channel: payload.linked_channel
11
+ });
12
+ return bot.transformers.customizers.lobby(bot, payload, lobby);
13
+ }
14
+ export function transformLobbyMember(bot, payload) {
15
+ const props = bot.transformers.desiredProperties.lobbyMember;
16
+ const lobbyMember = {};
17
+ if (props.id && payload.id) lobbyMember.id = bot.transformers.snowflake(payload.id);
18
+ if (props.metadata && payload.metadata) lobbyMember.metadata = payload.metadata;
19
+ if (props.flags && payload.flags) lobbyMember.flags = new ToggleBitfield(payload.flags);
20
+ return bot.transformers.customizers.lobbyMember(bot, payload, lobbyMember);
21
+ }
22
+
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbG9iYnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkTG9iYnksIERpc2NvcmRMb2JieU1lbWJlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgdHlwZSBJbnRlcm5hbEJvdCwgdHlwZSBMb2JieSwgdHlwZSBMb2JieU1lbWJlciwgVG9nZ2xlQml0ZmllbGQgfSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUxvYmJ5KGJvdDogSW50ZXJuYWxCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieSk6IExvYmJ5IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5XG4gIGNvbnN0IGxvYmJ5ID0ge30gYXMgTG9iYnlcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbG9iYnkuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKSBsb2JieS5hcHBsaWNhdGlvbklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hcHBsaWNhdGlvbl9pZClcbiAgaWYgKHByb3BzLm1ldGFkYXRhICYmIHBheWxvYWQubWV0YWRhdGEpIGxvYmJ5Lm1ldGFkYXRhID0gcGF5bG9hZC5tZXRhZGF0YVxuICBpZiAocHJvcHMubWVtYmVycyAmJiBwYXlsb2FkLm1lbWJlcnMpIGxvYmJ5Lm1lbWJlcnMgPSBwYXlsb2FkLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZW1iZXIoYm90LCBtZW1iZXIpKVxuICBpZiAocHJvcHMubGlua2VkQ2hhbm5lbCAmJiBwYXlsb2FkLmxpbmtlZF9jaGFubmVsKSBsb2JieS5saW5rZWRDaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBwYXlsb2FkLmxpbmtlZF9jaGFubmVsIH0pXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubG9iYnkoYm90LCBwYXlsb2FkLCBsb2JieSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUxvYmJ5TWVtYmVyKGJvdDogSW50ZXJuYWxCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieU1lbWJlcik6IExvYmJ5TWVtYmVyIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5TWVtYmVyXG4gIGNvbnN0IGxvYmJ5TWVtYmVyID0ge30gYXMgTG9iYnlNZW1iZXJcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbG9iYnlNZW1iZXIuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMubWV0YWRhdGEgJiYgcGF5bG9hZC5tZXRhZGF0YSkgbG9iYnlNZW1iZXIubWV0YWRhdGEgPSBwYXlsb2FkLm1ldGFkYXRhXG4gIGlmIChwcm9wcy5mbGFncyAmJiBwYXlsb2FkLmZsYWdzKSBsb2JieU1lbWJlci5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmxvYmJ5TWVtYmVyKGJvdCwgcGF5bG9hZCwgbG9iYnlNZW1iZXIpXG59XG4iXSwibmFtZXMiOlsiVG9nZ2xlQml0ZmllbGQiLCJ0cmFuc2Zvcm1Mb2JieSIsImJvdCIsInBheWxvYWQiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwibG9iYnkiLCJpZCIsInNub3dmbGFrZSIsImFwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbl9pZCIsIm1ldGFkYXRhIiwibWVtYmVycyIsIm1hcCIsIm1lbWJlciIsImxvYmJ5TWVtYmVyIiwibGlua2VkQ2hhbm5lbCIsImxpbmtlZF9jaGFubmVsIiwiY2hhbm5lbCIsImN1c3RvbWl6ZXJzIiwidHJhbnNmb3JtTG9iYnlNZW1iZXIiLCJmbGFncyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBeURBLGNBQWMsUUFBUSxjQUFhO0FBRTVGLE9BQU8sU0FBU0MsZUFBZUMsR0FBZ0IsRUFBRUMsT0FBcUI7SUFDcEUsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSztJQUN0RCxNQUFNQSxRQUFRLENBQUM7SUFFZixJQUFJSCxNQUFNSSxFQUFFLElBQUlMLFFBQVFLLEVBQUUsRUFBRUQsTUFBTUMsRUFBRSxHQUFHTixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUUssRUFBRTtJQUM1RSxJQUFJSixNQUFNTSxhQUFhLElBQUlQLFFBQVFRLGNBQWMsRUFBRUosTUFBTUcsYUFBYSxHQUFHUixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUVEsY0FBYztJQUMxSCxJQUFJUCxNQUFNUSxRQUFRLElBQUlULFFBQVFTLFFBQVEsRUFBRUwsTUFBTUssUUFBUSxHQUFHVCxRQUFRUyxRQUFRO0lBQ3pFLElBQUlSLE1BQU1TLE9BQU8sSUFBSVYsUUFBUVUsT0FBTyxFQUFFTixNQUFNTSxPQUFPLEdBQUdWLFFBQVFVLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLFNBQVdiLElBQUlHLFlBQVksQ0FBQ1csV0FBVyxDQUFDZCxLQUFLYTtJQUN4SCxJQUFJWCxNQUFNYSxhQUFhLElBQUlkLFFBQVFlLGNBQWMsRUFBRVgsTUFBTVUsYUFBYSxHQUFHZixJQUFJRyxZQUFZLENBQUNjLE9BQU8sQ0FBQ2pCLEtBQUs7UUFBRWlCLFNBQVNoQixRQUFRZSxjQUFjO0lBQUM7SUFFekksT0FBT2hCLElBQUlHLFlBQVksQ0FBQ2UsV0FBVyxDQUFDYixLQUFLLENBQUNMLEtBQUtDLFNBQVNJO0FBQzFEO0FBRUEsT0FBTyxTQUFTYyxxQkFBcUJuQixHQUFnQixFQUFFQyxPQUEyQjtJQUNoRixNQUFNQyxRQUFRRixJQUFJRyxZQUFZLENBQUNDLGlCQUFpQixDQUFDVSxXQUFXO0lBQzVELE1BQU1BLGNBQWMsQ0FBQztJQUVyQixJQUFJWixNQUFNSSxFQUFFLElBQUlMLFFBQVFLLEVBQUUsRUFBRVEsWUFBWVIsRUFBRSxHQUFHTixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUUssRUFBRTtJQUNsRixJQUFJSixNQUFNUSxRQUFRLElBQUlULFFBQVFTLFFBQVEsRUFBRUksWUFBWUosUUFBUSxHQUFHVCxRQUFRUyxRQUFRO0lBQy9FLElBQUlSLE1BQU1rQixLQUFLLElBQUluQixRQUFRbUIsS0FBSyxFQUFFTixZQUFZTSxLQUFLLEdBQUcsSUFBSXRCLGVBQWVHLFFBQVFtQixLQUFLO0lBRXRGLE9BQU9wQixJQUFJRyxZQUFZLENBQUNlLFdBQVcsQ0FBQ0osV0FBVyxDQUFDZCxLQUFLQyxTQUFTYTtBQUNoRSJ9
@@ -6,27 +6,68 @@ export function transformComponentToDiscordComponent(bot, payload) {
6
6
  return transformActionRow(bot, payload);
7
7
  case MessageComponentTypes.Button:
8
8
  return transformButtonComponent(bot, payload);
9
- case MessageComponentTypes.InputText:
9
+ case MessageComponentTypes.Container:
10
+ return transformContainerComponent(bot, payload);
11
+ case MessageComponentTypes.TextInput:
10
12
  return transformInputTextComponent(bot, payload);
11
- case MessageComponentTypes.SelectMenu:
12
- case MessageComponentTypes.SelectMenuChannels:
13
- case MessageComponentTypes.SelectMenuRoles:
14
- case MessageComponentTypes.SelectMenuUsers:
15
- case MessageComponentTypes.SelectMenuUsersAndRoles:
13
+ case MessageComponentTypes.StringSelect:
14
+ case MessageComponentTypes.ChannelSelect:
15
+ case MessageComponentTypes.RoleSelect:
16
+ case MessageComponentTypes.UserSelect:
17
+ case MessageComponentTypes.MentionableSelect:
16
18
  return transformSelectMenuComponent(bot, payload);
19
+ case MessageComponentTypes.Section:
20
+ return transformSectionComponent(bot, payload);
21
+ case MessageComponentTypes.File:
22
+ return transformFileComponent(bot, payload);
23
+ case MessageComponentTypes.MediaGallery:
24
+ return transformMediaGalleryComponent(bot, payload);
25
+ case MessageComponentTypes.Thumbnail:
26
+ return transformThumbnailComponent(bot, payload);
27
+ case MessageComponentTypes.Separator:
28
+ case MessageComponentTypes.TextDisplay:
29
+ // As of now they are compatible
30
+ return payload;
17
31
  }
18
32
  }
33
+ export function transformUnfurledMediaItemToDiscordUnfurledMediaItem(_bot, payload) {
34
+ return {
35
+ url: payload.url,
36
+ proxy_url: payload.proxyUrl,
37
+ height: payload.height,
38
+ width: payload.width,
39
+ content_type: payload.contentType
40
+ };
41
+ }
42
+ export function transformMediaGalleryItemToDiscordMediaGalleryItem(bot, payload) {
43
+ return {
44
+ media: bot.transformers.reverse.unfurledMediaItem(bot, payload.media),
45
+ description: payload.description,
46
+ spoiler: payload.spoiler
47
+ };
48
+ }
19
49
  function transformActionRow(bot, payload) {
20
50
  return {
21
51
  type: MessageComponentTypes.ActionRow,
52
+ id: payload.id,
22
53
  // The actionRow.components type is kinda annoying, so we need a cast for this
23
54
  components: payload.components?.map((component)=>bot.transformers.reverse.component(bot, component)) ?? []
24
55
  };
25
56
  }
57
+ function transformContainerComponent(bot, payload) {
58
+ return {
59
+ type: MessageComponentTypes.Container,
60
+ id: payload.id,
61
+ accent_color: payload.accentColor,
62
+ spoiler: payload.spoiler,
63
+ components: payload.components?.map((component)=>bot.transformers.reverse.component(bot, component)) ?? []
64
+ };
65
+ }
26
66
  function transformButtonComponent(bot, payload) {
27
67
  // Since Component is a merge of all components, some casts are necessary
28
68
  return {
29
69
  type: MessageComponentTypes.Button,
70
+ id: payload.id,
30
71
  style: payload.style,
31
72
  custom_id: payload.customId,
32
73
  disabled: payload.disabled,
@@ -43,7 +84,8 @@ function transformButtonComponent(bot, payload) {
43
84
  function transformInputTextComponent(_bot, payload) {
44
85
  // Since Component is a merge of all components, some casts are necessary
45
86
  return {
46
- type: MessageComponentTypes.InputText,
87
+ type: MessageComponentTypes.TextInput,
88
+ id: payload.id,
47
89
  style: payload.style,
48
90
  custom_id: payload.customId,
49
91
  label: payload.label,
@@ -57,6 +99,7 @@ function transformInputTextComponent(_bot, payload) {
57
99
  function transformSelectMenuComponent(bot, payload) {
58
100
  return {
59
101
  type: payload.type,
102
+ id: payload.id,
60
103
  custom_id: payload.customId,
61
104
  channel_types: payload.channelTypes,
62
105
  default_values: payload.defaultValues?.map((defaultValue)=>({
@@ -80,5 +123,37 @@ function transformSelectMenuComponent(bot, payload) {
80
123
  placeholder: payload.placeholder
81
124
  };
82
125
  }
126
+ function transformSectionComponent(bot, payload) {
127
+ return {
128
+ type: MessageComponentTypes.Section,
129
+ id: payload.id,
130
+ components: payload.components?.map((component)=>bot.transformers.reverse.component(bot, component)),
131
+ accessory: payload.accessory ? bot.transformers.reverse.component(bot, payload.accessory) : undefined
132
+ };
133
+ }
134
+ function transformFileComponent(bot, payload) {
135
+ return {
136
+ type: MessageComponentTypes.File,
137
+ id: payload.id,
138
+ file: bot.transformers.reverse.unfurledMediaItem(bot, payload.file),
139
+ spoiler: payload.spoiler
140
+ };
141
+ }
142
+ function transformMediaGalleryComponent(bot, payload) {
143
+ return {
144
+ type: MessageComponentTypes.MediaGallery,
145
+ id: payload.id,
146
+ items: payload.items?.map((item)=>bot.transformers.reverse.mediaGalleryItem(bot, item)) ?? []
147
+ };
148
+ }
149
+ function transformThumbnailComponent(bot, payload) {
150
+ return {
151
+ type: MessageComponentTypes.Thumbnail,
152
+ id: payload.id,
153
+ media: bot.transformers.reverse.unfurledMediaItem(bot, payload.media),
154
+ description: payload.description,
155
+ spoiler: payload.spoiler
156
+ };
157
+ }
83
158
 
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvcmV2ZXJzZS9jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LCB0eXBlIERpc2NvcmRNZXNzYWdlQ29tcG9uZW50LCBNZXNzYWdlQ29tcG9uZW50VHlwZXMsIHR5cGUgVGV4dFN0eWxlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCb3QsIEJ1dHRvblN0eWxlcywgQ29tcG9uZW50LCBEaXNjb3JkQWN0aW9uUm93LCBEaXNjb3JkSW5wdXRUZXh0Q29tcG9uZW50LCBEaXNjb3JkU2VsZWN0TWVudUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50VG9EaXNjb3JkQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBDb21wb25lbnQpOiBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCB7XG4gIC8vIFRoaXMgc3dpdGNoIHNob3VsZCBpbmNsdWRlIGFsbCBjYXNlc1xuICBzd2l0Y2ggKHBheWxvYWQudHlwZSkge1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkFjdGlvblJvdzpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKVxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbjpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLklucHV0VGV4dDpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlbGVjdE1lbnU6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VsZWN0TWVudUNoYW5uZWxzOlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlbGVjdE1lbnVSb2xlczpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZWxlY3RNZW51VXNlcnM6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VsZWN0TWVudVVzZXJzQW5kUm9sZXM6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQWN0aW9uUm93KGJvdDogQm90LCBwYXlsb2FkOiBDb21wb25lbnQpOiBEaXNjb3JkQWN0aW9uUm93IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQWN0aW9uUm93LFxuICAgIC8vIFRoZSBhY3Rpb25Sb3cuY29tcG9uZW50cyB0eXBlIGlzIGtpbmRhIGFubm95aW5nLCBzbyB3ZSBuZWVkIGEgY2FzdCBmb3IgdGhpc1xuICAgIGNvbXBvbmVudHM6IChwYXlsb2FkLmNvbXBvbmVudHM/Lm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLnJldmVyc2UuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSkgPz8gW10pIGFzIERpc2NvcmRBY3Rpb25Sb3dbJ2NvbXBvbmVudHMnXSxcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IENvbXBvbmVudCk6IERpc2NvcmRCdXR0b25Db21wb25lbnQge1xuICAvLyBTaW5jZSBDb21wb25lbnQgaXMgYSBtZXJnZSBvZiBhbGwgY29tcG9uZW50cywgc29tZSBjYXN0cyBhcmUgbmVjZXNzYXJ5XG4gIHJldHVybiB7XG4gICAgdHlwZTogTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbixcbiAgICBzdHlsZTogcGF5bG9hZC5zdHlsZSBhcyBCdXR0b25TdHlsZXMsXG4gICAgY3VzdG9tX2lkOiBwYXlsb2FkLmN1c3RvbUlkLFxuICAgIGRpc2FibGVkOiBwYXlsb2FkLmRpc2FibGVkLFxuICAgIGVtb2ppOiBwYXlsb2FkLmVtb2ppXG4gICAgICA/IHtcbiAgICAgICAgICBpZDogcGF5bG9hZC5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2UocGF5bG9hZC5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZC5lbW9qaS5uYW1lLFxuICAgICAgICAgIGFuaW1hdGVkOiBwYXlsb2FkLmVtb2ppLmFuaW1hdGVkLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogcGF5bG9hZC5sYWJlbCxcbiAgICB1cmw6IHBheWxvYWQudXJsLFxuICAgIHNrdV9pZDogcGF5bG9hZC5za3VJZCA/IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2UocGF5bG9hZC5za3VJZCkgOiB1bmRlZmluZWQsXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50KF9ib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZElucHV0VGV4dENvbXBvbmVudCB7XG4gIC8vIFNpbmNlIENvbXBvbmVudCBpcyBhIG1lcmdlIG9mIGFsbCBjb21wb25lbnRzLCBzb21lIGNhc3RzIGFyZSBuZWNlc3NhcnlcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuSW5wdXRUZXh0LFxuICAgIHN0eWxlOiBwYXlsb2FkLnN0eWxlIGFzIFRleHRTdHlsZXMsXG4gICAgY3VzdG9tX2lkOiBwYXlsb2FkLmN1c3RvbUlkISxcbiAgICBsYWJlbDogcGF5bG9hZC5sYWJlbCEsXG4gICAgdmFsdWU6IHBheWxvYWQudmFsdWUsXG4gICAgbWF4X2xlbmd0aDogcGF5bG9hZC5tYXhMZW5ndGgsXG4gICAgbWluX2xlbmd0aDogcGF5bG9hZC5taW5MZW5ndGgsXG4gICAgcGxhY2Vob2xkZXI6IHBheWxvYWQucGxhY2Vob2xkZXIsXG4gICAgcmVxdWlyZWQ6IHBheWxvYWQucmVxdWlyZWQsXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHBheWxvYWQudHlwZSBhcyBEaXNjb3JkU2VsZWN0TWVudUNvbXBvbmVudFsndHlwZSddLFxuICAgIGN1c3RvbV9pZDogcGF5bG9hZC5jdXN0b21JZCEsXG4gICAgY2hhbm5lbF90eXBlczogcGF5bG9hZC5jaGFubmVsVHlwZXMsXG4gICAgZGVmYXVsdF92YWx1ZXM6IHBheWxvYWQuZGVmYXVsdFZhbHVlcz8ubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5yZXZlcnNlLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgfSkpLFxuICAgIGRpc2FibGVkOiBwYXlsb2FkLmRpc2FibGVkLFxuICAgIG1heF92YWx1ZXM6IHBheWxvYWQubWF4VmFsdWVzLFxuICAgIG1pbl92YWx1ZXM6IHBheWxvYWQubWluVmFsdWVzLFxuICAgIG9wdGlvbnM6IHBheWxvYWQub3B0aW9ucz8ubWFwKChvcHRpb24pID0+ICh7XG4gICAgICBsYWJlbDogb3B0aW9uLmxhYmVsLFxuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICBlbW9qaTogb3B0aW9uLmVtb2ppXG4gICAgICAgID8ge1xuICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2Uob3B0aW9uLmVtb2ppLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5lbW9qaS5uYW1lLFxuICAgICAgICAgICAgYW5pbWF0ZWQ6IG9wdGlvbi5lbW9qaS5hbmltYXRlZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdDogb3B0aW9uLmRlZmF1bHQsXG4gICAgfSkpLFxuICAgIHBsYWNlaG9sZGVyOiBwYXlsb2FkLnBsYWNlaG9sZGVyLFxuICB9XG59XG4iXSwibmFtZXMiOlsiTWVzc2FnZUNvbXBvbmVudFR5cGVzIiwidHJhbnNmb3JtQ29tcG9uZW50VG9EaXNjb3JkQ29tcG9uZW50IiwiYm90IiwicGF5bG9hZCIsInR5cGUiLCJBY3Rpb25Sb3ciLCJ0cmFuc2Zvcm1BY3Rpb25Sb3ciLCJCdXR0b24iLCJ0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQiLCJJbnB1dFRleHQiLCJ0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQiLCJTZWxlY3RNZW51IiwiU2VsZWN0TWVudUNoYW5uZWxzIiwiU2VsZWN0TWVudVJvbGVzIiwiU2VsZWN0TWVudVVzZXJzIiwiU2VsZWN0TWVudVVzZXJzQW5kUm9sZXMiLCJ0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50IiwiY29tcG9uZW50cyIsIm1hcCIsImNvbXBvbmVudCIsInRyYW5zZm9ybWVycyIsInJldmVyc2UiLCJzdHlsZSIsImN1c3RvbV9pZCIsImN1c3RvbUlkIiwiZGlzYWJsZWQiLCJlbW9qaSIsImlkIiwic25vd2ZsYWtlIiwidW5kZWZpbmVkIiwibmFtZSIsImFuaW1hdGVkIiwibGFiZWwiLCJ1cmwiLCJza3VfaWQiLCJza3VJZCIsIl9ib3QiLCJ2YWx1ZSIsIm1heF9sZW5ndGgiLCJtYXhMZW5ndGgiLCJtaW5fbGVuZ3RoIiwibWluTGVuZ3RoIiwicGxhY2Vob2xkZXIiLCJyZXF1aXJlZCIsImNoYW5uZWxfdHlwZXMiLCJjaGFubmVsVHlwZXMiLCJkZWZhdWx0X3ZhbHVlcyIsImRlZmF1bHRWYWx1ZXMiLCJkZWZhdWx0VmFsdWUiLCJtYXhfdmFsdWVzIiwibWF4VmFsdWVzIiwibWluX3ZhbHVlcyIsIm1pblZhbHVlcyIsIm9wdGlvbnMiLCJvcHRpb24iLCJkZXNjcmlwdGlvbiIsImRlZmF1bHQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQW9FQSxxQkFBcUIsUUFBeUIsb0JBQW1CO0FBR3JJLE9BQU8sU0FBU0MscUNBQXFDQyxHQUFRLEVBQUVDLE9BQWtCO0lBQy9FLHVDQUF1QztJQUN2QyxPQUFRQSxRQUFRQyxJQUFJO1FBQ2xCLEtBQUtKLHNCQUFzQkssU0FBUztZQUNsQyxPQUFPQyxtQkFBbUJKLEtBQUtDO1FBQ2pDLEtBQUtILHNCQUFzQk8sTUFBTTtZQUMvQixPQUFPQyx5QkFBeUJOLEtBQUtDO1FBQ3ZDLEtBQUtILHNCQUFzQlMsU0FBUztZQUNsQyxPQUFPQyw0QkFBNEJSLEtBQUtDO1FBQzFDLEtBQUtILHNCQUFzQlcsVUFBVTtRQUNyQyxLQUFLWCxzQkFBc0JZLGtCQUFrQjtRQUM3QyxLQUFLWixzQkFBc0JhLGVBQWU7UUFDMUMsS0FBS2Isc0JBQXNCYyxlQUFlO1FBQzFDLEtBQUtkLHNCQUFzQmUsdUJBQXVCO1lBQ2hELE9BQU9DLDZCQUE2QmQsS0FBS0M7SUFDN0M7QUFDRjtBQUVBLFNBQVNHLG1CQUFtQkosR0FBUSxFQUFFQyxPQUFrQjtJQUN0RCxPQUFPO1FBQ0xDLE1BQU1KLHNCQUFzQkssU0FBUztRQUNyQyw4RUFBOEU7UUFDOUVZLFlBQWFkLFFBQVFjLFVBQVUsRUFBRUMsSUFBSSxDQUFDQyxZQUFjakIsSUFBSWtCLFlBQVksQ0FBQ0MsT0FBTyxDQUFDRixTQUFTLENBQUNqQixLQUFLaUIsZUFBZSxFQUFFO0lBQy9HO0FBQ0Y7QUFFQSxTQUFTWCx5QkFBeUJOLEdBQVEsRUFBRUMsT0FBa0I7SUFDNUQseUVBQXlFO0lBQ3pFLE9BQU87UUFDTEMsTUFBTUosc0JBQXNCTyxNQUFNO1FBQ2xDZSxPQUFPbkIsUUFBUW1CLEtBQUs7UUFDcEJDLFdBQVdwQixRQUFRcUIsUUFBUTtRQUMzQkMsVUFBVXRCLFFBQVFzQixRQUFRO1FBQzFCQyxPQUFPdkIsUUFBUXVCLEtBQUssR0FDaEI7WUFDRUMsSUFBSXhCLFFBQVF1QixLQUFLLENBQUNDLEVBQUUsR0FBR3pCLElBQUlrQixZQUFZLENBQUNDLE9BQU8sQ0FBQ08sU0FBUyxDQUFDekIsUUFBUXVCLEtBQUssQ0FBQ0MsRUFBRSxJQUFJRTtZQUM5RUMsTUFBTTNCLFFBQVF1QixLQUFLLENBQUNJLElBQUk7WUFDeEJDLFVBQVU1QixRQUFRdUIsS0FBSyxDQUFDSyxRQUFRO1FBQ2xDLElBQ0FGO1FBQ0pHLE9BQU83QixRQUFRNkIsS0FBSztRQUNwQkMsS0FBSzlCLFFBQVE4QixHQUFHO1FBQ2hCQyxRQUFRL0IsUUFBUWdDLEtBQUssR0FBR2pDLElBQUlrQixZQUFZLENBQUNDLE9BQU8sQ0FBQ08sU0FBUyxDQUFDekIsUUFBUWdDLEtBQUssSUFBSU47SUFDOUU7QUFDRjtBQUVBLFNBQVNuQiw0QkFBNEIwQixJQUFTLEVBQUVqQyxPQUFrQjtJQUNoRSx5RUFBeUU7SUFDekUsT0FBTztRQUNMQyxNQUFNSixzQkFBc0JTLFNBQVM7UUFDckNhLE9BQU9uQixRQUFRbUIsS0FBSztRQUNwQkMsV0FBV3BCLFFBQVFxQixRQUFRO1FBQzNCUSxPQUFPN0IsUUFBUTZCLEtBQUs7UUFDcEJLLE9BQU9sQyxRQUFRa0MsS0FBSztRQUNwQkMsWUFBWW5DLFFBQVFvQyxTQUFTO1FBQzdCQyxZQUFZckMsUUFBUXNDLFNBQVM7UUFDN0JDLGFBQWF2QyxRQUFRdUMsV0FBVztRQUNoQ0MsVUFBVXhDLFFBQVF3QyxRQUFRO0lBQzVCO0FBQ0Y7QUFFQSxTQUFTM0IsNkJBQTZCZCxHQUFRLEVBQUVDLE9BQWtCO0lBQ2hFLE9BQU87UUFDTEMsTUFBTUQsUUFBUUMsSUFBSTtRQUNsQm1CLFdBQVdwQixRQUFRcUIsUUFBUTtRQUMzQm9CLGVBQWV6QyxRQUFRMEMsWUFBWTtRQUNuQ0MsZ0JBQWdCM0MsUUFBUTRDLGFBQWEsRUFBRTdCLElBQUksQ0FBQzhCLGVBQWtCLENBQUE7Z0JBQzVEckIsSUFBSXpCLElBQUlrQixZQUFZLENBQUNDLE9BQU8sQ0FBQ08sU0FBUyxDQUFDb0IsYUFBYXJCLEVBQUU7Z0JBQ3REdkIsTUFBTTRDLGFBQWE1QyxJQUFJO1lBQ3pCLENBQUE7UUFDQXFCLFVBQVV0QixRQUFRc0IsUUFBUTtRQUMxQndCLFlBQVk5QyxRQUFRK0MsU0FBUztRQUM3QkMsWUFBWWhELFFBQVFpRCxTQUFTO1FBQzdCQyxTQUFTbEQsUUFBUWtELE9BQU8sRUFBRW5DLElBQUksQ0FBQ29DLFNBQVksQ0FBQTtnQkFDekN0QixPQUFPc0IsT0FBT3RCLEtBQUs7Z0JBQ25CSyxPQUFPaUIsT0FBT2pCLEtBQUs7Z0JBQ25Ca0IsYUFBYUQsT0FBT0MsV0FBVztnQkFDL0I3QixPQUFPNEIsT0FBTzVCLEtBQUssR0FDZjtvQkFDRUMsSUFBSTJCLE9BQU81QixLQUFLLENBQUNDLEVBQUUsR0FBR3pCLElBQUlrQixZQUFZLENBQUNDLE9BQU8sQ0FBQ08sU0FBUyxDQUFDMEIsT0FBTzVCLEtBQUssQ0FBQ0MsRUFBRSxJQUFJRTtvQkFDNUVDLE1BQU13QixPQUFPNUIsS0FBSyxDQUFDSSxJQUFJO29CQUN2QkMsVUFBVXVCLE9BQU81QixLQUFLLENBQUNLLFFBQVE7Z0JBQ2pDLElBQ0FGO2dCQUNKMkIsU0FBU0YsT0FBT0UsT0FBTztZQUN6QixDQUFBO1FBQ0FkLGFBQWF2QyxRQUFRdUMsV0FBVztJQUNsQztBQUNGIn0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvcmV2ZXJzZS9jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LCB0eXBlIERpc2NvcmRNZXNzYWdlQ29tcG9uZW50LCBNZXNzYWdlQ29tcG9uZW50VHlwZXMsIHR5cGUgVGV4dFN0eWxlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBCb3QsXG4gIEJ1dHRvblN0eWxlcyxcbiAgQ29tcG9uZW50LFxuICBEaXNjb3JkQWN0aW9uUm93LFxuICBEaXNjb3JkQ29udGFpbmVyQ29tcG9uZW50LFxuICBEaXNjb3JkRmlsZUNvbXBvbmVudCxcbiAgRGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudCxcbiAgRGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0sXG4gIERpc2NvcmRTZWN0aW9uQ29tcG9uZW50LFxuICBEaXNjb3JkU2VsZWN0TWVudUNvbXBvbmVudCxcbiAgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50LFxuICBEaXNjb3JkVGV4dElucHV0Q29tcG9uZW50LFxuICBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICBEaXNjb3JkVW5mdXJsZWRNZWRpYUl0ZW0sXG4gIE1lZGlhR2FsbGVyeUl0ZW0sXG4gIFVuZnVybGVkTWVkaWFJdGVtLFxufSBmcm9tICcuLi8uLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudFRvRGlzY29yZENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZE1lc3NhZ2VDb21wb25lbnQge1xuICAvLyBUaGlzIHN3aXRjaCBzaG91bGQgaW5jbHVkZSBhbGwgY2FzZXNcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtQWN0aW9uUm93KGJvdCwgcGF5bG9hZClcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5CdXR0b246XG4gICAgICByZXR1cm4gdHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50KGJvdCwgcGF5bG9hZClcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Db250YWluZXI6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdCwgcGF5bG9hZClcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50KGJvdCwgcGF5bG9hZClcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TdHJpbmdTZWxlY3Q6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hhbm5lbFNlbGVjdDpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Sb2xlU2VsZWN0OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlVzZXJTZWxlY3Q6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuTWVudGlvbmFibGVTZWxlY3Q6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpXG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VjdGlvbjpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50KGJvdCwgcGF5bG9hZClcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5GaWxlOlxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUZpbGVDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLk1lZGlhR2FsbGVyeTpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRodW1ibmFpbDpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlcGFyYXRvcjpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0RGlzcGxheTpcbiAgICAgIC8vIEFzIG9mIG5vdyB0aGV5IGFyZSBjb21wYXRpYmxlXG4gICAgICByZXR1cm4gcGF5bG9hZCBhcyBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1VbmZ1cmxlZE1lZGlhSXRlbVRvRGlzY29yZFVuZnVybGVkTWVkaWFJdGVtKF9ib3Q6IEJvdCwgcGF5bG9hZDogVW5mdXJsZWRNZWRpYUl0ZW0pOiBEaXNjb3JkVW5mdXJsZWRNZWRpYUl0ZW0ge1xuICByZXR1cm4ge1xuICAgIHVybDogcGF5bG9hZC51cmwsXG4gICAgcHJveHlfdXJsOiBwYXlsb2FkLnByb3h5VXJsLFxuICAgIGhlaWdodDogcGF5bG9hZC5oZWlnaHQsXG4gICAgd2lkdGg6IHBheWxvYWQud2lkdGgsXG4gICAgY29udGVudF90eXBlOiBwYXlsb2FkLmNvbnRlbnRUeXBlLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlJdGVtVG9EaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbShib3Q6IEJvdCwgcGF5bG9hZDogTWVkaWFHYWxsZXJ5SXRlbSk6IERpc2NvcmRNZWRpYUdhbGxlcnlJdGVtIHtcbiAgcmV0dXJuIHtcbiAgICBtZWRpYTogYm90LnRyYW5zZm9ybWVycy5yZXZlcnNlLnVuZnVybGVkTWVkaWFJdGVtKGJvdCwgcGF5bG9hZC5tZWRpYSksXG4gICAgZGVzY3JpcHRpb246IHBheWxvYWQuZGVzY3JpcHRpb24sXG4gICAgc3BvaWxlcjogcGF5bG9hZC5zcG9pbGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUFjdGlvblJvdyhib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZEFjdGlvblJvdyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogTWVzc2FnZUNvbXBvbmVudFR5cGVzLkFjdGlvblJvdyxcbiAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAvLyBUaGUgYWN0aW9uUm93LmNvbXBvbmVudHMgdHlwZSBpcyBraW5kYSBhbm5veWluZywgc28gd2UgbmVlZCBhIGNhc3QgZm9yIHRoaXNcbiAgICBjb21wb25lbnRzOiAocGF5bG9hZC5jb21wb25lbnRzPy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5yZXZlcnNlLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpID8/IFtdKSBhcyBEaXNjb3JkQWN0aW9uUm93Wydjb21wb25lbnRzJ10sXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBDb21wb25lbnQpOiBEaXNjb3JkQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ29udGFpbmVyLFxuICAgIGlkOiBwYXlsb2FkLmlkLFxuICAgIGFjY2VudF9jb2xvcjogcGF5bG9hZC5hY2NlbnRDb2xvcixcbiAgICBzcG9pbGVyOiBwYXlsb2FkLnNwb2lsZXIsXG4gICAgY29tcG9uZW50czogKHBheWxvYWQuY29tcG9uZW50cz8ubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKSA/P1xuICAgICAgW10pIGFzIERpc2NvcmRDb250YWluZXJDb21wb25lbnRbJ2NvbXBvbmVudHMnXSxcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IENvbXBvbmVudCk6IERpc2NvcmRCdXR0b25Db21wb25lbnQge1xuICAvLyBTaW5jZSBDb21wb25lbnQgaXMgYSBtZXJnZSBvZiBhbGwgY29tcG9uZW50cywgc29tZSBjYXN0cyBhcmUgbmVjZXNzYXJ5XG4gIHJldHVybiB7XG4gICAgdHlwZTogTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbixcbiAgICBpZDogcGF5bG9hZC5pZCxcbiAgICBzdHlsZTogcGF5bG9hZC5zdHlsZSBhcyBCdXR0b25TdHlsZXMsXG4gICAgY3VzdG9tX2lkOiBwYXlsb2FkLmN1c3RvbUlkLFxuICAgIGRpc2FibGVkOiBwYXlsb2FkLmRpc2FibGVkLFxuICAgIGVtb2ppOiBwYXlsb2FkLmVtb2ppXG4gICAgICA/IHtcbiAgICAgICAgICBpZDogcGF5bG9hZC5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2UocGF5bG9hZC5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZC5lbW9qaS5uYW1lLFxuICAgICAgICAgIGFuaW1hdGVkOiBwYXlsb2FkLmVtb2ppLmFuaW1hdGVkLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogcGF5bG9hZC5sYWJlbCxcbiAgICB1cmw6IHBheWxvYWQudXJsLFxuICAgIHNrdV9pZDogcGF5bG9hZC5za3VJZCA/IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2UocGF5bG9hZC5za3VJZCkgOiB1bmRlZmluZWQsXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50KF9ib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCB7XG4gIC8vIFNpbmNlIENvbXBvbmVudCBpcyBhIG1lcmdlIG9mIGFsbCBjb21wb25lbnRzLCBzb21lIGNhc3RzIGFyZSBuZWNlc3NhcnlcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGV4dElucHV0LFxuICAgIGlkOiBwYXlsb2FkLmlkLFxuICAgIHN0eWxlOiBwYXlsb2FkLnN0eWxlIGFzIFRleHRTdHlsZXMsXG4gICAgY3VzdG9tX2lkOiBwYXlsb2FkLmN1c3RvbUlkISxcbiAgICBsYWJlbDogcGF5bG9hZC5sYWJlbCEsXG4gICAgdmFsdWU6IHBheWxvYWQudmFsdWUsXG4gICAgbWF4X2xlbmd0aDogcGF5bG9hZC5tYXhMZW5ndGgsXG4gICAgbWluX2xlbmd0aDogcGF5bG9hZC5taW5MZW5ndGgsXG4gICAgcGxhY2Vob2xkZXI6IHBheWxvYWQucGxhY2Vob2xkZXIsXG4gICAgcmVxdWlyZWQ6IHBheWxvYWQucmVxdWlyZWQsXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHBheWxvYWQudHlwZSBhcyBEaXNjb3JkU2VsZWN0TWVudUNvbXBvbmVudFsndHlwZSddLFxuICAgIGlkOiBwYXlsb2FkLmlkLFxuICAgIGN1c3RvbV9pZDogcGF5bG9hZC5jdXN0b21JZCEsXG4gICAgY2hhbm5lbF90eXBlczogcGF5bG9hZC5jaGFubmVsVHlwZXMsXG4gICAgZGVmYXVsdF92YWx1ZXM6IHBheWxvYWQuZGVmYXVsdFZhbHVlcz8ubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5yZXZlcnNlLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgfSkpLFxuICAgIGRpc2FibGVkOiBwYXlsb2FkLmRpc2FibGVkLFxuICAgIG1heF92YWx1ZXM6IHBheWxvYWQubWF4VmFsdWVzLFxuICAgIG1pbl92YWx1ZXM6IHBheWxvYWQubWluVmFsdWVzLFxuICAgIG9wdGlvbnM6IHBheWxvYWQub3B0aW9ucz8ubWFwKChvcHRpb24pID0+ICh7XG4gICAgICBsYWJlbDogb3B0aW9uLmxhYmVsLFxuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICBlbW9qaTogb3B0aW9uLmVtb2ppXG4gICAgICAgID8ge1xuICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2Uob3B0aW9uLmVtb2ppLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5lbW9qaS5uYW1lLFxuICAgICAgICAgICAgYW5pbWF0ZWQ6IG9wdGlvbi5lbW9qaS5hbmltYXRlZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdDogb3B0aW9uLmRlZmF1bHQsXG4gICAgfSkpLFxuICAgIHBsYWNlaG9sZGVyOiBwYXlsb2FkLnBsYWNlaG9sZGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IENvbXBvbmVudCk6IERpc2NvcmRTZWN0aW9uQ29tcG9uZW50IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VjdGlvbixcbiAgICBpZDogcGF5bG9hZC5pZCxcbiAgICBjb21wb25lbnRzOiBwYXlsb2FkLmNvbXBvbmVudHM/Lm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLnJldmVyc2UuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSkgYXMgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50W10sXG4gICAgYWNjZXNzb3J5OiAocGF5bG9hZC5hY2Nlc3NvcnkgPyBib3QudHJhbnNmb3JtZXJzLnJldmVyc2UuY29tcG9uZW50KGJvdCwgcGF5bG9hZC5hY2Nlc3NvcnkpIDogdW5kZWZpbmVkKSBhcyBEaXNjb3JkU2VjdGlvbkNvbXBvbmVudFsnYWNjZXNzb3J5J10sXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtRmlsZUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogQ29tcG9uZW50KTogRGlzY29yZEZpbGVDb21wb25lbnQge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IE1lc3NhZ2VDb21wb25lbnRUeXBlcy5GaWxlLFxuICAgIGlkOiBwYXlsb2FkLmlkLFxuICAgIGZpbGU6IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQuZmlsZSEpLFxuICAgIHNwb2lsZXI6IHBheWxvYWQuc3BvaWxlcixcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IENvbXBvbmVudCk6IERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZWRpYUdhbGxlcnksXG4gICAgaWQ6IHBheWxvYWQuaWQsXG4gICAgaXRlbXM6IHBheWxvYWQuaXRlbXM/Lm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5yZXZlcnNlLm1lZGlhR2FsbGVyeUl0ZW0oYm90LCBpdGVtKSkgPz8gW10sXG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBDb21wb25lbnQpOiBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGh1bWJuYWlsLFxuICAgIGlkOiBwYXlsb2FkLmlkLFxuICAgIG1lZGlhOiBib3QudHJhbnNmb3JtZXJzLnJldmVyc2UudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLm1lZGlhISksXG4gICAgZGVzY3JpcHRpb246IHBheWxvYWQuZGVzY3JpcHRpb24sXG4gICAgc3BvaWxlcjogcGF5bG9hZC5zcG9pbGVyLFxuICB9XG59XG4iXSwibmFtZXMiOlsiTWVzc2FnZUNvbXBvbmVudFR5cGVzIiwidHJhbnNmb3JtQ29tcG9uZW50VG9EaXNjb3JkQ29tcG9uZW50IiwiYm90IiwicGF5bG9hZCIsInR5cGUiLCJBY3Rpb25Sb3ciLCJ0cmFuc2Zvcm1BY3Rpb25Sb3ciLCJCdXR0b24iLCJ0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQiLCJDb250YWluZXIiLCJ0cmFuc2Zvcm1Db250YWluZXJDb21wb25lbnQiLCJUZXh0SW5wdXQiLCJ0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQiLCJTdHJpbmdTZWxlY3QiLCJDaGFubmVsU2VsZWN0IiwiUm9sZVNlbGVjdCIsIlVzZXJTZWxlY3QiLCJNZW50aW9uYWJsZVNlbGVjdCIsInRyYW5zZm9ybVNlbGVjdE1lbnVDb21wb25lbnQiLCJTZWN0aW9uIiwidHJhbnNmb3JtU2VjdGlvbkNvbXBvbmVudCIsIkZpbGUiLCJ0cmFuc2Zvcm1GaWxlQ29tcG9uZW50IiwiTWVkaWFHYWxsZXJ5IiwidHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50IiwiVGh1bWJuYWlsIiwidHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50IiwiU2VwYXJhdG9yIiwiVGV4dERpc3BsYXkiLCJ0cmFuc2Zvcm1VbmZ1cmxlZE1lZGlhSXRlbVRvRGlzY29yZFVuZnVybGVkTWVkaWFJdGVtIiwiX2JvdCIsInVybCIsInByb3h5X3VybCIsInByb3h5VXJsIiwiaGVpZ2h0Iiwid2lkdGgiLCJjb250ZW50X3R5cGUiLCJjb250ZW50VHlwZSIsInRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW1Ub0Rpc2NvcmRNZWRpYUdhbGxlcnlJdGVtIiwibWVkaWEiLCJ0cmFuc2Zvcm1lcnMiLCJyZXZlcnNlIiwidW5mdXJsZWRNZWRpYUl0ZW0iLCJkZXNjcmlwdGlvbiIsInNwb2lsZXIiLCJpZCIsImNvbXBvbmVudHMiLCJtYXAiLCJjb21wb25lbnQiLCJhY2NlbnRfY29sb3IiLCJhY2NlbnRDb2xvciIsInN0eWxlIiwiY3VzdG9tX2lkIiwiY3VzdG9tSWQiLCJkaXNhYmxlZCIsImVtb2ppIiwic25vd2ZsYWtlIiwidW5kZWZpbmVkIiwibmFtZSIsImFuaW1hdGVkIiwibGFiZWwiLCJza3VfaWQiLCJza3VJZCIsInZhbHVlIiwibWF4X2xlbmd0aCIsIm1heExlbmd0aCIsIm1pbl9sZW5ndGgiLCJtaW5MZW5ndGgiLCJwbGFjZWhvbGRlciIsInJlcXVpcmVkIiwiY2hhbm5lbF90eXBlcyIsImNoYW5uZWxUeXBlcyIsImRlZmF1bHRfdmFsdWVzIiwiZGVmYXVsdFZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsIm1heF92YWx1ZXMiLCJtYXhWYWx1ZXMiLCJtaW5fdmFsdWVzIiwibWluVmFsdWVzIiwib3B0aW9ucyIsIm9wdGlvbiIsImRlZmF1bHQiLCJhY2Nlc3NvcnkiLCJmaWxlIiwiaXRlbXMiLCJpdGVtIiwibWVkaWFHYWxsZXJ5SXRlbSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBb0VBLHFCQUFxQixRQUF5QixvQkFBbUI7QUFvQnJJLE9BQU8sU0FBU0MscUNBQXFDQyxHQUFRLEVBQUVDLE9BQWtCO0lBQy9FLHVDQUF1QztJQUN2QyxPQUFRQSxRQUFRQyxJQUFJO1FBQ2xCLEtBQUtKLHNCQUFzQkssU0FBUztZQUNsQyxPQUFPQyxtQkFBbUJKLEtBQUtDO1FBQ2pDLEtBQUtILHNCQUFzQk8sTUFBTTtZQUMvQixPQUFPQyx5QkFBeUJOLEtBQUtDO1FBQ3ZDLEtBQUtILHNCQUFzQlMsU0FBUztZQUNsQyxPQUFPQyw0QkFBNEJSLEtBQUtDO1FBQzFDLEtBQUtILHNCQUFzQlcsU0FBUztZQUNsQyxPQUFPQyw0QkFBNEJWLEtBQUtDO1FBQzFDLEtBQUtILHNCQUFzQmEsWUFBWTtRQUN2QyxLQUFLYixzQkFBc0JjLGFBQWE7UUFDeEMsS0FBS2Qsc0JBQXNCZSxVQUFVO1FBQ3JDLEtBQUtmLHNCQUFzQmdCLFVBQVU7UUFDckMsS0FBS2hCLHNCQUFzQmlCLGlCQUFpQjtZQUMxQyxPQUFPQyw2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
@@ -5,6 +5,7 @@ export function transformSubscription(bot, payload) {
5
5
  if (props.userId && payload.user_id) subscription.userId = bot.transformers.snowflake(payload.user_id);
6
6
  if (props.skuIds && payload.sku_ids) subscription.skuIds = payload.sku_ids.map((skuId)=>bot.transformers.snowflake(skuId));
7
7
  if (props.entitlementIds && payload.entitlement_ids) subscription.entitlementIds = payload.entitlement_ids.map((entitlementId)=>bot.transformers.snowflake(entitlementId));
8
+ if (props.renewalSkuIds && payload.renewal_sku_ids) subscription.renewalSkuIds = payload.renewal_sku_ids.map((skuId)=>bot.transformers.snowflake(skuId));
8
9
  if (props.currentPeriodStart && payload.current_period_start) subscription.currentPeriodStart = Date.parse(payload.current_period_start);
9
10
  if (props.currentPeriodEnd && payload.current_period_end) subscription.currentPeriodEnd = Date.parse(payload.current_period_end);
10
11
  if (props.status && payload.status) subscription.status = payload.status;
@@ -13,4 +14,4 @@ export function transformSubscription(bot, payload) {
13
14
  return bot.transformers.customizers.subscription(bot, payload, subscription);
14
15
  }
15
16
 
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvc3Vic2NyaXB0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFN1YnNjcmlwdGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbEJvdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vaW5kZXguanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1TdWJzY3JpcHRpb24oYm90OiBJbnRlcm5hbEJvdCwgcGF5bG9hZDogRGlzY29yZFN1YnNjcmlwdGlvbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLnN1YnNjcmlwdGlvbiB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5zdWJzY3JpcHRpb25cbiAgY29uc3Qgc3Vic2NyaXB0aW9uID0ge30gYXMgU3Vic2NyaXB0aW9uXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHN1YnNjcmlwdGlvbi5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy51c2VySWQgJiYgcGF5bG9hZC51c2VyX2lkKSBzdWJzY3JpcHRpb24udXNlcklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC51c2VyX2lkKVxuICBpZiAocHJvcHMuc2t1SWRzICYmIHBheWxvYWQuc2t1X2lkcykgc3Vic2NyaXB0aW9uLnNrdUlkcyA9IHBheWxvYWQuc2t1X2lkcy5tYXAoKHNrdUlkKSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShza3VJZCkpXG4gIGlmIChwcm9wcy5lbnRpdGxlbWVudElkcyAmJiBwYXlsb2FkLmVudGl0bGVtZW50X2lkcylcbiAgICBzdWJzY3JpcHRpb24uZW50aXRsZW1lbnRJZHMgPSBwYXlsb2FkLmVudGl0bGVtZW50X2lkcy5tYXAoKGVudGl0bGVtZW50SWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGVudGl0bGVtZW50SWQpKVxuICBpZiAocHJvcHMuY3VycmVudFBlcmlvZFN0YXJ0ICYmIHBheWxvYWQuY3VycmVudF9wZXJpb2Rfc3RhcnQpIHN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnQgPSBEYXRlLnBhcnNlKHBheWxvYWQuY3VycmVudF9wZXJpb2Rfc3RhcnQpXG4gIGlmIChwcm9wcy5jdXJyZW50UGVyaW9kRW5kICYmIHBheWxvYWQuY3VycmVudF9wZXJpb2RfZW5kKSBzdWJzY3JpcHRpb24uY3VycmVudFBlcmlvZEVuZCA9IERhdGUucGFyc2UocGF5bG9hZC5jdXJyZW50X3BlcmlvZF9lbmQpXG4gIGlmIChwcm9wcy5zdGF0dXMgJiYgcGF5bG9hZC5zdGF0dXMpIHN1YnNjcmlwdGlvbi5zdGF0dXMgPSBwYXlsb2FkLnN0YXR1c1xuICBpZiAocHJvcHMuY2FuY2VsZWRBdCAmJiBwYXlsb2FkLmNhbmNlbGVkX2F0KSBzdWJzY3JpcHRpb24uY2FuY2VsZWRBdCA9IERhdGUucGFyc2UocGF5bG9hZC5jYW5jZWxlZF9hdClcbiAgaWYgKHByb3BzLmNvdW50cnkgJiYgcGF5bG9hZC5jb3VudHJ5KSBzdWJzY3JpcHRpb24uY291bnRyeSA9IHBheWxvYWQuY291bnRyeVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLnN1YnNjcmlwdGlvbihib3QsIHBheWxvYWQsIHN1YnNjcmlwdGlvbilcbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1TdWJzY3JpcHRpb24iLCJib3QiLCJwYXlsb2FkIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsInN1YnNjcmlwdGlvbiIsImlkIiwic25vd2ZsYWtlIiwidXNlcklkIiwidXNlcl9pZCIsInNrdUlkcyIsInNrdV9pZHMiLCJtYXAiLCJza3VJZCIsImVudGl0bGVtZW50SWRzIiwiZW50aXRsZW1lbnRfaWRzIiwiZW50aXRsZW1lbnRJZCIsImN1cnJlbnRQZXJpb2RTdGFydCIsImN1cnJlbnRfcGVyaW9kX3N0YXJ0IiwiRGF0ZSIsInBhcnNlIiwiY3VycmVudFBlcmlvZEVuZCIsImN1cnJlbnRfcGVyaW9kX2VuZCIsInN0YXR1cyIsImNhbmNlbGVkQXQiLCJjYW5jZWxlZF9hdCIsImNvdW50cnkiLCJjdXN0b21pemVycyJdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxTQUFTQSxzQkFBc0JDLEdBQWdCLEVBQUVDLE9BQTRCO0lBQ2xGLE1BQU1DLFFBQVFGLElBQUlHLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNDLFlBQVk7SUFDN0QsTUFBTUEsZUFBZSxDQUFDO0lBRXRCLElBQUlILE1BQU1JLEVBQUUsSUFBSUwsUUFBUUssRUFBRSxFQUFFRCxhQUFhQyxFQUFFLEdBQUdOLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRSyxFQUFFO0lBQ25GLElBQUlKLE1BQU1NLE1BQU0sSUFBSVAsUUFBUVEsT0FBTyxFQUFFSixhQUFhRyxNQUFNLEdBQUdSLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRUSxPQUFPO0lBQ3JHLElBQUlQLE1BQU1RLE1BQU0sSUFBSVQsUUFBUVUsT0FBTyxFQUFFTixhQUFhSyxNQUFNLEdBQUdULFFBQVFVLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLFFBQVViLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTTtJQUNySCxJQUFJWCxNQUFNWSxjQUFjLElBQUliLFFBQVFjLGVBQWUsRUFDakRWLGFBQWFTLGNBQWMsR0FBR2IsUUFBUWMsZUFBZSxDQUFDSCxHQUFHLENBQUMsQ0FBQ0ksZ0JBQWtCaEIsSUFBSUcsWUFBWSxDQUFDSSxTQUFTLENBQUNTO0lBQzFHLElBQUlkLE1BQU1lLGtCQUFrQixJQUFJaEIsUUFBUWlCLG9CQUFvQixFQUFFYixhQUFhWSxrQkFBa0IsR0FBR0UsS0FBS0MsS0FBSyxDQUFDbkIsUUFBUWlCLG9CQUFvQjtJQUN2SSxJQUFJaEIsTUFBTW1CLGdCQUFnQixJQUFJcEIsUUFBUXFCLGtCQUFrQixFQUFFakIsYUFBYWdCLGdCQUFnQixHQUFHRixLQUFLQyxLQUFLLENBQUNuQixRQUFRcUIsa0JBQWtCO0lBQy9ILElBQUlwQixNQUFNcUIsTUFBTSxJQUFJdEIsUUFBUXNCLE1BQU0sRUFBRWxCLGFBQWFrQixNQUFNLEdBQUd0QixRQUFRc0IsTUFBTTtJQUN4RSxJQUFJckIsTUFBTXNCLFVBQVUsSUFBSXZCLFFBQVF3QixXQUFXLEVBQUVwQixhQUFhbUIsVUFBVSxHQUFHTCxLQUFLQyxLQUFLLENBQUNuQixRQUFRd0IsV0FBVztJQUNyRyxJQUFJdkIsTUFBTXdCLE9BQU8sSUFBSXpCLFFBQVF5QixPQUFPLEVBQUVyQixhQUFhcUIsT0FBTyxHQUFHekIsUUFBUXlCLE9BQU87SUFFNUUsT0FBTzFCLElBQUlHLFlBQVksQ0FBQ3dCLFdBQVcsQ0FBQ3RCLFlBQVksQ0FBQ0wsS0FBS0MsU0FBU0k7QUFDakUifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvc3Vic2NyaXB0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFN1YnNjcmlwdGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbEJvdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vaW5kZXguanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1TdWJzY3JpcHRpb24oYm90OiBJbnRlcm5hbEJvdCwgcGF5bG9hZDogRGlzY29yZFN1YnNjcmlwdGlvbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLnN1YnNjcmlwdGlvbiB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5zdWJzY3JpcHRpb25cbiAgY29uc3Qgc3Vic2NyaXB0aW9uID0ge30gYXMgU3Vic2NyaXB0aW9uXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHN1YnNjcmlwdGlvbi5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy51c2VySWQgJiYgcGF5bG9hZC51c2VyX2lkKSBzdWJzY3JpcHRpb24udXNlcklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC51c2VyX2lkKVxuICBpZiAocHJvcHMuc2t1SWRzICYmIHBheWxvYWQuc2t1X2lkcykgc3Vic2NyaXB0aW9uLnNrdUlkcyA9IHBheWxvYWQuc2t1X2lkcy5tYXAoKHNrdUlkKSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShza3VJZCkpXG4gIGlmIChwcm9wcy5lbnRpdGxlbWVudElkcyAmJiBwYXlsb2FkLmVudGl0bGVtZW50X2lkcylcbiAgICBzdWJzY3JpcHRpb24uZW50aXRsZW1lbnRJZHMgPSBwYXlsb2FkLmVudGl0bGVtZW50X2lkcy5tYXAoKGVudGl0bGVtZW50SWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGVudGl0bGVtZW50SWQpKVxuICBpZiAocHJvcHMucmVuZXdhbFNrdUlkcyAmJiBwYXlsb2FkLnJlbmV3YWxfc2t1X2lkcylcbiAgICBzdWJzY3JpcHRpb24ucmVuZXdhbFNrdUlkcyA9IHBheWxvYWQucmVuZXdhbF9za3VfaWRzLm1hcCgoc2t1SWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHNrdUlkKSlcbiAgaWYgKHByb3BzLmN1cnJlbnRQZXJpb2RTdGFydCAmJiBwYXlsb2FkLmN1cnJlbnRfcGVyaW9kX3N0YXJ0KSBzdWJzY3JpcHRpb24uY3VycmVudFBlcmlvZFN0YXJ0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmN1cnJlbnRfcGVyaW9kX3N0YXJ0KVxuICBpZiAocHJvcHMuY3VycmVudFBlcmlvZEVuZCAmJiBwYXlsb2FkLmN1cnJlbnRfcGVyaW9kX2VuZCkgc3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmQgPSBEYXRlLnBhcnNlKHBheWxvYWQuY3VycmVudF9wZXJpb2RfZW5kKVxuICBpZiAocHJvcHMuc3RhdHVzICYmIHBheWxvYWQuc3RhdHVzKSBzdWJzY3JpcHRpb24uc3RhdHVzID0gcGF5bG9hZC5zdGF0dXNcbiAgaWYgKHByb3BzLmNhbmNlbGVkQXQgJiYgcGF5bG9hZC5jYW5jZWxlZF9hdCkgc3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQgPSBEYXRlLnBhcnNlKHBheWxvYWQuY2FuY2VsZWRfYXQpXG4gIGlmIChwcm9wcy5jb3VudHJ5ICYmIHBheWxvYWQuY291bnRyeSkgc3Vic2NyaXB0aW9uLmNvdW50cnkgPSBwYXlsb2FkLmNvdW50cnlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5zdWJzY3JpcHRpb24oYm90LCBwYXlsb2FkLCBzdWJzY3JpcHRpb24pXG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtU3Vic2NyaXB0aW9uIiwiYm90IiwicGF5bG9hZCIsInByb3BzIiwidHJhbnNmb3JtZXJzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJzdWJzY3JpcHRpb24iLCJpZCIsInNub3dmbGFrZSIsInVzZXJJZCIsInVzZXJfaWQiLCJza3VJZHMiLCJza3VfaWRzIiwibWFwIiwic2t1SWQiLCJlbnRpdGxlbWVudElkcyIsImVudGl0bGVtZW50X2lkcyIsImVudGl0bGVtZW50SWQiLCJyZW5ld2FsU2t1SWRzIiwicmVuZXdhbF9za3VfaWRzIiwiY3VycmVudFBlcmlvZFN0YXJ0IiwiY3VycmVudF9wZXJpb2Rfc3RhcnQiLCJEYXRlIiwicGFyc2UiLCJjdXJyZW50UGVyaW9kRW5kIiwiY3VycmVudF9wZXJpb2RfZW5kIiwic3RhdHVzIiwiY2FuY2VsZWRBdCIsImNhbmNlbGVkX2F0IiwiY291bnRyeSIsImN1c3RvbWl6ZXJzIl0sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLFNBQVNBLHNCQUFzQkMsR0FBZ0IsRUFBRUMsT0FBNEI7SUFDbEYsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsWUFBWTtJQUM3RCxNQUFNQSxlQUFlLENBQUM7SUFFdEIsSUFBSUgsTUFBTUksRUFBRSxJQUFJTCxRQUFRSyxFQUFFLEVBQUVELGFBQWFDLEVBQUUsR0FBR04sSUFBSUcsWUFBWSxDQUFDSSxTQUFTLENBQUNOLFFBQVFLLEVBQUU7SUFDbkYsSUFBSUosTUFBTU0sTUFBTSxJQUFJUCxRQUFRUSxPQUFPLEVBQUVKLGFBQWFHLE1BQU0sR0FBR1IsSUFBSUcsWUFBWSxDQUFDSSxTQUFTLENBQUNOLFFBQVFRLE9BQU87SUFDckcsSUFBSVAsTUFBTVEsTUFBTSxJQUFJVCxRQUFRVSxPQUFPLEVBQUVOLGFBQWFLLE1BQU0sR0FBR1QsUUFBUVUsT0FBTyxDQUFDQyxHQUFHLENBQUMsQ0FBQ0MsUUFBVWIsSUFBSUcsWUFBWSxDQUFDSSxTQUFTLENBQUNNO0lBQ3JILElBQUlYLE1BQU1ZLGNBQWMsSUFBSWIsUUFBUWMsZUFBZSxFQUNqRFYsYUFBYVMsY0FBYyxHQUFHYixRQUFRYyxlQUFlLENBQUNILEdBQUcsQ0FBQyxDQUFDSSxnQkFBa0JoQixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ1M7SUFDMUcsSUFBSWQsTUFBTWUsYUFBYSxJQUFJaEIsUUFBUWlCLGVBQWUsRUFDaERiLGFBQWFZLGFBQWEsR0FBR2hCLFFBQVFpQixlQUFlLENBQUNOLEdBQUcsQ0FBQyxDQUFDQyxRQUFVYixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ007SUFDakcsSUFBSVgsTUFBTWlCLGtCQUFrQixJQUFJbEIsUUFBUW1CLG9CQUFvQixFQUFFZixhQUFhYyxrQkFBa0IsR0FBR0UsS0FBS0MsS0FBSyxDQUFDckIsUUFBUW1CLG9CQUFvQjtJQUN2SSxJQUFJbEIsTUFBTXFCLGdCQUFnQixJQUFJdEIsUUFBUXVCLGtCQUFrQixFQUFFbkIsYUFBYWtCLGdCQUFnQixHQUFHRixLQUFLQyxLQUFLLENBQUNyQixRQUFRdUIsa0JBQWtCO0lBQy9ILElBQUl0QixNQUFNdUIsTUFBTSxJQUFJeEIsUUFBUXdCLE1BQU0sRUFBRXBCLGFBQWFvQixNQUFNLEdBQUd4QixRQUFRd0IsTUFBTTtJQUN4RSxJQUFJdkIsTUFBTXdCLFVBQVUsSUFBSXpCLFFBQVEwQixXQUFXLEVBQUV0QixhQUFhcUIsVUFBVSxHQUFHTCxLQUFLQyxLQUFLLENBQUNyQixRQUFRMEIsV0FBVztJQUNyRyxJQUFJekIsTUFBTTBCLE9BQU8sSUFBSTNCLFFBQVEyQixPQUFPLEVBQUV2QixhQUFhdUIsT0FBTyxHQUFHM0IsUUFBUTJCLE9BQU87SUFFNUUsT0FBTzVCLElBQUlHLFlBQVksQ0FBQzBCLFdBQVcsQ0FBQ3hCLFlBQVksQ0FBQ0wsS0FBS0MsU0FBU0k7QUFDakUifQ==
@@ -3,7 +3,8 @@ export function transformThreadMember(bot, payload) {
3
3
  id: payload.id ? bot.transformers.snowflake(payload.id) : undefined,
4
4
  userId: payload.user_id ? bot.transformers.snowflake(payload.user_id) : undefined,
5
5
  joinTimestamp: Date.parse(payload.join_timestamp),
6
- flags: payload.flags
6
+ flags: payload.flags,
7
+ member: payload.member ? bot.transformers.member(bot, payload.member, undefined, bot.transformers.snowflake(payload.user_id)) : undefined
7
8
  };
8
9
  return bot.transformers.customizers.threadMember(bot, payload, threadMember);
9
10
  }
@@ -14,4 +15,4 @@ export function transformThreadMemberGuildCreate(bot, payload) {
14
15
  return bot.transformers.customizers.threadMemberGuildCreate(bot, payload, threadMember);
15
16
  }
16
17
 
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdGhyZWFkTWVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFRocmVhZE1lbWJlciwgRGlzY29yZFRocmVhZE1lbWJlckd1aWxkQ3JlYXRlIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJvdCwgVGhyZWFkTWVtYmVyLCBUaHJlYWRNZW1iZXJHdWlsZENyZWF0ZSB9IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtVGhyZWFkTWVtYmVyKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVGhyZWFkTWVtYmVyKTogVGhyZWFkTWVtYmVyIHtcbiAgY29uc3QgdGhyZWFkTWVtYmVyID0ge1xuICAgIGlkOiBwYXlsb2FkLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZCkgOiB1bmRlZmluZWQsXG4gICAgdXNlcklkOiBwYXlsb2FkLnVzZXJfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLnVzZXJfaWQpIDogdW5kZWZpbmVkLFxuICAgIGpvaW5UaW1lc3RhbXA6IERhdGUucGFyc2UocGF5bG9hZC5qb2luX3RpbWVzdGFtcCksXG4gICAgZmxhZ3M6IHBheWxvYWQuZmxhZ3MsXG4gIH0gYXMgVGhyZWFkTWVtYmVyXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMudGhyZWFkTWVtYmVyKGJvdCwgcGF5bG9hZCwgdGhyZWFkTWVtYmVyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtVGhyZWFkTWVtYmVyR3VpbGRDcmVhdGUoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUaHJlYWRNZW1iZXJHdWlsZENyZWF0ZSk6IFRocmVhZE1lbWJlckd1aWxkQ3JlYXRlIHtcbiAgY29uc3QgdGhyZWFkTWVtYmVyID0ge1xuICAgIGpvaW5UaW1lc3RhbXA6IERhdGUucGFyc2UocGF5bG9hZC5qb2luX3RpbWVzdGFtcCksXG4gIH0gYXMgVGhyZWFkTWVtYmVyR3VpbGRDcmVhdGVcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy50aHJlYWRNZW1iZXJHdWlsZENyZWF0ZShib3QsIHBheWxvYWQsIHRocmVhZE1lbWJlcilcbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1UaHJlYWRNZW1iZXIiLCJib3QiLCJwYXlsb2FkIiwidGhyZWFkTWVtYmVyIiwiaWQiLCJ0cmFuc2Zvcm1lcnMiLCJzbm93Zmxha2UiLCJ1bmRlZmluZWQiLCJ1c2VySWQiLCJ1c2VyX2lkIiwiam9pblRpbWVzdGFtcCIsIkRhdGUiLCJwYXJzZSIsImpvaW5fdGltZXN0YW1wIiwiZmxhZ3MiLCJjdXN0b21pemVycyIsInRyYW5zZm9ybVRocmVhZE1lbWJlckd1aWxkQ3JlYXRlIiwidGhyZWFkTWVtYmVyR3VpbGRDcmVhdGUiXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sU0FBU0Esc0JBQXNCQyxHQUFRLEVBQUVDLE9BQTRCO0lBQzFFLE1BQU1DLGVBQWU7UUFDbkJDLElBQUlGLFFBQVFFLEVBQUUsR0FBR0gsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFFLEVBQUUsSUFBSUc7UUFDMURDLFFBQVFOLFFBQVFPLE9BQU8sR0FBR1IsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFPLE9BQU8sSUFBSUY7UUFDeEVHLGVBQWVDLEtBQUtDLEtBQUssQ0FBQ1YsUUFBUVcsY0FBYztRQUNoREMsT0FBT1osUUFBUVksS0FBSztJQUN0QjtJQUVBLE9BQU9iLElBQUlJLFlBQVksQ0FBQ1UsV0FBVyxDQUFDWixZQUFZLENBQUNGLEtBQUtDLFNBQVNDO0FBQ2pFO0FBRUEsT0FBTyxTQUFTYSxpQ0FBaUNmLEdBQVEsRUFBRUMsT0FBdUM7SUFDaEcsTUFBTUMsZUFBZTtRQUNuQk8sZUFBZUMsS0FBS0MsS0FBSyxDQUFDVixRQUFRVyxjQUFjO0lBQ2xEO0lBRUEsT0FBT1osSUFBSUksWUFBWSxDQUFDVSxXQUFXLENBQUNFLHVCQUF1QixDQUFDaEIsS0FBS0MsU0FBU0M7QUFDNUUifQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdGhyZWFkTWVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFRocmVhZE1lbWJlciwgRGlzY29yZFRocmVhZE1lbWJlckd1aWxkQ3JlYXRlIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJvdCwgVGhyZWFkTWVtYmVyLCBUaHJlYWRNZW1iZXJHdWlsZENyZWF0ZSB9IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtVGhyZWFkTWVtYmVyKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVGhyZWFkTWVtYmVyKTogVGhyZWFkTWVtYmVyIHtcbiAgY29uc3QgdGhyZWFkTWVtYmVyID0ge1xuICAgIGlkOiBwYXlsb2FkLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZCkgOiB1bmRlZmluZWQsXG4gICAgdXNlcklkOiBwYXlsb2FkLnVzZXJfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLnVzZXJfaWQpIDogdW5kZWZpbmVkLFxuICAgIGpvaW5UaW1lc3RhbXA6IERhdGUucGFyc2UocGF5bG9hZC5qb2luX3RpbWVzdGFtcCksXG4gICAgZmxhZ3M6IHBheWxvYWQuZmxhZ3MsXG4gICAgbWVtYmVyOiBwYXlsb2FkLm1lbWJlciA/IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcGF5bG9hZC5tZW1iZXIsIHVuZGVmaW5lZCwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC51c2VyX2lkKSkgOiB1bmRlZmluZWQsXG4gIH0gYXMgVGhyZWFkTWVtYmVyXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMudGhyZWFkTWVtYmVyKGJvdCwgcGF5bG9hZCwgdGhyZWFkTWVtYmVyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtVGhyZWFkTWVtYmVyR3VpbGRDcmVhdGUoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUaHJlYWRNZW1iZXJHdWlsZENyZWF0ZSk6IFRocmVhZE1lbWJlckd1aWxkQ3JlYXRlIHtcbiAgY29uc3QgdGhyZWFkTWVtYmVyID0ge1xuICAgIGpvaW5UaW1lc3RhbXA6IERhdGUucGFyc2UocGF5bG9hZC5qb2luX3RpbWVzdGFtcCksXG4gIH0gYXMgVGhyZWFkTWVtYmVyR3VpbGRDcmVhdGVcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy50aHJlYWRNZW1iZXJHdWlsZENyZWF0ZShib3QsIHBheWxvYWQsIHRocmVhZE1lbWJlcilcbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1UaHJlYWRNZW1iZXIiLCJib3QiLCJwYXlsb2FkIiwidGhyZWFkTWVtYmVyIiwiaWQiLCJ0cmFuc2Zvcm1lcnMiLCJzbm93Zmxha2UiLCJ1bmRlZmluZWQiLCJ1c2VySWQiLCJ1c2VyX2lkIiwiam9pblRpbWVzdGFtcCIsIkRhdGUiLCJwYXJzZSIsImpvaW5fdGltZXN0YW1wIiwiZmxhZ3MiLCJtZW1iZXIiLCJjdXN0b21pemVycyIsInRyYW5zZm9ybVRocmVhZE1lbWJlckd1aWxkQ3JlYXRlIiwidGhyZWFkTWVtYmVyR3VpbGRDcmVhdGUiXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sU0FBU0Esc0JBQXNCQyxHQUFRLEVBQUVDLE9BQTRCO0lBQzFFLE1BQU1DLGVBQWU7UUFDbkJDLElBQUlGLFFBQVFFLEVBQUUsR0FBR0gsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFFLEVBQUUsSUFBSUc7UUFDMURDLFFBQVFOLFFBQVFPLE9BQU8sR0FBR1IsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFPLE9BQU8sSUFBSUY7UUFDeEVHLGVBQWVDLEtBQUtDLEtBQUssQ0FBQ1YsUUFBUVcsY0FBYztRQUNoREMsT0FBT1osUUFBUVksS0FBSztRQUNwQkMsUUFBUWIsUUFBUWEsTUFBTSxHQUFHZCxJQUFJSSxZQUFZLENBQUNVLE1BQU0sQ0FBQ2QsS0FBS0MsUUFBUWEsTUFBTSxFQUFFUixXQUFXTixJQUFJSSxZQUFZLENBQUNDLFNBQVMsQ0FBQ0osUUFBUU8sT0FBTyxLQUFLRjtJQUNsSTtJQUVBLE9BQU9OLElBQUlJLFlBQVksQ0FBQ1csV0FBVyxDQUFDYixZQUFZLENBQUNGLEtBQUtDLFNBQVNDO0FBQ2pFO0FBRUEsT0FBTyxTQUFTYyxpQ0FBaUNoQixHQUFRLEVBQUVDLE9BQXVDO0lBQ2hHLE1BQU1DLGVBQWU7UUFDbkJPLGVBQWVDLEtBQUtDLEtBQUssQ0FBQ1YsUUFBUVcsY0FBYztJQUNsRDtJQUVBLE9BQU9aLElBQUlJLFlBQVksQ0FBQ1csV0FBVyxDQUFDRSx1QkFBdUIsQ0FBQ2pCLEtBQUtDLFNBQVNDO0FBQzVFIn0=