@discordeno/bot 22.0.1-next.fca3cbb → 22.0.1-next.fdb61e1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/bot.d.ts.map +1 -1
  2. package/dist/bot.js +3 -2
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +2 -2
  5. package/dist/desiredProperties.d.ts +4 -1
  6. package/dist/desiredProperties.d.ts.map +1 -1
  7. package/dist/desiredProperties.js +19 -1
  8. package/dist/events.d.ts +12 -1
  9. package/dist/events.d.ts.map +1 -1
  10. package/dist/events.js +1 -1
  11. package/dist/handlers/channels/CHANNEL_INFO.d.ts +4 -0
  12. package/dist/handlers/channels/CHANNEL_INFO.d.ts.map +1 -0
  13. package/dist/handlers/channels/CHANNEL_INFO.js +7 -0
  14. package/dist/handlers/channels/THREAD_LIST_SYNC.d.ts.map +1 -1
  15. package/dist/handlers/channels/THREAD_LIST_SYNC.js +3 -6
  16. package/dist/handlers/channels/index.d.ts +1 -0
  17. package/dist/handlers/channels/index.d.ts.map +1 -1
  18. package/dist/handlers/channels/index.js +2 -1
  19. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +2 -2
  20. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +2 -2
  21. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +2 -2
  22. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +2 -2
  23. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +2 -2
  24. package/dist/handlers/misc/READY.d.ts.map +1 -1
  25. package/dist/handlers/misc/READY.js +4 -4
  26. package/dist/handlers/voice/VOICE_CHANNEL_START_TIME_UPDATE.d.ts +4 -0
  27. package/dist/handlers/voice/VOICE_CHANNEL_START_TIME_UPDATE.d.ts.map +1 -0
  28. package/dist/handlers/voice/VOICE_CHANNEL_START_TIME_UPDATE.js +11 -0
  29. package/dist/handlers/voice/VOICE_CHANNEL_STATUS_UPDATE.d.ts +4 -0
  30. package/dist/handlers/voice/VOICE_CHANNEL_STATUS_UPDATE.d.ts.map +1 -0
  31. package/dist/handlers/voice/VOICE_CHANNEL_STATUS_UPDATE.js +11 -0
  32. package/dist/handlers/voice/index.d.ts +2 -0
  33. package/dist/handlers/voice/index.d.ts.map +1 -1
  34. package/dist/handlers/voice/index.js +3 -1
  35. package/dist/handlers.d.ts.map +1 -1
  36. package/dist/handlers.js +5 -2
  37. package/dist/helpers.d.ts +9 -2
  38. package/dist/helpers.d.ts.map +1 -1
  39. package/dist/helpers.js +244 -224
  40. package/dist/transformers/activity.d.ts +11 -4
  41. package/dist/transformers/activity.d.ts.map +1 -1
  42. package/dist/transformers/activity.js +45 -42
  43. package/dist/transformers/application.d.ts.map +1 -1
  44. package/dist/transformers/application.js +49 -46
  45. package/dist/transformers/applicationCommand.d.ts +3 -1
  46. package/dist/transformers/applicationCommand.d.ts.map +1 -1
  47. package/dist/transformers/applicationCommand.js +19 -17
  48. package/dist/transformers/applicationCommandOption.d.ts +3 -1
  49. package/dist/transformers/applicationCommandOption.d.ts.map +1 -1
  50. package/dist/transformers/applicationCommandOption.js +22 -19
  51. package/dist/transformers/applicationCommandOptionChoice.d.ts +3 -1
  52. package/dist/transformers/applicationCommandOptionChoice.d.ts.map +1 -1
  53. package/dist/transformers/applicationCommandOptionChoice.js +10 -8
  54. package/dist/transformers/applicationCommandPermission.d.ts +7 -2
  55. package/dist/transformers/applicationCommandPermission.d.ts.map +1 -1
  56. package/dist/transformers/applicationCommandPermission.js +20 -13
  57. package/dist/transformers/auditLogEntry.d.ts +7 -2
  58. package/dist/transformers/auditLogEntry.d.ts.map +1 -1
  59. package/dist/transformers/auditLogEntry.js +33 -25
  60. package/dist/transformers/automodActionExecution.d.ts +10 -2
  61. package/dist/transformers/automodActionExecution.d.ts.map +1 -1
  62. package/dist/transformers/automodActionExecution.js +35 -23
  63. package/dist/transformers/automodRule.d.ts +7 -2
  64. package/dist/transformers/automodRule.d.ts.map +1 -1
  65. package/dist/transformers/automodRule.js +30 -30
  66. package/dist/transformers/channel.d.ts +7 -1
  67. package/dist/transformers/channel.d.ts.map +1 -1
  68. package/dist/transformers/channel.js +20 -1
  69. package/dist/transformers/component.js +5 -6
  70. package/dist/transformers/embed.d.ts +16 -2
  71. package/dist/transformers/embed.d.ts.map +1 -1
  72. package/dist/transformers/embed.js +70 -58
  73. package/dist/transformers/emoji.js +1 -1
  74. package/dist/transformers/gatewayBot.d.ts +7 -2
  75. package/dist/transformers/gatewayBot.d.ts.map +1 -1
  76. package/dist/transformers/gatewayBot.js +20 -13
  77. package/dist/transformers/guild.d.ts.map +1 -1
  78. package/dist/transformers/guild.js +2 -10
  79. package/dist/transformers/integration.d.ts +10 -2
  80. package/dist/transformers/integration.d.ts.map +1 -1
  81. package/dist/transformers/integration.js +43 -31
  82. package/dist/transformers/interaction.d.ts +3 -1
  83. package/dist/transformers/interaction.d.ts.map +1 -1
  84. package/dist/transformers/interaction.js +12 -11
  85. package/dist/transformers/lobby.d.ts +4 -1
  86. package/dist/transformers/lobby.d.ts.map +1 -1
  87. package/dist/transformers/lobby.js +11 -1
  88. package/dist/transformers/member.js +1 -1
  89. package/dist/transformers/message.js +1 -1
  90. package/dist/transformers/presence.d.ts.map +1 -1
  91. package/dist/transformers/presence.js +2 -1
  92. package/dist/transformers/reverse/presence.d.ts.map +1 -1
  93. package/dist/transformers/reverse/presence.js +3 -2
  94. package/dist/transformers/role.js +1 -1
  95. package/dist/transformers/soundboardSound.js +2 -2
  96. package/dist/transformers/sticker.d.ts +3 -1
  97. package/dist/transformers/sticker.d.ts.map +1 -1
  98. package/dist/transformers/sticker.js +13 -12
  99. package/dist/transformers/team.d.ts +7 -2
  100. package/dist/transformers/team.d.ts.map +1 -1
  101. package/dist/transformers/team.js +22 -16
  102. package/dist/transformers/template.d.ts +3 -1
  103. package/dist/transformers/template.d.ts.map +1 -1
  104. package/dist/transformers/template.js +18 -16
  105. package/dist/transformers/threadMember.d.ts +6 -2
  106. package/dist/transformers/threadMember.d.ts.map +1 -1
  107. package/dist/transformers/threadMember.js +20 -16
  108. package/dist/transformers/toggles/guild.d.ts +16 -13
  109. package/dist/transformers/toggles/guild.d.ts.map +1 -1
  110. package/dist/transformers/toggles/guild.js +27 -21
  111. package/dist/transformers/types.d.ts +71 -1
  112. package/dist/transformers/types.d.ts.map +1 -1
  113. package/dist/transformers/types.js +1 -1
  114. package/dist/transformers/user.js +1 -1
  115. package/dist/transformers/voiceRegion.d.ts +3 -1
  116. package/dist/transformers/voiceRegion.d.ts.map +1 -1
  117. package/dist/transformers/voiceRegion.js +12 -10
  118. package/dist/transformers/welcomeScreen.d.ts +7 -2
  119. package/dist/transformers/welcomeScreen.d.ts.map +1 -1
  120. package/dist/transformers/welcomeScreen.js +19 -12
  121. package/dist/transformers/widget.d.ts +3 -1
  122. package/dist/transformers/widget.d.ts.map +1 -1
  123. package/dist/transformers/widget.js +17 -15
  124. package/dist/transformers/widgetSettings.d.ts +3 -1
  125. package/dist/transformers/widgetSettings.d.ts.map +1 -1
  126. package/dist/transformers/widgetSettings.js +9 -7
  127. package/dist/transformers.d.ts +101 -91
  128. package/dist/transformers.d.ts.map +1 -1
  129. package/dist/transformers.js +63 -27
  130. package/package.json +13 -13
@@ -170,11 +170,9 @@ function transformStringSelectMenuComponent(bot, payload) {
170
170
  label: option.label,
171
171
  value: option.value,
172
172
  description: option.description,
173
- emoji: option.emoji ? {
174
- id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,
175
- name: option.emoji.name ?? undefined,
176
- animated: option.emoji.animated
177
- } : undefined,
173
+ emoji: option.emoji ? bot.transformers.emoji(bot, option.emoji, {
174
+ partial: true
175
+ }) : undefined,
178
176
  default: option.default
179
177
  }));
180
178
  if (props.disabled && _payload.disabled) select.disabled = _payload.disabled;
@@ -359,6 +357,7 @@ function transformFileUploadComponent(bot, payload) {
359
357
  if (props.minValues && _payload.min_values) fileUpload.minValues = _payload.min_values;
360
358
  if (props.maxValues && _payload.max_values) fileUpload.maxValues = _payload.max_values;
361
359
  if (props.required && _payload.required) fileUpload.required = _payload.required;
360
+ if (props.fileTypes && _payload.file_types) fileUpload.fileTypes = _payload.file_types;
362
361
  }
363
362
  return fileUpload;
364
363
  }
@@ -407,4 +406,4 @@ function transformCheckboxComponent(bot, payload) {
407
406
  return checkbox;
408
407
  }
409
408
 
410
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkQ2hlY2tib3hDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRDaGVja2JveEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZExhYmVsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRMYWJlbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbSxcbiAgdHlwZSBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lbnRpb25hYmxlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkU2VjdGlvbkNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRTdHJpbmdTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFN0cmluZ1NlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIHR5cGUgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRUZXh0RGlzcGxheUludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dElucHV0SW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIE1lc3NhZ2VDb21wb25lbnRUeXBlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuLi9ib3QuanMnO1xuaW1wb3J0IHR5cGUgeyBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLCBTZXR1cERlc2lyZWRQcm9wcywgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMgfSBmcm9tICcuLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgeyBjYWxsQ3VzdG9taXplciB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy5qcyc7XG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vdG9nZ2xlcy9Ub2dnbGVCaXRmaWVsZC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCwgTWVkaWFHYWxsZXJ5SXRlbSwgVW5mdXJsZWRNZWRpYUl0ZW0gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lc3NhZ2VDb21wb25lbnQgfCBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2U+LFxuICBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSxcbikge1xuICBsZXQgY29tcG9uZW50OiBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICAvLyBUaGVyZSdzIG5vdGhpbmcgdG8gZG8gd2l0aCBhIGNvbXBvbmVudCB3aXRob3V0IGEgdHlwZSwgYXMgaXQgbWVhbnMgYW4gaXNzdWUgb24gRGlzY29yZCwgc28gd2UganVzdCB0aHJvdyBhbiBlcnJvclxuICBpZiAoIXBheWxvYWQudHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgW0Rpc2NvcmRlbm9dIFJlY2VpdmVkIGEgY29tcG9uZW50IHBheWxvYWQgd2l0aG91dCBhIHR5cGUgaW4gdGhlIGNvbXBvbmVudCB0cmFuc2Zvcm1lci5gKTtcbiAgfVxuXG4gIC8vIFRoaXMgc3dpdGNoIGlzIGV4aGF1c3RpdmUsIHNvIHdlIGRvbnQgbmVlZCB0aGUgZGVmYXVsdCBjYXNlIGFuZCBUUyBkb2VzIG5vdCBlcnJvciBvdXQgZm9yIHRoZSB1bi1pbml0aWFsaXplZCBjb21wb25lbnQgdmFyaWFibGVcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ29udGFpbmVyOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlN0cmluZ1NlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVN0cmluZ1NlbGVjdE1lbnVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlVzZXJTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1Vc2VyU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuUm9sZVNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVJvbGVTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZW50aW9uYWJsZVNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybU1lbnRpb25hYmxlU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hhbm5lbFNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoYW5uZWxTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZWN0aW9uOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtU2VjdGlvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGh1bWJuYWlsOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZWRpYUdhbGxlcnk6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkZpbGU6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1GaWxlQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZXBhcmF0b3I6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRleHREaXNwbGF5OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkxhYmVsOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtTGFiZWxDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkZpbGVVcGxvYWQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1GaWxlVXBsb2FkQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5SYWRpb0dyb3VwOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hlY2tib3hHcm91cDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoZWNrYm94R3JvdXBDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoZWNrYm94OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ2hlY2tib3hDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdjb21wb25lbnQnLCBib3QsIHBheWxvYWQsIGNvbXBvbmVudCwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbT4sIGV4dHJhPzogeyBwYXJ0aWFsPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy51bmZ1cmxlZE1lZGlhSXRlbTtcbiAgY29uc3QgbWVkaWFJdGVtID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8VW5mdXJsZWRNZWRpYUl0ZW0sIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBtZWRpYUl0ZW0udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5wcm94eVVybCAmJiBwYXlsb2FkLnByb3h5X3VybCkgbWVkaWFJdGVtLnByb3h5VXJsID0gcGF5bG9hZC5wcm94eV91cmw7XG4gIGlmIChwcm9wcy5oZWlnaHQgJiYgcGF5bG9hZC5oZWlnaHQpIG1lZGlhSXRlbS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDtcbiAgaWYgKHByb3BzLndpZHRoICYmIHBheWxvYWQud2lkdGgpIG1lZGlhSXRlbS53aWR0aCA9IHBheWxvYWQud2lkdGg7XG4gIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBtZWRpYUl0ZW0ucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICBpZiAocHJvcHMucGxhY2Vob2xkZXJWZXJzaW9uICYmIHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbikgbWVkaWFJdGVtLnBsYWNlaG9sZGVyVmVyc2lvbiA9IHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbjtcbiAgaWYgKHByb3BzLmNvbnRlbnRUeXBlICYmIHBheWxvYWQuY29udGVudF90eXBlKSBtZWRpYUl0ZW0uY29udGVudFR5cGUgPSBwYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgaWYgKHByb3BzLmZsYWdzICYmIHBheWxvYWQuZmxhZ3MpIG1lZGlhSXRlbS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKTtcbiAgaWYgKHByb3BzLmF0dGFjaG1lbnRJZCAmJiBwYXlsb2FkLmF0dGFjaG1lbnRfaWQpIG1lZGlhSXRlbS5hdHRhY2htZW50SWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmF0dGFjaG1lbnRfaWQpO1xuXG4gIHJldHVybiBjYWxsQ3VzdG9taXplcigndW5mdXJsZWRNZWRpYUl0ZW0nLCBib3QsIHBheWxvYWQsIG1lZGlhSXRlbSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW0oYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0+LCBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVkaWFHYWxsZXJ5SXRlbTtcbiAgY29uc3QgZ2FsbGVyeUl0ZW0gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxNZWRpYUdhbGxlcnlJdGVtLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIGdhbGxlcnlJdGVtLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgZ2FsbGVyeUl0ZW0uZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGdhbGxlcnlJdGVtLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXI7XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdtZWRpYUdhbGxlcnlJdGVtJywgYm90LCBwYXlsb2FkLCBnYWxsZXJ5SXRlbSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQWN0aW9uUm93KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRBY3Rpb25Sb3c+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGFjdGlvblJvdyA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYWN0aW9uUm93LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBhY3Rpb25Sb3cuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgYWN0aW9uUm93LmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGFjdGlvblJvdztcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDb250YWluZXJDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY29udGFpbmVyLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjb250YWluZXIuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuYWNjZW50Q29sb3IgJiYgcGF5bG9hZC5hY2NlbnRfY29sb3IpIGNvbnRhaW5lci5hY2NlbnRDb2xvciA9IHBheWxvYWQuYWNjZW50X2NvbG9yO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGNvbnRhaW5lci5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgY29udGFpbmVyLmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRCdXR0b25Db21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGJ1dHRvbiA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYnV0dG9uLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBidXR0b24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgYnV0dG9uLmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBidXR0b24uY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcbiAgaWYgKHByb3BzLnN0eWxlICYmIHBheWxvYWQuc3R5bGUpIGJ1dHRvbi5zdHlsZSA9IHBheWxvYWQuc3R5bGU7XG4gIGlmIChwcm9wcy5lbW9qaSAmJiBwYXlsb2FkLmVtb2ppKSBidXR0b24uZW1vamkgPSBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgcGF5bG9hZC5lbW9qaSwgeyBwYXJ0aWFsOiB0cnVlIH0pO1xuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBidXR0b24udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBidXR0b24uZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkO1xuICBpZiAocHJvcHMuc2t1SWQgJiYgcGF5bG9hZC5za3VfaWQpIGJ1dHRvbi5za3VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuc2t1X2lkKTtcblxuICByZXR1cm4gYnV0dG9uO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFRleHRJbnB1dENvbXBvbmVudCB8IERpc2NvcmRUZXh0SW5wdXRJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBpbnB1dCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW5wdXQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGlucHV0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLnZhbHVlICYmIHBheWxvYWQudmFsdWUpIGlucHV0LnZhbHVlID0gcGF5bG9hZC52YWx1ZTtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBpbnB1dC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ3ZhbHVlcycgaXQgaXMgdGhlIGludGVyYWN0aW9uIHJlc3BvbnNlXG4gIGlmICgnc3R5bGUnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuc3R5bGUgJiYgcGF5bG9hZC5zdHlsZSkgaW5wdXQuc3R5bGUgPSBwYXlsb2FkLnN0eWxlO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkKSBpbnB1dC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gICAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGlucHV0LmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgaW5wdXQucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5MZW5ndGggJiYgcGF5bG9hZC5taW5fbGVuZ3RoKSBpbnB1dC5taW5MZW5ndGggPSBwYXlsb2FkLm1pbl9sZW5ndGg7XG4gICAgaWYgKHByb3BzLm1heExlbmd0aCAmJiBwYXlsb2FkLm1heF9sZW5ndGgpIGlucHV0Lm1heExlbmd0aCA9IHBheWxvYWQubWF4X2xlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3RyaW5nU2VsZWN0TWVudUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFN0cmluZ1NlbGVjdENvbXBvbmVudCB8IERpc2NvcmRTdHJpbmdTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkU3RyaW5nU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5vcHRpb25zICYmIF9wYXlsb2FkLm9wdGlvbnMpXG4gICAgICBzZWxlY3Qub3B0aW9ucyA9IF9wYXlsb2FkLm9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24ubGFiZWwsXG4gICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgIGVtb2ppOiBvcHRpb24uZW1vamlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbi5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5lbW9qaS5uYW1lID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgYW5pbWF0ZWQ6IG9wdGlvbi5lbW9qaS5hbmltYXRlZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVmYXVsdDogb3B0aW9uLmRlZmF1bHQsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIF9wYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBfcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVVzZXJTZWxlY3RNZW51Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRVc2VyU2VsZWN0Q29tcG9uZW50IHwgRGlzY29yZFVzZXJTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRVc2VyU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzICYmIF9wYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgICAgc2VsZWN0LmRlZmF1bHRWYWx1ZXMgPSBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGRlZmF1bHRWYWx1ZS5pZCksXG4gICAgICAgIHR5cGU6IGRlZmF1bHRWYWx1ZS50eXBlLFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBfcGF5bG9hZC5kaXNhYmxlZCkgc2VsZWN0LmRpc2FibGVkID0gX3BheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Sb2xlU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkUm9sZVNlbGVjdENvbXBvbmVudCB8IERpc2NvcmRSb2xlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbD4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAndmFsdWVzJyBpdCBpcyB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkUm9sZVNlbGVjdENvbXBvbmVudD47XG5cbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgX3BheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IF9wYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gX3BheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgX3BheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IF9wYXlsb2FkLmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWVudGlvbmFibGVTZWxlY3RNZW51Q29tcG9uZW50KFxuICBib3Q6IEJvdCxcbiAgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQgfCBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRNZW50aW9uYWJsZVNlbGVjdENvbXBvbmVudD47XG5cbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgX3BheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IF9wYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gX3BheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgX3BheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IF9wYXlsb2FkLmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ2hhbm5lbFNlbGVjdE1lbnVDb21wb25lbnQoXG4gIGJvdDogQm90LFxuICBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50IHwgRGlzY29yZENoYW5uZWxTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzICYmIF9wYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgICAgc2VsZWN0LmRlZmF1bHRWYWx1ZXMgPSBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGRlZmF1bHRWYWx1ZS5pZCksXG4gICAgICAgIHR5cGU6IGRlZmF1bHRWYWx1ZS50eXBlLFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5jaGFubmVsVHlwZXMgJiYgX3BheWxvYWQuY2hhbm5lbF90eXBlcykgc2VsZWN0LmNoYW5uZWxUeXBlcyA9IF9wYXlsb2FkLmNoYW5uZWxfdHlwZXM7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIF9wYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBfcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFNlY3Rpb25Db21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlY3Rpb24gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlY3Rpb24udHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlY3Rpb24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpIHNlY3Rpb24uY29tcG9uZW50cyA9IHBheWxvYWQuY29tcG9uZW50cy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKTtcbiAgaWYgKHByb3BzLmFjY2Vzc29yeSAmJiBwYXlsb2FkLmFjY2Vzc29yeSkgc2VjdGlvbi5hY2Nlc3NvcnkgPSBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQuYWNjZXNzb3J5KTtcblxuICByZXR1cm4gc2VjdGlvbjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRUaHVtYm5haWxDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHRodW1ibmFpbCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGh1bWJuYWlsLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSB0aHVtYm5haWwuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubWVkaWEgJiYgcGF5bG9hZC5tZWRpYSkgdGh1bWJuYWlsLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgdGh1bWJuYWlsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSB0aHVtYm5haWwuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcblxuICByZXR1cm4gdGh1bWJuYWlsO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudD4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgbWVkaWFHYWxsZXJ5ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBtZWRpYUdhbGxlcnkudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIG1lZGlhR2FsbGVyeS5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5pdGVtcyAmJiBwYXlsb2FkLml0ZW1zKSBtZWRpYUdhbGxlcnkuaXRlbXMgPSBwYXlsb2FkLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZWRpYUdhbGxlcnlJdGVtKGJvdCwgaXRlbSkpO1xuXG4gIHJldHVybiBtZWRpYUdhbGxlcnk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEZpbGVDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGZpbGUgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGZpbGUudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGUuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuZmlsZSAmJiBwYXlsb2FkLmZpbGUpIGZpbGUuZmlsZSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLmZpbGUpO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGZpbGUuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5uYW1lKSBmaWxlLm5hbWUgPSBwYXlsb2FkLm5hbWU7XG4gIGlmIChwcm9wcy5zaXplICYmIHBheWxvYWQuc2l6ZSkgZmlsZS5zaXplID0gcGF5bG9hZC5zaXplO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UZXh0RGlzcGxheUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkVGV4dERpc3BsYXlDb21wb25lbnQgfCBEaXNjb3JkVGV4dERpc3BsYXlJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCB0ZXh0RGlzcGxheSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGV4dERpc3BsYXkudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHRleHREaXNwbGF5LmlkID0gcGF5bG9hZC5pZDtcbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAnY29udGVudCcgaXQgaXMgdGhlIGNvbXBvbmVudFxuICBpZiAoJ2NvbnRlbnQnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuY29udGVudCAmJiBwYXlsb2FkLmNvbnRlbnQpIHRleHREaXNwbGF5LmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gdGV4dERpc3BsYXk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50Pikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZXBhcmF0b3IgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlcGFyYXRvci50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VwYXJhdG9yLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmRpdmlkZXIgJiYgcGF5bG9hZC5kaXZpZGVyKSBzZXBhcmF0b3IuZGl2aWRlciA9IHBheWxvYWQuZGl2aWRlcjtcbiAgaWYgKHByb3BzLnNwYWNpbmcgJiYgcGF5bG9hZC5zcGFjaW5nKSBzZXBhcmF0b3Iuc3BhY2luZyA9IHBheWxvYWQuc3BhY2luZztcblxuICByZXR1cm4gc2VwYXJhdG9yO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1MYWJlbENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkTGFiZWxDb21wb25lbnQgfCBEaXNjb3JkTGFiZWxJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBsYWJlbCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgbGFiZWwudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGxhYmVsLmlkID0gcGF5bG9hZC5pZDtcbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAnbGFiZWwnIGl0IGlzIHRoZSBjb21wb25lbnRcbiAgaWYgKCdsYWJlbCcgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5sYWJlbCAmJiBwYXlsb2FkLmxhYmVsKSBsYWJlbC5sYWJlbCA9IHBheWxvYWQubGFiZWw7XG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIGxhYmVsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgfVxuICBpZiAocHJvcHMuY29tcG9uZW50ICYmIHBheWxvYWQuY29tcG9uZW50KSBsYWJlbC5jb21wb25lbnQgPSBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQuY29tcG9uZW50KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVVcGxvYWRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEZpbGVVcGxvYWRDb21wb25lbnQgfCBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2U+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGZpbGVVcGxvYWQgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGZpbGVVcGxvYWQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGVVcGxvYWQuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGZpbGVVcGxvYWQuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIGZpbGVVcGxvYWQudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgX3BheWxvYWQgPSBwYXlsb2FkIGFzIFBhcnRpYWw8RGlzY29yZEZpbGVVcGxvYWRDb21wb25lbnQ+O1xuXG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBmaWxlVXBsb2FkLm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBmaWxlVXBsb2FkLm1heFZhbHVlcyA9IF9wYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIF9wYXlsb2FkLnJlcXVpcmVkKSBmaWxlVXBsb2FkLnJlcXVpcmVkID0gX3BheWxvYWQucmVxdWlyZWQ7XG4gIH1cblxuICByZXR1cm4gZmlsZVVwbG9hZDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkUmFkaW9Hcm91cENvbXBvbmVudCB8IERpc2NvcmRSYWRpb0dyb3VwSW50ZXJhY3Rpb25SZXNwb25zZT4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgcmFkaW9Hcm91cCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgcmFkaW9Hcm91cC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgcmFkaW9Hcm91cC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgcmFkaW9Hcm91cC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ29wdGlvbnMnIGl0IGlzIHRoZSBjb21wb25lbnRcbiAgaWYgKCdvcHRpb25zJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgJiYgcGF5bG9hZC5vcHRpb25zKSByYWRpb0dyb3VwLm9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnM7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIHBheWxvYWQucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkgcmFkaW9Hcm91cC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgX3BheWxvYWQgPSBwYXlsb2FkIGFzIFBhcnRpYWw8RGlzY29yZFJhZGlvR3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlPjtcblxuICAgIGlmIChwcm9wcy52YWx1ZSkgcmFkaW9Hcm91cC52YWx1ZSA9IF9wYXlsb2FkLnZhbHVlID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiByYWRpb0dyb3VwO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1DaGVja2JveEdyb3VwQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDaGVja2JveEdyb3VwQ29tcG9uZW50IHwgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBjaGVja2JveEdyb3VwID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjaGVja2JveEdyb3VwLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjaGVja2JveEdyb3VwLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBjaGVja2JveEdyb3VwLmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAnb3B0aW9ucycgaXQgaXMgdGhlIGNvbXBvbmVudFxuICBpZiAoJ29wdGlvbnMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMub3B0aW9ucyAmJiBwYXlsb2FkLm9wdGlvbnMpIGNoZWNrYm94R3JvdXAub3B0aW9ucyA9IHBheWxvYWQub3B0aW9ucztcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIHBheWxvYWQubWluX3ZhbHVlcyAhPT0gdW5kZWZpbmVkKSBjaGVja2JveEdyb3VwLm1pblZhbHVlcyA9IHBheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIHBheWxvYWQubWF4X3ZhbHVlcyAhPT0gdW5kZWZpbmVkKSBjaGVja2JveEdyb3VwLm1heFZhbHVlcyA9IHBheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMucmVxdWlyZWQgJiYgcGF5bG9hZC5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSBjaGVja2JveEdyb3VwLnJlcXVpcmVkID0gcGF5bG9hZC5yZXF1aXJlZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkQ2hlY2tib3hHcm91cEludGVyYWN0aW9uUmVzcG9uc2U+O1xuXG4gICAgaWYgKHByb3BzLnZhbHVlcyAmJiBfcGF5bG9hZC52YWx1ZXMpIGNoZWNrYm94R3JvdXAudmFsdWVzID0gX3BheWxvYWQudmFsdWVzO1xuICB9XG5cbiAgcmV0dXJuIGNoZWNrYm94R3JvdXA7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNoZWNrYm94Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDaGVja2JveENvbXBvbmVudCB8IERpc2NvcmRDaGVja2JveEludGVyYWN0aW9uUmVzcG9uc2U+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNoZWNrYm94ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjaGVja2JveC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2hlY2tib3guaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGNoZWNrYm94LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgaWYgKHByb3BzLnZhbHVlICYmICd2YWx1ZScgaW4gcGF5bG9hZCkgY2hlY2tib3gudmFsdWUgPSBwYXlsb2FkLnZhbHVlO1xuICBpZiAocHJvcHMuZGVmYXVsdCAmJiAnZGVmYXVsdCcgaW4gcGF5bG9hZCkgY2hlY2tib3guZGVmYXVsdCA9IHBheWxvYWQuZGVmYXVsdDtcblxuICByZXR1cm4gY2hlY2tib3g7XG59XG4iXSwibmFtZXMiOlsiTWVzc2FnZUNvbXBvbmVudFR5cGVzIiwiY2FsbEN1c3RvbWl6ZXIiLCJUb2dnbGVCaXRmaWVsZCIsInRyYW5zZm9ybUNvbXBvbmVudCIsImJvdCIsInBheWxvYWQiLCJleHRyYSIsImNvbXBvbmVudCIsInR5cGUiLCJFcnJvciIsIkFjdGlvblJvdyIsInRyYW5zZm9ybUFjdGlvblJvdyIsIkJ1dHRvbiIsInRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudCIsIkNvbnRhaW5lciIsInRyYW5zZm9ybUNvbnRhaW5lckNvbXBvbmVudCIsIlRleHRJbnB1dCIsInRyYW5zZm9ybUlucHV0VGV4dENvbXBvbmVudCIsIlN0cmluZ1NlbGVjdCIsInRyYW5zZm9ybVN0cmluZ1NlbGVjdE1lbnVDb21wb25lbnQiLCJVc2VyU2VsZWN0IiwidHJhbnNmb3JtVXNlclNlbGVjdE1lbnVDb21wb25lbnQiLCJSb2xlU2VsZWN0IiwidHJhbnNmb3JtUm9sZVNlbGVjdE1lbnVDb21wb25lbnQiLCJNZW50aW9uYWJsZVNlbGVjdCIsInRyYW5zZm9ybU1lbnRpb25hYmxlU2VsZWN0TWVudUNvbXBvbmVudCIsIkNoYW5uZWxTZWxlY3QiLCJ0cmFuc2Zvcm1DaGFubmVsU2VsZWN0TWVudUNvbXBvbmVudCIsIlNlY3Rpb24iLCJ0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50IiwiVGh1bWJuYWlsIiwidHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50IiwiTWVkaWFHYWxsZXJ5IiwidHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50IiwiRmlsZSIsInRyYW5zZm9ybUZpbGVDb21wb25lbnQiLCJTZXBhcmF0b3IiLCJ0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQiLCJUZXh0RGlzcGxheSIsInRyYW5zZm9ybVRleHREaXNwbGF5Q29tcG9uZW50IiwiTGFiZWwiLCJ0cmFuc2Zvcm1MYWJlbENvbXBvbmVudCIsIkZpbGVVcGxvYWQiLCJ0cmFuc2Zvcm1GaWxlVXBsb2FkQ29tcG9uZW50IiwiUmFkaW9Hcm91cCIsInRyYW5zZm9ybVJhZGlvR3JvdXBDb21wb25lbnQiLCJDaGVja2JveEdyb3VwIiwidHJhbnNmb3JtQ2hlY2tib3hHcm91cENvbXBvbmVudCIsIkNoZWNrYm94IiwidHJhbnNmb3JtQ2hlY2tib3hDb21wb25lbnQiLCJwYXJ0aWFsIiwidHJhbnNmb3JtVW5mdXJsZWRNZWRpYUl0ZW0iLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwidW5mdXJsZWRNZWRpYUl0ZW0iLCJtZWRpYUl0ZW0iLCJ1cmwiLCJwcm94eVVybCIsInByb3h5X3VybCIsImhlaWdodCIsIndpZHRoIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclZlcnNpb24iLCJwbGFjZWhvbGRlcl92ZXJzaW9uIiwiY29udGVudFR5cGUiLCJjb250ZW50X3R5cGUiLCJmbGFncyIsImF0dGFjaG1lbnRJZCIsImF0dGFjaG1lbnRfaWQiLCJzbm93Zmxha2UiLCJ0cmFuc2Zvcm1NZWRpYUdhbGxlcnlJdGVtIiwibWVkaWFHYWxsZXJ5SXRlbSIsImdhbGxlcnlJdGVtIiwibWVkaWEiLCJkZXNjcmlwdGlvbiIsInNwb2lsZXIiLCJhY3Rpb25Sb3ciLCJpZCIsImNvbXBvbmVudHMiLCJtYXAiLCJjb250YWluZXIiLCJhY2NlbnRDb2xvciIsImFjY2VudF9jb2xvciIsImJ1dHRvbiIsImxhYmVsIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJzdHlsZSIsImVtb2ppIiwiZGlzYWJsZWQiLCJza3VJZCIsInNrdV9pZCIsImlucHV0IiwidmFsdWUiLCJyZXF1aXJlZCIsIm1pbkxlbmd0aCIsIm1pbl9sZW5ndGgiLCJtYXhMZW5ndGgiLCJtYXhfbGVuZ3RoIiwic2VsZWN0IiwidmFsdWVzIiwiX3BheWxvYWQiLCJtaW5WYWx1ZXMiLCJtaW5fdmFsdWVzIiwibWF4VmFsdWVzIiwibWF4X3ZhbHVlcyIsIm9wdGlvbnMiLCJvcHRpb24iLCJ1bmRlZmluZWQiLCJuYW1lIiwiYW5pbWF0ZWQiLCJkZWZhdWx0IiwicmVzb2x2ZWQiLCJpbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsImRlZmF1bHRWYWx1ZXMiLCJkZWZhdWx0X3ZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsImNoYW5uZWxUeXBlcyIsImNoYW5uZWxfdHlwZXMiLCJzZWN0aW9uIiwiYWNjZXNzb3J5IiwidGh1bWJuYWlsIiwibWVkaWFHYWxsZXJ5IiwiaXRlbXMiLCJpdGVtIiwiZmlsZSIsInNpemUiLCJ0ZXh0RGlzcGxheSIsImNvbnRlbnQiLCJzZXBhcmF0b3IiLCJkaXZpZGVyIiwic3BhY2luZyIsImZpbGVVcGxvYWQiLCJyYWRpb0dyb3VwIiwiY2hlY2tib3hHcm91cCIsImNoZWNrYm94Il0sIm1hcHBpbmdzIjoiQUFBQSxTQXFDRUEscUJBQXFCLFFBQ2hCLG9CQUFvQjtBQUczQixTQUFT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
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkQ2hlY2tib3hDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRDaGVja2JveEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZExhYmVsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRMYWJlbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbSxcbiAgdHlwZSBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lbnRpb25hYmxlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkU2VjdGlvbkNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRTdHJpbmdTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFN0cmluZ1NlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIHR5cGUgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRUZXh0RGlzcGxheUludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dElucHV0SW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIE1lc3NhZ2VDb21wb25lbnRUeXBlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuLi9ib3QuanMnO1xuaW1wb3J0IHR5cGUgeyBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLCBTZXR1cERlc2lyZWRQcm9wcywgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMgfSBmcm9tICcuLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgeyBjYWxsQ3VzdG9taXplciB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy5qcyc7XG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vdG9nZ2xlcy9Ub2dnbGVCaXRmaWVsZC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCwgTWVkaWFHYWxsZXJ5SXRlbSwgVW5mdXJsZWRNZWRpYUl0ZW0gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lc3NhZ2VDb21wb25lbnQgfCBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2U+LFxuICBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSxcbikge1xuICBsZXQgY29tcG9uZW50OiBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICAvLyBUaGVyZSdzIG5vdGhpbmcgdG8gZG8gd2l0aCBhIGNvbXBvbmVudCB3aXRob3V0IGEgdHlwZSwgYXMgaXQgbWVhbnMgYW4gaXNzdWUgb24gRGlzY29yZCwgc28gd2UganVzdCB0aHJvdyBhbiBlcnJvclxuICBpZiAoIXBheWxvYWQudHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgW0Rpc2NvcmRlbm9dIFJlY2VpdmVkIGEgY29tcG9uZW50IHBheWxvYWQgd2l0aG91dCBhIHR5cGUgaW4gdGhlIGNvbXBvbmVudCB0cmFuc2Zvcm1lci5gKTtcbiAgfVxuXG4gIC8vIFRoaXMgc3dpdGNoIGlzIGV4aGF1c3RpdmUsIHNvIHdlIGRvbnQgbmVlZCB0aGUgZGVmYXVsdCBjYXNlIGFuZCBUUyBkb2VzIG5vdCBlcnJvciBvdXQgZm9yIHRoZSB1bi1pbml0aWFsaXplZCBjb21wb25lbnQgdmFyaWFibGVcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ29udGFpbmVyOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlN0cmluZ1NlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVN0cmluZ1NlbGVjdE1lbnVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlVzZXJTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1Vc2VyU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuUm9sZVNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVJvbGVTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZW50aW9uYWJsZVNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybU1lbnRpb25hYmxlU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hhbm5lbFNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoYW5uZWxTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZWN0aW9uOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtU2VjdGlvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGh1bWJuYWlsOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZWRpYUdhbGxlcnk6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkZpbGU6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1GaWxlQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZXBhcmF0b3I6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRleHREaXNwbGF5OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkxhYmVsOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtTGFiZWxDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkZpbGVVcGxvYWQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1GaWxlVXBsb2FkQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5SYWRpb0dyb3VwOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hlY2tib3hHcm91cDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoZWNrYm94R3JvdXBDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoZWNrYm94OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ2hlY2tib3hDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdjb21wb25lbnQnLCBib3QsIHBheWxvYWQsIGNvbXBvbmVudCwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbT4sIGV4dHJhPzogeyBwYXJ0aWFsPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy51bmZ1cmxlZE1lZGlhSXRlbTtcbiAgY29uc3QgbWVkaWFJdGVtID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8VW5mdXJsZWRNZWRpYUl0ZW0sIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBtZWRpYUl0ZW0udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5wcm94eVVybCAmJiBwYXlsb2FkLnByb3h5X3VybCkgbWVkaWFJdGVtLnByb3h5VXJsID0gcGF5bG9hZC5wcm94eV91cmw7XG4gIGlmIChwcm9wcy5oZWlnaHQgJiYgcGF5bG9hZC5oZWlnaHQpIG1lZGlhSXRlbS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDtcbiAgaWYgKHByb3BzLndpZHRoICYmIHBheWxvYWQud2lkdGgpIG1lZGlhSXRlbS53aWR0aCA9IHBheWxvYWQud2lkdGg7XG4gIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBtZWRpYUl0ZW0ucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICBpZiAocHJvcHMucGxhY2Vob2xkZXJWZXJzaW9uICYmIHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbikgbWVkaWFJdGVtLnBsYWNlaG9sZGVyVmVyc2lvbiA9IHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbjtcbiAgaWYgKHByb3BzLmNvbnRlbnRUeXBlICYmIHBheWxvYWQuY29udGVudF90eXBlKSBtZWRpYUl0ZW0uY29udGVudFR5cGUgPSBwYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgaWYgKHByb3BzLmZsYWdzICYmIHBheWxvYWQuZmxhZ3MpIG1lZGlhSXRlbS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKTtcbiAgaWYgKHByb3BzLmF0dGFjaG1lbnRJZCAmJiBwYXlsb2FkLmF0dGFjaG1lbnRfaWQpIG1lZGlhSXRlbS5hdHRhY2htZW50SWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmF0dGFjaG1lbnRfaWQpO1xuXG4gIHJldHVybiBjYWxsQ3VzdG9taXplcigndW5mdXJsZWRNZWRpYUl0ZW0nLCBib3QsIHBheWxvYWQsIG1lZGlhSXRlbSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW0oYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0+LCBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVkaWFHYWxsZXJ5SXRlbTtcbiAgY29uc3QgZ2FsbGVyeUl0ZW0gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxNZWRpYUdhbGxlcnlJdGVtLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIGdhbGxlcnlJdGVtLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgZ2FsbGVyeUl0ZW0uZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGdhbGxlcnlJdGVtLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXI7XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdtZWRpYUdhbGxlcnlJdGVtJywgYm90LCBwYXlsb2FkLCBnYWxsZXJ5SXRlbSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQWN0aW9uUm93KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRBY3Rpb25Sb3c+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGFjdGlvblJvdyA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYWN0aW9uUm93LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBhY3Rpb25Sb3cuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgYWN0aW9uUm93LmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGFjdGlvblJvdztcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDb250YWluZXJDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY29udGFpbmVyLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjb250YWluZXIuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuYWNjZW50Q29sb3IgJiYgcGF5bG9hZC5hY2NlbnRfY29sb3IpIGNvbnRhaW5lci5hY2NlbnRDb2xvciA9IHBheWxvYWQuYWNjZW50X2NvbG9yO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGNvbnRhaW5lci5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgY29udGFpbmVyLmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRCdXR0b25Db21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGJ1dHRvbiA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYnV0dG9uLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBidXR0b24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgYnV0dG9uLmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBidXR0b24uY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcbiAgaWYgKHByb3BzLnN0eWxlICYmIHBheWxvYWQuc3R5bGUpIGJ1dHRvbi5zdHlsZSA9IHBheWxvYWQuc3R5bGU7XG4gIGlmIChwcm9wcy5lbW9qaSAmJiBwYXlsb2FkLmVtb2ppKSBidXR0b24uZW1vamkgPSBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgcGF5bG9hZC5lbW9qaSwgeyBwYXJ0aWFsOiB0cnVlIH0pO1xuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBidXR0b24udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBidXR0b24uZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkO1xuICBpZiAocHJvcHMuc2t1SWQgJiYgcGF5bG9hZC5za3VfaWQpIGJ1dHRvbi5za3VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuc2t1X2lkKTtcblxuICByZXR1cm4gYnV0dG9uO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFRleHRJbnB1dENvbXBvbmVudCB8IERpc2NvcmRUZXh0SW5wdXRJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBpbnB1dCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW5wdXQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGlucHV0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLnZhbHVlICYmIHBheWxvYWQudmFsdWUpIGlucHV0LnZhbHVlID0gcGF5bG9hZC52YWx1ZTtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBpbnB1dC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ3ZhbHVlcycgaXQgaXMgdGhlIGludGVyYWN0aW9uIHJlc3BvbnNlXG4gIGlmICgnc3R5bGUnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuc3R5bGUgJiYgcGF5bG9hZC5zdHlsZSkgaW5wdXQuc3R5bGUgPSBwYXlsb2FkLnN0eWxlO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkKSBpbnB1dC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gICAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGlucHV0LmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgaW5wdXQucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5MZW5ndGggJiYgcGF5bG9hZC5taW5fbGVuZ3RoKSBpbnB1dC5taW5MZW5ndGggPSBwYXlsb2FkLm1pbl9sZW5ndGg7XG4gICAgaWYgKHByb3BzLm1heExlbmd0aCAmJiBwYXlsb2FkLm1heF9sZW5ndGgpIGlucHV0Lm1heExlbmd0aCA9IHBheWxvYWQubWF4X2xlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3RyaW5nU2VsZWN0TWVudUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFN0cmluZ1NlbGVjdENvbXBvbmVudCB8IERpc2NvcmRTdHJpbmdTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkU3RyaW5nU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5vcHRpb25zICYmIF9wYXlsb2FkLm9wdGlvbnMpXG4gICAgICBzZWxlY3Qub3B0aW9ucyA9IF9wYXlsb2FkLm9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24ubGFiZWwsXG4gICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgIGVtb2ppOiBvcHRpb24uZW1vamkgPyBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgb3B0aW9uLmVtb2ppLCB7IHBhcnRpYWw6IHRydWUgfSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGRlZmF1bHQ6IG9wdGlvbi5kZWZhdWx0LFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBfcGF5bG9hZC5kaXNhYmxlZCkgc2VsZWN0LmRpc2FibGVkID0gX3BheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Vc2VyU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkVXNlclNlbGVjdENvbXBvbmVudCB8IERpc2NvcmRVc2VyU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbD4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAndmFsdWVzJyBpdCBpcyB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkVXNlclNlbGVjdENvbXBvbmVudD47XG5cbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgX3BheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IF9wYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gX3BheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgX3BheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IF9wYXlsb2FkLmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUm9sZVNlbGVjdE1lbnVDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFJvbGVTZWxlY3RDb21wb25lbnQgfCBEaXNjb3JkUm9sZVNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWw+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlbGVjdCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VsZWN0LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWxlY3QuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIHNlbGVjdC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ3ZhbHVlcycgaXQgaXMgdGhlIGludGVyYWN0aW9uIHJlc3BvbnNlXG4gIGlmICgndmFsdWVzJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLnZhbHVlcyAmJiBwYXlsb2FkLnZhbHVlcykgc2VsZWN0LnZhbHVlcyA9IHBheWxvYWQudmFsdWVzO1xuICAgIGlmIChwcm9wcy5yZXNvbHZlZCAmJiBwYXlsb2FkLnJlc29sdmVkKSBzZWxlY3QucmVzb2x2ZWQgPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZC5yZXNvbHZlZCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgX3BheWxvYWQgPSBwYXlsb2FkIGFzIFBhcnRpYWw8RGlzY29yZFJvbGVTZWxlY3RDb21wb25lbnQ+O1xuXG4gICAgaWYgKHByb3BzLnBsYWNlaG9sZGVyICYmIF9wYXlsb2FkLnBsYWNlaG9sZGVyKSBzZWxlY3QucGxhY2Vob2xkZXIgPSBfcGF5bG9hZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIF9wYXlsb2FkLm1pbl92YWx1ZXMpIHNlbGVjdC5taW5WYWx1ZXMgPSBfcGF5bG9hZC5taW5fdmFsdWVzO1xuICAgIGlmIChwcm9wcy5tYXhWYWx1ZXMgJiYgX3BheWxvYWQubWF4X3ZhbHVlcykgc2VsZWN0Lm1heFZhbHVlcyA9IF9wYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZXMgJiYgX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMpXG4gICAgICBzZWxlY3QuZGVmYXVsdFZhbHVlcyA9IF9wYXlsb2FkLmRlZmF1bHRfdmFsdWVzLm1hcCgoZGVmYXVsdFZhbHVlKSA9PiAoe1xuICAgICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoZGVmYXVsdFZhbHVlLmlkKSxcbiAgICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIF9wYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBfcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1lbnRpb25hYmxlU2VsZWN0TWVudUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lbnRpb25hYmxlU2VsZWN0Q29tcG9uZW50IHwgRGlzY29yZE1lbnRpb25hYmxlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbD4sXG4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAndmFsdWVzJyBpdCBpcyB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQ+O1xuXG4gICAgaWYgKHByb3BzLnBsYWNlaG9sZGVyICYmIF9wYXlsb2FkLnBsYWNlaG9sZGVyKSBzZWxlY3QucGxhY2Vob2xkZXIgPSBfcGF5bG9hZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIF9wYXlsb2FkLm1pbl92YWx1ZXMpIHNlbGVjdC5taW5WYWx1ZXMgPSBfcGF5bG9hZC5taW5fdmFsdWVzO1xuICAgIGlmIChwcm9wcy5tYXhWYWx1ZXMgJiYgX3BheWxvYWQubWF4X3ZhbHVlcykgc2VsZWN0Lm1heFZhbHVlcyA9IF9wYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZXMgJiYgX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMpXG4gICAgICBzZWxlY3QuZGVmYXVsdFZhbHVlcyA9IF9wYXlsb2FkLmRlZmF1bHRfdmFsdWVzLm1hcCgoZGVmYXVsdFZhbHVlKSA9PiAoe1xuICAgICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoZGVmYXVsdFZhbHVlLmlkKSxcbiAgICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIF9wYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBfcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNoYW5uZWxTZWxlY3RNZW51Q29tcG9uZW50KFxuICBib3Q6IEJvdCxcbiAgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkQ2hhbm5lbFNlbGVjdENvbXBvbmVudCB8IERpc2NvcmRDaGFubmVsU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbD4sXG4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAndmFsdWVzJyBpdCBpcyB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkQ2hhbm5lbFNlbGVjdENvbXBvbmVudD47XG5cbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgX3BheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IF9wYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gX3BheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuY2hhbm5lbFR5cGVzICYmIF9wYXlsb2FkLmNoYW5uZWxfdHlwZXMpIHNlbGVjdC5jaGFubmVsVHlwZXMgPSBfcGF5bG9hZC5jaGFubmVsX3R5cGVzO1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBfcGF5bG9hZC5kaXNhYmxlZCkgc2VsZWN0LmRpc2FibGVkID0gX3BheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRTZWN0aW9uQ29tcG9uZW50Pikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWN0aW9uID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWN0aW9uLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWN0aW9uLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmNvbXBvbmVudHMgJiYgcGF5bG9hZC5jb21wb25lbnRzKSBzZWN0aW9uLmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG4gIGlmIChwcm9wcy5hY2Nlc3NvcnkgJiYgcGF5bG9hZC5hY2Nlc3NvcnkpIHNlY3Rpb24uYWNjZXNzb3J5ID0gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBwYXlsb2FkLmFjY2Vzc29yeSk7XG5cbiAgcmV0dXJuIHNlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVRodW1ibmFpbENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50Pikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCB0aHVtYm5haWwgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHRodW1ibmFpbC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgdGh1bWJuYWlsLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIHRodW1ibmFpbC5tZWRpYSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLm1lZGlhKTtcbiAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIHRodW1ibmFpbC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb247XG4gIGlmIChwcm9wcy5zcG9pbGVyICYmIHBheWxvYWQuc3BvaWxlcikgdGh1bWJuYWlsLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXI7XG5cbiAgcmV0dXJuIHRodW1ibmFpbDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IG1lZGlhR2FsbGVyeSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgbWVkaWFHYWxsZXJ5LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBtZWRpYUdhbGxlcnkuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuaXRlbXMgJiYgcGF5bG9hZC5pdGVtcykgbWVkaWFHYWxsZXJ5Lml0ZW1zID0gcGF5bG9hZC5pdGVtcy5tYXAoKGl0ZW0pID0+IGJvdC50cmFuc2Zvcm1lcnMubWVkaWFHYWxsZXJ5SXRlbShib3QsIGl0ZW0pKTtcblxuICByZXR1cm4gbWVkaWFHYWxsZXJ5O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1GaWxlQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRGaWxlQ29tcG9uZW50Pikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBmaWxlID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBmaWxlLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBmaWxlLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmZpbGUgJiYgcGF5bG9hZC5maWxlKSBmaWxlLmZpbGUgPSBib3QudHJhbnNmb3JtZXJzLnVuZnVybGVkTWVkaWFJdGVtKGJvdCwgcGF5bG9hZC5maWxlKTtcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSBmaWxlLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXI7XG4gIGlmIChwcm9wcy5uYW1lICYmIHBheWxvYWQubmFtZSkgZmlsZS5uYW1lID0gcGF5bG9hZC5uYW1lO1xuICBpZiAocHJvcHMuc2l6ZSAmJiBwYXlsb2FkLnNpemUpIGZpbGUuc2l6ZSA9IHBheWxvYWQuc2l6ZTtcblxuICByZXR1cm4gZmlsZTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50IHwgRGlzY29yZFRleHREaXNwbGF5SW50ZXJhY3Rpb25SZXNwb25zZT4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgdGV4dERpc3BsYXkgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHRleHREaXNwbGF5LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSB0ZXh0RGlzcGxheS5pZCA9IHBheWxvYWQuaWQ7XG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ2NvbnRlbnQnIGl0IGlzIHRoZSBjb21wb25lbnRcbiAgaWYgKCdjb250ZW50JyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLmNvbnRlbnQgJiYgcGF5bG9hZC5jb250ZW50KSB0ZXh0RGlzcGxheS5jb250ZW50ID0gcGF5bG9hZC5jb250ZW50O1xuICB9XG5cbiAgcmV0dXJuIHRleHREaXNwbGF5O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFNlcGFyYXRvckNvbXBvbmVudD4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VwYXJhdG9yID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZXBhcmF0b3IudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlcGFyYXRvci5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5kaXZpZGVyICYmIHBheWxvYWQuZGl2aWRlcikgc2VwYXJhdG9yLmRpdmlkZXIgPSBwYXlsb2FkLmRpdmlkZXI7XG4gIGlmIChwcm9wcy5zcGFjaW5nICYmIHBheWxvYWQuc3BhY2luZykgc2VwYXJhdG9yLnNwYWNpbmcgPSBwYXlsb2FkLnNwYWNpbmc7XG5cbiAgcmV0dXJuIHNlcGFyYXRvcjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTGFiZWxDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZExhYmVsQ29tcG9uZW50IHwgRGlzY29yZExhYmVsSW50ZXJhY3Rpb25SZXNwb25zZT4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgbGFiZWwgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGxhYmVsLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBsYWJlbC5pZCA9IHBheWxvYWQuaWQ7XG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ2xhYmVsJyBpdCBpcyB0aGUgY29tcG9uZW50XG4gIGlmICgnbGFiZWwnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgbGFiZWwubGFiZWwgPSBwYXlsb2FkLmxhYmVsO1xuICAgIGlmIChwcm9wcy5kZXNjcmlwdGlvbiAmJiBwYXlsb2FkLmRlc2NyaXB0aW9uKSBsYWJlbC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb247XG4gIH1cbiAgaWYgKHByb3BzLmNvbXBvbmVudCAmJiBwYXlsb2FkLmNvbXBvbmVudCkgbGFiZWwuY29tcG9uZW50ID0gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBwYXlsb2FkLmNvbXBvbmVudCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1GaWxlVXBsb2FkQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRGaWxlVXBsb2FkQ29tcG9uZW50IHwgRGlzY29yZEZpbGVVcGxvYWRJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBmaWxlVXBsb2FkID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBmaWxlVXBsb2FkLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBmaWxlVXBsb2FkLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBmaWxlVXBsb2FkLmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAndmFsdWVzJyBpdCBpcyB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBmaWxlVXBsb2FkLnZhbHVlcyA9IHBheWxvYWQudmFsdWVzO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRGaWxlVXBsb2FkQ29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgZmlsZVVwbG9hZC5taW5WYWx1ZXMgPSBfcGF5bG9hZC5taW5fdmFsdWVzO1xuICAgIGlmIChwcm9wcy5tYXhWYWx1ZXMgJiYgX3BheWxvYWQubWF4X3ZhbHVlcykgZmlsZVVwbG9hZC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBfcGF5bG9hZC5yZXF1aXJlZCkgZmlsZVVwbG9hZC5yZXF1aXJlZCA9IF9wYXlsb2FkLnJlcXVpcmVkO1xuICAgIGlmIChwcm9wcy5maWxlVHlwZXMgJiYgX3BheWxvYWQuZmlsZV90eXBlcykgZmlsZVVwbG9hZC5maWxlVHlwZXMgPSBfcGF5bG9hZC5maWxlX3R5cGVzO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVVcGxvYWQ7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVJhZGlvR3JvdXBDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFJhZGlvR3JvdXBDb21wb25lbnQgfCBEaXNjb3JkUmFkaW9Hcm91cEludGVyYWN0aW9uUmVzcG9uc2U+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHJhZGlvR3JvdXAgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHJhZGlvR3JvdXAudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHJhZGlvR3JvdXAuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIHJhZGlvR3JvdXAuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICdvcHRpb25zJyBpdCBpcyB0aGUgY29tcG9uZW50XG4gIGlmICgnb3B0aW9ucycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5vcHRpb25zICYmIHBheWxvYWQub3B0aW9ucykgcmFkaW9Hcm91cC5vcHRpb25zID0gcGF5bG9hZC5vcHRpb25zO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHJhZGlvR3JvdXAucmVxdWlyZWQgPSBwYXlsb2FkLnJlcXVpcmVkO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRSYWRpb0dyb3VwSW50ZXJhY3Rpb25SZXNwb25zZT47XG5cbiAgICBpZiAocHJvcHMudmFsdWUpIHJhZGlvR3JvdXAudmFsdWUgPSBfcGF5bG9hZC52YWx1ZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gcmFkaW9Hcm91cDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ2hlY2tib3hHcm91cENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkQ2hlY2tib3hHcm91cENvbXBvbmVudCB8IERpc2NvcmRDaGVja2JveEdyb3VwSW50ZXJhY3Rpb25SZXNwb25zZT4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgY2hlY2tib3hHcm91cCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY2hlY2tib3hHcm91cC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2hlY2tib3hHcm91cC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgY2hlY2tib3hHcm91cC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ29wdGlvbnMnIGl0IGlzIHRoZSBjb21wb25lbnRcbiAgaWYgKCdvcHRpb25zJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgJiYgcGF5bG9hZC5vcHRpb25zKSBjaGVja2JveEdyb3VwLm9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnM7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBwYXlsb2FkLm1pbl92YWx1ZXMgIT09IHVuZGVmaW5lZCkgY2hlY2tib3hHcm91cC5taW5WYWx1ZXMgPSBwYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBwYXlsb2FkLm1heF92YWx1ZXMgIT09IHVuZGVmaW5lZCkgY2hlY2tib3hHcm91cC5tYXhWYWx1ZXMgPSBwYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIHBheWxvYWQucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkgY2hlY2tib3hHcm91cC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgX3BheWxvYWQgPSBwYXlsb2FkIGFzIFBhcnRpYWw8RGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlPjtcblxuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgX3BheWxvYWQudmFsdWVzKSBjaGVja2JveEdyb3VwLnZhbHVlcyA9IF9wYXlsb2FkLnZhbHVlcztcbiAgfVxuXG4gIHJldHVybiBjaGVja2JveEdyb3VwO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1DaGVja2JveENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkQ2hlY2tib3hDb21wb25lbnQgfCBEaXNjb3JkQ2hlY2tib3hJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBjaGVja2JveCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY2hlY2tib3gudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNoZWNrYm94LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBjaGVja2JveC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIGlmIChwcm9wcy52YWx1ZSAmJiAndmFsdWUnIGluIHBheWxvYWQpIGNoZWNrYm94LnZhbHVlID0gcGF5bG9hZC52YWx1ZTtcbiAgaWYgKHByb3BzLmRlZmF1bHQgJiYgJ2RlZmF1bHQnIGluIHBheWxvYWQpIGNoZWNrYm94LmRlZmF1bHQgPSBwYXlsb2FkLmRlZmF1bHQ7XG5cbiAgcmV0dXJuIGNoZWNrYm94O1xufVxuIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb21wb25lbnRUeXBlcyIsImNhbGxDdXN0b21pemVyIiwiVG9nZ2xlQml0ZmllbGQiLCJ0cmFuc2Zvcm1Db21wb25lbnQiLCJib3QiLCJwYXlsb2FkIiwiZXh0cmEiLCJjb21wb25lbnQiLCJ0eXBlIiwiRXJyb3IiLCJBY3Rpb25Sb3ciLCJ0cmFuc2Zvcm1BY3Rpb25Sb3ciLCJCdXR0b24iLCJ0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQiLCJDb250YWluZXIiLCJ0cmFuc2Zvcm1Db250YWluZXJDb21wb25lbnQiLCJUZXh0SW5wdXQiLCJ0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQiLCJTdHJpbmdTZWxlY3QiLCJ0cmFuc2Zvcm1TdHJpbmdTZWxlY3RNZW51Q29tcG9uZW50IiwiVXNlclNlbGVjdCIsInRyYW5zZm9ybVVzZXJTZWxlY3RNZW51Q29tcG9uZW50IiwiUm9sZVNlbGVjdCIsInRyYW5zZm9ybVJvbGVTZWxlY3RNZW51Q29tcG9uZW50IiwiTWVudGlvbmFibGVTZWxlY3QiLCJ0cmFuc2Zvcm1NZW50aW9uYWJsZVNlbGVjdE1lbnVDb21wb25lbnQiLCJDaGFubmVsU2VsZWN0IiwidHJhbnNmb3JtQ2hhbm5lbFNlbGVjdE1lbnVDb21wb25lbnQiLCJTZWN0aW9uIiwidHJhbnNmb3JtU2VjdGlvbkNvbXBvbmVudCIsIlRodW1ibmFpbCIsInRyYW5zZm9ybVRodW1ibmFpbENvbXBvbmVudCIsIk1lZGlhR2FsbGVyeSIsInRyYW5zZm9ybU1lZGlhR2FsbGVyeUNvbXBvbmVudCIsIkZpbGUiLCJ0cmFuc2Zvcm1GaWxlQ29tcG9uZW50IiwiU2VwYXJhdG9yIiwidHJhbnNmb3JtU2VwYXJhdG9yQ29tcG9uZW50IiwiVGV4dERpc3BsYXkiLCJ0cmFuc2Zvcm1UZXh0RGlzcGxheUNvbXBvbmVudCIsIkxhYmVsIiwidHJhbnNmb3JtTGFiZWxDb21wb25lbnQiLCJGaWxlVXBsb2FkIiwidHJhbnNmb3JtRmlsZVVwbG9hZENvbXBvbmVudCIsIlJhZGlvR3JvdXAiLCJ0cmFuc2Zvcm1SYWRpb0dyb3VwQ29tcG9uZW50IiwiQ2hlY2tib3hHcm91cCIsInRyYW5zZm9ybUNoZWNrYm94R3JvdXBDb21wb25lbnQiLCJDaGVja2JveCIsInRyYW5zZm9ybUNoZWNrYm94Q29tcG9uZW50IiwicGFydGlhbCIsInRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsInVuZnVybGVkTWVkaWFJdGVtIiwibWVkaWFJdGVtIiwidXJsIiwicHJveHlVcmwiLCJwcm94eV91cmwiLCJoZWlnaHQiLCJ3aWR0aCIsInBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXJWZXJzaW9uIiwicGxhY2Vob2xkZXJfdmVyc2lvbiIsImNvbnRlbnRUeXBlIiwiY29udGVudF90eXBlIiwiZmxhZ3MiLCJhdHRhY2htZW50SWQiLCJhdHRhY2htZW50X2lkIiwic25vd2ZsYWtlIiwidHJhbnNmb3JtTWVkaWFHYWxsZXJ5SXRlbSIsIm1lZGlhR2FsbGVyeUl0ZW0iLCJnYWxsZXJ5SXRlbSIsIm1lZGlhIiwiZGVzY3JpcHRpb24iLCJzcG9pbGVyIiwiYWN0aW9uUm93IiwiaWQiLCJjb21wb25lbnRzIiwibWFwIiwiY29udGFpbmVyIiwiYWNjZW50Q29sb3IiLCJhY2NlbnRfY29sb3IiLCJidXR0b24iLCJsYWJlbCIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwic3R5bGUiLCJlbW9qaSIsImRpc2FibGVkIiwic2t1SWQiLCJza3VfaWQiLCJpbnB1dCIsInZhbHVlIiwicmVxdWlyZWQiLCJtaW5MZW5ndGgiLCJtaW5fbGVuZ3RoIiwibWF4TGVuZ3RoIiwibWF4X2xlbmd0aCIsInNlbGVjdCIsInZhbHVlcyIsIl9wYXlsb2FkIiwibWluVmFsdWVzIiwibWluX3ZhbHVlcyIsIm1heFZhbHVlcyIsIm1heF92YWx1ZXMiLCJvcHRpb25zIiwib3B0aW9uIiwidW5kZWZpbmVkIiwiZGVmYXVsdCIsInJlc29sdmVkIiwiaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJkZWZhdWx0VmFsdWVzIiwiZGVmYXVsdF92YWx1ZXMiLCJkZWZhdWx0VmFsdWUiLCJjaGFubmVsVHlwZXMiLCJjaGFubmVsX3R5cGVzIiwic2VjdGlvbiIsImFjY2Vzc29yeSIsInRodW1ibmFpbCIsIm1lZGlhR2FsbGVyeSIsIml0ZW1zIiwiaXRlbSIsImZpbGUiLCJuYW1lIiwic2l6ZSIsInRleHREaXNwbGF5IiwiY29udGVudCIsInNlcGFyYXRvciIsImRpdmlkZXIiLCJzcGFjaW5nIiwiZmlsZVVwbG9hZCIsImZpbGVUeXBlcyIsImZpbGVfdHlwZXMiLCJyYWRpb0dyb3VwIiwiY2hlY2tib3hHcm91cCIsImNoZWNrYm94Il0sIm1hcHBpbmdzIjoiQUFBQSxTQXFDRUEscUJBQXFCLFFBQ2hCLG9CQUFvQjtBQUczQixTQUFTQyxjQUFjLFFBQVEscUJBQXFCO0FBQ3BELFNBQVNDLGNBQWMsUUFBUSw4QkFBOEI7QUFHN0QsT0FBTyxTQUFTQyxt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
@@ -1,4 +1,18 @@
1
- import type { DiscordEmbed } from '@discordeno/types';
1
+ import type { DiscordEmbed, DiscordEmbedAuthor, DiscordEmbedFooter, DiscordEmbedImage, DiscordEmbedVideo } from '@discordeno/types';
2
2
  import type { Bot } from '../bot.js';
3
- export declare function transformEmbed(bot: Bot, payload: DiscordEmbed): any;
3
+ export declare function transformEmbed(bot: Bot, payload: Partial<DiscordEmbed>, extra?: {
4
+ partial?: boolean;
5
+ }): any;
6
+ export declare function transformEmbedFooter(bot: Bot, payload: Partial<DiscordEmbedFooter>, extra?: {
7
+ partial?: boolean;
8
+ }): any;
9
+ export declare function transformEmbedImage(bot: Bot, payload: Partial<DiscordEmbedImage>, extra?: {
10
+ partial?: boolean;
11
+ }): any;
12
+ export declare function transformEmbedVideo(bot: Bot, payload: Partial<DiscordEmbedVideo>, extra?: {
13
+ partial?: boolean;
14
+ }): any;
15
+ export declare function transformEmbedAuthor(bot: Bot, payload: Partial<DiscordEmbedAuthor>, extra?: {
16
+ partial?: boolean;
17
+ }): any;
4
18
  //# sourceMappingURL=embed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/transformers/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,OAoE7D"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/transformers/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpI,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAqBrG;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAUjH;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAgB/G;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAgB/G;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAWjH"}
@@ -1,61 +1,73 @@
1
+ import { callCustomizer } from '../transformers.js';
1
2
  import { ToggleBitfield } from './toggles/ToggleBitfield.js';
2
- export function transformEmbed(bot, payload) {
3
- const embed = {
4
- title: payload.title,
5
- type: payload.type,
6
- description: payload.description,
7
- url: payload.url,
8
- timestamp: payload.timestamp ? Date.parse(payload.timestamp) : undefined,
9
- color: payload.color,
10
- footer: payload.footer ? {
11
- text: payload.footer.text,
12
- iconUrl: payload.footer.icon_url,
13
- proxyIconUrl: payload.footer.proxy_icon_url
14
- } : undefined,
15
- image: payload.image ? {
16
- url: payload.image.url,
17
- proxyUrl: payload.image.proxy_url,
18
- height: payload.image.height,
19
- width: payload.image.width,
20
- contentType: payload.image.content_type,
21
- placeholder: payload.image.placeholder,
22
- placeholderVersion: payload.image.placeholder_version,
23
- description: payload.image.description,
24
- flags: payload.image.flags ? new ToggleBitfield(payload.image.flags) : undefined
25
- } : undefined,
26
- thumbnail: payload.thumbnail ? {
27
- url: payload.thumbnail.url,
28
- proxyUrl: payload.thumbnail.proxy_url,
29
- height: payload.thumbnail.height,
30
- width: payload.thumbnail.width,
31
- contentType: payload.thumbnail.content_type,
32
- placeholder: payload.thumbnail.placeholder,
33
- placeholderVersion: payload.thumbnail.placeholder_version,
34
- description: payload.thumbnail.description,
35
- flags: payload.thumbnail.flags ? new ToggleBitfield(payload.thumbnail.flags) : undefined
36
- } : undefined,
37
- video: payload.video ? {
38
- url: payload.video.url,
39
- proxyUrl: payload.video.proxy_url,
40
- height: payload.video.height,
41
- width: payload.video.width,
42
- contentType: payload.video.content_type,
43
- placeholder: payload.video.placeholder,
44
- placeholderVersion: payload.video.placeholder_version,
45
- description: payload.video.description,
46
- flags: payload.video.flags ? new ToggleBitfield(payload.video.flags) : undefined
47
- } : undefined,
48
- provider: payload.provider,
49
- author: payload.author ? {
50
- name: payload.author.name,
51
- url: payload.author.url,
52
- iconUrl: payload.author.icon_url,
53
- proxyIconUrl: payload.author.proxy_icon_url
54
- } : undefined,
55
- fields: payload.fields,
56
- flags: payload.flags ? new ToggleBitfield(payload.flags) : undefined
57
- };
58
- return bot.transformers.customizers.embed(bot, payload, embed);
3
+ export function transformEmbed(bot, payload, extra) {
4
+ const embed = {};
5
+ if (payload.title) embed.title = payload.title;
6
+ if (payload.type) embed.type = payload.type;
7
+ if (payload.description) embed.description = payload.description;
8
+ if (payload.url) embed.url = payload.url;
9
+ if (payload.timestamp) embed.timestamp = Date.parse(payload.timestamp);
10
+ if (payload.color !== undefined) embed.color = payload.color;
11
+ if (payload.footer) embed.footer = bot.transformers.embedFooter(bot, payload.footer);
12
+ if (payload.image) embed.image = bot.transformers.embedImage(bot, payload.image);
13
+ if (payload.thumbnail) embed.thumbnail = bot.transformers.embedImage(bot, payload.thumbnail);
14
+ if (payload.video) embed.video = bot.transformers.embedVideo(bot, payload.video);
15
+ if (payload.provider) embed.provider = payload.provider;
16
+ if (payload.author) embed.author = bot.transformers.embedAuthor(bot, payload.author);
17
+ if (payload.fields) embed.fields = payload.fields;
18
+ if (payload.flags !== undefined) embed.flags = new ToggleBitfield(payload.flags);
19
+ return callCustomizer('embed', bot, payload, embed, {
20
+ partial: extra?.partial ?? false
21
+ });
22
+ }
23
+ export function transformEmbedFooter(bot, payload, extra) {
24
+ const embedFooter = {};
25
+ if (payload.text) embedFooter.text = payload.text;
26
+ if (payload.icon_url) embedFooter.iconUrl = payload.icon_url;
27
+ if (payload.proxy_icon_url) embedFooter.proxyIconUrl = payload.proxy_icon_url;
28
+ return callCustomizer('embedFooter', bot, payload, embedFooter, {
29
+ partial: extra?.partial ?? false
30
+ });
31
+ }
32
+ export function transformEmbedImage(bot, payload, extra) {
33
+ const embedImage = {};
34
+ if (payload.url) embedImage.url = payload.url;
35
+ if (payload.proxy_url) embedImage.proxyUrl = payload.proxy_url;
36
+ if (payload.height !== undefined) embedImage.height = payload.height;
37
+ if (payload.width !== undefined) embedImage.width = payload.width;
38
+ if (payload.content_type) embedImage.contentType = payload.content_type;
39
+ if (payload.placeholder) embedImage.placeholder = payload.placeholder;
40
+ if (payload.placeholder_version) embedImage.placeholderVersion = payload.placeholder_version;
41
+ if (payload.description) embedImage.description = payload.description;
42
+ if (payload.flags !== undefined) embedImage.flags = new ToggleBitfield(payload.flags);
43
+ return callCustomizer('embedImage', bot, payload, embedImage, {
44
+ partial: extra?.partial ?? false
45
+ });
46
+ }
47
+ export function transformEmbedVideo(bot, payload, extra) {
48
+ const embedVideo = {};
49
+ if (payload.url) embedVideo.url = payload.url;
50
+ if (payload.proxy_url) embedVideo.proxyUrl = payload.proxy_url;
51
+ if (payload.height !== undefined) embedVideo.height = payload.height;
52
+ if (payload.width !== undefined) embedVideo.width = payload.width;
53
+ if (payload.content_type) embedVideo.contentType = payload.content_type;
54
+ if (payload.placeholder) embedVideo.placeholder = payload.placeholder;
55
+ if (payload.placeholder_version) embedVideo.placeholderVersion = payload.placeholder_version;
56
+ if (payload.description) embedVideo.description = payload.description;
57
+ if (payload.flags !== undefined) embedVideo.flags = new ToggleBitfield(payload.flags);
58
+ return callCustomizer('embedVideo', bot, payload, embedVideo, {
59
+ partial: extra?.partial ?? false
60
+ });
61
+ }
62
+ export function transformEmbedAuthor(bot, payload, extra) {
63
+ const embedAuthor = {};
64
+ if (payload.name) embedAuthor.name = payload.name;
65
+ if (payload.url) embedAuthor.url = payload.url;
66
+ if (payload.icon_url) embedAuthor.iconUrl = payload.icon_url;
67
+ if (payload.proxy_icon_url) embedAuthor.proxyIconUrl = payload.proxy_icon_url;
68
+ return callCustomizer('embedAuthor', bot, payload, embedAuthor, {
69
+ partial: extra?.partial ?? false
70
+ });
59
71
  }
60
72
 
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZW1iZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkRW1iZWQgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2JvdC5qcyc7XG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vdG9nZ2xlcy9Ub2dnbGVCaXRmaWVsZC5qcyc7XG5pbXBvcnQgdHlwZSB7IEVtYmVkIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1FbWJlZChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEVtYmVkKSB7XG4gIGNvbnN0IGVtYmVkID0ge1xuICAgIHRpdGxlOiBwYXlsb2FkLnRpdGxlLFxuICAgIHR5cGU6IHBheWxvYWQudHlwZSxcbiAgICBkZXNjcmlwdGlvbjogcGF5bG9hZC5kZXNjcmlwdGlvbixcbiAgICB1cmw6IHBheWxvYWQudXJsLFxuICAgIHRpbWVzdGFtcDogcGF5bG9hZC50aW1lc3RhbXAgPyBEYXRlLnBhcnNlKHBheWxvYWQudGltZXN0YW1wKSA6IHVuZGVmaW5lZCxcbiAgICBjb2xvcjogcGF5bG9hZC5jb2xvcixcbiAgICBmb290ZXI6IHBheWxvYWQuZm9vdGVyXG4gICAgICA/IHtcbiAgICAgICAgICB0ZXh0OiBwYXlsb2FkLmZvb3Rlci50ZXh0LFxuICAgICAgICAgIGljb25Vcmw6IHBheWxvYWQuZm9vdGVyLmljb25fdXJsLFxuICAgICAgICAgIHByb3h5SWNvblVybDogcGF5bG9hZC5mb290ZXIucHJveHlfaWNvbl91cmwsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGltYWdlOiBwYXlsb2FkLmltYWdlXG4gICAgICA/IHtcbiAgICAgICAgICB1cmw6IHBheWxvYWQuaW1hZ2UudXJsLFxuICAgICAgICAgIHByb3h5VXJsOiBwYXlsb2FkLmltYWdlLnByb3h5X3VybCxcbiAgICAgICAgICBoZWlnaHQ6IHBheWxvYWQuaW1hZ2UuaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiBwYXlsb2FkLmltYWdlLndpZHRoLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiBwYXlsb2FkLmltYWdlLmNvbnRlbnRfdHlwZSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogcGF5bG9hZC5pbWFnZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICBwbGFjZWhvbGRlclZlcnNpb246IHBheWxvYWQuaW1hZ2UucGxhY2Vob2xkZXJfdmVyc2lvbixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGF5bG9hZC5pbWFnZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBmbGFnczogcGF5bG9hZC5pbWFnZS5mbGFncyA/IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmltYWdlLmZsYWdzKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgdGh1bWJuYWlsOiBwYXlsb2FkLnRodW1ibmFpbFxuICAgICAgPyB7XG4gICAgICAgICAgdXJsOiBwYXlsb2FkLnRodW1ibmFpbC51cmwsXG4gICAgICAgICAgcHJveHlVcmw6IHBheWxvYWQudGh1bWJuYWlsLnByb3h5X3VybCxcbiAgICAgICAgICBoZWlnaHQ6IHBheWxvYWQudGh1bWJuYWlsLmhlaWdodCxcbiAgICAgICAgICB3aWR0aDogcGF5bG9hZC50aHVtYm5haWwud2lkdGgsXG4gICAgICAgICAgY29udGVudFR5cGU6IHBheWxvYWQudGh1bWJuYWlsLmNvbnRlbnRfdHlwZSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogcGF5bG9hZC50aHVtYm5haWwucGxhY2Vob2xkZXIsXG4gICAgICAgICAgcGxhY2Vob2xkZXJWZXJzaW9uOiBwYXlsb2FkLnRodW1ibmFpbC5wbGFjZWhvbGRlcl92ZXJzaW9uLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwYXlsb2FkLnRodW1ibmFpbC5kZXNjcmlwdGlvbixcbiAgICAgICAgICBmbGFnczogcGF5bG9hZC50aHVtYm5haWwuZmxhZ3MgPyBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC50aHVtYm5haWwuZmxhZ3MpIDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICB2aWRlbzogcGF5bG9hZC52aWRlb1xuICAgICAgPyB7XG4gICAgICAgICAgdXJsOiBwYXlsb2FkLnZpZGVvLnVybCxcbiAgICAgICAgICBwcm94eVVybDogcGF5bG9hZC52aWRlby5wcm94eV91cmwsXG4gICAgICAgICAgaGVpZ2h0OiBwYXlsb2FkLnZpZGVvLmhlaWdodCxcbiAgICAgICAgICB3aWR0aDogcGF5bG9hZC52aWRlby53aWR0aCxcbiAgICAgICAgICBjb250ZW50VHlwZTogcGF5bG9hZC52aWRlby5jb250ZW50X3R5cGUsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IHBheWxvYWQudmlkZW8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgcGxhY2Vob2xkZXJWZXJzaW9uOiBwYXlsb2FkLnZpZGVvLnBsYWNlaG9sZGVyX3ZlcnNpb24sXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBheWxvYWQudmlkZW8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgZmxhZ3M6IHBheWxvYWQudmlkZW8uZmxhZ3MgPyBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC52aWRlby5mbGFncykgOiB1bmRlZmluZWQsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIHByb3ZpZGVyOiBwYXlsb2FkLnByb3ZpZGVyLFxuICAgIGF1dGhvcjogcGF5bG9hZC5hdXRob3JcbiAgICAgID8ge1xuICAgICAgICAgIG5hbWU6IHBheWxvYWQuYXV0aG9yLm5hbWUsXG4gICAgICAgICAgdXJsOiBwYXlsb2FkLmF1dGhvci51cmwsXG4gICAgICAgICAgaWNvblVybDogcGF5bG9hZC5hdXRob3IuaWNvbl91cmwsXG4gICAgICAgICAgcHJveHlJY29uVXJsOiBwYXlsb2FkLmF1dGhvci5wcm94eV9pY29uX3VybCxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgZmllbGRzOiBwYXlsb2FkLmZpZWxkcyxcbiAgICBmbGFnczogcGF5bG9hZC5mbGFncyA/IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKSA6IHVuZGVmaW5lZCxcbiAgfSBhcyBFbWJlZDtcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5lbWJlZChib3QsIHBheWxvYWQsIGVtYmVkKTtcbn1cbiJdLCJuYW1lcyI6WyJUb2dnbGVCaXRmaWVsZCIsInRyYW5zZm9ybUVtYmVkIiwiYm90IiwicGF5bG9hZCIsImVtYmVkIiwidGl0bGUiLCJ0eXBlIiwiZGVzY3JpcHRpb24iLCJ1cmwiLCJ0aW1lc3RhbXAiLCJEYXRlIiwicGFyc2UiLCJ1bmRlZmluZWQiLCJjb2xvciIsImZvb3RlciIsInRleHQiLCJpY29uVXJsIiwiaWNvbl91cmwiLCJwcm94eUljb25VcmwiLCJwcm94eV9pY29uX3VybCIsImltYWdlIiwicHJveHlVcmwiLCJwcm94eV91cmwiLCJoZWlnaHQiLCJ3aWR0aCIsImNvbnRlbnRUeXBlIiwiY29udGVudF90eXBlIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclZlcnNpb24iLCJwbGFjZWhvbGRlcl92ZXJzaW9uIiwiZmxhZ3MiLCJ0aHVtYm5haWwiLCJ2aWRlbyIsInByb3ZpZGVyIiwiYXV0aG9yIiwibmFtZSIsImZpZWxkcyIsInRyYW5zZm9ybWVycyIsImN1c3RvbWl6ZXJzIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxjQUFjLFFBQVEsOEJBQThCO0FBRzdELE9BQU8sU0FBU0MsZUFBZUMsR0FBUSxFQUFFQyxPQUFxQjtJQUM1RCxNQUFNQyxRQUFRO1FBQ1pDLE9BQU9GLFFBQVFFLEtBQUs7UUFDcEJDLE1BQU1ILFFBQVFHLElBQUk7UUFDbEJDLGFBQWFKLFFBQVFJLFdBQVc7UUFDaENDLEtBQUtMLFFBQVFLLEdBQUc7UUFDaEJDLFdBQVdOLFFBQVFNLFNB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
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZW1iZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkRW1iZWQsIERpc2NvcmRFbWJlZEF1dGhvciwgRGlzY29yZEVtYmVkRm9vdGVyLCBEaXNjb3JkRW1iZWRJbWFnZSwgRGlzY29yZEVtYmVkVmlkZW8gfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2JvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IsIFNldHVwRGVzaXJlZFByb3BzLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyB9IGZyb20gJy4uL2Rlc2lyZWRQcm9wZXJ0aWVzLmpzJztcbmltcG9ydCB7IGNhbGxDdXN0b21pemVyIH0gZnJvbSAnLi4vdHJhbnNmb3JtZXJzLmpzJztcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi90b2dnbGVzL1RvZ2dsZUJpdGZpZWxkLmpzJztcbmltcG9ydCB0eXBlIHsgRW1iZWQsIEVtYmVkQXV0aG9yLCBFbWJlZEZvb3RlciwgRW1iZWRJbWFnZSwgRW1iZWRWaWRlbyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRW1iZWQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEVtYmVkPiwgZXh0cmE/OiB7IHBhcnRpYWw/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgZW1iZWQgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxFbWJlZCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwYXlsb2FkLnRpdGxlKSBlbWJlZC50aXRsZSA9IHBheWxvYWQudGl0bGU7XG4gIGlmIChwYXlsb2FkLnR5cGUpIGVtYmVkLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwYXlsb2FkLmRlc2NyaXB0aW9uKSBlbWJlZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb247XG4gIGlmIChwYXlsb2FkLnVybCkgZW1iZWQudXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwYXlsb2FkLnRpbWVzdGFtcCkgZW1iZWQudGltZXN0YW1wID0gRGF0ZS5wYXJzZShwYXlsb2FkLnRpbWVzdGFtcCk7XG4gIGlmIChwYXlsb2FkLmNvbG9yICE9PSB1bmRlZmluZWQpIGVtYmVkLmNvbG9yID0gcGF5bG9hZC5jb2xvcjtcbiAgaWYgKHBheWxvYWQuZm9vdGVyKSBlbWJlZC5mb290ZXIgPSBib3QudHJhbnNmb3JtZXJzLmVtYmVkRm9vdGVyKGJvdCwgcGF5bG9hZC5mb290ZXIpO1xuICBpZiAocGF5bG9hZC5pbWFnZSkgZW1iZWQuaW1hZ2UgPSBib3QudHJhbnNmb3JtZXJzLmVtYmVkSW1hZ2UoYm90LCBwYXlsb2FkLmltYWdlKTtcbiAgaWYgKHBheWxvYWQudGh1bWJuYWlsKSBlbWJlZC50aHVtYm5haWwgPSBib3QudHJhbnNmb3JtZXJzLmVtYmVkSW1hZ2UoYm90LCBwYXlsb2FkLnRodW1ibmFpbCk7XG4gIGlmIChwYXlsb2FkLnZpZGVvKSBlbWJlZC52aWRlbyA9IGJvdC50cmFuc2Zvcm1lcnMuZW1iZWRWaWRlbyhib3QsIHBheWxvYWQudmlkZW8pO1xuICBpZiAocGF5bG9hZC5wcm92aWRlcikgZW1iZWQucHJvdmlkZXIgPSBwYXlsb2FkLnByb3ZpZGVyO1xuICBpZiAocGF5bG9hZC5hdXRob3IpIGVtYmVkLmF1dGhvciA9IGJvdC50cmFuc2Zvcm1lcnMuZW1iZWRBdXRob3IoYm90LCBwYXlsb2FkLmF1dGhvcik7XG4gIGlmIChwYXlsb2FkLmZpZWxkcykgZW1iZWQuZmllbGRzID0gcGF5bG9hZC5maWVsZHM7XG4gIGlmIChwYXlsb2FkLmZsYWdzICE9PSB1bmRlZmluZWQpIGVtYmVkLmZsYWdzID0gbmV3IFRvZ2dsZUJpdGZpZWxkKHBheWxvYWQuZmxhZ3MpO1xuXG4gIHJldHVybiBjYWxsQ3VzdG9taXplcignZW1iZWQnLCBib3QsIHBheWxvYWQsIGVtYmVkLCB7XG4gICAgcGFydGlhbDogZXh0cmE/LnBhcnRpYWwgPz8gZmFsc2UsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRW1iZWRGb290ZXIoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEVtYmVkRm9vdGVyPiwgZXh0cmE/OiB7IHBhcnRpYWw/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgZW1iZWRGb290ZXIgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxFbWJlZEZvb3RlciwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwYXlsb2FkLnRleHQpIGVtYmVkRm9vdGVyLnRleHQgPSBwYXlsb2FkLnRleHQ7XG4gIGlmIChwYXlsb2FkLmljb25fdXJsKSBlbWJlZEZvb3Rlci5pY29uVXJsID0gcGF5bG9hZC5pY29uX3VybDtcbiAgaWYgKHBheWxvYWQucHJveHlfaWNvbl91cmwpIGVtYmVkRm9vdGVyLnByb3h5SWNvblVybCA9IHBheWxvYWQucHJveHlfaWNvbl91cmw7XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdlbWJlZEZvb3RlcicsIGJvdCwgcGF5bG9hZCwgZW1iZWRGb290ZXIsIHtcbiAgICBwYXJ0aWFsOiBleHRyYT8ucGFydGlhbCA/PyBmYWxzZSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1FbWJlZEltYWdlKGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRFbWJlZEltYWdlPiwgZXh0cmE/OiB7IHBhcnRpYWw/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgZW1iZWRJbWFnZSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPEVtYmVkSW1hZ2UsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocGF5bG9hZC51cmwpIGVtYmVkSW1hZ2UudXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwYXlsb2FkLnByb3h5X3VybCkgZW1iZWRJbWFnZS5wcm94eVVybCA9IHBheWxvYWQucHJveHlfdXJsO1xuICBpZiAocGF5bG9hZC5oZWlnaHQgIT09IHVuZGVmaW5lZCkgZW1iZWRJbWFnZS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDtcbiAgaWYgKHBheWxvYWQud2lkdGggIT09IHVuZGVmaW5lZCkgZW1iZWRJbWFnZS53aWR0aCA9IHBheWxvYWQud2lkdGg7XG4gIGlmIChwYXlsb2FkLmNvbnRlbnRfdHlwZSkgZW1iZWRJbWFnZS5jb250ZW50VHlwZSA9IHBheWxvYWQuY29udGVudF90eXBlO1xuICBpZiAocGF5bG9hZC5wbGFjZWhvbGRlcikgZW1iZWRJbWFnZS5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXI7XG4gIGlmIChwYXlsb2FkLnBsYWNlaG9sZGVyX3ZlcnNpb24pIGVtYmVkSW1hZ2UucGxhY2Vob2xkZXJWZXJzaW9uID0gcGF5bG9hZC5wbGFjZWhvbGRlcl92ZXJzaW9uO1xuICBpZiAocGF5bG9hZC5kZXNjcmlwdGlvbikgZW1iZWRJbWFnZS5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb247XG4gIGlmIChwYXlsb2FkLmZsYWdzICE9PSB1bmRlZmluZWQpIGVtYmVkSW1hZ2UuZmxhZ3MgPSBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC5mbGFncyk7XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdlbWJlZEltYWdlJywgYm90LCBwYXlsb2FkLCBlbWJlZEltYWdlLCB7XG4gICAgcGFydGlhbDogZXh0cmE/LnBhcnRpYWwgPz8gZmFsc2UsXG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUVtYmVkVmlkZW8oYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEVtYmVkVmlkZW8+LCBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSkge1xuICBjb25zdCBlbWJlZFZpZGVvID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8RW1iZWRWaWRlbywgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwYXlsb2FkLnVybCkgZW1iZWRWaWRlby51cmwgPSBwYXlsb2FkLnVybDtcbiAgaWYgKHBheWxvYWQucHJveHlfdXJsKSBlbWJlZFZpZGVvLnByb3h5VXJsID0gcGF5bG9hZC5wcm94eV91cmw7XG4gIGlmIChwYXlsb2FkLmhlaWdodCAhPT0gdW5kZWZpbmVkKSBlbWJlZFZpZGVvLmhlaWdodCA9IHBheWxvYWQuaGVpZ2h0O1xuICBpZiAocGF5bG9hZC53aWR0aCAhPT0gdW5kZWZpbmVkKSBlbWJlZFZpZGVvLndpZHRoID0gcGF5bG9hZC53aWR0aDtcbiAgaWYgKHBheWxvYWQuY29udGVudF90eXBlKSBlbWJlZFZpZGVvLmNvbnRlbnRUeXBlID0gcGF5bG9hZC5jb250ZW50X3R5cGU7XG4gIGlmIChwYXlsb2FkLnBsYWNlaG9sZGVyKSBlbWJlZFZpZGVvLnBsYWNlaG9sZGVyID0gcGF5bG9hZC5wbGFjZWhvbGRlcjtcbiAgaWYgKHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbikgZW1iZWRWaWRlby5wbGFjZWhvbGRlclZlcnNpb24gPSBwYXlsb2FkLnBsYWNlaG9sZGVyX3ZlcnNpb247XG4gIGlmIChwYXlsb2FkLmRlc2NyaXB0aW9uKSBlbWJlZFZpZGVvLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgaWYgKHBheWxvYWQuZmxhZ3MgIT09IHVuZGVmaW5lZCkgZW1iZWRWaWRlby5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKTtcblxuICByZXR1cm4gY2FsbEN1c3RvbWl6ZXIoJ2VtYmVkVmlkZW8nLCBib3QsIHBheWxvYWQsIGVtYmVkVmlkZW8sIHtcbiAgICBwYXJ0aWFsOiBleHRyYT8ucGFydGlhbCA/PyBmYWxzZSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1FbWJlZEF1dGhvcihib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkRW1iZWRBdXRob3I+LCBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSkge1xuICBjb25zdCBlbWJlZEF1dGhvciA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPEVtYmVkQXV0aG9yLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHBheWxvYWQubmFtZSkgZW1iZWRBdXRob3IubmFtZSA9IHBheWxvYWQubmFtZTtcbiAgaWYgKHBheWxvYWQudXJsKSBlbWJlZEF1dGhvci51cmwgPSBwYXlsb2FkLnVybDtcbiAgaWYgKHBheWxvYWQuaWNvbl91cmwpIGVtYmVkQXV0aG9yLmljb25VcmwgPSBwYXlsb2FkLmljb25fdXJsO1xuICBpZiAocGF5bG9hZC5wcm94eV9pY29uX3VybCkgZW1iZWRBdXRob3IucHJveHlJY29uVXJsID0gcGF5bG9hZC5wcm94eV9pY29uX3VybDtcblxuICByZXR1cm4gY2FsbEN1c3RvbWl6ZXIoJ2VtYmVkQXV0aG9yJywgYm90LCBwYXlsb2FkLCBlbWJlZEF1dGhvciwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjYWxsQ3VzdG9taXplciIsIlRvZ2dsZUJpdGZpZWxkIiwidHJhbnNmb3JtRW1iZWQiLCJib3QiLCJwYXlsb2FkIiwiZXh0cmEiLCJlbWJlZCIsInRpdGxlIiwidHlwZSIsImRlc2NyaXB0aW9uIiwidXJsIiwidGltZXN0YW1wIiwiRGF0ZSIsInBhcnNlIiwiY29sb3IiLCJ1bmRlZmluZWQiLCJmb290ZXIiLCJ0cmFuc2Zvcm1lcnMiLCJlbWJlZEZvb3RlciIsImltYWdlIiwiZW1iZWRJbWFnZSIsInRodW1ibmFpbCIsInZpZGVvIiwiZW1iZWRWaWRlbyIsInByb3ZpZGVyIiwiYXV0aG9yIiwiZW1iZWRBdXRob3IiLCJmaWVsZHMiLCJmbGFncyIsInBhcnRpYWwiLCJ0cmFuc2Zvcm1FbWJlZEZvb3RlciIsInRleHQiLCJpY29uX3VybCIsImljb25VcmwiLCJwcm94eV9pY29uX3VybCIsInByb3h5SWNvblVybCIsInRyYW5zZm9ybUVtYmVkSW1hZ2UiLCJwcm94eV91cmwiLCJwcm94eVVybCIsImhlaWdodCIsIndpZHRoIiwiY29udGVudF90eXBlIiwiY29udGVudFR5cGUiLCJwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyX3ZlcnNpb24iLCJwbGFjZWhvbGRlclZlcnNpb24iLCJ0cmFuc2Zvcm1FbWJlZFZpZGVvIiwidHJhbnNmb3JtRW1iZWRBdXRob3IiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFHQSxTQUFTQSxjQUFjLFFBQVEscUJBQXFCO0FBQ3BELFNBQVNDLGNBQWMsUUFBUSw4QkFBOEI7QUFHN0QsT0FBTyxTQUFTQyxlQUFlQyxHQUFRLEVBQUVDLE9BQThCLEVBQUVDLEtBQTZCO0lBQ3BHLE1BQU1DLFFBQVEsQ0FBQztJQUVmLElBQUlGLFFBQVFHLEtBQUssRUFBRUQsTUFBTUMsS0FBSyxHQUFHSCxRQUFRRyxLQUFLO0lBQzlDLElBQUlILFFBQVFJLElBQUksRUFBRUYsTUFBTUUsSUFBSSxHQUFHSixRQUFRSSxJQUFJO0lBQzNDLElBQUlKLFFBQVFLLFdBQVcsRUFBRUgsTUFBTUcsV0FBVyxHQUFHTCxRQUFRSyxXQUFXO0lBQ2hFLElBQUlMLFFBQVFNLEdBQUcsRUFBRUosTUFBTUksR0FBRyxHQUFHTixRQUFRTSxHQUFHO0lBQ3hDLElBQUlOLFFBQVFPLFNBQVMsRUFBRUwsTUFBTUssU0FBUyxHQUFHQyxLQUFLQyxLQUFLLENBQUNULFFBQVFPLFNBQVM7SUFDckUsSUFBSVAsUUFBUVUsS0FBSyxLQUFLQyxXQUFXVCxNQUFNUSxLQUFLLEdBQUdWLFFBQVFVLEtBQUs7SUFDNUQsSUFBSVYsUUFBUVksTUFBTSxFQUFFVixNQUFNVSxNQUFNLEdB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
@@ -38,4 +38,4 @@ export function transformDefaultReactionEmoji(bot, payload, extra) {
38
38
  });
39
39
  }
40
40
 
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZW1vamkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkRGVmYXVsdFJlYWN0aW9uRW1vamksIERpc2NvcmRFbW9qaSB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgQm90IH0gZnJvbSAnLi4vYm90LmpzJztcbmltcG9ydCB0eXBlIHsgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciwgU2V0dXBEZXNpcmVkUHJvcHMsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vZGVzaXJlZFByb3BlcnRpZXMuanMnO1xuaW1wb3J0IHsgY2FsbEN1c3RvbWl6ZXIgfSBmcm9tICcuLi90cmFuc2Zvcm1lcnMuanMnO1xuaW1wb3J0IHsgRW1vamlUb2dnbGVzIH0gZnJvbSAnLi90b2dnbGVzL2Vtb2ppLmpzJztcbmltcG9ydCB0eXBlIHsgRGVmYXVsdFJlYWN0aW9uRW1vamksIEVtb2ppIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBiYXNlRW1vamk6IEVtb2ppID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEVtb2ppKSxcblxuICBnZXQgYW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlcz8uYW5pbWF0ZWQ7XG4gIH0sXG4gIGdldCByZXF1aXJlQ29sb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZXM/LnJlcXVpcmVDb2xvbnM7XG4gIH0sXG4gIGdldCBtYW5hZ2VkKCkge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZXM/Lm1hbmFnZWQ7XG4gIH0sXG4gIGdldCBhdmFpbGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlcy5hdmFpbGFibGU7XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRW1vamkoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEVtb2ppPiwgZXh0cmE/OiB7IHBhcnRpYWw/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmVtb2ppO1xuICBjb25zdCBlbW9qaSA9IE9iamVjdC5jcmVhdGUoYmFzZUVtb2ppKSBhcyBTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBlbW9qaS5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpO1xuICBpZiAocHJvcHMubmFtZSAmJiBwYXlsb2FkLm5hbWUpIGVtb2ppLm5hbWUgPSBwYXlsb2FkLm5hbWU7XG4gIGlmIChwcm9wcy5yb2xlcyAmJiBwYXlsb2FkLnJvbGVzKSBlbW9qaS5yb2xlcyA9IHBheWxvYWQucm9sZXMubWFwKChpZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKTtcbiAgaWYgKHByb3BzLnVzZXIgJiYgcGF5bG9hZC51c2VyKSBlbW9qaS51c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC51c2VyKTtcblxuICBlbW9qaS50b2dnbGVzID0gbmV3IEVtb2ppVG9nZ2xlcyhwYXlsb2FkKTtcblxuICByZXR1cm4gY2FsbEN1c3RvbWl6ZXIoJ2Vtb2ppJywgYm90LCBwYXlsb2FkLCBlbW9qaSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURlZmF1bHRSZWFjdGlvbkVtb2ppKGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmREZWZhdWx0UmVhY3Rpb25FbW9qaT4sIGV4dHJhPzogeyBwYXJ0aWFsPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5kZWZhdWx0UmVhY3Rpb25FbW9qaTtcbiAgY29uc3QgZGVmYXVsdFJlYWN0aW9uRW1vamkgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxEZWZhdWx0UmVhY3Rpb25FbW9qaSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy5lbW9qaUlkICYmIHBheWxvYWQuZW1vamlfaWQpIGRlZmF1bHRSZWFjdGlvbkVtb2ppLmVtb2ppSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmVtb2ppX2lkKTtcbiAgaWYgKHByb3BzLmVtb2ppTmFtZSAmJiBwYXlsb2FkLmVtb2ppX25hbWUpIGRlZmF1bHRSZWFjdGlvbkVtb2ppLmVtb2ppTmFtZSA9IHBheWxvYWQuZW1vamlfbmFtZTtcblxuICByZXR1cm4gY2FsbEN1c3RvbWl6ZXIoJ2RlZmF1bHRSZWFjdGlvbkVtb2ppJywgYm90LCBwYXlsb2FkLCBkZWZhdWx0UmVhY3Rpb25FbW9qaSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjYWxsQ3VzdG9taXplciIsIkVtb2ppVG9nZ2xlcyIsImJhc2VFbW9qaSIsInVuZGVmaW5lZCIsImFuaW1hdGVkIiwidG9nZ2xlcyIsInJlcXVpcmVDb2xvbnMiLCJtYW5hZ2VkIiwiYXZhaWxhYmxlIiwidHJhbnNmb3JtRW1vamkiLCJib3QiLCJwYXlsb2FkIiwiZXh0cmEiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiZW1vamkiLCJPYmplY3QiLCJjcmVhdGUiLCJpZCIsInNub3dmbGFrZSIsIm5hbWUiLCJyb2xlcyIsIm1hcCIsInVzZXIiLCJwYXJ0aWFsIiwidHJhbnNmb3JtRGVmYXVsdFJlYWN0aW9uRW1vamkiLCJkZWZhdWx0UmVhY3Rpb25FbW9qaSIsImVtb2ppSWQiLCJlbW9qaV9pZCIsImVtb2ppTmFtZSIsImVtb2ppX25hbWUiXSwibWFwcGluZ3MiOiJBQUdBLFNBQVNBLGNBQWMsUUFBUSxxQkFBcUI7QUFDcEQsU0FBU0MsWUFBWSxRQUFRLHFCQUFxQjtBQUdsRCxPQUFPLE1BQU1DLFlBQW1CO0lBQzlCLDJFQUEyRTtJQUMzRSxHQUFJQyxTQUFTO0lBRWIsSUFBSUMsWUFBVztRQUNiLE9BQU8sSUFBSSxDQUFDQyxPQUFPLEVBQUVEO0lBQ3ZCO0lBQ0EsSUFBSUUsaUJBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDRCxPQUFPLEVBQUVDO0lBQ3ZCO0lBQ0EsSUFBSUMsV0FBVTtRQUNaLE9BQU8sSUFBSSxDQUFDRixPQUFPLEVBQUVFO0lBQ3ZCO0lBQ0EsSUFBSUMsYUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDSCxPQUFPLENBQUNHLFNBQVM7SUFDL0I7QUFDRixFQUFFO0FBRUYsT0FBTyxTQUFTQyxlQUFlQyxHQUFRLEVBQUVDLE9BQThCLEVBQUVDLEtBQTZCO0lBQ3BHLE1BQU1DLFFBQVFILElBQUlJLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQUs7SUFDdEQsTUFBTUEsUUFBUUMsT0FBT0MsTUFBTSxDQUFDaEI7SUFFNUIsSUFBSVcsTUFBTU0sRUFBRSxJQUFJUixRQUFRUSxFQUFFLEVBQUVILE1BQU1HLEVBQUUsR0FBR1QsSUFBSUksWUFBWSxDQUFDTSxTQUFTLENBQUNULFFBQVFRLEVBQUU7SUFDNUUsSUFBSU4sTUFBTVEsSUFBSSxJQUFJVixRQUFRVSxJQUFJLEVBQUVMLE1BQU1LLElBQUksR0FBR1YsUUFBUVUsSUFBSTtJQUN6RCxJQUFJUixNQUFNUyxLQUFLLElBQUlYLFFBQVFXLEtBQUssRUFBRU4sTUFBTU0sS0FBSyxHQUFHWCxRQUFRVyxLQUFLLENBQUNDLEdBQUcsQ0FBQyxDQUFDSixLQUFPVCxJQUFJSSxZQUFZLENBQUNNLFNBQVMsQ0FBQ0Q7SUFDckcsSUFBSU4sTUFBTVcsSUFBSSxJQUFJYixRQUFRYSxJQUFJLEVBQUVSLE1BQU1RLElBQUksR0FBR2QsSUFBSUksWUFBWSxDQUFDVSxJQUFJLENBQUNkLEtBQUtDLFFBQVFhLElBQUk7SUFFcEZSLE1BQU1YLE9BQU8sR0FBRyxJQUFJSixhQUFhVTtJQUVqQyxPQUFPWCxlQUFlLFNBQVNVLEtBQUtDLFNBQVNLLE9BQU87UUFDbERTLFNBQVNiLE9BQU9hLFdBQVc7SUFDN0I7QUFDRjtBQUVBLE9BQU8sU0FBU0MsOEJBQThCaEIsR0FBUSxFQUFFQyxPQUE2QyxFQUFFQyxLQUE2QjtJQUNsSSxNQUFNQyxRQUFRSCxJQUFJSSxZQUFZLENBQUNDLGlCQUFpQixDQUFDWSxvQkFBb0I7SUFDckUsTUFBTUEsdUJBQXVCLENBQUM7SUFFOUIsSUFBSWQsTUFBTWUsT0FBTyxJQUFJakIsUUFBUWtCLFFBQVEsRUFBRUYscUJBQXFCQyxPQUFPLEdBQUdsQixJQUFJSSxZQUFZLENBQUNNLFNBQVMsQ0FBQ1QsUUFBUWtCLFFBQVE7SUFDakgsSUFBSWhCLE1BQU1pQixTQUFTLElBQUluQixRQUFRb0IsVUFBVSxFQUFFSixxQkFBcUJHLFNBQVMsR0FBR25CLFFBQVFvQixVQUFVO0lBRTlGLE9BQU8vQixlQUFlLHdCQUF3QlUsS0FBS0MsU0FBU2dCLHNCQUFzQjtRQUNoRkYsU0FBU2IsT0FBT2EsV0FBVztJQUM3QjtBQUNGIn0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZW1vamkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkRGVmYXVsdFJlYWN0aW9uRW1vamksIERpc2NvcmRFbW9qaSB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgQm90IH0gZnJvbSAnLi4vYm90LmpzJztcbmltcG9ydCB0eXBlIHsgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciwgU2V0dXBEZXNpcmVkUHJvcHMsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vZGVzaXJlZFByb3BlcnRpZXMuanMnO1xuaW1wb3J0IHsgY2FsbEN1c3RvbWl6ZXIgfSBmcm9tICcuLi90cmFuc2Zvcm1lcnMuanMnO1xuaW1wb3J0IHsgRW1vamlUb2dnbGVzIH0gZnJvbSAnLi90b2dnbGVzL2Vtb2ppLmpzJztcbmltcG9ydCB0eXBlIHsgRGVmYXVsdFJlYWN0aW9uRW1vamksIEVtb2ppIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBiYXNlRW1vamk6IEVtb2ppID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEVtb2ppKSxcblxuICBnZXQgYW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlcz8uYW5pbWF0ZWQ7XG4gIH0sXG4gIGdldCByZXF1aXJlQ29sb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZXM/LnJlcXVpcmVDb2xvbnM7XG4gIH0sXG4gIGdldCBtYW5hZ2VkKCkge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZXM/Lm1hbmFnZWQ7XG4gIH0sXG4gIGdldCBhdmFpbGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlcy5hdmFpbGFibGU7XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRW1vamkoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEVtb2ppPiwgZXh0cmE/OiB7IHBhcnRpYWw/OiBib29sZWFuIH0pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmVtb2ppO1xuICBjb25zdCBlbW9qaSA9IE9iamVjdC5jcmVhdGUoYmFzZUVtb2ppKSBhcyBTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBlbW9qaS5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpO1xuICBpZiAocHJvcHMubmFtZSAmJiBwYXlsb2FkLm5hbWUpIGVtb2ppLm5hbWUgPSBwYXlsb2FkLm5hbWU7XG4gIGlmIChwcm9wcy5yb2xlcyAmJiBwYXlsb2FkLnJvbGVzKSBlbW9qaS5yb2xlcyA9IHBheWxvYWQucm9sZXMubWFwKChpZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKTtcbiAgaWYgKHByb3BzLnVzZXIgJiYgcGF5bG9hZC51c2VyKSBlbW9qaS51c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC51c2VyKTtcblxuICBlbW9qaS50b2dnbGVzID0gbmV3IEVtb2ppVG9nZ2xlcyhwYXlsb2FkKTtcblxuICByZXR1cm4gY2FsbEN1c3RvbWl6ZXIoJ2Vtb2ppJywgYm90LCBwYXlsb2FkLCBlbW9qaSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURlZmF1bHRSZWFjdGlvbkVtb2ppKGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmREZWZhdWx0UmVhY3Rpb25FbW9qaT4sIGV4dHJhPzogeyBwYXJ0aWFsPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5kZWZhdWx0UmVhY3Rpb25FbW9qaTtcbiAgY29uc3QgZGVmYXVsdFJlYWN0aW9uRW1vamkgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxEZWZhdWx0UmVhY3Rpb25FbW9qaSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy5lbW9qaUlkICYmIHBheWxvYWQuZW1vamlfaWQpIGRlZmF1bHRSZWFjdGlvbkVtb2ppLmVtb2ppSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmVtb2ppX2lkKTtcbiAgaWYgKHByb3BzLmVtb2ppTmFtZSAmJiBwYXlsb2FkLmVtb2ppX25hbWUpIGRlZmF1bHRSZWFjdGlvbkVtb2ppLmVtb2ppTmFtZSA9IHBheWxvYWQuZW1vamlfbmFtZTtcblxuICByZXR1cm4gY2FsbEN1c3RvbWl6ZXIoJ2RlZmF1bHRSZWFjdGlvbkVtb2ppJywgYm90LCBwYXlsb2FkLCBkZWZhdWx0UmVhY3Rpb25FbW9qaSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjYWxsQ3VzdG9taXplciIsIkVtb2ppVG9nZ2xlcyIsImJhc2VFbW9qaSIsInVuZGVmaW5lZCIsImFuaW1hdGVkIiwidG9nZ2xlcyIsInJlcXVpcmVDb2xvbnMiLCJtYW5hZ2VkIiwiYXZhaWxhYmxlIiwidHJhbnNmb3JtRW1vamkiLCJib3QiLCJwYXlsb2FkIiwiZXh0cmEiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiZW1vamkiLCJPYmplY3QiLCJjcmVhdGUiLCJpZCIsInNub3dmbGFrZSIsIm5hbWUiLCJyb2xlcyIsIm1hcCIsInVzZXIiLCJwYXJ0aWFsIiwidHJhbnNmb3JtRGVmYXVsdFJlYWN0aW9uRW1vamkiLCJkZWZhdWx0UmVhY3Rpb25FbW9qaSIsImVtb2ppSWQiLCJlbW9qaV9pZCIsImVtb2ppTmFtZSIsImVtb2ppX25hbWUiXSwibWFwcGluZ3MiOiJBQUdBLFNBQVNBLGNBQWMsUUFBUSxxQkFBcUI7QUFDcEQsU0FBU0MsWUFBWSxRQUFRLHFCQUFxQjtBQUdsRCxPQUFPLE1BQU1DLFlBQW1CO0lBQzlCLDJFQUEyRTtJQUMzRSxHQUFJQyxTQUFTO0lBRWIsSUFBSUM7UUFDRixPQUFPLElBQUksQ0FBQ0MsT0FBTyxFQUFFRDtJQUN2QjtJQUNBLElBQUlFO1FBQ0YsT0FBTyxJQUFJLENBQUNELE9BQU8sRUFBRUM7SUFDdkI7SUFDQSxJQUFJQztRQUNGLE9BQU8sSUFBSSxDQUFDRixPQUFPLEVBQUVFO0lBQ3ZCO0lBQ0EsSUFBSUM7UUFDRixPQUFPLElBQUksQ0FBQ0gsT0FBTyxDQUFDRyxTQUFTO0lBQy9CO0FBQ0YsRUFBRTtBQUVGLE9BQU8sU0FBU0MsZUFBZUMsR0FBUSxFQUFFQyxPQUE4QixFQUFFQyxLQUE2QjtJQUNwRyxNQUFNQyxRQUFRSCxJQUFJSSxZQUFZLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLO0lBQ3RELE1BQU1BLFFBQVFDLE9BQU9DLE1BQU0sQ0FBQ2hCO0lBRTVCLElBQUlXLE1BQU1NLEVBQUUsSUFBSVIsUUFBUVEsRUFBRSxFQUFFSCxNQUFNRyxFQUFFLEdBQUdULElBQUlJLFlBQVksQ0FBQ00sU0FBUyxDQUFDVCxRQUFRUSxFQUFFO0lBQzVFLElBQUlOLE1BQU1RLElBQUksSUFBSVYsUUFBUVUsSUFBSSxFQUFFTCxNQUFNSyxJQUFJLEdBQUdWLFFBQVFVLElBQUk7SUFDekQsSUFBSVIsTUFBTVMsS0FBSyxJQUFJWCxRQUFRVyxLQUFLLEVBQUVOLE1BQU1NLEtBQUssR0FBR1gsUUFBUVcsS0FBSyxDQUFDQyxHQUFHLENBQUMsQ0FBQ0osS0FBT1QsSUFBSUksWUFBWSxDQUFDTSxTQUFTLENBQUNEO0lBQ3JHLElBQUlOLE1BQU1XLElBQUksSUFBSWIsUUFBUWEsSUFBSSxFQUFFUixNQUFNUSxJQUFJLEdBQUdkLElBQUlJLFlBQVksQ0FBQ1UsSUFBSSxDQUFDZCxLQUFLQyxRQUFRYSxJQUFJO0lBRXBGUixNQUFNWCxPQUFPLEdBQUcsSUFBSUosYUFBYVU7SUFFakMsT0FBT1gsZUFBZSxTQUFTVSxLQUFLQyxTQUFTSyxPQUFPO1FBQ2xEUyxTQUFTYixPQUFPYSxXQUFXO0lBQzdCO0FBQ0Y7QUFFQSxPQUFPLFNBQVNDLDhCQUE4QmhCLEdBQVEsRUFBRUMsT0FBNkMsRUFBRUMsS0FBNkI7SUFDbEksTUFBTUMsUUFBUUgsSUFBSUksWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ1ksb0JBQW9CO0lBQ3JFLE1BQU1BLHVCQUF1QixDQUFDO0lBRTlCLElBQUlkLE1BQU1lLE9BQU8sSUFBSWpCLFFBQVFrQixRQUFRLEVBQUVGLHFCQUFxQkMsT0FBTyxHQUFHbEIsSUFBSUksWUFBWSxDQUFDTSxTQUFTLENBQUNULFFBQVFrQixRQUFRO0lBQ2pILElBQUloQixNQUFNaUIsU0FBUyxJQUFJbkIsUUFBUW9CLFVBQVUsRUFBRUoscUJBQXFCRyxTQUFTLEdBQUduQixRQUFRb0IsVUFBVTtJQUU5RixPQUFPL0IsZUFBZSx3QkFBd0JVLEtBQUtDLFNBQVNnQixzQkFBc0I7UUFDaEZGLFNBQVNiLE9BQU9hLFdBQVc7SUFDN0I7QUFDRiJ9
@@ -1,4 +1,9 @@
1
- import type { DiscordGetGatewayBot } from '@discordeno/types';
1
+ import type { DiscordGetGatewayBot, DiscordSessionStartLimit } from '@discordeno/types';
2
2
  import type { Bot } from '../bot.js';
3
- export declare function transformGatewayBot(bot: Bot, payload: DiscordGetGatewayBot): any;
3
+ export declare function transformGatewayBot(bot: Bot, payload: Partial<DiscordGetGatewayBot>, extra?: {
4
+ partial?: boolean;
5
+ }): any;
6
+ export declare function transformSessionStartLimit(bot: Bot, payload: Partial<DiscordSessionStartLimit>, extra?: {
7
+ partial?: boolean;
8
+ }): any;
4
9
  //# sourceMappingURL=gatewayBot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gatewayBot.d.ts","sourceRoot":"","sources":["../../src/transformers/gatewayBot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,OAa1E"}
1
+ {"version":3,"file":"gatewayBot.d.ts","sourceRoot":"","sources":["../../src/transformers/gatewayBot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKrC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAUlH;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,OAW7H"}