@discordeno/rest 19.0.0-next.8bb91fa → 19.0.0-next.8bbc61d

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 (49) hide show
  1. package/README.md +15 -1
  2. package/dist/cjs/index.cjs +25 -0
  3. package/dist/cjs/invalidBucket.cjs +86 -0
  4. package/dist/cjs/manager.cjs +1498 -0
  5. package/dist/cjs/queue.cjs +164 -0
  6. package/dist/cjs/routes.cjs +562 -0
  7. package/dist/cjs/types.cjs +6 -0
  8. package/dist/cjs/typings/routes.cjs +6 -0
  9. package/dist/esm/index.js +8 -0
  10. package/dist/esm/invalidBucket.js +82 -0
  11. package/dist/esm/manager.js +1456 -0
  12. package/dist/esm/queue.js +154 -0
  13. package/dist/esm/routes.js +552 -0
  14. package/dist/esm/types.js +3 -0
  15. package/dist/esm/typings/routes.js +3 -0
  16. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  17. package/dist/types/index.d.ts.map +1 -0
  18. package/dist/{invalidBucket.d.ts → types/invalidBucket.d.ts} +11 -7
  19. package/dist/types/invalidBucket.d.ts.map +1 -0
  20. package/dist/types/manager.d.ts +12 -0
  21. package/dist/types/manager.d.ts.map +1 -0
  22. package/dist/{queue.d.ts → types/queue.d.ts} +12 -1
  23. package/dist/types/queue.d.ts.map +1 -0
  24. package/dist/types/routes.d.ts +3 -0
  25. package/dist/types/routes.d.ts.map +1 -0
  26. package/dist/{types.d.ts → types/types.d.ts} +657 -164
  27. package/dist/types/types.d.ts.map +1 -0
  28. package/dist/{typings → types/typings}/routes.d.ts +54 -8
  29. package/dist/types/typings/routes.d.ts.map +1 -0
  30. package/package.json +34 -31
  31. package/dist/index.d.ts.map +0 -1
  32. package/dist/index.js +0 -7
  33. package/dist/index.js.map +0 -1
  34. package/dist/invalidBucket.d.ts.map +0 -1
  35. package/dist/invalidBucket.js +0 -84
  36. package/dist/invalidBucket.js.map +0 -1
  37. package/dist/manager.d.ts +0 -3
  38. package/dist/manager.d.ts.map +0 -1
  39. package/dist/manager.js +0 -1464
  40. package/dist/manager.js.map +0 -1
  41. package/dist/queue.d.ts.map +0 -1
  42. package/dist/queue.js +0 -153
  43. package/dist/queue.js.map +0 -1
  44. package/dist/types.d.ts.map +0 -1
  45. package/dist/types.js +0 -3
  46. package/dist/types.js.map +0 -1
  47. package/dist/typings/routes.d.ts.map +0 -1
  48. package/dist/typings/routes.js +0 -3
  49. package/dist/typings/routes.js.map +0 -1
@@ -0,0 +1,562 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createRoutes", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createRoutes;
9
+ }
10
+ });
11
+ const _utils = require("@discordeno/utils");
12
+ function createRoutes() {
13
+ return {
14
+ webhooks: {
15
+ id: (webhookId)=>{
16
+ return `/webhooks/${webhookId}`;
17
+ },
18
+ message: (webhookId, token, messageId, options)=>{
19
+ let url = `/webhooks/${webhookId}/${token}/messages/${messageId}?`;
20
+ if (options) {
21
+ if (options.threadId) url += `thread_id=${options.threadId}`;
22
+ }
23
+ return url;
24
+ },
25
+ original: (webhookId, token, options)=>{
26
+ let url = `/webhooks/${webhookId}/${token}/messages/@original?`;
27
+ if (options) {
28
+ if (options.threadId) url += `thread_id=${options.threadId}`;
29
+ }
30
+ return url;
31
+ },
32
+ webhook: (webhookId, token, options)=>{
33
+ let url = `/webhooks/${webhookId}/${token}?`;
34
+ if (options) {
35
+ if (options?.wait !== undefined) url += `wait=${options.wait.toString()}`;
36
+ if (options.threadId) url += `thread_id=${options.threadId}`;
37
+ }
38
+ return url;
39
+ }
40
+ },
41
+ // Channel Endpoints
42
+ channels: {
43
+ bulk: (channelId)=>{
44
+ return `/channels/${channelId}/messages/bulk-delete`;
45
+ },
46
+ dm: ()=>{
47
+ return '/users/@me/channels';
48
+ },
49
+ dmRecipient: (channelId, userId)=>{
50
+ return `/channels/${channelId}/recipients/${userId}`;
51
+ },
52
+ pin: (channelId, messageId)=>{
53
+ return `/channels/${channelId}/pins/${messageId}`;
54
+ },
55
+ pins: (channelId)=>{
56
+ return `/channels/${channelId}/pins`;
57
+ },
58
+ reactions: {
59
+ bot: (channelId, messageId, emoji)=>{
60
+ return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/@me`;
61
+ },
62
+ user: (channelId, messageId, emoji, userId)=>{
63
+ return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/${userId}`;
64
+ },
65
+ all: (channelId, messageId)=>{
66
+ return `/channels/${channelId}/messages/${messageId}/reactions`;
67
+ },
68
+ emoji: (channelId, messageId, emoji, options)=>{
69
+ let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
70
+ if (options) {
71
+ if (options.type) url += `type=${options.type}`;
72
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
73
+ if (options.after) url += `&after=${options.after}`;
74
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
75
+ if (options.limit) url += `&limit=${options.limit}`;
76
+ }
77
+ return url;
78
+ },
79
+ message: (channelId, messageId, emoji, options)=>{
80
+ let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
81
+ if (options) {
82
+ if (options.after) url += `after=${options.after}`;
83
+ if (options.limit) url += `&limit=${options.limit}`;
84
+ }
85
+ return url;
86
+ }
87
+ },
88
+ webhooks: (channelId)=>{
89
+ return `/channels/${channelId}/webhooks`;
90
+ },
91
+ channel: (channelId)=>{
92
+ return `/channels/${channelId}`;
93
+ },
94
+ follow: (channelId)=>{
95
+ return `/channels/${channelId}/followers`;
96
+ },
97
+ forum: (channelId)=>{
98
+ return `/channels/${channelId}/threads`;
99
+ },
100
+ invites: (channelId)=>{
101
+ return `/channels/${channelId}/invites`;
102
+ },
103
+ message: (channelId, messageId)=>{
104
+ return `/channels/${channelId}/messages/${messageId}`;
105
+ },
106
+ messages: (channelId, options)=>{
107
+ let url = `/channels/${channelId}/messages?`;
108
+ if (options) {
109
+ if ((0, _utils.isGetMessagesAfter)(options) && options.after) {
110
+ url += `after=${options.after}`;
111
+ }
112
+ if ((0, _utils.isGetMessagesBefore)(options) && options.before) {
113
+ url += `&before=${options.before}`;
114
+ }
115
+ if ((0, _utils.isGetMessagesAround)(options) && options.around) {
116
+ url += `&around=${options.around}`;
117
+ }
118
+ if ((0, _utils.isGetMessagesLimit)(options) && options.limit) {
119
+ url += `&limit=${options.limit}`;
120
+ }
121
+ }
122
+ return url;
123
+ },
124
+ overwrite: (channelId, overwriteId)=>{
125
+ return `/channels/${channelId}/permissions/${overwriteId}`;
126
+ },
127
+ crosspost: (channelId, messageId)=>{
128
+ return `/channels/${channelId}/messages/${messageId}/crosspost`;
129
+ },
130
+ stages: ()=>{
131
+ return '/stage-instances';
132
+ },
133
+ stage: (channelId)=>{
134
+ return `/stage-instances/${channelId}`;
135
+ },
136
+ // Thread Endpoints
137
+ threads: {
138
+ message: (channelId, messageId)=>{
139
+ return `/channels/${channelId}/messages/${messageId}/threads`;
140
+ },
141
+ all: (channelId)=>{
142
+ return `/channels/${channelId}/threads`;
143
+ },
144
+ active: (guildId)=>{
145
+ return `/guilds/${guildId}/threads/active`;
146
+ },
147
+ members: (channelId)=>{
148
+ return `/channels/${channelId}/thread-members`;
149
+ },
150
+ me: (channelId)=>{
151
+ return `/channels/${channelId}/thread-members/@me`;
152
+ },
153
+ user: (channelId, userId)=>{
154
+ return `/channels/${channelId}/thread-members/${userId}`;
155
+ },
156
+ archived: (channelId)=>{
157
+ return `/channels/${channelId}/threads/archived`;
158
+ },
159
+ public: (channelId, options)=>{
160
+ let url = `/channels/${channelId}/threads/archived/public?`;
161
+ if (options) {
162
+ if (options.before) {
163
+ url += `before=${new Date(options.before).toISOString()}`;
164
+ }
165
+ if (options.limit) url += `&limit=${options.limit}`;
166
+ }
167
+ return url;
168
+ },
169
+ private: (channelId, options)=>{
170
+ let url = `/channels/${channelId}/threads/archived/private?`;
171
+ if (options) {
172
+ if (options.before) {
173
+ url += `before=${new Date(options.before).toISOString()}`;
174
+ }
175
+ if (options.limit) url += `&limit=${options.limit}`;
176
+ }
177
+ return url;
178
+ },
179
+ joined: (channelId, options)=>{
180
+ let url = `/channels/${channelId}/users/@me/threads/archived/private?`;
181
+ if (options) {
182
+ if (options.before) {
183
+ url += `before=${new Date(options.before).toISOString()}`;
184
+ }
185
+ if (options.limit) url += `&limit=${options.limit}`;
186
+ }
187
+ return url;
188
+ }
189
+ },
190
+ typing: (channelId)=>{
191
+ return `/channels/${channelId}/typing`;
192
+ },
193
+ polls: {
194
+ votes: (channelId, messageId, answerId, options)=>{
195
+ let url = `/channels/${channelId}/polls/${messageId}/answers/${answerId}?`;
196
+ if (options) {
197
+ if (options.after) url += `after=${options.after}`;
198
+ if (options.limit) url += `&limit=${options.limit}`;
199
+ }
200
+ return url;
201
+ },
202
+ expire: (channelId, messageId)=>{
203
+ return `/channels/${channelId}/polls/${messageId}/expire`;
204
+ }
205
+ }
206
+ },
207
+ // Guild Endpoints
208
+ guilds: {
209
+ all: ()=>{
210
+ return '/guilds';
211
+ },
212
+ userGuilds: (options)=>{
213
+ let url = '/users/@me/guilds?';
214
+ if (options) {
215
+ if (options.after) url += `after=${options.after}`;
216
+ if (options.before) url += `&before=${options.before}`;
217
+ if (options.limit) url += `&limit=${options.limit}`;
218
+ if (options.withCounts) url += `&with_counts=${options.withCounts}`;
219
+ }
220
+ return url;
221
+ },
222
+ auditlogs: (guildId, options)=>{
223
+ let url = `/guilds/${guildId}/audit-logs?`;
224
+ if (options) {
225
+ if (options.actionType) url += `action_type=${options.actionType}`;
226
+ if (options.before) url += `&before=${options.before}`;
227
+ if (options.after) url += `&after=${options.after}`;
228
+ if (options.limit) url += `&limit=${options.limit}`;
229
+ if (options.userId) url += `&user_id=${options.userId}`;
230
+ }
231
+ return url;
232
+ },
233
+ automod: {
234
+ rule: (guildId, ruleId)=>{
235
+ return `/guilds/${guildId}/auto-moderation/rules/${ruleId}`;
236
+ },
237
+ rules: (guildId)=>{
238
+ return `/guilds/${guildId}/auto-moderation/rules`;
239
+ }
240
+ },
241
+ channels: (guildId)=>{
242
+ return `/guilds/${guildId}/channels`;
243
+ },
244
+ emoji: (guildId, emojiId)=>{
245
+ return `/guilds/${guildId}/emojis/${emojiId}`;
246
+ },
247
+ emojis: (guildId)=>{
248
+ return `/guilds/${guildId}/emojis`;
249
+ },
250
+ events: {
251
+ events: (guildId, withUserCount)=>{
252
+ let url = `/guilds/${guildId}/scheduled-events?`;
253
+ if (withUserCount !== undefined) {
254
+ url += `with_user_count=${withUserCount.toString()}`;
255
+ }
256
+ return url;
257
+ },
258
+ event: (guildId, eventId, withUserCount)=>{
259
+ let url = `/guilds/${guildId}/scheduled-events/${eventId}`;
260
+ if (withUserCount !== undefined) {
261
+ url += `with_user_count=${withUserCount.toString()}`;
262
+ }
263
+ return url;
264
+ },
265
+ users: (guildId, eventId, options)=>{
266
+ let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`;
267
+ if (options) {
268
+ if (options.limit !== undefined) url += `limit=${options.limit}`;
269
+ if (options.withMember !== undefined) {
270
+ url += `&with_member=${options.withMember.toString()}`;
271
+ }
272
+ if (options.after !== undefined) url += `&after=${options.after}`;
273
+ if (options.before !== undefined) url += `&before=${options.before}`;
274
+ }
275
+ return url;
276
+ }
277
+ },
278
+ guild (guildId, withCounts) {
279
+ let url = `/guilds/${guildId}?`;
280
+ if (withCounts !== undefined) {
281
+ url += `with_counts=${withCounts.toString()}`;
282
+ }
283
+ return url;
284
+ },
285
+ integration (guildId, integrationId) {
286
+ return `/guilds/${guildId}/integrations/${integrationId}`;
287
+ },
288
+ integrations: (guildId)=>{
289
+ return `/guilds/${guildId}/integrations?include_applications=true`;
290
+ },
291
+ invite (inviteCode, options) {
292
+ let url = `/invites/${inviteCode}?`;
293
+ if (options) {
294
+ if (options.withCounts !== undefined) {
295
+ url += `with_counts=${options.withCounts.toString()}`;
296
+ }
297
+ if (options.withExpiration !== undefined) {
298
+ url += `&with_expiration=${options.withExpiration.toString()}`;
299
+ }
300
+ if (options.scheduledEventId) {
301
+ url += `&guild_scheduled_event_id=${options.scheduledEventId}`;
302
+ }
303
+ }
304
+ return url;
305
+ },
306
+ invites: (guildId)=>{
307
+ return `/guilds/${guildId}/invites`;
308
+ },
309
+ leave: (guildId)=>{
310
+ return `/users/@me/guilds/${guildId}`;
311
+ },
312
+ members: {
313
+ ban: (guildId, userId)=>{
314
+ return `/guilds/${guildId}/bans/${userId}`;
315
+ },
316
+ bans: (guildId, options)=>{
317
+ let url = `/guilds/${guildId}/bans?`;
318
+ if (options) {
319
+ if (options.limit) url += `limit=${options.limit}`;
320
+ if (options.after) url += `&after=${options.after}`;
321
+ if (options.before) url += `&before=${options.before}`;
322
+ }
323
+ return url;
324
+ },
325
+ bulkBan: (guildId)=>{
326
+ return `/guilds/${guildId}/bulk-ban`;
327
+ },
328
+ bot: (guildId)=>{
329
+ return `/guilds/${guildId}/members/@me`;
330
+ },
331
+ member: (guildId, userId)=>{
332
+ return `/guilds/${guildId}/members/${userId}`;
333
+ },
334
+ currentMember: (guildId)=>{
335
+ return `/users/@me/guilds/${guildId}/member`;
336
+ },
337
+ members: (guildId, options)=>{
338
+ let url = `/guilds/${guildId}/members?`;
339
+ if (options !== undefined) {
340
+ if (options.limit) url += `limit=${options.limit}`;
341
+ if (options.after) url += `&after=${options.after}`;
342
+ }
343
+ return url;
344
+ },
345
+ search: (guildId, query, options)=>{
346
+ let url = `/guilds/${guildId}/members/search?query=${encodeURIComponent(query)}`;
347
+ if (options) {
348
+ if (options.limit !== undefined) url += `&limit=${options.limit}`;
349
+ }
350
+ return url;
351
+ },
352
+ prune: (guildId, options)=>{
353
+ let url = `/guilds/${guildId}/prune?`;
354
+ if (options) {
355
+ if (options.days) url += `days=${options.days}`;
356
+ if (Array.isArray(options.includeRoles)) {
357
+ url += `&include_roles=${options.includeRoles.join(',')}`;
358
+ } else if (options.includeRoles) {
359
+ url += `&include_roles=${options.includeRoles}`;
360
+ }
361
+ }
362
+ return url;
363
+ }
364
+ },
365
+ mfa: (guildId)=>`/guilds/${guildId}/mfa`,
366
+ preview: (guildId)=>{
367
+ return `/guilds/${guildId}/preview`;
368
+ },
369
+ prune: (guildId, options)=>{
370
+ let url = `/guilds/${guildId}/prune?`;
371
+ if (options) {
372
+ if (options.days) url += `days=${options.days}`;
373
+ if (Array.isArray(options.includeRoles)) {
374
+ url += `&include_roles=${options.includeRoles.join(',')}`;
375
+ } else if (options.includeRoles) {
376
+ url += `&include_roles=${options.includeRoles}`;
377
+ }
378
+ }
379
+ return url;
380
+ },
381
+ roles: {
382
+ one: (guildId, roleId)=>{
383
+ return `/guilds/${guildId}/roles/${roleId}`;
384
+ },
385
+ all: (guildId)=>{
386
+ return `/guilds/${guildId}/roles`;
387
+ },
388
+ member: (guildId, memberId, roleId)=>{
389
+ return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`;
390
+ }
391
+ },
392
+ stickers: (guildId)=>{
393
+ return `/guilds/${guildId}/stickers`;
394
+ },
395
+ sticker: (guildId, stickerId)=>{
396
+ return `/guilds/${guildId}/stickers/${stickerId}`;
397
+ },
398
+ voice: (guildId, userId)=>{
399
+ return `/guilds/${guildId}/voice-states/${userId ?? '@me'}`;
400
+ },
401
+ templates: {
402
+ code: (code)=>{
403
+ return `/guilds/templates/${code}`;
404
+ },
405
+ guild: (guildId, code)=>{
406
+ return `/guilds/${guildId}/templates/${code}`;
407
+ },
408
+ all: (guildId)=>{
409
+ return `/guilds/${guildId}/templates`;
410
+ }
411
+ },
412
+ vanity: (guildId)=>{
413
+ return `/guilds/${guildId}/vanity-url`;
414
+ },
415
+ regions: (guildId)=>{
416
+ return `/guilds/${guildId}/regions`;
417
+ },
418
+ webhooks: (guildId)=>{
419
+ return `/guilds/${guildId}/webhooks`;
420
+ },
421
+ welcome: (guildId)=>{
422
+ return `/guilds/${guildId}/welcome-screen`;
423
+ },
424
+ widget: (guildId)=>{
425
+ return `/guilds/${guildId}/widget`;
426
+ },
427
+ widgetJson: (guildId)=>{
428
+ return `/guilds/${guildId}/widget.json`;
429
+ },
430
+ onboarding: (guildId)=>{
431
+ return `/guilds/${guildId}/onboarding`;
432
+ }
433
+ },
434
+ sticker: (stickerId)=>{
435
+ return `/stickers/${stickerId}`;
436
+ },
437
+ regions: ()=>{
438
+ return '/voice/regions';
439
+ },
440
+ // Interaction Endpoints
441
+ interactions: {
442
+ commands: {
443
+ // Application Endpoints
444
+ commands: (applicationId)=>{
445
+ return `/applications/${applicationId}/commands`;
446
+ },
447
+ guilds: {
448
+ all (applicationId, guildId) {
449
+ return `/applications/${applicationId}/guilds/${guildId}/commands`;
450
+ },
451
+ one (applicationId, guildId, commandId, withLocalizations) {
452
+ let url = `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}?`;
453
+ if (withLocalizations !== undefined) {
454
+ url += `with_localizations=${withLocalizations.toString()}`;
455
+ }
456
+ return url;
457
+ }
458
+ },
459
+ permissions: (applicationId, guildId)=>{
460
+ return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`;
461
+ },
462
+ permission: (applicationId, guildId, commandId)=>{
463
+ return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`;
464
+ },
465
+ command: (applicationId, commandId, withLocalizations)=>{
466
+ let url = `/applications/${applicationId}/commands/${commandId}?`;
467
+ if (withLocalizations !== undefined) {
468
+ url += `withLocalizations=${withLocalizations.toString()}`;
469
+ }
470
+ return url;
471
+ }
472
+ },
473
+ responses: {
474
+ // Interaction Endpoints
475
+ callback: (interactionId, token, options)=>{
476
+ return `/interactions/${interactionId}/${token}/callback?with_response=${!!options?.withResponse}`;
477
+ },
478
+ original: (interactionId, token)=>{
479
+ return `/webhooks/${interactionId}/${token}/messages/@original`;
480
+ },
481
+ message: (applicationId, token, messageId)=>{
482
+ return `/webhooks/${applicationId}/${token}/messages/${messageId}`;
483
+ }
484
+ }
485
+ },
486
+ // OAuth2 endpoints
487
+ oauth2: {
488
+ tokenExchange: ()=>{
489
+ return '/oauth2/token';
490
+ },
491
+ tokenRevoke: ()=>{
492
+ return '/oauth2/token/revoke';
493
+ },
494
+ currentAuthorization: ()=>{
495
+ return '/oauth2/@me';
496
+ },
497
+ application: ()=>{
498
+ return '/oauth2/applications/@me';
499
+ },
500
+ connections: ()=>{
501
+ return '/users/@me/connections';
502
+ },
503
+ roleConnections: (applicationId)=>{
504
+ return `/users/@me/applications/${applicationId}/role-connection`;
505
+ }
506
+ },
507
+ monetization: {
508
+ entitlements: (applicationId, options)=>{
509
+ let url = `/applications/${applicationId}/entitlements?`;
510
+ if (options) {
511
+ if (options.after) url += `after=${options.after}`;
512
+ if (options.before) url += `&before=${options.before}`;
513
+ if (options.excludeEnded) url += `&exclude_ended=${options.excludeEnded}`;
514
+ if (options.guildId) url += `&guild_id=${options.guildId}`;
515
+ if (options.limit) url += `&limit=${options.limit}`;
516
+ if (options.skuIds) url += `&sku_ids=${options.skuIds.join(',')}`;
517
+ if (options.userId) url += `&user_id=${options.userId}`;
518
+ }
519
+ return url;
520
+ },
521
+ entitlement: (applicationId, entitlementId)=>{
522
+ return `/applications/${applicationId}/entitlements/${entitlementId}`;
523
+ },
524
+ consumeEntitlement: (applicationId, entitlementId)=>{
525
+ return `/applications/${applicationId}/entitlements/${entitlementId}/consume`;
526
+ },
527
+ skus: (applicationId)=>{
528
+ return `/applications/${applicationId}/skus`;
529
+ }
530
+ },
531
+ applicationEmoji (applicationId, emojiId) {
532
+ return `/applications/${applicationId}/emojis/${emojiId}`;
533
+ },
534
+ applicationEmojis (applicationId) {
535
+ return `/applications/${applicationId}/emojis`;
536
+ },
537
+ // User endpoints
538
+ user (userId) {
539
+ return `/users/${userId}`;
540
+ },
541
+ application () {
542
+ return '/applications/@me';
543
+ },
544
+ applicationActivityInstance (applicationId, instanceId) {
545
+ return `/applications/${applicationId}/activity-instances/${instanceId}`;
546
+ },
547
+ currentUser () {
548
+ return '/users/@me';
549
+ },
550
+ gatewayBot () {
551
+ return '/gateway/bot';
552
+ },
553
+ stickerPack (stickerPackId) {
554
+ return `/sticker-packs/${stickerPackId}`;
555
+ },
556
+ stickerPacks () {
557
+ return '/sticker-packs';
558
+ }
559
+ };
560
+ }
561
+
562
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGlzR2V0TWVzc2FnZXNBZnRlciwgaXNHZXRNZXNzYWdlc0Fyb3VuZCwgaXNHZXRNZXNzYWdlc0JlZm9yZSwgaXNHZXRNZXNzYWdlc0xpbWl0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKCk6IFJlc3RSb3V0ZXMge1xuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke3dlYmhvb2tJZH1gXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIG9yaWdpbmFsOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7d2ViaG9va0lkfS8ke3Rva2VufT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtvcHRpb25zLndhaXQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7b3B0aW9ucy50aHJlYWRJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWBcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnXG4gICAgICB9LFxuICAgICAgZG1SZWNpcGllbnQ6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcmVjaXBpZW50cy8ke3VzZXJJZH1gXG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnMvJHttZXNzYWdlSWR9YFxuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnNgXG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vcmVhY3Rpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtb2ppKX0vQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlKSB1cmwgKz0gYHR5cGU9JHtvcHRpb25zLnR5cGV9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS93ZWJob29rc2BcbiAgICAgIH0sXG5cbiAgICAgIGNoYW5uZWw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9YFxuICAgICAgfSxcblxuICAgICAgZm9sbG93OiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9mb2xsb3dlcnNgXG4gICAgICB9LFxuXG4gICAgICBmb3J1bTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgIH0sXG5cbiAgICAgIGludml0ZXM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L2ludml0ZXNgXG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke29wdGlvbnMuYXJvdW5kfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJ3cml0ZTogKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3Blcm1pc3Npb25zLyR7b3ZlcndyaXRlSWR9YFxuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS9jcm9zc3Bvc3RgXG4gICAgICB9LFxuXG4gICAgICBzdGFnZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvc3RhZ2UtaW5zdGFuY2VzJ1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7Y2hhbm5lbElkfWBcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS90aHJlYWRzYFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RocmVhZHMvYWN0aXZlYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZC1tZW1iZXJzYFxuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFyY2hpdmVkOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWRgXG4gICAgICAgIH0sXG4gICAgICAgIHB1YmxpYzogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkL3B1YmxpYz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcml2YXRlOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBqb2luZWQ6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdXNlcnMvQG1lL3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdHlwaW5nOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90eXBpbmdgXG4gICAgICB9LFxuXG4gICAgICBwb2xsczoge1xuICAgICAgICB2b3RlczogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9wb2xscy8ke21lc3NhZ2VJZH0vYW5zd2Vycy8ke2Fuc3dlcklkfT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcG9sbHMvJHttZXNzYWdlSWR9L2V4cGlyZWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcydcbiAgICAgIH0sXG4gICAgICB1c2VyR3VpbGRzOiAob3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gJy91c2Vycy9AbWUvZ3VpbGRzPydcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aENvdW50cykgdXJsICs9IGAmd2l0aF9jb3VudHM9JHtvcHRpb25zLndpdGhDb3VudHN9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGF1ZGl0bG9nczogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXVkaXQtbG9ncz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hY3Rpb25UeXBlKSB1cmwgKz0gYGFjdGlvbl90eXBlPSR7b3B0aW9ucy5hY3Rpb25UeXBlfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgYXV0b21vZDoge1xuICAgICAgICBydWxlOiAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7cnVsZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzYFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9jaGFubmVsc2BcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vZW1vamlzLyR7ZW1vamlJZH1gXG4gICAgICB9LFxuICAgICAgZW1vamlzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9lbW9qaXNgXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGV2ZW50czogKGd1aWxkSWQsIHdpdGhVc2VyQ291bnQ/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc2NoZWR1bGVkLWV2ZW50cz9gXG5cbiAgICAgICAgICBpZiAod2l0aFVzZXJDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfdXNlcl9jb3VudD0ke3dpdGhVc2VyQ291bnQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IChndWlsZElkLCBldmVudElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3NjaGVkdWxlZC1ldmVudHMvJHtldmVudElkfWBcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7d2l0aFVzZXJDb3VudC50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJzOiAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50VXNlcnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZXZlbnRJZH0vdXNlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZ3aXRoX21lbWJlcj0ke29wdGlvbnMud2l0aE1lbWJlci50b1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBndWlsZChndWlsZElkLCB3aXRoQ291bnRzKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9P2BcblxuICAgICAgICBpZiAod2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke3dpdGhDb3VudHMudG9TdHJpbmcoKX1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgaW50ZWdyYXRpb24oZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCkge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9pbnRlZ3JhdGlvbnMvJHtpbnRlZ3JhdGlvbklkfWBcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludGVncmF0aW9ucz9pbmNsdWRlX2FwcGxpY2F0aW9ucz10cnVlYFxuICAgICAgfSxcbiAgICAgIGludml0ZShpbnZpdGVDb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2ludml0ZXMvJHtpbnZpdGVDb2RlfT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF9jb3VudHM9JHtvcHRpb25zLndpdGhDb3VudHMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhFeHBpcmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJndpdGhfZXhwaXJhdGlvbj0ke29wdGlvbnMud2l0aEV4cGlyYXRpb24udG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb25zLnNjaGVkdWxlZEV2ZW50SWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmd1aWxkX3NjaGVkdWxlZF9ldmVudF9pZD0ke29wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZH1gXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGludml0ZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludml0ZXNgXG4gICAgICB9LFxuICAgICAgbGVhdmU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtndWlsZElkfWBcbiAgICAgIH0sXG4gICAgICBtZW1iZXJzOiB7XG4gICAgICAgIGJhbjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2JhbnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBiYW5zOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L2JhbnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgYnVsa0JhbjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9idWxrLWJhbmBcbiAgICAgICAgfSxcbiAgICAgICAgYm90OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvQG1lYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXI6IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzLyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudE1lbWJlcjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVyYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiAoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzL3NlYXJjaD9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeSl9YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9wcnVuZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF5cykgdXJsICs9IGBkYXlzPSR7b3B0aW9ucy5kYXlzfWBcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpfWBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmNsdWRlUm9sZXMpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWZhOiAoZ3VpbGRJZCkgPT4gYC9ndWlsZHMvJHtndWlsZElkfS9tZmFgLFxuICAgICAgcHJldmlldzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJldmlld2BcbiAgICAgIH0sXG4gICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJ1bmU/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZGF5cykgdXJsICs9IGBkYXlzPSR7b3B0aW9ucy5kYXlzfWBcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmluY2x1ZGVSb2xlcykpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJyl9YFxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmNsdWRlUm9sZXMpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtvcHRpb25zLmluY2x1ZGVSb2xlc31gXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHJvbGVzOiB7XG4gICAgICAgIG9uZTogKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JvbGVzLyR7cm9sZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JvbGVzYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXI6IChndWlsZElkLCBtZW1iZXJJZCwgcm9sZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycy8ke21lbWJlcklkfS9yb2xlcy8ke3JvbGVJZH1gXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RpY2tlcnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3N0aWNrZXJzYFxuICAgICAgfSxcbiAgICAgIHN0aWNrZXI6IChndWlsZElkLCBzdGlja2VySWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgICAgfSxcbiAgICAgIHZvaWNlOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3ZvaWNlLXN0YXRlcy8ke3VzZXJJZCA/PyAnQG1lJ31gXG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIGNvZGU6IChjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzL3RlbXBsYXRlcy8ke2NvZGV9YFxuICAgICAgICB9LFxuICAgICAgICBndWlsZDogKGd1aWxkSWQsIGNvZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS90ZW1wbGF0ZXMvJHtjb2RlfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RlbXBsYXRlc2BcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2YW5pdHk6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3Zhbml0eS11cmxgXG4gICAgICB9LFxuICAgICAgcmVnaW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcmVnaW9uc2BcbiAgICAgIH0sXG4gICAgICB3ZWJob29rczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2ViaG9va3NgXG4gICAgICB9LFxuICAgICAgd2VsY29tZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2VsY29tZS1zY3JlZW5gXG4gICAgICB9LFxuICAgICAgd2lkZ2V0OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS93aWRnZXRgXG4gICAgICB9LFxuICAgICAgd2lkZ2V0SnNvbjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0Lmpzb25gXG4gICAgICB9LFxuICAgICAgb25ib2FyZGluZzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vb25ib2FyZGluZ2BcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHN0aWNrZXI6IChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICB9LFxuXG4gICAgcmVnaW9uczogKCkgPT4ge1xuICAgICAgcmV0dXJuICcvdm9pY2UvcmVnaW9ucydcbiAgICB9LFxuXG4gICAgLy8gSW50ZXJhY3Rpb24gRW5kcG9pbnRzXG4gICAgaW50ZXJhY3Rpb25zOiB7XG4gICAgICBjb21tYW5kczoge1xuICAgICAgICAvLyBBcHBsaWNhdGlvbiBFbmRwb2ludHNcbiAgICAgICAgY29tbWFuZHM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vY29tbWFuZHNgXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ3VpbGRzOiB7XG4gICAgICAgICAgYWxsKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzYFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICBvbmUoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkLCB3aXRoTG9jYWxpemF0aW9ucykge1xuICAgICAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZ3VpbGRzLyR7Z3VpbGRJZH0vY29tbWFuZHMvJHtjb21tYW5kSWR9P2BcblxuICAgICAgICAgICAgaWYgKHdpdGhMb2NhbGl6YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGB3aXRoX2xvY2FsaXphdGlvbnM9JHt3aXRoTG9jYWxpemF0aW9ucy50b1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzL3Blcm1pc3Npb25zYFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZ3VpbGRzLyR7Z3VpbGRJZH0vY29tbWFuZHMvJHtjb21tYW5kSWR9L3Blcm1pc3Npb25zYFxuICAgICAgICB9LFxuICAgICAgICBjb21tYW5kOiAoYXBwbGljYXRpb25JZCwgY29tbWFuZElkLCB3aXRoTG9jYWxpemF0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfT9gXG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoTG9jYWxpemF0aW9ucz0ke3dpdGhMb2NhbGl6YXRpb25zLnRvU3RyaW5nKCl9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHJlc3BvbnNlczoge1xuICAgICAgICAvLyBJbnRlcmFjdGlvbiBFbmRwb2ludHNcbiAgICAgICAgY2FsbGJhY2s6IChpbnRlcmFjdGlvbklkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2ludGVyYWN0aW9ucy8ke2ludGVyYWN0aW9uSWR9LyR7dG9rZW59L2NhbGxiYWNrP3dpdGhfcmVzcG9uc2U9JHshIW9wdGlvbnM/LndpdGhSZXNwb25zZX1gXG4gICAgICAgIH0sXG4gICAgICAgIG9yaWdpbmFsOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2ludGVyYWN0aW9uSWR9LyR7dG9rZW59L21lc3NhZ2VzL0BvcmlnaW5hbGBcbiAgICAgICAgfSxcbiAgICAgICAgbWVzc2FnZTogKGFwcGxpY2F0aW9uSWQsIHRva2VuLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2FwcGxpY2F0aW9uSWR9LyR7dG9rZW59L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIE9BdXRoMiBlbmRwb2ludHNcbiAgICBvYXV0aDI6IHtcbiAgICAgIHRva2VuRXhjaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuJ1xuICAgICAgfSxcbiAgICAgIHRva2VuUmV2b2tlOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi90b2tlbi9yZXZva2UnXG4gICAgICB9LFxuICAgICAgY3VycmVudEF1dGhvcml6YXRpb246ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL0BtZSdcbiAgICAgIH0sXG4gICAgICBhcHBsaWNhdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvYXBwbGljYXRpb25zL0BtZSdcbiAgICAgIH0sXG4gICAgICBjb25uZWN0aW9uczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY29ubmVjdGlvbnMnXG4gICAgICB9LFxuICAgICAgcm9sZUNvbm5lY3Rpb25zOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vcm9sZS1jb25uZWN0aW9uYFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgbW9uZXRpemF0aW9uOiB7XG4gICAgICBlbnRpdGxlbWVudHM6IChhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2VudGl0bGVtZW50cz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVFbmRlZCkgdXJsICs9IGAmZXhjbHVkZV9lbmRlZD0ke29wdGlvbnMuZXhjbHVkZUVuZGVkfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5ndWlsZElkKSB1cmwgKz0gYCZndWlsZF9pZD0ke29wdGlvbnMuZ3VpbGRJZH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2t1SWRzKSB1cmwgKz0gYCZza3VfaWRzPSR7b3B0aW9ucy5za3VJZHMuam9pbignLCcpfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgZW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2VudGl0bGVtZW50cy8ke2VudGl0bGVtZW50SWR9YFxuICAgICAgfSxcbiAgICAgIGNvbnN1bWVFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzLyR7ZW50aXRsZW1lbnRJZH0vY29uc3VtZWBcbiAgICAgIH0sXG5cbiAgICAgIHNrdXM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L3NrdXNgXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBhcHBsaWNhdGlvbkVtb2ppKGFwcGxpY2F0aW9uSWQsIGVtb2ppSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2Vtb2ppcy8ke2Vtb2ppSWR9YFxuICAgIH0sXG5cbiAgICBhcHBsaWNhdGlvbkVtb2ppcyhhcHBsaWNhdGlvbklkKSB7XG4gICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbW9qaXNgXG4gICAgfSxcblxuICAgIC8vIFVzZXIgZW5kcG9pbnRzXG4gICAgdXNlcih1c2VySWQpIHtcbiAgICAgIHJldHVybiBgL3VzZXJzLyR7dXNlcklkfWBcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb24oKSB7XG4gICAgICByZXR1cm4gJy9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgIH0sXG5cbiAgICBhcHBsaWNhdGlvbkFjdGl2aXR5SW5zdGFuY2UoYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCkge1xuICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vYWN0aXZpdHktaW5zdGFuY2VzLyR7aW5zdGFuY2VJZH1gXG4gICAgfSxcblxuICAgIGN1cnJlbnRVc2VyKCkge1xuICAgICAgcmV0dXJuICcvdXNlcnMvQG1lJ1xuICAgIH0sXG5cbiAgICBnYXRld2F5Qm90KCkge1xuICAgICAgcmV0dXJuICcvZ2F0ZXdheS9ib3QnXG4gICAgfSxcblxuICAgIHN0aWNrZXJQYWNrKHN0aWNrZXJQYWNrSWQpIHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXItcGFja3MvJHtzdGlja2VyUGFja0lkfWBcbiAgICB9LFxuXG4gICAgc3RpY2tlclBhY2tzKCkge1xuICAgICAgcmV0dXJuICcvc3RpY2tlci1wYWNrcydcbiAgICB9LFxuICB9XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUm91dGVzIiwid2ViaG9va3MiLCJpZCIsIndlYmhvb2tJZCIsIm1lc3NhZ2UiLCJ0b2tlbiIsIm1lc3NhZ2VJZCIsIm9wdGlvbnMiLCJ1cmwiLCJ0aHJlYWRJZCIsIm9yaWdpbmFsIiwid2ViaG9vayIsIndhaXQiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsImNoYW5uZWxzIiwiYnVsayIsImNoYW5uZWxJZCIsImRtIiwiZG1SZWNpcGllbnQiLCJ1c2VySWQiLCJwaW4iLCJwaW5zIiwicmVhY3Rpb25zIiwiYm90IiwiZW1vamkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1c2VyIiwiYWxsIiwidHlwZSIsImFmdGVyIiwibGltaXQiLCJjaGFubmVsIiwiZm9sbG93IiwiZm9ydW0iLCJpbnZpdGVzIiwibWVzc2FnZXMiLCJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJpc0dldE1lc3NhZ2VzQmVmb3JlIiwiYmVmb3JlIiwiaXNHZXRNZXNzYWdlc0Fyb3VuZCIsImFyb3VuZCIsImlzR2V0TWVzc2FnZXNMaW1pdCIsIm92ZXJ3cml0ZSIsIm92ZXJ3cml0ZUlkIiwiY3Jvc3Nwb3N0Iiwic3RhZ2VzIiwic3RhZ2UiLCJ0aHJlYWRzIiwiYWN0aXZlIiwiZ3VpbGRJZCIsIm1lbWJlcnMiLCJtZSIsImFyY2hpdmVkIiwicHVibGljIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwicHJpdmF0ZSIsImpvaW5lZCIsInR5cGluZyIsInBvbGxzIiwidm90ZXMiLCJhbnN3ZXJJZCIsImV4cGlyZSIsImd1aWxkcyIsInVzZXJHdWlsZHMiLCJ3aXRoQ291bnRzIiwiYXVkaXRsb2dzIiwiYWN0aW9uVHlwZSIsImF1dG9tb2QiLCJydWxlIiwicnVsZUlkIiwicnVsZXMiLCJlbW9qaUlkIiwiZW1vamlzIiwiZXZlbnRzIiwid2l0aFVzZXJDb3VudCIsImV2ZW50IiwiZXZlbnRJZCIsInVzZXJzIiwid2l0aE1lbWJlciIsImd1aWxkIiwiaW50ZWdyYXRpb24iLCJpbnRlZ3JhdGlvbklkIiwiaW50ZWdyYXRpb25zIiwiaW52aXRlIiwiaW52aXRlQ29kZSIsIndpdGhFeHBpcmF0aW9uIiwic2NoZWR1bGVkRXZlbnRJZCIsImxlYXZlIiwiYmFuIiwiYmFucyIsImJ1bGtCYW4iLCJtZW1iZXIiLCJjdXJyZW50TWVtYmVyIiwic2VhcmNoIiwicXVlcnkiLCJwcnVuZSIsImRheXMiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlUm9sZXMiLCJqb2luIiwibWZhIiwicHJldmlldyIsInJvbGVzIiwib25lIiwicm9sZUlkIiwibWVtYmVySWQiLCJzdGlja2VycyIsInN0aWNrZXIiLCJzdGlja2VySWQiLCJ2b2ljZSIsInRlbXBsYXRlcyIsImNvZGUiLCJ2YW5pdHkiLCJyZWdpb25zIiwid2VsY29tZSIsIndpZGdldCIsIndpZGdldEpzb24iLCJvbmJvYXJkaW5nIiwiaW50ZXJhY3Rpb25zIiwiY29tbWFuZHMiLCJhcHBsaWNhdGlvbklkIiwiY29tbWFuZElkIiwid2l0aExvY2FsaXphdGlvbnMiLCJwZXJtaXNzaW9ucyIsInBlcm1pc3Npb24iLCJjb21tYW5kIiwicmVzcG9uc2VzIiwiY2FsbGJhY2siLCJpbnRlcmFjdGlvbklkIiwid2l0aFJlc3BvbnNlIiwib2F1dGgyIiwidG9rZW5FeGNoYW5nZSIsInRva2VuUmV2b2tlIiwiY3VycmVudEF1dGhvcml6YXRpb24iLCJhcHBsaWNhdGlvbiIsImNvbm5lY3Rpb25zIiwicm9sZUNvbm5lY3Rpb25zIiwibW9uZXRpemF0aW9uIiwiZW50aXRsZW1lbnRzIiwiZXhjbHVkZUVuZGVkIiwic2t1SWRzIiwiZW50aXRsZW1lbnQiLCJlbnRpdGxlbWVudElkIiwiY29uc3VtZUVudGl0bGVtZW50Iiwic2t1cyIsImFwcGxpY2F0aW9uRW1vamkiLCJhcHBsaWNhdGlvbkVtb2ppcyIsImFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZSIsImluc3RhbmNlSWQiLCJjdXJyZW50VXNlciIsImdhdGV3YXlCb3QiLCJzdGlja2VyUGFjayIsInN0aWNrZXJQYWNrSWQiLCJzdGlja2VyUGFja3MiXSwibWFwcGluZ3MiOiI7Ozs7K0JBSWdCQTs7O2VBQUFBOzs7dUJBSGlGO0FBRzFGLFNBQVNBO0lBQ2QsT0FBTztRQUNMQyxVQUFVO1lBQ1JDLElBQUksQ0FBQ0M7Z0JBQ0gsT0FBTyxDQUFDLFVBQVUsRUFBRUEsV0FBVztZQUNqQztZQUNBQyxTQUFTLENBQUNELFdBQVdFLE9BQU9DLFdBQVdDO2dCQUNyQyxJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFTCxVQUFVLENBQUMsRUFBRUUsTUFBTSxVQUFVLEVBQUVDLFVBQVUsQ0FBQyxDQUFDO2dCQUVsRSxJQUFJQyxTQUFTO29CQUNYLElBQUlBLFFBQVFFLFFBQVEsRUFBRUQsT0FBTyxDQUFDLFVBQVUsRUFBRUQsUUFBUUUsUUFBUSxFQUFFO2dCQUM5RDtnQkFFQSxPQUFPRDtZQUNUO1lB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