@discordeno/bot 19.0.0-next.da74ea7 → 19.0.0-next.dbf4fda

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 (1240) hide show
  1. package/README.md +30 -0
  2. package/dist/cjs/bot.cjs +84 -0
  3. package/dist/cjs/commandOptionsParser.cjs +51 -0
  4. package/dist/cjs/constants.cjs +30 -0
  5. package/dist/cjs/handlers/channels/CHANNEL_CREATE.cjs +21 -0
  6. package/dist/cjs/handlers/channels/CHANNEL_DELETE.cjs +21 -0
  7. package/dist/cjs/handlers/channels/CHANNEL_PINS_UPDATE.cjs +21 -0
  8. package/dist/cjs/handlers/channels/CHANNEL_UPDATE.cjs +20 -0
  9. package/dist/cjs/handlers/channels/STAGE_INSTANCE_CREATE.cjs +22 -0
  10. package/dist/cjs/handlers/channels/STAGE_INSTANCE_DELETE.cjs +22 -0
  11. package/dist/cjs/handlers/channels/STAGE_INSTANCE_UPDATE.cjs +22 -0
  12. package/dist/cjs/handlers/channels/THREAD_CREATE.cjs +19 -0
  13. package/dist/cjs/handlers/channels/THREAD_DELETE.cjs +19 -0
  14. package/dist/cjs/handlers/channels/THREAD_LIST_SYNC.cjs +31 -0
  15. package/dist/cjs/handlers/channels/THREAD_MEMBERS_UPDATE.cjs +22 -0
  16. package/dist/cjs/handlers/channels/THREAD_MEMBER_UPDATE.cjs +22 -0
  17. package/dist/cjs/handlers/channels/THREAD_UPDATE.cjs +19 -0
  18. package/dist/cjs/handlers/channels/index.cjs +32 -0
  19. package/dist/cjs/handlers/emojis/GUILD_EMOJIS_UPDATE.cjs +24 -0
  20. package/dist/cjs/handlers/emojis/index.cjs +20 -0
  21. package/dist/cjs/handlers/entitlements/ENTITLEMENT_CREATE.cjs +17 -0
  22. package/dist/cjs/handlers/entitlements/ENTITLEMENT_DELETE.cjs +17 -0
  23. package/dist/cjs/handlers/entitlements/ENTITLEMENT_UPDATE.cjs +17 -0
  24. package/dist/cjs/handlers/entitlements/index.cjs +22 -0
  25. package/dist/cjs/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.cjs +18 -0
  26. package/dist/cjs/handlers/guilds/GUILD_BAN_ADD.cjs +17 -0
  27. package/dist/cjs/handlers/guilds/GUILD_BAN_REMOVE.cjs +17 -0
  28. package/dist/cjs/handlers/guilds/GUILD_CREATE.cjs +20 -0
  29. package/dist/cjs/handlers/guilds/GUILD_DELETE.cjs +22 -0
  30. package/dist/cjs/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.cjs +19 -0
  31. package/dist/cjs/handlers/guilds/GUILD_STICKERS_UPDATE.cjs +23 -0
  32. package/dist/cjs/handlers/guilds/GUILD_UPDATE.cjs +20 -0
  33. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.cjs +17 -0
  34. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.cjs +17 -0
  35. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.cjs +17 -0
  36. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.cjs +17 -0
  37. package/dist/cjs/handlers/guilds/automod/index.cjs +23 -0
  38. package/dist/cjs/handlers/guilds/index.cjs +29 -0
  39. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.cjs +17 -0
  40. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.cjs +17 -0
  41. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.cjs +17 -0
  42. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.cjs +21 -0
  43. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.cjs +21 -0
  44. package/dist/cjs/handlers/guilds/scheduledEvents/index.cjs +24 -0
  45. package/dist/cjs/handlers/index.cjs +35 -0
  46. package/dist/cjs/handlers/integrations/INTEGRATION_CREATE.cjs +16 -0
  47. package/dist/cjs/handlers/integrations/INTEGRATION_DELETE.cjs +21 -0
  48. package/dist/cjs/handlers/integrations/INTEGRATION_UPDATE.cjs +16 -0
  49. package/dist/cjs/handlers/integrations/index.cjs +22 -0
  50. package/dist/cjs/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.cjs +17 -0
  51. package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +19 -0
  52. package/dist/cjs/handlers/interactions/index.cjs +21 -0
  53. package/dist/cjs/handlers/invites/INVITE_CREATE.cjs +19 -0
  54. package/dist/cjs/handlers/invites/INVITE_DELETE.cjs +21 -0
  55. package/dist/cjs/handlers/invites/index.cjs +21 -0
  56. package/dist/cjs/handlers/members/GUILD_MEMBERS_CHUNK.cjs +30 -0
  57. package/dist/cjs/handlers/members/GUILD_MEMBER_ADD.cjs +20 -0
  58. package/dist/cjs/handlers/members/GUILD_MEMBER_REMOVE.cjs +19 -0
  59. package/dist/cjs/handlers/members/GUILD_MEMBER_UPDATE.cjs +19 -0
  60. package/dist/cjs/handlers/members/index.cjs +23 -0
  61. package/dist/cjs/handlers/messages/MESSAGE_CREATE.cjs +17 -0
  62. package/dist/cjs/handlers/messages/MESSAGE_DELETE.cjs +21 -0
  63. package/dist/cjs/handlers/messages/MESSAGE_DELETE_BULK.cjs +23 -0
  64. package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +30 -0
  65. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +24 -0
  66. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.cjs +21 -0
  67. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.cjs +22 -0
  68. package/dist/cjs/handlers/messages/MESSAGE_UPDATE.cjs +18 -0
  69. package/dist/cjs/handlers/messages/index.cjs +27 -0
  70. package/dist/cjs/handlers/misc/PRESENCE_UPDATE.cjs +16 -0
  71. package/dist/cjs/handlers/misc/READY.cjs +28 -0
  72. package/dist/cjs/handlers/misc/TYPING_START.cjs +25 -0
  73. package/dist/cjs/handlers/misc/USER_UPDATE.cjs +17 -0
  74. package/dist/cjs/handlers/misc/index.cjs +23 -0
  75. package/dist/cjs/handlers/poll/MESSAGE_POLL_VOTE_ADD.cjs +23 -0
  76. package/dist/cjs/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.cjs +23 -0
  77. package/dist/cjs/handlers/poll/index.cjs +21 -0
  78. package/dist/cjs/handlers/roles/GUILD_ROLE_CREATE.cjs +20 -0
  79. package/dist/cjs/handlers/roles/GUILD_ROLE_DELETE.cjs +20 -0
  80. package/dist/cjs/handlers/roles/GUILD_ROLE_UPDATE.cjs +20 -0
  81. package/dist/cjs/handlers/roles/index.cjs +22 -0
  82. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.cjs +20 -0
  83. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.cjs +17 -0
  84. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.cjs +20 -0
  85. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.cjs +17 -0
  86. package/dist/cjs/handlers/soundboard/SOUNDBOARD_SOUNDS.cjs +20 -0
  87. package/dist/cjs/handlers/soundboard/index.cjs +24 -0
  88. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_CREATE.cjs +17 -0
  89. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_DELETE.cjs +17 -0
  90. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_UPDATE.cjs +17 -0
  91. package/dist/cjs/handlers/subscriptions/index.cjs +22 -0
  92. package/dist/cjs/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.cjs +26 -0
  93. package/dist/cjs/handlers/voice/VOICE_SERVER_UPDATE.cjs +21 -0
  94. package/dist/cjs/handlers/voice/VOICE_STATE_UPDATE.cjs +22 -0
  95. package/dist/cjs/handlers/voice/index.cjs +22 -0
  96. package/dist/cjs/handlers/webhooks/WEBHOOKS_UPDATE.cjs +20 -0
  97. package/dist/cjs/handlers/webhooks/index.cjs +20 -0
  98. package/dist/cjs/handlers.cjs +132 -0
  99. package/dist/cjs/helpers.cjs +728 -0
  100. package/dist/cjs/index.cjs +34 -0
  101. package/dist/cjs/optionalize.cjs +7 -0
  102. package/dist/cjs/transformers/activity.cjs +74 -0
  103. package/dist/cjs/transformers/application.cjs +69 -0
  104. package/dist/cjs/transformers/applicationCommand.cjs +29 -0
  105. package/dist/cjs/transformers/applicationCommandOption.cjs +31 -0
  106. package/dist/cjs/transformers/applicationCommandOptionChoice.cjs +20 -0
  107. package/dist/cjs/transformers/applicationCommandPermission.cjs +25 -0
  108. package/dist/cjs/transformers/attachment.cjs +31 -0
  109. package/dist/cjs/transformers/auditLogEntry.cjs +37 -0
  110. package/dist/cjs/transformers/automodActionExecution.cjs +35 -0
  111. package/dist/cjs/transformers/automodRule.cjs +41 -0
  112. package/dist/cjs/transformers/avatarDecorationData.cjs +20 -0
  113. package/dist/cjs/transformers/channel.cjs +147 -0
  114. package/dist/cjs/transformers/component.cjs +47 -0
  115. package/dist/cjs/transformers/embed.cjs +54 -0
  116. package/dist/cjs/transformers/emoji.cjs +38 -0
  117. package/dist/cjs/transformers/entitlement.cjs +27 -0
  118. package/dist/cjs/transformers/gatewayBot.cjs +25 -0
  119. package/dist/cjs/transformers/guild.cjs +146 -0
  120. package/dist/cjs/transformers/index.cjs +66 -0
  121. package/dist/cjs/transformers/integration.cjs +44 -0
  122. package/dist/cjs/transformers/interaction.cjs +254 -0
  123. package/dist/cjs/transformers/invite.cjs +51 -0
  124. package/dist/cjs/transformers/member.cjs +59 -0
  125. package/dist/cjs/transformers/message.cjs +282 -0
  126. package/dist/cjs/transformers/onboarding.cjs +56 -0
  127. package/dist/cjs/transformers/poll.cjs +50 -0
  128. package/dist/cjs/transformers/presence.cjs +25 -0
  129. package/dist/cjs/transformers/reverse/activity.cjs +53 -0
  130. package/dist/cjs/transformers/reverse/allowedMentions.cjs +20 -0
  131. package/dist/cjs/transformers/reverse/application.cjs +38 -0
  132. package/dist/cjs/transformers/reverse/applicationCommand.cjs +28 -0
  133. package/dist/cjs/transformers/reverse/applicationCommandOption.cjs +30 -0
  134. package/dist/cjs/transformers/reverse/applicationCommandOptionChoice.cjs +19 -0
  135. package/dist/cjs/transformers/reverse/applicationCommandPermission.cjs +24 -0
  136. package/dist/cjs/transformers/reverse/attachment.cjs +29 -0
  137. package/dist/cjs/transformers/reverse/auditLogEntry.cjs +37 -0
  138. package/dist/cjs/transformers/reverse/component.cjs +47 -0
  139. package/dist/cjs/transformers/reverse/createApplicationCommand.cjs +37 -0
  140. package/dist/cjs/transformers/reverse/embed.cjs +53 -0
  141. package/dist/cjs/transformers/reverse/emoji.cjs +24 -0
  142. package/dist/cjs/transformers/reverse/gatewayBot.cjs +24 -0
  143. package/dist/cjs/transformers/reverse/index.cjs +38 -0
  144. package/dist/cjs/transformers/reverse/interactionResponse.cjs +34 -0
  145. package/dist/cjs/transformers/reverse/member.cjs +59 -0
  146. package/dist/cjs/transformers/reverse/presence.cjs +41 -0
  147. package/dist/cjs/transformers/reverse/team.cjs +28 -0
  148. package/dist/cjs/transformers/reverse/widgetSettings.cjs +18 -0
  149. package/dist/cjs/transformers/role.cjs +68 -0
  150. package/dist/cjs/transformers/scheduledEvent.cjs +58 -0
  151. package/dist/cjs/transformers/sku.cjs +23 -0
  152. package/dist/cjs/transformers/soundboardSound.cjs +25 -0
  153. package/dist/cjs/transformers/stageInstance.cjs +22 -0
  154. package/dist/cjs/transformers/stageInviteInstance.cjs +23 -0
  155. package/dist/cjs/transformers/sticker.cjs +48 -0
  156. package/dist/cjs/transformers/subscription.cjs +26 -0
  157. package/dist/cjs/transformers/team.cjs +29 -0
  158. package/dist/cjs/transformers/template.cjs +28 -0
  159. package/dist/cjs/transformers/threadMember.cjs +35 -0
  160. package/dist/cjs/transformers/toggles/Permissions.cjs +28 -0
  161. package/dist/cjs/transformers/toggles/ToggleBitfield.cjs +60 -0
  162. package/dist/cjs/transformers/toggles/channel.cjs +73 -0
  163. package/dist/cjs/transformers/toggles/emoji.cjs +63 -0
  164. package/dist/cjs/transformers/toggles/guild.cjs +257 -0
  165. package/dist/cjs/transformers/toggles/index.cjs +28 -0
  166. package/dist/cjs/transformers/toggles/member.cjs +126 -0
  167. package/dist/cjs/transformers/toggles/role.cjs +73 -0
  168. package/dist/cjs/transformers/toggles/user.cjs +63 -0
  169. package/dist/cjs/transformers/toggles/voice.cjs +78 -0
  170. package/dist/cjs/transformers/types.cjs +6 -0
  171. package/dist/cjs/transformers/user.cjs +50 -0
  172. package/dist/cjs/transformers/voiceRegion.cjs +22 -0
  173. package/dist/cjs/transformers/voiceState.cjs +24 -0
  174. package/dist/cjs/transformers/webhook.cjs +37 -0
  175. package/dist/cjs/transformers/welcomeScreen.cjs +24 -0
  176. package/dist/cjs/transformers/widget.cjs +35 -0
  177. package/dist/cjs/transformers/widgetSettings.cjs +19 -0
  178. package/dist/cjs/transformers.cjs +707 -0
  179. package/dist/cjs/typings.cjs +16 -0
  180. package/dist/cjs/utils.cjs +32 -0
  181. package/dist/esm/bot.js +79 -0
  182. package/dist/esm/commandOptionsParser.js +41 -0
  183. package/dist/esm/constants.js +6 -0
  184. package/dist/esm/handlers/channels/CHANNEL_CREATE.js +11 -0
  185. package/dist/esm/handlers/channels/CHANNEL_DELETE.js +11 -0
  186. package/dist/esm/handlers/channels/CHANNEL_PINS_UPDATE.js +11 -0
  187. package/dist/esm/handlers/channels/CHANNEL_UPDATE.js +10 -0
  188. package/dist/esm/handlers/channels/STAGE_INSTANCE_CREATE.js +12 -0
  189. package/dist/esm/handlers/channels/STAGE_INSTANCE_DELETE.js +12 -0
  190. package/dist/esm/handlers/channels/STAGE_INSTANCE_UPDATE.js +12 -0
  191. package/dist/esm/handlers/channels/THREAD_CREATE.js +9 -0
  192. package/dist/esm/handlers/channels/THREAD_DELETE.js +9 -0
  193. package/dist/esm/handlers/channels/THREAD_LIST_SYNC.js +21 -0
  194. package/dist/esm/handlers/channels/THREAD_MEMBERS_UPDATE.js +12 -0
  195. package/dist/esm/handlers/channels/THREAD_MEMBER_UPDATE.js +12 -0
  196. package/dist/esm/handlers/channels/THREAD_UPDATE.js +9 -0
  197. package/dist/esm/handlers/channels/index.js +15 -0
  198. package/dist/esm/handlers/emojis/GUILD_EMOJIS_UPDATE.js +14 -0
  199. package/dist/esm/handlers/emojis/index.js +3 -0
  200. package/dist/esm/handlers/entitlements/ENTITLEMENT_CREATE.js +7 -0
  201. package/dist/esm/handlers/entitlements/ENTITLEMENT_DELETE.js +7 -0
  202. package/dist/esm/handlers/entitlements/ENTITLEMENT_UPDATE.js +7 -0
  203. package/dist/esm/handlers/entitlements/index.js +5 -0
  204. package/dist/esm/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.js +8 -0
  205. package/dist/esm/handlers/guilds/GUILD_BAN_ADD.js +7 -0
  206. package/dist/esm/handlers/guilds/GUILD_BAN_REMOVE.js +7 -0
  207. package/dist/esm/handlers/guilds/GUILD_CREATE.js +10 -0
  208. package/dist/esm/handlers/guilds/GUILD_DELETE.js +12 -0
  209. package/dist/esm/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.js +9 -0
  210. package/dist/esm/handlers/guilds/GUILD_STICKERS_UPDATE.js +13 -0
  211. package/dist/esm/handlers/guilds/GUILD_UPDATE.js +10 -0
  212. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +7 -0
  213. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +7 -0
  214. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +7 -0
  215. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +7 -0
  216. package/dist/esm/handlers/guilds/automod/index.js +6 -0
  217. package/dist/esm/handlers/guilds/index.js +12 -0
  218. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.js +7 -0
  219. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.js +7 -0
  220. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.js +7 -0
  221. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.js +11 -0
  222. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +11 -0
  223. package/dist/esm/handlers/guilds/scheduledEvents/index.js +7 -0
  224. package/dist/esm/handlers/index.js +18 -0
  225. package/dist/esm/handlers/integrations/INTEGRATION_CREATE.js +6 -0
  226. package/dist/esm/handlers/integrations/INTEGRATION_DELETE.js +11 -0
  227. package/dist/esm/handlers/integrations/INTEGRATION_UPDATE.js +6 -0
  228. package/dist/esm/handlers/integrations/index.js +5 -0
  229. package/dist/esm/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +7 -0
  230. package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +9 -0
  231. package/dist/esm/handlers/interactions/index.js +4 -0
  232. package/dist/esm/handlers/invites/INVITE_CREATE.js +9 -0
  233. package/dist/esm/handlers/invites/INVITE_DELETE.js +11 -0
  234. package/dist/esm/handlers/invites/index.js +4 -0
  235. package/dist/esm/handlers/members/GUILD_MEMBERS_CHUNK.js +20 -0
  236. package/dist/esm/handlers/members/GUILD_MEMBER_ADD.js +10 -0
  237. package/dist/esm/handlers/members/GUILD_MEMBER_REMOVE.js +9 -0
  238. package/dist/esm/handlers/members/GUILD_MEMBER_UPDATE.js +9 -0
  239. package/dist/esm/handlers/members/index.js +6 -0
  240. package/dist/esm/handlers/messages/MESSAGE_CREATE.js +7 -0
  241. package/dist/esm/handlers/messages/MESSAGE_DELETE.js +11 -0
  242. package/dist/esm/handlers/messages/MESSAGE_DELETE_BULK.js +13 -0
  243. package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +20 -0
  244. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +14 -0
  245. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.js +11 -0
  246. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.js +12 -0
  247. package/dist/esm/handlers/messages/MESSAGE_UPDATE.js +8 -0
  248. package/dist/esm/handlers/messages/index.js +10 -0
  249. package/dist/esm/handlers/misc/PRESENCE_UPDATE.js +6 -0
  250. package/dist/esm/handlers/misc/READY.js +18 -0
  251. package/dist/esm/handlers/misc/TYPING_START.js +15 -0
  252. package/dist/esm/handlers/misc/USER_UPDATE.js +7 -0
  253. package/dist/esm/handlers/misc/index.js +6 -0
  254. package/dist/esm/handlers/poll/MESSAGE_POLL_VOTE_ADD.js +13 -0
  255. package/dist/esm/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.js +13 -0
  256. package/dist/esm/handlers/poll/index.js +4 -0
  257. package/dist/esm/handlers/roles/GUILD_ROLE_CREATE.js +10 -0
  258. package/dist/esm/handlers/roles/GUILD_ROLE_DELETE.js +10 -0
  259. package/dist/esm/handlers/roles/GUILD_ROLE_UPDATE.js +10 -0
  260. package/dist/esm/handlers/roles/index.js +5 -0
  261. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +10 -0
  262. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.js +7 -0
  263. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.js +10 -0
  264. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.js +7 -0
  265. package/dist/esm/handlers/soundboard/SOUNDBOARD_SOUNDS.js +10 -0
  266. package/dist/esm/handlers/soundboard/index.js +7 -0
  267. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_CREATE.js +7 -0
  268. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_DELETE.js +7 -0
  269. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_UPDATE.js +7 -0
  270. package/dist/esm/handlers/subscriptions/index.js +5 -0
  271. package/dist/esm/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  272. package/dist/esm/handlers/voice/VOICE_SERVER_UPDATE.js +11 -0
  273. package/dist/esm/handlers/voice/VOICE_STATE_UPDATE.js +12 -0
  274. package/dist/esm/handlers/voice/index.js +5 -0
  275. package/dist/esm/handlers/webhooks/WEBHOOKS_UPDATE.js +10 -0
  276. package/dist/esm/handlers/webhooks/index.js +3 -0
  277. package/dist/esm/handlers.js +81 -0
  278. package/dist/esm/helpers.js +718 -0
  279. package/dist/esm/index.js +17 -0
  280. package/dist/esm/optionalize.js +3 -0
  281. package/dist/esm/transformers/activity.js +53 -0
  282. package/dist/esm/transformers/application.js +59 -0
  283. package/dist/esm/transformers/applicationCommand.js +19 -0
  284. package/dist/esm/transformers/applicationCommandOption.js +21 -0
  285. package/dist/esm/transformers/applicationCommandOptionChoice.js +10 -0
  286. package/dist/esm/transformers/applicationCommandPermission.js +15 -0
  287. package/dist/esm/transformers/attachment.js +21 -0
  288. package/dist/esm/transformers/auditLogEntry.js +27 -0
  289. package/dist/esm/transformers/automodActionExecution.js +25 -0
  290. package/dist/esm/transformers/automodRule.js +31 -0
  291. package/dist/esm/transformers/avatarDecorationData.js +10 -0
  292. package/dist/esm/transformers/channel.js +120 -0
  293. package/dist/esm/transformers/component.js +37 -0
  294. package/dist/esm/transformers/embed.js +44 -0
  295. package/dist/esm/transformers/emoji.js +20 -0
  296. package/dist/esm/transformers/entitlement.js +17 -0
  297. package/dist/esm/transformers/gatewayBot.js +15 -0
  298. package/dist/esm/transformers/guild.js +136 -0
  299. package/dist/esm/transformers/index.js +49 -0
  300. package/dist/esm/transformers/integration.js +34 -0
  301. package/dist/esm/transformers/interaction.js +224 -0
  302. package/dist/esm/transformers/invite.js +41 -0
  303. package/dist/esm/transformers/member.js +49 -0
  304. package/dist/esm/transformers/message.js +258 -0
  305. package/dist/esm/transformers/onboarding.js +35 -0
  306. package/dist/esm/transformers/poll.js +32 -0
  307. package/dist/esm/transformers/presence.js +15 -0
  308. package/dist/esm/transformers/reverse/activity.js +43 -0
  309. package/dist/esm/transformers/reverse/allowedMentions.js +10 -0
  310. package/dist/esm/transformers/reverse/application.js +28 -0
  311. package/dist/esm/transformers/reverse/applicationCommand.js +18 -0
  312. package/dist/esm/transformers/reverse/applicationCommandOption.js +20 -0
  313. package/dist/esm/transformers/reverse/applicationCommandOptionChoice.js +9 -0
  314. package/dist/esm/transformers/reverse/applicationCommandPermission.js +14 -0
  315. package/dist/esm/transformers/reverse/attachment.js +19 -0
  316. package/dist/esm/transformers/reverse/auditLogEntry.js +27 -0
  317. package/dist/esm/transformers/reverse/component.js +37 -0
  318. package/dist/esm/transformers/reverse/createApplicationCommand.js +27 -0
  319. package/dist/esm/transformers/reverse/embed.js +43 -0
  320. package/dist/esm/transformers/reverse/emoji.js +14 -0
  321. package/dist/esm/transformers/reverse/gatewayBot.js +14 -0
  322. package/dist/esm/transformers/reverse/index.js +21 -0
  323. package/dist/esm/transformers/reverse/interactionResponse.js +24 -0
  324. package/dist/esm/transformers/reverse/member.js +41 -0
  325. package/dist/esm/transformers/reverse/presence.js +23 -0
  326. package/dist/esm/transformers/reverse/team.js +18 -0
  327. package/dist/esm/transformers/reverse/widgetSettings.js +8 -0
  328. package/dist/esm/transformers/role.js +58 -0
  329. package/dist/esm/transformers/scheduledEvent.js +40 -0
  330. package/dist/esm/transformers/sku.js +13 -0
  331. package/dist/esm/transformers/soundboardSound.js +15 -0
  332. package/dist/esm/transformers/stageInstance.js +12 -0
  333. package/dist/esm/transformers/stageInviteInstance.js +13 -0
  334. package/dist/esm/transformers/sticker.js +30 -0
  335. package/dist/esm/transformers/subscription.js +16 -0
  336. package/dist/esm/transformers/team.js +19 -0
  337. package/dist/esm/transformers/template.js +18 -0
  338. package/dist/esm/transformers/threadMember.js +17 -0
  339. package/dist/esm/transformers/toggles/Permissions.js +18 -0
  340. package/dist/esm/transformers/toggles/ToggleBitfield.js +42 -0
  341. package/dist/esm/transformers/toggles/channel.js +55 -0
  342. package/dist/esm/transformers/toggles/emoji.js +45 -0
  343. package/dist/esm/transformers/toggles/guild.js +239 -0
  344. package/dist/esm/transformers/toggles/index.js +11 -0
  345. package/dist/esm/transformers/toggles/member.js +108 -0
  346. package/dist/esm/transformers/toggles/role.js +55 -0
  347. package/dist/esm/transformers/toggles/user.js +45 -0
  348. package/dist/esm/transformers/toggles/voice.js +60 -0
  349. package/dist/esm/transformers/types.js +3 -0
  350. package/dist/esm/transformers/user.js +40 -0
  351. package/dist/esm/transformers/voiceRegion.js +12 -0
  352. package/dist/esm/transformers/voiceState.js +14 -0
  353. package/dist/esm/transformers/webhook.js +27 -0
  354. package/dist/esm/transformers/welcomeScreen.js +14 -0
  355. package/dist/esm/transformers/widget.js +25 -0
  356. package/dist/esm/transformers/widgetSettings.js +9 -0
  357. package/dist/esm/transformers.js +689 -0
  358. package/dist/esm/typings.js +6 -0
  359. package/dist/esm/utils.js +11 -0
  360. package/dist/types/bot.d.ts +309 -0
  361. package/dist/types/bot.d.ts.map +1 -0
  362. package/dist/types/commandOptionsParser.d.ts +12 -0
  363. package/dist/types/commandOptionsParser.d.ts.map +1 -0
  364. package/dist/types/constants.d.ts.map +1 -0
  365. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts +3 -0
  366. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts.map +1 -0
  367. package/dist/types/handlers/channels/CHANNEL_DELETE.d.ts.map +1 -0
  368. package/dist/types/handlers/channels/CHANNEL_PINS_UPDATE.d.ts.map +1 -0
  369. package/dist/types/handlers/channels/CHANNEL_UPDATE.d.ts.map +1 -0
  370. package/dist/types/handlers/channels/STAGE_INSTANCE_CREATE.d.ts.map +1 -0
  371. package/dist/types/handlers/channels/STAGE_INSTANCE_DELETE.d.ts.map +1 -0
  372. package/dist/types/handlers/channels/STAGE_INSTANCE_UPDATE.d.ts.map +1 -0
  373. package/dist/types/handlers/channels/THREAD_CREATE.d.ts.map +1 -0
  374. package/dist/types/handlers/channels/THREAD_DELETE.d.ts.map +1 -0
  375. package/dist/types/handlers/channels/THREAD_LIST_SYNC.d.ts.map +1 -0
  376. package/dist/types/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts +4 -0
  377. package/dist/types/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts.map +1 -0
  378. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts +4 -0
  379. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +1 -0
  380. package/dist/types/handlers/channels/THREAD_UPDATE.d.ts.map +1 -0
  381. package/dist/types/handlers/channels/index.d.ts +14 -0
  382. package/dist/types/handlers/channels/index.d.ts.map +1 -0
  383. package/dist/types/handlers/emojis/GUILD_EMOJIS_UPDATE.d.ts.map +1 -0
  384. package/dist/types/handlers/emojis/index.d.ts.map +1 -0
  385. package/dist/types/handlers/entitlements/ENTITLEMENT_CREATE.d.ts +4 -0
  386. package/dist/types/handlers/entitlements/ENTITLEMENT_CREATE.d.ts.map +1 -0
  387. package/dist/types/handlers/entitlements/ENTITLEMENT_DELETE.d.ts +4 -0
  388. package/dist/types/handlers/entitlements/ENTITLEMENT_DELETE.d.ts.map +1 -0
  389. package/dist/types/handlers/entitlements/ENTITLEMENT_UPDATE.d.ts +4 -0
  390. package/dist/types/handlers/entitlements/ENTITLEMENT_UPDATE.d.ts.map +1 -0
  391. package/dist/types/handlers/entitlements/index.d.ts +4 -0
  392. package/dist/types/handlers/entitlements/index.d.ts.map +1 -0
  393. package/dist/types/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.d.ts.map +1 -0
  394. package/dist/types/handlers/guilds/GUILD_BAN_ADD.d.ts.map +1 -0
  395. package/dist/types/handlers/guilds/GUILD_BAN_REMOVE.d.ts.map +1 -0
  396. package/dist/types/handlers/guilds/GUILD_CREATE.d.ts.map +1 -0
  397. package/dist/types/handlers/guilds/GUILD_DELETE.d.ts.map +1 -0
  398. package/dist/types/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.d.ts.map +1 -0
  399. package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts +3 -0
  400. package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -0
  401. package/dist/types/handlers/guilds/GUILD_UPDATE.d.ts.map +1 -0
  402. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts +5 -0
  403. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts.map +1 -0
  404. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts +5 -0
  405. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts.map +1 -0
  406. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts +5 -0
  407. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts.map +1 -0
  408. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts +5 -0
  409. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts.map +1 -0
  410. package/dist/types/handlers/guilds/automod/index.d.ts.map +1 -0
  411. package/dist/types/handlers/guilds/index.d.ts.map +1 -0
  412. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts +4 -0
  413. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts.map +1 -0
  414. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.d.ts.map +1 -0
  415. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.d.ts.map +1 -0
  416. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.d.ts.map +1 -0
  417. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.d.ts.map +1 -0
  418. package/dist/types/handlers/guilds/scheduledEvents/index.d.ts.map +1 -0
  419. package/dist/types/handlers/index.d.ts +17 -0
  420. package/dist/types/handlers/index.d.ts.map +1 -0
  421. package/dist/types/handlers/integrations/INTEGRATION_CREATE.d.ts.map +1 -0
  422. package/dist/types/handlers/integrations/INTEGRATION_DELETE.d.ts.map +1 -0
  423. package/dist/types/handlers/integrations/INTEGRATION_UPDATE.d.ts.map +1 -0
  424. package/dist/types/handlers/integrations/index.d.ts.map +1 -0
  425. package/dist/types/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts +3 -0
  426. package/dist/types/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts.map +1 -0
  427. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts +4 -0
  428. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -0
  429. package/dist/types/handlers/interactions/index.d.ts.map +1 -0
  430. package/dist/types/handlers/invites/INVITE_CREATE.d.ts +4 -0
  431. package/dist/types/handlers/invites/INVITE_CREATE.d.ts.map +1 -0
  432. package/dist/types/handlers/invites/INVITE_DELETE.d.ts.map +1 -0
  433. package/dist/types/handlers/invites/index.d.ts.map +1 -0
  434. package/dist/types/handlers/members/GUILD_MEMBERS_CHUNK.d.ts +4 -0
  435. package/dist/types/handlers/members/GUILD_MEMBERS_CHUNK.d.ts.map +1 -0
  436. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts.map +1 -0
  437. package/dist/types/handlers/members/GUILD_MEMBER_REMOVE.d.ts.map +1 -0
  438. package/dist/types/handlers/members/GUILD_MEMBER_UPDATE.d.ts.map +1 -0
  439. package/dist/types/handlers/members/index.d.ts.map +1 -0
  440. package/dist/types/handlers/messages/MESSAGE_CREATE.d.ts.map +1 -0
  441. package/dist/types/handlers/messages/MESSAGE_DELETE.d.ts.map +1 -0
  442. package/dist/types/handlers/messages/MESSAGE_DELETE_BULK.d.ts.map +1 -0
  443. package/dist/types/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -0
  444. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -0
  445. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.d.ts.map +1 -0
  446. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts.map +1 -0
  447. package/dist/types/handlers/messages/MESSAGE_UPDATE.d.ts.map +1 -0
  448. package/dist/types/handlers/messages/index.d.ts.map +1 -0
  449. package/dist/types/handlers/misc/PRESENCE_UPDATE.d.ts.map +1 -0
  450. package/dist/types/handlers/misc/READY.d.ts.map +1 -0
  451. package/dist/types/handlers/misc/TYPING_START.d.ts.map +1 -0
  452. package/dist/types/handlers/misc/USER_UPDATE.d.ts.map +1 -0
  453. package/dist/types/handlers/misc/index.d.ts.map +1 -0
  454. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_ADD.d.ts +4 -0
  455. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_ADD.d.ts.map +1 -0
  456. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.d.ts +4 -0
  457. package/dist/types/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.d.ts.map +1 -0
  458. package/dist/types/handlers/poll/index.d.ts +3 -0
  459. package/dist/types/handlers/poll/index.d.ts.map +1 -0
  460. package/dist/types/handlers/roles/GUILD_ROLE_CREATE.d.ts.map +1 -0
  461. package/dist/types/handlers/roles/GUILD_ROLE_DELETE.d.ts.map +1 -0
  462. package/dist/types/handlers/roles/GUILD_ROLE_UPDATE.d.ts.map +1 -0
  463. package/dist/types/handlers/roles/index.d.ts.map +1 -0
  464. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts +4 -0
  465. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts.map +1 -0
  466. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts +4 -0
  467. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts.map +1 -0
  468. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts +4 -0
  469. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts.map +1 -0
  470. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts +4 -0
  471. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts.map +1 -0
  472. package/dist/types/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts +4 -0
  473. package/dist/types/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts.map +1 -0
  474. package/dist/types/handlers/soundboard/index.d.ts +6 -0
  475. package/dist/types/handlers/soundboard/index.d.ts.map +1 -0
  476. package/dist/types/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts +4 -0
  477. package/dist/types/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts.map +1 -0
  478. package/dist/types/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts +4 -0
  479. package/dist/types/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts.map +1 -0
  480. package/dist/types/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts +4 -0
  481. package/dist/types/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts.map +1 -0
  482. package/dist/types/handlers/subscriptions/index.d.ts +4 -0
  483. package/dist/types/handlers/subscriptions/index.d.ts.map +1 -0
  484. package/dist/types/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts +4 -0
  485. package/dist/types/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts.map +1 -0
  486. package/dist/types/handlers/voice/VOICE_SERVER_UPDATE.d.ts.map +1 -0
  487. package/dist/types/handlers/voice/VOICE_STATE_UPDATE.d.ts.map +1 -0
  488. package/dist/types/handlers/voice/index.d.ts +4 -0
  489. package/dist/types/handlers/voice/index.d.ts.map +1 -0
  490. package/dist/types/handlers/webhooks/WEBHOOKS_UPDATE.d.ts +4 -0
  491. package/dist/types/handlers/webhooks/WEBHOOKS_UPDATE.d.ts.map +1 -0
  492. package/dist/types/handlers/webhooks/index.d.ts.map +1 -0
  493. package/dist/types/handlers.d.ts.map +1 -0
  494. package/dist/types/helpers.d.ts +235 -0
  495. package/dist/types/helpers.d.ts.map +1 -0
  496. package/dist/types/index.d.ts +16 -0
  497. package/dist/types/index.d.ts.map +1 -0
  498. package/dist/types/optionalize.d.ts +46 -0
  499. package/dist/types/optionalize.d.ts.map +1 -0
  500. package/dist/types/transformers/activity.d.ts +5 -0
  501. package/dist/types/transformers/activity.d.ts.map +1 -0
  502. package/dist/types/transformers/application.d.ts +6 -0
  503. package/dist/types/transformers/application.d.ts.map +1 -0
  504. package/dist/types/transformers/applicationCommand.d.ts +4 -0
  505. package/dist/types/transformers/applicationCommand.d.ts.map +1 -0
  506. package/dist/types/transformers/applicationCommandOption.d.ts +4 -0
  507. package/dist/types/transformers/applicationCommandOption.d.ts.map +1 -0
  508. package/dist/types/transformers/applicationCommandOptionChoice.d.ts +4 -0
  509. package/dist/types/transformers/applicationCommandOptionChoice.d.ts.map +1 -0
  510. package/dist/types/transformers/applicationCommandPermission.d.ts +4 -0
  511. package/dist/types/transformers/applicationCommandPermission.d.ts.map +1 -0
  512. package/dist/types/transformers/attachment.d.ts +4 -0
  513. package/dist/types/transformers/attachment.d.ts.map +1 -0
  514. package/dist/types/transformers/auditLogEntry.d.ts +4 -0
  515. package/dist/types/transformers/auditLogEntry.d.ts.map +1 -0
  516. package/dist/types/transformers/automodActionExecution.d.ts +4 -0
  517. package/dist/types/transformers/automodActionExecution.d.ts.map +1 -0
  518. package/dist/types/transformers/automodRule.d.ts +4 -0
  519. package/dist/types/transformers/automodRule.d.ts.map +1 -0
  520. package/dist/types/transformers/avatarDecorationData.d.ts +3 -0
  521. package/dist/types/transformers/avatarDecorationData.d.ts.map +1 -0
  522. package/dist/types/transformers/channel.d.ts +12 -0
  523. package/dist/types/transformers/channel.d.ts.map +1 -0
  524. package/dist/types/transformers/component.d.ts +4 -0
  525. package/dist/types/transformers/component.d.ts.map +1 -0
  526. package/dist/types/transformers/embed.d.ts +4 -0
  527. package/dist/types/transformers/embed.d.ts.map +1 -0
  528. package/dist/types/transformers/emoji.d.ts +5 -0
  529. package/dist/types/transformers/emoji.d.ts.map +1 -0
  530. package/dist/types/transformers/entitlement.d.ts +4 -0
  531. package/dist/types/transformers/entitlement.d.ts.map +1 -0
  532. package/dist/types/transformers/gatewayBot.d.ts +4 -0
  533. package/dist/types/transformers/gatewayBot.d.ts.map +1 -0
  534. package/dist/types/transformers/guild.d.ts +8 -0
  535. package/dist/types/transformers/guild.d.ts.map +1 -0
  536. package/dist/types/transformers/index.d.ts +48 -0
  537. package/dist/types/transformers/index.d.ts.map +1 -0
  538. package/dist/types/transformers/integration.d.ts +4 -0
  539. package/dist/types/transformers/integration.d.ts.map +1 -0
  540. package/dist/types/transformers/interaction.d.ts +16 -0
  541. package/dist/types/transformers/interaction.d.ts.map +1 -0
  542. package/dist/types/transformers/invite.d.ts +7 -0
  543. package/dist/types/transformers/invite.d.ts.map +1 -0
  544. package/dist/types/transformers/member.d.ts +5 -0
  545. package/dist/types/transformers/member.d.ts.map +1 -0
  546. package/dist/types/transformers/message.d.ts +7 -0
  547. package/dist/types/transformers/message.d.ts.map +1 -0
  548. package/dist/types/transformers/onboarding.d.ts +6 -0
  549. package/dist/types/transformers/onboarding.d.ts.map +1 -0
  550. package/dist/types/transformers/poll.d.ts +5 -0
  551. package/dist/types/transformers/poll.d.ts.map +1 -0
  552. package/dist/types/transformers/presence.d.ts +4 -0
  553. package/dist/types/transformers/presence.d.ts.map +1 -0
  554. package/dist/types/transformers/reverse/activity.d.ts +3 -0
  555. package/dist/types/transformers/reverse/activity.d.ts.map +1 -0
  556. package/dist/types/transformers/reverse/allowedMentions.d.ts +3 -0
  557. package/dist/types/transformers/reverse/allowedMentions.d.ts.map +1 -0
  558. package/dist/types/transformers/reverse/application.d.ts +3 -0
  559. package/dist/types/transformers/reverse/application.d.ts.map +1 -0
  560. package/dist/types/transformers/reverse/applicationCommand.d.ts +3 -0
  561. package/dist/types/transformers/reverse/applicationCommand.d.ts.map +1 -0
  562. package/dist/types/transformers/reverse/applicationCommandOption.d.ts +3 -0
  563. package/dist/types/transformers/reverse/applicationCommandOption.d.ts.map +1 -0
  564. package/dist/types/transformers/reverse/applicationCommandOptionChoice.d.ts +3 -0
  565. package/dist/types/transformers/reverse/applicationCommandOptionChoice.d.ts.map +1 -0
  566. package/dist/types/transformers/reverse/applicationCommandPermission.d.ts +3 -0
  567. package/dist/types/transformers/reverse/applicationCommandPermission.d.ts.map +1 -0
  568. package/dist/types/transformers/reverse/attachment.d.ts +3 -0
  569. package/dist/types/transformers/reverse/attachment.d.ts.map +1 -0
  570. package/dist/types/transformers/reverse/auditLogEntry.d.ts +4 -0
  571. package/dist/types/transformers/reverse/auditLogEntry.d.ts.map +1 -0
  572. package/dist/types/transformers/reverse/component.d.ts +4 -0
  573. package/dist/types/transformers/reverse/component.d.ts.map +1 -0
  574. package/dist/types/transformers/reverse/createApplicationCommand.d.ts.map +1 -0
  575. package/dist/types/transformers/reverse/embed.d.ts +4 -0
  576. package/dist/types/transformers/reverse/embed.d.ts.map +1 -0
  577. package/dist/types/transformers/reverse/emoji.d.ts +4 -0
  578. package/dist/types/transformers/reverse/emoji.d.ts.map +1 -0
  579. package/dist/types/transformers/reverse/gatewayBot.d.ts +4 -0
  580. package/dist/types/transformers/reverse/gatewayBot.d.ts.map +1 -0
  581. package/dist/types/transformers/reverse/index.d.ts +20 -0
  582. package/dist/types/transformers/reverse/index.d.ts.map +1 -0
  583. package/dist/types/transformers/reverse/interactionResponse.d.ts.map +1 -0
  584. package/dist/types/transformers/reverse/member.d.ts +6 -0
  585. package/dist/types/transformers/reverse/member.d.ts.map +1 -0
  586. package/dist/types/transformers/reverse/presence.d.ts +10 -0
  587. package/dist/types/transformers/reverse/presence.d.ts.map +1 -0
  588. package/dist/types/transformers/reverse/team.d.ts +4 -0
  589. package/dist/types/transformers/reverse/team.d.ts.map +1 -0
  590. package/dist/types/transformers/reverse/widgetSettings.d.ts +4 -0
  591. package/dist/types/transformers/reverse/widgetSettings.d.ts.map +1 -0
  592. package/dist/types/transformers/role.d.ts +8 -0
  593. package/dist/types/transformers/role.d.ts.map +1 -0
  594. package/dist/types/transformers/scheduledEvent.d.ts +5 -0
  595. package/dist/types/transformers/scheduledEvent.d.ts.map +1 -0
  596. package/dist/types/transformers/sku.d.ts +4 -0
  597. package/dist/types/transformers/sku.d.ts.map +1 -0
  598. package/dist/types/transformers/soundboardSound.d.ts +4 -0
  599. package/dist/types/transformers/soundboardSound.d.ts.map +1 -0
  600. package/dist/types/transformers/stageInstance.d.ts +4 -0
  601. package/dist/types/transformers/stageInstance.d.ts.map +1 -0
  602. package/dist/types/transformers/stageInviteInstance.d.ts +6 -0
  603. package/dist/types/transformers/stageInviteInstance.d.ts.map +1 -0
  604. package/dist/types/transformers/sticker.d.ts +5 -0
  605. package/dist/types/transformers/sticker.d.ts.map +1 -0
  606. package/dist/types/transformers/subscription.d.ts +4 -0
  607. package/dist/types/transformers/subscription.d.ts.map +1 -0
  608. package/dist/types/transformers/team.d.ts +4 -0
  609. package/dist/types/transformers/team.d.ts.map +1 -0
  610. package/dist/types/transformers/template.d.ts +4 -0
  611. package/dist/types/transformers/template.d.ts.map +1 -0
  612. package/dist/types/transformers/threadMember.d.ts +6 -0
  613. package/dist/types/transformers/threadMember.d.ts.map +1 -0
  614. package/dist/types/transformers/toggles/Permissions.d.ts +9 -0
  615. package/dist/types/transformers/toggles/Permissions.d.ts.map +1 -0
  616. package/dist/types/transformers/toggles/ToggleBitfield.d.ts +23 -0
  617. package/dist/types/transformers/toggles/ToggleBitfield.d.ts.map +1 -0
  618. package/dist/types/transformers/toggles/channel.d.ts +36 -0
  619. package/dist/types/transformers/toggles/channel.d.ts.map +1 -0
  620. package/dist/types/transformers/toggles/emoji.d.ts.map +1 -0
  621. package/dist/types/transformers/toggles/guild.d.ts +153 -0
  622. package/dist/types/transformers/toggles/guild.d.ts.map +1 -0
  623. package/dist/types/transformers/toggles/index.d.ts +10 -0
  624. package/dist/types/transformers/toggles/index.d.ts.map +1 -0
  625. package/dist/types/transformers/toggles/member.d.ts +65 -0
  626. package/dist/types/transformers/toggles/member.d.ts.map +1 -0
  627. package/dist/types/transformers/toggles/role.d.ts +37 -0
  628. package/dist/types/transformers/toggles/role.d.ts.map +1 -0
  629. package/dist/types/transformers/toggles/user.d.ts.map +1 -0
  630. package/dist/types/transformers/toggles/voice.d.ts.map +1 -0
  631. package/dist/types/transformers/types.d.ts +1590 -0
  632. package/dist/types/transformers/types.d.ts.map +1 -0
  633. package/dist/types/transformers/user.d.ts +4 -0
  634. package/dist/types/transformers/user.d.ts.map +1 -0
  635. package/dist/types/transformers/voiceRegion.d.ts +4 -0
  636. package/dist/types/transformers/voiceRegion.d.ts.map +1 -0
  637. package/dist/types/transformers/voiceState.d.ts +8 -0
  638. package/dist/types/transformers/voiceState.d.ts.map +1 -0
  639. package/dist/types/transformers/webhook.d.ts +4 -0
  640. package/dist/types/transformers/webhook.d.ts.map +1 -0
  641. package/dist/types/transformers/welcomeScreen.d.ts +4 -0
  642. package/dist/types/transformers/welcomeScreen.d.ts.map +1 -0
  643. package/dist/types/transformers/widget.d.ts +4 -0
  644. package/dist/types/transformers/widget.d.ts.map +1 -0
  645. package/dist/types/transformers/widgetSettings.d.ts +4 -0
  646. package/dist/types/transformers/widgetSettings.d.ts.map +1 -0
  647. package/dist/types/transformers.d.ts +677 -0
  648. package/dist/types/transformers.d.ts.map +1 -0
  649. package/dist/types/typings.d.ts +187 -0
  650. package/dist/types/typings.d.ts.map +1 -0
  651. package/dist/types/utils.d.ts.map +1 -0
  652. package/package.json +31 -27
  653. package/dist/bot.d.ts +0 -235
  654. package/dist/bot.d.ts.map +0 -1
  655. package/dist/bot.js +0 -58
  656. package/dist/bot.js.map +0 -1
  657. package/dist/constants.d.ts.map +0 -1
  658. package/dist/constants.js +0 -6
  659. package/dist/constants.js.map +0 -1
  660. package/dist/handlers/channels/CHANNEL_CREATE.d.ts +0 -3
  661. package/dist/handlers/channels/CHANNEL_CREATE.d.ts.map +0 -1
  662. package/dist/handlers/channels/CHANNEL_CREATE.js +0 -8
  663. package/dist/handlers/channels/CHANNEL_CREATE.js.map +0 -1
  664. package/dist/handlers/channels/CHANNEL_DELETE.d.ts.map +0 -1
  665. package/dist/handlers/channels/CHANNEL_DELETE.js +0 -10
  666. package/dist/handlers/channels/CHANNEL_DELETE.js.map +0 -1
  667. package/dist/handlers/channels/CHANNEL_PINS_UPDATE.d.ts.map +0 -1
  668. package/dist/handlers/channels/CHANNEL_PINS_UPDATE.js +0 -10
  669. package/dist/handlers/channels/CHANNEL_PINS_UPDATE.js.map +0 -1
  670. package/dist/handlers/channels/CHANNEL_UPDATE.d.ts.map +0 -1
  671. package/dist/handlers/channels/CHANNEL_UPDATE.js +0 -9
  672. package/dist/handlers/channels/CHANNEL_UPDATE.js.map +0 -1
  673. package/dist/handlers/channels/STAGE_INSTANCE_CREATE.d.ts.map +0 -1
  674. package/dist/handlers/channels/STAGE_INSTANCE_CREATE.js +0 -11
  675. package/dist/handlers/channels/STAGE_INSTANCE_CREATE.js.map +0 -1
  676. package/dist/handlers/channels/STAGE_INSTANCE_DELETE.d.ts.map +0 -1
  677. package/dist/handlers/channels/STAGE_INSTANCE_DELETE.js +0 -11
  678. package/dist/handlers/channels/STAGE_INSTANCE_DELETE.js.map +0 -1
  679. package/dist/handlers/channels/STAGE_INSTANCE_UPDATE.d.ts.map +0 -1
  680. package/dist/handlers/channels/STAGE_INSTANCE_UPDATE.js +0 -11
  681. package/dist/handlers/channels/STAGE_INSTANCE_UPDATE.js.map +0 -1
  682. package/dist/handlers/channels/THREAD_CREATE.d.ts.map +0 -1
  683. package/dist/handlers/channels/THREAD_CREATE.js +0 -8
  684. package/dist/handlers/channels/THREAD_CREATE.js.map +0 -1
  685. package/dist/handlers/channels/THREAD_DELETE.d.ts.map +0 -1
  686. package/dist/handlers/channels/THREAD_DELETE.js +0 -8
  687. package/dist/handlers/channels/THREAD_DELETE.js.map +0 -1
  688. package/dist/handlers/channels/THREAD_LIST_SYNC.d.ts.map +0 -1
  689. package/dist/handlers/channels/THREAD_LIST_SYNC.js +0 -19
  690. package/dist/handlers/channels/THREAD_LIST_SYNC.js.map +0 -1
  691. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts +0 -4
  692. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts.map +0 -1
  693. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.js +0 -11
  694. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.js.map +0 -1
  695. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.d.ts +0 -4
  696. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +0 -1
  697. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.js +0 -11
  698. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.js.map +0 -1
  699. package/dist/handlers/channels/THREAD_UPDATE.d.ts.map +0 -1
  700. package/dist/handlers/channels/THREAD_UPDATE.js +0 -8
  701. package/dist/handlers/channels/THREAD_UPDATE.js.map +0 -1
  702. package/dist/handlers/channels/index.d.ts +0 -13
  703. package/dist/handlers/channels/index.d.ts.map +0 -1
  704. package/dist/handlers/channels/index.js +0 -14
  705. package/dist/handlers/channels/index.js.map +0 -1
  706. package/dist/handlers/emojis/GUILD_EMOJIS_UPDATE.d.ts.map +0 -1
  707. package/dist/handlers/emojis/GUILD_EMOJIS_UPDATE.js +0 -13
  708. package/dist/handlers/emojis/GUILD_EMOJIS_UPDATE.js.map +0 -1
  709. package/dist/handlers/emojis/index.d.ts.map +0 -1
  710. package/dist/handlers/emojis/index.js +0 -3
  711. package/dist/handlers/emojis/index.js.map +0 -1
  712. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.d.ts.map +0 -1
  713. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.js +0 -7
  714. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.js.map +0 -1
  715. package/dist/handlers/guilds/GUILD_BAN_ADD.d.ts.map +0 -1
  716. package/dist/handlers/guilds/GUILD_BAN_ADD.js +0 -6
  717. package/dist/handlers/guilds/GUILD_BAN_ADD.js.map +0 -1
  718. package/dist/handlers/guilds/GUILD_BAN_REMOVE.d.ts.map +0 -1
  719. package/dist/handlers/guilds/GUILD_BAN_REMOVE.js +0 -6
  720. package/dist/handlers/guilds/GUILD_BAN_REMOVE.js.map +0 -1
  721. package/dist/handlers/guilds/GUILD_CREATE.d.ts.map +0 -1
  722. package/dist/handlers/guilds/GUILD_CREATE.js +0 -9
  723. package/dist/handlers/guilds/GUILD_CREATE.js.map +0 -1
  724. package/dist/handlers/guilds/GUILD_DELETE.d.ts.map +0 -1
  725. package/dist/handlers/guilds/GUILD_DELETE.js +0 -6
  726. package/dist/handlers/guilds/GUILD_DELETE.js.map +0 -1
  727. package/dist/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.d.ts.map +0 -1
  728. package/dist/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.js +0 -8
  729. package/dist/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.js.map +0 -1
  730. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts +0 -3
  731. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +0 -1
  732. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.js +0 -9
  733. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.js.map +0 -1
  734. package/dist/handlers/guilds/GUILD_UPDATE.d.ts.map +0 -1
  735. package/dist/handlers/guilds/GUILD_UPDATE.js +0 -9
  736. package/dist/handlers/guilds/GUILD_UPDATE.js.map +0 -1
  737. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts +0 -5
  738. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts.map +0 -1
  739. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +0 -6
  740. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js.map +0 -1
  741. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts +0 -5
  742. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts.map +0 -1
  743. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +0 -6
  744. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js.map +0 -1
  745. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts +0 -5
  746. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts.map +0 -1
  747. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +0 -6
  748. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js.map +0 -1
  749. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts +0 -5
  750. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts.map +0 -1
  751. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +0 -6
  752. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js.map +0 -1
  753. package/dist/handlers/guilds/automod/index.d.ts.map +0 -1
  754. package/dist/handlers/guilds/automod/index.js +0 -6
  755. package/dist/handlers/guilds/automod/index.js.map +0 -1
  756. package/dist/handlers/guilds/index.d.ts.map +0 -1
  757. package/dist/handlers/guilds/index.js +0 -12
  758. package/dist/handlers/guilds/index.js.map +0 -1
  759. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts +0 -4
  760. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts.map +0 -1
  761. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.js +0 -6
  762. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.js.map +0 -1
  763. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.d.ts.map +0 -1
  764. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.js +0 -6
  765. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.js.map +0 -1
  766. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.d.ts.map +0 -1
  767. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.js +0 -6
  768. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.js.map +0 -1
  769. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.d.ts.map +0 -1
  770. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.js +0 -10
  771. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.js.map +0 -1
  772. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.d.ts.map +0 -1
  773. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +0 -10
  774. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.js.map +0 -1
  775. package/dist/handlers/guilds/scheduledEvents/index.d.ts.map +0 -1
  776. package/dist/handlers/guilds/scheduledEvents/index.js +0 -7
  777. package/dist/handlers/guilds/scheduledEvents/index.js.map +0 -1
  778. package/dist/handlers/index.d.ts +0 -13
  779. package/dist/handlers/index.d.ts.map +0 -1
  780. package/dist/handlers/index.js +0 -14
  781. package/dist/handlers/index.js.map +0 -1
  782. package/dist/handlers/integrations/INTEGRATION_CREATE.d.ts.map +0 -1
  783. package/dist/handlers/integrations/INTEGRATION_CREATE.js +0 -5
  784. package/dist/handlers/integrations/INTEGRATION_CREATE.js.map +0 -1
  785. package/dist/handlers/integrations/INTEGRATION_DELETE.d.ts.map +0 -1
  786. package/dist/handlers/integrations/INTEGRATION_DELETE.js +0 -10
  787. package/dist/handlers/integrations/INTEGRATION_DELETE.js.map +0 -1
  788. package/dist/handlers/integrations/INTEGRATION_UPDATE.d.ts.map +0 -1
  789. package/dist/handlers/integrations/INTEGRATION_UPDATE.js +0 -5
  790. package/dist/handlers/integrations/INTEGRATION_UPDATE.js.map +0 -1
  791. package/dist/handlers/integrations/index.d.ts.map +0 -1
  792. package/dist/handlers/integrations/index.js +0 -5
  793. package/dist/handlers/integrations/index.js.map +0 -1
  794. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts +0 -3
  795. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts.map +0 -1
  796. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +0 -6
  797. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js.map +0 -1
  798. package/dist/handlers/interactions/INTERACTION_CREATE.d.ts +0 -4
  799. package/dist/handlers/interactions/INTERACTION_CREATE.d.ts.map +0 -1
  800. package/dist/handlers/interactions/INTERACTION_CREATE.js +0 -5
  801. package/dist/handlers/interactions/INTERACTION_CREATE.js.map +0 -1
  802. package/dist/handlers/interactions/index.d.ts.map +0 -1
  803. package/dist/handlers/interactions/index.js +0 -4
  804. package/dist/handlers/interactions/index.js.map +0 -1
  805. package/dist/handlers/invites/INVITE_CREATE.d.ts +0 -4
  806. package/dist/handlers/invites/INVITE_CREATE.d.ts.map +0 -1
  807. package/dist/handlers/invites/INVITE_CREATE.js +0 -5
  808. package/dist/handlers/invites/INVITE_CREATE.js.map +0 -1
  809. package/dist/handlers/invites/INVITE_DELETE.d.ts.map +0 -1
  810. package/dist/handlers/invites/INVITE_DELETE.js +0 -10
  811. package/dist/handlers/invites/INVITE_DELETE.js.map +0 -1
  812. package/dist/handlers/invites/index.d.ts.map +0 -1
  813. package/dist/handlers/invites/index.js +0 -4
  814. package/dist/handlers/invites/index.js.map +0 -1
  815. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.d.ts +0 -4
  816. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.d.ts.map +0 -1
  817. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.js +0 -26
  818. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.js.map +0 -1
  819. package/dist/handlers/members/GUILD_MEMBER_ADD.d.ts.map +0 -1
  820. package/dist/handlers/members/GUILD_MEMBER_ADD.js +0 -9
  821. package/dist/handlers/members/GUILD_MEMBER_ADD.js.map +0 -1
  822. package/dist/handlers/members/GUILD_MEMBER_REMOVE.d.ts.map +0 -1
  823. package/dist/handlers/members/GUILD_MEMBER_REMOVE.js +0 -8
  824. package/dist/handlers/members/GUILD_MEMBER_REMOVE.js.map +0 -1
  825. package/dist/handlers/members/GUILD_MEMBER_UPDATE.d.ts.map +0 -1
  826. package/dist/handlers/members/GUILD_MEMBER_UPDATE.js +0 -7
  827. package/dist/handlers/members/GUILD_MEMBER_UPDATE.js.map +0 -1
  828. package/dist/handlers/members/index.d.ts.map +0 -1
  829. package/dist/handlers/members/index.js +0 -6
  830. package/dist/handlers/members/index.js.map +0 -1
  831. package/dist/handlers/messages/MESSAGE_CREATE.d.ts.map +0 -1
  832. package/dist/handlers/messages/MESSAGE_CREATE.js +0 -6
  833. package/dist/handlers/messages/MESSAGE_CREATE.js.map +0 -1
  834. package/dist/handlers/messages/MESSAGE_DELETE.d.ts.map +0 -1
  835. package/dist/handlers/messages/MESSAGE_DELETE.js +0 -10
  836. package/dist/handlers/messages/MESSAGE_DELETE.js.map +0 -1
  837. package/dist/handlers/messages/MESSAGE_DELETE_BULK.d.ts.map +0 -1
  838. package/dist/handlers/messages/MESSAGE_DELETE_BULK.js +0 -12
  839. package/dist/handlers/messages/MESSAGE_DELETE_BULK.js.map +0 -1
  840. package/dist/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +0 -1
  841. package/dist/handlers/messages/MESSAGE_REACTION_ADD.js +0 -16
  842. package/dist/handlers/messages/MESSAGE_REACTION_ADD.js.map +0 -1
  843. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +0 -1
  844. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE.js +0 -12
  845. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE.js.map +0 -1
  846. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.d.ts.map +0 -1
  847. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.js +0 -10
  848. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.js.map +0 -1
  849. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts.map +0 -1
  850. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.js +0 -11
  851. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.js.map +0 -1
  852. package/dist/handlers/messages/MESSAGE_UPDATE.d.ts.map +0 -1
  853. package/dist/handlers/messages/MESSAGE_UPDATE.js +0 -7
  854. package/dist/handlers/messages/MESSAGE_UPDATE.js.map +0 -1
  855. package/dist/handlers/messages/index.d.ts.map +0 -1
  856. package/dist/handlers/messages/index.js +0 -10
  857. package/dist/handlers/messages/index.js.map +0 -1
  858. package/dist/handlers/misc/PRESENCE_UPDATE.d.ts.map +0 -1
  859. package/dist/handlers/misc/PRESENCE_UPDATE.js +0 -5
  860. package/dist/handlers/misc/PRESENCE_UPDATE.js.map +0 -1
  861. package/dist/handlers/misc/READY.d.ts.map +0 -1
  862. package/dist/handlers/misc/READY.js +0 -17
  863. package/dist/handlers/misc/READY.js.map +0 -1
  864. package/dist/handlers/misc/TYPING_START.d.ts.map +0 -1
  865. package/dist/handlers/misc/TYPING_START.js +0 -14
  866. package/dist/handlers/misc/TYPING_START.js.map +0 -1
  867. package/dist/handlers/misc/USER_UPDATE.d.ts.map +0 -1
  868. package/dist/handlers/misc/USER_UPDATE.js +0 -6
  869. package/dist/handlers/misc/USER_UPDATE.js.map +0 -1
  870. package/dist/handlers/misc/index.d.ts.map +0 -1
  871. package/dist/handlers/misc/index.js +0 -6
  872. package/dist/handlers/misc/index.js.map +0 -1
  873. package/dist/handlers/roles/GUILD_ROLE_CREATE.d.ts.map +0 -1
  874. package/dist/handlers/roles/GUILD_ROLE_CREATE.js +0 -9
  875. package/dist/handlers/roles/GUILD_ROLE_CREATE.js.map +0 -1
  876. package/dist/handlers/roles/GUILD_ROLE_DELETE.d.ts.map +0 -1
  877. package/dist/handlers/roles/GUILD_ROLE_DELETE.js +0 -9
  878. package/dist/handlers/roles/GUILD_ROLE_DELETE.js.map +0 -1
  879. package/dist/handlers/roles/GUILD_ROLE_UPDATE.d.ts.map +0 -1
  880. package/dist/handlers/roles/GUILD_ROLE_UPDATE.js +0 -9
  881. package/dist/handlers/roles/GUILD_ROLE_UPDATE.js.map +0 -1
  882. package/dist/handlers/roles/index.d.ts.map +0 -1
  883. package/dist/handlers/roles/index.js +0 -5
  884. package/dist/handlers/roles/index.js.map +0 -1
  885. package/dist/handlers/voice/VOICE_SERVER_UPDATE.d.ts.map +0 -1
  886. package/dist/handlers/voice/VOICE_SERVER_UPDATE.js +0 -10
  887. package/dist/handlers/voice/VOICE_SERVER_UPDATE.js.map +0 -1
  888. package/dist/handlers/voice/VOICE_STATE_UPDATE.d.ts.map +0 -1
  889. package/dist/handlers/voice/VOICE_STATE_UPDATE.js +0 -11
  890. package/dist/handlers/voice/VOICE_STATE_UPDATE.js.map +0 -1
  891. package/dist/handlers/voice/index.d.ts +0 -3
  892. package/dist/handlers/voice/index.d.ts.map +0 -1
  893. package/dist/handlers/voice/index.js +0 -4
  894. package/dist/handlers/voice/index.js.map +0 -1
  895. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.d.ts +0 -4
  896. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.d.ts.map +0 -1
  897. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.js +0 -9
  898. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.js.map +0 -1
  899. package/dist/handlers/webhooks/index.d.ts.map +0 -1
  900. package/dist/handlers/webhooks/index.js +0 -3
  901. package/dist/handlers/webhooks/index.js.map +0 -1
  902. package/dist/handlers.d.ts.map +0 -1
  903. package/dist/handlers.js +0 -67
  904. package/dist/handlers.js.map +0 -1
  905. package/dist/index.d.ts +0 -9
  906. package/dist/index.d.ts.map +0 -1
  907. package/dist/index.js +0 -10
  908. package/dist/index.js.map +0 -1
  909. package/dist/optionalize.d.ts +0 -47
  910. package/dist/optionalize.d.ts.map +0 -1
  911. package/dist/optionalize.js +0 -3
  912. package/dist/optionalize.js.map +0 -1
  913. package/dist/transformers/activity.d.ts +0 -36
  914. package/dist/transformers/activity.d.ts.map +0 -1
  915. package/dist/transformers/activity.js +0 -35
  916. package/dist/transformers/activity.js.map +0 -1
  917. package/dist/transformers/application.d.ts +0 -45
  918. package/dist/transformers/application.d.ts.map +0 -1
  919. package/dist/transformers/application.js +0 -26
  920. package/dist/transformers/application.js.map +0 -1
  921. package/dist/transformers/applicationCommand.d.ts +0 -161
  922. package/dist/transformers/applicationCommand.d.ts.map +0 -1
  923. package/dist/transformers/applicationCommand.js +0 -20
  924. package/dist/transformers/applicationCommand.js.map +0 -1
  925. package/dist/transformers/applicationCommandOption.d.ts +0 -35
  926. package/dist/transformers/applicationCommandOption.d.ts.map +0 -1
  927. package/dist/transformers/applicationCommandOption.js +0 -20
  928. package/dist/transformers/applicationCommandOption.js.map +0 -1
  929. package/dist/transformers/applicationCommandOptionChoice.d.ts +0 -41
  930. package/dist/transformers/applicationCommandOptionChoice.d.ts.map +0 -1
  931. package/dist/transformers/applicationCommandOptionChoice.js +0 -11
  932. package/dist/transformers/applicationCommandOptionChoice.js.map +0 -1
  933. package/dist/transformers/applicationCommandPermission.d.ts +0 -15
  934. package/dist/transformers/applicationCommandPermission.d.ts.map +0 -1
  935. package/dist/transformers/applicationCommandPermission.js +0 -16
  936. package/dist/transformers/applicationCommandPermission.js.map +0 -1
  937. package/dist/transformers/attachment.d.ts +0 -17
  938. package/dist/transformers/attachment.d.ts.map +0 -1
  939. package/dist/transformers/attachment.js +0 -18
  940. package/dist/transformers/attachment.js.map +0 -1
  941. package/dist/transformers/auditLogEntry.d.ts +0 -45
  942. package/dist/transformers/auditLogEntry.d.ts.map +0 -1
  943. package/dist/transformers/auditLogEntry.js +0 -129
  944. package/dist/transformers/auditLogEntry.js.map +0 -1
  945. package/dist/transformers/automodActionExecution.d.ts +0 -25
  946. package/dist/transformers/automodActionExecution.d.ts.map +0 -1
  947. package/dist/transformers/automodActionExecution.js +0 -26
  948. package/dist/transformers/automodActionExecution.js.map +0 -1
  949. package/dist/transformers/automodRule.d.ts +0 -30
  950. package/dist/transformers/automodRule.d.ts.map +0 -1
  951. package/dist/transformers/automodRule.js +0 -31
  952. package/dist/transformers/automodRule.js.map +0 -1
  953. package/dist/transformers/channel.d.ts +0 -44
  954. package/dist/transformers/channel.d.ts.map +0 -1
  955. package/dist/transformers/channel.js +0 -61
  956. package/dist/transformers/channel.js.map +0 -1
  957. package/dist/transformers/component.d.ts +0 -46
  958. package/dist/transformers/component.d.ts.map +0 -1
  959. package/dist/transformers/component.js +0 -35
  960. package/dist/transformers/component.js.map +0 -1
  961. package/dist/transformers/embed.d.ts +0 -51
  962. package/dist/transformers/embed.d.ts.map +0 -1
  963. package/dist/transformers/embed.js +0 -45
  964. package/dist/transformers/embed.js.map +0 -1
  965. package/dist/transformers/emoji.d.ts +0 -24
  966. package/dist/transformers/emoji.d.ts.map +0 -1
  967. package/dist/transformers/emoji.js +0 -14
  968. package/dist/transformers/emoji.js.map +0 -1
  969. package/dist/transformers/gatewayBot.d.ts +0 -14
  970. package/dist/transformers/gatewayBot.d.ts.map +0 -1
  971. package/dist/transformers/gatewayBot.js +0 -16
  972. package/dist/transformers/gatewayBot.js.map +0 -1
  973. package/dist/transformers/guild.d.ts +0 -71
  974. package/dist/transformers/guild.d.ts.map +0 -1
  975. package/dist/transformers/guild.js +0 -105
  976. package/dist/transformers/guild.js.map +0 -1
  977. package/dist/transformers/index.d.ts +0 -37
  978. package/dist/transformers/index.d.ts.map +0 -1
  979. package/dist/transformers/index.js +0 -38
  980. package/dist/transformers/index.js.map +0 -1
  981. package/dist/transformers/integration.d.ts +0 -55
  982. package/dist/transformers/integration.d.ts.map +0 -1
  983. package/dist/transformers/integration.js +0 -35
  984. package/dist/transformers/integration.js.map +0 -1
  985. package/dist/transformers/interaction.d.ts +0 -386
  986. package/dist/transformers/interaction.d.ts.map +0 -1
  987. package/dist/transformers/interaction.js +0 -119
  988. package/dist/transformers/interaction.js.map +0 -1
  989. package/dist/transformers/invite.d.ts +0 -81
  990. package/dist/transformers/invite.d.ts.map +0 -1
  991. package/dist/transformers/invite.js +0 -20
  992. package/dist/transformers/invite.js.map +0 -1
  993. package/dist/transformers/member.d.ts +0 -45
  994. package/dist/transformers/member.d.ts.map +0 -1
  995. package/dist/transformers/member.js +0 -38
  996. package/dist/transformers/member.js.map +0 -1
  997. package/dist/transformers/message.d.ts +0 -132
  998. package/dist/transformers/message.d.ts.map +0 -1
  999. package/dist/transformers/message.js +0 -222
  1000. package/dist/transformers/message.js.map +0 -1
  1001. package/dist/transformers/presence.d.ts +0 -26
  1002. package/dist/transformers/presence.d.ts.map +0 -1
  1003. package/dist/transformers/presence.js +0 -29
  1004. package/dist/transformers/presence.js.map +0 -1
  1005. package/dist/transformers/reverse/activity.d.ts +0 -4
  1006. package/dist/transformers/reverse/activity.d.ts.map +0 -1
  1007. package/dist/transformers/reverse/activity.js +0 -43
  1008. package/dist/transformers/reverse/activity.js.map +0 -1
  1009. package/dist/transformers/reverse/allowedMentions.d.ts +0 -3
  1010. package/dist/transformers/reverse/allowedMentions.d.ts.map +0 -1
  1011. package/dist/transformers/reverse/allowedMentions.js +0 -10
  1012. package/dist/transformers/reverse/allowedMentions.js.map +0 -1
  1013. package/dist/transformers/reverse/application.d.ts +0 -4
  1014. package/dist/transformers/reverse/application.d.ts.map +0 -1
  1015. package/dist/transformers/reverse/application.js +0 -24
  1016. package/dist/transformers/reverse/application.js.map +0 -1
  1017. package/dist/transformers/reverse/applicationCommand.d.ts +0 -4
  1018. package/dist/transformers/reverse/applicationCommand.d.ts.map +0 -1
  1019. package/dist/transformers/reverse/applicationCommand.js +0 -18
  1020. package/dist/transformers/reverse/applicationCommand.js.map +0 -1
  1021. package/dist/transformers/reverse/applicationCommandOption.d.ts +0 -4
  1022. package/dist/transformers/reverse/applicationCommandOption.d.ts.map +0 -1
  1023. package/dist/transformers/reverse/applicationCommandOption.js +0 -20
  1024. package/dist/transformers/reverse/applicationCommandOption.js.map +0 -1
  1025. package/dist/transformers/reverse/applicationCommandOptionChoice.d.ts +0 -4
  1026. package/dist/transformers/reverse/applicationCommandOptionChoice.d.ts.map +0 -1
  1027. package/dist/transformers/reverse/applicationCommandOptionChoice.js +0 -9
  1028. package/dist/transformers/reverse/applicationCommandOptionChoice.js.map +0 -1
  1029. package/dist/transformers/reverse/applicationCommandPermission.d.ts +0 -4
  1030. package/dist/transformers/reverse/applicationCommandPermission.d.ts.map +0 -1
  1031. package/dist/transformers/reverse/applicationCommandPermission.js +0 -14
  1032. package/dist/transformers/reverse/applicationCommandPermission.js.map +0 -1
  1033. package/dist/transformers/reverse/attachment.d.ts +0 -4
  1034. package/dist/transformers/reverse/attachment.d.ts.map +0 -1
  1035. package/dist/transformers/reverse/attachment.js +0 -16
  1036. package/dist/transformers/reverse/attachment.js.map +0 -1
  1037. package/dist/transformers/reverse/auditLogEntry.d.ts +0 -5
  1038. package/dist/transformers/reverse/auditLogEntry.d.ts.map +0 -1
  1039. package/dist/transformers/reverse/auditLogEntry.js +0 -131
  1040. package/dist/transformers/reverse/auditLogEntry.js.map +0 -1
  1041. package/dist/transformers/reverse/component.d.ts +0 -5
  1042. package/dist/transformers/reverse/component.d.ts.map +0 -1
  1043. package/dist/transformers/reverse/component.js +0 -36
  1044. package/dist/transformers/reverse/component.js.map +0 -1
  1045. package/dist/transformers/reverse/createApplicationCommand.d.ts.map +0 -1
  1046. package/dist/transformers/reverse/createApplicationCommand.js +0 -27
  1047. package/dist/transformers/reverse/createApplicationCommand.js.map +0 -1
  1048. package/dist/transformers/reverse/embed.d.ts +0 -5
  1049. package/dist/transformers/reverse/embed.d.ts.map +0 -1
  1050. package/dist/transformers/reverse/embed.js +0 -43
  1051. package/dist/transformers/reverse/embed.js.map +0 -1
  1052. package/dist/transformers/reverse/emoji.d.ts +0 -5
  1053. package/dist/transformers/reverse/emoji.d.ts.map +0 -1
  1054. package/dist/transformers/reverse/emoji.js +0 -14
  1055. package/dist/transformers/reverse/emoji.js.map +0 -1
  1056. package/dist/transformers/reverse/gatewayBot.d.ts +0 -4
  1057. package/dist/transformers/reverse/gatewayBot.d.ts.map +0 -1
  1058. package/dist/transformers/reverse/gatewayBot.js +0 -14
  1059. package/dist/transformers/reverse/gatewayBot.js.map +0 -1
  1060. package/dist/transformers/reverse/index.d.ts +0 -17
  1061. package/dist/transformers/reverse/index.d.ts.map +0 -1
  1062. package/dist/transformers/reverse/index.js +0 -18
  1063. package/dist/transformers/reverse/index.js.map +0 -1
  1064. package/dist/transformers/reverse/interactionResponse.d.ts.map +0 -1
  1065. package/dist/transformers/reverse/interactionResponse.js +0 -24
  1066. package/dist/transformers/reverse/interactionResponse.js.map +0 -1
  1067. package/dist/transformers/reverse/member.d.ts +0 -6
  1068. package/dist/transformers/reverse/member.d.ts.map +0 -1
  1069. package/dist/transformers/reverse/member.js +0 -34
  1070. package/dist/transformers/reverse/member.js.map +0 -1
  1071. package/dist/transformers/reverse/presence.d.ts +0 -11
  1072. package/dist/transformers/reverse/presence.d.ts.map +0 -1
  1073. package/dist/transformers/reverse/presence.js +0 -23
  1074. package/dist/transformers/reverse/presence.js.map +0 -1
  1075. package/dist/transformers/reverse/team.d.ts +0 -5
  1076. package/dist/transformers/reverse/team.d.ts.map +0 -1
  1077. package/dist/transformers/reverse/team.js +0 -18
  1078. package/dist/transformers/reverse/team.js.map +0 -1
  1079. package/dist/transformers/reverse/widgetSettings.d.ts +0 -5
  1080. package/dist/transformers/reverse/widgetSettings.d.ts.map +0 -1
  1081. package/dist/transformers/reverse/widgetSettings.js +0 -8
  1082. package/dist/transformers/reverse/widgetSettings.js.map +0 -1
  1083. package/dist/transformers/role.d.ts +0 -23
  1084. package/dist/transformers/role.d.ts.map +0 -1
  1085. package/dist/transformers/role.js +0 -21
  1086. package/dist/transformers/role.js.map +0 -1
  1087. package/dist/transformers/scheduledEvent.d.ts +0 -34
  1088. package/dist/transformers/scheduledEvent.d.ts.map +0 -1
  1089. package/dist/transformers/scheduledEvent.js +0 -25
  1090. package/dist/transformers/scheduledEvent.js.map +0 -1
  1091. package/dist/transformers/stageInstance.d.ts +0 -12
  1092. package/dist/transformers/stageInstance.d.ts.map +0 -1
  1093. package/dist/transformers/stageInstance.js +0 -13
  1094. package/dist/transformers/stageInstance.js.map +0 -1
  1095. package/dist/transformers/sticker.d.ts +0 -40
  1096. package/dist/transformers/sticker.d.ts.map +0 -1
  1097. package/dist/transformers/sticker.js +0 -32
  1098. package/dist/transformers/sticker.js.map +0 -1
  1099. package/dist/transformers/team.d.ts +0 -17
  1100. package/dist/transformers/team.d.ts.map +0 -1
  1101. package/dist/transformers/team.js +0 -20
  1102. package/dist/transformers/team.js.map +0 -1
  1103. package/dist/transformers/template.d.ts +0 -421
  1104. package/dist/transformers/template.d.ts.map +0 -1
  1105. package/dist/transformers/template.js +0 -19
  1106. package/dist/transformers/template.js.map +0 -1
  1107. package/dist/transformers/threadMember.d.ts +0 -17
  1108. package/dist/transformers/threadMember.d.ts.map +0 -1
  1109. package/dist/transformers/threadMember.js +0 -19
  1110. package/dist/transformers/threadMember.js.map +0 -1
  1111. package/dist/transformers/toggles/ToggleBitfield.d.ts +0 -22
  1112. package/dist/transformers/toggles/ToggleBitfield.d.ts.map +0 -1
  1113. package/dist/transformers/toggles/ToggleBitfield.js +0 -39
  1114. package/dist/transformers/toggles/ToggleBitfield.js.map +0 -1
  1115. package/dist/transformers/toggles/emoji.d.ts.map +0 -1
  1116. package/dist/transformers/toggles/emoji.js +0 -45
  1117. package/dist/transformers/toggles/emoji.js.map +0 -1
  1118. package/dist/transformers/toggles/guild.d.ts +0 -134
  1119. package/dist/transformers/toggles/guild.d.ts.map +0 -1
  1120. package/dist/transformers/toggles/guild.js +0 -212
  1121. package/dist/transformers/toggles/guild.js.map +0 -1
  1122. package/dist/transformers/toggles/index.d.ts +0 -8
  1123. package/dist/transformers/toggles/index.d.ts.map +0 -1
  1124. package/dist/transformers/toggles/index.js +0 -9
  1125. package/dist/transformers/toggles/index.js.map +0 -1
  1126. package/dist/transformers/toggles/member.d.ts +0 -25
  1127. package/dist/transformers/toggles/member.d.ts.map +0 -1
  1128. package/dist/transformers/toggles/member.js +0 -40
  1129. package/dist/transformers/toggles/member.js.map +0 -1
  1130. package/dist/transformers/toggles/role.d.ts +0 -33
  1131. package/dist/transformers/toggles/role.d.ts.map +0 -1
  1132. package/dist/transformers/toggles/role.js +0 -49
  1133. package/dist/transformers/toggles/role.js.map +0 -1
  1134. package/dist/transformers/toggles/user.d.ts.map +0 -1
  1135. package/dist/transformers/toggles/user.js +0 -45
  1136. package/dist/transformers/toggles/user.js.map +0 -1
  1137. package/dist/transformers/toggles/voice.d.ts.map +0 -1
  1138. package/dist/transformers/toggles/voice.js +0 -60
  1139. package/dist/transformers/toggles/voice.js.map +0 -1
  1140. package/dist/transformers/voiceRegion.d.ts +0 -12
  1141. package/dist/transformers/voiceRegion.d.ts.map +0 -1
  1142. package/dist/transformers/voiceRegion.js +0 -14
  1143. package/dist/transformers/voiceRegion.js.map +0 -1
  1144. package/dist/transformers/voiceState.d.ts +0 -18
  1145. package/dist/transformers/voiceState.d.ts.map +0 -1
  1146. package/dist/transformers/voiceState.js +0 -15
  1147. package/dist/transformers/voiceState.js.map +0 -1
  1148. package/dist/transformers/webhook.d.ts +0 -37
  1149. package/dist/transformers/webhook.d.ts.map +0 -1
  1150. package/dist/transformers/webhook.js +0 -28
  1151. package/dist/transformers/webhook.js.map +0 -1
  1152. package/dist/transformers/welcomeScreen.d.ts +0 -14
  1153. package/dist/transformers/welcomeScreen.d.ts.map +0 -1
  1154. package/dist/transformers/welcomeScreen.js +0 -15
  1155. package/dist/transformers/welcomeScreen.js.map +0 -1
  1156. package/dist/transformers/widget.d.ts +0 -24
  1157. package/dist/transformers/widget.d.ts.map +0 -1
  1158. package/dist/transformers/widget.js +0 -26
  1159. package/dist/transformers/widget.js.map +0 -1
  1160. package/dist/transformers/widgetSettings.d.ts +0 -9
  1161. package/dist/transformers/widgetSettings.d.ts.map +0 -1
  1162. package/dist/transformers/widgetSettings.js +0 -10
  1163. package/dist/transformers/widgetSettings.js.map +0 -1
  1164. package/dist/transformers.d.ts +0 -333
  1165. package/dist/transformers.d.ts.map +0 -1
  1166. package/dist/transformers.js +0 -325
  1167. package/dist/transformers.js.map +0 -1
  1168. package/dist/typings.d.ts +0 -193
  1169. package/dist/typings.d.ts.map +0 -1
  1170. package/dist/typings.js +0 -19
  1171. package/dist/typings.js.map +0 -1
  1172. package/dist/utils.d.ts.map +0 -1
  1173. package/dist/utils.js +0 -11
  1174. package/dist/utils.js.map +0 -1
  1175. /package/dist/{constants.d.ts → types/constants.d.ts} +0 -0
  1176. /package/dist/{handlers → types/handlers}/channels/CHANNEL_DELETE.d.ts +0 -0
  1177. /package/dist/{handlers → types/handlers}/channels/CHANNEL_PINS_UPDATE.d.ts +0 -0
  1178. /package/dist/{handlers → types/handlers}/channels/CHANNEL_UPDATE.d.ts +0 -0
  1179. /package/dist/{handlers → types/handlers}/channels/STAGE_INSTANCE_CREATE.d.ts +0 -0
  1180. /package/dist/{handlers → types/handlers}/channels/STAGE_INSTANCE_DELETE.d.ts +0 -0
  1181. /package/dist/{handlers → types/handlers}/channels/STAGE_INSTANCE_UPDATE.d.ts +0 -0
  1182. /package/dist/{handlers → types/handlers}/channels/THREAD_CREATE.d.ts +0 -0
  1183. /package/dist/{handlers → types/handlers}/channels/THREAD_DELETE.d.ts +0 -0
  1184. /package/dist/{handlers → types/handlers}/channels/THREAD_LIST_SYNC.d.ts +0 -0
  1185. /package/dist/{handlers → types/handlers}/channels/THREAD_UPDATE.d.ts +0 -0
  1186. /package/dist/{handlers → types/handlers}/emojis/GUILD_EMOJIS_UPDATE.d.ts +0 -0
  1187. /package/dist/{handlers → types/handlers}/emojis/index.d.ts +0 -0
  1188. /package/dist/{handlers → types/handlers}/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.d.ts +0 -0
  1189. /package/dist/{handlers → types/handlers}/guilds/GUILD_BAN_ADD.d.ts +0 -0
  1190. /package/dist/{handlers → types/handlers}/guilds/GUILD_BAN_REMOVE.d.ts +0 -0
  1191. /package/dist/{handlers → types/handlers}/guilds/GUILD_CREATE.d.ts +0 -0
  1192. /package/dist/{handlers → types/handlers}/guilds/GUILD_DELETE.d.ts +0 -0
  1193. /package/dist/{handlers → types/handlers}/guilds/GUILD_INTEGRATIONS_UPDATE.d.ts +0 -0
  1194. /package/dist/{handlers → types/handlers}/guilds/GUILD_UPDATE.d.ts +0 -0
  1195. /package/dist/{handlers → types/handlers}/guilds/automod/index.d.ts +0 -0
  1196. /package/dist/{handlers → types/handlers}/guilds/index.d.ts +0 -0
  1197. /package/dist/{handlers → types/handlers}/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.d.ts +0 -0
  1198. /package/dist/{handlers → types/handlers}/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.d.ts +0 -0
  1199. /package/dist/{handlers → types/handlers}/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.d.ts +0 -0
  1200. /package/dist/{handlers → types/handlers}/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.d.ts +0 -0
  1201. /package/dist/{handlers → types/handlers}/guilds/scheduledEvents/index.d.ts +0 -0
  1202. /package/dist/{handlers → types/handlers}/integrations/INTEGRATION_CREATE.d.ts +0 -0
  1203. /package/dist/{handlers → types/handlers}/integrations/INTEGRATION_DELETE.d.ts +0 -0
  1204. /package/dist/{handlers → types/handlers}/integrations/INTEGRATION_UPDATE.d.ts +0 -0
  1205. /package/dist/{handlers → types/handlers}/integrations/index.d.ts +0 -0
  1206. /package/dist/{handlers → types/handlers}/interactions/index.d.ts +0 -0
  1207. /package/dist/{handlers → types/handlers}/invites/INVITE_DELETE.d.ts +0 -0
  1208. /package/dist/{handlers → types/handlers}/invites/index.d.ts +0 -0
  1209. /package/dist/{handlers → types/handlers}/members/GUILD_MEMBER_ADD.d.ts +0 -0
  1210. /package/dist/{handlers → types/handlers}/members/GUILD_MEMBER_REMOVE.d.ts +0 -0
  1211. /package/dist/{handlers → types/handlers}/members/GUILD_MEMBER_UPDATE.d.ts +0 -0
  1212. /package/dist/{handlers → types/handlers}/members/index.d.ts +0 -0
  1213. /package/dist/{handlers → types/handlers}/messages/MESSAGE_CREATE.d.ts +0 -0
  1214. /package/dist/{handlers → types/handlers}/messages/MESSAGE_DELETE.d.ts +0 -0
  1215. /package/dist/{handlers → types/handlers}/messages/MESSAGE_DELETE_BULK.d.ts +0 -0
  1216. /package/dist/{handlers → types/handlers}/messages/MESSAGE_REACTION_ADD.d.ts +0 -0
  1217. /package/dist/{handlers → types/handlers}/messages/MESSAGE_REACTION_REMOVE.d.ts +0 -0
  1218. /package/dist/{handlers → types/handlers}/messages/MESSAGE_REACTION_REMOVE_ALL.d.ts +0 -0
  1219. /package/dist/{handlers → types/handlers}/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts +0 -0
  1220. /package/dist/{handlers → types/handlers}/messages/MESSAGE_UPDATE.d.ts +0 -0
  1221. /package/dist/{handlers → types/handlers}/messages/index.d.ts +0 -0
  1222. /package/dist/{handlers → types/handlers}/misc/PRESENCE_UPDATE.d.ts +0 -0
  1223. /package/dist/{handlers → types/handlers}/misc/READY.d.ts +0 -0
  1224. /package/dist/{handlers → types/handlers}/misc/TYPING_START.d.ts +0 -0
  1225. /package/dist/{handlers → types/handlers}/misc/USER_UPDATE.d.ts +0 -0
  1226. /package/dist/{handlers → types/handlers}/misc/index.d.ts +0 -0
  1227. /package/dist/{handlers → types/handlers}/roles/GUILD_ROLE_CREATE.d.ts +0 -0
  1228. /package/dist/{handlers → types/handlers}/roles/GUILD_ROLE_DELETE.d.ts +0 -0
  1229. /package/dist/{handlers → types/handlers}/roles/GUILD_ROLE_UPDATE.d.ts +0 -0
  1230. /package/dist/{handlers → types/handlers}/roles/index.d.ts +0 -0
  1231. /package/dist/{handlers → types/handlers}/voice/VOICE_SERVER_UPDATE.d.ts +0 -0
  1232. /package/dist/{handlers → types/handlers}/voice/VOICE_STATE_UPDATE.d.ts +0 -0
  1233. /package/dist/{handlers → types/handlers}/webhooks/index.d.ts +0 -0
  1234. /package/dist/{handlers.d.ts → types/handlers.d.ts} +0 -0
  1235. /package/dist/{transformers → types/transformers}/reverse/createApplicationCommand.d.ts +0 -0
  1236. /package/dist/{transformers → types/transformers}/reverse/interactionResponse.d.ts +0 -0
  1237. /package/dist/{transformers → types/transformers}/toggles/emoji.d.ts +0 -0
  1238. /package/dist/{transformers → types/transformers}/toggles/user.d.ts +0 -0
  1239. /package/dist/{transformers → types/transformers}/toggles/voice.d.ts +0 -0
  1240. /package/dist/{utils.d.ts → types/utils.d.ts} +0 -0
@@ -0,0 +1,718 @@
1
+ import { snakelize } from '@discordeno/utils';
2
+ export function createBotHelpers(bot) {
3
+ return {
4
+ createAutomodRule: async (guildId, options, reason)=>{
5
+ return bot.transformers.automodRule(bot, snakelize(await bot.rest.createAutomodRule(guildId, options, reason)));
6
+ },
7
+ createChannel: async (guildId, options, reason)=>{
8
+ return bot.transformers.channel(bot, {
9
+ channel: snakelize(await bot.rest.createChannel(guildId, options, reason)),
10
+ guildId
11
+ });
12
+ },
13
+ createEmoji: async (guildId, options, reason)=>{
14
+ return bot.transformers.emoji(bot, snakelize(await bot.rest.createEmoji(guildId, options, reason)));
15
+ },
16
+ createApplicationEmoji: async (options)=>{
17
+ return bot.transformers.emoji(bot, snakelize(await bot.rest.createApplicationEmoji(options)));
18
+ },
19
+ createForumThread: async (channelId, options, reason)=>{
20
+ return bot.transformers.channel(bot, {
21
+ channel: snakelize(await bot.rest.createForumThread(channelId, options, reason))
22
+ });
23
+ },
24
+ createGlobalApplicationCommand: async (command, options)=>{
25
+ return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.createGlobalApplicationCommand(command, options)));
26
+ },
27
+ createGuild: async (options)=>{
28
+ return bot.transformers.guild(bot, {
29
+ guild: snakelize(await bot.rest.createGuild(options)),
30
+ shardId: 0
31
+ });
32
+ },
33
+ createGuildApplicationCommand: async (command, guildId, options)=>{
34
+ return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.createGuildApplicationCommand(command, guildId, options)));
35
+ },
36
+ createGuildFromTemplate: async (templateCode, options)=>{
37
+ return bot.transformers.guild(bot, {
38
+ guild: snakelize(await bot.rest.createGuildFromTemplate(templateCode, options)),
39
+ shardId: 0
40
+ });
41
+ },
42
+ createGuildSticker: async (guildId, options, reason)=>{
43
+ return bot.transformers.sticker(bot, snakelize(await bot.rest.createGuildSticker(guildId, options, reason)));
44
+ },
45
+ createGuildTemplate: async (guildId, options)=>{
46
+ return bot.transformers.template(bot, snakelize(await bot.rest.createGuildTemplate(guildId, options)));
47
+ },
48
+ createInvite: async (channelId, options, reason)=>{
49
+ return await bot.rest.createInvite(channelId, options, reason);
50
+ },
51
+ createRole: async (guildId, options, reason)=>{
52
+ return bot.transformers.role(bot, {
53
+ role: snakelize(await bot.rest.createRole(guildId, options, reason)),
54
+ guildId
55
+ });
56
+ },
57
+ createScheduledEvent: async (guildId, options, reason)=>{
58
+ return bot.transformers.scheduledEvent(bot, snakelize(await bot.rest.createScheduledEvent(guildId, options, reason)));
59
+ },
60
+ createStageInstance: async (options, reason)=>{
61
+ return bot.transformers.stageInstance(bot, snakelize(await bot.rest.createStageInstance(options, reason)));
62
+ },
63
+ createWebhook: async (channelId, options, reason)=>{
64
+ return bot.transformers.webhook(bot, snakelize(await bot.rest.createWebhook(channelId, options, reason)));
65
+ },
66
+ editApplicationCommandPermissions: async (guildId, commandId, bearerToken, options)=>{
67
+ return bot.transformers.applicationCommandPermission(bot, snakelize(await bot.rest.editApplicationCommandPermissions(guildId, commandId, bearerToken, options)));
68
+ },
69
+ editAutomodRule: async (guildId, ruleId, options, reason)=>{
70
+ return bot.transformers.automodRule(bot, snakelize(await bot.rest.editAutomodRule(guildId, ruleId, options, reason)));
71
+ },
72
+ editBotProfile: async (options)=>{
73
+ return bot.transformers.user(bot, snakelize(await bot.rest.editBotProfile(options)));
74
+ },
75
+ editChannel: async (channelId, options, reason)=>{
76
+ return bot.transformers.channel(bot, {
77
+ channel: snakelize(await bot.rest.editChannel(channelId, options, reason))
78
+ });
79
+ },
80
+ editEmoji: async (guildId, id, options, reason)=>{
81
+ return bot.transformers.emoji(bot, snakelize(await bot.rest.editEmoji(guildId, id, options, reason)));
82
+ },
83
+ editApplicationEmoji: async (id, options)=>{
84
+ return bot.transformers.emoji(bot, snakelize(await bot.rest.editApplicationEmoji(id, options)));
85
+ },
86
+ editFollowupMessage: async (token, messageId, options)=>{
87
+ return bot.transformers.message(bot, snakelize(await bot.rest.editFollowupMessage(token, messageId, options)));
88
+ },
89
+ editGlobalApplicationCommand: async (commandId, options)=>{
90
+ return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.editGlobalApplicationCommand(commandId, options)));
91
+ },
92
+ editGuild: async (guildId, options, reason)=>{
93
+ return bot.transformers.guild(bot, {
94
+ guild: snakelize(await bot.rest.editGuild(guildId, options, reason)),
95
+ shardId: 0
96
+ });
97
+ },
98
+ editGuildApplicationCommand: async (commandId, guildId, options)=>{
99
+ return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.editGuildApplicationCommand(commandId, guildId, options)));
100
+ },
101
+ editGuildSticker: async (guildId, stickerId, options, reason)=>{
102
+ return bot.transformers.sticker(bot, snakelize(await bot.rest.editGuildSticker(guildId, stickerId, options, reason)));
103
+ },
104
+ editGuildTemplate: async (guildId, templateCode, options)=>{
105
+ return bot.transformers.template(bot, snakelize(await bot.rest.editGuildTemplate(guildId, templateCode, options)));
106
+ },
107
+ editMessage: async (channelId, messageId, options)=>{
108
+ return bot.transformers.message(bot, snakelize(await bot.rest.editMessage(channelId, messageId, options)));
109
+ },
110
+ editOriginalInteractionResponse: async (token, options)=>{
111
+ return bot.transformers.message(bot, snakelize(await bot.rest.editOriginalInteractionResponse(token, options)));
112
+ },
113
+ editOriginalWebhookMessage: async (webhookId, token, options)=>{
114
+ return bot.transformers.message(bot, snakelize(await bot.rest.editOriginalWebhookMessage(webhookId, token, options)));
115
+ },
116
+ editRole: async (guildId, roleId, options, reason)=>{
117
+ return bot.transformers.role(bot, {
118
+ role: snakelize(await bot.rest.editRole(guildId, roleId, options, reason)),
119
+ guildId
120
+ });
121
+ },
122
+ editRolePositions: async (guildId, options, reason)=>{
123
+ return snakelize(await bot.rest.editRolePositions(guildId, options, reason)).map((role)=>bot.transformers.role(bot, {
124
+ role,
125
+ guildId
126
+ }));
127
+ },
128
+ editScheduledEvent: async (guildId, eventId, options, reason)=>{
129
+ return bot.transformers.scheduledEvent(bot, snakelize(await bot.rest.editScheduledEvent(guildId, eventId, options, reason)));
130
+ },
131
+ editStageInstance: async (channelId, topic, reason)=>{
132
+ return bot.transformers.stageInstance(bot, snakelize(await bot.rest.editStageInstance(channelId, topic, reason)));
133
+ },
134
+ editWebhook: async (webhookId, options, reason)=>{
135
+ return bot.transformers.webhook(bot, snakelize(await bot.rest.editWebhook(webhookId, options, reason)));
136
+ },
137
+ editWebhookMessage: async (webhookId, token, messageId, options)=>{
138
+ return bot.transformers.message(bot, snakelize(await bot.rest.editWebhookMessage(webhookId, token, messageId, options)));
139
+ },
140
+ editWebhookWithToken: async (webhookId, token, options)=>{
141
+ return bot.transformers.webhook(bot, snakelize(await bot.rest.editWebhookWithToken(webhookId, token, options)));
142
+ },
143
+ editWelcomeScreen: async (guildId, options, reason)=>{
144
+ return bot.transformers.welcomeScreen(bot, snakelize(await bot.rest.editWelcomeScreen(guildId, options, reason)));
145
+ },
146
+ editWidgetSettings: async (guildId, options, reason)=>{
147
+ return bot.transformers.widgetSettings(bot, snakelize(await bot.rest.editWidgetSettings(guildId, options, reason)));
148
+ },
149
+ executeWebhook: async (webhookId, token, options)=>{
150
+ const result = await bot.rest.executeWebhook(webhookId, token, options);
151
+ if (!result) return;
152
+ return bot.transformers.message(bot, snakelize(result));
153
+ },
154
+ followAnnouncement: async (sourceChannelId, targetChannelId)=>{
155
+ return await bot.rest.followAnnouncement(sourceChannelId, targetChannelId);
156
+ },
157
+ getActiveThreads: async (guildId)=>{
158
+ const result = await bot.rest.getActiveThreads(guildId);
159
+ return {
160
+ threads: result.threads.map((thread)=>bot.transformers.channel(bot, {
161
+ guildId,
162
+ channel: snakelize(thread)
163
+ })),
164
+ members: result.members.map((member)=>bot.transformers.threadMember(bot, snakelize(member)))
165
+ };
166
+ },
167
+ getApplicationInfo: async ()=>{
168
+ return bot.transformers.application(bot, {
169
+ application: snakelize(await bot.rest.getApplicationInfo()),
170
+ shardId: 0
171
+ });
172
+ },
173
+ editApplicationInfo: async (body)=>{
174
+ return bot.transformers.application(bot, {
175
+ application: snakelize(await bot.rest.editApplicationInfo(body)),
176
+ shardId: 0
177
+ });
178
+ },
179
+ getCurrentAuthenticationInfo: async (bearerToken)=>{
180
+ return await bot.rest.getCurrentAuthenticationInfo(bearerToken);
181
+ },
182
+ exchangeToken: async (clientId, clientSecret, options)=>{
183
+ return await bot.rest.exchangeToken(clientId, clientSecret, options);
184
+ },
185
+ revokeToken: async (clientId, clientSecret, options)=>{
186
+ return await bot.rest.revokeToken(clientId, clientSecret, options);
187
+ },
188
+ getApplicationCommandPermission: async (guildId, commandId, options)=>{
189
+ const res = await bot.rest.getApplicationCommandPermission(guildId, commandId, options);
190
+ const snakedRes = snakelize(res);
191
+ return bot.transformers.applicationCommandPermission(bot, snakedRes);
192
+ },
193
+ getApplicationCommandPermissions: async (guildId, options)=>{
194
+ return (await bot.rest.getApplicationCommandPermissions(guildId, options)).map((res)=>bot.transformers.applicationCommandPermission(bot, snakelize(res)));
195
+ },
196
+ getAuditLog: async (guildId, options)=>{
197
+ return await bot.rest.getAuditLog(guildId, options);
198
+ },
199
+ getAutomodRule: async (guildId, ruleId)=>{
200
+ return bot.transformers.automodRule(bot, snakelize(await bot.rest.getAutomodRule(guildId, ruleId)));
201
+ },
202
+ getAutomodRules: async (guildId)=>{
203
+ return (await bot.rest.getAutomodRules(guildId)).map((res)=>bot.transformers.automodRule(bot, snakelize(res)));
204
+ },
205
+ getAvailableVoiceRegions: async ()=>{
206
+ return (await bot.rest.getAvailableVoiceRegions()).map((res)=>bot.transformers.voiceRegion(bot, snakelize(res)));
207
+ },
208
+ getBan: async (guildId, userId)=>{
209
+ return await bot.rest.getBan(guildId, userId);
210
+ },
211
+ getBans: async (guildId, options)=>{
212
+ return await bot.rest.getBans(guildId, options);
213
+ },
214
+ getChannel: async (channelId)=>{
215
+ return bot.transformers.channel(bot, {
216
+ channel: snakelize(await bot.rest.getChannel(channelId))
217
+ });
218
+ },
219
+ getChannelInvites: async (channelId)=>{
220
+ return await bot.rest.getChannelInvites(channelId);
221
+ // return (await bot.rest.getChannelInvites(channelId)).map((res) => bot.transformers.invite(bot, snakelize(res)))
222
+ },
223
+ getChannels: async (guildId)=>{
224
+ return (await bot.rest.getChannels(guildId)).map((res)=>bot.transformers.channel(bot, {
225
+ channel: snakelize(res),
226
+ guildId
227
+ }));
228
+ },
229
+ getChannelWebhooks: async (channelId)=>{
230
+ return (await bot.rest.getChannelWebhooks(channelId)).map((res)=>bot.transformers.webhook(bot, snakelize(res)));
231
+ },
232
+ getDmChannel: async (userId)=>{
233
+ return bot.transformers.channel(bot, {
234
+ channel: snakelize(await bot.rest.getDmChannel(userId))
235
+ });
236
+ },
237
+ getGroupDmChannel: async (options)=>{
238
+ return bot.transformers.channel(bot, {
239
+ channel: snakelize(await bot.rest.getGroupDmChannel(options))
240
+ });
241
+ },
242
+ getEmoji: async (guildId, emojiId)=>{
243
+ return bot.transformers.emoji(bot, snakelize(await bot.rest.getEmoji(guildId, emojiId)));
244
+ },
245
+ getApplicationEmoji: async (emojiId)=>{
246
+ return bot.transformers.emoji(bot, snakelize(await bot.rest.getApplicationEmoji(emojiId)));
247
+ },
248
+ getEmojis: async (guildId)=>{
249
+ return (await bot.rest.getEmojis(guildId)).map((res)=>bot.transformers.emoji(bot, snakelize(res)));
250
+ },
251
+ getApplicationEmojis: async ()=>{
252
+ const res = await bot.rest.getApplicationEmojis();
253
+ return {
254
+ items: res.items.map((item)=>bot.transformers.emoji(bot, snakelize(item)))
255
+ };
256
+ },
257
+ getFollowupMessage: async (token, messageId)=>{
258
+ return bot.transformers.message(bot, snakelize(await bot.rest.getFollowupMessage(token, messageId)));
259
+ },
260
+ getGatewayBot: async ()=>{
261
+ return bot.transformers.gatewayBot(bot, snakelize(await bot.rest.getGatewayBot()));
262
+ },
263
+ getGlobalApplicationCommand: async (commandId)=>{
264
+ return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.getGlobalApplicationCommand(commandId)));
265
+ },
266
+ getGlobalApplicationCommands: async ()=>{
267
+ return (await bot.rest.getGlobalApplicationCommands()).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
268
+ },
269
+ getGuild: async (guildId, options)=>{
270
+ return bot.transformers.guild(bot, {
271
+ guild: snakelize(await bot.rest.getGuild(guildId, options)),
272
+ shardId: 0
273
+ });
274
+ },
275
+ getGuilds: async (bearerToken, options)=>{
276
+ // @ts-expect-error getGuilds returns partial guilds
277
+ return (await bot.rest.getGuilds(bearerToken, options)).map((res)=>bot.transformers.guild(bot, {
278
+ guild: snakelize(res),
279
+ shardId: 0
280
+ }));
281
+ },
282
+ getGuildApplicationCommand: async (commandId, guildId)=>{
283
+ return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.getGuildApplicationCommand(commandId, guildId)));
284
+ },
285
+ getGuildApplicationCommands: async (guildId)=>{
286
+ return (await bot.rest.getGuildApplicationCommands(guildId)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
287
+ },
288
+ getGuildPreview: async (guildId)=>{
289
+ return await bot.rest.getGuildPreview(guildId);
290
+ // return bot.transformers.xxx(bot, snakelize(await bot.rest.getGuildPreview(guildId)))
291
+ },
292
+ getGuildSticker: async (guildId, stickerId)=>{
293
+ return bot.transformers.sticker(bot, snakelize(await bot.rest.getGuildSticker(guildId, stickerId)));
294
+ },
295
+ getGuildStickers: async (guildId)=>{
296
+ return (await bot.rest.getGuildStickers(guildId)).map((res)=>bot.transformers.sticker(bot, snakelize(res)));
297
+ },
298
+ getGuildTemplate: async (templateCode)=>{
299
+ return bot.transformers.template(bot, snakelize(await bot.rest.getGuildTemplate(templateCode)));
300
+ },
301
+ getGuildTemplates: async (guildId)=>{
302
+ return (await bot.rest.getGuildTemplates(guildId)).map((res)=>bot.transformers.template(bot, snakelize(res)));
303
+ },
304
+ getGuildWebhooks: async (guildId)=>{
305
+ return (await bot.rest.getGuildWebhooks(guildId)).map((res)=>bot.transformers.webhook(bot, snakelize(res)));
306
+ },
307
+ getIntegrations: async (guildId)=>{
308
+ return (await bot.rest.getIntegrations(guildId)).map((res)=>bot.transformers.integration(bot, snakelize({
309
+ ...res,
310
+ guildId: guildId.toString()
311
+ })));
312
+ },
313
+ getInvite: async (inviteCode, options)=>{
314
+ return bot.transformers.invite(bot, {
315
+ invite: snakelize(await bot.rest.getInvite(inviteCode, options)),
316
+ shardId: 0
317
+ });
318
+ },
319
+ getInvites: async (guildId)=>{
320
+ return (await bot.rest.getInvites(guildId)).map((res)=>bot.transformers.invite(bot, {
321
+ invite: snakelize(res),
322
+ shardId: 0
323
+ }));
324
+ },
325
+ getMessage: async (channelId, messageId)=>{
326
+ return bot.transformers.message(bot, snakelize(await bot.rest.getMessage(channelId, messageId)));
327
+ },
328
+ getMessages: async (channelId, options)=>{
329
+ return (await bot.rest.getMessages(channelId, options)).map((res)=>bot.transformers.message(bot, snakelize(res)));
330
+ },
331
+ getStickerPack: async (stickerPackId)=>{
332
+ return bot.transformers.stickerPack(bot, snakelize(await bot.rest.getStickerPack(stickerPackId)));
333
+ },
334
+ getStickerPacks: async ()=>{
335
+ return (await bot.rest.getStickerPacks()).map((res)=>bot.transformers.stickerPack(bot, snakelize(res)));
336
+ },
337
+ getOriginalInteractionResponse: async (token)=>{
338
+ return bot.transformers.message(bot, snakelize(await bot.rest.getOriginalInteractionResponse(token)));
339
+ },
340
+ getPinnedMessages: async (channelId)=>{
341
+ return (await bot.rest.getPinnedMessages(channelId)).map((res)=>bot.transformers.message(bot, snakelize(res)));
342
+ },
343
+ getPrivateArchivedThreads: async (channelId, options)=>{
344
+ return await bot.rest.getPrivateArchivedThreads(channelId, options);
345
+ // return bot.transformers.xxx(bot, snakelize(await bot.rest.getPrivateArchivedThreads(channelId, options)))
346
+ },
347
+ getPrivateJoinedArchivedThreads: async (channelId, options)=>{
348
+ return await bot.rest.getPrivateJoinedArchivedThreads(channelId, options);
349
+ // return bot.transformers.xxx(bot, snakelize(await bot.rest.getPrivateJoinedArchivedThreads(channelId, options)))
350
+ },
351
+ getPruneCount: async (guildId, options)=>{
352
+ return await bot.rest.getPruneCount(guildId, options);
353
+ // return bot.transformers.xxx(bot, snakelize(await bot.rest.getPruneCount(guildId, options)))
354
+ },
355
+ getPublicArchivedThreads: async (channelId, options)=>{
356
+ return await bot.rest.getPublicArchivedThreads(channelId, options);
357
+ // return bot.transformers.xxx(bot, snakelize(await bot.rest.getPublicArchivedThreads(channelId, options)))
358
+ },
359
+ getRoles: async (guildId)=>{
360
+ return snakelize(await bot.rest.getRoles(guildId)).map((role)=>bot.transformers.role(bot, {
361
+ role,
362
+ guildId
363
+ }));
364
+ },
365
+ getRole: async (guildId, roleId)=>{
366
+ return bot.transformers.role(bot, {
367
+ role: snakelize(await bot.rest.getRole(guildId, roleId)),
368
+ guildId
369
+ });
370
+ },
371
+ getScheduledEvent: async (guildId, eventId, options)=>{
372
+ return bot.transformers.scheduledEvent(bot, snakelize(await bot.rest.getScheduledEvent(guildId, eventId, options)));
373
+ },
374
+ getScheduledEvents: async (guildId, options)=>{
375
+ return (await bot.rest.getScheduledEvents(guildId, options)).map((res)=>bot.transformers.scheduledEvent(bot, snakelize(res)));
376
+ },
377
+ getScheduledEventUsers: async (guildId, eventId, options)=>{
378
+ return (await bot.rest.getScheduledEventUsers(guildId, eventId, options)).map((u)=>{
379
+ return {
380
+ user: bot.transformers.user(bot, snakelize(u.user)),
381
+ member: u.member && bot.transformers.member(bot, snakelize(u.member), guildId, bot.transformers.snowflake(u.user.id))
382
+ };
383
+ });
384
+ },
385
+ getSessionInfo: async ()=>{
386
+ return bot.transformers.gatewayBot(bot, snakelize(await bot.rest.getSessionInfo()));
387
+ },
388
+ getStageInstance: async (channelId)=>{
389
+ return bot.transformers.stageInstance(bot, snakelize(await bot.rest.getStageInstance(channelId)));
390
+ },
391
+ getOwnVoiceState: async (guildId)=>{
392
+ return bot.transformers.voiceState(bot, {
393
+ guildId,
394
+ voiceState: snakelize(await bot.rest.getOwnVoiceState(guildId))
395
+ });
396
+ },
397
+ getUserVoiceState: async (guildId, userId)=>{
398
+ return bot.transformers.voiceState(bot, {
399
+ guildId,
400
+ voiceState: snakelize(await bot.rest.getUserVoiceState(guildId, userId))
401
+ });
402
+ },
403
+ getSticker: async (stickerId)=>{
404
+ return bot.transformers.sticker(bot, snakelize(await bot.rest.getSticker(stickerId)));
405
+ },
406
+ getThreadMember: async (channelId, userId)=>{
407
+ return bot.transformers.threadMember(bot, snakelize(await bot.rest.getThreadMember(channelId, userId)));
408
+ },
409
+ getThreadMembers: async (channelId)=>{
410
+ return (await bot.rest.getThreadMembers(channelId)).map((res)=>bot.transformers.threadMember(bot, snakelize(res)));
411
+ },
412
+ getReactions: async (channelId, messageId, reaction, options)=>{
413
+ return (await bot.rest.getReactions(channelId, messageId, reaction, options)).map((res)=>bot.transformers.user(bot, snakelize(res)));
414
+ },
415
+ getUser: async (id)=>{
416
+ return bot.transformers.user(bot, snakelize(await bot.rest.getUser(id)));
417
+ },
418
+ getCurrentUser: async (bearerToken)=>{
419
+ return bot.transformers.user(bot, snakelize(await bot.rest.getCurrentUser(bearerToken)));
420
+ },
421
+ getUserConnections: async (bearerToken)=>{
422
+ return await bot.rest.getUserConnections(bearerToken);
423
+ },
424
+ getUserApplicationRoleConnection: async (bearerToken, applicationId)=>{
425
+ return await bot.rest.getUserApplicationRoleConnection(bearerToken, applicationId);
426
+ },
427
+ getVanityUrl: async (guildId)=>{
428
+ return await bot.rest.getVanityUrl(guildId);
429
+ },
430
+ getVoiceRegions: async (guildId)=>{
431
+ return (await bot.rest.getVoiceRegions(guildId)).map((res)=>bot.transformers.voiceRegion(bot, snakelize(res)));
432
+ },
433
+ getWebhook: async (webhookId)=>{
434
+ return bot.transformers.webhook(bot, snakelize(await bot.rest.getWebhook(webhookId)));
435
+ },
436
+ getWebhookMessage: async (webhookId, token, messageId, options)=>{
437
+ return bot.transformers.message(bot, snakelize(await bot.rest.getWebhookMessage(webhookId, token, messageId, options)));
438
+ },
439
+ getWebhookWithToken: async (webhookId, token)=>{
440
+ return bot.transformers.webhook(bot, snakelize(await bot.rest.getWebhookWithToken(webhookId, token)));
441
+ },
442
+ getWelcomeScreen: async (guildId)=>{
443
+ return bot.transformers.welcomeScreen(bot, snakelize(await bot.rest.getWelcomeScreen(guildId)));
444
+ },
445
+ getWidget: async (guildId)=>{
446
+ return bot.transformers.widget(bot, snakelize(await bot.rest.getWidget(guildId)));
447
+ },
448
+ getWidgetSettings: async (guildId)=>{
449
+ return bot.transformers.widgetSettings(bot, snakelize(await bot.rest.getWidgetSettings(guildId)));
450
+ },
451
+ publishMessage: async (channelId, messageId)=>{
452
+ return bot.transformers.message(bot, snakelize(await bot.rest.publishMessage(channelId, messageId)));
453
+ },
454
+ sendMessage: async (channelId, options)=>{
455
+ return bot.transformers.message(bot, snakelize(await bot.rest.sendMessage(channelId, options)));
456
+ },
457
+ sendFollowupMessage: async (token, options)=>{
458
+ return bot.transformers.message(bot, snakelize(await bot.rest.sendFollowupMessage(token, options)));
459
+ },
460
+ startThreadWithMessage: async (channelId, messageId, options, reason)=>{
461
+ return bot.transformers.channel(bot, {
462
+ channel: snakelize(await bot.rest.startThreadWithMessage(channelId, messageId, options, reason))
463
+ });
464
+ },
465
+ startThreadWithoutMessage: async (channelId, options, reason)=>{
466
+ return bot.transformers.channel(bot, {
467
+ channel: snakelize(await bot.rest.startThreadWithoutMessage(channelId, options, reason))
468
+ });
469
+ },
470
+ syncGuildTemplate: async (guildId)=>{
471
+ return bot.transformers.template(bot, snakelize(await bot.rest.syncGuildTemplate(guildId)));
472
+ },
473
+ upsertGlobalApplicationCommands: async (commands, options)=>{
474
+ return (await bot.rest.upsertGlobalApplicationCommands(commands, options)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
475
+ },
476
+ upsertGuildApplicationCommands: async (guildId, commands, options)=>{
477
+ return (await bot.rest.upsertGuildApplicationCommands(guildId, commands, options)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
478
+ },
479
+ editBotMember: async (guildId, options, reason)=>{
480
+ return bot.transformers.member(bot, snakelize(await bot.rest.editBotMember(guildId, options, reason)), guildId, bot.id);
481
+ },
482
+ editMember: async (guildId, userId, options, reason)=>{
483
+ return bot.transformers.member(bot, snakelize(await bot.rest.editMember(guildId, userId, options, reason)), guildId, userId);
484
+ },
485
+ getMember: async (guildId, userId)=>{
486
+ return bot.transformers.member(bot, snakelize(await bot.rest.getMember(guildId, userId)), guildId, userId);
487
+ },
488
+ getCurrentMember: async (guildId, bearerToken)=>{
489
+ const res = await bot.rest.getCurrentMember(guildId, bearerToken);
490
+ return bot.transformers.member(bot, snakelize(res), guildId, bot.transformers.snowflake(res.user.id));
491
+ },
492
+ getMembers: async (guildId, options)=>{
493
+ return (await bot.rest.getMembers(guildId, options)).map((res)=>bot.transformers.member(bot, snakelize(res), guildId, bot.transformers.snowflake(res.user.id)));
494
+ },
495
+ pruneMembers: async (guildId, options, reason)=>{
496
+ return await bot.rest.pruneMembers(guildId, options, reason);
497
+ },
498
+ searchMembers: async (guildId, query, options)=>{
499
+ return (await bot.rest.searchMembers(guildId, query, options)).map((res)=>bot.transformers.member(bot, snakelize(res), guildId, bot.transformers.snowflake(res.user.id)));
500
+ },
501
+ bulkBanMembers: async (guildId, options, reason)=>{
502
+ const res = await bot.rest.bulkBanMembers(guildId, options, reason);
503
+ return {
504
+ bannedUsers: res.bannedUsers.map((x)=>bot.transformers.snowflake(x)),
505
+ failedUsers: res.failedUsers.map((x)=>bot.transformers.snowflake(x))
506
+ };
507
+ },
508
+ getApplicationActivityInstance: async (applicationId, instanceId)=>{
509
+ return await bot.rest.getApplicationActivityInstance(applicationId, instanceId);
510
+ },
511
+ // All useless void return functions here
512
+ addReaction: async (channelId, messageId, reaction)=>{
513
+ return await bot.rest.addReaction(channelId, messageId, reaction);
514
+ },
515
+ addReactions: async (channelId, messageId, reactions, ordered)=>{
516
+ return await bot.rest.addReactions(channelId, messageId, reactions, ordered);
517
+ },
518
+ addRole: async (guildId, userId, roleId, reason)=>{
519
+ return await bot.rest.addRole(guildId, userId, roleId, reason);
520
+ },
521
+ addThreadMember: async (channelId, userId)=>{
522
+ return await bot.rest.addThreadMember(channelId, userId);
523
+ },
524
+ addDmRecipient: async (channelId, userId, options)=>{
525
+ return await bot.rest.addDmRecipient(channelId, userId, options);
526
+ },
527
+ addGuildMember: async (guildId, userId, options)=>{
528
+ return await bot.rest.addGuildMember(guildId, userId, options);
529
+ },
530
+ deleteAutomodRule: async (guildId, ruleId, reason)=>{
531
+ return await bot.rest.deleteAutomodRule(guildId, ruleId, reason);
532
+ },
533
+ deleteChannel: async (channelId, reason)=>{
534
+ return await bot.rest.deleteChannel(channelId, reason);
535
+ },
536
+ deleteChannelPermissionOverride: async (channelId, overwriteId, reason)=>{
537
+ return await bot.rest.deleteChannelPermissionOverride(channelId, overwriteId, reason);
538
+ },
539
+ deleteEmoji: async (guildId, id, reason)=>{
540
+ return await bot.rest.deleteEmoji(guildId, id, reason);
541
+ },
542
+ deleteApplicationEmoji: async (id)=>{
543
+ return await bot.rest.deleteApplicationEmoji(id);
544
+ },
545
+ deleteFollowupMessage: async (token, messageId)=>{
546
+ return await bot.rest.deleteFollowupMessage(token, messageId);
547
+ },
548
+ deleteGlobalApplicationCommand: async (commandId)=>{
549
+ return await bot.rest.deleteGlobalApplicationCommand(commandId);
550
+ },
551
+ deleteGuild: async (guildId)=>{
552
+ return await bot.rest.deleteGuild(guildId);
553
+ },
554
+ deleteGuildApplicationCommand: async (commandId, guildId)=>{
555
+ return await bot.rest.deleteGuildApplicationCommand(commandId, guildId);
556
+ },
557
+ deleteGuildSticker: async (guildId, stickerId, reason)=>{
558
+ return await bot.rest.deleteGuildSticker(guildId, stickerId, reason);
559
+ },
560
+ deleteGuildTemplate: async (guildId, templateCode)=>{
561
+ return await bot.rest.deleteGuildTemplate(guildId, templateCode);
562
+ },
563
+ deleteIntegration: async (guildId, integrationId, reason)=>{
564
+ return await bot.rest.deleteIntegration(guildId, integrationId, reason);
565
+ },
566
+ deleteInvite: async (inviteCode, reason)=>{
567
+ return await bot.rest.deleteInvite(inviteCode, reason);
568
+ },
569
+ deleteMessage: async (channelId, messageId, reason)=>{
570
+ return await bot.rest.deleteMessage(channelId, messageId, reason);
571
+ },
572
+ deleteMessages: async (channelId, messageIds, reason)=>{
573
+ return await bot.rest.deleteMessages(channelId, messageIds, reason);
574
+ },
575
+ deleteOriginalInteractionResponse: async (token)=>{
576
+ return await bot.rest.deleteOriginalInteractionResponse(token);
577
+ },
578
+ deleteOwnReaction: async (channelId, messageId, reaction)=>{
579
+ return await bot.rest.deleteOwnReaction(channelId, messageId, reaction);
580
+ },
581
+ deleteReactionsAll: async (channelId, messageId)=>{
582
+ return await bot.rest.deleteReactionsAll(channelId, messageId);
583
+ },
584
+ deleteReactionsEmoji: async (channelId, messageId, reaction)=>{
585
+ return await bot.rest.deleteReactionsEmoji(channelId, messageId, reaction);
586
+ },
587
+ deleteRole: async (guildId, roleId, reason)=>{
588
+ return await bot.rest.deleteRole(guildId, roleId, reason);
589
+ },
590
+ deleteScheduledEvent: async (guildId, eventId)=>{
591
+ return await bot.rest.deleteScheduledEvent(guildId, eventId);
592
+ },
593
+ deleteStageInstance: async (channelId, reason)=>{
594
+ return await bot.rest.deleteStageInstance(channelId, reason);
595
+ },
596
+ deleteUserReaction: async (channelId, messageId, userId, reaction)=>{
597
+ return await bot.rest.deleteUserReaction(channelId, messageId, userId, reaction);
598
+ },
599
+ deleteWebhook: async (webhookId, reason)=>{
600
+ return await bot.rest.deleteWebhook(webhookId, reason);
601
+ },
602
+ deleteWebhookMessage: async (webhookId, token, messageId, options)=>{
603
+ return await bot.rest.deleteWebhookMessage(webhookId, token, messageId, options);
604
+ },
605
+ deleteWebhookWithToken: async (webhookId, token)=>{
606
+ return await bot.rest.deleteWebhookWithToken(webhookId, token);
607
+ },
608
+ editChannelPermissionOverrides: async (channelId, options, reason)=>{
609
+ return await bot.rest.editChannelPermissionOverrides(channelId, options, reason);
610
+ },
611
+ editChannelPositions: async (guildId, channelPositions)=>{
612
+ return await bot.rest.editChannelPositions(guildId, channelPositions);
613
+ },
614
+ editGuildMfaLevel: async (guildId, mfaLevel, reason)=>{
615
+ return await bot.rest.editGuildMfaLevel(guildId, mfaLevel, reason);
616
+ },
617
+ editOwnVoiceState: async (guildId, options)=>{
618
+ return await bot.rest.editOwnVoiceState(guildId, options);
619
+ },
620
+ editUserVoiceState: async (guildId, options)=>{
621
+ return await bot.rest.editUserVoiceState(guildId, options);
622
+ },
623
+ editUserApplicationRoleConnection: async (bearerToken, applicationId, options)=>{
624
+ return await bot.rest.editUserApplicationRoleConnection(bearerToken, applicationId, options);
625
+ },
626
+ joinThread: async (channelId)=>{
627
+ return await bot.rest.joinThread(channelId);
628
+ },
629
+ leaveGuild: async (guildId)=>{
630
+ return await bot.rest.leaveGuild(guildId);
631
+ },
632
+ leaveThread: async (channelId)=>{
633
+ return await bot.rest.leaveThread(channelId);
634
+ },
635
+ removeRole: async (guildId, userId, roleId, reason)=>{
636
+ return await bot.rest.removeRole(guildId, userId, roleId, reason);
637
+ },
638
+ removeThreadMember: async (channelId, userId)=>{
639
+ return await bot.rest.removeThreadMember(channelId, userId);
640
+ },
641
+ removeDmRecipient: async (channelId, userId)=>{
642
+ return await bot.rest.removeDmRecipient(channelId, userId);
643
+ },
644
+ sendInteractionResponse: async (interactionId, token, options, params)=>{
645
+ const response = await bot.rest.sendInteractionResponse(interactionId, token, options, params);
646
+ if (!response) return;
647
+ return bot.transformers.interactionCallbackResponse(bot, snakelize(response));
648
+ },
649
+ triggerTypingIndicator: async (channelId)=>{
650
+ return await bot.rest.triggerTypingIndicator(channelId);
651
+ },
652
+ banMember: async (guildId, userId, options, reason)=>{
653
+ return await bot.rest.banMember(guildId, userId, options, reason);
654
+ },
655
+ kickMember: async (guildId, userId, reason)=>{
656
+ return await bot.rest.kickMember(guildId, userId, reason);
657
+ },
658
+ pinMessage: async (channelId, messageId, reason)=>{
659
+ return await bot.rest.pinMessage(channelId, messageId, reason);
660
+ },
661
+ unbanMember: async (guildId, userId, reason)=>{
662
+ return await bot.rest.unbanMember(guildId, userId, reason);
663
+ },
664
+ unpinMessage: async (channelId, messageId, reason)=>{
665
+ return await bot.rest.unpinMessage(channelId, messageId, reason);
666
+ },
667
+ getGuildOnboarding: async (guildId)=>{
668
+ return bot.transformers.guildOnboarding(bot, snakelize(await bot.rest.getGuildOnboarding(guildId)));
669
+ },
670
+ editGuildOnboarding: async (guildId, options, reason)=>{
671
+ return bot.transformers.guildOnboarding(bot, snakelize(await bot.rest.editGuildOnboarding(guildId, options, reason)));
672
+ },
673
+ listEntitlements: async (applicationId, options)=>{
674
+ return (await bot.rest.listEntitlements(applicationId, options)).map((entitlement)=>bot.transformers.entitlement(bot, snakelize(entitlement)));
675
+ },
676
+ createTestEntitlement: async (applicationId, body)=>{
677
+ return bot.transformers.entitlement(bot, snakelize(await bot.rest.createTestEntitlement(applicationId, body)));
678
+ },
679
+ deleteTestEntitlement: async (applicationId, entitlementId)=>{
680
+ await bot.rest.deleteTestEntitlement(applicationId, entitlementId);
681
+ },
682
+ listSkus: async (applicationId)=>{
683
+ return (await bot.rest.listSkus(applicationId)).map((sku)=>bot.transformers.sku(bot, snakelize(sku)));
684
+ },
685
+ getSubscription: async (skuId, subscriptionId)=>{
686
+ return await bot.rest.getSubscription(skuId, subscriptionId);
687
+ },
688
+ listSubscriptions: async (skuId, options)=>{
689
+ return await bot.rest.listSubscriptions(skuId, options);
690
+ },
691
+ sendSoundboardSound: async (channelId, options)=>{
692
+ await bot.rest.sendSoundboardSound(channelId, options);
693
+ },
694
+ listDefaultSoundboardSounds: async ()=>{
695
+ return (await bot.rest.listDefaultSoundboardSounds()).map((sound)=>bot.transformers.soundboardSound(bot, snakelize(sound)));
696
+ },
697
+ listGuildSoundboardSounds: async (guildId)=>{
698
+ const res = await bot.rest.listGuildSoundboardSounds(guildId);
699
+ return {
700
+ items: res.items.map((sound)=>bot.transformers.soundboardSound(bot, snakelize(sound)))
701
+ };
702
+ },
703
+ getGuildSoundboardSound: async (guildId, soundId)=>{
704
+ return bot.transformers.soundboardSound(bot, snakelize(await bot.rest.getGuildSoundboardSound(guildId, soundId)));
705
+ },
706
+ createGuildSoundboardSound: async (guildId, options, reason)=>{
707
+ return bot.transformers.soundboardSound(bot, snakelize(await bot.rest.createGuildSoundboardSound(guildId, options, reason)));
708
+ },
709
+ modifyGuildSoundboardSound: async (guildId, soundId, options, reason)=>{
710
+ return bot.transformers.soundboardSound(bot, snakelize(await bot.rest.modifyGuildSoundboardSound(guildId, soundId, options, reason)));
711
+ },
712
+ deleteGuildSoundboardSound: async (guildId, soundId, reason)=>{
713
+ await bot.rest.deleteGuildSoundboardSound(guildId, soundId, reason);
714
+ }
715
+ };
716
+ }
717
+
718
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ3JlYXRlV2ViaG9vayB9IGZyb20gJ0BkaXNjb3JkZW5vL3Jlc3QnXG5pbXBvcnQgdHlwZSB7XG4gIEFkZERtUmVjaXBpZW50T3B0aW9ucyxcbiAgQWRkR3VpbGRNZW1iZXJPcHRpb25zLFxuICBBdExlYXN0T25lLFxuICBCZWdpbkd1aWxkUHJ1bmUsXG4gIEJpZ1N0cmluZyxcbiAgQ2FtZWxpemUsXG4gIENhbWVsaXplZERpc2NvcmRBY2Nlc3NUb2tlblJlc3BvbnNlLFxuICBDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsXG4gIENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uLFxuICBDYW1lbGl6ZWREaXNjb3JkQXJjaGl2ZWRUaHJlYWRzLFxuICBDYW1lbGl6ZWREaXNjb3JkQXVkaXRMb2csXG4gIENhbWVsaXplZERpc2NvcmRCYW4sXG4gIENhbWVsaXplZERpc2NvcmRDb25uZWN0aW9uLFxuICBDYW1lbGl6ZWREaXNjb3JkQ3VycmVudEF1dGhvcml6YXRpb24sXG4gIENhbWVsaXplZERpc2NvcmRGb2xsb3dlZENoYW5uZWwsXG4gIENhbWVsaXplZERpc2NvcmRHZXRHYXRld2F5Qm90LFxuICBDYW1lbGl6ZWREaXNjb3JkR3VpbGRQcmV2aWV3LFxuICBDYW1lbGl6ZWREaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncyxcbiAgQ2FtZWxpemVkRGlzY29yZEludml0ZSxcbiAgQ2FtZWxpemVkRGlzY29yZEludml0ZU1ldGFkYXRhLFxuICBDYW1lbGl6ZWREaXNjb3JkTW9kaWZ5R3VpbGRXZWxjb21lU2NyZWVuLFxuICBDYW1lbGl6ZWREaXNjb3JkUHJ1bmVkQ291bnQsXG4gIENhbWVsaXplZERpc2NvcmRUb2tlbkV4Y2hhbmdlLFxuICBDYW1lbGl6ZWREaXNjb3JkVG9rZW5SZXZvY2F0aW9uLFxuICBDYW1lbGl6ZWREaXNjb3JkVmFuaXR5VXJsLFxuICBDYW1lbGl6ZWREaXNjb3JkVm9pY2VSZWdpb24sXG4gIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlQXBwbGljYXRpb25FbW9qaSxcbiAgQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucyxcbiAgQ3JlYXRlQ2hhbm5lbEludml0ZSxcbiAgQ3JlYXRlRW50aXRsZW1lbnQsXG4gIENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLFxuICBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZCxcbiAgQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZEJhbixcbiAgQ3JlYXRlR3VpbGRCdWxrQmFuLFxuICBDcmVhdGVHdWlsZENoYW5uZWwsXG4gIENyZWF0ZUd1aWxkRW1vamksXG4gIENyZWF0ZUd1aWxkRnJvbVRlbXBsYXRlLFxuICBDcmVhdGVHdWlsZFJvbGUsXG4gIENyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kLFxuICBDcmVhdGVHdWlsZFN0aWNrZXJPcHRpb25zLFxuICBDcmVhdGVNZXNzYWdlT3B0aW9ucyxcbiAgQ3JlYXRlU2NoZWR1bGVkRXZlbnQsXG4gIENyZWF0ZVN0YWdlSW5zdGFuY2UsXG4gIENyZWF0ZVRlbXBsYXRlLFxuICBEZWxldGVXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gIERpc2NvcmRBY3Rpdml0eUluc3RhbmNlLFxuICBEaXNjb3JkRW50aXRsZW1lbnQsXG4gIERpc2NvcmRNZXNzYWdlLFxuICBEaXNjb3JkU3Vic2NyaXB0aW9uLFxuICBFZGl0QXBwbGljYXRpb24sXG4gIEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLFxuICBFZGl0Qm90TWVtYmVyT3B0aW9ucyxcbiAgRWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzT3B0aW9ucyxcbiAgRWRpdEd1aWxkT25ib2FyZGluZyxcbiAgRWRpdEd1aWxkUm9sZSxcbiAgRWRpdEd1aWxkU3RpY2tlck9wdGlvbnMsXG4gIEVkaXRNZXNzYWdlLFxuICBFZGl0T3duVm9pY2VTdGF0ZSxcbiAgRWRpdFNjaGVkdWxlZEV2ZW50LFxuICBFZGl0VXNlclZvaWNlU3RhdGUsXG4gIEV4ZWN1dGVXZWJob29rLFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgR2V0QmFucyxcbiAgR2V0RW50aXRsZW1lbnRzLFxuICBHZXRHcm91cERtT3B0aW9ucyxcbiAgR2V0R3VpbGRBdWRpdExvZyxcbiAgR2V0R3VpbGRQcnVuZUNvdW50UXVlcnksXG4gIEdldEludml0ZSxcbiAgR2V0TWVzc2FnZXNPcHRpb25zLFxuICBHZXRSZWFjdGlvbnMsXG4gIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsXG4gIEdldFNjaGVkdWxlZEV2ZW50cyxcbiAgR2V0VXNlckd1aWxkcyxcbiAgR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gIEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIExpc3RBcmNoaXZlZFRocmVhZHMsXG4gIExpc3RHdWlsZE1lbWJlcnMsXG4gIExpc3RTa3VTdWJzY3JpcHRpb25zT3B0aW9ucyxcbiAgTWZhTGV2ZWxzLFxuICBNb2RpZnlBcHBsaWNhdGlvbkVtb2ppLFxuICBNb2RpZnlDaGFubmVsLFxuICBNb2RpZnlHdWlsZCxcbiAgTW9kaWZ5R3VpbGRDaGFubmVsUG9zaXRpb25zLFxuICBNb2RpZnlHdWlsZEVtb2ppLFxuICBNb2RpZnlHdWlsZE1lbWJlcixcbiAgTW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQsXG4gIE1vZGlmeUd1aWxkVGVtcGxhdGUsXG4gIE1vZGlmeVJvbGVQb3NpdGlvbnMsXG4gIE1vZGlmeVdlYmhvb2ssXG4gIFNlYXJjaE1lbWJlcnMsXG4gIFNlbmRTb3VuZGJvYXJkU291bmQsXG4gIFN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2UsXG4gIFN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UsXG4gIFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gIFVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBzbmFrZWxpemUgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB0eXBlIHsgQm90IH0gZnJvbSAnLi9ib3QuanMnXG5pbXBvcnQgdHlwZSB7XG4gIEFwcGxpY2F0aW9uLFxuICBBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIEF1dG9Nb2RlcmF0aW9uUnVsZSxcbiAgQ2hhbm5lbCxcbiAgRW1vamksXG4gIEVudGl0bGVtZW50LFxuICBHdWlsZCxcbiAgR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyxcbiAgR3VpbGRPbmJvYXJkaW5nLFxuICBHdWlsZFdpZGdldCxcbiAgR3VpbGRXaWRnZXRTZXR0aW5ncyxcbiAgSW50ZWdyYXRpb24sXG4gIEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSxcbiAgSW52aXRlLFxuICBNZW1iZXIsXG4gIE1lc3NhZ2UsXG4gIFJvbGUsXG4gIFNjaGVkdWxlZEV2ZW50LFxuICBTa3UsXG4gIFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhZ2VJbnN0YW5jZSxcbiAgU3RpY2tlcixcbiAgU3RpY2tlclBhY2ssXG4gIFRlbXBsYXRlLFxuICBUaHJlYWRNZW1iZXIsXG4gIFVzZXIsXG4gIFZvaWNlU3RhdGUsXG4gIFdlYmhvb2ssXG4gIFdlbGNvbWVTY3JlZW4sXG59IGZyb20gJy4vdHJhbnNmb3JtZXJzL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQm90SGVscGVycyhib3Q6IEJvdCk6IEJvdEhlbHBlcnMge1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZUF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVBdXRvbW9kUnVsZShndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGNyZWF0ZUNoYW5uZWw6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVDaGFubmVsKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpLCBndWlsZElkIH0pXG4gICAgfSxcbiAgICBjcmVhdGVFbW9qaTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlRW1vamkoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkpXG4gICAgfSxcbiAgICBjcmVhdGVBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlQXBwbGljYXRpb25FbW9qaShvcHRpb25zKSkpXG4gICAgfSxcbiAgICBjcmVhdGVGb3J1bVRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlRm9ydW1UaHJlYWQoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSB9KVxuICAgIH0sXG4gICAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKSkpXG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZDogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgeyBndWlsZDogc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkKG9wdGlvbnMpKSwgc2hhcmRJZDogMCB9KVxuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kLCBndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZCwgZ3VpbGRJZCwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRGcm9tVGVtcGxhdGU6IGFzeW5jICh0ZW1wbGF0ZUNvZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgeyBndWlsZDogc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkRnJvbVRlbXBsYXRlKHRlbXBsYXRlQ29kZSwgb3B0aW9ucykpLCBzaGFyZElkOiAwIH0pXG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZFN0aWNrZXI6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlR3VpbGRTdGlja2VyKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgY3JlYXRlSW52aXRlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5jcmVhdGVJbnZpdGUoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pXG4gICAgfSxcbiAgICBjcmVhdGVSb2xlOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgeyByb2xlOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlUm9sZShndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSwgZ3VpbGRJZCB9KVxuICAgIH0sXG4gICAgY3JlYXRlU2NoZWR1bGVkRXZlbnQ6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVNjaGVkdWxlZEV2ZW50KGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgY3JlYXRlU3RhZ2VJbnN0YW5jZTogYXN5bmMgKG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RhZ2VJbnN0YW5jZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVTdGFnZUluc3RhbmNlKG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgY3JlYXRlV2ViaG9vazogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVdlYmhvb2soY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogYXN5bmMgKGd1aWxkSWQsIGNvbW1hbmRJZCwgYmVhcmVyVG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24oXG4gICAgICAgIGJvdCxcbiAgICAgICAgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhndWlsZElkLCBjb21tYW5kSWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSksXG4gICAgICApXG4gICAgfSxcbiAgICBlZGl0QXV0b21vZFJ1bGU6IGFzeW5jIChndWlsZElkLCBydWxlSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXV0b21vZFJ1bGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEF1dG9tb2RSdWxlKGd1aWxkSWQsIHJ1bGVJZCwgb3B0aW9ucywgcmVhc29uKSkpXG4gICAgfSxcbiAgICBlZGl0Qm90UHJvZmlsZTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEJvdFByb2ZpbGUob3B0aW9ucykpKVxuICAgIH0sXG4gICAgZWRpdENoYW5uZWw6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRDaGFubmVsKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSkgfSlcbiAgICB9LFxuICAgIGVkaXRFbW9qaTogYXN5bmMgKGd1aWxkSWQsIGlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRFbW9qaShndWlsZElkLCBpZCwgb3B0aW9ucywgcmVhc29uKSkpXG4gICAgfSxcbiAgICBlZGl0QXBwbGljYXRpb25FbW9qaTogYXN5bmMgKGlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0QXBwbGljYXRpb25FbW9qaShpZCwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgZWRpdEZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSkpXG4gICAgfSxcbiAgICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQsIG9wdGlvbnMpKSlcbiAgICB9LFxuICAgIGVkaXRHdWlsZDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGQoYm90LCB7IGd1aWxkOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpLCBzaGFyZElkOiAwIH0pXG4gICAgfSxcbiAgICBlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBndWlsZElkLCBvcHRpb25zKSkpXG4gICAgfSxcbiAgICBlZGl0R3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkU3RpY2tlcihndWlsZElkLCBzdGlja2VySWQsIG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgZWRpdEd1aWxkVGVtcGxhdGU6IGFzeW5jIChndWlsZElkLCB0ZW1wbGF0ZUNvZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRHdWlsZFRlbXBsYXRlKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgZWRpdE1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0TWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucykpIGFzIERpc2NvcmRNZXNzYWdlKVxuICAgIH0sXG4gICAgZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodG9rZW4sIG9wdGlvbnMpKSlcbiAgICB9LFxuICAgIGVkaXRPcmlnaW5hbFdlYmhvb2tNZXNzYWdlOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0T3JpZ2luYWxXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSkgYXMgRGlzY29yZE1lc3NhZ2UpXG4gICAgfSxcbiAgICBlZGl0Um9sZTogYXN5bmMgKGd1aWxkSWQsIHJvbGVJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgeyByb2xlOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFJvbGUoZ3VpbGRJZCwgcm9sZUlkLCBvcHRpb25zLCByZWFzb24pKSwgZ3VpbGRJZCB9KVxuICAgIH0sXG4gICAgZWRpdFJvbGVQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFJvbGVQb3NpdGlvbnMoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGUsIGd1aWxkSWQgfSkpXG4gICAgfSxcbiAgICBlZGl0U2NoZWR1bGVkRXZlbnQ6IGFzeW5jIChndWlsZElkLCBldmVudElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRTY2hlZHVsZWRFdmVudChndWlsZElkLCBldmVudElkLCBvcHRpb25zLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGVkaXRTdGFnZUluc3RhbmNlOiBhc3luYyAoY2hhbm5lbElkLCB0b3BpYywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGFnZUluc3RhbmNlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCwgdG9waWMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgZWRpdFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2ViaG9vayh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgZWRpdFdlYmhvb2tNZXNzYWdlOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpKSBhcyBEaXNjb3JkTWVzc2FnZSlcbiAgICB9LFxuICAgIGVkaXRXZWJob29rV2l0aFRva2VuOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2ViaG9va1dpdGhUb2tlbih3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSkpXG4gICAgfSxcbiAgICBlZGl0V2VsY29tZVNjcmVlbjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2VsY29tZVNjcmVlbihndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGVkaXRXaWRnZXRTZXR0aW5nczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2lkZ2V0U2V0dGluZ3MoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFdpZGdldFNldHRpbmdzKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgZXhlY3V0ZVdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBib3QucmVzdC5leGVjdXRlV2ViaG9vayh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKVxuICAgICAgaWYgKCFyZXN1bHQpIHJldHVyblxuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKHJlc3VsdCkgYXMgRGlzY29yZE1lc3NhZ2UpXG4gICAgfSxcbiAgICBmb2xsb3dBbm5vdW5jZW1lbnQ6IGFzeW5jIChzb3VyY2VDaGFubmVsSWQsIHRhcmdldENoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmZvbGxvd0Fubm91bmNlbWVudChzb3VyY2VDaGFubmVsSWQsIHRhcmdldENoYW5uZWxJZClcbiAgICB9LFxuICAgIGdldEFjdGl2ZVRocmVhZHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBib3QucmVzdC5nZXRBY3RpdmVUaHJlYWRzKGd1aWxkSWQpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aHJlYWRzOiByZXN1bHQudGhyZWFkcy5tYXAoKHRocmVhZCkgPT4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBndWlsZElkLCBjaGFubmVsOiBzbmFrZWxpemUodGhyZWFkKSB9KSksXG4gICAgICAgIG1lbWJlcnM6IHJlc3VsdC5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHNuYWtlbGl6ZShtZW1iZXIpKSksXG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgeyBhcHBsaWNhdGlvbjogc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uSW5mbygpKSwgc2hhcmRJZDogMCB9KVxuICAgIH0sXG4gICAgZWRpdEFwcGxpY2F0aW9uSW5mbzogYXN5bmMgKGJvZHkpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgeyBhcHBsaWNhdGlvbjogc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRBcHBsaWNhdGlvbkluZm8oYm9keSkpLCBzaGFyZElkOiAwIH0pXG4gICAgfSxcbiAgICBnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvOiBhc3luYyAoYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvKGJlYXJlclRva2VuKVxuICAgIH0sXG4gICAgZXhjaGFuZ2VUb2tlbjogYXN5bmMgKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5leGNoYW5nZVRva2VuKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpXG4gICAgfSxcbiAgICByZXZva2VUb2tlbjogYXN5bmMgKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZXZva2VUb2tlbihjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBvcHRpb25zKVxuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbjogYXN5bmMgKGd1aWxkSWQsIGNvbW1hbmRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3QuZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbihndWlsZElkLCBjb21tYW5kSWQsIG9wdGlvbnMpXG4gICAgICBjb25zdCBzbmFrZWRSZXMgPSBzbmFrZWxpemUocmVzKVxuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKGJvdCwgc25ha2VkUmVzKVxuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zKGd1aWxkSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKGJvdCwgc25ha2VsaXplKHJlcykpLFxuICAgICAgKVxuICAgIH0sXG4gICAgZ2V0QXVkaXRMb2c6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0QXVkaXRMb2coZ3VpbGRJZCwgb3B0aW9ucylcbiAgICB9LFxuICAgIGdldEF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQpKSlcbiAgICB9LFxuICAgIGdldEF1dG9tb2RSdWxlczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0QXV0b21vZFJ1bGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldEF2YWlsYWJsZVZvaWNlUmVnaW9uczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnMoKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudm9pY2VSZWdpb24oYm90LCBzbmFrZWxpemUocmVzKSkpXG4gICAgfSxcbiAgICBnZXRCYW46IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRCYW4oZ3VpbGRJZCwgdXNlcklkKVxuICAgIH0sXG4gICAgZ2V0QmFuczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRCYW5zKGd1aWxkSWQsIG9wdGlvbnMpXG4gICAgfSxcbiAgICBnZXRDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0Q2hhbm5lbChjaGFubmVsSWQpKSB9KVxuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbEludml0ZXM6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRDaGFubmVsSW52aXRlcyhjaGFubmVsSWQpXG4gICAgICAvLyByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldENoYW5uZWxJbnZpdGVzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmludml0ZShib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldENoYW5uZWxzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRDaGFubmVscyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogc25ha2VsaXplKHJlcyksIGd1aWxkSWQgfSkpXG4gICAgfSxcbiAgICBnZXRDaGFubmVsV2ViaG9va3M6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0Q2hhbm5lbFdlYmhvb2tzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBzbmFrZWxpemUocmVzKSkpXG4gICAgfSxcbiAgICBnZXREbUNoYW5uZWw6IGFzeW5jICh1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXREbUNoYW5uZWwodXNlcklkKSkgfSlcbiAgICB9LFxuICAgIGdldEdyb3VwRG1DaGFubmVsOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEdyb3VwRG1DaGFubmVsKG9wdGlvbnMpKSB9KVxuICAgIH0sXG4gICAgZ2V0RW1vamk6IGFzeW5jIChndWlsZElkLCBlbW9qaUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRFbW9qaShndWlsZElkLCBlbW9qaUlkKSkpXG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoZW1vamlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0QXBwbGljYXRpb25FbW9qaShlbW9qaUlkKSkpXG4gICAgfSxcbiAgICBnZXRFbW9qaXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEVtb2ppcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUocmVzKSkpXG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkVtb2ppczogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3QuZ2V0QXBwbGljYXRpb25FbW9qaXMoKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogcmVzLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShpdGVtKSkpLFxuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0Rm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG1lc3NhZ2VJZCkpKVxuICAgIH0sXG4gICAgZ2V0R2F0ZXdheUJvdDogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ2F0ZXdheUJvdChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHYXRld2F5Qm90KCkpKVxuICAgIH0sXG4gICAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCkpKVxuICAgIH0sXG4gICAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzKCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldEd1aWxkOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGQoYm90LCB7IGd1aWxkOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGQoZ3VpbGRJZCwgb3B0aW9ucykpLCBzaGFyZElkOiAwIH0pXG4gICAgfSxcbiAgICBnZXRHdWlsZHM6IGFzeW5jIChiZWFyZXJUb2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBnZXRHdWlsZHMgcmV0dXJucyBwYXJ0aWFsIGd1aWxkc1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZHMoYmVhcmVyVG9rZW4sIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHsgZ3VpbGQ6IHNuYWtlbGl6ZShyZXMpLCBzaGFyZElkOiAwIH0pKVxuICAgIH0sXG4gICAgZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQsIGd1aWxkSWQpKSlcbiAgICB9LFxuICAgIGdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUocmVzKSkpXG4gICAgfSxcbiAgICBnZXRHdWlsZFByZXZpZXc6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRQcmV2aWV3KGd1aWxkSWQpXG4gICAgICAvLyByZXR1cm4gYm90LnRyYW5zZm9ybWVycy54eHgoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRQcmV2aWV3KGd1aWxkSWQpKSlcbiAgICB9LFxuICAgIGdldEd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIHN0aWNrZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHdWlsZFN0aWNrZXIoZ3VpbGRJZCwgc3RpY2tlcklkKSkpXG4gICAgfSxcbiAgICBnZXRHdWlsZFN0aWNrZXJzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFN0aWNrZXJzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgc25ha2VsaXplKHJlcykpKVxuICAgIH0sXG4gICAgZ2V0R3VpbGRUZW1wbGF0ZTogYXN5bmMgKHRlbXBsYXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGVtcGxhdGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRUZW1wbGF0ZSh0ZW1wbGF0ZUNvZGUpKSlcbiAgICB9LFxuICAgIGdldEd1aWxkVGVtcGxhdGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFRlbXBsYXRlcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudGVtcGxhdGUoYm90LCBzbmFrZWxpemUocmVzKSkpXG4gICAgfSxcbiAgICBnZXRHdWlsZFdlYmhvb2tzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFdlYmhvb2tzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKHJlcykpKVxuICAgIH0sXG4gICAgZ2V0SW50ZWdyYXRpb25zOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRJbnRlZ3JhdGlvbnMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmludGVncmF0aW9uKGJvdCwgc25ha2VsaXplKHsgLi4ucmVzLCBndWlsZElkOiBndWlsZElkLnRvU3RyaW5nKCkgfSkpLFxuICAgICAgKVxuICAgIH0sXG4gICAgZ2V0SW52aXRlOiBhc3luYyAoaW52aXRlQ29kZSwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuaW52aXRlKGJvdCwgeyBpbnZpdGU6IHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRJbnZpdGUoaW52aXRlQ29kZSwgb3B0aW9ucykpLCBzaGFyZElkOiAwIH0pXG4gICAgfSxcbiAgICBnZXRJbnZpdGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRJbnZpdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCB7IGludml0ZTogc25ha2VsaXplKHJlcyksIHNoYXJkSWQ6IDAgfSkpXG4gICAgfSxcbiAgICBnZXRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0TWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCkpKVxuICAgIH0sXG4gICAgZ2V0TWVzc2FnZXM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0TWVzc2FnZXMoY2hhbm5lbElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrOiBhc3luYyAoc3RpY2tlclBhY2tJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3RpY2tlclBhY2soc3RpY2tlclBhY2tJZCkpKVxuICAgIH0sXG4gICAgZ2V0U3RpY2tlclBhY2tzOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFN0aWNrZXJQYWNrcygpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyUGFjayhib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbikpKVxuICAgIH0sXG4gICAgZ2V0UGlubmVkTWVzc2FnZXM6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0UGlubmVkTWVzc2FnZXMoY2hhbm5lbElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldFByaXZhdGVBcmNoaXZlZFRocmVhZHM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucylcbiAgICAgIC8vIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnh4eChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKVxuICAgICAgLy8gcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMueHh4KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKSkpXG4gICAgfSxcbiAgICBnZXRQcnVuZUNvdW50OiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFBydW5lQ291bnQoZ3VpbGRJZCwgb3B0aW9ucylcbiAgICAgIC8vIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnh4eChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRQcnVuZUNvdW50KGd1aWxkSWQsIG9wdGlvbnMpKSlcbiAgICB9LFxuICAgIGdldFB1YmxpY0FyY2hpdmVkVGhyZWFkczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFB1YmxpY0FyY2hpdmVkVGhyZWFkcyhjaGFubmVsSWQsIG9wdGlvbnMpXG4gICAgICAvLyByZXR1cm4gYm90LnRyYW5zZm9ybWVycy54eHgoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgZ2V0Um9sZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFJvbGVzKGd1aWxkSWQpKS5tYXAoKHJvbGUpID0+IGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHsgcm9sZSwgZ3VpbGRJZCB9KSlcbiAgICB9LFxuICAgIGdldFJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRSb2xlKGd1aWxkSWQsIHJvbGVJZCkpLCBndWlsZElkIH0pXG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudDogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFNjaGVkdWxlZEV2ZW50KGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpKSlcbiAgICB9LFxuICAgIGdldFNjaGVkdWxlZEV2ZW50czogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0U2NoZWR1bGVkRXZlbnRzKGd1aWxkSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHNuYWtlbGl6ZShyZXMpKSlcbiAgICB9LFxuICAgIGdldFNjaGVkdWxlZEV2ZW50VXNlcnM6IGFzeW5jIChndWlsZElkLCBldmVudElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFNjaGVkdWxlZEV2ZW50VXNlcnMoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucykpLm1hcCgodSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVzZXI6IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHNuYWtlbGl6ZSh1LnVzZXIpKSxcbiAgICAgICAgICBtZW1iZXI6IHUubWVtYmVyICYmIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKHUubWVtYmVyKSwgZ3VpbGRJZCwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UodS51c2VyLmlkKSksXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBnZXRTZXNzaW9uSW5mbzogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ2F0ZXdheUJvdChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRTZXNzaW9uSW5mbygpKSlcbiAgICB9LFxuICAgIGdldFN0YWdlSW5zdGFuY2U6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0YWdlSW5zdGFuY2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3RhZ2VJbnN0YW5jZShjaGFubmVsSWQpKSlcbiAgICB9LFxuICAgIGdldE93blZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy52b2ljZVN0YXRlKGJvdCwgeyBndWlsZElkLCB2b2ljZVN0YXRlOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0T3duVm9pY2VTdGF0ZShndWlsZElkKSkgfSlcbiAgICB9LFxuICAgIGdldFVzZXJWb2ljZVN0YXRlOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy52b2ljZVN0YXRlKGJvdCwgeyBndWlsZElkLCB2b2ljZVN0YXRlOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0VXNlclZvaWNlU3RhdGUoZ3VpbGRJZCwgdXNlcklkKSkgfSlcbiAgICB9LFxuICAgIGdldFN0aWNrZXI6IGFzeW5jIChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3RpY2tlcihzdGlja2VySWQpKSlcbiAgICB9LFxuICAgIGdldFRocmVhZE1lbWJlcjogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0VGhyZWFkTWVtYmVyKGNoYW5uZWxJZCwgdXNlcklkKSkpXG4gICAgfSxcbiAgICBnZXRUaHJlYWRNZW1iZXJzOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFRocmVhZE1lbWJlcnMoY2hhbm5lbElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudGhyZWFkTWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcykpKVxuICAgIH0sXG4gICAgZ2V0UmVhY3Rpb25zOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFJlYWN0aW9ucyhjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb24sIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgc25ha2VsaXplKHJlcykpKVxuICAgIH0sXG4gICAgZ2V0VXNlcjogYXN5bmMgKGlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFVzZXIoaWQpKSlcbiAgICB9LFxuICAgIGdldEN1cnJlbnRVc2VyOiBhc3luYyAoYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0Q3VycmVudFVzZXIoYmVhcmVyVG9rZW4pKSlcbiAgICB9LFxuICAgIGdldFVzZXJDb25uZWN0aW9uczogYXN5bmMgKGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VXNlckNvbm5lY3Rpb25zKGJlYXJlclRva2VuKVxuICAgIH0sXG4gICAgZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uKGJlYXJlclRva2VuLCBhcHBsaWNhdGlvbklkKVxuICAgIH0sXG4gICAgZ2V0VmFuaXR5VXJsOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFZhbml0eVVybChndWlsZElkKVxuICAgIH0sXG4gICAgZ2V0Vm9pY2VSZWdpb25zOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRWb2ljZVJlZ2lvbnMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnZvaWNlUmVnaW9uKGJvdCwgc25ha2VsaXplKHJlcykpKVxuICAgIH0sXG4gICAgZ2V0V2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWJob29rKHdlYmhvb2tJZCkpKVxuICAgIH0sXG4gICAgZ2V0V2ViaG9va01lc3NhZ2U6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0V2ViaG9va01lc3NhZ2Uod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSkpXG4gICAgfSxcbiAgICBnZXRXZWJob29rV2l0aFRva2VuOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pKSlcbiAgICB9LFxuICAgIGdldFdlbGNvbWVTY3JlZW46IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWxjb21lU2NyZWVuKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFdlbGNvbWVTY3JlZW4oZ3VpbGRJZCkpKVxuICAgIH0sXG4gICAgZ2V0V2lkZ2V0OiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2lkZ2V0KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFdpZGdldChndWlsZElkKSkpXG4gICAgfSxcbiAgICBnZXRXaWRnZXRTZXR0aW5nczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndpZGdldFNldHRpbmdzKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFdpZGdldFNldHRpbmdzKGd1aWxkSWQpKSlcbiAgICB9LFxuICAgIHB1Ymxpc2hNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QucHVibGlzaE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQpKSlcbiAgICB9LFxuICAgIHNlbmRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnNlbmRNZXNzYWdlKGNoYW5uZWxJZCwgb3B0aW9ucykpKVxuICAgIH0sXG4gICAgc2VuZEZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnNlbmRGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG9wdGlvbnMpKSlcbiAgICB9LFxuICAgIHN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwge1xuICAgICAgICBjaGFubmVsOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3Quc3RhcnRUaHJlYWRXaXRoTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucywgcmVhc29uKSksXG4gICAgICB9KVxuICAgIH0sXG4gICAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3Quc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZShjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikpIH0pXG4gICAgfSxcbiAgICBzeW5jR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnN5bmNHdWlsZFRlbXBsYXRlKGd1aWxkSWQpKSlcbiAgICB9LFxuICAgIHVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IGFzeW5jIChjb21tYW5kcywgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC51cHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzKGNvbW1hbmRzLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKHJlcykpLFxuICAgICAgKVxuICAgIH0sXG4gICAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiBhc3luYyAoZ3VpbGRJZCwgY29tbWFuZHMsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QudXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzKGd1aWxkSWQsIGNvbW1hbmRzLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKHJlcykpLFxuICAgICAgKVxuICAgIH0sXG4gICAgZWRpdEJvdE1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRCb3RNZW1iZXIoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSksIGd1aWxkSWQsIGJvdC5pZClcbiAgICB9LFxuICAgIGVkaXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pKSwgZ3VpbGRJZCwgdXNlcklkKVxuICAgIH0sXG4gICAgZ2V0TWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0TWVtYmVyKGd1aWxkSWQsIHVzZXJJZCkpLCBndWlsZElkLCB1c2VySWQpXG4gICAgfSxcbiAgICBnZXRDdXJyZW50TWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEN1cnJlbnRNZW1iZXIoZ3VpbGRJZCwgYmVhcmVyVG9rZW4pXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBzbmFrZWxpemUocmVzKSwgZ3VpbGRJZCwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocmVzLnVzZXIuaWQpKVxuICAgIH0sXG4gICAgZ2V0TWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcyksIGd1aWxkSWQsIGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHJlcy51c2VyLmlkKSksXG4gICAgICApXG4gICAgfSxcbiAgICBwcnVuZU1lbWJlcnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5wcnVuZU1lbWJlcnMoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKVxuICAgIH0sXG4gICAgc2VhcmNoTWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNlYXJjaE1lbWJlcnMoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBzbmFrZWxpemUocmVzKSwgZ3VpbGRJZCwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocmVzLnVzZXIuaWQpKSxcbiAgICAgIClcbiAgICB9LFxuICAgIGJ1bGtCYW5NZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5idWxrQmFuTWVtYmVycyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhbm5lZFVzZXJzOiByZXMuYmFubmVkVXNlcnMubWFwKCh4KSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh4KSksXG4gICAgICAgIGZhaWxlZFVzZXJzOiByZXMuZmFpbGVkVXNlcnMubWFwKCh4KSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh4KSksXG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkFjdGl2aXR5SW5zdGFuY2U6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBpbnN0YW5jZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpXG4gICAgfSxcbiAgICAvLyBBbGwgdXNlbGVzcyB2b2lkIHJldHVybiBmdW5jdGlvbnMgaGVyZVxuICAgIGFkZFJlYWN0aW9uOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuYWRkUmVhY3Rpb24oY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKVxuICAgIH0sXG4gICAgYWRkUmVhY3Rpb25zOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9ucywgb3JkZXJlZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmFkZFJlYWN0aW9ucyhjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb25zLCBvcmRlcmVkKVxuICAgIH0sXG4gICAgYWRkUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5hZGRSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pXG4gICAgfSxcbiAgICBhZGRUaHJlYWRNZW1iZXI6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmFkZFRocmVhZE1lbWJlcihjaGFubmVsSWQsIHVzZXJJZClcbiAgICB9LFxuICAgIGFkZERtUmVjaXBpZW50OiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5hZGREbVJlY2lwaWVudChjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucylcbiAgICB9LFxuICAgIGFkZEd1aWxkTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuYWRkR3VpbGRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKVxuICAgIH0sXG4gICAgZGVsZXRlQXV0b21vZFJ1bGU6IGFzeW5jIChndWlsZElkLCBydWxlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUF1dG9tb2RSdWxlKGd1aWxkSWQsIHJ1bGVJZCwgcmVhc29uKVxuICAgIH0sXG4gICAgZGVsZXRlQ2hhbm5lbDogYXN5bmMgKGNoYW5uZWxJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlQ2hhbm5lbChjaGFubmVsSWQsIHJlYXNvbilcbiAgICB9LFxuICAgIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IGFzeW5jIChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQsIHJlYXNvbilcbiAgICB9LFxuICAgIGRlbGV0ZUVtb2ppOiBhc3luYyAoZ3VpbGRJZCwgaWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUVtb2ppKGd1aWxkSWQsIGlkLCByZWFzb24pXG4gICAgfSxcbiAgICBkZWxldGVBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoaWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVBcHBsaWNhdGlvbkVtb2ppKGlkKVxuICAgIH0sXG4gICAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkKVxuICAgIH0sXG4gICAgZGVsZXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZClcbiAgICB9LFxuICAgIGRlbGV0ZUd1aWxkOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkKGd1aWxkSWQpXG4gICAgfSxcbiAgICBkZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZClcbiAgICB9LFxuICAgIGRlbGV0ZUd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIHN0aWNrZXJJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlR3VpbGRTdGlja2VyKGd1aWxkSWQsIHN0aWNrZXJJZCwgcmVhc29uKVxuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgdGVtcGxhdGVDb2RlKVxuICAgIH0sXG4gICAgZGVsZXRlSW50ZWdyYXRpb246IGFzeW5jIChndWlsZElkLCBpbnRlZ3JhdGlvbklkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVJbnRlZ3JhdGlvbihndWlsZElkLCBpbnRlZ3JhdGlvbklkLCByZWFzb24pXG4gICAgfSxcbiAgICBkZWxldGVJbnZpdGU6IGFzeW5jIChpbnZpdGVDb2RlLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVJbnZpdGUoaW52aXRlQ29kZSwgcmVhc29uKVxuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pXG4gICAgfSxcbiAgICBkZWxldGVNZXNzYWdlczogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkcywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlTWVzc2FnZXMoY2hhbm5lbElkLCBtZXNzYWdlSWRzLCByZWFzb24pXG4gICAgfSxcbiAgICBkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6IGFzeW5jICh0b2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbilcbiAgICB9LFxuICAgIGRlbGV0ZU93blJlYWN0aW9uOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlT3duUmVhY3Rpb24oY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKVxuICAgIH0sXG4gICAgZGVsZXRlUmVhY3Rpb25zQWxsOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVSZWFjdGlvbnNBbGwoY2hhbm5lbElkLCBtZXNzYWdlSWQpXG4gICAgfSxcbiAgICBkZWxldGVSZWFjdGlvbnNFbW9qaTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZVJlYWN0aW9uc0Vtb2ppKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbilcbiAgICB9LFxuICAgIGRlbGV0ZVJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZVJvbGUoZ3VpbGRJZCwgcm9sZUlkLCByZWFzb24pXG4gICAgfSxcbiAgICBkZWxldGVTY2hlZHVsZWRFdmVudDogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVTY2hlZHVsZWRFdmVudChndWlsZElkLCBldmVudElkKVxuICAgIH0sXG4gICAgZGVsZXRlU3RhZ2VJbnN0YW5jZTogYXN5bmMgKGNoYW5uZWxJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlU3RhZ2VJbnN0YW5jZShjaGFubmVsSWQsIHJlYXNvbilcbiAgICB9LFxuICAgIGRlbGV0ZVVzZXJSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlVXNlclJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKVxuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlV2ViaG9vayh3ZWJob29rSWQsIHJlYXNvbilcbiAgICB9LFxuICAgIGRlbGV0ZVdlYmhvb2tNZXNzYWdlOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlV2ViaG9va01lc3NhZ2Uod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKVxuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va1dpdGhUb2tlbjogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pXG4gICAgfSxcbiAgICBlZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlcyhjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbilcbiAgICB9LFxuICAgIGVkaXRDaGFubmVsUG9zaXRpb25zOiBhc3luYyAoZ3VpbGRJZCwgY2hhbm5lbFBvc2l0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmVkaXRDaGFubmVsUG9zaXRpb25zKGd1aWxkSWQsIGNoYW5uZWxQb3NpdGlvbnMpXG4gICAgfSxcbiAgICBlZGl0R3VpbGRNZmFMZXZlbDogYXN5bmMgKGd1aWxkSWQsIG1mYUxldmVsLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0R3VpbGRNZmFMZXZlbChndWlsZElkLCBtZmFMZXZlbCwgcmVhc29uKVxuICAgIH0sXG4gICAgZWRpdE93blZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZWRpdE93blZvaWNlU3RhdGUoZ3VpbGRJZCwgb3B0aW9ucylcbiAgICB9LFxuICAgIGVkaXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0VXNlclZvaWNlU3RhdGUoZ3VpbGRJZCwgb3B0aW9ucylcbiAgICB9LFxuICAgIGVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogYXN5bmMgKGJlYXJlclRva2VuLCBhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZWRpdFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uKGJlYXJlclRva2VuLCBhcHBsaWNhdGlvbklkLCBvcHRpb25zKVxuICAgIH0sXG4gICAgam9pblRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmpvaW5UaHJlYWQoY2hhbm5lbElkKVxuICAgIH0sXG4gICAgbGVhdmVHdWlsZDogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5sZWF2ZUd1aWxkKGd1aWxkSWQpXG4gICAgfSxcbiAgICBsZWF2ZVRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmxlYXZlVGhyZWFkKGNoYW5uZWxJZClcbiAgICB9LFxuICAgIHJlbW92ZVJvbGU6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJvbGVJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QucmVtb3ZlUm9sZShndWlsZElkLCB1c2VySWQsIHJvbGVJZCwgcmVhc29uKVxuICAgIH0sXG4gICAgcmVtb3ZlVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZW1vdmVUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpXG4gICAgfSxcbiAgICByZW1vdmVEbVJlY2lwaWVudDogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QucmVtb3ZlRG1SZWNpcGllbnQoY2hhbm5lbElkLCB1c2VySWQpXG4gICAgfSxcbiAgICBzZW5kSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKGludGVyYWN0aW9uSWQsIHRva2VuLCBvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYm90LnJlc3Quc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoaW50ZXJhY3Rpb25JZCwgdG9rZW4sIG9wdGlvbnMsIHBhcmFtcylcblxuICAgICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuXG5cbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZShib3QsIHNuYWtlbGl6ZShyZXNwb25zZSkpXG4gICAgfSxcbiAgICB0cmlnZ2VyVHlwaW5nSW5kaWNhdG9yOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QudHJpZ2dlclR5cGluZ0luZGljYXRvcihjaGFubmVsSWQpXG4gICAgfSxcbiAgICBiYW5NZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmJhbk1lbWJlcihndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbilcbiAgICB9LFxuXG4gICAga2lja01lbWJlcjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Qua2lja01lbWJlcihndWlsZElkLCB1c2VySWQsIHJlYXNvbilcbiAgICB9LFxuICAgIHBpbk1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QucGluTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKVxuICAgIH0sXG4gICAgdW5iYW5NZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnVuYmFuTWVtYmVyKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKVxuICAgIH0sXG4gICAgdW5waW5NZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnVucGluTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKVxuICAgIH0sXG4gICAgZ2V0R3VpbGRPbmJvYXJkaW5nOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGRPbmJvYXJkaW5nKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkT25ib2FyZGluZyhndWlsZElkKSkpXG4gICAgfSxcbiAgICBlZGl0R3VpbGRPbmJvYXJkaW5nOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZE9uYm9hcmRpbmcoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkT25ib2FyZGluZyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGxpc3RFbnRpdGxlbWVudHM6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0Lmxpc3RFbnRpdGxlbWVudHMoYXBwbGljYXRpb25JZCwgb3B0aW9ucykpLm1hcCgoZW50aXRsZW1lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuZW50aXRsZW1lbnQoYm90LCBzbmFrZWxpemUoZW50aXRsZW1lbnQpKSlcbiAgICB9LFxuICAgIGNyZWF0ZVRlc3RFbnRpdGxlbWVudDogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGJvZHkpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVRlc3RFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBib2R5KSkgYXMgRGlzY29yZEVudGl0bGVtZW50KVxuICAgIH0sXG4gICAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QuZGVsZXRlVGVzdEVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpXG4gICAgfSxcbiAgICBsaXN0U2t1czogYXN5bmMgKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QubGlzdFNrdXMoYXBwbGljYXRpb25JZCkpLm1hcCgoc2t1KSA9PiBib3QudHJhbnNmb3JtZXJzLnNrdShib3QsIHNuYWtlbGl6ZShza3UpKSlcbiAgICB9LFxuICAgIGdldFN1YnNjcmlwdGlvbjogYXN5bmMgKHNrdUlkLCBzdWJzY3JpcHRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFN1YnNjcmlwdGlvbihza3VJZCwgc3Vic2NyaXB0aW9uSWQpXG4gICAgfSxcbiAgICBsaXN0U3Vic2NyaXB0aW9uczogYXN5bmMgKHNrdUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QubGlzdFN1YnNjcmlwdGlvbnMoc2t1SWQsIG9wdGlvbnMpXG4gICAgfSxcbiAgICBzZW5kU291bmRib2FyZFNvdW5kOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5zZW5kU291bmRib2FyZFNvdW5kKGNoYW5uZWxJZCwgb3B0aW9ucylcbiAgICB9LFxuICAgIGxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5saXN0RGVmYXVsdFNvdW5kYm9hcmRTb3VuZHMoKSkubWFwKChzb3VuZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBzbmFrZWxpemUoc291bmQpKSlcbiAgICB9LFxuICAgIGxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5saXN0R3VpbGRTb3VuZGJvYXJkU291bmRzKGd1aWxkSWQpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXMuaXRlbXMubWFwKChzb3VuZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBzbmFrZWxpemUoc291bmQpKSksXG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIHNvdW5kSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHdWlsZFNvdW5kYm9hcmRTb3VuZChndWlsZElkLCBzb3VuZElkKSkpXG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgbW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBzb3VuZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5tb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZChndWlsZElkLCBzb3VuZElkLCBvcHRpb25zLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGRlbGV0ZUd1aWxkU291bmRib2FyZFNvdW5kOiBhc3luYyAoZ3VpbGRJZCwgc291bmRJZCwgcmVhc29uKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5kZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZChndWlsZElkLCBzb3VuZElkLCByZWFzb24pXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvdEhlbHBlcnMge1xuICBjcmVhdGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPEF1dG9Nb2RlcmF0aW9uUnVsZT5cbiAgY3JlYXRlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRDaGFubmVsLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2hhbm5lbD5cbiAgY3JlYXRlRW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkRW1vamksIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxFbW9qaT5cbiAgY3JlYXRlQXBwbGljYXRpb25FbW9qaTogKG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8RW1vamk+XG4gIGNyZWF0ZUZvcnVtVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2hhbm5lbD5cbiAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLCBvcHRpb25zPzogQ3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucykgPT4gUHJvbWlzZTxBcHBsaWNhdGlvbkNvbW1hbmQ+XG4gIGNyZWF0ZUd1aWxkOiAob3B0aW9uczogQ3JlYXRlR3VpbGQpID0+IFByb21pc2U8R3VpbGQ+XG4gIGNyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8QXBwbGljYXRpb25Db21tYW5kPlxuICBjcmVhdGVHdWlsZEZyb21UZW1wbGF0ZTogKHRlbXBsYXRlQ29kZTogc3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZEZyb21UZW1wbGF0ZSkgPT4gUHJvbWlzZTxHdWlsZD5cbiAgY3JlYXRlR3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZFN0aWNrZXJPcHRpb25zLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U3RpY2tlcj5cbiAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlVGVtcGxhdGUpID0+IFByb21pc2U8VGVtcGxhdGU+XG4gIGNyZWF0ZUludml0ZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQ3JlYXRlQ2hhbm5lbEludml0ZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRJbnZpdGU+XG4gIGNyZWF0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFJvbGU+XG4gIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVTY2hlZHVsZWRFdmVudCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNjaGVkdWxlZEV2ZW50PlxuICBjcmVhdGVTdGFnZUluc3RhbmNlOiAob3B0aW9uczogQ3JlYXRlU3RhZ2VJbnN0YW5jZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFN0YWdlSW5zdGFuY2U+XG4gIGNyZWF0ZVdlYmhvb2s6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlV2ViaG9vaywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFdlYmhvb2s+XG4gIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1tdLFxuICApID0+IFByb21pc2U8R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz5cbiAgZWRpdEF1dG9tb2RSdWxlOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHJ1bGVJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8RWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnM+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPEF1dG9Nb2RlcmF0aW9uUnVsZT5cbiAgZWRpdEJvdFByb2ZpbGU6IChvcHRpb25zOiB7IHVzZXJuYW1lPzogc3RyaW5nOyBib3RBdmF0YXJVUkw/OiBzdHJpbmcgfCBudWxsIH0pID0+IFByb21pc2U8VXNlcj5cbiAgZWRpdENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Q2hhbm5lbCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENoYW5uZWw+XG4gIGVkaXRFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPEVtb2ppPlxuICBlZGl0QXBwbGljYXRpb25FbW9qaTogKGlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8RW1vamk+XG4gIGVkaXRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEpID0+IFByb21pc2U8TWVzc2FnZT5cbiAgZWRpdEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQpID0+IFByb21pc2U8QXBwbGljYXRpb25Db21tYW5kPlxuICBlZGl0R3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8R3VpbGQ+XG4gIGVkaXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvbkNvbW1hbmQ+XG4gIGVkaXRHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBdExlYXN0T25lPEVkaXRHdWlsZFN0aWNrZXJPcHRpb25zPiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFN0aWNrZXI+XG4gIGVkaXRHdWlsZFRlbXBsYXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB0ZW1wbGF0ZUNvZGU6IHN0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRUZW1wbGF0ZSkgPT4gUHJvbWlzZTxUZW1wbGF0ZT5cbiAgZWRpdE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRNZXNzYWdlKSA9PiBQcm9taXNlPE1lc3NhZ2U+XG4gIGVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxNZXNzYWdlPlxuICBlZGl0T3JpZ2luYWxXZWJob29rTWVzc2FnZTogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSAmIHsgdGhyZWFkSWQ/OiBCaWdTdHJpbmcgfSkgPT4gUHJvbWlzZTxNZXNzYWdlPlxuICBlZGl0Um9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRHdWlsZFJvbGUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxSb2xlPlxuICBlZGl0Um9sZVBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Um9sZVBvc2l0aW9uc1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Um9sZVtdPlxuICBlZGl0U2NoZWR1bGVkRXZlbnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIGV2ZW50SWQ6IEJpZ1N0cmluZywgb3B0aW9uczogUGFydGlhbDxFZGl0U2NoZWR1bGVkRXZlbnQ+LCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2NoZWR1bGVkRXZlbnQ+XG4gIGVkaXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHRvcGljOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTdGFnZUluc3RhbmNlPlxuICBlZGl0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8V2ViaG9vaz5cbiAgZWRpdFdlYmhvb2tNZXNzYWdlOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSAmIHsgdGhyZWFkSWQ/OiBCaWdTdHJpbmcgfSxcbiAgKSA9PiBQcm9taXNlPE1lc3NhZ2U+XG4gIGVkaXRXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IE9taXQ8TW9kaWZ5V2ViaG9vaywgJ2NoYW5uZWxJZCc+KSA9PiBQcm9taXNlPFdlYmhvb2s+XG4gIGVkaXRXZWxjb21lU2NyZWVuOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDYW1lbGl6ZWREaXNjb3JkTW9kaWZ5R3VpbGRXZWxjb21lU2NyZWVuLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8V2VsY29tZVNjcmVlbj5cbiAgZWRpdFdpZGdldFNldHRpbmdzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDYW1lbGl6ZWREaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPEd1aWxkV2lkZ2V0U2V0dGluZ3M+XG4gIGVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uLFxuICApID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+XG4gIGV4ZWN1dGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEV4ZWN1dGVXZWJob29rKSA9PiBQcm9taXNlPE1lc3NhZ2UgfCB1bmRlZmluZWQ+XG4gIGZvbGxvd0Fubm91bmNlbWVudDogKHNvdXJjZUNoYW5uZWxJZDogQmlnU3RyaW5nLCB0YXJnZXRDaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkRm9sbG93ZWRDaGFubmVsPlxuICBnZXRBY3RpdmVUaHJlYWRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHsgdGhyZWFkczogQ2hhbm5lbFtdOyBtZW1iZXJzOiBUaHJlYWRNZW1iZXJbXSB9PlxuICBnZXRBcHBsaWNhdGlvbkluZm86ICgpID0+IFByb21pc2U8QXBwbGljYXRpb24+XG4gIGVkaXRBcHBsaWNhdGlvbkluZm86IChib2R5OiBFZGl0QXBwbGljYXRpb24pID0+IFByb21pc2U8QXBwbGljYXRpb24+XG4gIGdldEN1cnJlbnRBdXRoZW50aWNhdGlvbkluZm86IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRDdXJyZW50QXV0aG9yaXphdGlvbj5cbiAgZXhjaGFuZ2VUb2tlbjogKGNsaWVudElkOiBCaWdTdHJpbmcsIGNsaWVudFNlY3JldDogc3RyaW5nLCBvcHRpb25zOiBDYW1lbGl6ZWREaXNjb3JkVG9rZW5FeGNoYW5nZSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZT5cbiAgcmV2b2tlVG9rZW46IChjbGllbnRJZDogQmlnU3RyaW5nLCBjbGllbnRTZWNyZXQ6IHN0cmluZywgb3B0aW9uczogQ2FtZWxpemVkRGlzY29yZFRva2VuUmV2b2NhdGlvbikgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM+XG4gIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNbXT5cbiAgZ2V0QXVkaXRMb2c6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZEF1ZGl0TG9nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBdWRpdExvZz5cbiAgZ2V0QXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPEF1dG9Nb2RlcmF0aW9uUnVsZT5cbiAgZ2V0QXV0b21vZFJ1bGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPEF1dG9Nb2RlcmF0aW9uUnVsZVtdPlxuICBnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnM6ICgpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFZvaWNlUmVnaW9uW10+XG4gIGdldEJhbjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEJhbj5cbiAgZ2V0QmFuczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEJhbnMpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEJhbltdPlxuICBnZXRDaGFubmVsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2hhbm5lbD5cbiAgZ2V0Q2hhbm5lbEludml0ZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkSW52aXRlTWV0YWRhdGFbXT5cbiAgZ2V0Q2hhbm5lbHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2hhbm5lbFtdPlxuICBnZXRDaGFubmVsV2ViaG9va3M6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxXZWJob29rW10+XG4gIGdldERtQ2hhbm5lbDogKHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENoYW5uZWw+XG4gIGdldEdyb3VwRG1DaGFubmVsOiAob3B0aW9uczogR2V0R3JvdXBEbU9wdGlvbnMpID0+IFByb21pc2U8Q2hhbm5lbD5cbiAgZ2V0RW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxFbW9qaT5cbiAgZ2V0QXBwbGljYXRpb25FbW9qaTogKGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxFbW9qaT5cbiAgZ2V0RW1vamlzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPEVtb2ppW10+XG4gIGdldEFwcGxpY2F0aW9uRW1vamlzOiAoKSA9PiBQcm9taXNlPHsgaXRlbXM6IEVtb2ppW10gfT5cbiAgZ2V0Rm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8TWVzc2FnZT5cbiAgZ2V0R2F0ZXdheUJvdDogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR2V0R2F0ZXdheUJvdD5cbiAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8QXBwbGljYXRpb25Db21tYW5kPlxuICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiAoKSA9PiBQcm9taXNlPEFwcGxpY2F0aW9uQ29tbWFuZFtdPlxuICBnZXRHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IHsgY291bnRzPzogYm9vbGVhbiB9KSA9PiBQcm9taXNlPEd1aWxkPlxuICBnZXRHdWlsZHM6IChiZWFyZXJUb2tlbjogc3RyaW5nLCBvcHRpb25zPzogR2V0VXNlckd1aWxkcykgPT4gUHJvbWlzZTxQYXJ0aWFsPEd1aWxkPltdPlxuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8QXBwbGljYXRpb25Db21tYW5kPlxuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8QXBwbGljYXRpb25Db21tYW5kW10+XG4gIGdldEd1aWxkUHJldmlldzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGRQcmV2aWV3PlxuICBnZXRHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFN0aWNrZXI+XG4gIGdldEd1aWxkU3RpY2tlcnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U3RpY2tlcltdPlxuICBnZXRHdWlsZFRlbXBsYXRlOiAodGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8VGVtcGxhdGU+XG4gIGdldEd1aWxkVGVtcGxhdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFRlbXBsYXRlW10+XG4gIGdldEd1aWxkV2ViaG9va3M6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8V2ViaG9va1tdPlxuICBnZXRJbnRlZ3JhdGlvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8SW50ZWdyYXRpb25bXT5cbiAgZ2V0SW52aXRlOiAoaW52aXRlQ29kZTogc3RyaW5nLCBvcHRpb25zPzogR2V0SW52aXRlKSA9PiBQcm9taXNlPEludml0ZT5cbiAgZ2V0SW52aXRlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxJbnZpdGVbXT5cbiAgZ2V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxNZXNzYWdlPlxuICBnZXRNZXNzYWdlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiBQcm9taXNlPE1lc3NhZ2VbXT5cbiAgZ2V0U3RpY2tlclBhY2s6IChzdGlja2VyUGFja0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U3RpY2tlclBhY2s+XG4gIGdldFN0aWNrZXJQYWNrczogKCkgPT4gUHJvbWlzZTxTdGlja2VyUGFja1tdPlxuICBnZXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPE1lc3NhZ2U+XG4gIGdldFBpbm5lZE1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8TWVzc2FnZVtdPlxuICBnZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcmNoaXZlZFRocmVhZHM+XG4gIGdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFyY2hpdmVkVGhyZWFkcz5cbiAgZ2V0UHJ1bmVDb3VudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkUHJ1bmVDb3VudFF1ZXJ5KSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRQcnVuZWRDb3VudD5cbiAgZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcmNoaXZlZFRocmVhZHM+XG4gIGdldFJvbGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFJvbGVbXT5cbiAgZ2V0Um9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Um9sZT5cbiAgZ2V0U2NoZWR1bGVkRXZlbnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIGV2ZW50SWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IHsgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4gfSkgPT4gUHJvbWlzZTxTY2hlZHVsZWRFdmVudD5cbiAgZ2V0U2NoZWR1bGVkRXZlbnRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRzKSA9PiBQcm9taXNlPFNjaGVkdWxlZEV2ZW50W10+XG4gIGdldFNjaGVkdWxlZEV2ZW50VXNlcnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudFVzZXJzLFxuICApID0+IFByb21pc2U8QXJyYXk8eyB1c2VyOiBVc2VyOyBtZW1iZXI/OiBNZW1iZXIgfT4+XG4gIGdldFNlc3Npb25JbmZvOiAoKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRHZXRHYXRld2F5Qm90PlxuICBnZXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U3RhZ2VJbnN0YW5jZT5cbiAgZ2V0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxWb2ljZVN0YXRlPlxuICBnZXRVc2VyVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Vm9pY2VTdGF0ZT5cbiAgZ2V0U3RpY2tlcjogKHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFN0aWNrZXI+XG4gIGdldFRocmVhZE1lbWJlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxUaHJlYWRNZW1iZXI+XG4gIGdldFRocmVhZE1lbWJlcnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxUaHJlYWRNZW1iZXJbXT5cbiAgZ2V0UmVhY3Rpb25zOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nLCBvcHRpb25zPzogR2V0UmVhY3Rpb25zKSA9PiBQcm9taXNlPFVzZXJbXT5cbiAgZ2V0VXNlcjogKGlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8VXNlcj5cbiAgZ2V0Q3VycmVudFVzZXI6IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFVzZXI+XG4gIGdldFVzZXJDb25uZWN0aW9uczogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZENvbm5lY3Rpb25bXT5cbiAgZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IChiZWFyZXJUb2tlbjogc3RyaW5nLCBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+XG4gIGdldFZhbml0eVVybDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVmFuaXR5VXJsPlxuICBnZXRWb2ljZVJlZ2lvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFZvaWNlUmVnaW9uW10+XG4gIGdldFdlYmhvb2s6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxXZWJob29rPlxuICBnZXRXZWJob29rTWVzc2FnZTogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldFdlYmhvb2tNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTxNZXNzYWdlPlxuICBnZXRXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8V2ViaG9vaz5cbiAgZ2V0V2VsY29tZVNjcmVlbjogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxXZWxjb21lU2NyZWVuPlxuICBnZXRXaWRnZXQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8R3VpbGRXaWRnZXQ+XG4gIGdldFdpZGdldFNldHRpbmdzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPEd1aWxkV2lkZ2V0U2V0dGluZ3M+XG4gIHB1Ymxpc2hNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPE1lc3NhZ2U+XG4gIHNlbmRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZU1lc3NhZ2VPcHRpb25zKSA9PiBQcm9taXNlPE1lc3NhZ2U+XG4gIHNlbmRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxNZXNzYWdlPlxuICBzdGFydFRocmVhZFdpdGhNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhNZXNzYWdlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2hhbm5lbD5cbiAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2hhbm5lbD5cbiAgc3luY0d1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8VGVtcGxhdGU+XG4gIHVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvbkNvbW1hbmRbXT5cbiAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8QXBwbGljYXRpb25Db21tYW5kW10+XG4gIGVkaXRCb3RNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRCb3RNZW1iZXJPcHRpb25zLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8TWVtYmVyPlxuICBlZGl0TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRNZW1iZXIsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxNZW1iZXI+XG4gIGdldE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8TWVtYmVyPlxuICBnZXRDdXJyZW50TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPE1lbWJlcj5cbiAgZ2V0TWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTGlzdEd1aWxkTWVtYmVycykgPT4gUHJvbWlzZTxNZW1iZXJbXT5cbiAgcHJ1bmVNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBCZWdpbkd1aWxkUHJ1bmUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx7IHBydW5lZDogbnVtYmVyIHwgbnVsbCB9PlxuICBzZWFyY2hNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBxdWVyeTogc3RyaW5nLCBvcHRpb25zPzogT21pdDxTZWFyY2hNZW1iZXJzLCAncXVlcnknPikgPT4gUHJvbWlzZTxNZW1iZXJbXT5cbiAgYnVsa0Jhbk1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQnVsa0JhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgYmFubmVkVXNlcnM6IGJpZ2ludFtdOyBmYWlsZWRVc2VyczogYmlnaW50W10gfT5cbiAgZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBpbnN0YW5jZUlkOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFjdGl2aXR5SW5zdGFuY2U+PlxuICAvLyBmdW5jdGlvbnMgcmV0dXJuIFZvaWQgc28gZG9udCBuZWVkIGFueSBzcGVjaWFsIGhhbmRsaW5nXG4gIGFkZFJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFJlYWN0aW9uczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb25zOiBzdHJpbmdbXSwgb3JkZXJlZD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgYWRkUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkVGhyZWFkTWVtYmVyOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZERtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGREbVJlY2lwaWVudE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkR3VpbGRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGRHdWlsZE1lbWJlck9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlQXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlQ2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlQ2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvdmVyd3JpdGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlRW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVBcHBsaWNhdGlvbkVtb2ppOiAoaWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChjb21tYW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlR3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzdGlja2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZUd1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHRlbXBsYXRlQ29kZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZUludGVncmF0aW9uOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbnRlZ3JhdGlvbklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVJbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkczogQmlnU3RyaW5nW10sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZU93blJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVJlYWN0aW9uc0FsbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVSZWFjdGlvbnNFbW9qaTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBldmVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlU3RhZ2VJbnN0YW5jZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlVXNlclJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVXZWJob29rTWVzc2FnZTogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IERlbGV0ZVdlYmhvb2tNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBlZGl0Q2hhbm5lbFBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgY2hhbm5lbFBvc2l0aW9uczogTW9kaWZ5R3VpbGRDaGFubmVsUG9zaXRpb25zW10pID0+IFByb21pc2U8dm9pZD5cbiAgZWRpdEd1aWxkTWZhTGV2ZWw6IChndWlsZElkOiBCaWdTdHJpbmcsIG1mYUxldmVsOiBNZmFMZXZlbHMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBlZGl0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE93blZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgZWRpdFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0VXNlclZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgam9pblRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGxlYXZlR3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgbGVhdmVUaHJlYWQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgcmVtb3ZlRG1SZWNpcGllbnQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgc2VuZEludGVyYWN0aW9uUmVzcG9uc2U6IChcbiAgICBpbnRlcmFjdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICAgIHBhcmFtcz86IEludGVyYWN0aW9uQ2FsbGJhY2tPcHRpb25zLFxuICApID0+IFByb21pc2U8dm9pZCB8IEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZT5cbiAgdHJpZ2dlclR5cGluZ0luZGljYXRvcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGJhbk1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVHdWlsZEJhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGtpY2tNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgcGluTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHVuYmFuTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHVucGluTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEd1aWxkT25ib2FyZGluZzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxHdWlsZE9uYm9hcmRpbmc+XG4gIGVkaXRHdWlsZE9uYm9hcmRpbmc6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRHdWlsZE9uYm9hcmRpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxHdWlsZE9uYm9hcmRpbmc+XG4gIGxpc3RFbnRpdGxlbWVudHM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRFbnRpdGxlbWVudHMpID0+IFByb21pc2U8RW50aXRsZW1lbnRbXT5cbiAgY3JlYXRlVGVzdEVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBib2R5OiBDcmVhdGVFbnRpdGxlbWVudCkgPT4gUHJvbWlzZTxQYXJ0aWFsPEVudGl0bGVtZW50Pj5cbiAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgbGlzdFNrdXM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2t1W10+XG4gIGxpc3RTdWJzY3JpcHRpb25zOiAoc2t1SWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RTa3VTdWJzY3JpcHRpb25zT3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3Vic2NyaXB0aW9uW10+PlxuICBnZXRTdWJzY3JpcHRpb246IChza3VJZDogQmlnU3RyaW5nLCBzdWJzY3JpcHRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTdWJzY3JpcHRpb24+PlxuICBzZW5kU291bmRib2FyZFNvdW5kOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IFNlbmRTb3VuZGJvYXJkU291bmQpID0+IFByb21pc2U8dm9pZD5cbiAgbGlzdERlZmF1bHRTb3VuZGJvYXJkU291bmRzOiAoKSA9PiBQcm9taXNlPFNvdW5kYm9hcmRTb3VuZFtdPlxuICBsaXN0R3VpbGRTb3VuZGJvYXJkU291bmRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHsgaXRlbXM6IFNvdW5kYm9hcmRTb3VuZFtdIH0+XG4gIGdldEd1aWxkU291bmRib2FyZFNvdW5kOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzb3VuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U291bmRib2FyZFNvdW5kPlxuICBjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTb3VuZGJvYXJkU291bmQ+XG4gIG1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHNvdW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBNb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTb3VuZGJvYXJkU291bmQ+XG4gIGRlbGV0ZUd1aWxkU291bmRib2FyZFNvdW5kOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzb3VuZElkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuIl0sIm5hbWVzIjpbInNuYWtlbGl6ZSIsImNyZWF0ZUJvdEhlbHBlcnMiLCJib3QiLCJjcmVhdGVBdXRvbW9kUnVsZSIsImd1aWxkSWQiLCJvcHRpb25zIiwicmVhc29uIiwidHJhbnNmb3JtZXJzIiwiYXV0b21vZFJ1bGUiLCJyZXN0IiwiY3JlYXRlQ2hhbm5lbCIsImNoYW5uZWwiLCJjcmVhdGVFbW9qaSIsImVtb2ppIiwiY3JlYXRlQXBwbGljYXRpb25FbW9qaSIsImNyZWF0ZUZvcnVtVGhyZWFkIiwiY2hhbm5lbElkIiwiY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiY29tbWFuZCIsImFwcGxpY2F0aW9uQ29tbWFuZCIsImNyZWF0ZUd1aWxkIiwiZ3VpbGQiLCJzaGFyZElkIiwiY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJjcmVhdGVHdWlsZEZyb21UZW1wbGF0ZSIsInRlbXBsYXRlQ29kZSIsImNyZWF0ZUd1aWxkU3RpY2tlciIsInN0aWNrZXIiLCJjcmVhdGVHdWlsZFRlbXBsYXRlIiwidGVtcGxhdGUiLCJjcmVhdGVJbnZpdGUiLCJjcmVhdGVSb2xlIiwicm9sZSIsImNyZWF0ZVNjaGVkdWxlZEV2ZW50Iiwic2NoZWR1bGVkRXZlbnQiLCJjcmVhdGVTdGFnZUluc3RhbmNlIiwic3RhZ2VJbnN0YW5jZSIsImNyZWF0ZVdlYmhvb2siLCJ3ZWJob29rIiwiZWRpdEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zIiwiY29tbWFuZElkIiwiYmVhcmVyVG9rZW4iLCJhcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uIiwiZWRpdEF1dG9tb2RSdWxlIiwicnVsZUlkIiwiZWRpdEJvdFByb2ZpbGUiLCJ1c2VyIiwiZWRpdENoYW5uZWwiLCJlZGl0RW1vamkiLCJpZCIsImVkaXRBcHBsaWNhdGlvbkVtb2ppIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsInRva2VuIiwibWVzc2FnZUlkIiwibWVzc2FnZSIsImVkaXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJlZGl0R3VpbGQiLCJlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJlZGl0R3VpbGRTdGlja2VyIiwic3RpY2tlcklkIiwiZWRpdEd1aWxkVGVtcGxhdGUiLCJlZGl0TWVzc2FnZSIsImVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJlZGl0T3JpZ2luYWxXZWJob29rTWVzc2FnZSIsIndlYmhvb2tJZCIsImVkaXRSb2xlIiwicm9sZUlkIiwiZWRpdFJvbGVQb3NpdGlvbnMiLCJtYXAiLCJlZGl0U2NoZWR1bGVkRXZlbnQiLCJldmVudElkIiwiZWRpdFN0YWdlSW5zdGFuY2UiLCJ0b3BpYyIsImVkaXRXZWJob29rIiwiZWRpdFdlYmhvb2tNZXNzYWdlIiwiZWRpdFdlYmhvb2tXaXRoVG9rZW4iLCJlZGl0V2VsY29tZVNjcmVlbiIsIndlbGNvbWVTY3JlZW4iLCJlZGl0V2lkZ2V0U2V0dGluZ3MiLCJ3aWRnZXRTZXR0aW5ncyIsImV4ZWN1dGVXZWJob29rIiwicmVzdWx0IiwiZm9sbG93QW5ub3VuY2VtZW50Iiwic291cmNlQ2hhbm5lbElkIiwidGFyZ2V0Q2hhbm5lbElkIiwiZ2V0QWN0aXZlVGhyZWFkcyIsInRocmVhZHMiLCJ0aHJlYWQiLCJtZW1iZXJzIiwibWVtYmVyIiwidGhyZWFkTWVtYmVyIiwiZ2V0QXBwbGljYXRpb25JbmZvIiwiYXBwbGljYXRpb24iLCJlZGl0QXBwbGljYXRpb25JbmZvIiwiYm9keSIsImdldEN1cnJlbnRBdXRoZW50aWNhdGlvbkluZm8iLCJleGNoYW5nZVRva2VuIiwiY2xpZW50SWQiLCJjbGllbnRTZWNyZXQiLCJyZXZva2VUb2tlbiIsImdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24iLCJyZXMiLCJzbmFrZWRSZXMiLCJnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyIsImdldEF1ZGl0TG9nIiwiZ2V0QXV0b21vZFJ1bGUiLCJnZXRBdXRvbW9kUnVsZXMiLCJnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnMiLCJ2b2ljZVJlZ2lvbiIsImdldEJhbiIsInVzZXJJZCIsImdldEJhbnMiLCJnZXRDaGFubmVsIiwiZ2V0Q2hhbm5lbEludml0ZXMiLCJnZXRDaGFubmVscyIsImdldENoYW5uZWxXZWJob29rcyIsImdldERtQ2hhbm5lbCIsImdldEdyb3VwRG1DaGFubmVsIiwiZ2V0RW1vamkiLCJlbW9qaUlkIiwiZ2V0QXBwbGljYXRpb25FbW9qaSIsImdldEVtb2ppcyIsImdldEFwcGxpY2F0aW9uRW1vamlzIiwiaXRlbXMiLCJpdGVtIiwiZ2V0Rm9sbG93dXBNZXNzYWdlIiwiZ2V0R2F0ZXdheUJvdCIsImdhdGV3YXlCb3QiLCJnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZ2V0R3VpbGQiLCJnZXRHdWlsZHMiLCJnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZCIsImdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kcyIsImdldEd1aWxkUHJldmlldyIsImdldEd1aWxkU3RpY2tlciIsImdldEd1aWxkU3RpY2tlcnMiLCJnZXRHdWlsZFRlbXBsYXRlIiwiZ2V0R3VpbGRUZW1wbGF0ZXMiLCJnZXRHdWlsZFdlYmhvb2tzIiwiZ2V0SW50ZWdyYXRpb25zIiwiaW50ZWdyYXRpb24iLCJ0b1N0cmluZyIsImdldEludml0ZSIsImludml0ZUNvZGUiLCJpbnZpdGUiLCJnZXRJbnZpdGVzIiwiZ2V0TWVzc2FnZSIsImdldE1lc3NhZ2VzIiwiZ2V0U3RpY2tlclBhY2siLCJzdGlja2VyUGFja0lkIiwic3RpY2tlclBhY2siLCJnZXRTdGlja2VyUGFja3MiLCJnZXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJnZXRQaW5uZWRNZXNzYWdlcyIsImdldFByaXZhdGVBcmNoaXZlZFRocmVhZHMiLCJnZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzIiwiZ2V0UHJ1bmVDb3VudCIsImdldFB1YmxpY0FyY2hpdmVkVGhyZWFkcyIsImdldFJvbGVzIiwiZ2V0Um9sZSIsImdldFNjaGVkdWxlZEV2ZW50IiwiZ2V0U2NoZWR1bGVkRXZlbnRzIiwiZ2V0U2NoZWR1bGVkRXZlbnRVc2VycyIsInUiLCJzbm93Zmxha2UiLCJnZXRTZXNzaW9uSW5mbyIsImdldFN0YWdlSW5zdGFuY2UiLCJnZXRPd25Wb2ljZVN0YXRlIiwidm9pY2VTdGF0ZSIsImdldFVzZXJWb2ljZVN0YXRlIiwiZ2V0U3RpY2tlciIsImdldFRocmVhZE1lbWJlciIsImdldFRocmVhZE1lbWJlcnMiLCJnZXRSZWFjdGlvbnMiLCJyZWFjdGlvbiIsImdldFVzZXIiLCJnZXRDdXJyZW50VXNlciIsImdldFVzZXJDb25uZWN0aW9ucyIsImdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uIiwiYXBwbGljYXRpb25JZCIsImdldFZhbml0eVVybCIsImdldFZvaWNlUmVnaW9ucyIsImdldFdlYmhvb2siLCJnZXRXZWJob29rTWVzc2FnZSIsImdldFdlYmhvb2tXaXRoVG9rZW4iLCJnZXRXZWxjb21lU2NyZWVuIiwiZ2V0V2lkZ2V0Iiwid2lkZ2V0IiwiZ2V0V2lkZ2V0U2V0dGluZ3MiLCJwdWJsaXNoTWVzc2FnZSIsInNlbmRNZXNzYWdlIiwic2VuZEZvbGxvd3VwTWVzc2FnZSIsInN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2UiLCJzdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlIiwic3luY0d1aWxkVGVtcGxhdGUiLCJ1cHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzIiwiY29tbWFuZHMiLCJ1cHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHMiLCJlZGl0Qm90TWVtYmVyIiwiZWRpdE1lbWJlciIsImdldE1lbWJlciIsImdldEN1cnJlbnRNZW1iZXIiLCJnZXRNZW1iZXJzIiwicHJ1bmVNZW1iZXJzIiwic2VhcmNoTWVtYmVycyIsInF1ZXJ5IiwiYnVsa0Jhbk1lbWJlcnMiLCJiYW5uZWRVc2VycyIsIngiLCJmYWlsZWRVc2VycyIsImdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZSIsImluc3RhbmNlSWQiLCJhZGRSZWFjdGlvbiIsImFkZFJlYWN0aW9ucyIsInJlYWN0aW9ucyIsIm9yZGVyZWQiLCJhZGRSb2xlIiwiYWRkVGhyZWFkTWVtYmVyIiwiYWRkRG1SZWNpcGllbnQiLCJhZGRHdWlsZE1lbWJlciIsImRlbGV0ZUF1dG9tb2RSdWxlIiwiZGVsZXRlQ2hhbm5lbCIsImRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGUiLCJvdmVyd3JpdGVJZCIsImRlbGV0ZUVtb2ppIiwiZGVsZXRlQXBwbGljYXRpb25FbW9qaSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZCIsImRlbGV0ZUd1aWxkIiwiZGVsZXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJkZWxldGVHdWlsZFN0aWNrZXIiLCJkZWxldGVHdWlsZFRlbXBsYXRlIiwiZGVsZXRlSW50ZWdyYXRpb24iLCJpbnRlZ3JhdGlvbklkIiwiZGVsZXRlSW52aXRlIiwiZGVsZXRlTWVzc2FnZSIsImRlbGV0ZU1lc3NhZ2VzIiwibWVzc2FnZUlkcyIsImRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlbGV0ZU93blJlYWN0aW9uIiwiZGVsZXRlUmVhY3Rpb25zQWxsIiwiZGVsZXRlUmVhY3Rpb25zRW1vamkiLCJkZWxldGVSb2xlIiwiZGVsZXRlU2NoZWR1bGVkRXZlbnQiLCJkZWxldGVTdGFnZUluc3RhbmNlIiwiZGVsZXRlVXNlclJlYWN0aW9uIiwiZGVsZXRlV2ViaG9vayIsImRlbGV0ZVdlYmhvb2tNZXNzYWdlIiwiZGVsZXRlV2ViaG9va1dpdGhUb2tlbiIsImVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlcyIsImVkaXRDaGFubmVsUG9zaXRpb25zIiwiY2hhbm5lbFBvc2l0aW9ucyIsImVkaXRHdWlsZE1mYUxldmVsIiwibWZhTGV2ZWwiLCJlZGl0T3duVm9pY2VTdGF0ZSIsImVkaXRVc2VyVm9pY2VTdGF0ZSIsImVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImpvaW5UaHJlYWQiLCJsZWF2ZUd1aWxkIiwibGVhdmVUaHJlYWQiLCJyZW1vdmVSb2xlIiwicmVtb3ZlVGhyZWFkTWVtYmVyIiwicmVtb3ZlRG1SZWNpcGllbnQiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImludGVyYWN0aW9uSWQiLCJwYXJhbXMiLCJyZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsInRyaWdnZXJUeXBpbmdJbmRpY2F0b3IiLCJiYW5NZW1iZXIiLCJraWNrTWVtYmVyIiwicGluTWVzc2FnZSIsInVuYmFuTWVtYmVyIiwidW5waW5NZXNzYWdlIiwiZ2V0R3VpbGRPbmJvYXJkaW5nIiwiZ3VpbGRPbmJvYXJkaW5nIiwiZWRpdEd1aWxkT25ib2FyZGluZyIsImxpc3RFbnRpdGxlbWVudHMiLCJlbnRpdGxlbWVudCIsImNyZWF0ZVRlc3RFbnRpdGxlbWVudCIsImRlbGV0ZVRlc3RFbnRpdGxlbWVudCIsImVudGl0bGVtZW50SWQiLCJsaXN0U2t1cyIsInNrdSIsImdldFN1YnNjcmlwdGlvbiIsInNrdUlkIiwic3Vic2NyaXB0aW9uSWQiLCJsaXN0U3Vic2NyaXB0aW9ucyIsInNlbmRTb3VuZGJvYXJkU291bmQiLCJsaXN0RGVmYXVsdFNvdW5kYm9hcmRTb3VuZHMiLCJzb3VuZCIsInNvdW5kYm9hcmRTb3VuZCIsImxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHMiLCJnZXRHdWlsZFNvdW5kYm9hcmRTb3VuZCIsInNvdW5kSWQiLCJjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZCIsIm1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kIiwiZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQiXSwibWFwcGluZ3MiOiJBQXVHQSxTQUFTQSxTQUFTLFFBQVEsb0JBQW1CO0FBa0M3QyxPQUFPLFNBQVNDLGlCQUFpQkMsR0FBUTtJQUN2QyxPQUFPO1FBQ0xDLG1CQUFtQixPQUFPQyxTQUFTQyxTQUFTQztZQUMxQyxPQUFPSixJQUFJSyxZQUFZLENBQUNDLFdBQVcsQ0FBQ04sS0FBS0YsVUFBVSxNQUFNRSxJQUFJTyxJQUFJLENBQUNOLGlCQUFpQixDQUFDQyxTQUFTQyxTQUFTQztRQUN4RztRQUNBSSxlQUFlLE9BQU9OLFNBQVNDLFNBQVNDO1lBQ3RDLE9BQU9KLElBQUlLLFlBQVksQ0FBQ0ksT0FBTyxDQUFDVCxLQUFLO2dCQUFFUyxTQUFTWCxVQUFVLE1BQU1FLElBQUlPLElBQUksQ0FBQ0MsYUFBYSxDQUFDTixTQUFTQyxTQUFTQztnQkFBVUY7WUFBUTtRQUM3SDtRQUNBUSxhQUFhLE9BQU9SLFNBQVNDLFNBQVNDO1lBQ3BDLE9BQU9KLElBQUlLLFlBQVksQ0FBQ00sS0FBSyxDQUFDWCxLQUFLRixVQUFVLE1BQU1FLElBQUlP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