@discordeno/bot 21.0.0 → 21.0.1-next.03734ea

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 (109) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/commandOptionsParser.cjs +1 -1
  3. package/dist/cjs/constants.cjs +7 -7
  4. package/dist/cjs/desiredProperties.cjs +110 -4
  5. package/dist/cjs/helpers.cjs +46 -11
  6. package/dist/cjs/transformers/activity.cjs +5 -5
  7. package/dist/cjs/transformers/application.cjs +2 -1
  8. package/dist/cjs/transformers/automodActionExecution.cjs +3 -3
  9. package/dist/cjs/transformers/channel.cjs +7 -7
  10. package/dist/cjs/transformers/component.cjs +184 -64
  11. package/dist/cjs/transformers/emoji.cjs +5 -5
  12. package/dist/cjs/transformers/entitlement.cjs +2 -2
  13. package/dist/cjs/transformers/guild.cjs +5 -4
  14. package/dist/cjs/transformers/incidentsData.cjs +21 -0
  15. package/dist/cjs/transformers/index.cjs +5 -3
  16. package/dist/cjs/transformers/interaction.cjs +15 -10
  17. package/dist/cjs/transformers/lobby.cjs +41 -0
  18. package/dist/cjs/transformers/member.cjs +4 -4
  19. package/dist/cjs/transformers/message.cjs +20 -7
  20. package/dist/cjs/transformers/onboarding.cjs +5 -5
  21. package/dist/cjs/transformers/poll.cjs +4 -4
  22. package/dist/cjs/transformers/reverse/component.cjs +100 -11
  23. package/dist/cjs/transformers/reverse/member.cjs +4 -4
  24. package/dist/cjs/transformers/reverse/presence.cjs +4 -4
  25. package/dist/cjs/transformers/role.cjs +17 -5
  26. package/dist/cjs/transformers/scheduledEvent.cjs +4 -4
  27. package/dist/cjs/transformers/sticker.cjs +4 -4
  28. package/dist/cjs/transformers/subscription.cjs +2 -2
  29. package/dist/cjs/transformers/threadMember.cjs +6 -5
  30. package/dist/cjs/transformers/toggles/Permissions.cjs +1 -1
  31. package/dist/cjs/transformers/toggles/ToggleBitfield.cjs +4 -4
  32. package/dist/cjs/transformers/toggles/channel.cjs +4 -4
  33. package/dist/cjs/transformers/toggles/emoji.cjs +4 -4
  34. package/dist/cjs/transformers/toggles/guild.cjs +13 -7
  35. package/dist/cjs/transformers/toggles/member.cjs +4 -4
  36. package/dist/cjs/transformers/toggles/role.cjs +4 -4
  37. package/dist/cjs/transformers/toggles/user.cjs +4 -4
  38. package/dist/cjs/transformers/toggles/voice.cjs +4 -4
  39. package/dist/cjs/transformers/user.cjs +39 -4
  40. package/dist/cjs/transformers.cjs +22 -1
  41. package/dist/cjs/utils.cjs +9 -9
  42. package/dist/esm/commandOptionsParser.js +1 -1
  43. package/dist/esm/constants.js +2 -2
  44. package/dist/esm/desiredProperties.js +107 -1
  45. package/dist/esm/helpers.js +46 -11
  46. package/dist/esm/transformers/application.js +2 -1
  47. package/dist/esm/transformers/automodActionExecution.js +3 -3
  48. package/dist/esm/transformers/component.js +170 -61
  49. package/dist/esm/transformers/entitlement.js +2 -2
  50. package/dist/esm/transformers/guild.js +2 -1
  51. package/dist/esm/transformers/incidentsData.js +11 -0
  52. package/dist/esm/transformers/index.js +6 -4
  53. package/dist/esm/transformers/interaction.js +7 -2
  54. package/dist/esm/transformers/lobby.js +23 -0
  55. package/dist/esm/transformers/message.js +11 -1
  56. package/dist/esm/transformers/reverse/component.js +86 -8
  57. package/dist/esm/transformers/role.js +11 -2
  58. package/dist/esm/transformers/subscription.js +2 -2
  59. package/dist/esm/transformers/threadMember.js +3 -2
  60. package/dist/esm/transformers/toggles/Permissions.js +1 -1
  61. package/dist/esm/transformers/toggles/ToggleBitfield.js +1 -1
  62. package/dist/esm/transformers/toggles/channel.js +1 -1
  63. package/dist/esm/transformers/toggles/emoji.js +1 -1
  64. package/dist/esm/transformers/toggles/guild.js +10 -4
  65. package/dist/esm/transformers/toggles/member.js +1 -1
  66. package/dist/esm/transformers/toggles/role.js +1 -1
  67. package/dist/esm/transformers/toggles/user.js +1 -1
  68. package/dist/esm/transformers/toggles/voice.js +1 -1
  69. package/dist/esm/transformers/types.js +2 -2
  70. package/dist/esm/transformers/user.js +27 -1
  71. package/dist/esm/transformers.js +24 -3
  72. package/dist/esm/utils.js +5 -5
  73. package/dist/types/commandOptionsParser.d.ts +11 -2
  74. package/dist/types/commandOptionsParser.d.ts.map +1 -1
  75. package/dist/types/constants.d.ts.map +1 -1
  76. package/dist/types/desiredProperties.d.ts +20 -5
  77. package/dist/types/desiredProperties.d.ts.map +1 -1
  78. package/dist/types/helpers.d.ts +27 -13
  79. package/dist/types/helpers.d.ts.map +1 -1
  80. package/dist/types/transformers/application.d.ts.map +1 -1
  81. package/dist/types/transformers/automodActionExecution.d.ts.map +1 -1
  82. package/dist/types/transformers/component.d.ts +3 -1
  83. package/dist/types/transformers/component.d.ts.map +1 -1
  84. package/dist/types/transformers/guild.d.ts.map +1 -1
  85. package/dist/types/transformers/incidentsData.d.ts +4 -0
  86. package/dist/types/transformers/incidentsData.d.ts.map +1 -0
  87. package/dist/types/transformers/index.d.ts +5 -3
  88. package/dist/types/transformers/index.d.ts.map +1 -1
  89. package/dist/types/transformers/interaction.d.ts.map +1 -1
  90. package/dist/types/transformers/lobby.d.ts +5 -0
  91. package/dist/types/transformers/lobby.d.ts.map +1 -0
  92. package/dist/types/transformers/message.d.ts +3 -2
  93. package/dist/types/transformers/message.d.ts.map +1 -1
  94. package/dist/types/transformers/reverse/component.d.ts +3 -1
  95. package/dist/types/transformers/reverse/component.d.ts.map +1 -1
  96. package/dist/types/transformers/role.d.ts +3 -2
  97. package/dist/types/transformers/role.d.ts.map +1 -1
  98. package/dist/types/transformers/threadMember.d.ts.map +1 -1
  99. package/dist/types/transformers/toggles/guild.d.ts +5 -1
  100. package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
  101. package/dist/types/transformers/types.d.ts +156 -11
  102. package/dist/types/transformers/types.d.ts.map +1 -1
  103. package/dist/types/transformers/user.d.ts +5 -2
  104. package/dist/types/transformers/user.d.ts.map +1 -1
  105. package/dist/types/transformers.d.ts +25 -3
  106. package/dist/types/transformers.d.ts.map +1 -1
  107. package/dist/types/utils.d.ts +1 -1
  108. package/dist/types/utils.d.ts.map +1 -1
  109. package/package.json +26 -21
@@ -28,7 +28,8 @@ const featureNames = [
28
28
  'vanityUrl',
29
29
  'verified',
30
30
  'vipRegions',
31
- 'welcomeScreenEnabled'
31
+ 'welcomeScreenEnabled',
32
+ 'enhancedRoleColors'
32
33
  ];
33
34
  export const GuildToggle = {
34
35
  /** Whether the bot is the owner of the guild */ owner: 1n << 0n,
@@ -37,7 +38,7 @@ export const GuildToggle = {
37
38
  /** Whether this guild is unavailable due to an outage */ unavailable: 1n << 3n,
38
39
  /** Whether the guild has the boost progress bar enabled */ premiumProgressBarEnabled: 1n << 4n,
39
40
  // GUILD FEATURES ARE BELOW THIS
40
- // MISSING VALUES IN THE BITFIELD: 26, 35+
41
+ // MISSING VALUES IN THE BITFIELD: 36+
41
42
  /** Whether the guild has access to set an animated guild banner image */ animatedBanner: 1n << 11n,
42
43
  /** Whether the guild has access to set an animated guild icon */ animatedIcon: 1n << 16n,
43
44
  /** Whether the guild is using the old permissions configuration behavior */ applicationCommandPermissionsV2: 1n << 14n,
@@ -66,7 +67,8 @@ export const GuildToggle = {
66
67
  /** Whether the guild has access to set a vanity URL */ vanityUrl: 1n << 7n,
67
68
  /** Whether the guild is verified */ verified: 1n << 8n,
68
69
  /** Whether the guild has access to set 384 kbps bitrate in voice (previously VIP voice servers) */ vipRegions: 1n << 6n,
69
- /** Whether the guild has enabled the welcome screen */ welcomeScreenEnabled: 1n << 18n
70
+ /** Whether the guild has enabled the welcome screen */ welcomeScreenEnabled: 1n << 18n,
71
+ /** Whether the guild is able to set gradient colors to roles */ enhancedRoleColors: 1n << 35n
70
72
  };
71
73
  export class GuildToggles extends ToggleBitfieldBigint {
72
74
  constructor(guildOrTogglesBigint){
@@ -110,6 +112,7 @@ export class GuildToggles extends ToggleBitfieldBigint {
110
112
  if (guild.features.includes(GuildFeatures.Verified)) this.add(GuildToggle.verified);
111
113
  if (guild.features.includes(GuildFeatures.VipRegions)) this.add(GuildToggle.vipRegions);
112
114
  if (guild.features.includes(GuildFeatures.WelcomeScreenEnabled)) this.add(GuildToggle.welcomeScreenEnabled);
115
+ if (guild.features.includes(GuildFeatures.EnhancedRoleColors)) this.add(GuildToggle.enhancedRoleColors);
113
116
  }
114
117
  }
115
118
  get features() {
@@ -223,6 +226,9 @@ export class GuildToggles extends ToggleBitfieldBigint {
223
226
  /** Whether the guild has created soundboard sounds. */ get soundboard() {
224
227
  return this.has('soundboard');
225
228
  }
229
+ /** Whether the guild is able to set gradient colors to roles */ get enhancedRoleColors() {
230
+ return this.has('enhancedRoleColors');
231
+ }
226
232
  /** Checks whether or not the permissions exist in this */ has(permissions) {
227
233
  if (!Array.isArray(permissions)) return super.contains(GuildToggle[permissions]);
228
234
  return super.contains(permissions.reduce((a, b)=>a |= GuildToggle[b], 0n));
@@ -236,4 +242,4 @@ export class GuildToggles extends ToggleBitfieldBigint {
236
242
  }
237
243
  }
238
244
 
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9ndWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERpc2NvcmRHdWlsZCwgR3VpbGRGZWF0dXJlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGRCaWdpbnQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBmZWF0dXJlTmFtZXMgPSBbXG4gICdhbmltYXRlZEJhbm5lcicsXG4gICdhbmltYXRlZEljb24nLFxuICAnYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMicsXG4gICdhdXRvTW9kZXJhdGlvbicsXG4gICdiYW5uZXInLFxuICAnY29tbXVuaXR5JyxcbiAgJ2NyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsJyxcbiAgJ2NyZWF0b3JTdG9yZVBhZ2UnLFxuICAnZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcicsXG4gICdkaXNjb3ZlcmFibGUnLFxuICAnZmVhdHVyYWJsZScsXG4gICdpbnZpdGVzRGlzYWJsZWQnLFxuICAnaW52aXRlU3BsYXNoJyxcbiAgJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJyxcbiAgJ21vcmVTb3VuZGJvYXJkJyxcbiAgJ21vcmVTdGlja2VycycsXG4gICduZXdzJyxcbiAgJ3BhcnRuZXJlZCcsXG4gICdwcmV2aWV3RW5hYmxlZCcsXG4gICdyYWlkQWxlcnRzRGlzYWJsZWQnLFxuICAncm9sZUljb25zJyxcbiAgJ3JvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UnLFxuICAncm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkJyxcbiAgJ3RpY2tldGVkRXZlbnRzRW5hYmxlZCcsXG4gICd2YW5pdHlVcmwnLFxuICAndmVyaWZpZWQnLFxuICAndmlwUmVnaW9ucycsXG4gICd3ZWxjb21lU2NyZWVuRW5hYmxlZCcsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBHdWlsZFRvZ2dsZSA9IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIG93bmVyOiAxbiA8PCAwbixcbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICB3aWRnZXRFbmFibGVkOiAxbiA8PCAxbixcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgbGFyZ2U6IDFuIDw8IDJuLFxuICAvKiogV2hldGhlciB0aGlzIGd1aWxkIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhbiBvdXRhZ2UgKi9cbiAgdW5hdmFpbGFibGU6IDFuIDw8IDNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkOiAxbiA8PCA0bixcblxuICAvLyBHVUlMRCBGRUFUVVJFUyBBUkUgQkVMT1cgVEhJU1xuICAvLyBNSVNTSU5HIFZBTFVFUyBJTiBUSEUgQklURklFTEQ6IDI2LCAzNStcblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gYW5pbWF0ZWQgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGFuaW1hdGVkQmFubmVyOiAxbiA8PCAxMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBpY29uICovXG4gIGFuaW1hdGVkSWNvbjogMW4gPDwgMTZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgdXNpbmcgdGhlIG9sZCBwZXJtaXNzaW9ucyBjb25maWd1cmF0aW9uIGJlaGF2aW9yICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjI6IDFuIDw8IDE0bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBzZXQgdXAgYXV0byBtb2RlcmF0aW9uIHJ1bGVzICovXG4gIGF1dG9Nb2RlcmF0aW9uOiAxbiA8PCAyOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBiYW5uZXI6IDFuIDw8IDE3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgY29tbXVuaXR5OiAxbiA8PCAxMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsOiAxbiA8PCAzMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgY3JlYXRvclN0b3JlUGFnZTogMW4gPDwgMzJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGJlZW4gc2V0IGFzIGEgc3VwcG9ydCBzZXJ2ZXIgb24gdGhlIEFwcCBEaXJlY3RvcnkgKi9cbiAgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcjogMW4gPDwgMzBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBiZSBkaXNjb3ZlcmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZGlzY292ZXJhYmxlOiAxbiA8PCAxM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGZlYXR1cmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZmVhdHVyYWJsZTogMW4gPDwgMTVuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgaW52aXRlc0Rpc2FibGVkOiAxbiA8PCAyOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBpbnZpdGUgc3BsYXNoIGJhY2tncm91bmQgKi9cbiAgaW52aXRlU3BsYXNoOiAxbiA8PCA1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIFtNZW1iZXJzaGlwIFNjcmVlbmluZ10oaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21lbWJlcnNoaXAtc2NyZWVuaW5nLW9iamVjdCkgKi9cbiAgbWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQ6IDFuIDw8IDE5bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBtb3JlIHNvdW5kYm9hcmQgc291bmQgc2xvdCAqL1xuICBtb3JlU291bmRib2FyZDogMW4gPDwgMjRuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGluY3JlYXNlZCBjdXN0b20gc3RpY2tlciBzbG90cyAqL1xuICBtb3JlU3RpY2tlcnM6IDFuIDw8IDIzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gY3JlYXRlIG5ld3MgY2hhbm5lbHMgKi9cbiAgbmV3czogMW4gPDwgMTJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgcGFydG5lcmVkICovXG4gIHBhcnRuZXJlZDogMW4gPDwgOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBjYW4gYmUgcHJldmlld2VkIGJlZm9yZSBqb2luaW5nIHZpYSBNZW1iZXJzaGlwIFNjcmVlbmluZyBvciB0aGUgZGlyZWN0b3J5ICovXG4gIHByZXZpZXdFbmFibGVkOiAxbiA8PCAyMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZGlzYWJsZWQgYWxlcnRzIGZvciBqb2luIHJhaWRzIGluIHRoZSBjb25maWd1cmVkIHNhZmV0eSBhbGVydHMgY2hhbm5lbCAqL1xuICByYWlkQWxlcnRzRGlzYWJsZWQ6IDFuIDw8IDIybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gc2V0IHJvbGUgaWNvbnMgKi9cbiAgcm9sZUljb25zOiAxbiA8PCAyN24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgcm9sZSBzdWJzY3JpcHRpb25zIHRoYXQgY2FuIGJlIHB1cmNoYXNlZC4gKi9cbiAgcm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZTogMW4gPDwgMzNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgcm9sZSBzdWJzY3JpcHRpb25zLiAqL1xuICByb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQ6IDFuIDw8IDM0bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBjcmVhdGVkIHNvdW5kYm9hcmQgc291bmRzLiAqL1xuICBzb3VuZGJvYXJkOiAxbiA8PCAyNW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aWNrZXRlZCBldmVudHMgKi9cbiAgdGlja2V0ZWRFdmVudHNFbmFibGVkOiAxbiA8PCAyMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIHZhbml0eSBVUkwgKi9cbiAgdmFuaXR5VXJsOiAxbiA8PCA3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiAxbiA8PCA4bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIHZpcFJlZ2lvbnM6IDFuIDw8IDZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIHdlbGNvbWVTY3JlZW5FbmFibGVkOiAxbiA8PCAxOG4sXG59XG5cbmV4cG9ydCBjbGFzcyBHdWlsZFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB7XG4gIGNvbnN0cnVjdG9yKGd1aWxkT3JUb2dnbGVzQmlnaW50OiBEaXNjb3JkR3VpbGQgfCBiaWdpbnQpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGd1aWxkT3JUb2dnbGVzQmlnaW50ID09PSAnYmlnaW50JykgdGhpcy5iaXRmaWVsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBndWlsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgICAvLyBDYXVzZSBkaXNjb3JkIGJlIHNtYXJ0IGxpa2UgdGhhdFxuICAgICAgaWYgKCFndWlsZC5mZWF0dXJlcykgZ3VpbGQuZmVhdHVyZXMgPSBbXVxuXG4gICAgICBpZiAoZ3VpbGQub3duZXIpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm93bmVyKVxuICAgICAgaWYgKGd1aWxkLndpZGdldF9lbmFibGVkKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS53aWRnZXRFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmxhcmdlKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5sYXJnZSlcbiAgICAgIGlmIChndWlsZC51bmF2YWlsYWJsZSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudW5hdmFpbGFibGUpXG4gICAgICBpZiAoZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZClcblxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQW5pbWF0ZWRCYW5uZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hbmltYXRlZEJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFuaW1hdGVkSWNvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkSWNvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQXV0b01vZGVyYXRpb24pKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hdXRvTW9kZXJhdGlvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNvbW11bml0eSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmNvbW11bml0eSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5DcmVhdG9yU3RvcmVQYWdlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvclN0b3JlUGFnZSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkRldmVsb3BlclN1cHBvcnRTZXJ2ZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5kZXZlbG9wZXJTdXBwb3J0U2VydmVyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRGlzY292ZXJhYmxlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZGlzY292ZXJhYmxlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRmVhdHVyYWJsZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmZlYXR1cmFibGUpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVzRGlzYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVzRGlzYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVTcGxhc2gpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVTcGxhc2gpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5NZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm1lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTW9yZVNvdW5kYm9hcmQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5tb3JlU291bmRib2FyZClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLk1vcmVTdGlja2VycykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm1vcmVTdGlja2VycylcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLk5ld3MpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5uZXdzKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUGFydG5lcmVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucGFydG5lcmVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUHJldmlld0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5wcmV2aWV3RW5hYmxlZClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLlJhaWRBbGVydHNEaXNhYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJhaWRBbGVydHNEaXNhYmxlZClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLlJvbGVJY29ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJvbGVJY29ucylcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5yb2xlU3Vic2NyaXB0aW9uc0F2YWlsYWJsZUZvclB1cmNoYXNlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuU291bmRib2FyZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnNvdW5kYm9hcmQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5UaWNrZXRlZEV2ZW50c0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS50aWNrZXRlZEV2ZW50c0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WYW5pdHlVcmwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS52YW5pdHlVcmwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WZXJpZmllZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZlcmlmaWVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVmlwUmVnaW9ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZpcFJlZ2lvbnMpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5XZWxjb21lU2NyZWVuRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLndlbGNvbWVTY3JlZW5FbmFibGVkKVxuICAgIH1cbiAgfVxuXG4gIGdldCBmZWF0dXJlcygpOiBHdWlsZEZlYXR1cmVLZXlzW10ge1xuICAgIGNvbnN0IGZlYXR1cmVzOiBHdWlsZEZlYXR1cmVLZXlzW10gPSBbXVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAgaWYgKCFmZWF0dXJlTmFtZXMuaW5jbHVkZXMoa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpKSBjb250aW51ZVxuICAgICAgaWYgKCFzdXBlci5jb250YWlucyhHdWlsZFRvZ2dsZVtrZXkgYXMgR3VpbGRUb2dnbGVLZXlzXSkpIGNvbnRpbnVlXG5cbiAgICAgIGZlYXR1cmVzLnB1c2goa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYm90IGlzIHRoZSBvd25lciBvZiB0aGUgZ3VpbGQgKi9cbiAgZ2V0IG93bmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnb3duZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICBnZXQgd2lkZ2V0RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dpZGdldEVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgZ2V0IGxhcmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbGFyZ2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBndWlsZCBpcyB1bmF2YWlsYWJsZSBkdWUgdG8gYW4gb3V0YWdlICovXG4gIGdldCB1bmF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3VuYXZhaWxhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgdGhlIGJvb3N0IHByb2dyZXNzIGJhciBlbmFibGVkICovXG4gIGdldCBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gaW52aXRlIHNwbGFzaCBiYWNrZ3JvdW5kICovXG4gIGdldCBpbnZpdGVTcGxhc2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdpbnZpdGVTcGxhc2gnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIGdldCB2aXBSZWdpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndmlwUmVnaW9ucycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSB2YW5pdHkgVVJMICovXG4gIGdldCB2YW5pdHlVcmwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd2YW5pdHlVcmwnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIGdldCB2ZXJpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZlcmlmaWVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBwYXJ0bmVyZWQgKi9cbiAgZ2V0IHBhcnRuZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3BhcnRuZXJlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGVuYWJsZSB3ZWxjb21lIHNjcmVlbiwgTWVtYmVyc2hpcCBTY3JlZW5pbmcsIHN0YWdlIGNoYW5uZWxzIGFuZCBkaXNjb3ZlcnksIGFuZCByZWNlaXZlcyBjb21tdW5pdHkgdXBkYXRlcyAqL1xuICBnZXQgY29tbXVuaXR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnY29tbXVuaXR5JylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBHdWlsZCBoYXMgYmVlbiBzZXQgYXMgYSBzdXBwb3J0IHNlcnZlciBvbiB0aGUgQXBwIERpcmVjdG9yeSAqL1xuICBnZXQgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2RldmVsb3BlclN1cHBvcnRTZXJ2ZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBnZXQgYW5pbWF0ZWRCYW5uZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhbmltYXRlZEJhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBjcmVhdGUgbmV3cyBjaGFubmVscyAqL1xuICBnZXQgbmV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ25ld3MnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGdldCBkaXNjb3ZlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdkaXNjb3ZlcmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZmVhdHVyZWQgaW4gdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgZmVhdHVyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ZlYXR1cmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGljb24gKi9cbiAgZ2V0IGFuaW1hdGVkSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2FuaW1hdGVkSWNvbicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSBndWlsZCBiYW5uZXIgaW1hZ2UgKi9cbiAgZ2V0IGJhbm5lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2Jhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIGdldCB3ZWxjb21lU2NyZWVuRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dlbGNvbWVTY3JlZW5FbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBbTWVtYmVyc2hpcCBTY3JlZW5pbmddKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtZW1iZXJzaGlwLXNjcmVlbmluZy1vYmplY3QpICovXG4gIGdldCBtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgbW9yZSBzb3VuZGJvYXJkIHNvdW5kIHNsb3QgKi9cbiAgZ2V0IG1vcmVTb3VuZGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbW9yZVNvdW5kYm9hcmQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBiZSBwcmV2aWV3ZWQgYmVmb3JlIGpvaW5pbmcgdmlhIE1lbWJlcnNoaXAgU2NyZWVuaW5nIG9yIHRoZSBkaXJlY3RvcnkgKi9cbiAgZ2V0IHByZXZpZXdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncHJldmlld0VuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRpY2tldGVkIGV2ZW50cyAqL1xuICBnZXQgdGlja2V0ZWRFdmVudHNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndGlja2V0ZWRFdmVudHNFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgaW5jcmVhc2VkIGN1c3RvbSBzdGlja2VyIHNsb3RzICovXG4gIGdldCBtb3JlU3RpY2tlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdtb3JlU3RpY2tlcnMnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gc2V0IHJvbGUgaWNvbnMgKi9cbiAgZ2V0IHJvbGVJY29ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3JvbGVJY29ucycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHNldCB1cCBhdXRvIG1vZGVyYXRpb24gcnVsZXMgKi9cbiAgZ2V0IGF1dG9Nb2RlcmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYXV0b01vZGVyYXRpb24nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBwYXVzZWQgaW52aXRlcywgcHJldmVudGluZyBuZXcgdXNlcnMgZnJvbSBqb2luaW5nICovXG4gIGdldCBpbnZpdGVzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdpbnZpdGVzRGlzYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHVzaW5nIHRoZSBvbGQgcGVybWlzc2lvbnMgY29uZmlndXJhdGlvbiBiZWhhdmlvciAqL1xuICBnZXQgYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2FwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIG1vbmV0aXphdGlvbi4gKi9cbiAgZ2V0IGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRoZSByb2xlIHN1YnNjcmlwdGlvbiBwcm9tbyBwYWdlLiAqL1xuICBnZXQgY3JlYXRvclN0b3JlUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2NyZWF0b3JTdG9yZVBhZ2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBkaXNhYmxlZCBhbGVydHMgZm9yIGpvaW4gcmFpZHMgaW4gdGhlIGNvbmZpZ3VyZWQgc2FmZXR5IGFsZXJ0cyBjaGFubmVsICovXG4gIGdldCByYWlkQWxlcnRzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyYWlkQWxlcnRzRGlzYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyByb2xlIHN1YnNjcmlwdGlvbnMgdGhhdCBjYW4gYmUgcHVyY2hhc2VkLiAqL1xuICBnZXQgcm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3JvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHJvbGUgc3Vic2NyaXB0aW9ucy4gKi9cbiAgZ2V0IHJvbGVTdWJzY3JpcHRpb25zRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3JvbGVTdWJzY3JpcHRpb25zRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGNyZWF0ZWQgc291bmRib2FyZCBzb3VuZHMuICovXG4gIGdldCBzb3VuZGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnc291bmRib2FyZCcpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogR3VpbGRUb2dnbGVLZXlzIHwgR3VpbGRUb2dnbGVLZXlzW10pOiBib29sZWFuIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpKSByZXR1cm4gc3VwZXIuY29udGFpbnMoR3VpbGRUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gR3VpbGRUb2dnbGVbYl0pLCAwbikpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxHdWlsZFRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoR3VpbGRUb2dnbGUpKSB7XG4gICAgICBqc29uW2tleV0gPSBzdXBlci5jb250YWlucyh2YWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbiBhcyBSZWNvcmQ8R3VpbGRUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEd1aWxkVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBHdWlsZFRvZ2dsZVxuXG5leHBvcnQgdHlwZSBHdWlsZEZlYXR1cmVLZXlzID0gKHR5cGVvZiBmZWF0dXJlTmFtZXMpW251bWJlcl1cbiJdLCJuYW1lcyI6WyJHdWlsZEZlYXR1cmVzIiwiVG9nZ2xlQml0ZmllbGRCaWdpbnQiLCJmZWF0dXJlTmFtZXMiLCJHdWlsZFRvZ2dsZSIsIm93bmVyIiwid2lkZ2V0RW5hYmxlZCIsImxhcmdlIiwidW5hdmFpbGFibGUiLCJwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkIiwiYW5pbWF0ZWRCYW5uZXIiLCJhbmltYXRlZEljb24iLCJhcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyIiwiYXV0b01vZGVyYXRpb24iLCJiYW5uZXIiLCJjb21tdW5pdHkiLCJjcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCIsImNyZWF0b3JTdG9yZVBhZ2UiLCJkZXZlbG9wZXJTdXBwb3J0U2VydmVyIiwiZGlzY292ZXJhYmxlIiwiZmVhdHVyYWJsZSIsImludml0ZXNEaXNhYmxlZCIsImludml0ZVNwbGFzaCIsIm1lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkIiwibW9yZVNvdW5kYm9hcmQiLCJtb3JlU3RpY2tlcnMiLCJuZXdzIiwicGFydG5lcmVkIiwicHJldmlld0VuYWJsZWQiLCJyYWlkQWxlcnRzRGlzYWJsZWQiLCJyb2xlSWNvbnMiLCJyb2xlU3Vic2NyaXB0aW9uc0F2YWlsYWJsZUZvclB1cmNoYXNlIiwicm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkIiwic291bmRib2FyZCIsInRpY2tldGVkRXZlbnRzRW5hYmxlZCIsInZhbml0eVVybCIsInZlcmlmaWVkIiwidmlwUmVnaW9ucyIsIndlbGNvbWVTY3JlZW5FbmFibGVkIiwiR3VpbGRUb2dnbGVzIiwiY29uc3RydWN0b3IiLCJndWlsZE9yVG9nZ2xlc0JpZ2ludCIsImJpdGZpZWxkIiwiZ3VpbGQiLCJmZWF0dXJlcyIsImFkZCIsIndpZGdldF9lbmFibGVkIiwicHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCIsImluY2x1ZGVzIiwiQW5pbWF0ZWRCYW5uZXIiLCJBbmltYXRlZEljb24iLCJBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyIiwiQXV0b01vZGVyYXRpb24iLCJCYW5uZXIiLCJDb21tdW5pdHkiLCJDcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCIsIkNyZWF0b3JTdG9yZVBhZ2UiLCJEZXZlbG9wZXJTdXBwb3J0U2VydmVyIiwiRGlzY292ZXJhYmxlIiwiRmVhdHVyYWJsZSIsIkludml0ZXNEaXNhYmxlZCIsIkludml0ZVNwbGFzaCIsIk1lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkIiwiTW9yZVNvdW5kYm9hcmQiLCJNb3JlU3RpY2tlcnMiLCJOZXdzIiwiUGFydG5lcmVkIiwiUHJldmlld0VuYWJsZWQiLCJSYWlkQWxlcnRzRGlzYWJsZWQiLCJSb2xlSWNvbnMiLCJSb2xlU3Vic2NyaXB0aW9uc0F2YWlsYWJsZUZvclB1cmNoYXNlIiwiUm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkIiwiU291bmRib2FyZCIsIlRpY2tldGVkRXZlbnRzRW5hYmxlZCIsIlZhbml0eVVybCIsIlZlcmlmaWVkIiwiVmlwUmVnaW9ucyIsIldlbGNvbWVTY3JlZW5FbmFibGVkIiwia2V5IiwiT2JqZWN0Iiwia2V5cyIsImNvbnRhaW5zIiwicHVzaCIsImhhcyIsInBlcm1pc3Npb25zIiwiQXJyYXkiLCJpc0FycmF5IiwicmVkdWNlIiwiYSIsImIiLCJsaXN0IiwianNvbiIsInZhbHVlIiwiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBNEJBLGFBQWEsUUFBUSxvQkFBbUI7QUFDcEUsU0FBU0Msb0JB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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9ndWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERpc2NvcmRHdWlsZCwgR3VpbGRGZWF0dXJlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGRCaWdpbnQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBmZWF0dXJlTmFtZXMgPSBbXG4gICdhbmltYXRlZEJhbm5lcicsXG4gICdhbmltYXRlZEljb24nLFxuICAnYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMicsXG4gICdhdXRvTW9kZXJhdGlvbicsXG4gICdiYW5uZXInLFxuICAnY29tbXVuaXR5JyxcbiAgJ2NyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsJyxcbiAgJ2NyZWF0b3JTdG9yZVBhZ2UnLFxuICAnZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcicsXG4gICdkaXNjb3ZlcmFibGUnLFxuICAnZmVhdHVyYWJsZScsXG4gICdpbnZpdGVzRGlzYWJsZWQnLFxuICAnaW52aXRlU3BsYXNoJyxcbiAgJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJyxcbiAgJ21vcmVTb3VuZGJvYXJkJyxcbiAgJ21vcmVTdGlja2VycycsXG4gICduZXdzJyxcbiAgJ3BhcnRuZXJlZCcsXG4gICdwcmV2aWV3RW5hYmxlZCcsXG4gICdyYWlkQWxlcnRzRGlzYWJsZWQnLFxuICAncm9sZUljb25zJyxcbiAgJ3JvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UnLFxuICAncm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkJyxcbiAgJ3RpY2tldGVkRXZlbnRzRW5hYmxlZCcsXG4gICd2YW5pdHlVcmwnLFxuICAndmVyaWZpZWQnLFxuICAndmlwUmVnaW9ucycsXG4gICd3ZWxjb21lU2NyZWVuRW5hYmxlZCcsXG4gICdlbmhhbmNlZFJvbGVDb2xvcnMnLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgR3VpbGRUb2dnbGUgPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBib3QgaXMgdGhlIG93bmVyIG9mIHRoZSBndWlsZCAqL1xuICBvd25lcjogMW4gPDwgMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBzZXJ2ZXIgd2lkZ2V0IGlzIGVuYWJsZWQgKi9cbiAgd2lkZ2V0RW5hYmxlZDogMW4gPDwgMW4sXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgY29uc2lkZXJlZCBhIGxhcmdlIGd1aWxkICovXG4gIGxhcmdlOiAxbiA8PCAybixcbiAgLyoqIFdoZXRoZXIgdGhpcyBndWlsZCBpcyB1bmF2YWlsYWJsZSBkdWUgdG8gYW4gb3V0YWdlICovXG4gIHVuYXZhaWxhYmxlOiAxbiA8PCAzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyB0aGUgYm9vc3QgcHJvZ3Jlc3MgYmFyIGVuYWJsZWQgKi9cbiAgcHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZDogMW4gPDwgNG4sXG5cbiAgLy8gR1VJTEQgRkVBVFVSRVMgQVJFIEJFTE9XIFRISVNcbiAgLy8gTUlTU0lORyBWQUxVRVMgSU4gVEhFIEJJVEZJRUxEOiAzNitcblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gYW5pbWF0ZWQgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGFuaW1hdGVkQmFubmVyOiAxbiA8PCAxMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBpY29uICovXG4gIGFuaW1hdGVkSWNvbjogMW4gPDwgMTZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgdXNpbmcgdGhlIG9sZCBwZXJtaXNzaW9ucyBjb25maWd1cmF0aW9uIGJlaGF2aW9yICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjI6IDFuIDw8IDE0bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBzZXQgdXAgYXV0byBtb2RlcmF0aW9uIHJ1bGVzICovXG4gIGF1dG9Nb2RlcmF0aW9uOiAxbiA8PCAyOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBiYW5uZXI6IDFuIDw8IDE3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgY29tbXVuaXR5OiAxbiA8PCAxMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsOiAxbiA8PCAzMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgY3JlYXRvclN0b3JlUGFnZTogMW4gPDwgMzJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGJlZW4gc2V0IGFzIGEgc3VwcG9ydCBzZXJ2ZXIgb24gdGhlIEFwcCBEaXJlY3RvcnkgKi9cbiAgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcjogMW4gPDwgMzBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBiZSBkaXNjb3ZlcmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZGlzY292ZXJhYmxlOiAxbiA8PCAxM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGZlYXR1cmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZmVhdHVyYWJsZTogMW4gPDwgMTVuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgaW52aXRlc0Rpc2FibGVkOiAxbiA8PCAyOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBpbnZpdGUgc3BsYXNoIGJhY2tncm91bmQgKi9cbiAgaW52aXRlU3BsYXNoOiAxbiA8PCA1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIFtNZW1iZXJzaGlwIFNjcmVlbmluZ10oaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21lbWJlcnNoaXAtc2NyZWVuaW5nLW9iamVjdCkgKi9cbiAgbWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQ6IDFuIDw8IDE5bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBtb3JlIHNvdW5kYm9hcmQgc291bmQgc2xvdCAqL1xuICBtb3JlU291bmRib2FyZDogMW4gPDwgMjRuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGluY3JlYXNlZCBjdXN0b20gc3RpY2tlciBzbG90cyAqL1xuICBtb3JlU3RpY2tlcnM6IDFuIDw8IDIzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gY3JlYXRlIG5ld3MgY2hhbm5lbHMgKi9cbiAgbmV3czogMW4gPDwgMTJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgcGFydG5lcmVkICovXG4gIHBhcnRuZXJlZDogMW4gPDwgOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBjYW4gYmUgcHJldmlld2VkIGJlZm9yZSBqb2luaW5nIHZpYSBNZW1iZXJzaGlwIFNjcmVlbmluZyBvciB0aGUgZGlyZWN0b3J5ICovXG4gIHByZXZpZXdFbmFibGVkOiAxbiA8PCAyMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZGlzYWJsZWQgYWxlcnRzIGZvciBqb2luIHJhaWRzIGluIHRoZSBjb25maWd1cmVkIHNhZmV0eSBhbGVydHMgY2hhbm5lbCAqL1xuICByYWlkQWxlcnRzRGlzYWJsZWQ6IDFuIDw8IDIybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gc2V0IHJvbGUgaWNvbnMgKi9cbiAgcm9sZUljb25zOiAxbiA8PCAyN24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgcm9sZSBzdWJzY3JpcHRpb25zIHRoYXQgY2FuIGJlIHB1cmNoYXNlZC4gKi9cbiAgcm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZTogMW4gPDwgMzNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgcm9sZSBzdWJzY3JpcHRpb25zLiAqL1xuICByb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQ6IDFuIDw8IDM0bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBjcmVhdGVkIHNvdW5kYm9hcmQgc291bmRzLiAqL1xuICBzb3VuZGJvYXJkOiAxbiA8PCAyNW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aWNrZXRlZCBldmVudHMgKi9cbiAgdGlja2V0ZWRFdmVudHNFbmFibGVkOiAxbiA8PCAyMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIHZhbml0eSBVUkwgKi9cbiAgdmFuaXR5VXJsOiAxbiA8PCA3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiAxbiA8PCA4bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIHZpcFJlZ2lvbnM6IDFuIDw8IDZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIHdlbGNvbWVTY3JlZW5FbmFibGVkOiAxbiA8PCAxOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCBncmFkaWVudCBjb2xvcnMgdG8gcm9sZXMgKi9cbiAgZW5oYW5jZWRSb2xlQ29sb3JzOiAxbiA8PCAzNW4sXG59XG5cbmV4cG9ydCBjbGFzcyBHdWlsZFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB7XG4gIGNvbnN0cnVjdG9yKGd1aWxkT3JUb2dnbGVzQmlnaW50OiBEaXNjb3JkR3VpbGQgfCBiaWdpbnQpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGd1aWxkT3JUb2dnbGVzQmlnaW50ID09PSAnYmlnaW50JykgdGhpcy5iaXRmaWVsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBndWlsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgICAvLyBDYXVzZSBkaXNjb3JkIGJlIHNtYXJ0IGxpa2UgdGhhdFxuICAgICAgaWYgKCFndWlsZC5mZWF0dXJlcykgZ3VpbGQuZmVhdHVyZXMgPSBbXVxuXG4gICAgICBpZiAoZ3VpbGQub3duZXIpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm93bmVyKVxuICAgICAgaWYgKGd1aWxkLndpZGdldF9lbmFibGVkKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS53aWRnZXRFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmxhcmdlKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5sYXJnZSlcbiAgICAgIGlmIChndWlsZC51bmF2YWlsYWJsZSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudW5hdmFpbGFibGUpXG4gICAgICBpZiAoZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZClcblxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQW5pbWF0ZWRCYW5uZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hbmltYXRlZEJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFuaW1hdGVkSWNvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkSWNvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQXV0b01vZGVyYXRpb24pKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hdXRvTW9kZXJhdGlvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNvbW11bml0eSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmNvbW11bml0eSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5DcmVhdG9yU3RvcmVQYWdlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvclN0b3JlUGFnZSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkRldmVsb3BlclN1cHBvcnRTZXJ2ZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5kZXZlbG9wZXJTdXBwb3J0U2VydmVyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRGlzY292ZXJhYmxlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZGlzY292ZXJhYmxlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRmVhdHVyYWJsZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmZlYXR1cmFibGUpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVzRGlzYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVzRGlzYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVTcGxhc2gpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVTcGxhc2gpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5NZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm1lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTW9yZVNvdW5kYm9hcmQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5tb3JlU291bmRib2FyZClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLk1vcmVTdGlja2VycykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm1vcmVTdGlja2VycylcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLk5ld3MpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5uZXdzKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUGFydG5lcmVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucGFydG5lcmVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUHJldmlld0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5wcmV2aWV3RW5hYmxlZClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLlJhaWRBbGVydHNEaXNhYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJhaWRBbGVydHNEaXNhYmxlZClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLlJvbGVJY29ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJvbGVJY29ucylcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5yb2xlU3Vic2NyaXB0aW9uc0F2YWlsYWJsZUZvclB1cmNoYXNlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuU291bmRib2FyZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnNvdW5kYm9hcmQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5UaWNrZXRlZEV2ZW50c0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS50aWNrZXRlZEV2ZW50c0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WYW5pdHlVcmwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS52YW5pdHlVcmwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WZXJpZmllZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZlcmlmaWVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVmlwUmVnaW9ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZpcFJlZ2lvbnMpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5XZWxjb21lU2NyZWVuRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLndlbGNvbWVTY3JlZW5FbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRW5oYW5jZWRSb2xlQ29sb3JzKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZW5oYW5jZWRSb2xlQ29sb3JzKVxuICAgIH1cbiAgfVxuXG4gIGdldCBmZWF0dXJlcygpOiBHdWlsZEZlYXR1cmVLZXlzW10ge1xuICAgIGNvbnN0IGZlYXR1cmVzOiBHdWlsZEZlYXR1cmVLZXlzW10gPSBbXVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAgaWYgKCFmZWF0dXJlTmFtZXMuaW5jbHVkZXMoa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpKSBjb250aW51ZVxuICAgICAgaWYgKCFzdXBlci5jb250YWlucyhHdWlsZFRvZ2dsZVtrZXkgYXMgR3VpbGRUb2dnbGVLZXlzXSkpIGNvbnRpbnVlXG5cbiAgICAgIGZlYXR1cmVzLnB1c2goa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYm90IGlzIHRoZSBvd25lciBvZiB0aGUgZ3VpbGQgKi9cbiAgZ2V0IG93bmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnb3duZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICBnZXQgd2lkZ2V0RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dpZGdldEVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgZ2V0IGxhcmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbGFyZ2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBndWlsZCBpcyB1bmF2YWlsYWJsZSBkdWUgdG8gYW4gb3V0YWdlICovXG4gIGdldCB1bmF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3VuYXZhaWxhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgdGhlIGJvb3N0IHByb2dyZXNzIGJhciBlbmFibGVkICovXG4gIGdldCBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gaW52aXRlIHNwbGFzaCBiYWNrZ3JvdW5kICovXG4gIGdldCBpbnZpdGVTcGxhc2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdpbnZpdGVTcGxhc2gnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIGdldCB2aXBSZWdpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndmlwUmVnaW9ucycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSB2YW5pdHkgVVJMICovXG4gIGdldCB2YW5pdHlVcmwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd2YW5pdHlVcmwnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIGdldCB2ZXJpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZlcmlmaWVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBwYXJ0bmVyZWQgKi9cbiAgZ2V0IHBhcnRuZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3BhcnRuZXJlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGVuYWJsZSB3ZWxjb21lIHNjcmVlbiwgTWVtYmVyc2hpcCBTY3JlZW5pbmcsIHN0YWdlIGNoYW5uZWxzIGFuZCBkaXNjb3ZlcnksIGFuZCByZWNlaXZlcyBjb21tdW5pdHkgdXBkYXRlcyAqL1xuICBnZXQgY29tbXVuaXR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnY29tbXVuaXR5JylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBHdWlsZCBoYXMgYmVlbiBzZXQgYXMgYSBzdXBwb3J0IHNlcnZlciBvbiB0aGUgQXBwIERpcmVjdG9yeSAqL1xuICBnZXQgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2RldmVsb3BlclN1cHBvcnRTZXJ2ZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBnZXQgYW5pbWF0ZWRCYW5uZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhbmltYXRlZEJhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBjcmVhdGUgbmV3cyBjaGFubmVscyAqL1xuICBnZXQgbmV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ25ld3MnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGdldCBkaXNjb3ZlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdkaXNjb3ZlcmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZmVhdHVyZWQgaW4gdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgZmVhdHVyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ZlYXR1cmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGljb24gKi9cbiAgZ2V0IGFuaW1hdGVkSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2FuaW1hdGVkSWNvbicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSBndWlsZCBiYW5uZXIgaW1hZ2UgKi9cbiAgZ2V0IGJhbm5lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2Jhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIGdldCB3ZWxjb21lU2NyZWVuRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dlbGNvbWVTY3JlZW5FbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBbTWVtYmVyc2hpcCBTY3JlZW5pbmddKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtZW1iZXJzaGlwLXNjcmVlbmluZy1vYmplY3QpICovXG4gIGdldCBtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgbW9yZSBzb3VuZGJvYXJkIHNvdW5kIHNsb3QgKi9cbiAgZ2V0IG1vcmVTb3VuZGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbW9yZVNvdW5kYm9hcmQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBiZSBwcmV2aWV3ZWQgYmVmb3JlIGpvaW5pbmcgdmlhIE1lbWJlcnNoaXAgU2NyZWVuaW5nIG9yIHRoZSBkaXJlY3RvcnkgKi9cbiAgZ2V0IHByZXZpZXdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncHJldmlld0VuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRpY2tldGVkIGV2ZW50cyAqL1xuICBnZXQgdGlja2V0ZWRFdmVudHNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndGlja2V0ZWRFdmVudHNFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgaW5jcmVhc2VkIGN1c3RvbSBzdGlja2VyIHNsb3RzICovXG4gIGdldCBtb3JlU3RpY2tlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdtb3JlU3RpY2tlcnMnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gc2V0IHJvbGUgaWNvbnMgKi9cbiAgZ2V0IHJvbGVJY29ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3JvbGVJY29ucycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHNldCB1cCBhdXRvIG1vZGVyYXRpb24gcnVsZXMgKi9cbiAgZ2V0IGF1dG9Nb2RlcmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYXV0b01vZGVyYXRpb24nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBwYXVzZWQgaW52aXRlcywgcHJldmVudGluZyBuZXcgdXNlcnMgZnJvbSBqb2luaW5nICovXG4gIGdldCBpbnZpdGVzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdpbnZpdGVzRGlzYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHVzaW5nIHRoZSBvbGQgcGVybWlzc2lvbnMgY29uZmlndXJhdGlvbiBiZWhhdmlvciAqL1xuICBnZXQgYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2FwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIG1vbmV0aXphdGlvbi4gKi9cbiAgZ2V0IGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRoZSByb2xlIHN1YnNjcmlwdGlvbiBwcm9tbyBwYWdlLiAqL1xuICBnZXQgY3JlYXRvclN0b3JlUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2NyZWF0b3JTdG9yZVBhZ2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBkaXNhYmxlZCBhbGVydHMgZm9yIGpvaW4gcmFpZHMgaW4gdGhlIGNvbmZpZ3VyZWQgc2FmZXR5IGFsZXJ0cyBjaGFubmVsICovXG4gIGdldCByYWlkQWxlcnRzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyYWlkQWxlcnRzRGlzYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyByb2xlIHN1YnNjcmlwdGlvbnMgdGhhdCBjYW4gYmUgcHVyY2hhc2VkLiAqL1xuICBnZXQgcm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3JvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHJvbGUgc3Vic2NyaXB0aW9ucy4gKi9cbiAgZ2V0IHJvbGVTdWJzY3JpcHRpb25zRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3JvbGVTdWJzY3JpcHRpb25zRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGNyZWF0ZWQgc291bmRib2FyZCBzb3VuZHMuICovXG4gIGdldCBzb3VuZGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnc291bmRib2FyZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBzZXQgZ3JhZGllbnQgY29sb3JzIHRvIHJvbGVzICovXG4gIGdldCBlbmhhbmNlZFJvbGVDb2xvcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdlbmhhbmNlZFJvbGVDb2xvcnMnKVxuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgcGVybWlzc2lvbnMgZXhpc3QgaW4gdGhpcyAqL1xuICBoYXMocGVybWlzc2lvbnM6IEd1aWxkVG9nZ2xlS2V5cyB8IEd1aWxkVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKEd1aWxkVG9nZ2xlW3Blcm1pc3Npb25zXSlcblxuICAgIHJldHVybiBzdXBlci5jb250YWlucyhwZXJtaXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IChhIHw9IEd1aWxkVG9nZ2xlW2JdKSwgMG4pKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8R3VpbGRUb2dnbGVLZXlzLCBib29sZWFuPiB7XG4gICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAganNvbltrZXldID0gc3VwZXIuY29udGFpbnModmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb24gYXMgUmVjb3JkPEd1aWxkVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBHdWlsZFRvZ2dsZUtleXMgPSBrZXlvZiB0eXBlb2YgR3VpbGRUb2dnbGVcblxuZXhwb3J0IHR5cGUgR3VpbGRGZWF0dXJlS2V5cyA9ICh0eXBlb2YgZmVhdHVyZU5hbWVzKVtudW1iZXJdXG4iXSwibmFtZXMiOlsiR3VpbGRGZWF0dXJlcyIsIlRvZ2dsZUJpdGZpZWxkQmlnaW50IiwiZmVhdHVyZU5hbWVzIiwiR3VpbGRUb2dnbGUiLCJvd25lciIsIndpZGdldEVuYWJsZWQiLCJsYXJnZSIsInVuYXZhaWxhYmxlIiwicHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCIsImFuaW1hdGVkQmFubmVyIiwiYW5pbWF0ZWRJY29uIiwiYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMiIsImF1dG9Nb2RlcmF0aW9uIiwiYmFubmVyIiwiY29tbXVuaXR5IiwiY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwiLCJjcmVhdG9yU3RvcmVQYWdlIiwiZGV2ZWxvcGVyU3VwcG9ydFNlcnZlciIsImRpc2NvdmVyYWJsZSIsImZlYXR1cmFibGUiLCJpbnZpdGVzRGlzYWJsZWQiLCJpbnZpdGVTcGxhc2giLCJtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsIm1vcmVTb3VuZGJvYXJkIiwibW9yZVN0aWNrZXJzIiwibmV3cyIsInBhcnRuZXJlZCIsInByZXZpZXdFbmFibGVkIiwicmFpZEFsZXJ0c0Rpc2FibGVkIiwicm9sZUljb25zIiwicm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSIsInJvbGVTdWJzY3JpcHRpb25zRW5hYmxlZCIsInNvdW5kYm9hcmQiLCJ0aWNrZXRlZEV2ZW50c0VuYWJsZWQiLCJ2YW5pdHlVcmwiLCJ2ZXJpZmllZCIsInZpcFJlZ2lvbnMiLCJ3ZWxjb21lU2NyZWVuRW5hYmxlZCIsImVuaGFuY2VkUm9sZUNvbG9ycyIsIkd1aWxkVG9nZ2xlcyIsImd1aWxkT3JUb2dnbGVzQmlnaW50IiwiYml0ZmllbGQiLCJndWlsZCIsImZlYXR1cmVzIiwiYWRkIiwid2lkZ2V0X2VuYWJsZWQiLCJwcmVtaXVtX3Byb2dyZXNzX2Jhcl9lbmFibGVkIiwiaW5jbHVkZXMiLCJBbmltYXRlZEJhbm5lciIsIkFuaW1hdGVkSWNvbiIsIkFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIiLCJBdXRvTW9kZXJhdGlvbiIsIkJhbm5lciIsIkNvbW11bml0eSIsIkNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsIiwiQ3JlYXRvclN0b3JlUGFnZSIsIkRldmVsb3BlclN1cHBvcnRTZXJ2ZXIiLCJEaXNjb3ZlcmFibGUiLCJGZWF0dXJhYmxlIiwiSW52aXRlc0Rpc2FibGVkIiwiSW52aXRlU3BsYXNoIiwiTWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQiLCJNb3JlU291bmRib2FyZCIsIk1vcmVTdGlja2VycyIsIk5ld3MiLCJQYXJ0bmVyZWQiLCJQcmV2aWV3RW5hYmxlZCIsIlJhaWRBbGVydHNEaXNhYmxlZCIsIlJvbGVJY29ucyIsIlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJSb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJTb3VuZGJvYXJkIiwiVGlja2V0ZWRFdmVudHNFbmFibGVkIiwiVmFuaXR5VXJsIiwiVmVyaWZpZWQiLCJWaXBSZWdpb25zIiwiV2VsY29tZVNjcmVlbkVuYWJsZWQiLCJFbmhhbmNlZFJvbGVDb2xvcnMiLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwiY29udGFpbnMiLCJwdXNoIiwiaGFzIiwicGVybWlzc2lvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWR1Y2UiLCJhIiwiYiIsImxpc3QiLCJqc29uIiwidmFsdWUiLCJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUE0QkEsYUFBYSxRQUFRLG9CQUFtQjtBQUNwRSxTQUFTQyxvQkFBb0IsUUFBUSxzQkFBcUI7QUFFMUQsTUFBTUMsZUFBZTtJQUNuQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxPQUFPLE1BQU1DLGNBQWM7SUFDekIsOENBQThDLEdBQzlDQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ2YseUNBQXlDLEdBQ3pDQyxlQUFlLEVBQUUsSUFBSSxFQUFFO0lBQ3ZCLDZDQUE2QyxHQUM3Q0MsT0FBTyxFQUFFLElBQUksRUFBRTtJQUNmLHVEQUF1RCxHQUN2REMsYUFBYSxFQUFFLElBQUksRUFBRTtJQUNyQix5REFBeUQsR0FDekRDLDJCQUEyQixFQUFFLElBQUksRUFBRTtJQUVuQyxnQ0FBZ0M7SUFDaEMsc0NBQXNDO0lBRXRDLHVFQUF1RSxHQUN2RUMsZ0JBQWdCLEVBQUUsSUFBSSxHQUFHO0lBQ3pCLCtE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
@@ -105,4 +105,4 @@ export class MemberToggles extends ToggleBitfield {
105
105
  }
106
106
  }
107
107
 
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9tZW1iZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEaXNjb3JkTWVtYmVyLCBNZW1iZXJGbGFncyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBtZW1iZXJGbGFncyA9IFsnZGlkUmVqb2luJywgJ3N0YXJ0ZWRPbmJvYXJkaW5nJywgJ2J5cGFzc2VzVmVyaWZpY2F0aW9uJywgJ2NvbXBsZXRlZE9uYm9hcmRpbmcnXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTWVtYmVyVG9nZ2xlID0ge1xuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBkZWFmZW5lZCBpbiB2b2ljZSBjaGFubmVscyAqL1xuICBkZWFmOiAxIDw8IDAsXG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGlzIG11dGVkIGluIHZvaWNlIGNoYW5uZWxzICovXG4gIG11dGU6IDEgPDwgMSxcbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaGFzIG5vdCB5ZXQgcGFzc2VkIHRoZSBndWlsZCdzIE1lbWJlcnNoaXAgU2NyZWVuaW5nIHJlcXVpcmVtZW50cyAqL1xuICBwZW5kaW5nOiAxIDw8IDIsXG5cbiAgLy8gTWVtYmVyIGZsYWdzXG5cbiAgLyoqIE1lbWJlciBoYXMgbGVmdCBhbmQgcmVqb2luZWQgdGhlIGd1aWxkICovXG4gIGRpZFJlam9pbjogMSA8PCAzLFxuICAvKiogTWVtYmVyIGhhcyBjb21wbGV0ZWQgb25ib2FyZGluZyAqL1xuICBzdGFydGVkT25ib2FyZGluZzogMSA8PCA0LFxuICAvKiogTWVtYmVyIGlzIGV4ZW1wdCBmcm9tIGd1aWxkIHZlcmlmaWNhdGlvbiByZXF1aXJlbWVudHMgKi9cbiAgYnlwYXNzZXNWZXJpZmljYXRpb246IDEgPDwgNSxcbiAgLyoqIE1lbWJlciBoYXMgc3RhcnRlZCBvbmJvYXJkaW5nICovXG4gIGNvbXBsZXRlZE9uYm9hcmRpbmc6IDEgPDwgNixcbiAgLyoqIE1lbWJlciBpcyBhIGd1ZXN0IGFuZCBjYW4gb25seSBhY2Nlc3MgdGhlIHZvaWNlIGNoYW5uZWwgdGhleSB3ZXJlIGludml0ZWQgdG8gKi9cbiAgaXNHdWVzdDogMSA8PCA3LFxuICAvKiogTWVtYmVyIGhhcyBzdGFydGVkIFNlcnZlciBHdWlkZSBuZXcgbWVtYmVyIGFjdGlvbnMgKi9cbiAgc3RhcnRlZEhvbWVBY3Rpb25zOiAxIDw8IDgsXG4gIC8qKiBNZW1iZXIgaGFzIGNvbXBsZXRlZCBTZXJ2ZXIgR3VpZGUgbmV3IG1lbWJlciBhY3Rpb25zICovXG4gIGNvbXBsZXRlZEhvbWVBY3Rpb25zOiAxIDw8IDksXG4gIC8qKiBNZW1iZXIncyB1c2VybmFtZSwgZGlzcGxheSBuYW1lLCBvciBuaWNrbmFtZSBpcyBibG9ja2VkIGJ5IEF1dG9Nb2QgKi9cbiAgYXV0b21vZFF1YXJhbnRpbmVkVXNlcm5hbWU6IDEgPDwgMTAsXG4gIC8qKiBNZW1iZXIgaGFzIGRpc21pc3NlZCB0aGUgRE0gc2V0dGluZ3MgdXBzZWxsICovXG4gIGRtU2V0dGluZ3NVcHNlbGxBY2tub3dsZWRnZWQ6IDEgPDwgMTEsXG59XG5cbmV4cG9ydCBjbGFzcyBNZW1iZXJUb2dnbGVzIGV4dGVuZHMgVG9nZ2xlQml0ZmllbGQge1xuICBjb25zdHJ1Y3RvcihtZW1iZXJPclRvZ2dsZXNJbnQ6IFBhcnRpYWw8RGlzY29yZE1lbWJlcj4gfCBudW1iZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIG1lbWJlck9yVG9nZ2xlc0ludCA9PT0gJ251bWJlcicpIHRoaXMuYml0ZmllbGQgPSBtZW1iZXJPclRvZ2dsZXNJbnRcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG1lbWJlck9yVG9nZ2xlc0ludFxuXG4gICAgICBpZiAobWVtYmVyLmRlYWYpIHRoaXMuYWRkKE1lbWJlclRvZ2dsZS5kZWFmKVxuICAgICAgaWYgKG1lbWJlci5tdXRlKSB0aGlzLmFkZChNZW1iZXJUb2dnbGUubXV0ZSlcbiAgICAgIGlmIChtZW1iZXIucGVuZGluZykgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLnBlbmRpbmcpXG5cbiAgICAgIGlmIChtZW1iZXIuZmxhZ3MpIHtcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLkRpZFJlam9pbikgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmRpZFJlam9pbilcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLlN0YXJ0ZWRPbmJvYXJkaW5nKSB0aGlzLmFkZChNZW1iZXJUb2dnbGUuc3RhcnRlZE9uYm9hcmRpbmcpXG4gICAgICAgIGlmIChtZW1iZXIuZmxhZ3MgJiBNZW1iZXJGbGFncy5CeXBhc3Nlc1ZlcmlmaWNhdGlvbikgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmJ5cGFzc2VzVmVyaWZpY2F0aW9uKVxuICAgICAgICBpZiAobWVtYmVyLmZsYWdzICYgTWVtYmVyRmxhZ3MuQ29tcGxldGVkT25ib2FyZGluZykgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmNvbXBsZXRlZE9uYm9hcmRpbmcpXG4gICAgICAgIGlmIChtZW1iZXIuZmxhZ3MgJiBNZW1iZXJGbGFncy5Jc0d1ZXN0KSB0aGlzLmFkZChNZW1iZXJUb2dnbGUuaXNHdWVzdClcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLlN0YXJ0ZWRIb21lQWN0aW9ucykgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLnN0YXJ0ZWRIb21lQWN0aW9ucylcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLkNvbXBsZXRlZEhvbWVBY3Rpb25zKSB0aGlzLmFkZChNZW1iZXJUb2dnbGUuY29tcGxldGVkSG9tZUFjdGlvbnMpXG4gICAgICAgIGlmIChtZW1iZXIuZmxhZ3MgJiBNZW1iZXJGbGFncy5BdXRvbW9kUXVhcmFudGluZWRVc2VybmFtZSkgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lKVxuICAgICAgICBpZiAobWVtYmVyLmZsYWdzICYgTWVtYmVyRmxhZ3MuRG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCkgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmRtU2V0dGluZ3NVcHNlbGxBY2tub3dsZWRnZWQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZsYWdzKCk6IG51bWJlciB7XG4gICAgbGV0IGZsYWdzID0gMFxuXG4gICAgaWYgKHRoaXMuZGlkUmVqb2luKSBmbGFncyB8PSBNZW1iZXJGbGFncy5EaWRSZWpvaW5cbiAgICBpZiAodGhpcy5zdGFydGVkT25ib2FyZGluZykgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuU3RhcnRlZE9uYm9hcmRpbmdcbiAgICBpZiAodGhpcy5ieXBhc3Nlc1ZlcmlmaWNhdGlvbikgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuQnlwYXNzZXNWZXJpZmljYXRpb25cbiAgICBpZiAodGhpcy5jb21wbGV0ZWRPbmJvYXJkaW5nKSBmbGFncyB8PSBNZW1iZXJGbGFncy5Db21wbGV0ZWRPbmJvYXJkaW5nXG4gICAgaWYgKHRoaXMuaXNHdWVzdCkgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuSXNHdWVzdFxuICAgIGlmICh0aGlzLnN0YXJ0ZWRIb21lQWN0aW9ucykgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuU3RhcnRlZEhvbWVBY3Rpb25zXG4gICAgaWYgKHRoaXMuY29tcGxldGVkSG9tZUFjdGlvbnMpIGZsYWdzIHw9IE1lbWJlckZsYWdzLkNvbXBsZXRlZEhvbWVBY3Rpb25zXG4gICAgaWYgKHRoaXMuYXV0b21vZFF1YXJhbnRpbmVkVXNlcm5hbWUpIGZsYWdzIHw9IE1lbWJlckZsYWdzLkF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lXG4gICAgaWYgKHRoaXMuZG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCkgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuRG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZFxuXG4gICAgcmV0dXJuIGZsYWdzXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgdXNlciBiZWxvbmdzIHRvIGFuIE9BdXRoMiBhcHBsaWNhdGlvbiAqL1xuICBnZXQgZGVhZigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2RlYWYnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgbXV0ZWQgaW4gdm9pY2UgY2hhbm5lbHMgKi9cbiAgZ2V0IG11dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdtdXRlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBub3QgeWV0IHBhc3NlZCB0aGUgZ3VpbGQncyBNZW1iZXJzaGlwIFNjcmVlbmluZyByZXF1aXJlbWVudHMgKi9cbiAgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwZW5kaW5nJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaGFzIGxlZnQgYW5kIHJlam9pbmVkIHRoZSBndWlsZCAqL1xuICBnZXQgZGlkUmVqb2luKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZGlkUmVqb2luJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaGFzIGNvbXBsZXRlZCBvbmJvYXJkaW5nICovXG4gIGdldCBzdGFydGVkT25ib2FyZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3N0YXJ0ZWRPbmJvYXJkaW5nJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaXMgZXhlbXB0IGZyb20gZ3VpbGQgdmVyaWZpY2F0aW9uIHJlcXVpcmVtZW50cyAqL1xuICBnZXQgYnlwYXNzZXNWZXJpZmljYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdieXBhc3Nlc1ZlcmlmaWNhdGlvbicpXG4gIH1cblxuICAvKiogTWVtYmVyIGhhcyBzdGFydGVkIG9uYm9hcmRpbmcgKi9cbiAgZ2V0IGNvbXBsZXRlZE9uYm9hcmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdjb21wbGV0ZWRPbmJvYXJkaW5nJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaXMgYSBndWVzdCBhbmQgY2FuIG9ubHkgYWNjZXNzIHRoZSB2b2ljZSBjaGFubmVsIHRoZXkgd2VyZSBpbnZpdGVkIHRvICovXG4gIGdldCBpc0d1ZXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnaXNHdWVzdCcpXG4gIH1cblxuICAvKiogTWVtYmVyIGhhcyBzdGFydGVkIFNlcnZlciBHdWlkZSBuZXcgbWVtYmVyIGFjdGlvbnMgKi9cbiAgZ2V0IHN0YXJ0ZWRIb21lQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3N0YXJ0ZWRIb21lQWN0aW9ucycpXG4gIH1cblxuICAvKiogTWVtYmVyIGhhcyBjb21wbGV0ZWQgU2VydmVyIEd1aWRlIG5ldyBtZW1iZXIgYWN0aW9ucyAqL1xuICBnZXQgY29tcGxldGVkSG9tZUFjdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdjb21wbGV0ZWRIb21lQWN0aW9ucycpXG4gIH1cblxuICAvKiogTWVtYmVyJ3MgdXNlcm5hbWUsIGRpc3BsYXkgbmFtZSwgb3Igbmlja25hbWUgaXMgYmxvY2tlZCBieSBBdXRvTW9kICovXG4gIGdldCBhdXRvbW9kUXVhcmFudGluZWRVc2VybmFtZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2F1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaGFzIGRpc21pc3NlZCB0aGUgRE0gc2V0dGluZ3MgdXBzZWxsICovXG4gIGdldCBkbVNldHRpbmdzVXBzZWxsQWNrbm93bGVkZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCcpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogTWVtYmVyVG9nZ2xlS2V5cyB8IE1lbWJlclRvZ2dsZUtleXNbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwZXJtaXNzaW9ucykpIHJldHVybiBzdXBlci5jb250YWlucyhNZW1iZXJUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gTWVtYmVyVG9nZ2xlW2JdKSwgMCkpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxNZW1iZXJUb2dnbGVLZXlzLCBib29sZWFuPiB7XG4gICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKE1lbWJlclRvZ2dsZSkpIHtcbiAgICAgIGpzb25ba2V5XSA9IHN1cGVyLmNvbnRhaW5zKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBqc29uIGFzIFJlY29yZDxNZW1iZXJUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIE1lbWJlclRvZ2dsZUtleXMgPSBrZXlvZiB0eXBlb2YgTWVtYmVyVG9nZ2xlXG5cbmV4cG9ydCB0eXBlIE1lbWJlckZsYWdzS2V5cyA9ICh0eXBlb2YgbWVtYmVyRmxhZ3MpW251bWJlcl1cbiJdLCJuYW1lcyI6WyJNZW1iZXJGbGFncyIsIlRvZ2dsZUJpdGZpZWxkIiwibWVtYmVyRmxhZ3MiLCJNZW1iZXJUb2dnbGUiLCJkZWFmIiwibXV0ZSIsInBlbmRpbmciLCJkaWRSZWpvaW4iLCJzdGFydGVkT25ib2FyZGluZyIsImJ5cGFzc2VzVmVyaWZpY2F0aW9uIiwiY29tcGxldGVkT25ib2FyZGluZyIsImlzR3Vlc3QiLCJzdGFydGVkSG9tZUFjdGlvbnMiLCJjb21wbGV0ZWRIb21lQWN0aW9ucyIsImF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lIiwiZG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCIsIk1lbWJlclRvZ2dsZXMiLCJjb25zdHJ1Y3RvciIsIm1lbWJlck9yVG9nZ2xlc0ludCIsImJpdGZpZWxkIiwibWVtYmVyIiwiYWRkIiwiZmxhZ3MiLCJEaWRSZWpvaW4iLCJTdGFydGVkT25ib2FyZGluZyIsIkJ5cGFzc2VzVmVyaWZpY2F0aW9uIiwiQ29tcGxldGVkT25ib2FyZGluZyIsIklzR3Vlc3QiLCJTdGFydGVkSG9tZUFjdGlvbnMiLCJDb21wbGV0ZWRIb21lQWN0aW9ucyIsIkF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lIiwiRG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCIsImhhcyIsInBlcm1pc3Npb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFpbnMiLCJyZWR1Y2UiLCJhIiwiYiIsImxpc3QiLCJqc29uIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUE2QkEsV0FBVyxRQUFRLG9CQUFtQjtBQUNuRSxTQUFTQyxjQUFjLFFBQVEsc0JBQXFCO0FBRXBELE1BQU1DLGNBQWM7SUFBQztJQUFhO0lBQXFCO0lBQXdCO0NBQXNCO0FBRXJHLE9BQU8sTUFBTUMsZUFBZTtJQUMxQixtREFBbUQsR0FDbkRDLE1BQU0sS0FBSztJQUNYLGdEQUFnRCxHQUNoREMsTUFBTSxLQUFLO0lBQ1gsc0ZBQXNGLEdBQ3RGQyxTQUFTLEtBQUs7SUFFZCxlQUFlO0lBRWYsMkNBQTJDLEdBQzNDQyxXQUFXLEtBQUs7SUFDaEIsb0NBQW9DLEdBQ3BDQyxtQkFBbUIsS0FBSztJQUN4QiwwREFBMEQsR0FDMURDLHNCQUFzQixLQUFLO0lBQzNCLGtDQUFrQyxHQUNsQ0MscUJBQXFCLEtBQUs7SUFDMUIsaUZBQWlG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
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9tZW1iZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEaXNjb3JkTWVtYmVyLCBNZW1iZXJGbGFncyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBtZW1iZXJGbGFncyA9IFsnZGlkUmVqb2luJywgJ3N0YXJ0ZWRPbmJvYXJkaW5nJywgJ2J5cGFzc2VzVmVyaWZpY2F0aW9uJywgJ2NvbXBsZXRlZE9uYm9hcmRpbmcnXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTWVtYmVyVG9nZ2xlID0ge1xuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBkZWFmZW5lZCBpbiB2b2ljZSBjaGFubmVscyAqL1xuICBkZWFmOiAxIDw8IDAsXG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGlzIG11dGVkIGluIHZvaWNlIGNoYW5uZWxzICovXG4gIG11dGU6IDEgPDwgMSxcbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaGFzIG5vdCB5ZXQgcGFzc2VkIHRoZSBndWlsZCdzIE1lbWJlcnNoaXAgU2NyZWVuaW5nIHJlcXVpcmVtZW50cyAqL1xuICBwZW5kaW5nOiAxIDw8IDIsXG5cbiAgLy8gTWVtYmVyIGZsYWdzXG5cbiAgLyoqIE1lbWJlciBoYXMgbGVmdCBhbmQgcmVqb2luZWQgdGhlIGd1aWxkICovXG4gIGRpZFJlam9pbjogMSA8PCAzLFxuICAvKiogTWVtYmVyIGhhcyBjb21wbGV0ZWQgb25ib2FyZGluZyAqL1xuICBzdGFydGVkT25ib2FyZGluZzogMSA8PCA0LFxuICAvKiogTWVtYmVyIGlzIGV4ZW1wdCBmcm9tIGd1aWxkIHZlcmlmaWNhdGlvbiByZXF1aXJlbWVudHMgKi9cbiAgYnlwYXNzZXNWZXJpZmljYXRpb246IDEgPDwgNSxcbiAgLyoqIE1lbWJlciBoYXMgc3RhcnRlZCBvbmJvYXJkaW5nICovXG4gIGNvbXBsZXRlZE9uYm9hcmRpbmc6IDEgPDwgNixcbiAgLyoqIE1lbWJlciBpcyBhIGd1ZXN0IGFuZCBjYW4gb25seSBhY2Nlc3MgdGhlIHZvaWNlIGNoYW5uZWwgdGhleSB3ZXJlIGludml0ZWQgdG8gKi9cbiAgaXNHdWVzdDogMSA8PCA3LFxuICAvKiogTWVtYmVyIGhhcyBzdGFydGVkIFNlcnZlciBHdWlkZSBuZXcgbWVtYmVyIGFjdGlvbnMgKi9cbiAgc3RhcnRlZEhvbWVBY3Rpb25zOiAxIDw8IDgsXG4gIC8qKiBNZW1iZXIgaGFzIGNvbXBsZXRlZCBTZXJ2ZXIgR3VpZGUgbmV3IG1lbWJlciBhY3Rpb25zICovXG4gIGNvbXBsZXRlZEhvbWVBY3Rpb25zOiAxIDw8IDksXG4gIC8qKiBNZW1iZXIncyB1c2VybmFtZSwgZGlzcGxheSBuYW1lLCBvciBuaWNrbmFtZSBpcyBibG9ja2VkIGJ5IEF1dG9Nb2QgKi9cbiAgYXV0b21vZFF1YXJhbnRpbmVkVXNlcm5hbWU6IDEgPDwgMTAsXG4gIC8qKiBNZW1iZXIgaGFzIGRpc21pc3NlZCB0aGUgRE0gc2V0dGluZ3MgdXBzZWxsICovXG4gIGRtU2V0dGluZ3NVcHNlbGxBY2tub3dsZWRnZWQ6IDEgPDwgMTEsXG59XG5cbmV4cG9ydCBjbGFzcyBNZW1iZXJUb2dnbGVzIGV4dGVuZHMgVG9nZ2xlQml0ZmllbGQge1xuICBjb25zdHJ1Y3RvcihtZW1iZXJPclRvZ2dsZXNJbnQ6IFBhcnRpYWw8RGlzY29yZE1lbWJlcj4gfCBudW1iZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIG1lbWJlck9yVG9nZ2xlc0ludCA9PT0gJ251bWJlcicpIHRoaXMuYml0ZmllbGQgPSBtZW1iZXJPclRvZ2dsZXNJbnRcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG1lbWJlck9yVG9nZ2xlc0ludFxuXG4gICAgICBpZiAobWVtYmVyLmRlYWYpIHRoaXMuYWRkKE1lbWJlclRvZ2dsZS5kZWFmKVxuICAgICAgaWYgKG1lbWJlci5tdXRlKSB0aGlzLmFkZChNZW1iZXJUb2dnbGUubXV0ZSlcbiAgICAgIGlmIChtZW1iZXIucGVuZGluZykgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLnBlbmRpbmcpXG5cbiAgICAgIGlmIChtZW1iZXIuZmxhZ3MpIHtcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLkRpZFJlam9pbikgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmRpZFJlam9pbilcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLlN0YXJ0ZWRPbmJvYXJkaW5nKSB0aGlzLmFkZChNZW1iZXJUb2dnbGUuc3RhcnRlZE9uYm9hcmRpbmcpXG4gICAgICAgIGlmIChtZW1iZXIuZmxhZ3MgJiBNZW1iZXJGbGFncy5CeXBhc3Nlc1ZlcmlmaWNhdGlvbikgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmJ5cGFzc2VzVmVyaWZpY2F0aW9uKVxuICAgICAgICBpZiAobWVtYmVyLmZsYWdzICYgTWVtYmVyRmxhZ3MuQ29tcGxldGVkT25ib2FyZGluZykgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmNvbXBsZXRlZE9uYm9hcmRpbmcpXG4gICAgICAgIGlmIChtZW1iZXIuZmxhZ3MgJiBNZW1iZXJGbGFncy5Jc0d1ZXN0KSB0aGlzLmFkZChNZW1iZXJUb2dnbGUuaXNHdWVzdClcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLlN0YXJ0ZWRIb21lQWN0aW9ucykgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLnN0YXJ0ZWRIb21lQWN0aW9ucylcbiAgICAgICAgaWYgKG1lbWJlci5mbGFncyAmIE1lbWJlckZsYWdzLkNvbXBsZXRlZEhvbWVBY3Rpb25zKSB0aGlzLmFkZChNZW1iZXJUb2dnbGUuY29tcGxldGVkSG9tZUFjdGlvbnMpXG4gICAgICAgIGlmIChtZW1iZXIuZmxhZ3MgJiBNZW1iZXJGbGFncy5BdXRvbW9kUXVhcmFudGluZWRVc2VybmFtZSkgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lKVxuICAgICAgICBpZiAobWVtYmVyLmZsYWdzICYgTWVtYmVyRmxhZ3MuRG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCkgdGhpcy5hZGQoTWVtYmVyVG9nZ2xlLmRtU2V0dGluZ3NVcHNlbGxBY2tub3dsZWRnZWQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZsYWdzKCk6IG51bWJlciB7XG4gICAgbGV0IGZsYWdzID0gMFxuXG4gICAgaWYgKHRoaXMuZGlkUmVqb2luKSBmbGFncyB8PSBNZW1iZXJGbGFncy5EaWRSZWpvaW5cbiAgICBpZiAodGhpcy5zdGFydGVkT25ib2FyZGluZykgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuU3RhcnRlZE9uYm9hcmRpbmdcbiAgICBpZiAodGhpcy5ieXBhc3Nlc1ZlcmlmaWNhdGlvbikgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuQnlwYXNzZXNWZXJpZmljYXRpb25cbiAgICBpZiAodGhpcy5jb21wbGV0ZWRPbmJvYXJkaW5nKSBmbGFncyB8PSBNZW1iZXJGbGFncy5Db21wbGV0ZWRPbmJvYXJkaW5nXG4gICAgaWYgKHRoaXMuaXNHdWVzdCkgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuSXNHdWVzdFxuICAgIGlmICh0aGlzLnN0YXJ0ZWRIb21lQWN0aW9ucykgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuU3RhcnRlZEhvbWVBY3Rpb25zXG4gICAgaWYgKHRoaXMuY29tcGxldGVkSG9tZUFjdGlvbnMpIGZsYWdzIHw9IE1lbWJlckZsYWdzLkNvbXBsZXRlZEhvbWVBY3Rpb25zXG4gICAgaWYgKHRoaXMuYXV0b21vZFF1YXJhbnRpbmVkVXNlcm5hbWUpIGZsYWdzIHw9IE1lbWJlckZsYWdzLkF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lXG4gICAgaWYgKHRoaXMuZG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCkgZmxhZ3MgfD0gTWVtYmVyRmxhZ3MuRG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZFxuXG4gICAgcmV0dXJuIGZsYWdzXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgdXNlciBiZWxvbmdzIHRvIGFuIE9BdXRoMiBhcHBsaWNhdGlvbiAqL1xuICBnZXQgZGVhZigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2RlYWYnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgbXV0ZWQgaW4gdm9pY2UgY2hhbm5lbHMgKi9cbiAgZ2V0IG11dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdtdXRlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBub3QgeWV0IHBhc3NlZCB0aGUgZ3VpbGQncyBNZW1iZXJzaGlwIFNjcmVlbmluZyByZXF1aXJlbWVudHMgKi9cbiAgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwZW5kaW5nJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaGFzIGxlZnQgYW5kIHJlam9pbmVkIHRoZSBndWlsZCAqL1xuICBnZXQgZGlkUmVqb2luKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZGlkUmVqb2luJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaGFzIGNvbXBsZXRlZCBvbmJvYXJkaW5nICovXG4gIGdldCBzdGFydGVkT25ib2FyZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3N0YXJ0ZWRPbmJvYXJkaW5nJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaXMgZXhlbXB0IGZyb20gZ3VpbGQgdmVyaWZpY2F0aW9uIHJlcXVpcmVtZW50cyAqL1xuICBnZXQgYnlwYXNzZXNWZXJpZmljYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdieXBhc3Nlc1ZlcmlmaWNhdGlvbicpXG4gIH1cblxuICAvKiogTWVtYmVyIGhhcyBzdGFydGVkIG9uYm9hcmRpbmcgKi9cbiAgZ2V0IGNvbXBsZXRlZE9uYm9hcmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdjb21wbGV0ZWRPbmJvYXJkaW5nJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaXMgYSBndWVzdCBhbmQgY2FuIG9ubHkgYWNjZXNzIHRoZSB2b2ljZSBjaGFubmVsIHRoZXkgd2VyZSBpbnZpdGVkIHRvICovXG4gIGdldCBpc0d1ZXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnaXNHdWVzdCcpXG4gIH1cblxuICAvKiogTWVtYmVyIGhhcyBzdGFydGVkIFNlcnZlciBHdWlkZSBuZXcgbWVtYmVyIGFjdGlvbnMgKi9cbiAgZ2V0IHN0YXJ0ZWRIb21lQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3N0YXJ0ZWRIb21lQWN0aW9ucycpXG4gIH1cblxuICAvKiogTWVtYmVyIGhhcyBjb21wbGV0ZWQgU2VydmVyIEd1aWRlIG5ldyBtZW1iZXIgYWN0aW9ucyAqL1xuICBnZXQgY29tcGxldGVkSG9tZUFjdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdjb21wbGV0ZWRIb21lQWN0aW9ucycpXG4gIH1cblxuICAvKiogTWVtYmVyJ3MgdXNlcm5hbWUsIGRpc3BsYXkgbmFtZSwgb3Igbmlja25hbWUgaXMgYmxvY2tlZCBieSBBdXRvTW9kICovXG4gIGdldCBhdXRvbW9kUXVhcmFudGluZWRVc2VybmFtZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2F1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lJylcbiAgfVxuXG4gIC8qKiBNZW1iZXIgaGFzIGRpc21pc3NlZCB0aGUgRE0gc2V0dGluZ3MgdXBzZWxsICovXG4gIGdldCBkbVNldHRpbmdzVXBzZWxsQWNrbm93bGVkZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCcpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogTWVtYmVyVG9nZ2xlS2V5cyB8IE1lbWJlclRvZ2dsZUtleXNbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwZXJtaXNzaW9ucykpIHJldHVybiBzdXBlci5jb250YWlucyhNZW1iZXJUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gTWVtYmVyVG9nZ2xlW2JdKSwgMCkpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxNZW1iZXJUb2dnbGVLZXlzLCBib29sZWFuPiB7XG4gICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKE1lbWJlclRvZ2dsZSkpIHtcbiAgICAgIGpzb25ba2V5XSA9IHN1cGVyLmNvbnRhaW5zKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBqc29uIGFzIFJlY29yZDxNZW1iZXJUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIE1lbWJlclRvZ2dsZUtleXMgPSBrZXlvZiB0eXBlb2YgTWVtYmVyVG9nZ2xlXG5cbmV4cG9ydCB0eXBlIE1lbWJlckZsYWdzS2V5cyA9ICh0eXBlb2YgbWVtYmVyRmxhZ3MpW251bWJlcl1cbiJdLCJuYW1lcyI6WyJNZW1iZXJGbGFncyIsIlRvZ2dsZUJpdGZpZWxkIiwibWVtYmVyRmxhZ3MiLCJNZW1iZXJUb2dnbGUiLCJkZWFmIiwibXV0ZSIsInBlbmRpbmciLCJkaWRSZWpvaW4iLCJzdGFydGVkT25ib2FyZGluZyIsImJ5cGFzc2VzVmVyaWZpY2F0aW9uIiwiY29tcGxldGVkT25ib2FyZGluZyIsImlzR3Vlc3QiLCJzdGFydGVkSG9tZUFjdGlvbnMiLCJjb21wbGV0ZWRIb21lQWN0aW9ucyIsImF1dG9tb2RRdWFyYW50aW5lZFVzZXJuYW1lIiwiZG1TZXR0aW5nc1Vwc2VsbEFja25vd2xlZGdlZCIsIk1lbWJlclRvZ2dsZXMiLCJtZW1iZXJPclRvZ2dsZXNJbnQiLCJiaXRmaWVsZCIsIm1lbWJlciIsImFkZCIsImZsYWdzIiwiRGlkUmVqb2luIiwiU3RhcnRlZE9uYm9hcmRpbmciLCJCeXBhc3Nlc1ZlcmlmaWNhdGlvbiIsIkNvbXBsZXRlZE9uYm9hcmRpbmciLCJJc0d1ZXN0IiwiU3RhcnRlZEhvbWVBY3Rpb25zIiwiQ29tcGxldGVkSG9tZUFjdGlvbnMiLCJBdXRvbW9kUXVhcmFudGluZWRVc2VybmFtZSIsIkRtU2V0dGluZ3NVcHNlbGxBY2tub3dsZWRnZWQiLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsImNvbnRhaW5zIiwicmVkdWNlIiwiYSIsImIiLCJsaXN0IiwianNvbiIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBNkJBLFdBQVcsUUFBUSxvQkFBbUI7QUFDbkUsU0FBU0MsY0FBYyxRQUFRLHNCQUFxQjtBQUVwRCxNQUFNQyxjQUFjO0lBQUM7SUFBYTtJQUFxQjtJQUF3QjtDQUFzQjtBQUVyRyxPQUFPLE1BQU1DLGVBQWU7SUFDMUIsbURBQW1ELEdBQ25EQyxNQUFNLEtBQUs7SUFDWCxnREFBZ0QsR0FDaERDLE1BQU0sS0FBSztJQUNYLHNGQUFzRixHQUN0RkMsU0FBUyxLQUFLO0lBRWQsZUFBZTtJQUVmLDJDQUEyQyxHQUMzQ0MsV0FBVyxLQUFLO0lBQ2hCLG9DQUFvQyxHQUNwQ0MsbUJBQW1CLEtBQUs7SUFDeEIsMERBQTBELEdBQzFEQyxzQkFBc0IsS0FBSztJQUMzQixrQ0FBa0MsR0FDbENDLHFCQUFxQixLQUFLO0lBQzFCLGlGQUFpRixHQUNqRkMsU0FBUyxL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
@@ -52,4 +52,4 @@ export class RoleToggles extends ToggleBitfield {
52
52
  }
53
53
  }
54
54
 
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9yb2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFJvbGUgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi9Ub2dnbGVCaXRmaWVsZC5qcydcblxuZXhwb3J0IGNvbnN0IFJvbGVUb2dnbGUgPSB7XG4gIC8qKiBJZiB0aGlzIHJvbGUgaXMgc2hvd2VkIHNlcGFyYXRlbHkgaW4gdGhlIHVzZXIgbGlzdGluZyAqL1xuICBob2lzdDogMSA8PCAwLFxuICAvKiogV2hldGhlciB0aGlzIHJvbGUgaXMgbWFuYWdlZCBieSBhbiBpbnRlZ3JhdGlvbiAqL1xuICBtYW5hZ2VkOiAxIDw8IDEsXG4gIC8qKiBXaGV0aGVyIHRoaXMgcm9sZSBpcyBtZW50aW9uYWJsZSAqL1xuICBtZW50aW9uYWJsZTogMSA8PCAyLFxuICAvKiogV2hldGhlciB0aGlzIGlzIHRoZSBndWlsZHMgcHJlbWl1bSBzdWJzY3JpYmVyIHJvbGUgKi9cbiAgcHJlbWl1bVN1YnNjcmliZXI6IDEgPDwgMyxcbiAgLyoqIFdoZXRoZXIgdGhpcyByb2xlIGlzIGF2YWlsYWJsZSBmb3IgcHVyY2hhc2UuICovXG4gIGF2YWlsYWJsZUZvclB1cmNoYXNlOiAxIDw8IDQsXG4gIC8qKiBXaGV0aGVyIHRoaXMgcm9sZSBpcyBhdmFpbGFibGUgZm9yIGd1aWxkIGNvbm5lY3Rpb25zLiAqL1xuICBndWlsZENvbm5lY3Rpb25zOiAxIDw8IDUsXG59XG5cbmV4cG9ydCBjbGFzcyBSb2xlVG9nZ2xlcyBleHRlbmRzIFRvZ2dsZUJpdGZpZWxkIHtcbiAgY29uc3RydWN0b3Iocm9sZU9yVG9nZ2xlc0ludDogRGlzY29yZFJvbGUgfCBudW1iZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIHJvbGVPclRvZ2dsZXNJbnQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gcm9sZU9yVG9nZ2xlc0ludFxuICAgIGVsc2Uge1xuICAgICAgY29uc3Qgcm9sZSA9IHJvbGVPclRvZ2dsZXNJbnRcblxuICAgICAgaWYgKHJvbGUuaG9pc3QpIHRoaXMuYWRkKFJvbGVUb2dnbGUuaG9pc3QpXG4gICAgICBpZiAocm9sZS5tYW5hZ2VkKSB0aGlzLmFkZChSb2xlVG9nZ2xlLm1hbmFnZWQpXG4gICAgICBpZiAocm9sZS5tZW50aW9uYWJsZSkgdGhpcy5hZGQoUm9sZVRvZ2dsZS5tZW50aW9uYWJsZSlcbiAgICAgIGlmIChyb2xlLnRhZ3M/LnByZW1pdW1fc3Vic2NyaWJlciA9PT0gbnVsbCkgdGhpcy5hZGQoUm9sZVRvZ2dsZS5wcmVtaXVtU3Vic2NyaWJlcilcbiAgICAgIGlmIChyb2xlLnRhZ3M/LmF2YWlsYWJsZV9mb3JfcHVyY2hhc2UgPT09IG51bGwpIHRoaXMuYWRkKFJvbGVUb2dnbGUuYXZhaWxhYmxlRm9yUHVyY2hhc2UpXG4gICAgICBpZiAocm9sZS50YWdzPy5ndWlsZF9jb25uZWN0aW9ucyA9PT0gbnVsbCkgdGhpcy5hZGQoUm9sZVRvZ2dsZS5ndWlsZENvbm5lY3Rpb25zKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBJZiB0aGlzIHJvbGUgaXMgc2hvd2VkIHNlcGFyYXRlbHkgaW4gdGhlIHVzZXIgbGlzdGluZyAqL1xuICBnZXQgaG9pc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdob2lzdCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHJvbGUgaXMgbWFuYWdlZCBieSBhbiBpbnRlZ3JhdGlvbiAqL1xuICBnZXQgbWFuYWdlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21hbmFnZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyByb2xlIGlzIG1lbnRpb25hYmxlICovXG4gIGdldCBtZW50aW9uYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21lbnRpb25hYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgdGhlIGd1aWxkcyBwcmVtaXVtIHN1YnNjcmliZXIgcm9sZSAqL1xuICBnZXQgcHJlbWl1bVN1YnNjcmliZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwcmVtaXVtU3Vic2NyaWJlcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHJvbGUgaXMgYXZhaWxhYmxlIGZvciBwdXJjaGFzZS4gKi9cbiAgZ2V0IGF2YWlsYWJsZUZvclB1cmNoYXNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYXZhaWxhYmxlRm9yUHVyY2hhc2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGd1aWxkJ3MgbGlua2VkIHJvbGUuICovXG4gIGdldCBndWlsZENvbm5lY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZ3VpbGRDb25uZWN0aW9ucycpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogUm9sZVRvZ2dsZUtleXMgfCBSb2xlVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKFJvbGVUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gUm9sZVRvZ2dsZVtiXSksIDApKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8Um9sZVRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoUm9sZVRvZ2dsZSkpIHtcbiAgICAgIGpzb25ba2V5XSA9IHN1cGVyLmNvbnRhaW5zKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBqc29uIGFzIFJlY29yZDxSb2xlVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBSb2xlVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBSb2xlVG9nZ2xlXG4iXSwibmFtZXMiOlsiVG9nZ2xlQml0ZmllbGQiLCJSb2xlVG9nZ2xlIiwiaG9pc3QiLCJtYW5hZ2VkIiwibWVudGlvbmFibGUiLCJwcmVtaXVtU3Vic2NyaWJlciIsImF2YWlsYWJsZUZvclB1cmNoYXNlIiwiZ3VpbGRDb25uZWN0aW9ucyIsIlJvbGVUb2dnbGVzIiwiY29uc3RydWN0b3IiLCJyb2xlT3JUb2dnbGVzSW50IiwiYml0ZmllbGQiLCJyb2xlIiwiYWRkIiwidGFncyIsInByZW1pdW1fc3Vic2NyaWJlciIsImF2YWlsYWJsZV9mb3JfcHVyY2hhc2UiLCJndWlsZF9jb25uZWN0aW9ucyIsImhhcyIsInBlcm1pc3Npb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFpbnMiLCJyZWR1Y2UiLCJhIiwiYiIsImxpc3QiLCJqc29uIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxjQUFjLFFBQVEsc0JBQXFCO0FBRXBELE9BQU8sTUFBTUMsYUFBYTtJQUN4QiwwREFBMEQsR0FDMURDLE9BQU8sS0FBSztJQUNaLG1EQUFtRCxHQUNuREMsU0FBUyxLQUFLO0lBQ2QscUNBQXFDLEdBQ3JDQyxhQUFhLEtBQUs7SUFDbEIsdURBQXVELEdBQ3ZEQyxtQkFBbUIsS0FBSztJQUN4QixpREFBaUQsR0FDakRDLHNCQUFzQixLQUFLO0lBQzNCLDBEQUEwRCxHQUMxREMsa0JBQWtCLEtBQUs7QUFDekIsRUFBQztBQUVELE9BQU8sTUFBTUMsb0JBQW9CUjtJQUMvQlMsWUFBWUMsZ0JBQXNDLENBQUU7UUFDbEQsS0FBSztRQUVMLElBQUksT0FBT0EscUJBQXFCLFVBQVUsSUFBSSxDQUFDQyxRQUFRLEdBQUdEO2FBQ3JEO1lBQ0gsTUFBTUUsT0FBT0Y7WUFFYixJQUFJRSxLQUFLVixLQUFLLEVBQUUsSUFBSSxDQUFDVyxHQUFHLENBQUNaLFdBQVdDLEtBQUs7WUFDekMsSUFBSVUsS0FBS1QsT0FBTyxFQUFFLElBQUksQ0FBQ1UsR0FBRyxDQUFDWixXQUFXRSxPQUFPO1lBQzdDLElBQUlTLEtBQUtSLFdBQVcsRUFBRSxJQUFJLENBQUNTLEdBQUcsQ0FBQ1osV0FBV0csV0FBVztZQUNyRCxJQUFJUSxLQUFLRSxJQUFJLEVBQUVDLHVCQUF1QixNQUFNLElBQUksQ0FBQ0YsR0FBRyxDQUFDWixXQUFXSSxpQkFBaUI7WUFDakYsSUFBSU8sS0FBS0UsSUFBSSxFQUFFRSwyQkFBMkIsTUFBTSxJQUFJLENBQUNILEdBQUcsQ0FBQ1osV0FBV0ssb0JBQW9CO1lBQ3hGLElBQUlNLEtBQUtFLElBQUksRUFBRUcsc0JBQXNCLE1BQU0sSUFBSSxDQUFDSixHQUFHLENBQUNaLFdBQVdNLGdCQUFnQjtRQUNqRjtJQUNGO0lBRUEsMERBQTBELEdBQzFELElBQUlMLFFBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDZ0IsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsbURBQW1ELEdBQ25ELElBQUlmLFVBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDZSxHQUFHLENBQUM7SUFDbEI7SUFFQSxxQ0FBcUMsR0FDckMsSUFBSWQsY0FBdUI7UUFDekIsT0FBTyxJQUFJLENBQUNjLEdBQUcsQ0FBQztJQUNsQjtJQUVBLHVEQUF1RCxHQUN2RCxJQUFJYixvQkFBNkI7UUFDL0IsT0FBTyxJQUFJLENBQUNhLEdBQUcsQ0FBQztJQUNsQjtJQUVBLGlEQUFpRCxHQUNqRCxJQUFJWix1QkFBZ0M7UUFDbEMsT0FBTyxJQUFJLENBQUNZLEdBQUcsQ0FBQztJQUNsQjtJQUVBLDJDQUEyQyxHQUMzQyxJQUFJWCxtQkFBNEI7UUFDOUIsT0FBTyxJQUFJLENBQUNXLEdBQUcsQ0FBQztJQUNsQjtJQUVBLHdEQUF3RCxHQUN4REEsSUFBSUMsV0FBOEMsRUFBVztRQUMzRCxJQUFJLENBQUNDLE1BQU1DLE9BQU8sQ0FBQ0YsY0FBYyxPQUFPLEtBQUssQ0FBQ0csU0FBU3JCLFVBQVUsQ0FBQ2tCLFlBQVk7UUFFOUUsT0FBTyxLQUFLLENBQUNHLFNBQVNILFlBQVlJLE1BQU0sQ0FBQyxDQUFDQyxHQUFHQyxJQUFPRCxLQUFLdkIsVUFBVSxDQUFDd0IsRUFBRSxFQUFHO0lBQzNFO0lBRUEsaUZBQWlGLEdBQ2pGQyxPQUF3QztRQUN0QyxNQUFNQyxPQUFnQyxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlDLE9BQU9DLE9BQU8sQ0FBQzlCLFlBQWE7WUFDckQwQixJQUFJLENBQUNDLElBQUksR0FBRyxLQUFLLENBQUNOLFNBQVNPO1FBQzdCO1FBRUEsT0FBT0Y7SUFDVDtBQUNGIn0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9yb2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFJvbGUgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi9Ub2dnbGVCaXRmaWVsZC5qcydcblxuZXhwb3J0IGNvbnN0IFJvbGVUb2dnbGUgPSB7XG4gIC8qKiBJZiB0aGlzIHJvbGUgaXMgc2hvd2VkIHNlcGFyYXRlbHkgaW4gdGhlIHVzZXIgbGlzdGluZyAqL1xuICBob2lzdDogMSA8PCAwLFxuICAvKiogV2hldGhlciB0aGlzIHJvbGUgaXMgbWFuYWdlZCBieSBhbiBpbnRlZ3JhdGlvbiAqL1xuICBtYW5hZ2VkOiAxIDw8IDEsXG4gIC8qKiBXaGV0aGVyIHRoaXMgcm9sZSBpcyBtZW50aW9uYWJsZSAqL1xuICBtZW50aW9uYWJsZTogMSA8PCAyLFxuICAvKiogV2hldGhlciB0aGlzIGlzIHRoZSBndWlsZHMgcHJlbWl1bSBzdWJzY3JpYmVyIHJvbGUgKi9cbiAgcHJlbWl1bVN1YnNjcmliZXI6IDEgPDwgMyxcbiAgLyoqIFdoZXRoZXIgdGhpcyByb2xlIGlzIGF2YWlsYWJsZSBmb3IgcHVyY2hhc2UuICovXG4gIGF2YWlsYWJsZUZvclB1cmNoYXNlOiAxIDw8IDQsXG4gIC8qKiBXaGV0aGVyIHRoaXMgcm9sZSBpcyBhdmFpbGFibGUgZm9yIGd1aWxkIGNvbm5lY3Rpb25zLiAqL1xuICBndWlsZENvbm5lY3Rpb25zOiAxIDw8IDUsXG59XG5cbmV4cG9ydCBjbGFzcyBSb2xlVG9nZ2xlcyBleHRlbmRzIFRvZ2dsZUJpdGZpZWxkIHtcbiAgY29uc3RydWN0b3Iocm9sZU9yVG9nZ2xlc0ludDogRGlzY29yZFJvbGUgfCBudW1iZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIHJvbGVPclRvZ2dsZXNJbnQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gcm9sZU9yVG9nZ2xlc0ludFxuICAgIGVsc2Uge1xuICAgICAgY29uc3Qgcm9sZSA9IHJvbGVPclRvZ2dsZXNJbnRcblxuICAgICAgaWYgKHJvbGUuaG9pc3QpIHRoaXMuYWRkKFJvbGVUb2dnbGUuaG9pc3QpXG4gICAgICBpZiAocm9sZS5tYW5hZ2VkKSB0aGlzLmFkZChSb2xlVG9nZ2xlLm1hbmFnZWQpXG4gICAgICBpZiAocm9sZS5tZW50aW9uYWJsZSkgdGhpcy5hZGQoUm9sZVRvZ2dsZS5tZW50aW9uYWJsZSlcbiAgICAgIGlmIChyb2xlLnRhZ3M/LnByZW1pdW1fc3Vic2NyaWJlciA9PT0gbnVsbCkgdGhpcy5hZGQoUm9sZVRvZ2dsZS5wcmVtaXVtU3Vic2NyaWJlcilcbiAgICAgIGlmIChyb2xlLnRhZ3M/LmF2YWlsYWJsZV9mb3JfcHVyY2hhc2UgPT09IG51bGwpIHRoaXMuYWRkKFJvbGVUb2dnbGUuYXZhaWxhYmxlRm9yUHVyY2hhc2UpXG4gICAgICBpZiAocm9sZS50YWdzPy5ndWlsZF9jb25uZWN0aW9ucyA9PT0gbnVsbCkgdGhpcy5hZGQoUm9sZVRvZ2dsZS5ndWlsZENvbm5lY3Rpb25zKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBJZiB0aGlzIHJvbGUgaXMgc2hvd2VkIHNlcGFyYXRlbHkgaW4gdGhlIHVzZXIgbGlzdGluZyAqL1xuICBnZXQgaG9pc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdob2lzdCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHJvbGUgaXMgbWFuYWdlZCBieSBhbiBpbnRlZ3JhdGlvbiAqL1xuICBnZXQgbWFuYWdlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21hbmFnZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyByb2xlIGlzIG1lbnRpb25hYmxlICovXG4gIGdldCBtZW50aW9uYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21lbnRpb25hYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgdGhlIGd1aWxkcyBwcmVtaXVtIHN1YnNjcmliZXIgcm9sZSAqL1xuICBnZXQgcHJlbWl1bVN1YnNjcmliZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwcmVtaXVtU3Vic2NyaWJlcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHJvbGUgaXMgYXZhaWxhYmxlIGZvciBwdXJjaGFzZS4gKi9cbiAgZ2V0IGF2YWlsYWJsZUZvclB1cmNoYXNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYXZhaWxhYmxlRm9yUHVyY2hhc2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGd1aWxkJ3MgbGlua2VkIHJvbGUuICovXG4gIGdldCBndWlsZENvbm5lY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZ3VpbGRDb25uZWN0aW9ucycpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogUm9sZVRvZ2dsZUtleXMgfCBSb2xlVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKFJvbGVUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gUm9sZVRvZ2dsZVtiXSksIDApKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8Um9sZVRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoUm9sZVRvZ2dsZSkpIHtcbiAgICAgIGpzb25ba2V5XSA9IHN1cGVyLmNvbnRhaW5zKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBqc29uIGFzIFJlY29yZDxSb2xlVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBSb2xlVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBSb2xlVG9nZ2xlXG4iXSwibmFtZXMiOlsiVG9nZ2xlQml0ZmllbGQiLCJSb2xlVG9nZ2xlIiwiaG9pc3QiLCJtYW5hZ2VkIiwibWVudGlvbmFibGUiLCJwcmVtaXVtU3Vic2NyaWJlciIsImF2YWlsYWJsZUZvclB1cmNoYXNlIiwiZ3VpbGRDb25uZWN0aW9ucyIsIlJvbGVUb2dnbGVzIiwicm9sZU9yVG9nZ2xlc0ludCIsImJpdGZpZWxkIiwicm9sZSIsImFkZCIsInRhZ3MiLCJwcmVtaXVtX3N1YnNjcmliZXIiLCJhdmFpbGFibGVfZm9yX3B1cmNoYXNlIiwiZ3VpbGRfY29ubmVjdGlvbnMiLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsImNvbnRhaW5zIiwicmVkdWNlIiwiYSIsImIiLCJsaXN0IiwianNvbiIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsY0FBYyxRQUFRLHNCQUFxQjtBQUVwRCxPQUFPLE1BQU1DLGFBQWE7SUFDeEIsMERBQTBELEdBQzFEQyxPQUFPLEtBQUs7SUFDWixtREFBbUQsR0FDbkRDLFNBQVMsS0FBSztJQUNkLHFDQUFxQyxHQUNyQ0MsYUFBYSxLQUFLO0lBQ2xCLHVEQUF1RCxHQUN2REMsbUJBQW1CLEtBQUs7SUFDeEIsaURBQWlELEdBQ2pEQyxzQkFBc0IsS0FBSztJQUMzQiwwREFBMEQsR0FDMURDLGtCQUFrQixLQUFLO0FBQ3pCLEVBQUM7QUFFRCxPQUFPLE1BQU1DLG9CQUFvQlI7SUFDL0IsWUFBWVMsZ0JBQXNDLENBQUU7UUFDbEQsS0FBSztRQUVMLElBQUksT0FBT0EscUJBQXFCLFVBQVUsSUFBSSxDQUFDQyxRQUFRLEdBQUdEO2FBQ3JEO1lBQ0gsTUFBTUUsT0FBT0Y7WUFFYixJQUFJRSxLQUFLVCxLQUFLLEVBQUUsSUFBSSxDQUFDVSxHQUFHLENBQUNYLFdBQVdDLEtBQUs7WUFDekMsSUFBSVMsS0FBS1IsT0FBTyxFQUFFLElBQUksQ0FBQ1MsR0FBRyxDQUFDWCxXQUFXRSxPQUFPO1lBQzdDLElBQUlRLEtBQUtQLFdBQVcsRUFBRSxJQUFJLENBQUNRLEdBQUcsQ0FBQ1gsV0FBV0csV0FBVztZQUNyRCxJQUFJTyxLQUFLRSxJQUFJLEVBQUVDLHVCQUF1QixNQUFNLElBQUksQ0FBQ0YsR0FBRyxDQUFDWCxXQUFXSSxpQkFBaUI7WUFDakYsSUFBSU0sS0FBS0UsSUFBSSxFQUFFRSwyQkFBMkIsTUFBTSxJQUFJLENBQUNILEdBQUcsQ0FBQ1gsV0FBV0ssb0JBQW9CO1lBQ3hGLElBQUlLLEtBQUtFLElBQUksRUFBRUcsc0JBQXNCLE1BQU0sSUFBSSxDQUFDSixHQUFHLENBQUNYLFdBQVdNLGdCQUFnQjtRQUNqRjtJQUNGO0lBRUEsMERBQTBELEdBQzFELElBQUlMLFFBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDZSxHQUFHLENBQUM7SUFDbEI7SUFFQSxtREFBbUQsR0FDbkQsSUFBSWQsVUFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUNjLEdBQUcsQ0FBQztJQUNsQjtJQUVBLHFDQUFxQyxHQUNyQyxJQUFJYixjQUF1QjtRQUN6QixPQUFPLElBQUksQ0FBQ2EsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsdURBQXVELEdBQ3ZELElBQUlaLG9CQUE2QjtRQUMvQixPQUFPLElBQUksQ0FBQ1ksR0FBRyxDQUFDO0lBQ2xCO0lBRUEsaURBQWlELEdBQ2pELElBQUlYLHVCQUFnQztRQUNsQyxPQUFPLElBQUksQ0FBQ1csR0FBRyxDQUFDO0lBQ2xCO0lBRUEsMkNBQTJDLEdBQzNDLElBQUlWLG1CQUE0QjtRQUM5QixPQUFPLElBQUksQ0FBQ1UsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsd0RBQXdELEdBQ3hEQSxJQUFJQyxXQUE4QyxFQUFXO1FBQzNELElBQUksQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDRixjQUFjLE9BQU8sS0FBSyxDQUFDRyxTQUFTcEIsVUFBVSxDQUFDaUIsWUFBWTtRQUU5RSxPQUFPLEtBQUssQ0FBQ0csU0FBU0gsWUFBWUksTUFBTSxDQUFDLENBQUNDLEdBQUdDLElBQU9ELEtBQUt0QixVQUFVLENBQUN1QixFQUFFLEVBQUc7SUFDM0U7SUFFQSxpRkFBaUYsR0FDakZDLE9BQXdDO1FBQ3RDLE1BQU1DLE9BQWdDLENBQUM7UUFDdkMsS0FBSyxNQUFNLENBQUNDLEtBQUtDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDN0IsWUFBYTtZQUNyRHlCLElBQUksQ0FBQ0MsSUFBSSxHQUFHLEtBQUssQ0FBQ04sU0FBU087UUFDN0I7UUFFQSxPQUFPRjtJQUNUO0FBQ0YifQ==
@@ -42,4 +42,4 @@ export class UserToggles extends ToggleBitfield {
42
42
  }
43
43
  }
44
44
 
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy91c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFVzZXIgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi9Ub2dnbGVCaXRmaWVsZC5qcydcblxuZXhwb3J0IGNvbnN0IFVzZXJUb2dnbGUgPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGJlbG9uZ3MgdG8gYW4gT0F1dGgyIGFwcGxpY2F0aW9uICovXG4gIGJvdDogMSA8PCAwLFxuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbiBPZmZpY2lhbCBEaXNjb3JkIFN5c3RlbSB1c2VyIChwYXJ0IG9mIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0pICovXG4gIHN5c3RlbTogMSA8PCAxLFxuICAvKiogV2hldGhlciB0aGUgdXNlciBoYXMgdHdvIGZhY3RvciBlbmFibGVkIG9uIHRoZWlyIGFjY291bnQgKi9cbiAgbWZhRW5hYmxlZDogMSA8PCAyLFxuICAvKiogV2hldGhlciB0aGUgZW1haWwgb24gdGhpcyBhY2NvdW50IGhhcyBiZWVuIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiAxIDw8IDMsXG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyVG9nZ2xlcyBleHRlbmRzIFRvZ2dsZUJpdGZpZWxkIHtcbiAgY29uc3RydWN0b3IodXNlck9yVG9nZ2xlc0ludDogRGlzY29yZFVzZXIgfCBudW1iZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIHVzZXJPclRvZ2dsZXNJbnQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gdXNlck9yVG9nZ2xlc0ludFxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJPclRvZ2dsZXNJbnRcblxuICAgICAgaWYgKHVzZXIuYm90KSB0aGlzLmFkZChVc2VyVG9nZ2xlLmJvdClcbiAgICAgIGlmICh1c2VyLnN5c3RlbSkgdGhpcy5hZGQoVXNlclRvZ2dsZS5zeXN0ZW0pXG4gICAgICBpZiAodXNlci5tZmFfZW5hYmxlZCkgdGhpcy5hZGQoVXNlclRvZ2dsZS5tZmFFbmFibGVkKVxuICAgICAgaWYgKHVzZXIudmVyaWZpZWQpIHRoaXMuYWRkKFVzZXJUb2dnbGUudmVyaWZpZWQpXG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgYmVsb25ncyB0byBhbiBPQXV0aDIgYXBwbGljYXRpb24gKi9cbiAgZ2V0IGJvdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2JvdCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbiBPZmZpY2lhbCBEaXNjb3JkIFN5c3RlbSB1c2VyIChwYXJ0IG9mIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0pICovXG4gIGdldCBzeXN0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdzeXN0ZW0nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaGFzIHR3byBmYWN0b3IgZW5hYmxlZCBvbiB0aGVpciBhY2NvdW50ICovXG4gIGdldCBtZmFFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbWZhRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZW1haWwgb24gdGhpcyBhY2NvdW50IGhhcyBiZWVuIHZlcmlmaWVkICovXG4gIGdldCB2ZXJpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZlcmlmaWVkJylcbiAgfVxuXG4gIC8qKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhlIHBlcm1pc3Npb25zIGV4aXN0IGluIHRoaXMgKi9cbiAgaGFzKHBlcm1pc3Npb25zOiBVc2VyVG9nZ2xlS2V5cyB8IFVzZXJUb2dnbGVLZXlzW10pOiBib29sZWFuIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpKSByZXR1cm4gc3VwZXIuY29udGFpbnMoVXNlclRvZ2dsZVtwZXJtaXNzaW9uc10pXG5cbiAgICByZXR1cm4gc3VwZXIuY29udGFpbnMocGVybWlzc2lvbnMucmVkdWNlKChhLCBiKSA9PiAoYSB8PSBVc2VyVG9nZ2xlW2JdKSwgMCkpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxVc2VyVG9nZ2xlS2V5cywgYm9vbGVhbj4ge1xuICAgIGNvbnN0IGpzb246IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhVc2VyVG9nZ2xlKSkge1xuICAgICAganNvbltrZXldID0gc3VwZXIuY29udGFpbnModmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb24gYXMgUmVjb3JkPFVzZXJUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFVzZXJUb2dnbGVLZXlzID0ga2V5b2YgdHlwZW9mIFVzZXJUb2dnbGVcbiJdLCJuYW1lcyI6WyJUb2dnbGVCaXRmaWVsZCIsIlVzZXJUb2dnbGUiLCJib3QiLCJzeXN0ZW0iLCJtZmFFbmFibGVkIiwidmVyaWZpZWQiLCJVc2VyVG9nZ2xlcyIsImNvbnN0cnVjdG9yIiwidXNlck9yVG9nZ2xlc0ludCIsImJpdGZpZWxkIiwidXNlciIsImFkZCIsIm1mYV9lbmFibGVkIiwiaGFzIiwicGVybWlzc2lvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjb250YWlucyIsInJlZHVjZSIsImEiLCJiIiwibGlzdCIsImpzb24iLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGNBQWMsUUFBUSxzQkFBcUI7QUFFcEQsT0FBTyxNQUFNQyxhQUFhO0lBQ3hCLHNEQUFzRCxHQUN0REMsS0FBSyxLQUFLO0lBQ1YsNEZBQTRGLEdBQzVGQyxRQUFRLEtBQUs7SUFDYiw2REFBNkQsR0FDN0RDLFlBQVksS0FBSztJQUNqQix3REFBd0QsR0FDeERDLFVBQVUsS0FBSztBQUNqQixFQUFDO0FBRUQsT0FBTyxNQUFNQyxvQkFBb0JOO0lBQy9CTyxZQUFZQyxnQkFBc0MsQ0FBRTtRQUNsRCxLQUFLO1FBRUwsSUFBSSxPQUFPQSxxQkFBcUIsVUFBVSxJQUFJLENBQUNDLFFBQVEsR0FBR0Q7YUFDckQ7WUFDSCxNQUFNRSxPQUFPRjtZQUViLElBQUlFLEtBQUtSLEdBQUcsRUFBRSxJQUFJLENBQUNTLEdBQUcsQ0FBQ1YsV0FBV0MsR0FBRztZQUNyQyxJQUFJUSxLQUFLUCxNQUFNLEVBQUUsSUFBSSxDQUFDUSxHQUFHLENBQUNWLFdBQVdFLE1BQU07WUFDM0MsSUFBSU8sS0FBS0UsV0FBVyxFQUFFLElBQUksQ0FBQ0QsR0FBRyxDQUFDVixXQUFXRyxVQUFVO1lBQ3BELElBQUlNLEtBQUtMLFFBQVEsRUFBRSxJQUFJLENBQUNNLEdBQUcsQ0FBQ1YsV0FBV0ksUUFBUTtRQUNqRDtJQUNGO0lBRUEsc0RBQXNELEdBQ3RELElBQUlILE1BQWU7UUFDakIsT0FBTyxJQUFJLENBQUNXLEdBQUcsQ0FBQztJQUNsQjtJQUVBLDRGQUE0RixHQUM1RixJQUFJVixTQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQ1UsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsNkRBQTZELEdBQzdELElBQUlULGFBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDUyxHQUFHLENBQUM7SUFDbEI7SUFFQSx3REFBd0QsR0FDeEQsSUFBSVIsV0FBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUNRLEdBQUcsQ0FBQztJQUNsQjtJQUVBLHdEQUF3RCxHQUN4REEsSUFBSUMsV0FBOEMsRUFBVztRQUMzRCxJQUFJLENBQUNDLE1BQU1DLE9BQU8sQ0FBQ0YsY0FBYyxPQUFPLEtBQUssQ0FBQ0csU0FBU2hCLFVBQVUsQ0FBQ2EsWUFBWTtRQUU5RSxPQUFPLEtBQUssQ0FBQ0csU0FBU0gsWUFBWUksTUFBTSxDQUFDLENBQUNDLEdBQUdDLElBQU9ELEtBQUtsQixVQUFVLENBQUNtQixFQUFFLEVBQUc7SUFDM0U7SUFFQSxpRkFBaUYsR0FDakZDLE9BQXdDO1FBQ3RDLE1BQU1DLE9BQWdDLENBQUM7UUFDdkMsS0FBSyxNQUFNLENBQUNDLEtBQUtDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDekIsWUFBYTtZQUNyRHFCLElBQUksQ0FBQ0MsSUFBSSxHQUFHLEtBQUssQ0FBQ04sU0FBU087UUFDN0I7UUFFQSxPQUFPRjtJQUNUO0FBQ0YifQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy91c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFVzZXIgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi9Ub2dnbGVCaXRmaWVsZC5qcydcblxuZXhwb3J0IGNvbnN0IFVzZXJUb2dnbGUgPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGJlbG9uZ3MgdG8gYW4gT0F1dGgyIGFwcGxpY2F0aW9uICovXG4gIGJvdDogMSA8PCAwLFxuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbiBPZmZpY2lhbCBEaXNjb3JkIFN5c3RlbSB1c2VyIChwYXJ0IG9mIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0pICovXG4gIHN5c3RlbTogMSA8PCAxLFxuICAvKiogV2hldGhlciB0aGUgdXNlciBoYXMgdHdvIGZhY3RvciBlbmFibGVkIG9uIHRoZWlyIGFjY291bnQgKi9cbiAgbWZhRW5hYmxlZDogMSA8PCAyLFxuICAvKiogV2hldGhlciB0aGUgZW1haWwgb24gdGhpcyBhY2NvdW50IGhhcyBiZWVuIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiAxIDw8IDMsXG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyVG9nZ2xlcyBleHRlbmRzIFRvZ2dsZUJpdGZpZWxkIHtcbiAgY29uc3RydWN0b3IodXNlck9yVG9nZ2xlc0ludDogRGlzY29yZFVzZXIgfCBudW1iZXIpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIHVzZXJPclRvZ2dsZXNJbnQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gdXNlck9yVG9nZ2xlc0ludFxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJPclRvZ2dsZXNJbnRcblxuICAgICAgaWYgKHVzZXIuYm90KSB0aGlzLmFkZChVc2VyVG9nZ2xlLmJvdClcbiAgICAgIGlmICh1c2VyLnN5c3RlbSkgdGhpcy5hZGQoVXNlclRvZ2dsZS5zeXN0ZW0pXG4gICAgICBpZiAodXNlci5tZmFfZW5hYmxlZCkgdGhpcy5hZGQoVXNlclRvZ2dsZS5tZmFFbmFibGVkKVxuICAgICAgaWYgKHVzZXIudmVyaWZpZWQpIHRoaXMuYWRkKFVzZXJUb2dnbGUudmVyaWZpZWQpXG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgYmVsb25ncyB0byBhbiBPQXV0aDIgYXBwbGljYXRpb24gKi9cbiAgZ2V0IGJvdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2JvdCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbiBPZmZpY2lhbCBEaXNjb3JkIFN5c3RlbSB1c2VyIChwYXJ0IG9mIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0pICovXG4gIGdldCBzeXN0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdzeXN0ZW0nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaGFzIHR3byBmYWN0b3IgZW5hYmxlZCBvbiB0aGVpciBhY2NvdW50ICovXG4gIGdldCBtZmFFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbWZhRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZW1haWwgb24gdGhpcyBhY2NvdW50IGhhcyBiZWVuIHZlcmlmaWVkICovXG4gIGdldCB2ZXJpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZlcmlmaWVkJylcbiAgfVxuXG4gIC8qKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhlIHBlcm1pc3Npb25zIGV4aXN0IGluIHRoaXMgKi9cbiAgaGFzKHBlcm1pc3Npb25zOiBVc2VyVG9nZ2xlS2V5cyB8IFVzZXJUb2dnbGVLZXlzW10pOiBib29sZWFuIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpKSByZXR1cm4gc3VwZXIuY29udGFpbnMoVXNlclRvZ2dsZVtwZXJtaXNzaW9uc10pXG5cbiAgICByZXR1cm4gc3VwZXIuY29udGFpbnMocGVybWlzc2lvbnMucmVkdWNlKChhLCBiKSA9PiAoYSB8PSBVc2VyVG9nZ2xlW2JdKSwgMCkpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxVc2VyVG9nZ2xlS2V5cywgYm9vbGVhbj4ge1xuICAgIGNvbnN0IGpzb246IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhVc2VyVG9nZ2xlKSkge1xuICAgICAganNvbltrZXldID0gc3VwZXIuY29udGFpbnModmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb24gYXMgUmVjb3JkPFVzZXJUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFVzZXJUb2dnbGVLZXlzID0ga2V5b2YgdHlwZW9mIFVzZXJUb2dnbGVcbiJdLCJuYW1lcyI6WyJUb2dnbGVCaXRmaWVsZCIsIlVzZXJUb2dnbGUiLCJib3QiLCJzeXN0ZW0iLCJtZmFFbmFibGVkIiwidmVyaWZpZWQiLCJVc2VyVG9nZ2xlcyIsInVzZXJPclRvZ2dsZXNJbnQiLCJiaXRmaWVsZCIsInVzZXIiLCJhZGQiLCJtZmFfZW5hYmxlZCIsImhhcyIsInBlcm1pc3Npb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFpbnMiLCJyZWR1Y2UiLCJhIiwiYiIsImxpc3QiLCJqc29uIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxjQUFjLFFBQVEsc0JBQXFCO0FBRXBELE9BQU8sTUFBTUMsYUFBYTtJQUN4QixzREFBc0QsR0FDdERDLEtBQUssS0FBSztJQUNWLDRGQUE0RixHQUM1RkMsUUFBUSxLQUFLO0lBQ2IsNkRBQTZELEdBQzdEQyxZQUFZLEtBQUs7SUFDakIsd0RBQXdELEdBQ3hEQyxVQUFVLEtBQUs7QUFDakIsRUFBQztBQUVELE9BQU8sTUFBTUMsb0JBQW9CTjtJQUMvQixZQUFZTyxnQkFBc0MsQ0FBRTtRQUNsRCxLQUFLO1FBRUwsSUFBSSxPQUFPQSxxQkFBcUIsVUFBVSxJQUFJLENBQUNDLFFBQVEsR0FBR0Q7YUFDckQ7WUFDSCxNQUFNRSxPQUFPRjtZQUViLElBQUlFLEtBQUtQLEdBQUcsRUFBRSxJQUFJLENBQUNRLEdBQUcsQ0FBQ1QsV0FBV0MsR0FBRztZQUNyQyxJQUFJTyxLQUFLTixNQUFNLEVBQUUsSUFBSSxDQUFDTyxHQUFHLENBQUNULFdBQVdFLE1BQU07WUFDM0MsSUFBSU0sS0FBS0UsV0FBVyxFQUFFLElBQUksQ0FBQ0QsR0FBRyxDQUFDVCxXQUFXRyxVQUFVO1lBQ3BELElBQUlLLEtBQUtKLFFBQVEsRUFBRSxJQUFJLENBQUNLLEdBQUcsQ0FBQ1QsV0FBV0ksUUFBUTtRQUNqRDtJQUNGO0lBRUEsc0RBQXNELEdBQ3RELElBQUlILE1BQWU7UUFDakIsT0FBTyxJQUFJLENBQUNVLEdBQUcsQ0FBQztJQUNsQjtJQUVBLDRGQUE0RixHQUM1RixJQUFJVCxTQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQ1MsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsNkRBQTZELEdBQzdELElBQUlSLGFBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDUSxHQUFHLENBQUM7SUFDbEI7SUFFQSx3REFBd0QsR0FDeEQsSUFBSVAsV0FBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUNPLEdBQUcsQ0FBQztJQUNsQjtJQUVBLHdEQUF3RCxHQUN4REEsSUFBSUMsV0FBOEMsRUFBVztRQUMzRCxJQUFJLENBQUNDLE1BQU1DLE9BQU8sQ0FBQ0YsY0FBYyxPQUFPLEtBQUssQ0FBQ0csU0FBU2YsVUFBVSxDQUFDWSxZQUFZO1FBRTlFLE9BQU8sS0FBSyxDQUFDRyxTQUFTSCxZQUFZSSxNQUFNLENBQUMsQ0FBQ0MsR0FBR0MsSUFBT0QsS0FBS2pCLFVBQVUsQ0FBQ2tCLEVBQUUsRUFBRztJQUMzRTtJQUVBLGlGQUFpRixHQUNqRkMsT0FBd0M7UUFDdEMsTUFBTUMsT0FBZ0MsQ0FBQztRQUN2QyxLQUFLLE1BQU0sQ0FBQ0MsS0FBS0MsTUFBTSxJQUFJQyxPQUFPQyxPQUFPLENBQUN4QixZQUFhO1lBQ3JEb0IsSUFBSSxDQUFDQyxJQUFJLEdBQUcsS0FBSyxDQUFDTixTQUFTTztRQUM3QjtRQUVBLE9BQU9GO0lBQ1Q7QUFDRiJ9
@@ -57,4 +57,4 @@ export class VoiceStateToggles extends ToggleBitfield {
57
57
  }
58
58
  }
59
59
 
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy92b2ljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc2NvcmRWb2ljZVN0YXRlIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vVG9nZ2xlQml0ZmllbGQuanMnXG5cbmV4cG9ydCBjb25zdCBWb2ljZVN0YXRlVG9nZ2xlID0ge1xuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgZGVhZmVuZWQgYnkgdGhlIHNlcnZlciAqL1xuICBkZWFmOiAxIDw8IDAsXG4gIC8qKiBXaGV0aGVyIHRoaXMgdXNlciBpcyBtdXRlZCBieSB0aGUgc2VydmVyICovXG4gIG11dGU6IDEgPDwgMSxcbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgZGVhZmVuZWQgKi9cbiAgc2VsZkRlYWY6IDEgPDwgMixcbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgbXV0ZWQgKi9cbiAgc2VsZk11dGU6IDEgPDwgMyxcbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIHN0cmVhbWluZyB1c2luZyBcIkdvIExpdmVcIiAqL1xuICBzZWxmU3RyZWFtOiAxIDw8IDQsXG4gIC8qKiBXaGV0aGVyIHRoaXMgdXNlcidzIGNhbWVyYSBpcyBlbmFibGVkICovXG4gIHNlbGZWaWRlbzogMSA8PCA1LFxuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgbXV0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlciAqL1xuICBzdXBwcmVzczogMSA8PCA2LFxufVxuXG5leHBvcnQgY2xhc3MgVm9pY2VTdGF0ZVRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZCB7XG4gIGNvbnN0cnVjdG9yKHZvaWNlT3JUb2dnbGVzSW50OiBEaXNjb3JkVm9pY2VTdGF0ZSB8IG51bWJlcikge1xuICAgIHN1cGVyKClcblxuICAgIGlmICh0eXBlb2Ygdm9pY2VPclRvZ2dsZXNJbnQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gdm9pY2VPclRvZ2dsZXNJbnRcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHZvaWNlID0gdm9pY2VPclRvZ2dsZXNJbnRcblxuICAgICAgaWYgKHZvaWNlLmRlYWYpIHRoaXMuYWRkKFZvaWNlU3RhdGVUb2dnbGUuZGVhZilcbiAgICAgIGlmICh2b2ljZS5tdXRlKSB0aGlzLmFkZChWb2ljZVN0YXRlVG9nZ2xlLm11dGUpXG4gICAgICBpZiAodm9pY2Uuc2VsZl9kZWFmKSB0aGlzLmFkZChWb2ljZVN0YXRlVG9nZ2xlLnNlbGZEZWFmKVxuICAgICAgaWYgKHZvaWNlLnNlbGZfbXV0ZSkgdGhpcy5hZGQoVm9pY2VTdGF0ZVRvZ2dsZS5zZWxmTXV0ZSlcbiAgICAgIGlmICh2b2ljZS5zZWxmX3N0cmVhbSkgdGhpcy5hZGQoVm9pY2VTdGF0ZVRvZ2dsZS5zZWxmU3RyZWFtKVxuICAgICAgaWYgKHZvaWNlLnNlbGZfdmlkZW8pIHRoaXMuYWRkKFZvaWNlU3RhdGVUb2dnbGUuc2VsZlZpZGVvKVxuICAgICAgaWYgKHZvaWNlLnN1cHByZXNzKSB0aGlzLmFkZChWb2ljZVN0YXRlVG9nZ2xlLnN1cHByZXNzKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgdXNlciBpcyBkZWFmZW5lZCBieSB0aGUgc2VydmVyICovXG4gIGdldCBkZWFmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZGVhZicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgbXV0ZWQgYnkgdGhlIHNlcnZlciAqL1xuICBnZXQgbXV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ211dGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgZGVhZmVuZWQgKi9cbiAgZ2V0IHNlbGZEZWFmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnc2VsZkRlYWYnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgbXV0ZWQgKi9cbiAgZ2V0IHNlbGZNdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnc2VsZk11dGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIHN0cmVhbWluZyB1c2luZyBcIkdvIExpdmVcIiAqL1xuICBnZXQgc2VsZlN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3NlbGZTdHJlYW0nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyJ3MgY2FtZXJhIGlzIGVuYWJsZWQgKi9cbiAgZ2V0IHNlbGZWaWRlbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3NlbGZWaWRlbycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgbXV0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlciAqL1xuICBnZXQgc3VwcHJlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdzdXBwcmVzcycpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogVm9pY2VTdGF0ZVRvZ2dsZUtleXMgfCBWb2ljZVN0YXRlVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKFZvaWNlU3RhdGVUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gVm9pY2VTdGF0ZVRvZ2dsZVtiXSksIDApKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8Vm9pY2VTdGF0ZVRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoVm9pY2VTdGF0ZVRvZ2dsZSkpIHtcbiAgICAgIGpzb25ba2V5XSA9IHN1cGVyLmNvbnRhaW5zKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBqc29uIGFzIFJlY29yZDxWb2ljZVN0YXRlVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBWb2ljZVN0YXRlVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBWb2ljZVN0YXRlVG9nZ2xlXG4iXSwibmFtZXMiOlsiVG9nZ2xlQml0ZmllbGQiLCJWb2ljZVN0YXRlVG9nZ2xlIiwiZGVhZiIsIm11dGUiLCJzZWxmRGVhZiIsInNlbGZNdXRlIiwic2VsZlN0cmVhbSIsInNlbGZWaWRlbyIsInN1cHByZXNzIiwiVm9pY2VTdGF0ZVRvZ2dsZXMiLCJjb25zdHJ1Y3RvciIsInZvaWNlT3JUb2dnbGVzSW50IiwiYml0ZmllbGQiLCJ2b2ljZSIsImFkZCIsInNlbGZfZGVhZiIsInNlbGZfbXV0ZSIsInNlbGZfc3RyZWFtIiwic2VsZl92aWRlbyIsImhhcyIsInBlcm1pc3Npb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFpbnMiLCJyZWR1Y2UiLCJhIiwiYiIsImxpc3QiLCJqc29uIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxjQUFjLFFBQVEsc0JBQXFCO0FBRXBELE9BQU8sTUFBTUMsbUJBQW1CO0lBQzlCLGdEQUFnRCxHQUNoREMsTUFBTSxLQUFLO0lBQ1gsNkNBQTZDLEdBQzdDQyxNQUFNLEtBQUs7SUFDWCwwQ0FBMEMsR0FDMUNDLFVBQVUsS0FBSztJQUNmLHVDQUF1QyxH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
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy92b2ljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc2NvcmRWb2ljZVN0YXRlIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vVG9nZ2xlQml0ZmllbGQuanMnXG5cbmV4cG9ydCBjb25zdCBWb2ljZVN0YXRlVG9nZ2xlID0ge1xuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgZGVhZmVuZWQgYnkgdGhlIHNlcnZlciAqL1xuICBkZWFmOiAxIDw8IDAsXG4gIC8qKiBXaGV0aGVyIHRoaXMgdXNlciBpcyBtdXRlZCBieSB0aGUgc2VydmVyICovXG4gIG11dGU6IDEgPDwgMSxcbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgZGVhZmVuZWQgKi9cbiAgc2VsZkRlYWY6IDEgPDwgMixcbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgbXV0ZWQgKi9cbiAgc2VsZk11dGU6IDEgPDwgMyxcbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIHN0cmVhbWluZyB1c2luZyBcIkdvIExpdmVcIiAqL1xuICBzZWxmU3RyZWFtOiAxIDw8IDQsXG4gIC8qKiBXaGV0aGVyIHRoaXMgdXNlcidzIGNhbWVyYSBpcyBlbmFibGVkICovXG4gIHNlbGZWaWRlbzogMSA8PCA1LFxuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgbXV0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlciAqL1xuICBzdXBwcmVzczogMSA8PCA2LFxufVxuXG5leHBvcnQgY2xhc3MgVm9pY2VTdGF0ZVRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZCB7XG4gIGNvbnN0cnVjdG9yKHZvaWNlT3JUb2dnbGVzSW50OiBEaXNjb3JkVm9pY2VTdGF0ZSB8IG51bWJlcikge1xuICAgIHN1cGVyKClcblxuICAgIGlmICh0eXBlb2Ygdm9pY2VPclRvZ2dsZXNJbnQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gdm9pY2VPclRvZ2dsZXNJbnRcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHZvaWNlID0gdm9pY2VPclRvZ2dsZXNJbnRcblxuICAgICAgaWYgKHZvaWNlLmRlYWYpIHRoaXMuYWRkKFZvaWNlU3RhdGVUb2dnbGUuZGVhZilcbiAgICAgIGlmICh2b2ljZS5tdXRlKSB0aGlzLmFkZChWb2ljZVN0YXRlVG9nZ2xlLm11dGUpXG4gICAgICBpZiAodm9pY2Uuc2VsZl9kZWFmKSB0aGlzLmFkZChWb2ljZVN0YXRlVG9nZ2xlLnNlbGZEZWFmKVxuICAgICAgaWYgKHZvaWNlLnNlbGZfbXV0ZSkgdGhpcy5hZGQoVm9pY2VTdGF0ZVRvZ2dsZS5zZWxmTXV0ZSlcbiAgICAgIGlmICh2b2ljZS5zZWxmX3N0cmVhbSkgdGhpcy5hZGQoVm9pY2VTdGF0ZVRvZ2dsZS5zZWxmU3RyZWFtKVxuICAgICAgaWYgKHZvaWNlLnNlbGZfdmlkZW8pIHRoaXMuYWRkKFZvaWNlU3RhdGVUb2dnbGUuc2VsZlZpZGVvKVxuICAgICAgaWYgKHZvaWNlLnN1cHByZXNzKSB0aGlzLmFkZChWb2ljZVN0YXRlVG9nZ2xlLnN1cHByZXNzKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgdXNlciBpcyBkZWFmZW5lZCBieSB0aGUgc2VydmVyICovXG4gIGdldCBkZWFmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZGVhZicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgbXV0ZWQgYnkgdGhlIHNlcnZlciAqL1xuICBnZXQgbXV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ211dGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgZGVhZmVuZWQgKi9cbiAgZ2V0IHNlbGZEZWFmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnc2VsZkRlYWYnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIGxvY2FsbHkgbXV0ZWQgKi9cbiAgZ2V0IHNlbGZNdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnc2VsZk11dGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyIGlzIHN0cmVhbWluZyB1c2luZyBcIkdvIExpdmVcIiAqL1xuICBnZXQgc2VsZlN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3NlbGZTdHJlYW0nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB1c2VyJ3MgY2FtZXJhIGlzIGVuYWJsZWQgKi9cbiAgZ2V0IHNlbGZWaWRlbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3NlbGZWaWRlbycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIHVzZXIgaXMgbXV0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlciAqL1xuICBnZXQgc3VwcHJlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdzdXBwcmVzcycpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogVm9pY2VTdGF0ZVRvZ2dsZUtleXMgfCBWb2ljZVN0YXRlVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKFZvaWNlU3RhdGVUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gVm9pY2VTdGF0ZVRvZ2dsZVtiXSksIDApKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8Vm9pY2VTdGF0ZVRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoVm9pY2VTdGF0ZVRvZ2dsZSkpIHtcbiAgICAgIGpzb25ba2V5XSA9IHN1cGVyLmNvbnRhaW5zKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBqc29uIGFzIFJlY29yZDxWb2ljZVN0YXRlVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBWb2ljZVN0YXRlVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBWb2ljZVN0YXRlVG9nZ2xlXG4iXSwibmFtZXMiOlsiVG9nZ2xlQml0ZmllbGQiLCJWb2ljZVN0YXRlVG9nZ2xlIiwiZGVhZiIsIm11dGUiLCJzZWxmRGVhZiIsInNlbGZNdXRlIiwic2VsZlN0cmVhbSIsInNlbGZWaWRlbyIsInN1cHByZXNzIiwiVm9pY2VTdGF0ZVRvZ2dsZXMiLCJ2b2ljZU9yVG9nZ2xlc0ludCIsImJpdGZpZWxkIiwidm9pY2UiLCJhZGQiLCJzZWxmX2RlYWYiLCJzZWxmX211dGUiLCJzZWxmX3N0cmVhbSIsInNlbGZfdmlkZW8iLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsImNvbnRhaW5zIiwicmVkdWNlIiwiYSIsImIiLCJsaXN0IiwianNvbiIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsY0FBYyxRQUFRLHNCQUFxQjtBQUVwRCxPQUFPLE1BQU1DLG1CQUFtQjtJQUM5QixnREFBZ0QsR0FDaERDLE1BQU0sS0FBSztJQUNYLDZDQUE2QyxHQUM3Q0MsTUFBTSxLQUFLO0lBQ1gsMENBQTBDLEdBQzFDQyxVQUFVLEtBQUs7SUFDZix1Q0FBdUMsR0FDdkNDLFVBQVUsS0FB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