@discordeno/bot 21.0.0-next.bcd8d4d → 21.0.0-next.cafc571

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 (46) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/constants.cjs +2 -2
  3. package/dist/cjs/desiredProperties.cjs +64 -1
  4. package/dist/cjs/helpers.cjs +28 -7
  5. package/dist/cjs/transformers/automodActionExecution.cjs +3 -3
  6. package/dist/cjs/transformers/component.cjs +181 -64
  7. package/dist/cjs/transformers/index.cjs +2 -1
  8. package/dist/cjs/transformers/interaction.cjs +7 -2
  9. package/dist/cjs/transformers/lobby.cjs +41 -0
  10. package/dist/cjs/transformers/reverse/component.cjs +97 -11
  11. package/dist/cjs/transformers.cjs +11 -1
  12. package/dist/cjs/utils.cjs +5 -5
  13. package/dist/esm/constants.js +2 -2
  14. package/dist/esm/desiredProperties.js +64 -1
  15. package/dist/esm/helpers.js +28 -7
  16. package/dist/esm/transformers/automodActionExecution.js +3 -3
  17. package/dist/esm/transformers/component.js +167 -61
  18. package/dist/esm/transformers/index.js +2 -1
  19. package/dist/esm/transformers/interaction.js +7 -2
  20. package/dist/esm/transformers/lobby.js +23 -0
  21. package/dist/esm/transformers/reverse/component.js +83 -8
  22. package/dist/esm/transformers/types.js +2 -2
  23. package/dist/esm/transformers.js +13 -3
  24. package/dist/esm/utils.js +5 -5
  25. package/dist/types/constants.d.ts.map +1 -1
  26. package/dist/types/desiredProperties.d.ts +7 -2
  27. package/dist/types/desiredProperties.d.ts.map +1 -1
  28. package/dist/types/helpers.d.ts +17 -11
  29. package/dist/types/helpers.d.ts.map +1 -1
  30. package/dist/types/transformers/automodActionExecution.d.ts.map +1 -1
  31. package/dist/types/transformers/component.d.ts +3 -1
  32. package/dist/types/transformers/component.d.ts.map +1 -1
  33. package/dist/types/transformers/index.d.ts +1 -0
  34. package/dist/types/transformers/index.d.ts.map +1 -1
  35. package/dist/types/transformers/interaction.d.ts.map +1 -1
  36. package/dist/types/transformers/lobby.d.ts +5 -0
  37. package/dist/types/transformers/lobby.d.ts.map +1 -0
  38. package/dist/types/transformers/reverse/component.d.ts +3 -1
  39. package/dist/types/transformers/reverse/component.d.ts.map +1 -1
  40. package/dist/types/transformers/types.d.ts +72 -4
  41. package/dist/types/transformers/types.d.ts.map +1 -1
  42. package/dist/types/transformers.d.ts +12 -2
  43. package/dist/types/transformers.d.ts.map +1 -1
  44. package/dist/types/utils.d.ts +1 -1
  45. package/dist/types/utils.d.ts.map +1 -1
  46. package/package.json +5 -5
@@ -12,14 +12,14 @@ export function transformAutoModerationActionExecution(bot, payload) {
12
12
  matchedContent: payload.matched_content ?? '',
13
13
  action: {
14
14
  type: payload.action.type,
15
- metadata: {
15
+ metadata: payload.action.metadata ? {
16
16
  durationSeconds: payload.action.metadata.duration_seconds,
17
17
  customMessage: payload.action.metadata.custom_message,
18
18
  channelId: payload.action.metadata.channel_id ? bot.transformers.snowflake(payload.action.metadata.channel_id) : undefined
19
- }
19
+ } : undefined
20
20
  }
21
21
  };
22
22
  return bot.transformers.customizers.automodActionExecution(bot, payload, rule);
23
23
  }
24
24
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvYXV0b21vZEFjdGlvbkV4ZWN1dGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc2NvcmRBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbiwgQm90IH0gZnJvbSAnLi4vaW5kZXguanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1BdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEF1dG9Nb2RlcmF0aW9uQWN0aW9uRXhlY3V0aW9uKTogQXV0b01vZGVyYXRpb25BY3Rpb25FeGVjdXRpb24ge1xuICBjb25zdCBydWxlID0ge1xuICAgIGNvbnRlbnQ6IHBheWxvYWQuY29udGVudCxcbiAgICBydWxlVHJpZ2dlclR5cGU6IHBheWxvYWQucnVsZV90cmlnZ2VyX3R5cGUsXG4gICAgZ3VpbGRJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZF9pZCksXG4gICAgcnVsZUlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLnJ1bGVfaWQpLFxuICAgIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC51c2VyX2lkKSxcbiAgICBjaGFubmVsSWQ6IHBheWxvYWQuY2hhbm5lbF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbF9pZCkgOiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZUlkOiBwYXlsb2FkLm1lc3NhZ2VfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLm1lc3NhZ2VfaWQpIDogdW5kZWZpbmVkLFxuICAgIGFsZXJ0U3lzdGVtTWVzc2FnZUlkOiBwYXlsb2FkLmFsZXJ0X3N5c3RlbV9tZXNzYWdlX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hbGVydF9zeXN0ZW1fbWVzc2FnZV9pZCkgOiB1bmRlZmluZWQsXG4gICAgbWF0Y2hlZEtleXdvcmQ6IHBheWxvYWQubWF0Y2hlZF9rZXl3b3JkID8/ICcnLFxuICAgIG1hdGNoZWRDb250ZW50OiBwYXlsb2FkLm1hdGNoZWRfY29udGVudCA/PyAnJyxcbiAgICBhY3Rpb246IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuYWN0aW9uLnR5cGUsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBkdXJhdGlvblNlY29uZHM6IHBheWxvYWQuYWN0aW9uLm1ldGFkYXRhLmR1cmF0aW9uX3NlY29uZHMsXG4gICAgICAgIGN1c3RvbU1lc3NhZ2U6IHBheWxvYWQuYWN0aW9uLm1ldGFkYXRhLmN1c3RvbV9tZXNzYWdlLFxuICAgICAgICBjaGFubmVsSWQ6IHBheWxvYWQuYWN0aW9uLm1ldGFkYXRhLmNoYW5uZWxfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmFjdGlvbi5tZXRhZGF0YS5jaGFubmVsX2lkKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSBhcyBBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvblxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmF1dG9tb2RBY3Rpb25FeGVjdXRpb24oYm90LCBwYXlsb2FkLCBydWxlKVxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUF1dG9Nb2RlcmF0aW9uQWN0aW9uRXhlY3V0aW9uIiwiYm90IiwicGF5bG9hZCIsInJ1bGUiLCJjb250ZW50IiwicnVsZVRyaWdnZXJUeXBlIiwicnVsZV90cmlnZ2VyX3R5cGUiLCJndWlsZElkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwiZ3VpbGRfaWQiLCJydWxlSWQiLCJydWxlX2lkIiwidXNlcklkIiwidXNlcl9pZCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlSWQiLCJtZXNzYWdlX2lkIiwiYWxlcnRTeXN0ZW1NZXNzYWdlSWQiLCJhbGVydF9zeXN0ZW1fbWVzc2FnZV9pZCIsIm1hdGNoZWRLZXl3b3JkIiwibWF0Y2hlZF9rZXl3b3JkIiwibWF0Y2hlZENvbnRlbnQiLCJtYXRjaGVkX2NvbnRlbnQiLCJhY3Rpb24iLCJ0eXBlIiwibWV0YWRhdGEiLCJkdXJhdGlvblNlY29uZHMiLCJkdXJhdGlvbl9zZWNvbmRzIiwiY3VzdG9tTWVzc2FnZSIsImN1c3RvbV9tZXNzYWdlIiwiY3VzdG9taXplcnMiLCJhdXRvbW9kQWN0aW9uRXhlY3V0aW9uIl0sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLFNBQVNBLHVDQUF1Q0MsR0FBUSxFQUFFQyxPQUE2QztJQUM1RyxNQUFNQyxPQUFPO1FBQ1hDLFNBQVNGLFFBQVFFLE9BQU87UUFDeEJDLGlCQUFpQkgsUUFBUUksaUJBQWlCO1FBQzFDQyxTQUFTTixJQUFJTyxZQUFZLENBQUNDLFNBQVMsQ0FBQ1AsUUFBUVEsUUFBUTtRQUNwREMsUUFBUVYsSUFBSU8sWUFBWSxDQUFDQyxTQUFTLENBQUNQLFFBQVFVLE9BQU87UUFDbERDLFFBQVFaLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRWSxPQUFPO1FBQ2xEQyxXQUFXYixRQUFRYyxVQUFVLEdBQUdmLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRYyxVQUFVLElBQUlDO1FBQ2pGQyxXQUFXaEIsUUFBUWlCLFVBQVUsR0FBR2xCLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRaUIsVUFBVSxJQUFJRjtRQUNqRkcsc0JBQXNCbEIsUUFBUW1CLHVCQUF1QixHQUFHcEIsSUFBSU8sWUFBWSxDQUFDQyxTQUFTLENBQUNQLFFBQVFtQix1QkFBdUIsSUFBSUo7UUFDdEhLLGdCQUFnQnBCLFFBQVFxQixlQUFlLElBQUk7UUFDM0NDLGdCQUFnQnRCLFFBQVF1QixlQUFlLElBQUk7UUFDM0NDLFFBQVE7WUFDTkMsTUFBTXpCLFFBQVF3QixNQUFNLENBQUNDLElBQUk7WUFDekJDLFVBQVU7Z0JBQ1JDLGlCQUFpQjNCLFFBQVF3QixNQUFNLENBQUNFLFFBQVEsQ0FBQ0UsZ0JBQWdCO2dCQUN6REMsZUFBZTdCLFFBQVF3QixNQUFNLENBQUNFLFFBQVEsQ0FBQ0ksY0FBYztnQkFDckRqQixXQUFXYixRQUFRd0IsTUFBTSxDQUFDRSxRQUFRLENBQUNaLFVBQVUsR0FBR2YsSUFBSU8sWUFBWSxDQUFDQyxTQUFTLENBQUNQLFFBQVF3QixNQUFNLENBQUNFLFFBQVEsQ0FBQ1osVUFBVSxJQUFJQztZQUNuSDtRQUNGO0lBQ0Y7SUFFQSxPQUFPaEIsSUFBSU8sWUFBWSxDQUFDeUIsV0FBVyxDQUFDQyxzQkFBc0IsQ0FBQ2pDLEtBQUtDLFNBQVNDO0FBQzNFIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvYXV0b21vZEFjdGlvbkV4ZWN1dGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc2NvcmRBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbiwgQm90IH0gZnJvbSAnLi4vaW5kZXguanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1BdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEF1dG9Nb2RlcmF0aW9uQWN0aW9uRXhlY3V0aW9uKTogQXV0b01vZGVyYXRpb25BY3Rpb25FeGVjdXRpb24ge1xuICBjb25zdCBydWxlID0ge1xuICAgIGNvbnRlbnQ6IHBheWxvYWQuY29udGVudCxcbiAgICBydWxlVHJpZ2dlclR5cGU6IHBheWxvYWQucnVsZV90cmlnZ2VyX3R5cGUsXG4gICAgZ3VpbGRJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZF9pZCksXG4gICAgcnVsZUlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLnJ1bGVfaWQpLFxuICAgIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC51c2VyX2lkKSxcbiAgICBjaGFubmVsSWQ6IHBheWxvYWQuY2hhbm5lbF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbF9pZCkgOiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZUlkOiBwYXlsb2FkLm1lc3NhZ2VfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLm1lc3NhZ2VfaWQpIDogdW5kZWZpbmVkLFxuICAgIGFsZXJ0U3lzdGVtTWVzc2FnZUlkOiBwYXlsb2FkLmFsZXJ0X3N5c3RlbV9tZXNzYWdlX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hbGVydF9zeXN0ZW1fbWVzc2FnZV9pZCkgOiB1bmRlZmluZWQsXG4gICAgbWF0Y2hlZEtleXdvcmQ6IHBheWxvYWQubWF0Y2hlZF9rZXl3b3JkID8/ICcnLFxuICAgIG1hdGNoZWRDb250ZW50OiBwYXlsb2FkLm1hdGNoZWRfY29udGVudCA/PyAnJyxcbiAgICBhY3Rpb246IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuYWN0aW9uLnR5cGUsXG4gICAgICBtZXRhZGF0YTogcGF5bG9hZC5hY3Rpb24ubWV0YWRhdGFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBkdXJhdGlvblNlY29uZHM6IHBheWxvYWQuYWN0aW9uLm1ldGFkYXRhLmR1cmF0aW9uX3NlY29uZHMsXG4gICAgICAgICAgICBjdXN0b21NZXNzYWdlOiBwYXlsb2FkLmFjdGlvbi5tZXRhZGF0YS5jdXN0b21fbWVzc2FnZSxcbiAgICAgICAgICAgIGNoYW5uZWxJZDogcGF5bG9hZC5hY3Rpb24ubWV0YWRhdGEuY2hhbm5lbF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYWN0aW9uLm1ldGFkYXRhLmNoYW5uZWxfaWQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfSBhcyBBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvblxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmF1dG9tb2RBY3Rpb25FeGVjdXRpb24oYm90LCBwYXlsb2FkLCBydWxlKVxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUF1dG9Nb2RlcmF0aW9uQWN0aW9uRXhlY3V0aW9uIiwiYm90IiwicGF5bG9hZCIsInJ1bGUiLCJjb250ZW50IiwicnVsZVRyaWdnZXJUeXBlIiwicnVsZV90cmlnZ2VyX3R5cGUiLCJndWlsZElkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwiZ3VpbGRfaWQiLCJydWxlSWQiLCJydWxlX2lkIiwidXNlcklkIiwidXNlcl9pZCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlSWQiLCJtZXNzYWdlX2lkIiwiYWxlcnRTeXN0ZW1NZXNzYWdlSWQiLCJhbGVydF9zeXN0ZW1fbWVzc2FnZV9pZCIsIm1hdGNoZWRLZXl3b3JkIiwibWF0Y2hlZF9rZXl3b3JkIiwibWF0Y2hlZENvbnRlbnQiLCJtYXRjaGVkX2NvbnRlbnQiLCJhY3Rpb24iLCJ0eXBlIiwibWV0YWRhdGEiLCJkdXJhdGlvblNlY29uZHMiLCJkdXJhdGlvbl9zZWNvbmRzIiwiY3VzdG9tTWVzc2FnZSIsImN1c3RvbV9tZXNzYWdlIiwiY3VzdG9taXplcnMiLCJhdXRvbW9kQWN0aW9uRXhlY3V0aW9uIl0sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLFNBQVNBLHVDQUF1Q0MsR0FBUSxFQUFFQyxPQUE2QztJQUM1RyxNQUFNQyxPQUFPO1FBQ1hDLFNBQVNGLFFBQVFFLE9BQU87UUFDeEJDLGlCQUFpQkgsUUFBUUksaUJBQWlCO1FBQzFDQyxTQUFTTixJQUFJTyxZQUFZLENBQUNDLFNBQVMsQ0FBQ1AsUUFBUVEsUUFBUTtRQUNwREMsUUFBUVYsSUFBSU8sWUFBWSxDQUFDQyxTQUFTLENBQUNQLFFBQVFVLE9BQU87UUFDbERDLFFBQVFaLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRWSxPQUFPO1FBQ2xEQyxXQUFXYixRQUFRYyxVQUFVLEdBQUdmLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRYyxVQUFVLElBQUlDO1FBQ2pGQyxXQUFXaEIsUUFBUWlCLFVBQVUsR0FBR2xCLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRaUIsVUFBVSxJQUFJRjtRQUNqRkcsc0JBQXNCbEIsUUFBUW1CLHVCQUF1QixHQUFHcEIsSUFBSU8sWUFBWSxDQUFDQyxTQUFTLENBQUNQLFFBQVFtQix1QkFBdUIsSUFBSUo7UUFDdEhLLGdCQUFnQnBCLFFBQVFxQixlQUFlLElBQUk7UUFDM0NDLGdCQUFnQnRCLFFBQVF1QixlQUFlLElBQUk7UUFDM0NDLFFBQVE7WUFDTkMsTUFBTXpCLFFBQVF3QixNQUFNLENBQUNDLElBQUk7WUFDekJDLFVBQVUxQixRQUFRd0IsTUFBTSxDQUFDRSxRQUFRLEdBQzdCO2dCQUNFQyxpQkFBaUIzQixRQUFRd0IsTUFBTSxDQUFDRSxRQUFRLENBQUNFLGdCQUFnQjtnQkFDekRDLGVBQWU3QixRQUFRd0IsTUFBTSxDQUFDRSxRQUFRLENBQUNJLGNBQWM7Z0JBQ3JEakIsV0FBV2IsUUFBUXdCLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDWixVQUFVLEdBQUdmLElBQUlPLFlBQVksQ0FBQ0MsU0FBUyxDQUFDUCxRQUFRd0IsTUFBTSxDQUFDRSxRQUFRLENBQUNaLFVBQVUsSUFBSUM7WUFDbkgsSUFDQUE7UUFDTjtJQUNGO0lBRUEsT0FBT2hCLElBQUlPLFlBQVksQ0FBQ3lCLFdBQVcsQ0FBQ0Msc0JBQXNCLENBQUNqQyxLQUFLQyxTQUFTQztBQUMzRSJ9
@@ -9,79 +9,185 @@ export function transformComponent(bot, payload) {
9
9
  case MessageComponentTypes.Button:
10
10
  component = transformButtonComponent(bot, payload);
11
11
  break;
12
- case MessageComponentTypes.InputText:
12
+ case MessageComponentTypes.Container:
13
+ component = transformContainerComponent(bot, payload);
14
+ break;
15
+ case MessageComponentTypes.TextInput:
13
16
  component = transformInputTextComponent(bot, payload);
14
17
  break;
15
- case MessageComponentTypes.SelectMenu:
16
- case MessageComponentTypes.SelectMenuChannels:
17
- case MessageComponentTypes.SelectMenuRoles:
18
- case MessageComponentTypes.SelectMenuUsers:
19
- case MessageComponentTypes.SelectMenuUsersAndRoles:
18
+ case MessageComponentTypes.StringSelect:
19
+ case MessageComponentTypes.UserSelect:
20
+ case MessageComponentTypes.RoleSelect:
21
+ case MessageComponentTypes.MentionableSelect:
22
+ case MessageComponentTypes.ChannelSelect:
20
23
  component = transformSelectMenuComponent(bot, payload);
21
24
  break;
25
+ case MessageComponentTypes.Section:
26
+ component = transformSectionComponent(bot, payload);
27
+ break;
28
+ case MessageComponentTypes.Thumbnail:
29
+ component = transformThumbnailComponent(bot, payload);
30
+ break;
31
+ case MessageComponentTypes.MediaGallery:
32
+ component = transformMediaGalleryComponent(bot, payload);
33
+ break;
34
+ case MessageComponentTypes.File:
35
+ component = transformFileComponent(bot, payload);
36
+ break;
37
+ case MessageComponentTypes.Separator:
38
+ component = transformSeparatorComponent(bot, payload);
39
+ break;
40
+ case MessageComponentTypes.TextDisplay:
41
+ component = transformTextDisplayComponent(bot, payload);
42
+ break;
22
43
  }
23
44
  return bot.transformers.customizers.component(bot, payload, component);
24
45
  }
46
+ export function transformUnfurledMediaItem(bot, payload) {
47
+ const props = bot.transformers.desiredProperties.unfurledMediaItem;
48
+ const mediaItem = {};
49
+ if (props.url && payload.url) mediaItem.url = payload.url;
50
+ if (props.proxyUrl && payload.proxy_url) mediaItem.proxyUrl = payload.proxy_url;
51
+ if (props.height && payload.height) mediaItem.height = payload.height;
52
+ if (props.width && payload.width) mediaItem.width = payload.width;
53
+ if (props.contentType && payload.content_type) mediaItem.contentType = payload.content_type;
54
+ return bot.transformers.customizers.unfurledMediaItem(bot, payload, mediaItem);
55
+ }
56
+ export function transformMediaGalleryItem(bot, payload) {
57
+ const props = bot.transformers.desiredProperties.mediaGalleryItem;
58
+ const galleryItem = {};
59
+ if (props.media && payload.media) galleryItem.media = bot.transformers.unfurledMediaItem(bot, payload.media);
60
+ if (props.description && payload.description) galleryItem.description = payload.description;
61
+ if (props.spoiler && payload.spoiler) galleryItem.spoiler = payload.spoiler;
62
+ return bot.transformers.customizers.mediaGalleryItem(bot, payload, galleryItem);
63
+ }
25
64
  function transformActionRow(bot, payload) {
26
- return {
27
- type: MessageComponentTypes.ActionRow,
28
- components: payload.components.map((component)=>bot.transformers.component(bot, component))
29
- };
65
+ const props = bot.transformers.desiredProperties.component;
66
+ const actionRow = {};
67
+ if (props.type && payload.type) actionRow.type = payload.type;
68
+ if (props.id && payload.id) actionRow.id = payload.id;
69
+ if (props.components && payload.components) actionRow.components = payload.components.map((component)=>bot.transformers.component(bot, component));
70
+ return actionRow;
71
+ }
72
+ function transformContainerComponent(bot, payload) {
73
+ const props = bot.transformers.desiredProperties.component;
74
+ const container = {};
75
+ if (props.type && payload.type) container.type = payload.type;
76
+ if (props.id && payload.id) container.id = payload.id;
77
+ if (props.accentColor && payload.accent_color) container.accentColor = payload.accent_color;
78
+ if (props.spoiler && payload.spoiler) container.spoiler = payload.spoiler;
79
+ if (props.components && payload.components) container.components = payload.components.map((component)=>bot.transformers.component(bot, component));
80
+ return container;
30
81
  }
31
82
  function transformButtonComponent(bot, payload) {
32
- return {
33
- type: MessageComponentTypes.Button,
34
- label: payload.label,
35
- customId: payload.custom_id,
36
- style: payload.style,
37
- emoji: payload.emoji ? {
38
- id: payload.emoji.id ? bot.transformers.snowflake(payload.emoji.id) : undefined,
39
- name: payload.emoji.name,
40
- animated: payload.emoji.animated
41
- } : undefined,
42
- url: payload.url,
43
- disabled: payload.disabled,
44
- skuId: payload.sku_id ? bot.transformers.snowflake(payload.sku_id) : undefined
45
- };
83
+ const props = bot.transformers.desiredProperties.component;
84
+ const button = {};
85
+ if (props.type && payload.type) button.type = payload.type;
86
+ if (props.id && payload.id) button.id = payload.id;
87
+ if (props.label && payload.label) button.label = payload.label;
88
+ if (props.customId && payload.custom_id) button.customId = payload.custom_id;
89
+ if (props.style && payload.style) button.style = payload.style;
90
+ if (props.emoji && payload.emoji) button.emoji = bot.transformers.emoji(bot, payload.emoji);
91
+ if (props.url && payload.url) button.url = payload.url;
92
+ if (props.disabled && payload.disabled) button.disabled = payload.disabled;
93
+ if (props.skuId && payload.sku_id) button.skuId = bot.transformers.snowflake(payload.sku_id);
94
+ return button;
46
95
  }
47
- function transformInputTextComponent(_bot, payload) {
48
- return {
49
- type: MessageComponentTypes.InputText,
50
- style: payload.style,
51
- required: payload.required,
52
- customId: payload.custom_id,
53
- label: payload.label,
54
- placeholder: payload.placeholder,
55
- minLength: payload.min_length,
56
- maxLength: payload.max_length,
57
- value: payload.value
58
- };
96
+ function transformInputTextComponent(bot, payload) {
97
+ const props = bot.transformers.desiredProperties.component;
98
+ const input = {};
99
+ if (props.type && payload.type) input.type = payload.type;
100
+ if (props.id && payload.id) input.id = payload.id;
101
+ if (props.style && payload.style) input.style = payload.style;
102
+ if (props.required && payload.required) input.required = payload.required;
103
+ if (props.customId && payload.custom_id) input.customId = payload.custom_id;
104
+ if (props.label && payload.label) input.label = payload.label;
105
+ if (props.placeholder && payload.placeholder) input.placeholder = payload.placeholder;
106
+ if (props.minLength && payload.min_length) input.minLength = payload.min_length;
107
+ if (props.maxLength && payload.max_length) input.maxLength = payload.max_length;
108
+ if (props.value && payload.value) input.value = payload.value;
109
+ return input;
59
110
  }
60
111
  function transformSelectMenuComponent(bot, payload) {
61
- return {
62
- type: payload.type,
63
- customId: payload.custom_id,
64
- placeholder: payload.placeholder,
65
- minValues: payload.min_values,
66
- maxValues: payload.max_values,
67
- defaultValues: payload.default_values?.map((defaultValue)=>({
68
- id: bot.transformers.snowflake(defaultValue.id),
69
- type: defaultValue.type
70
- })),
71
- channelTypes: payload.channel_types,
72
- options: payload.options?.map((option)=>({
73
- label: option.label,
74
- value: option.value,
75
- description: option.description,
76
- emoji: option.emoji ? {
77
- id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,
78
- name: option.emoji.name,
79
- animated: option.emoji.animated
80
- } : undefined,
81
- default: option.default
82
- })),
83
- disabled: payload.disabled
84
- };
112
+ const props = bot.transformers.desiredProperties.component;
113
+ const select = {};
114
+ if (props.type && payload.type) select.type = payload.type;
115
+ if (props.id && payload.id) select.id = payload.id;
116
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
117
+ if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
118
+ if (props.minValues && payload.min_values) select.minValues = payload.min_values;
119
+ if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
120
+ if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
121
+ id: bot.transformers.snowflake(defaultValue.id),
122
+ type: defaultValue.type
123
+ }));
124
+ if (props.channelTypes && payload.channel_types) select.channelTypes = payload.channel_types;
125
+ if (props.options && payload.options) select.options = payload.options.map((option)=>({
126
+ label: option.label,
127
+ value: option.value,
128
+ description: option.description,
129
+ emoji: option.emoji ? {
130
+ id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,
131
+ name: option.emoji.name,
132
+ animated: option.emoji.animated
133
+ } : undefined,
134
+ default: option.default
135
+ }));
136
+ if (props.disabled && payload.disabled) select.disabled = payload.disabled;
137
+ return select;
138
+ }
139
+ function transformSectionComponent(bot, payload) {
140
+ const props = bot.transformers.desiredProperties.component;
141
+ const section = {};
142
+ if (props.type && payload.type) section.type = payload.type;
143
+ if (props.id && payload.id) section.id = payload.id;
144
+ if (props.components && payload.components) section.components = payload.components.map((component)=>bot.transformers.component(bot, component));
145
+ if (props.accessory && payload.accessory) section.accessory = bot.transformers.component(bot, payload.accessory);
146
+ return section;
147
+ }
148
+ function transformThumbnailComponent(bot, payload) {
149
+ const props = bot.transformers.desiredProperties.component;
150
+ const thumbnail = {};
151
+ if (props.type && payload.type) thumbnail.type = payload.type;
152
+ if (props.id && payload.id) thumbnail.id = payload.id;
153
+ if (props.media && payload.media) thumbnail.media = bot.transformers.unfurledMediaItem(bot, payload.media);
154
+ if (props.description && payload.description) thumbnail.description = payload.description;
155
+ if (props.spoiler && payload.spoiler) thumbnail.spoiler = payload.spoiler;
156
+ return thumbnail;
157
+ }
158
+ function transformMediaGalleryComponent(bot, payload) {
159
+ const props = bot.transformers.desiredProperties.component;
160
+ const mediaGallery = {};
161
+ if (props.type && payload.type) mediaGallery.type = payload.type;
162
+ if (props.id && payload.id) mediaGallery.id = payload.id;
163
+ if (props.items && payload.items) mediaGallery.items = payload.items.map((item)=>bot.transformers.mediaGalleryItem(bot, item));
164
+ return mediaGallery;
165
+ }
166
+ function transformFileComponent(bot, payload) {
167
+ const props = bot.transformers.desiredProperties.component;
168
+ const file = {};
169
+ if (props.type && payload.type) file.type = payload.type;
170
+ if (props.id && payload.id) file.id = payload.id;
171
+ if (props.file && payload.file) file.file = bot.transformers.unfurledMediaItem(bot, payload.file);
172
+ if (props.spoiler && payload.spoiler) file.spoiler = payload.spoiler;
173
+ return file;
174
+ }
175
+ function transformTextDisplayComponent(bot, payload) {
176
+ const props = bot.transformers.desiredProperties.component;
177
+ const textDisplay = {};
178
+ if (props.type && payload.type) textDisplay.type = payload.type;
179
+ if (props.id && payload.id) textDisplay.id = payload.id;
180
+ if (props.content && payload.content) textDisplay.content = payload.content;
181
+ return textDisplay;
182
+ }
183
+ function transformSeparatorComponent(bot, payload) {
184
+ const props = bot.transformers.desiredProperties.component;
185
+ const separator = {};
186
+ if (props.type && payload.type) separator.type = payload.type;
187
+ if (props.id && payload.id) separator.id = payload.id;
188
+ if (props.divider && payload.divider) separator.divider = payload.divider;
189
+ if (props.spacing && payload.spacing) separator.spacing = payload.spacing;
190
+ return separator;
85
191
  }
86
192
 
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRJbnB1dFRleHRDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQsXG4gIE1lc3NhZ2VDb21wb25lbnRUeXBlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJvdCwgQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5kZXguanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRNZXNzYWdlQ29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgbGV0IGNvbXBvbmVudDogQ29tcG9uZW50XG5cbiAgLy8gVGhpcyBzd2l0Y2ggaXMgZXhoYXVzdGl2ZSwgc28gd2UgZG9udCBuZWVkIHRoZSBkZWZhdWx0IGNhc2UgYW5kIFRTIGRvZXMgbm90IGVycm9yIG91dCBmb3IgdGhlIHVuLWluaXRpYWxpemVkIGNvbXBvbmVudCB2YXJpYWJsZVxuICBzd2l0Y2ggKHBheWxvYWQudHlwZSkge1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkFjdGlvblJvdzpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUFjdGlvblJvdyhib3QsIHBheWxvYWQpXG4gICAgICBicmVha1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3QsIHBheWxvYWQgYXMgRGlzY29yZEJ1dHRvbkNvbXBvbmVudClcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuSW5wdXRUZXh0OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50KGJvdCwgcGF5bG9hZCBhcyBEaXNjb3JkSW5wdXRUZXh0Q29tcG9uZW50KVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZWxlY3RNZW51OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlbGVjdE1lbnVDaGFubmVsczpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZWxlY3RNZW51Um9sZXM6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VsZWN0TWVudVVzZXJzOlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlbGVjdE1lbnVVc2Vyc0FuZFJvbGVzOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQgYXMgRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQpXG4gICAgICBicmVha1xuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuY29tcG9uZW50KGJvdCwgcGF5bG9hZCwgY29tcG9uZW50KVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRBY3Rpb25Sb3cpOiBDb21wb25lbnQge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3csXG4gICAgY29tcG9uZW50czogcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpLFxuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEJ1dHRvbkNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbixcbiAgICBsYWJlbDogcGF5bG9hZC5sYWJlbCxcbiAgICBjdXN0b21JZDogcGF5bG9hZC5jdXN0b21faWQsXG4gICAgc3R5bGU6IHBheWxvYWQuc3R5bGUsXG4gICAgZW1vamk6IHBheWxvYWQuZW1vamlcbiAgICAgID8ge1xuICAgICAgICAgIGlkOiBwYXlsb2FkLmVtb2ppLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZC5lbW9qaS5uYW1lLFxuICAgICAgICAgIGFuaW1hdGVkOiBwYXlsb2FkLmVtb2ppLmFuaW1hdGVkLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICB1cmw6IHBheWxvYWQudXJsLFxuICAgIGRpc2FibGVkOiBwYXlsb2FkLmRpc2FibGVkLFxuICAgIHNrdUlkOiBwYXlsb2FkLnNrdV9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuc2t1X2lkKSA6IHVuZGVmaW5lZCxcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoX2JvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkSW5wdXRUZXh0Q29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBNZXNzYWdlQ29tcG9uZW50VHlwZXMuSW5wdXRUZXh0LFxuICAgIHN0eWxlOiBwYXlsb2FkLnN0eWxlLFxuICAgIHJlcXVpcmVkOiBwYXlsb2FkLnJlcXVpcmVkLFxuICAgIGN1c3RvbUlkOiBwYXlsb2FkLmN1c3RvbV9pZCxcbiAgICBsYWJlbDogcGF5bG9hZC5sYWJlbCxcbiAgICBwbGFjZWhvbGRlcjogcGF5bG9hZC5wbGFjZWhvbGRlcixcbiAgICBtaW5MZW5ndGg6IHBheWxvYWQubWluX2xlbmd0aCxcbiAgICBtYXhMZW5ndGg6IHBheWxvYWQubWF4X2xlbmd0aCxcbiAgICB2YWx1ZTogcGF5bG9hZC52YWx1ZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkU2VsZWN0TWVudUNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogcGF5bG9hZC50eXBlLFxuICAgIGN1c3RvbUlkOiBwYXlsb2FkLmN1c3RvbV9pZCxcbiAgICBwbGFjZWhvbGRlcjogcGF5bG9hZC5wbGFjZWhvbGRlcixcbiAgICBtaW5WYWx1ZXM6IHBheWxvYWQubWluX3ZhbHVlcyxcbiAgICBtYXhWYWx1ZXM6IHBheWxvYWQubWF4X3ZhbHVlcyxcbiAgICBkZWZhdWx0VmFsdWVzOiBwYXlsb2FkLmRlZmF1bHRfdmFsdWVzPy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgfSkpLFxuICAgIGNoYW5uZWxUeXBlczogcGF5bG9hZC5jaGFubmVsX3R5cGVzLFxuICAgIG9wdGlvbnM6IHBheWxvYWQub3B0aW9ucz8ubWFwKChvcHRpb24pID0+ICh7XG4gICAgICBsYWJlbDogb3B0aW9uLmxhYmVsLFxuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICBlbW9qaTogb3B0aW9uLmVtb2ppXG4gICAgICAgID8ge1xuICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbi5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuYW1lOiBvcHRpb24uZW1vamkubmFtZSxcbiAgICAgICAgICAgIGFuaW1hdGVkOiBvcHRpb24uZW1vamkuYW5pbWF0ZWQsXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHQ6IG9wdGlvbi5kZWZhdWx0LFxuICAgIH0pKSxcbiAgICBkaXNhYmxlZDogcGF5bG9hZC5kaXNhYmxlZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb21wb25lbnRUeXBlcyIsInRyYW5zZm9ybUNvbXBvbmVudCIsImJvdCIsInBheWxvYWQiLCJjb21wb25lbnQiLCJ0eXBlIiwiQWN0aW9uUm93IiwidHJhbnNmb3JtQWN0aW9uUm93IiwiQnV0dG9uIiwidHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50IiwiSW5wdXRUZXh0IiwidHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50IiwiU2VsZWN0TWVudSIsIlNlbGVjdE1lbnVDaGFubmVscyIsIlNlbGVjdE1lbnVSb2xlcyIsIlNlbGVjdE1lbnVVc2VycyIsIlNlbGVjdE1lbnVVc2Vyc0FuZFJvbGVzIiwidHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudCIsInRyYW5zZm9ybWVycyIsImN1c3RvbWl6ZXJzIiwiY29tcG9uZW50cyIsIm1hcCIsImxhYmVsIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJzdHlsZSIsImVtb2ppIiwiaWQiLCJzbm93Zmxha2UiLCJ1bmRlZmluZWQiLCJuYW1lIiwiYW5pbWF0ZWQiLCJ1cmwiLCJkaXNhYmxlZCIsInNrdUlkIiwic2t1X2lkIiwiX2JvdCIsInJlcXVpcmVkIiwicGxhY2Vob2xkZXIiLCJtaW5MZW5ndGgiLCJtaW5fbGVuZ3RoIiwibWF4TGVuZ3RoIiwibWF4X2xlbmd0aCIsInZhbHVlIiwibWluVmFsdWVzIiwibWluX3ZhbHVlcyIsIm1heFZhbHVlcyIsIm1heF92YWx1ZXMiLCJkZWZhdWx0VmFsdWVzIiwiZGVmYXVsdF92YWx1ZXMiLCJkZWZhdWx0VmFsdWUiLCJjaGFubmVsVHlwZXMiLCJjaGFubmVsX3R5cGVzIiwib3B0aW9ucyIsIm9wdGlvbiIsImRlc2NyaXB0aW9u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
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRGaWxlQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlY3Rpb25Db21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlcGFyYXRvckNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dERpc3BsYXlDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICBNZXNzYWdlQ29tcG9uZW50VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBCb3QsXG4gIENvbXBvbmVudCxcbiAgRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCxcbiAgRGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0sXG4gIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgTWVkaWFHYWxsZXJ5SXRlbSxcbiAgVW5mdXJsZWRNZWRpYUl0ZW0sXG59IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIGxldCBjb21wb25lbnQ6IENvbXBvbmVudFxuXG4gIC8vIFRoaXMgc3dpdGNoIGlzIGV4aGF1c3RpdmUsIHNvIHdlIGRvbnQgbmVlZCB0aGUgZGVmYXVsdCBjYXNlIGFuZCBUUyBkb2VzIG5vdCBlcnJvciBvdXQgZm9yIHRoZSB1bi1pbml0aWFsaXplZCBjb21wb25lbnQgdmFyaWFibGVcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5CdXR0b246XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Db250YWluZXI6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1Db250YWluZXJDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TdHJpbmdTZWxlY3Q6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVXNlclNlbGVjdDpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Sb2xlU2VsZWN0OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLk1lbnRpb25hYmxlU2VsZWN0OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoYW5uZWxTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZClcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VjdGlvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UaHVtYm5haWw6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZWRpYUdhbGxlcnk6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5GaWxlOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtRmlsZUNvbXBvbmVudChib3QsIHBheWxvYWQpXG4gICAgICBicmVha1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlcGFyYXRvcjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudChib3QsIHBheWxvYWQpXG4gICAgICBicmVha1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRleHREaXNwbGF5OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQsIGNvbXBvbmVudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVW5mdXJsZWRNZWRpYUl0ZW0pOiBVbmZ1cmxlZE1lZGlhSXRlbSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy51bmZ1cmxlZE1lZGlhSXRlbVxuICBjb25zdCBtZWRpYUl0ZW0gPSB7fSBhcyBVbmZ1cmxlZE1lZGlhSXRlbVxuXG4gIGlmIChwcm9wcy51cmwgJiYgcGF5bG9hZC51cmwpIG1lZGlhSXRlbS51cmwgPSBwYXlsb2FkLnVybFxuICBpZiAocHJvcHMucHJveHlVcmwgJiYgcGF5bG9hZC5wcm94eV91cmwpIG1lZGlhSXRlbS5wcm94eVVybCA9IHBheWxvYWQucHJveHlfdXJsXG4gIGlmIChwcm9wcy5oZWlnaHQgJiYgcGF5bG9hZC5oZWlnaHQpIG1lZGlhSXRlbS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodFxuICBpZiAocHJvcHMud2lkdGggJiYgcGF5bG9hZC53aWR0aCkgbWVkaWFJdGVtLndpZHRoID0gcGF5bG9hZC53aWR0aFxuICBpZiAocHJvcHMuY29udGVudFR5cGUgJiYgcGF5bG9hZC5jb250ZW50X3R5cGUpIG1lZGlhSXRlbS5jb250ZW50VHlwZSA9IHBheWxvYWQuY29udGVudF90eXBlXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLCBtZWRpYUl0ZW0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbSk6IE1lZGlhR2FsbGVyeUl0ZW0ge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVkaWFHYWxsZXJ5SXRlbVxuICBjb25zdCBnYWxsZXJ5SXRlbSA9IHt9IGFzIE1lZGlhR2FsbGVyeUl0ZW1cblxuICBpZiAocHJvcHMubWVkaWEgJiYgcGF5bG9hZC5tZWRpYSkgZ2FsbGVyeUl0ZW0ubWVkaWEgPSBib3QudHJhbnNmb3JtZXJzLnVuZnVybGVkTWVkaWFJdGVtKGJvdCwgcGF5bG9hZC5tZWRpYSlcbiAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIGdhbGxlcnlJdGVtLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvblxuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGdhbGxlcnlJdGVtLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXJcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5tZWRpYUdhbGxlcnlJdGVtKGJvdCwgcGF5bG9hZCwgZ2FsbGVyeUl0ZW0pXG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUFjdGlvblJvdyhib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEFjdGlvblJvdyk6IENvbXBvbmVudCB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnRcbiAgY29uc3QgYWN0aW9uUm93ID0ge30gYXMgQ29tcG9uZW50XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBhY3Rpb25Sb3cudHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgYWN0aW9uUm93LmlkID0gcGF5bG9hZC5pZFxuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpIGFjdGlvblJvdy5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpXG5cbiAgcmV0dXJuIGFjdGlvblJvd1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Db250YWluZXJDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRDb250YWluZXJDb21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IGNvbnRhaW5lciA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY29udGFpbmVyLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNvbnRhaW5lci5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLmFjY2VudENvbG9yICYmIHBheWxvYWQuYWNjZW50X2NvbG9yKSBjb250YWluZXIuYWNjZW50Q29sb3IgPSBwYXlsb2FkLmFjY2VudF9jb2xvclxuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGNvbnRhaW5lci5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyXG4gIGlmIChwcm9wcy5jb21wb25lbnRzICYmIHBheWxvYWQuY29tcG9uZW50cykgY29udGFpbmVyLmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSlcblxuICByZXR1cm4gY29udGFpbmVyXG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEJ1dHRvbkNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnRcbiAgY29uc3QgYnV0dG9uID0ge30gYXMgQ29tcG9uZW50XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBidXR0b24udHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgYnV0dG9uLmlkID0gcGF5bG9hZC5pZFxuICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgYnV0dG9uLmxhYmVsID0gcGF5bG9hZC5sYWJlbFxuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGJ1dHRvbi5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkXG4gIGlmIChwcm9wcy5zdHlsZSAmJiBwYXlsb2FkLnN0eWxlKSBidXR0b24uc3R5bGUgPSBwYXlsb2FkLnN0eWxlXG4gIGlmIChwcm9wcy5lbW9qaSAmJiBwYXlsb2FkLmVtb2ppKSBidXR0b24uZW1vamkgPSBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgcGF5bG9hZC5lbW9qaSlcbiAgaWYgKHByb3BzLnVybCAmJiBwYXlsb2FkLnVybCkgYnV0dG9uLnVybCA9IHBheWxvYWQudXJsXG4gIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBidXR0b24uZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkXG4gIGlmIChwcm9wcy5za3VJZCAmJiBwYXlsb2FkLnNrdV9pZCkgYnV0dG9uLnNrdUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5za3VfaWQpXG5cbiAgcmV0dXJuIGJ1dHRvblxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUZXh0SW5wdXRDb21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IGlucHV0ID0ge30gYXMgQ29tcG9uZW50XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBpbnB1dC50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBpbnB1dC5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLnN0eWxlICYmIHBheWxvYWQuc3R5bGUpIGlucHV0LnN0eWxlID0gcGF5bG9hZC5zdHlsZVxuICBpZiAocHJvcHMucmVxdWlyZWQgJiYgcGF5bG9hZC5yZXF1aXJlZCkgaW5wdXQucmVxdWlyZWQgPSBwYXlsb2FkLnJlcXVpcmVkXG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgaW5wdXQuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZFxuICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgaW5wdXQubGFiZWwgPSBwYXlsb2FkLmxhYmVsXG4gIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBpbnB1dC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXJcbiAgaWYgKHByb3BzLm1pbkxlbmd0aCAmJiBwYXlsb2FkLm1pbl9sZW5ndGgpIGlucHV0Lm1pbkxlbmd0aCA9IHBheWxvYWQubWluX2xlbmd0aFxuICBpZiAocHJvcHMubWF4TGVuZ3RoICYmIHBheWxvYWQubWF4X2xlbmd0aCkgaW5wdXQubWF4TGVuZ3RoID0gcGF5bG9hZC5tYXhfbGVuZ3RoXG4gIGlmIChwcm9wcy52YWx1ZSAmJiBwYXlsb2FkLnZhbHVlKSBpbnB1dC52YWx1ZSA9IHBheWxvYWQudmFsdWVcblxuICByZXR1cm4gaW5wdXRcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IHNlbGVjdCA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VsZWN0LnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZFxuICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gcGF5bG9hZC5wbGFjZWhvbGRlclxuICBpZiAocHJvcHMubWluVmFsdWVzICYmIHBheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IHBheWxvYWQubWluX3ZhbHVlc1xuICBpZiAocHJvcHMubWF4VmFsdWVzICYmIHBheWxvYWQubWF4X3ZhbHVlcykgc2VsZWN0Lm1heFZhbHVlcyA9IHBheWxvYWQubWF4X3ZhbHVlc1xuICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBwYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgfSkpXG4gIGlmIChwcm9wcy5jaGFubmVsVHlwZXMgJiYgcGF5bG9hZC5jaGFubmVsX3R5cGVzKSBzZWxlY3QuY2hhbm5lbFR5cGVzID0gcGF5bG9hZC5jaGFubmVsX3R5cGVzXG4gIGlmIChwcm9wcy5vcHRpb25zICYmIHBheWxvYWQub3B0aW9ucylcbiAgICBzZWxlY3Qub3B0aW9ucyA9IHBheWxvYWQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKHtcbiAgICAgIGxhYmVsOiBvcHRpb24ubGFiZWwsXG4gICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgZGVzY3JpcHRpb246IG9wdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGVtb2ppOiBvcHRpb24uZW1vamlcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBpZDogb3B0aW9uLmVtb2ppLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uob3B0aW9uLmVtb2ppLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5lbW9qaS5uYW1lLFxuICAgICAgICAgICAgYW5pbWF0ZWQ6IG9wdGlvbi5lbW9qaS5hbmltYXRlZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdDogb3B0aW9uLmRlZmF1bHQsXG4gICAgfSkpXG4gIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkXG5cbiAgcmV0dXJuIHNlbGVjdFxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkU2VjdGlvbkNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnRcbiAgY29uc3Qgc2VjdGlvbiA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VjdGlvbi50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWN0aW9uLmlkID0gcGF5bG9hZC5pZFxuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpIHNlY3Rpb24uY29tcG9uZW50cyA9IHBheWxvYWQuY29tcG9uZW50cy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKVxuICBpZiAocHJvcHMuYWNjZXNzb3J5ICYmIHBheWxvYWQuYWNjZXNzb3J5KSBzZWN0aW9uLmFjY2Vzc29yeSA9IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgcGF5bG9hZC5hY2Nlc3NvcnkpXG5cbiAgcmV0dXJuIHNlY3Rpb25cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCB0aHVtYm5haWwgPSB7fSBhcyBDb21wb25lbnRcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHRodW1ibmFpbC50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSB0aHVtYm5haWwuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5tZWRpYSAmJiBwYXlsb2FkLm1lZGlhKSB0aHVtYm5haWwubWVkaWEgPSBib3QudHJhbnNmb3JtZXJzLnVuZnVybGVkTWVkaWFJdGVtKGJvdCwgcGF5bG9hZC5tZWRpYSlcbiAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIHRodW1ibmFpbC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb25cbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSB0aHVtYm5haWwuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlclxuXG4gIHJldHVybiB0aHVtYm5haWxcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTWVkaWFHYWxsZXJ5Q29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBtZWRpYUdhbGxlcnkgPSB7fSBhcyBDb21wb25lbnRcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIG1lZGlhR2FsbGVyeS50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBtZWRpYUdhbGxlcnkuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5pdGVtcyAmJiBwYXlsb2FkLml0ZW1zKSBtZWRpYUdhbGxlcnkuaXRlbXMgPSBwYXlsb2FkLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZWRpYUdhbGxlcnlJdGVtKGJvdCwgaXRlbSkpXG5cbiAgcmV0dXJuIG1lZGlhR2FsbGVyeVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1GaWxlQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkRmlsZUNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnRcbiAgY29uc3QgZmlsZSA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgZmlsZS50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBmaWxlLmlkID0gcGF5bG9hZC5pZFxuICBpZiAocHJvcHMuZmlsZSAmJiBwYXlsb2FkLmZpbGUpIGZpbGUuZmlsZSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLmZpbGUpXG4gIGlmIChwcm9wcy5zcG9pbGVyICYmIHBheWxvYWQuc3BvaWxlcikgZmlsZS5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyXG5cbiAgcmV0dXJuIGZpbGVcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUZXh0RGlzcGxheUNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnRcbiAgY29uc3QgdGV4dERpc3BsYXkgPSB7fSBhcyBDb21wb25lbnRcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHRleHREaXNwbGF5LnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHRleHREaXNwbGF5LmlkID0gcGF5bG9hZC5pZFxuICBpZiAocHJvcHMuY29udGVudCAmJiBwYXlsb2FkLmNvbnRlbnQpIHRleHREaXNwbGF5LmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnRcblxuICByZXR1cm4gdGV4dERpc3BsYXlcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VwYXJhdG9yQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBzZXBhcmF0b3IgPSB7fSBhcyBDb21wb25lbnRcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlcGFyYXRvci50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZXBhcmF0b3IuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5kaXZpZGVyICYmIHBheWxvYWQuZGl2aWRlcikgc2VwYXJhdG9yLmRpdmlkZXIgPSBwYXlsb2FkLmRpdmlkZXJcbiAgaWYgKHByb3BzLnNwYWNpbmcgJiYgcGF5bG9hZC5zcGFjaW5nKSBzZXBhcmF0b3Iuc3BhY2luZyA9IHBheWxvYWQuc3BhY2luZ1xuXG4gIHJldHVybiBzZXBhcmF0b3Jcbn1cbiJdLCJuYW1lcyI6WyJNZXNzYWdlQ29tcG9uZW50VHlwZXMiLCJ0cmFuc2Zvcm1Db21wb25lbnQiLCJib3QiLCJwYXlsb2FkIiwiY29tcG9uZW50IiwidHlwZSIsIkFjdGlvblJvdyIsInRyYW5zZm9ybUFjdGlvblJvdyIsIkJ1dHRvbiIsInRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudCIsIkNvbnRhaW5lciIsInRyYW5zZm9ybUNvbnRhaW5lckNvbXBvbmVudCIsIlRleHRJbnB1dCIsInRyYW5zZm9ybUlucHV0VGV4dENvbXBvbmVudCIsIlN0cmluZ1NlbGVjdCIsIlVzZXJTZWxlY3QiLCJSb2xlU2VsZWN0IiwiTWVudGlvbmFibGVTZWxlY3QiLCJDaGFubmVsU2VsZWN0IiwidHJhbnNmb3JtU2VsZWN0TWVudUNvbXBvbmVudCIsIlNlY3Rpb24iLCJ0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50IiwiVGh1bWJuYWlsIiwidHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50IiwiTWVkaWFHYWxsZXJ5IiwidHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50IiwiRmlsZSIsInRyYW5zZm9ybUZpbGVDb21wb25lbnQiLCJTZXBhcmF0b3IiLCJ0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQiLCJUZXh0RGlzcGxheSIsInRyYW5zZm9ybVRleHREaXNwbGF5Q29tcG9uZW50IiwidHJhbnNmb3JtZXJzIiwiY3VzdG9taXplcnMiLCJ0cmFuc2Zvcm1VbmZ1cmxlZE1lZGlhSXRlbSIsInByb3BzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJ1bmZ1cmxlZE1lZGlhSXRlbSIsIm1lZGlhSXRlbSIsInVybCIsInByb3h5VXJsIiwicHJveHlfdXJsIiwiaGVpZ2h0Iiwid2lkdGgiLCJjb250ZW50VHlwZSIsImNvbnRlbnRfdHlwZSIsInRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW0iLCJtZWRpYUdhbGxlcnlJdGVtIiwiZ2FsbGVyeUl0ZW0iLCJtZWRpYSIsImRlc2NyaXB0aW9uIiwic3BvaWxlciIsImFjdGlvblJvdyIsImlkIiwiY29tcG9uZW50cyIsIm1hcCIsImNvbnRhaW5lciIsImFjY2VudENvbG9yIiwiYWNjZW50X2NvbG9yIiwiYnV0dG9uIiwibGFiZWwiLCJjdXN0b21JZCIsImN1c3RvbV9pZCIsInN0eWxlIiwiZW1vamkiLCJkaXNhYmxlZCIsInNrdUlkIiwic2t1X2lkIiwic25vd2ZsYWtlIiwiaW5wdXQiLCJyZXF1aXJlZCIsInBsYWNlaG9sZGVyIiwibWluTGVuZ3RoIiwibWluX2xlbmd0aCIsIm1heExlbmd0aCIsIm1heF9sZW5ndGgiLCJ2YWx1ZSIsInNlbGVjdCIsIm1pblZhbHVlcyIsIm1pbl92YWx1ZXMiLCJtYXhWYWx1ZXMiLCJtYXhfdmFsdWVzIiwiZGVmYXVsdFZhbHVlcyIsImRlZmF1bHRfdmFsdWVzIiwiZGVmYXVsdFZhbHVlIiwiY2hhbm5lbFR5cGVzIiwiY2hhbm5lbF90eXBlcyIsIm9wdGlvbnMiLCJvcHRpb24iLCJ1bmRlZmluZWQiLCJuYW1lIiwiYW5pbWF0ZWQiLCJkZWZhdWx0Iiwic2VjdGlvbiIsImFjY2Vzc29yeSIsInRodW1ibmFpbCIsIm1lZGlhR2FsbGVyeSIsIml0ZW1zIiwiaXRlbSIsImZpbGUiLCJ0ZXh0RGlzcGxheSIsImNvbnRlbnQiLCJzZXBhcmF0b3IiLCJkaXZpZGVyIiwic3BhY2luZyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FZRUEscUJBQXFCLFFBQ2hCLG9CQUFtQjtBQVcxQixPQUFPLFNBQVNDLG1CQUFtQkMsR0FBUSxFQUFFQyxPQUFnQztJQUMzRSxJQUFJQztJQUVKLGtJQUFrSTtJQUNsSSxPQUFRRCxRQUFRRSxJQUFJO1FBQ2xCLEtBQUtMLHNCQUFzQk0sU0FBUztZQUNsQ0YsWUFBWUcsbUJBQW1CTCxLQUFLQztZQUNwQztRQUNGLEtBQUtILHNCQUFzQlEsTUFBTTtZQUMvQkosWUFBWUsseUJBQXlCUCxLQUFLQztZQUMxQztRQUNGLEtBQUtILHNCQUFzQlUsU0FBUztZQUNsQ04sWUFBWU8sNEJBQTRCVCxLQUFLQztZQUM3QztRQUNGLEtBQUtILHNCQUFzQlksU0FBUztZQUNsQ1IsWUFBWVMsNEJBQTRCWCxLQUFLQztZQUM3QztRQUNGLEtBQUtILHNCQUFzQmMsWUFBWTtRQUN2QyxLQUFLZCxzQkFBc0JlLFVBQVU7UUFDckMsS0FBS2Ysc0JBQXNCZ0IsVUFBVTtRQUNyQyxLQUFLaEIsc0JBQXNCaUIsaUJBQWlCO1FBQzVDLEtBQUtqQixzQkFBc0JrQixhQUFhO1lBQ3RDZCxZQUFZZSw2QkFBNkJqQixLQUFL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
@@ -20,6 +20,7 @@ export * from './incidentsData.js';
20
20
  export * from './integration.js';
21
21
  export * from './interaction.js';
22
22
  export * from './invite.js';
23
+ export * from './lobby.js';
23
24
  export * from './member.js';
24
25
  export * from './message.js';
25
26
  export * from './onboarding.js';
@@ -48,4 +49,4 @@ export * from './welcomeScreen.js';
48
49
  export * from './widget.js';
49
50
  export * from './widgetSettings.js';
50
51
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS5qcydcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uQ29tbWFuZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb25Db21tYW5kT3B0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25DaG9pY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0TG9nRW50cnkuanMnXG5leHBvcnQgKiBmcm9tICcuL2F1dG9tb2RBY3Rpb25FeGVjdXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2F1dG9tb2RSdWxlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9hdmF0YXJEZWNvcmF0aW9uRGF0YS5qcydcbmV4cG9ydCAqIGZyb20gJy4vY2hhbm5lbC5qcydcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9lbWJlZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vZW1vamkuanMnXG5leHBvcnQgKiBmcm9tICcuL2VudGl0bGVtZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5Qm90LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9ndWlsZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW5jaWRlbnRzRGF0YS5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW50ZWdyYXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2ludGVyYWN0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9pbnZpdGUuanMnXG5leHBvcnQgKiBmcm9tICcuL21lbWJlci5qcydcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vb25ib2FyZGluZy5qcydcbmV4cG9ydCAqIGZyb20gJy4vcG9sbC5qcydcbmV4cG9ydCAqIGZyb20gJy4vcHJlc2VuY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL3JldmVyc2UvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL3JvbGUuanMnXG5leHBvcnQgKiBmcm9tICcuL3NjaGVkdWxlZEV2ZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9za3UuanMnXG5leHBvcnQgKiBmcm9tICcuL3NvdW5kYm9hcmRTb3VuZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3RhZ2VJbnN0YW5jZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3RhZ2VJbnZpdGVJbnN0YW5jZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3RpY2tlci5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zdWJzY3JpcHRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL3RlYW0uanMnXG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90aHJlYWRNZW1iZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL3RvZ2dsZXMvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi92b2ljZVJlZ2lvbi5qcydcbmV4cG9ydCAqIGZyb20gJy4vdm9pY2VTdGF0ZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2ViaG9vay5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2VsY29tZVNjcmVlbi5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRTZXR0aW5ncy5qcydcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFlO0FBQzdCLGNBQWMsbUJBQWtCO0FBQ2hDLGNBQWMsMEJBQXlCO0FBQ3ZDLGNBQWMsZ0NBQStCO0FBQzdDLGNBQWMsc0NBQXFDO0FBQ25ELGNBQWMsb0NBQW1DO0FBQ2pELGNBQWMsa0JBQWlCO0FBQy9CLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsOEJBQTZCO0FBQzNDLGNBQWMsbUJBQWtCO0FBQ2hDLGNBQWMsNEJBQTJCO0FBQ3pDLGNBQWMsZUFBYztBQUM1QixjQUFjLGlCQUFnQjtBQUM5QixjQUFjLGFBQVk7QUFDMUIsY0FBYyxhQUFZO0FBQzFCLGNBQWMsbUJBQWtCO0FBQ2hDLGNBQWMsa0JBQWlCO0FBQy9CLGNBQWMsYUFBWTtBQUMxQixjQUFjLHFCQUFvQjtBQUNsQyxjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLGNBQWE7QUFDM0IsY0FBYyxjQUFhO0FBQzNCLGNBQWMsZUFBYztBQUM1QixjQUFjLGtCQUFpQjtBQUMvQixjQUFjLFlBQVc7QUFDekIsY0FBYyxnQkFBZTtBQUM3QixjQUFjLHFCQUFvQjtBQUNsQyxjQUFjLFlBQVc7QUFDekIsY0FBYyxzQkFBcUI7QUFDbkMsY0FBYyxXQUFVO0FBQ3hCLGNBQWMsdUJBQXNCO0FBQ3BDLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsMkJBQTBCO0FBQ3hDLGNBQWMsZUFBYztBQUM1QixjQUFjLG9CQUFtQjtBQUNqQyxjQUFjLG9CQUFtQjtBQUNqQyxjQUFjLFlBQVc7QUFDekIsY0FBYyxnQkFBZTtBQUM3QixjQUFjLG9CQUFtQjtBQUNqQyxjQUFjLHFCQUFvQjtBQUNsQyxjQUFjLGFBQVk7QUFDMUIsY0FBYyxZQUFXO0FBQ3pCLGNBQWMsbUJBQWtCO0FBQ2hDLGNBQWMsa0JBQWlCO0FBQy9CLGNBQWMsZUFBYztBQUM1QixjQUFjLHFCQUFvQjtBQUNsQyxjQUFjLGNBQWE7QUFDM0IsY0FBYyxzQkFBcUIifQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS5qcydcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uQ29tbWFuZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb25Db21tYW5kT3B0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25DaG9pY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0TG9nRW50cnkuanMnXG5leHBvcnQgKiBmcm9tICcuL2F1dG9tb2RBY3Rpb25FeGVjdXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2F1dG9tb2RSdWxlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9hdmF0YXJEZWNvcmF0aW9uRGF0YS5qcydcbmV4cG9ydCAqIGZyb20gJy4vY2hhbm5lbC5qcydcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9lbWJlZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vZW1vamkuanMnXG5leHBvcnQgKiBmcm9tICcuL2VudGl0bGVtZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5Qm90LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9ndWlsZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW5jaWRlbnRzRGF0YS5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW50ZWdyYXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2ludGVyYWN0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9pbnZpdGUuanMnXG5leHBvcnQgKiBmcm9tICcuL2xvYmJ5LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2UuanMnXG5leHBvcnQgKiBmcm9tICcuL29uYm9hcmRpbmcuanMnXG5leHBvcnQgKiBmcm9tICcuL3BvbGwuanMnXG5leHBvcnQgKiBmcm9tICcuL3ByZXNlbmNlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9yZXZlcnNlL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9yb2xlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlZHVsZWRFdmVudC5qcydcbmV4cG9ydCAqIGZyb20gJy4vc2t1LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zb3VuZGJvYXJkU291bmQuanMnXG5leHBvcnQgKiBmcm9tICcuL3N0YWdlSW5zdGFuY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL3N0YWdlSW52aXRlSW5zdGFuY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL3N0aWNrZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL3N1YnNjcmlwdGlvbi5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90ZWFtLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWFkTWVtYmVyLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGVzL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy5qcydcbmV4cG9ydCAqIGZyb20gJy4vdXNlci5qcydcbmV4cG9ydCAqIGZyb20gJy4vdm9pY2VSZWdpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL3ZvaWNlU3RhdGUuanMnXG5leHBvcnQgKiBmcm9tICcuL3dlYmhvb2suanMnXG5leHBvcnQgKiBmcm9tICcuL3dlbGNvbWVTY3JlZW4uanMnXG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0U2V0dGluZ3MuanMnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZTtBQUM3QixjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLDBCQUF5QjtBQUN2QyxjQUFjLGdDQUErQjtBQUM3QyxjQUFjLHNDQUFxQztBQUNuRCxjQUFjLG9DQUFtQztBQUNqRCxjQUFjLGtCQUFpQjtBQUMvQixjQUFjLHFCQUFvQjtBQUNsQyxjQUFjLDhCQUE2QjtBQUMzQyxjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLDRCQUEyQjtBQUN6QyxjQUFjLGVBQWM7QUFDNUIsY0FBYyxpQkFBZ0I7QUFDOUIsY0FBYyxhQUFZO0FBQzFCLGNBQWMsYUFBWTtBQUMxQixjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLGtCQUFpQjtBQUMvQixjQUFjLGFBQVk7QUFDMUIsY0FBYyxxQkFBb0I7QUFDbEMsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxjQUFhO0FBQzNCLGNBQWMsYUFBWTtBQUMxQixjQUFjLGNBQWE7QUFDM0IsY0FBYyxlQUFjO0FBQzVCLGNBQWMsa0JBQWlCO0FBQy9CLGNBQWMsWUFBVztBQUN6QixjQUFjLGdCQUFlO0FBQzdCLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsWUFBVztBQUN6QixjQUFjLHNCQUFxQjtBQUNuQyxjQUFjLFdBQVU7QUFDeEIsY0FBYyx1QkFBc0I7QUFDcEMsY0FBYyxxQkFBb0I7QUFDbEMsY0FBYywyQkFBMEI7QUFDeEMsY0FBYyxlQUFjO0FBQzVCLGNBQWMsb0JBQW1CO0FBQ2pDLGNBQWMsb0JBQW1CO0FBQ2pDLGNBQWMsWUFBVztBQUN6QixjQUFjLGdCQUFlO0FBQzdCLGNBQWMsb0JBQW1CO0FBQ2pDLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsYUFBWTtBQUMxQixjQUFjLFlBQVc7QUFDekIsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxrQkFBaUI7QUFDL0IsY0FBYyxlQUFjO0FBQzVCLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsY0FBYTtBQUMzQixjQUFjLHNCQUFxQiJ9
@@ -12,7 +12,10 @@ export const baseInteraction = {
12
12
  // If user provides an object, determine if it should be an autocomplete or a modal response
13
13
  if (response.title) type = InteractionResponseTypes.Modal;
14
14
  if (this.type === InteractionTypes.ApplicationCommandAutocomplete) type = InteractionResponseTypes.ApplicationCommandAutocompleteResult;
15
- if (type === InteractionResponseTypes.ChannelMessageWithSource && options?.isPrivate) response.flags = MessageFlags.Ephemeral;
15
+ if (type === InteractionResponseTypes.ChannelMessageWithSource && options?.isPrivate) {
16
+ response.flags ??= 0;
17
+ response.flags |= MessageFlags.Ephemeral;
18
+ }
16
19
  // Since this has already been given a response, any further responses must be followups.
17
20
  if (this.acknowledged) return await this.bot.helpers.sendFollowupMessage(this.token, response);
18
21
  // Modals cannot be chained
@@ -102,12 +105,14 @@ export function transformInteraction(bot, payload) {
102
105
  });
103
106
  if (props.channelId && payload.interaction.channel_id) interaction.channelId = bot.transformers.snowflake(payload.interaction.channel_id);
104
107
  if (props.member && guildId && payload.interaction.member) interaction.member = bot.transformers.member(bot, payload.interaction.member, guildId, user.id);
108
+ if (props.entitlements && payload.interaction.entitlements) interaction.entitlements = payload.interaction.entitlements.map((e)=>bot.transformers.entitlement(bot, e));
105
109
  if (props.authorizingIntegrationOwners && payload.interaction.authorizing_integration_owners) {
106
110
  interaction.authorizingIntegrationOwners = {};
107
111
  if (payload.interaction.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['0']);
108
112
  if (payload.interaction.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['1']);
109
113
  }
110
114
  if (props.context && payload.interaction.context) interaction.context = payload.interaction.context;
115
+ if (props.attachmentSizeLimit && payload.interaction.attachment_size_limit) interaction.attachmentSizeLimit = payload.interaction.attachment_size_limit;
111
116
  if (props.data && payload.interaction.data) {
112
117
  interaction.data = {
113
118
  type: payload.interaction.data.type,
@@ -238,4 +243,4 @@ export function transformInteractionResource(bot, payload) {
238
243
  return bot.transformers.customizers.interactionResource(bot, payload.interactionResource, resource);
239
244
  }
240
245
 
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJvdCxcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcm5hbEJvdCxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogSW50ZXJuYWxCb3RbJ3RyYW5zZm9ybWVycyddWyckaW5mZXJyZWRUeXBlcyddWydpbnRlcmFjdGlvbiddID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEludGVybmFsQm90Wyd0cmFuc2Zvcm1lcnMnXVsnJGluZmVycmVkVHlwZXMnXVsnaW50ZXJhY3Rpb24nXSksXG5cbiAgYXN5bmMgcmVzcG9uZChyZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGxldCB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGFuIG9iamVjdCwgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBhbiBhdXRvY29tcGxldGUgb3IgYSBtb2RhbCByZXNwb25zZVxuICAgIGlmIChyZXNwb25zZS50aXRsZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdFxuICAgIGlmICh0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlICYmIG9wdGlvbnM/LmlzUHJpdmF0ZSkgcmVzcG9uc2UuZmxhZ3MgPSBNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsXG5cbiAgICAvLyBTaW5jZSB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZ2l2ZW4gYSByZXNwb25zZSwgYW55IGZ1cnRoZXIgcmVzcG9uc2VzIG11c3QgYmUgZm9sbG93dXBzLlxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCwgdGhpcy50b2tlbiwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9LCB7IHdpdGhSZXNwb25zZTogb3B0aW9ucz8ud2l0aFJlc3BvbnNlIH0pXG4gIH0sXG4gIGFzeW5jIGVkaXQocmVzcG9uc2UsIG1lc3NhZ2VJZCwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZWRpdEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudCAmJiB0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgaW50ZXJhY3Rpb24gaGFzIG5vdCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQgYW5kIHRoaXMgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IG9yIE1vZGFsU3VibWl0IGludGVyYWN0aW9uLlwiKVxuXG4gICAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdChvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50ICYmIHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgb3IgTW9kYWxTdWJtaXQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkLCB0aGlzLnRva2VuLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSwgb3B0aW9ucylcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHtcbiAgICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApXG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbilcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb247IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG4gIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcj8udXNlciA/PyBwYXlsb2FkLmludGVyYWN0aW9uLnVzZXIhKVxuXG4gIGNvbnN0IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiA9IE9iamVjdC5jcmVhdGUoYmFzZUludGVyYWN0aW9uKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggdGhpcywgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGlzIGEgQm90XG4gIGludGVyYWN0aW9uLmJvdCA9IGJvdCBhcyB1bmtub3duIGFzIEJvdFxuICBpbnRlcmFjdGlvbi5hY2tub3dsZWRnZWQgPSBmYWxzZVxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmlkKSBpbnRlcmFjdGlvbi5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uaWQpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gICAgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLmludGVyYWN0aW9uLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkIGlzIGEgUGFydGlhbDxEaXNjb3JkR3VpbGQ+XG4gICAgaW50ZXJhY3Rpb24uZ3VpbGQgPSBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgeyBndWlsZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gIGlmIChwcm9wcy5ndWlsZElkICYmIGd1aWxkSWQpIGludGVyYWN0aW9uLmd1aWxkSWQgPSBndWlsZElkXG4gIGlmIChwcm9wcy51c2VyICYmIHVzZXIpIGludGVyYWN0aW9uLnVzZXIgPSB1c2VyXG4gIGlmIChwcm9wcy5hcHBQZXJtaXNzaW9ucyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgICBpbnRlcmFjdGlvbi5hcHBQZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwX3Blcm1pc3Npb25zKVxuICBpZiAocHJvcHMubWVzc2FnZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lc3NhZ2UpXG4gICAgaW50ZXJhY3Rpb24ubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlLCBzaGFyZElkOiAwIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbClcbiAgICBpbnRlcmFjdGlvbi5jaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwgYXMgRGlzY29yZENoYW5uZWwsIGd1aWxkSWQgfSlcbiAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpIGludGVyYWN0aW9uLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLm1lbWJlciAmJiBndWlsZElkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyKVxuICAgIGludGVyYWN0aW9uLm1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZW1iZXIsIGd1aWxkSWQsIHVzZXIuaWQpXG4gIGlmIChwcm9wcy5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzKSB7XG4gICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyA9IHt9XG5cbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLkd1aWxkSW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSxcbiAgICAgIClcbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddLFxuICAgICAgKVxuICB9XG4gIGlmIChwcm9wcy5jb250ZXh0ICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dCkgaW50ZXJhY3Rpb24uY29udGV4dCA9IHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dFxuICBpZiAocHJvcHMuZGF0YSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEpIHtcbiAgICBpbnRlcmFjdGlvbi5kYXRhID0ge1xuICAgICAgdHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnR5cGUsXG4gICAgICBjb21wb25lbnRUeXBlOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50X3R5cGUsXG4gICAgICBjdXN0b21JZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmN1c3RvbV9pZCxcbiAgICAgIGNvbXBvbmVudHM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jb21wb25lbnRzPy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKSxcbiAgICAgIHZhbHVlczogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnZhbHVlcyxcbiAgICAgIGlkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuaWQpIDogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLm5hbWUsXG4gICAgICByZXNvbHZlZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkXG4gICAgICAgID8gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHsgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkLCBndWlsZElkIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9uczogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLm9wdGlvbnM/Lm1hcCgob3B0KSA9PiBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YU9wdGlvbnMoYm90LCBvcHQpKSxcbiAgICAgIHRhcmdldElkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEudGFyZ2V0X2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCkgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9XG5cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggaW50ZXJhY3Rpb24uYm90LCBzbyB3ZSBuZWVkIHRvIHRlbGwgaGltIGZvciBzdXJlIHRoaXMgaW50ZXJhY3Rpb24gaXMgdGhlIG9mIHRoZSBjb3JyZWN0IHR5cGVcbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb24oYm90LCBwYXlsb2FkLCBpbnRlcmFjdGlvbiBhcyB1bmtub3duIGFzIHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uKGJvdDogQm90LCBvcHRpb246IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24pOiBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBjb25zdCBvcHQgPSB7XG4gICAgbmFtZTogb3B0aW9uLm5hbWUsXG4gICAgdHlwZTogb3B0aW9uLnR5cGUsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICBmb2N1c2VkOiBvcHRpb24uZm9jdXNlZCxcbiAgfSBhcyBJbnRlcmFjdGlvbkRhdGFPcHRpb25cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0aW9uLCBvcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogeyByZXNvbHZlZDogRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkOyBzaGFyZElkOiBudW1iZXI7IGd1aWxkSWQ/OiBiaWdpbnQgfSxcbik6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgY29uc3QgdHJhbnNmb3JtZWQ6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkID0ge31cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykge1xuICAgIHRyYW5zZm9ybWVkLm1lc3NhZ2VzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lc3NhZ2VzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlOiBNZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgeyBtZXNzYWdlOiB2YWx1ZSwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gICAgICAgIHJldHVybiBbbWVzc2FnZS5pZCwgbWVzc2FnZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLnVzZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQudXNlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQudXNlcnMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFt1c2VyLmlkLCB1c2VyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLm1lbWJlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZW1iZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lbWJlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVyOiBNZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHZhbHVlLCBwYXlsb2FkLmd1aWxkSWQhLCBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCkpXG4gICAgICAgIHJldHVybiBbbWVtYmVyLmlkLCBtZW1iZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5ndWlsZElkICYmIHBheWxvYWQucmVzb2x2ZWQucm9sZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5yb2xlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5yb2xlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHsgcm9sZTogdmFsdWUsIGd1aWxkSWQ6IHBheWxvYWQuZ3VpbGRJZCEgfSlcbiAgICAgICAgcmV0dXJuIFtyb2xlLmlkLCByb2xlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5jaGFubmVscykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogdmFsdWUgfSkgYXMgSW50ZXJhY3Rpb25SZXNvbHZlZENoYW5uZWxcbiAgICAgICAgcmV0dXJuIFtjaGFubmVsLmlkLCBjaGFubmVsXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5hdHRhY2htZW50cyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5hdHRhY2htZW50cykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIHJldHVybiBbaWQsIGJvdC50cmFuc2Zvcm1lcnMuYXR0YWNobWVudChib3QsIHZhbHVlKV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZCwgdHJhbnNmb3JtZWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcbiAgY29uc3QgcmVzcG9uc2UgPSB7fSBhcyBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcblxuICBpZiAocHJvcHMuaW50ZXJhY3Rpb24gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UuaW50ZXJhY3Rpb24pXG4gICAgcmVzcG9uc2UuaW50ZXJhY3Rpb24gPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5pbnRlcmFjdGlvbilcbiAgaWYgKHByb3BzLnJlc291cmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLnJlc291cmNlKVxuICAgIHJlc3BvbnNlLnJlc291cmNlID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwge1xuICAgICAgaW50ZXJhY3Rpb25SZXNvdXJjZTogcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UucmVzb3VyY2UsXG4gICAgICBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQsXG4gICAgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSwgcmVzcG9uc2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uQ2FsbGJhY2sge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1xuICBjb25zdCBjYWxsYmFjayA9IHt9IGFzIEludGVyYWN0aW9uQ2FsbGJhY2tcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2FsbGJhY2suaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNhbGxiYWNrLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2VJZCAmJiBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkKSBjYWxsYmFjay5hY3Rpdml0eUluc3RhbmNlSWQgPSBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VJZCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfaWQpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKVxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCA9IHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWxcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmcpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfbG9hZGluZ1xuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLCBjYWxsYmFjaylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uUmVzb3VyY2UoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25SZXNvdXJjZTogRGlzY29yZEludGVyYWN0aW9uUmVzb3VyY2U7IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb25SZXNvdXJjZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblJlc291cmNlXG4gIGNvbnN0IHJlc291cmNlID0ge30gYXMgSW50ZXJhY3Rpb25SZXNvdXJjZVxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlKSByZXNvdXJjZS50eXBlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlKVxuICAgIHJlc291cmNlLmFjdGl2aXR5SW5zdGFuY2UgPSBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UuYWN0aXZpdHlfaW5zdGFuY2VcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLm1lc3NhZ2UpXG4gICAgcmVzb3VyY2UubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLm1lc3NhZ2UsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uUmVzb3VyY2UoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UsIHJlc291cmNlKVxufVxuIl0sIm5hbWVzIjpbIkRpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZSIsIkludGVyYWN0aW9uUmVzcG9uc2VUeXBlcyIsIkludGVyYWN0aW9uVHlwZXMiLCJNZXNzYWdlRmxhZ3MiLCJDb2xsZWN0aW9uIiwiYmFzZUludGVyYWN0aW9uIiwidW5kZWZpbmVkIiwicmVzcG9uZCIsInJlc3BvbnNlIiwib3B0aW9ucyIsInR5cGUiLCJDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJjb250ZW50IiwidGl0bGUiLCJNb2RhbCIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdCIsImlzUHJpdmF0ZSIsImZsYWdzIiwiRXBoZW1lcmFsIiwiYWNrbm93bGVkZ2VkIiwiYm90IiwiaGVscGVycyIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIk1vZGFsU3VibWl0IiwiRXJyb3IiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImlkIiwiZGF0YSIsIndpdGhSZXNwb25zZSIsImVkaXQiLCJtZXNzYWdlSWQiLCJlZGl0Rm9sbG93dXBNZXNzYWdlIiwiTWVzc2FnZUNvbXBvbmVudCIsIlVwZGF0ZU1lc3NhZ2UiLCJlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZGVmZXJFZGl0IiwiRGVmZXJyZWRVcGRhdGVNZXNzYWdlIiwiZGVmZXIiLCJEZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSIsImRlbGV0ZSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsInRyYW5zZm9ybUludGVyYWN0aW9uIiwicGF5bG9hZCIsImd1aWxkSWQiLCJpbnRlcmFjdGlvbiIsImd1aWxkX2lkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwidXNlciIsIm1lbWJlciIsIk9iamVjdCIsImNyZWF0ZSIsInByb3BzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJhcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25faWQiLCJ2ZXJzaW9uIiwibG9jYWxlIiwiZ3VpbGRMb2NhbGUiLCJndWlsZF9sb2NhbGUiLCJndWlsZCIsInNoYXJkSWQiLCJhcHBQZXJtaXNzaW9ucyIsImFwcF9wZXJtaXNzaW9ucyIsIm1lc3NhZ2UiLCJjaGFubmVsIiwiY2hhbm5lbElkIiwiY2hhbm5lbF9pZCIsImF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMiLCJhdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMiLCJHdWlsZEluc3RhbGwiLCJVc2VySW5zdGFsbCIsImNvbnRleHQiLCJjb21wb25lbnRUeXBlIiwiY29tcG9uZW50X3R5cGUiLCJjdXN0b21JZCIsImN1c3RvbV9pZCIsImNvbXBvbmVudHMiLCJtYXAiLCJjb21wb25lbnQiLCJ2YWx1ZXMiLCJuYW1lIiwicmVzb2x2ZWQiLCJpbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsIm9wdCIsImludGVyYWN0aW9uRGF0YU9wdGlvbnMiLCJ0YXJnZXRJZCIsInRhcmdldF9pZCIsImN1c3RvbWl6ZXJzIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uIiwib3B0aW9uIiwidmFsdWUiLCJmb2N1c2VkIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJ0cmFuc2Zvcm1lZCIsIm1lc3NhZ2VzIiwiZW50cmllcyIsIl9pZCIsInVzZXJzIiwibWVtYmVycyIsInJvbGVzIiwicm9sZSIsImNoYW5uZWxzIiwiYXR0YWNobWVudHMiLCJrZXkiLCJhdHRhY2htZW50IiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlIiwiaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlIiwiaW50ZXJhY3Rpb25DYWxsYmFjayIsInJlc291cmNlIiwiaW50ZXJhY3Rpb25SZXNvdXJjZSIsInRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2siLCJjYWxsYmFjayIsImFjdGl2aXR5SW5zdGFuY2VJZCIsImFjdGl2aXR5X2luc3RhbmNlX2lkIiwicmVzcG9uc2VNZXNzYWdlSWQiLCJyZXNwb25zZV9tZXNzYWdlX2lkIiwicmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsIiwicmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwiLCJyZXNwb25zZU1lc3NhZ2VMb2FkaW5nIiwicmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25SZXNvdXJjZSIsImFjdGl2aXR5SW5zdGFuY2UiLCJhY3Rpdml0eV9pbnN0YW5jZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsaUNBQWlDLEVBT2pDQyx3QkFBd0IsRUFDeEJDLGdCQUFnQixFQUNoQkMsWUFBWSxRQUNQLG9CQUFtQjtBQUMxQixTQUFTQyxVQUFVLFFBQVEsb0JBQW1CO0FBZ0I5QyxPQUFPLE1BQU1DLGtCQUFnRjtJQUMzRiwyRUFBMkU7SUFDM0UsR0FBSUMsU0FBUztJQUViLE1BQU1DLFNBQVFDLFFBQVEsRUFBRUMsT0FBTztRQUM3QixJQUFJQyxPQUFPVCx5QkFBeUJVLHdCQUF3QjtRQUU1RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUFPSCxhQUFhLFVBQVVBLFdBQVc7WUFBRUksU0FBU0o7UUFBUztRQUVqRSw0RkFBNEY7UUFDNUYsSUFBSUEsU0FBU0ssS0FBSyxFQUFFSCxPQUFPVCx5QkFBeUJhLEtBQUs7UUFDekQsSUFBSSxJQUFJLENBQUNKLElBQUksS0FBS1IsaUJBQWlCYSw4QkFBOEIsRUFBRUwsT0FBT1QseUJBQXlCZSxvQ0FBb0M7UUFDdkksSUFBSU4sU0FBU1QseUJBQXlCVSx3QkFBd0IsSUFBSUYsU0FBU1EsV0FBV1QsU0FBU1UsS0FBSyxHQUFHZixhQUFhZ0IsU0FBUztRQUU3SCx5RkFBeUY7UUFDekYsSUFBSSxJQUFJLENBQUNDLFlBQVksRUFBRSxPQUFPLE1BQU0sSUFBSSxDQUFDQyxHQUFHLENBQUNDLE9BQU8sQ0FBQ0MsbUJBQW1CLENBQUMsSUFBSSxDQUFDQyxLQUFLLEVBQUVoQjtRQUVyRiwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUNFLElBQUksS0FBS1IsaUJBQWlCdUIsV0FBVyxJQUFJZixTQUFTVCx5QkFBeUJhLEtBQUssRUFDdkYsTUFBTSxJQUFJWSxNQUFNO1FBRWxCLElBQUksQ0FB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
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJvdCxcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcm5hbEJvdCxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogSW50ZXJuYWxCb3RbJ3RyYW5zZm9ybWVycyddWyckaW5mZXJyZWRUeXBlcyddWydpbnRlcmFjdGlvbiddID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEludGVybmFsQm90Wyd0cmFuc2Zvcm1lcnMnXVsnJGluZmVycmVkVHlwZXMnXVsnaW50ZXJhY3Rpb24nXSksXG5cbiAgYXN5bmMgcmVzcG9uZChyZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGxldCB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGFuIG9iamVjdCwgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBhbiBhdXRvY29tcGxldGUgb3IgYSBtb2RhbCByZXNwb25zZVxuICAgIGlmIChyZXNwb25zZS50aXRsZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdFxuICAgIGlmICh0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlICYmIG9wdGlvbnM/LmlzUHJpdmF0ZSkge1xuICAgICAgcmVzcG9uc2UuZmxhZ3MgPz89IDBcbiAgICAgIHJlc3BvbnNlLmZsYWdzIHw9IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWxcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZ2l2ZW4gYSByZXNwb25zZSwgYW55IGZ1cnRoZXIgcmVzcG9uc2VzIG11c3QgYmUgZm9sbG93dXBzLlxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCwgdGhpcy50b2tlbiwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9LCB7IHdpdGhSZXNwb25zZTogb3B0aW9ucz8ud2l0aFJlc3BvbnNlIH0pXG4gIH0sXG4gIGFzeW5jIGVkaXQocmVzcG9uc2UsIG1lc3NhZ2VJZCwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZWRpdEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudCAmJiB0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgaW50ZXJhY3Rpb24gaGFzIG5vdCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQgYW5kIHRoaXMgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IG9yIE1vZGFsU3VibWl0IGludGVyYWN0aW9uLlwiKVxuXG4gICAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdChvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50ICYmIHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgb3IgTW9kYWxTdWJtaXQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkLCB0aGlzLnRva2VuLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSwgb3B0aW9ucylcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHtcbiAgICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApXG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbilcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb247IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG4gIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcj8udXNlciA/PyBwYXlsb2FkLmludGVyYWN0aW9uLnVzZXIhKVxuXG4gIGNvbnN0IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiA9IE9iamVjdC5jcmVhdGUoYmFzZUludGVyYWN0aW9uKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggdGhpcywgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGlzIGEgQm90XG4gIGludGVyYWN0aW9uLmJvdCA9IGJvdCBhcyB1bmtub3duIGFzIEJvdFxuICBpbnRlcmFjdGlvbi5hY2tub3dsZWRnZWQgPSBmYWxzZVxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmlkKSBpbnRlcmFjdGlvbi5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uaWQpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gICAgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLmludGVyYWN0aW9uLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkIGlzIGEgUGFydGlhbDxEaXNjb3JkR3VpbGQ+XG4gICAgaW50ZXJhY3Rpb24uZ3VpbGQgPSBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgeyBndWlsZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gIGlmIChwcm9wcy5ndWlsZElkICYmIGd1aWxkSWQpIGludGVyYWN0aW9uLmd1aWxkSWQgPSBndWlsZElkXG4gIGlmIChwcm9wcy51c2VyICYmIHVzZXIpIGludGVyYWN0aW9uLnVzZXIgPSB1c2VyXG4gIGlmIChwcm9wcy5hcHBQZXJtaXNzaW9ucyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgICBpbnRlcmFjdGlvbi5hcHBQZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwX3Blcm1pc3Npb25zKVxuICBpZiAocHJvcHMubWVzc2FnZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lc3NhZ2UpXG4gICAgaW50ZXJhY3Rpb24ubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlLCBzaGFyZElkOiAwIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbClcbiAgICBpbnRlcmFjdGlvbi5jaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwgYXMgRGlzY29yZENoYW5uZWwsIGd1aWxkSWQgfSlcbiAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpIGludGVyYWN0aW9uLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLm1lbWJlciAmJiBndWlsZElkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyKVxuICAgIGludGVyYWN0aW9uLm1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZW1iZXIsIGd1aWxkSWQsIHVzZXIuaWQpXG4gIGlmIChwcm9wcy5lbnRpdGxlbWVudHMgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5lbnRpdGxlbWVudHMpXG4gICAgaW50ZXJhY3Rpb24uZW50aXRsZW1lbnRzID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5lbnRpdGxlbWVudHMubWFwKChlKSA9PiBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgZSkpXG4gIGlmIChwcm9wcy5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzKSB7XG4gICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyA9IHt9XG5cbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLkd1aWxkSW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSxcbiAgICAgIClcbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddLFxuICAgICAgKVxuICB9XG4gIGlmIChwcm9wcy5jb250ZXh0ICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dCkgaW50ZXJhY3Rpb24uY29udGV4dCA9IHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dFxuICBpZiAocHJvcHMuYXR0YWNobWVudFNpemVMaW1pdCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmF0dGFjaG1lbnRfc2l6ZV9saW1pdClcbiAgICBpbnRlcmFjdGlvbi5hdHRhY2htZW50U2l6ZUxpbWl0ID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5hdHRhY2htZW50X3NpemVfbGltaXRcbiAgaWYgKHByb3BzLmRhdGEgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhKSB7XG4gICAgaW50ZXJhY3Rpb24uZGF0YSA9IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50eXBlLFxuICAgICAgY29tcG9uZW50VHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmNvbXBvbmVudF90eXBlLFxuICAgICAgY3VzdG9tSWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jdXN0b21faWQsXG4gICAgICBjb21wb25lbnRzOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50cz8ubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSksXG4gICAgICB2YWx1ZXM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS52YWx1ZXMsXG4gICAgICBpZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5uYW1lLFxuICAgICAgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZFxuICAgICAgICA/IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCB7IHJlc29sdmVkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCwgZ3VpbGRJZCB9KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG9wdGlvbnM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5vcHRpb25zPy5tYXAoKG9wdCkgPT4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0KSksXG4gICAgICB0YXJnZXRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50YXJnZXRfaWQpIDogdW5kZWZpbmVkLFxuICAgIH1cbiAgfVxuXG4gIC8vIFR5cGVzY3JpcHQgaGFzIGFuIGhhcmQgdGltZSB3aXRoIGludGVyYWN0aW9uLmJvdCwgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGludGVyYWN0aW9uIGlzIHRoZSBvZiB0aGUgY29ycmVjdCB0eXBlXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uKGJvdCwgcGF5bG9hZCwgaW50ZXJhY3Rpb24gYXMgdW5rbm93biBhcyB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbihib3Q6IEJvdCwgb3B0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhT3B0aW9uKTogSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgY29uc3Qgb3B0ID0ge1xuICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgb3B0aW9uczogb3B0aW9uLm9wdGlvbnMsXG4gICAgZm9jdXNlZDogb3B0aW9uLmZvY3VzZWQsXG4gIH0gYXMgSW50ZXJhY3Rpb25EYXRhT3B0aW9uXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdGlvbiwgb3B0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgcmVzb2x2ZWQ6IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZDsgc2hhcmRJZDogbnVtYmVyOyBndWlsZElkPzogYmlnaW50IH0sXG4pOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIGNvbnN0IHRyYW5zZm9ybWVkOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCA9IHt9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQubWVzc2FnZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZXNzYWdlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogdmFsdWUsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICAgICAgICByZXR1cm4gW21lc3NhZ2UuaWQsIG1lc3NhZ2VdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC51c2Vycykge1xuICAgIHRyYW5zZm9ybWVkLnVzZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLnVzZXJzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgdmFsdWUpXG4gICAgICAgIHJldHVybiBbdXNlci5pZCwgdXNlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLmd1aWxkSWQgJiYgcGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbWJlcjogTWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCB2YWx1ZSwgcGF5bG9hZC5ndWlsZElkISwgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKVxuICAgICAgICByZXR1cm4gW21lbWJlci5pZCwgbWVtYmVyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQucm9sZXMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHZhbHVlLCBndWlsZElkOiBwYXlsb2FkLmd1aWxkSWQhIH0pXG4gICAgICAgIHJldHVybiBbcm9sZS5pZCwgcm9sZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLmNoYW5uZWxzKSB7XG4gICAgdHJhbnNmb3JtZWQuY2hhbm5lbHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHZhbHVlIH0pIGFzIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsXG4gICAgICAgIHJldHVybiBbY2hhbm5lbC5pZCwgY2hhbm5lbF1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLmF0dGFjaG1lbnRzKSB7XG4gICAgdHJhbnNmb3JtZWQuYXR0YWNobWVudHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICByZXR1cm4gW2lkLCBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCB2YWx1ZSldXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQsIHRyYW5zZm9ybWVkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZTogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZTsgc2hhcmRJZDogbnVtYmVyIH0sXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG4gIGNvbnN0IHJlc3BvbnNlID0ge30gYXMgSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlXG5cbiAgaWYgKHByb3BzLmludGVyYWN0aW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLmludGVyYWN0aW9uKVxuICAgIHJlc3BvbnNlLmludGVyYWN0aW9uID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UuaW50ZXJhY3Rpb24pXG4gIGlmIChwcm9wcy5yZXNvdXJjZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5yZXNvdXJjZSlcbiAgICByZXNwb25zZS5yZXNvdXJjZSA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25SZXNvdXJjZShib3QsIHtcbiAgICAgIGludGVyYWN0aW9uUmVzb3VyY2U6IHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLnJlc291cmNlLFxuICAgICAgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkLFxuICAgIH0pXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsIHJlc3BvbnNlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayhcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2ssXG4pOiB0eXBlb2YgYm90LnRyYW5zZm9ybWVycy4kaW5mZXJyZWRUeXBlcy5pbnRlcmFjdGlvbkNhbGxiYWNrIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uQ2FsbGJhY2tcbiAgY29uc3QgY2FsbGJhY2sgPSB7fSBhcyBJbnRlcmFjdGlvbkNhbGxiYWNrXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNhbGxiYWNrLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjYWxsYmFjay50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlSWQgJiYgcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZCkgY2FsbGJhY2suYWN0aXZpdHlJbnN0YW5jZUlkID0gcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZFxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlSWQgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9pZClcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nID0gcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmdcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZCwgY2FsbGJhY2spXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uUmVzb3VyY2U6IERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uUmVzb3VyY2Uge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25SZXNvdXJjZVxuICBjb25zdCByZXNvdXJjZSA9IHt9IGFzIEludGVyYWN0aW9uUmVzb3VyY2VcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UudHlwZSkgcmVzb3VyY2UudHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5hY3Rpdml0eV9pbnN0YW5jZSlcbiAgICByZXNvdXJjZS5hY3Rpdml0eUluc3RhbmNlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlKVxuICAgIHJlc291cmNlLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB7IG1lc3NhZ2U6IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlLCBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLCByZXNvdXJjZSlcbn1cbiJdLCJuYW1lcyI6WyJEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJJbnRlcmFjdGlvblR5cGVzIiwiTWVzc2FnZUZsYWdzIiwiQ29sbGVjdGlvbiIsImJhc2VJbnRlcmFjdGlvbiIsInVuZGVmaW5lZCIsInJlc3BvbmQiLCJyZXNwb25zZSIsIm9wdGlvbnMiLCJ0eXBlIiwiQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlIiwiY29udGVudCIsInRpdGxlIiwiTW9kYWwiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJ3aXRoUmVzcG9uc2UiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbiIsInBheWxvYWQiLCJndWlsZElkIiwiaW50ZXJhY3Rpb24iLCJndWlsZF9pZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsInVzZXIiLCJtZW1iZXIiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwidmVyc2lvbiIsImxvY2FsZSIsImd1aWxkTG9jYWxlIiwiZ3VpbGRfbG9jYWxlIiwiZ3VpbGQiLCJzaGFyZElkIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJlbnRpdGxlbWVudHMiLCJtYXAiLCJlIiwiZW50aXRsZW1lbnQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiYXR0YWNobWVudFNpemVMaW1pdCIsImF0dGFjaG1lbnRfc2l6ZV9saW1pdCIsImNvbXBvbmVudFR5cGUiLCJjb21wb25lbnRfdHlwZSIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwiY29tcG9uZW50cyIsImNvbXBvbmVudCIsInZhbHVlcyIsIm5hbWUiLCJyZXNvbHZlZCIsImludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwib3B0IiwiaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyIsInRhcmdldElkIiwidGFyZ2V0X2lkIiwiY3VzdG9taXplcnMiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFPcHRpb24iLCJvcHRpb24iLCJ2YWx1ZSIsImZvY3VzZWQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsInRyYW5zZm9ybWVkIiwibWVzc2FnZXMiLCJlbnRyaWVzIiwiX2lkIiwidXNlcnMiLCJtZW1iZXJzIiwicm9sZXMiLCJyb2xlIiwiY2hhbm5lbHMiLCJhdHRhY2htZW50cyIsImtleSIsImF0dGFjaG1lbnQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrIiwicmVzb3VyY2UiLCJpbnRlcmFjdGlvblJlc291cmNlIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayIsImNhbGxiYWNrIiwiYWN0aXZpdHlJbnN0YW5jZUlkIiwiYWN0aXZpdHlfaW5zdGFuY2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VJZCIsInJlc3BvbnNlX21lc3NhZ2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwiLCJyZXNwb25zZV9tZXNzYWdlX2VwaGVtZXJhbCIsInJlc3BvbnNlTWVzc2FnZUxvYWRpbmciLCJyZXNwb25zZV9tZXNzYWdlX2xvYWRpbmciLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlIiwiYWN0aXZpdHlJbnN0YW5jZSIsImFjdGl2aXR5X2luc3RhbmNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxpQ0FBaUMsRUFPakNDLHdCQUF3QixFQUN4QkMsZ0JBQWdCLEVBQ2hCQyxZQUFZLFFBQ1Asb0JBQW1CO0FBQzFCLFNBQVNDLFVBQVUsUUFBUSxvQkFBbUI7QUFnQjlDLE9BQU8sTUFBTUMsa0JBQWdGO0lBQzNGLDJFQUEyRTtJQUMzRSxHQUFJQyxTQUFTO0lBRWIsTUFBTUMsU0FBUUMsUUFBUSxFQUFFQyxPQUFPO1FBQzdCLElBQUlDLE9BQU9ULHlCQUF5QlUsd0JBQXdCO1FBRTVELDREQUE0RDtRQUM1RCxJQUFJLE9BQU9ILGFBQWEsVUFBVUEsV0FBVztZQUFFSSxTQUFTSjtRQUFT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