@discordeno/rest 22.0.1-next.fa338e6 → 22.0.1-next.fca3cbb

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.
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,GAAE,OAAe,GAAG,UAAU,CA6tB1E"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,GAAE,OAAe,GAAG,UAAU,CAgwB1E"}
package/dist/routes.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMessagesLimit } from '@discordeno/utils';
1
+ import { camelToSnakeCase, isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMessagesLimit } from '@discordeno/utils';
2
2
  /**
3
3
  * Creates the available discord API routes
4
4
  *
@@ -382,6 +382,18 @@ import { isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMess
382
382
  return url;
383
383
  }
384
384
  },
385
+ messagesSearch: (guildId, options)=>{
386
+ let url = `/guilds/${encode(guildId)}/messages/search?`;
387
+ if (options) {
388
+ for (const [key, value] of Object.entries(options)){
389
+ if (value === undefined) continue;
390
+ for (const item of Array.isArray(value) ? value : [
391
+ value
392
+ ])url += `&${camelToSnakeCase(key)}=${encode(item)}`;
393
+ }
394
+ }
395
+ return url;
396
+ },
385
397
  preview: (guildId)=>{
386
398
  return `/guilds/${encode(guildId)}/preview`;
387
399
  },
@@ -600,8 +612,24 @@ import { isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMess
600
612
  link: (lobbyId)=>{
601
613
  return `/lobbies/${encode(lobbyId)}/channel-linking`;
602
614
  },
615
+ membersBulk: (lobbyId)=>{
616
+ return `/lobbies/${encode(lobbyId)}/members/bulk`;
617
+ },
603
618
  moderationMetadata: (lobbyId, messageId)=>{
604
619
  return `/lobbies/${encode(lobbyId)}/messages/${encode(messageId)}/moderation-metadata`;
620
+ },
621
+ messages: (lobbyId, options)=>{
622
+ let url = `/lobbies/${encode(lobbyId)}/messages?`;
623
+ if (options) {
624
+ if (options.limit) url += `limit=${encode(options.limit)}`;
625
+ }
626
+ return url;
627
+ },
628
+ inviteSelf: (lobbyId)=>{
629
+ return `/lobbies/${encode(lobbyId)}/members/@me/invites`;
630
+ },
631
+ inviteUser: (lobbyId, userId)=>{
632
+ return `/lobbies/${encode(lobbyId)}/members/${encode(userId)}/invites`;
605
633
  }
606
634
  },
607
635
  applicationEmoji (applicationId, emojiId) {
@@ -643,4 +671,4 @@ function encodeComponent(uriComponent) {
643
671
  return encodeURIComponent(uriComponent);
644
672
  }
645
673
 
646
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgeyBpc0dldE1lc3NhZ2VzQWZ0ZXIsIGlzR2V0TWVzc2FnZXNBcm91bmQsIGlzR2V0TWVzc2FnZXNCZWZvcmUsIGlzR2V0TWVzc2FnZXNMaW1pdCB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUmVzdFJvdXRlcyB9IGZyb20gJy4vdHlwaW5ncy9yb3V0ZXMuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGF2YWlsYWJsZSBkaXNjb3JkIEFQSSByb3V0ZXNcbiAqXG4gKiBAcGFyYW0gZGlzYWJsZVVSSUVuY29kZSBEb24ndCBlbmNvZGUgc3RyaW5ncywgZXhjZXB0IHdoZXJlIHJlcXVpcmVkIC0gRGFuZ2VyOiBkaXNhYmxpbmcgVVJJIGVuY29kaW5nIG1heSBsZWFkIHRvIHBhdGggdHJhdmVyc2FsIGlmIHVuc2FmZSBzdHJpbmdzIGFyZSB1c2VkXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIGRpc2NvcmQgQVBJIHJvdXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKGRpc2FibGVVUklFbmNvZGU6IGJvb2xlYW4gPSBmYWxzZSk6IFJlc3RSb3V0ZXMge1xuICBjb25zdCBlbmNvZGU6IHR5cGVvZiBlbmNvZGVDb21wb25lbnQgPSBkaXNhYmxlVVJJRW5jb2RlID8gKHgpID0+IHgudG9TdHJpbmcoKSA6IGVuY29kZUNvbXBvbmVudDtcblxuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2VuY29kZSh3ZWJob29rSWQpfWA7XG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke2VuY29kZSh3ZWJob29rSWQpfS8ke2VuY29kZSh0b2tlbil9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9P2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy50aHJlYWRJZCkgdXJsICs9IGB0aHJlYWRfaWQ9JHtlbmNvZGUob3B0aW9ucy50aHJlYWRJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ29tcG9uZW50cykgdXJsICs9IGAmd2l0aF9jb21wb25lbnRzPSR7ZW5jb2RlKG9wdGlvbnMud2l0aENvbXBvbmVudHMpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7ZW5jb2RlKHdlYmhvb2tJZCl9LyR7ZW5jb2RlKHRva2VuKX0/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zPy53YWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgd2FpdD0ke2VuY29kZShvcHRpb25zLndhaXQpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgJnRocmVhZF9pZD0ke2VuY29kZShvcHRpb25zLnRocmVhZElkKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb21wb25lbnRzKSB1cmwgKz0gYCZ3aXRoX2NvbXBvbmVudHM9JHtlbmNvZGUob3B0aW9ucy53aXRoQ29tcG9uZW50cyl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzL2J1bGstZGVsZXRlYDtcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnO1xuICAgICAgfSxcbiAgICAgIGRtUmVjaXBpZW50OiAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcmVjaXBpZW50cy8ke2VuY29kZSh1c2VySWQpfWA7XG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcGlucy8ke2VuY29kZShtZXNzYWdlSWQpfWA7XG4gICAgICB9LFxuICAgICAgcGluczogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9waW5zYDtcbiAgICAgIH0sXG4gICAgICBtZXNzYWdlUGluczogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy9waW5zP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICBtZXNzYWdlUGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvcGlucy8ke2VuY29kZShtZXNzYWdlSWQpfWA7XG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9L0BtZWA7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnNgO1xuICAgICAgICB9LFxuICAgICAgICBlbW9qaTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudHlwZSkgdXJsICs9IGB0eXBlPSR7ZW5jb2RlKG9wdGlvbnMudHlwZSl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudHlwZSkgdXJsICs9IGB0eXBlPSR7ZW5jb2RlKG9wdGlvbnMudHlwZSl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7ZW5jb2RlKG9wdGlvbnMuYWZ0ZXIpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3dlYmhvb2tzYDtcbiAgICAgIH0sXG5cbiAgICAgIGNoYW5uZWw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX1gO1xuICAgICAgfSxcblxuICAgICAgZm9sbG93OiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L2ZvbGxvd2Vyc2A7XG4gICAgICB9LFxuXG4gICAgICBmb3J1bTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWRzYDtcbiAgICAgIH0sXG5cbiAgICAgIGludml0ZXM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vaW52aXRlc2A7XG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX1gO1xuICAgICAgfSxcblxuICAgICAgbWVzc2FnZXM6IChjaGFubmVsSWQsIG9wdGlvbnM/OiBHZXRNZXNzYWdlc09wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXM/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChpc0dldE1lc3NhZ2VzQWZ0ZXIob3B0aW9ucykgJiYgb3B0aW9ucy5hZnRlcikge1xuICAgICAgICAgICAgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0JlZm9yZShvcHRpb25zKSAmJiBvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0Fyb3VuZChvcHRpb25zKSAmJiBvcHRpb25zLmFyb3VuZCkge1xuICAgICAgICAgICAgdXJsICs9IGAmYXJvdW5kPSR7ZW5jb2RlKG9wdGlvbnMuYXJvdW5kKX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0xpbWl0KG9wdGlvbnMpICYmIG9wdGlvbnMubGltaXQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJ3cml0ZTogKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcGVybWlzc2lvbnMvJHtlbmNvZGUob3ZlcndyaXRlSWQpfWA7XG4gICAgICB9LFxuXG4gICAgICBjcm9zc3Bvc3Q6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9jcm9zc3Bvc3RgO1xuICAgICAgfSxcblxuICAgICAgc3RhZ2VzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL3N0YWdlLWluc3RhbmNlcyc7XG4gICAgICB9LFxuXG4gICAgICBzdGFnZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9zdGFnZS1pbnN0YW5jZXMvJHtlbmNvZGUoY2hhbm5lbElkKX1gO1xuICAgICAgfSxcblxuICAgICAgLy8gVGhyZWFkIEVuZHBvaW50c1xuICAgICAgdGhyZWFkczoge1xuICAgICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS90aHJlYWRzYDtcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkc2A7XG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2ZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3RocmVhZHMvYWN0aXZlYDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyczogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZC1tZW1iZXJzP2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMud2l0aE1lbWJlcikgdXJsICs9IGB3aXRoX21lbWJlcj0ke2VuY29kZShvcHRpb25zLndpdGhNZW1iZXIpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIG1lOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkLW1lbWJlcnMvQG1lYDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0VXNlcihjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucykge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZC1tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9P2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMud2l0aE1lbWJlcikgdXJsICs9IGB3aXRoX21lbWJlcj0ke2VuY29kZShvcHRpb25zLndpdGhNZW1iZXIpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcjogKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkLW1lbWJlcnMvJHtlbmNvZGUodXNlcklkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhcmNoaXZlZDogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZHMvYXJjaGl2ZWRgO1xuICAgICAgICB9LFxuICAgICAgICBwdWJsaWM6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWRzL2FyY2hpdmVkL3B1YmxpYz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgICBjb25zdCBpc28gPSBuZXcgRGF0ZShvcHRpb25zLmJlZm9yZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgdXJsICs9IGBiZWZvcmU9JHtlbmNvZGUoaXNvKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgcHJpdmF0ZTogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgICBjb25zdCBpc28gPSBuZXcgRGF0ZShvcHRpb25zLmJlZm9yZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgdXJsICs9IGBiZWZvcmU9JHtlbmNvZGUoaXNvKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgam9pbmVkOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdXNlcnMvQG1lL3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgICAgICAgICBjb25zdCBpc28gPSBuZXcgRGF0ZShvcHRpb25zLmJlZm9yZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgdXJsICs9IGBiZWZvcmU9JHtlbmNvZGUoaXNvKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHR5cGluZzogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90eXBpbmdgO1xuICAgICAgfSxcblxuICAgICAgcG9sbHM6IHtcbiAgICAgICAgdm90ZXM6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgYW5zd2VySWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9wb2xscy8ke2VuY29kZShtZXNzYWdlSWQpfS9hbnN3ZXJzLyR7ZW5jb2RlKGFuc3dlcklkKX0/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9wb2xscy8ke2VuY29kZShtZXNzYWdlSWQpfS9leHBpcmVgO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gR3VpbGQgRW5kcG9pbnRzXG4gICAgZ3VpbGRzOiB7XG4gICAgICBhbGw6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvZ3VpbGRzJztcbiAgICAgIH0sXG4gICAgICB1c2VyR3VpbGRzOiAob3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gJy91c2Vycy9AbWUvZ3VpbGRzPyc7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMpIHVybCArPSBgJndpdGhfY291bnRzPSR7ZW5jb2RlKG9wdGlvbnMud2l0aENvdW50cyl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgYXVkaXRsb2dzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2F1ZGl0LWxvZ3M/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFjdGlvblR5cGUpIHVybCArPSBgYWN0aW9uX3R5cGU9JHtlbmNvZGUob3B0aW9ucy5hY3Rpb25UeXBlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgYXV0b21vZDoge1xuICAgICAgICBydWxlOiAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9hdXRvLW1vZGVyYXRpb24vcnVsZXMvJHtlbmNvZGUocnVsZUlkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBydWxlczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2F1dG8tbW9kZXJhdGlvbi9ydWxlc2A7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY2hhbm5lbHM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vY2hhbm5lbHNgO1xuICAgICAgfSxcbiAgICAgIGVtb2ppOiAoZ3VpbGRJZCwgZW1vamlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2Vtb2ppcy8ke2VuY29kZShlbW9qaUlkKX1gO1xuICAgICAgfSxcbiAgICAgIGVtb2ppczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9lbW9qaXNgO1xuICAgICAgfSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBldmVudHM6IChndWlsZElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vc2NoZWR1bGVkLWV2ZW50cz9gO1xuXG4gICAgICAgICAgaWYgKHdpdGhVc2VyQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX3VzZXJfY291bnQ9JHtlbmNvZGUod2l0aFVzZXJDb3VudCl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IChndWlsZElkLCBldmVudElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vc2NoZWR1bGVkLWV2ZW50cy8ke2VuY29kZShldmVudElkKX1gO1xuXG4gICAgICAgICAgaWYgKHdpdGhVc2VyQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX3VzZXJfY291bnQ9JHtlbmNvZGUod2l0aFVzZXJDb3VudCl9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgICB1c2VyczogKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudFVzZXJzKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZW5jb2RlKGV2ZW50SWQpfS91c2Vycz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZ3aXRoX21lbWJlcj0ke2VuY29kZShvcHRpb25zLndpdGhNZW1iZXIpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlciAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGd1aWxkKGd1aWxkSWQsIHdpdGhDb3VudHMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfT9gO1xuXG4gICAgICAgIGlmICh3aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cmwgKz0gYHdpdGhfY291bnRzPSR7ZW5jb2RlKHdpdGhDb3VudHMpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGludGVncmF0aW9uKGd1aWxkSWQsIGludGVncmF0aW9uSWQpIHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9pbnRlZ3JhdGlvbnMvJHtlbmNvZGUoaW50ZWdyYXRpb25JZCl9YDtcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vaW50ZWdyYXRpb25zP2luY2x1ZGVfYXBwbGljYXRpb25zPXRydWVgO1xuICAgICAgfSxcbiAgICAgIGludml0ZShpbnZpdGVDb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2ludml0ZXMvJHtlbmNvZGUoaW52aXRlQ29kZSl9P2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF9jb3VudHM9JHtlbmNvZGUob3B0aW9ucy53aXRoQ291bnRzKX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0aW9ucy5zY2hlZHVsZWRFdmVudElkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZndWlsZF9zY2hlZHVsZWRfZXZlbnRfaWQ9JHtlbmNvZGUob3B0aW9ucy5zY2hlZHVsZWRFdmVudElkKX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgaW52aXRlVGFyZ2V0VXNlcnMoaW52aXRlQ29kZSkge1xuICAgICAgICByZXR1cm4gYC9pbnZpdGVzLyR7ZW5jb2RlKGludml0ZUNvZGUpfS90YXJnZXQtdXNlcnNgO1xuICAgICAgfSxcbiAgICAgIGludml0ZVRhcmdldFVzZXJzSm9iU3RhdHVzKGludml0ZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIGAvaW52aXRlcy8ke2VuY29kZShpbnZpdGVDb2RlKX0vdGFyZ2V0LXVzZXJzL2pvYi1zdGF0dXNgO1xuICAgICAgfSxcbiAgICAgIGludml0ZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vaW52aXRlc2A7XG4gICAgICB9LFxuICAgICAgbGVhdmU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9YDtcbiAgICAgIH0sXG4gICAgICBtZW1iZXJzOiB7XG4gICAgICAgIGJhbjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vYmFucy8ke2VuY29kZSh1c2VySWQpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIGJhbnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9iYW5zP2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtlbmNvZGUob3B0aW9ucy5iZWZvcmUpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgYnVsa0JhbjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2J1bGstYmFuYDtcbiAgICAgICAgfSxcbiAgICAgICAgYm90OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vbWVtYmVycy9AbWVgO1xuICAgICAgICB9LFxuICAgICAgICBtZW1iZXI6IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvJHtlbmNvZGUodXNlcklkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50TWVtYmVyOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcmA7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJzP2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGBsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7ZW5jb2RlKG9wdGlvbnMuYWZ0ZXIpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiAoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvc2VhcmNoP3F1ZXJ5PSR7ZW5jb2RlKHF1ZXJ5KX1gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgcHJ1bmU6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9wcnVuZT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRheXMpIHVybCArPSBgZGF5cz0ke2VuY29kZShvcHRpb25zLmRheXMpfWA7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmluY2x1ZGVSb2xlcykpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJykpfWA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtlbmNvZGUob3B0aW9ucy5pbmNsdWRlUm9sZXMpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwcmV2aWV3OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3ByZXZpZXdgO1xuICAgICAgfSxcbiAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3BydW5lP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtlbmNvZGUob3B0aW9ucy5kYXlzKX1gO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJykpfWA7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcyl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIHJvbGVzOiB7XG4gICAgICAgIG9uZTogKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vcm9sZXMvJHtlbmNvZGUocm9sZUlkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9yb2xlc2A7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIG1lbWJlcklkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvJHtlbmNvZGUobWVtYmVySWQpfS9yb2xlcy8ke2VuY29kZShyb2xlSWQpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlckNvdW50czogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlcy9tZW1iZXItY291bnRzYDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGlja2VyczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9zdGlja2Vyc2A7XG4gICAgICB9LFxuICAgICAgc3RpY2tlcjogKGd1aWxkSWQsIHN0aWNrZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3N0aWNrZXJzLyR7ZW5jb2RlKHN0aWNrZXJJZCl9YDtcbiAgICAgIH0sXG4gICAgICB2b2ljZTogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3ZvaWNlLXN0YXRlcy8ke2VuY29kZSh1c2VySWQgPz8gJ0BtZScpfWA7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIGNvZGU6IChjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzL3RlbXBsYXRlcy8ke2VuY29kZShjb2RlKX1gO1xuICAgICAgICB9LFxuICAgICAgICBndWlsZDogKGd1aWxkSWQsIGNvZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3RlbXBsYXRlcy8ke2VuY29kZShjb2RlKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS90ZW1wbGF0ZXNgO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZhbml0eTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS92YW5pdHktdXJsYDtcbiAgICAgIH0sXG4gICAgICByZWdpb25zOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3JlZ2lvbnNgO1xuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dlYmhvb2tzYDtcbiAgICAgIH0sXG4gICAgICB3ZWxjb21lOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dlbGNvbWUtc2NyZWVuYDtcbiAgICAgIH0sXG4gICAgICB3aWRnZXQ6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vd2lkZ2V0YDtcbiAgICAgIH0sXG4gICAgICB3aWRnZXRKc29uOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dpZGdldC5qc29uYDtcbiAgICAgIH0sXG4gICAgICBvbmJvYXJkaW5nOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L29uYm9hcmRpbmdgO1xuICAgICAgfSxcbiAgICAgIGluY2lkZW50QWN0aW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9pbmNpZGVudC1hY3Rpb25zYDtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHN0aWNrZXI6IChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXJzLyR7ZW5jb2RlKHN0aWNrZXJJZCl9YDtcbiAgICB9LFxuXG4gICAgcmVnaW9uczogKCkgPT4ge1xuICAgICAgcmV0dXJuICcvdm9pY2UvcmVnaW9ucyc7XG4gICAgfSxcblxuICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgLy8gQXBwbGljYXRpb24gRW5kcG9pbnRzXG4gICAgICAgIGNvbW1hbmRzOiAoYXBwbGljYXRpb25JZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2NvbW1hbmRzP2A7XG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX2xvY2FsaXphdGlvbnM9JHtlbmNvZGUod2l0aExvY2FsaXphdGlvbnMpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcblxuICAgICAgICBndWlsZHM6IHtcbiAgICAgICAgICBhbGwoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgd2l0aExvY2FsaXphdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9jb21tYW5kcz9gO1xuXG4gICAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYHdpdGhfbG9jYWxpemF0aW9ucz0ke2VuY29kZSh3aXRoTG9jYWxpemF0aW9ucyl9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgb25lKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9YDtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vY29tbWFuZHMvcGVybWlzc2lvbnNgO1xuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9L3Blcm1pc3Npb25zYDtcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9P2A7XG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoTG9jYWxpemF0aW9ucz0ke2VuY29kZSh3aXRoTG9jYWxpemF0aW9ucyl9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgICAgICBjYWxsYmFjazogKGludGVyYWN0aW9uSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvaW50ZXJhY3Rpb25zLyR7ZW5jb2RlKGludGVyYWN0aW9uSWQpfS8ke2VuY29kZSh0b2tlbil9L2NhbGxiYWNrP3dpdGhfcmVzcG9uc2U9JHtlbmNvZGUoISFvcHRpb25zPy53aXRoUmVzcG9uc2UpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIG9yaWdpbmFsOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2VuY29kZShpbnRlcmFjdGlvbklkKX0vJHtlbmNvZGUodG9rZW4pfS9tZXNzYWdlcy9Ab3JpZ2luYWxgO1xuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoYXBwbGljYXRpb25JZCwgdG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS8ke2VuY29kZSh0b2tlbil9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIE9BdXRoMiBlbmRwb2ludHNcbiAgICBvYXV0aDI6IHtcbiAgICAgIHRva2VuRXhjaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuJztcbiAgICAgIH0sXG4gICAgICB0b2tlblJldm9rZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4vcmV2b2tlJztcbiAgICAgIH0sXG4gICAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvQG1lJztcbiAgICAgIH0sXG4gICAgICBhcHBsaWNhdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvYXBwbGljYXRpb25zL0BtZSc7XG4gICAgICB9LFxuICAgICAgY29ubmVjdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvdXNlcnMvQG1lL2Nvbm5lY3Rpb25zJztcbiAgICAgIH0sXG4gICAgICByb2xlQ29ubmVjdGlvbnM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3JvbGUtY29ubmVjdGlvbmA7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBtb25ldGl6YXRpb246IHtcbiAgICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9lbnRpdGxlbWVudHM/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7ZW5jb2RlKG9wdGlvbnMuYWZ0ZXIpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtlbmNvZGUob3B0aW9ucy5iZWZvcmUpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUVuZGVkKSB1cmwgKz0gYCZleGNsdWRlX2VuZGVkPSR7ZW5jb2RlKG9wdGlvbnMuZXhjbHVkZUVuZGVkKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmd1aWxkSWQpIHVybCArPSBgJmd1aWxkX2lkPSR7ZW5jb2RlKG9wdGlvbnMuZ3VpbGRJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5za3VJZHMpIHVybCArPSBgJnNrdV9pZHM9JHtlbmNvZGUob3B0aW9ucy5za3VJZHMuam9pbignLCcpKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgZW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW50aXRsZW1lbnRzLyR7ZW5jb2RlKGVudGl0bGVtZW50SWQpfWA7XG4gICAgICB9LFxuICAgICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2VudGl0bGVtZW50cy8ke2VuY29kZShlbnRpdGxlbWVudElkKX0vY29uc3VtZWA7XG4gICAgICB9LFxuXG4gICAgICBza3VzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3NrdXNgO1xuICAgICAgfSxcblxuICAgICAgc3Vic2NyaXB0aW9uOiAoc2t1SWQsIHN1YnNjcmlwdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3NrdXMvJHtlbmNvZGUoc2t1SWQpfS9zdWJzY3JpcHRpb25zLyR7ZW5jb2RlKHN1YnNjcmlwdGlvbklkKX1gO1xuICAgICAgfSxcblxuICAgICAgc3Vic2NyaXB0aW9uczogKHNrdUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3NrdXMvJHtlbmNvZGUoc2t1SWQpfS9zdWJzY3JpcHRpb25zP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBzb3VuZGJvYXJkOiB7XG4gICAgICBzZW5kU291bmQ6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX1gO1xuICAgICAgfSxcbiAgICAgIGxpc3REZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3NvdW5kYm9hcmQtZGVmYXVsdC1zb3VuZHNgO1xuICAgICAgfSxcbiAgICAgIGd1aWxkU291bmRzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NvdW5kYm9hcmQtc291bmRzYDtcbiAgICAgIH0sXG4gICAgICBndWlsZFNvdW5kOiAoZ3VpbGRJZCwgc291bmRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NvdW5kYm9hcmQtc291bmRzLyR7ZW5jb2RlKHNvdW5kSWQpfWA7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBsb2JieToge1xuICAgICAgY3JlYXRlOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2xvYmJpZXMnO1xuICAgICAgfSxcblxuICAgICAgbG9iYnk6IChsb2JieUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIG1lbWJlcjogKGxvYmJ5SWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIGxlYXZlOiAobG9iYnlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9tZW1iZXJzL0BtZWA7XG4gICAgICB9LFxuXG4gICAgICBsaW5rOiAobG9iYnlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9jaGFubmVsLWxpbmtpbmdgO1xuICAgICAgfSxcblxuICAgICAgbW9kZXJhdGlvbk1ldGFkYXRhOiAobG9iYnlJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9L21vZGVyYXRpb24tbWV0YWRhdGFgO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25FbW9qaShhcHBsaWNhdGlvbklkLCBlbW9qaUlkKSB7XG4gICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2Vtb2ppcy8ke2VuY29kZShlbW9qaUlkKX1gO1xuICAgIH0sXG5cbiAgICBhcHBsaWNhdGlvbkVtb2ppcyhhcHBsaWNhdGlvbklkKSB7XG4gICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2Vtb2ppc2A7XG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YShhcHBsaWNhdGlvbklkKSB7XG4gICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3JvbGUtY29ubmVjdGlvbnMvbWV0YWRhdGFgO1xuICAgIH0sXG5cbiAgICAvLyBVc2VyIGVuZHBvaW50c1xuICAgIHVzZXIodXNlcklkKSB7XG4gICAgICByZXR1cm4gYC91c2Vycy8ke2VuY29kZSh1c2VySWQpfWA7XG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uKCkge1xuICAgICAgcmV0dXJuICcvYXBwbGljYXRpb25zL0BtZSc7XG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZShhcHBsaWNhdGlvbklkLCBpbnN0YW5jZUlkKSB7XG4gICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2FjdGl2aXR5LWluc3RhbmNlcy8ke2VuY29kZShpbnN0YW5jZUlkKX1gO1xuICAgIH0sXG5cbiAgICBjdXJyZW50VXNlcigpIHtcbiAgICAgIHJldHVybiAnL3VzZXJzL0BtZSc7XG4gICAgfSxcblxuICAgIGdhdGV3YXlCb3QoKSB7XG4gICAgICByZXR1cm4gJy9nYXRld2F5L2JvdCc7XG4gICAgfSxcblxuICAgIHN0aWNrZXJQYWNrKHN0aWNrZXJQYWNrSWQpIHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXItcGFja3MvJHtlbmNvZGUoc3RpY2tlclBhY2tJZCl9YDtcbiAgICB9LFxuXG4gICAgc3RpY2tlclBhY2tzKCkge1xuICAgICAgcmV0dXJuICcvc3RpY2tlci1wYWNrcyc7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5jb2RlQ29tcG9uZW50KHVyaUNvbXBvbmVudDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHwgYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdXJpQ29tcG9uZW50ICE9PSAnc3RyaW5nJykgcmV0dXJuIHVyaUNvbXBvbmVudC50b1N0cmluZygpO1xuICBpZiAoL15cXGQrJC8udGVzdCh1cmlDb21wb25lbnQpKSByZXR1cm4gdXJpQ29tcG9uZW50O1xuXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodXJpQ29tcG9uZW50KTtcbn1cbiJdLCJuYW1lcyI6WyJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiaXNHZXRNZXNzYWdlc0JlZm9yZSIsImlzR2V0TWVzc2FnZXNMaW1pdCIsImNyZWF0ZVJvdXRlcyIsImRpc2FibGVVUklFbmNvZGUiLCJlbmNvZGUiLCJ4IiwidG9TdHJpbmciLCJlbmNvZGVDb21wb25lbnQiLCJ3ZWJob29rcyIsImlkIiwid2ViaG9va0lkIiwibWVzc2FnZSIsInRva2VuIiwibWVzc2FnZUlkIiwib3B0aW9ucyIsInVybCIsInRocmVhZElkIiwid2l0aENvbXBvbmVudHMiLCJ3ZWJob29rIiwid2FpdCIsInVuZGVmaW5lZCIsImNoYW5uZWxzIiwiYnVsayIsImNoYW5uZWxJZCIsImRtIiwiZG1SZWNpcGllbnQiLCJ1c2VySWQiLCJwaW4iLCJwaW5zIiwibWVzc2FnZVBpbnMiLCJiZWZvcmUiLCJsaW1pdCIsIm1lc3NhZ2VQaW4iLCJyZWFjdGlvbnMiLCJib3QiLCJlbW9qaSIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXIiLCJhbGwiLCJ0eXBlIiwiYWZ0ZXIiLCJjaGFubmVsIiwiZm9sbG93IiwiZm9ydW0iLCJpbnZpdGVzIiwibWVzc2FnZXMiLCJhcm91bmQiLCJvdmVyd3JpdGUiLCJvdmVyd3JpdGVJZCIsImNyb3NzcG9zdCIsInN0YWdlcyIsInN0YWdlIiwidGhyZWFkcyIsImFjdGl2ZSIsImd1aWxkSWQiLCJtZW1iZXJzIiwid2l0aE1lbWJlciIsIm1lIiwiZ2V0VXNlciIsImFyY2hpdmVkIiwicHVibGljIiwiaXNvIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwicHJpdmF0ZSIsImpvaW5lZCIsInR5cGluZyIsInBvbGxzIiwidm90ZXMiLCJhbnN3ZXJJZCIsImV4cGlyZSIsImd1aWxkcyIsInVzZXJHdWlsZHMiLCJ3aXRoQ291bnRzIiwiYXVkaXRsb2dzIiwiYWN0aW9uVHlwZSIsImF1dG9tb2QiLCJydWxlIiwicnVsZUlkIiwicnVsZXMiLCJlbW9qaUlkIiwiZW1vamlzIiwiZXZlbnRzIiwid2l0aFVzZXJDb3VudCIsImV2ZW50IiwiZXZlbnRJZCIsInVzZXJzIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwic2NoZWR1bGVkRXZlbnRJZCIsImludml0ZVRhcmdldFVzZXJzIiwiaW52aXRlVGFyZ2V0VXNlcnNKb2JTdGF0dXMiLCJsZWF2ZSIsImJhbiIsImJhbnMiLCJidWxrQmFuIiwibWVtYmVyIiwiY3VycmVudE1lbWJlciIsInNlYXJjaCIsInF1ZXJ5IiwicHJ1bmUiLCJkYXlzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZVJvbGVzIiwiam9pbiIsInByZXZpZXciLCJyb2xlcyIsIm9uZSIsInJvbGVJZCIsIm1lbWJlcklkIiwibWVtYmVyQ291bnRzIiwic3RpY2tlcnMiLCJzdGlja2VyIiwic3RpY2tlcklkIiwidm9pY2UiLCJ0ZW1wbGF0ZXMiLCJjb2RlIiwidmFuaXR5IiwicmVnaW9ucyIsIndlbGNvbWUiLCJ3aWRnZXQiLCJ3aWRnZXRKc29uIiwib25ib2FyZGluZyIsImluY2lkZW50QWN0aW9ucyIsImludGVyYWN0aW9ucyIsImNvbW1hbmRzIiwiYXBwbGljYXRpb25JZCIsIndpdGhMb2NhbGl6YXRpb25zIiwiY29tbWFuZElkIiwicGVybWlzc2lvbnMiLCJwZXJtaXNzaW9uIiwiY29tbWFuZCIsInJlc3BvbnNlcyIsImNhbGxiYWNrIiwiaW50ZXJhY3Rpb25JZCIsIndpdGhSZXNwb25zZSIsIm9yaWdpbmFsIiwib2F1dGgyIiwidG9rZW5FeGNoYW5nZSIsInRva2VuUmV2b2tlIiwiY3VycmVudEF1dGhvcml6YXRpb24iLCJhcHBsaWNhdGlvbiIsImNvbm5lY3Rpb25zIiwicm9sZUNvbm5lY3Rpb25zIiwibW9uZXRpemF0aW9uIiwiZW50aXRsZW1lbnRzIiwiZXhjbHVkZUVuZGVkIiwic2t1SWRzIiwiZW50aXRsZW1lbnQiLCJlbnRpdGxlbWVudElkIiwiY29uc3VtZUVudGl0bGVtZW50Iiwic2t1cyIsInN1YnNjcmlwdGlvbiIsInNrdUlkIiwic3Vic2NyaXB0aW9uSWQiLCJzdWJzY3JpcHRpb25zIiwic291bmRib2FyZCIsInNlbmRTb3VuZCIsImxpc3REZWZhdWx0IiwiZ3VpbGRTb3VuZHMiLCJndWlsZFNvdW5kIiwic291bmRJZCIsImxvYmJ5IiwiY3JlYXRlIiwibG9iYnlJZCIsImxpbmsiLCJtb2RlcmF0aW9uTWV0YWRhdGEiLCJhcHBsaWNhdGlvbkVtb2ppIiwiYXBwbGljYXRpb25FbW9qaXMiLCJhcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGEiLCJhcHBsaWNhdGlvbkFjdGl2aXR5SW5zdGFuY2UiLCJpbnN0YW5jZUlkIiwiY3VycmVudFVzZXIiLCJnYXRld2F5Qm90Iiwic3RpY2tlclBhY2siLCJzdGlja2VyUGFja0lkIiwic3RpY2tlclBhY2tzIiwidXJpQ29tcG9uZW50IiwidGVzdCJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0Esa0JBQWtCLEVBQUVDLG1CQUFtQixFQUFFQyxtQkFBbUIsRUFBRUMsa0JBQWtCLFFBQVEsb0JBQW9CO0FBR3JIOzs7OztDQUtDLEdBQ0QsT0FBTyxTQUFTQyxhQUFhQyxtQkFBNEIsS0FBSztJQUM1RCxNQUFNQyxTQUFpQ0QsbUJBQW1CLENBQUNFLElBQU1BLEVBQUVDLFFBQVEsS0FBS0M7SUFFaEYsT0FBTztRQUNMQyxVQUFVO1lBQ1JDLElBQUksQ0FBQ0M7Z0JBQ0gsT0FBTyxDQUFDLFVBQVUsRUFBRU4sT0FBT00sWUFBWTtZQUN6QztZQUNBQyxTQUFTLENBQUNELFdBQVdFLE9BQU9DLFdBQVdDO2dCQUNyQyxJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFWCxPQUFPTSxXQUFXLENBQUMsRUFBRU4sT0FBT1EsT0FBTyxVQUFVLEVBQUVSLE9BQU9TLFdBQVcsQ0FBQyxDQUFDO2dCQUUxRixJQUFJQyxTQUFTO29CQUNYLElBQUlBLFFBQVFFLFFBQVEsRUFBRUQsT0FBTyxDQUFDLFVBQVUsRUFBRVgsT0FBT1UsUUFBUUUsUUFBUSxHQUFHO29CQUNwRSxJQUFJ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
674
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsIFNlYXJjaEd1aWxkTWVzc2FnZXNPcHRpb25zIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgY2FtZWxUb1NuYWtlQ2FzZSwgaXNHZXRNZXNzYWdlc0FmdGVyLCBpc0dldE1lc3NhZ2VzQXJvdW5kLCBpc0dldE1lc3NhZ2VzQmVmb3JlLCBpc0dldE1lc3NhZ2VzTGltaXQgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBhdmFpbGFibGUgZGlzY29yZCBBUEkgcm91dGVzXG4gKlxuICogQHBhcmFtIGRpc2FibGVVUklFbmNvZGUgRG9uJ3QgZW5jb2RlIHN0cmluZ3MsIGV4Y2VwdCB3aGVyZSByZXF1aXJlZCAtIERhbmdlcjogZGlzYWJsaW5nIFVSSSBlbmNvZGluZyBtYXkgbGVhZCB0byBwYXRoIHRyYXZlcnNhbCBpZiB1bnNhZmUgc3RyaW5ncyBhcmUgdXNlZFxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBkaXNjb3JkIEFQSSByb3V0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcyhkaXNhYmxlVVJJRW5jb2RlOiBib29sZWFuID0gZmFsc2UpOiBSZXN0Um91dGVzIHtcbiAgY29uc3QgZW5jb2RlOiB0eXBlb2YgZW5jb2RlQ29tcG9uZW50ID0gZGlzYWJsZVVSSUVuY29kZSA/ICh4KSA9PiB4LnRvU3RyaW5nKCkgOiBlbmNvZGVDb21wb25lbnQ7XG5cbiAgcmV0dXJuIHtcbiAgICB3ZWJob29rczoge1xuICAgICAgaWQ6ICh3ZWJob29rSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvd2ViaG9va3MvJHtlbmNvZGUod2ViaG9va0lkKX1gO1xuICAgICAgfSxcbiAgICAgIG1lc3NhZ2U6ICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvd2ViaG9va3MvJHtlbmNvZGUod2ViaG9va0lkKX0vJHtlbmNvZGUodG9rZW4pfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfT9gO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7ZW5jb2RlKG9wdGlvbnMudGhyZWFkSWQpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aENvbXBvbmVudHMpIHVybCArPSBgJndpdGhfY29tcG9uZW50cz0ke2VuY29kZShvcHRpb25zLndpdGhDb21wb25lbnRzKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICB3ZWJob29rOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke2VuY29kZSh3ZWJob29rSWQpfS8ke2VuY29kZSh0b2tlbil9P2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtlbmNvZGUob3B0aW9ucy53YWl0KX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYCZ0aHJlYWRfaWQ9JHtlbmNvZGUob3B0aW9ucy50aHJlYWRJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ29tcG9uZW50cykgdXJsICs9IGAmd2l0aF9jb21wb25lbnRzPSR7ZW5jb2RlKG9wdGlvbnMud2l0aENvbXBvbmVudHMpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gQ2hhbm5lbCBFbmRwb2ludHNcbiAgICBjaGFubmVsczoge1xuICAgICAgYnVsazogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWA7XG4gICAgICB9LFxuICAgICAgZG06ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvdXNlcnMvQG1lL2NoYW5uZWxzJztcbiAgICAgIH0sXG4gICAgICBkbVJlY2lwaWVudDogKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3JlY2lwaWVudHMvJHtlbmNvZGUodXNlcklkKX1gO1xuICAgICAgfSxcbiAgICAgIHBpbjogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3BpbnMvJHtlbmNvZGUobWVzc2FnZUlkKX1gO1xuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcGluc2A7XG4gICAgICB9LFxuICAgICAgbWVzc2FnZVBpbnM6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvcGlucz9gO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYGJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgbWVzc2FnZVBpbjogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzL3BpbnMvJHtlbmNvZGUobWVzc2FnZUlkKX1gO1xuICAgICAgfSxcbiAgICAgIHJlYWN0aW9uczoge1xuICAgICAgICBib3Q6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfS9AbWVgO1xuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfS8ke2VuY29kZSh1c2VySWQpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vcmVhY3Rpb25zYDtcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUpIHVybCArPSBgdHlwZT0ke2VuY29kZShvcHRpb25zLnR5cGUpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUpIHVybCArPSBgdHlwZT0ke2VuY29kZShvcHRpb25zLnR5cGUpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3ZWJob29rczogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS93ZWJob29rc2A7XG4gICAgICB9LFxuXG4gICAgICBjaGFubmVsOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIGZvbGxvdzogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9mb2xsb3dlcnNgO1xuICAgICAgfSxcblxuICAgICAgZm9ydW06IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkc2A7XG4gICAgICB9LFxuXG4gICAgICBpbnZpdGVzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L2ludml0ZXNgO1xuICAgICAgfSxcblxuICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke2VuY29kZShvcHRpb25zLmFyb3VuZCl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuXG4gICAgICBvdmVyd3JpdGU6IChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3Blcm1pc3Npb25zLyR7ZW5jb2RlKG92ZXJ3cml0ZUlkKX1gO1xuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vY3Jvc3Nwb3N0YDtcbiAgICAgIH0sXG5cbiAgICAgIHN0YWdlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9zdGFnZS1pbnN0YW5jZXMnO1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vdGhyZWFkc2A7XG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZHNgO1xuICAgICAgICB9LFxuICAgICAgICBhY3RpdmU6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS90aHJlYWRzL2FjdGl2ZWA7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcnM6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWQtbWVtYmVycz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIpIHVybCArPSBgd2l0aF9tZW1iZXI9JHtlbmNvZGUob3B0aW9ucy53aXRoTWVtYmVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZC1tZW1iZXJzL0BtZWA7XG4gICAgICAgIH0sXG4gICAgICAgIGdldFVzZXIoY2hhbm5lbElkLCB1c2VySWQsIG9wdGlvbnMpIHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWQtbWVtYmVycy8ke2VuY29kZSh1c2VySWQpfT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIpIHVybCArPSBgd2l0aF9tZW1iZXI9JHtlbmNvZGUob3B0aW9ucy53aXRoTWVtYmVyKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZC1tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgYXJjaGl2ZWQ6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWRzL2FyY2hpdmVkYDtcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGljOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkcy9hcmNoaXZlZC9wdWJsaWM/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNvID0gbmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKGlzbyl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHByaXZhdGU6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWRzL2FyY2hpdmVkL3ByaXZhdGU/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNvID0gbmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKGlzbyl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGpvaW5lZDogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3VzZXJzL0BtZS90aHJlYWRzL2FyY2hpdmVkL3ByaXZhdGU/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNvID0gbmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKGlzbyl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICB0eXBpbmc6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdHlwaW5nYDtcbiAgICAgIH0sXG5cbiAgICAgIHBvbGxzOiB7XG4gICAgICAgIHZvdGVzOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGFuc3dlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcG9sbHMvJHtlbmNvZGUobWVzc2FnZUlkKX0vYW5zd2Vycy8ke2VuY29kZShhbnN3ZXJJZCl9P2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cGlyZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcG9sbHMvJHtlbmNvZGUobWVzc2FnZUlkKX0vZXhwaXJlYDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcyc7XG4gICAgICB9LFxuICAgICAgdXNlckd1aWxkczogKG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9ICcvdXNlcnMvQG1lL2d1aWxkcz8nO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzKSB1cmwgKz0gYCZ3aXRoX2NvdW50cz0ke2VuY29kZShvcHRpb25zLndpdGhDb3VudHMpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGF1ZGl0bG9nczogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9hdWRpdC1sb2dzP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hY3Rpb25UeXBlKSB1cmwgKz0gYGFjdGlvbl90eXBlPSR7ZW5jb2RlKG9wdGlvbnMuYWN0aW9uVHlwZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtlbmNvZGUob3B0aW9ucy51c2VySWQpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGF1dG9tb2Q6IHtcbiAgICAgICAgcnVsZTogKGd1aWxkSWQsIHJ1bGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7ZW5jb2RlKHJ1bGVJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9hdXRvLW1vZGVyYXRpb24vcnVsZXNgO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NoYW5uZWxzYDtcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9lbW9qaXMvJHtlbmNvZGUoZW1vamlJZCl9YDtcbiAgICAgIH0sXG4gICAgICBlbW9qaXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vZW1vamlzYDtcbiAgICAgIH0sXG4gICAgICBldmVudHM6IHtcbiAgICAgICAgZXZlbnRzOiAoZ3VpbGRJZCwgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NjaGVkdWxlZC1ldmVudHM/YDtcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7ZW5jb2RlKHdpdGhVc2VyQ291bnQpfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50OiAoZ3VpbGRJZCwgZXZlbnRJZCwgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NjaGVkdWxlZC1ldmVudHMvJHtlbmNvZGUoZXZlbnRJZCl9YDtcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7ZW5jb2RlKHdpdGhVc2VyQ291bnQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcnM6IChndWlsZElkLCBldmVudElkLCBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vc2NoZWR1bGVkLWV2ZW50cy8ke2VuY29kZShldmVudElkKX0vdXNlcnM/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYGxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53aXRoTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGAmd2l0aF9tZW1iZXI9JHtlbmNvZGUob3B0aW9ucy53aXRoTWVtYmVyKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZiZWZvcmU9JHtlbmNvZGUob3B0aW9ucy5iZWZvcmUpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBndWlsZChndWlsZElkLCB3aXRoQ291bnRzKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0/YDtcblxuICAgICAgICBpZiAod2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke2VuY29kZSh3aXRoQ291bnRzKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbihndWlsZElkLCBpbnRlZ3JhdGlvbklkKSB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vaW50ZWdyYXRpb25zLyR7ZW5jb2RlKGludGVncmF0aW9uSWQpfWA7XG4gICAgICB9LFxuICAgICAgaW50ZWdyYXRpb25zOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2ludGVncmF0aW9ucz9pbmNsdWRlX2FwcGxpY2F0aW9ucz10cnVlYDtcbiAgICAgIH0sXG4gICAgICBpbnZpdGUoaW52aXRlQ29kZSwgb3B0aW9ucykge1xuICAgICAgICBsZXQgdXJsID0gYC9pbnZpdGVzLyR7ZW5jb2RlKGludml0ZUNvZGUpfT9gO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfY291bnRzPSR7ZW5jb2RlKG9wdGlvbnMud2l0aENvdW50cyl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCkge1xuICAgICAgICAgICAgdXJsICs9IGAmZ3VpbGRfc2NoZWR1bGVkX2V2ZW50X2lkPSR7ZW5jb2RlKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGludml0ZVRhcmdldFVzZXJzKGludml0ZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIGAvaW52aXRlcy8ke2VuY29kZShpbnZpdGVDb2RlKX0vdGFyZ2V0LXVzZXJzYDtcbiAgICAgIH0sXG4gICAgICBpbnZpdGVUYXJnZXRVc2Vyc0pvYlN0YXR1cyhpbnZpdGVDb2RlKSB7XG4gICAgICAgIHJldHVybiBgL2ludml0ZXMvJHtlbmNvZGUoaW52aXRlQ29kZSl9L3RhcmdldC11c2Vycy9qb2Itc3RhdHVzYDtcbiAgICAgIH0sXG4gICAgICBpbnZpdGVzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2ludml0ZXNgO1xuICAgICAgfSxcbiAgICAgIGxlYXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfWA7XG4gICAgICB9LFxuICAgICAgbWVtYmVyczoge1xuICAgICAgICBiYW46IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2JhbnMvJHtlbmNvZGUodXNlcklkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBiYW5zOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vYmFucz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGJ1bGtCYW46IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9idWxrLWJhbmA7XG4gICAgICAgIH0sXG4gICAgICAgIGJvdDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvQG1lYDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudE1lbWJlcjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJgO1xuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vbWVtYmVycz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHNlYXJjaDogKGd1aWxkSWQsIHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJzL3NlYXJjaD9xdWVyeT0ke2VuY29kZShxdWVyeSl9YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vcHJ1bmU/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtlbmNvZGUob3B0aW9ucy5kYXlzKX1gO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtlbmNvZGUob3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpKX1gO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7ZW5jb2RlKG9wdGlvbnMuaW5jbHVkZVJvbGVzKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWVzc2FnZXNTZWFyY2g6IChndWlsZElkLCBvcHRpb25zPzogU2VhcmNoR3VpbGRNZXNzYWdlc09wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZXNzYWdlcy9zZWFyY2g/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkgdXJsICs9IGAmJHtjYW1lbFRvU25ha2VDYXNlKGtleSl9PSR7ZW5jb2RlKGl0ZW0pfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICBwcmV2aWV3OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3ByZXZpZXdgO1xuICAgICAgfSxcbiAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3BydW5lP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtlbmNvZGUob3B0aW9ucy5kYXlzKX1gO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJykpfWA7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcyl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIHJvbGVzOiB7XG4gICAgICAgIG9uZTogKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vcm9sZXMvJHtlbmNvZGUocm9sZUlkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9yb2xlc2A7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIG1lbWJlcklkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvJHtlbmNvZGUobWVtYmVySWQpfS9yb2xlcy8ke2VuY29kZShyb2xlSWQpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlckNvdW50czogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlcy9tZW1iZXItY291bnRzYDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGlja2VyczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9zdGlja2Vyc2A7XG4gICAgICB9LFxuICAgICAgc3RpY2tlcjogKGd1aWxkSWQsIHN0aWNrZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3N0aWNrZXJzLyR7ZW5jb2RlKHN0aWNrZXJJZCl9YDtcbiAgICAgIH0sXG4gICAgICB2b2ljZTogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3ZvaWNlLXN0YXRlcy8ke2VuY29kZSh1c2VySWQgPz8gJ0BtZScpfWA7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIGNvZGU6IChjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzL3RlbXBsYXRlcy8ke2VuY29kZShjb2RlKX1gO1xuICAgICAgICB9LFxuICAgICAgICBndWlsZDogKGd1aWxkSWQsIGNvZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3RlbXBsYXRlcy8ke2VuY29kZShjb2RlKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS90ZW1wbGF0ZXNgO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZhbml0eTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS92YW5pdHktdXJsYDtcbiAgICAgIH0sXG4gICAgICByZWdpb25zOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3JlZ2lvbnNgO1xuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dlYmhvb2tzYDtcbiAgICAgIH0sXG4gICAgICB3ZWxjb21lOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dlbGNvbWUtc2NyZWVuYDtcbiAgICAgIH0sXG4gICAgICB3aWRnZXQ6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vd2lkZ2V0YDtcbiAgICAgIH0sXG4gICAgICB3aWRnZXRKc29uOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dpZGdldC5qc29uYDtcbiAgICAgIH0sXG4gICAgICBvbmJvYXJkaW5nOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L29uYm9hcmRpbmdgO1xuICAgICAgfSxcbiAgICAgIGluY2lkZW50QWN0aW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9pbmNpZGVudC1hY3Rpb25zYDtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHN0aWNrZXI6IChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXJzLyR7ZW5jb2RlKHN0aWNrZXJJZCl9YDtcbiAgICB9LFxuXG4gICAgcmVnaW9uczogKCkgPT4ge1xuICAgICAgcmV0dXJuICcvdm9pY2UvcmVnaW9ucyc7XG4gICAgfSxcblxuICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgLy8gQXBwbGljYXRpb24gRW5kcG9pbnRzXG4gICAgICAgIGNvbW1hbmRzOiAoYXBwbGljYXRpb25JZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2NvbW1hbmRzP2A7XG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX2xvY2FsaXphdGlvbnM9JHtlbmNvZGUod2l0aExvY2FsaXphdGlvbnMpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcblxuICAgICAgICBndWlsZHM6IHtcbiAgICAgICAgICBhbGwoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgd2l0aExvY2FsaXphdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9jb21tYW5kcz9gO1xuXG4gICAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYHdpdGhfbG9jYWxpemF0aW9ucz0ke2VuY29kZSh3aXRoTG9jYWxpemF0aW9ucyl9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgb25lKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9YDtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vY29tbWFuZHMvcGVybWlzc2lvbnNgO1xuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9L3Blcm1pc3Npb25zYDtcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9P2A7XG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoTG9jYWxpemF0aW9ucz0ke2VuY29kZSh3aXRoTG9jYWxpemF0aW9ucyl9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgICAgICBjYWxsYmFjazogKGludGVyYWN0aW9uSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvaW50ZXJhY3Rpb25zLyR7ZW5jb2RlKGludGVyYWN0aW9uSWQpfS8ke2VuY29kZSh0b2tlbil9L2NhbGxiYWNrP3dpdGhfcmVzcG9uc2U9JHtlbmNvZGUoISFvcHRpb25zPy53aXRoUmVzcG9uc2UpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIG9yaWdpbmFsOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2VuY29kZShpbnRlcmFjdGlvbklkKX0vJHtlbmNvZGUodG9rZW4pfS9tZXNzYWdlcy9Ab3JpZ2luYWxgO1xuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoYXBwbGljYXRpb25JZCwgdG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS8ke2VuY29kZSh0b2tlbil9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIE9BdXRoMiBlbmRwb2ludHNcbiAgICBvYXV0aDI6IHtcbiAgICAgIHRva2VuRXhjaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuJztcbiAgICAgIH0sXG4gICAgICB0b2tlblJldm9rZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4vcmV2b2tlJztcbiAgICAgIH0sXG4gICAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvQG1lJztcbiAgICAgIH0sXG4gICAgICBhcHBsaWNhdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvYXBwbGljYXRpb25zL0BtZSc7XG4gICAgICB9LFxuICAgICAgY29ubmVjdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvdXNlcnMvQG1lL2Nvbm5lY3Rpb25zJztcbiAgICAgIH0sXG4gICAgICByb2xlQ29ubmVjdGlvbnM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3JvbGUtY29ubmVjdGlvbmA7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBtb25ldGl6YXRpb246IHtcbiAgICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9lbnRpdGxlbWVudHM/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7ZW5jb2RlKG9wdGlvbnMuYWZ0ZXIpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtlbmNvZGUob3B0aW9ucy5iZWZvcmUpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUVuZGVkKSB1cmwgKz0gYCZleGNsdWRlX2VuZGVkPSR7ZW5jb2RlKG9wdGlvbnMuZXhjbHVkZUVuZGVkKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmd1aWxkSWQpIHVybCArPSBgJmd1aWxkX2lkPSR7ZW5jb2RlKG9wdGlvbnMuZ3VpbGRJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5za3VJZHMpIHVybCArPSBgJnNrdV9pZHM9JHtlbmNvZGUob3B0aW9ucy5za3VJZHMuam9pbignLCcpKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgZW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW50aXRsZW1lbnRzLyR7ZW5jb2RlKGVudGl0bGVtZW50SWQpfWA7XG4gICAgICB9LFxuICAgICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2VudGl0bGVtZW50cy8ke2VuY29kZShlbnRpdGxlbWVudElkKX0vY29uc3VtZWA7XG4gICAgICB9LFxuXG4gICAgICBza3VzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3NrdXNgO1xuICAgICAgfSxcblxuICAgICAgc3Vic2NyaXB0aW9uOiAoc2t1SWQsIHN1YnNjcmlwdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3NrdXMvJHtlbmNvZGUoc2t1SWQpfS9zdWJzY3JpcHRpb25zLyR7ZW5jb2RlKHN1YnNjcmlwdGlvbklkKX1gO1xuICAgICAgfSxcblxuICAgICAgc3Vic2NyaXB0aW9uczogKHNrdUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3NrdXMvJHtlbmNvZGUoc2t1SWQpfS9zdWJzY3JpcHRpb25zP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBzb3VuZGJvYXJkOiB7XG4gICAgICBzZW5kU291bmQ6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX1gO1xuICAgICAgfSxcbiAgICAgIGxpc3REZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3NvdW5kYm9hcmQtZGVmYXVsdC1zb3VuZHNgO1xuICAgICAgfSxcbiAgICAgIGd1aWxkU291bmRzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NvdW5kYm9hcmQtc291bmRzYDtcbiAgICAgIH0sXG4gICAgICBndWlsZFNvdW5kOiAoZ3VpbGRJZCwgc291bmRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NvdW5kYm9hcmQtc291bmRzLyR7ZW5jb2RlKHNvdW5kSWQpfWA7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBsb2JieToge1xuICAgICAgY3JlYXRlOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2xvYmJpZXMnO1xuICAgICAgfSxcblxuICAgICAgbG9iYnk6IChsb2JieUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIG1lbWJlcjogKGxvYmJ5SWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIGxlYXZlOiAobG9iYnlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9tZW1iZXJzL0BtZWA7XG4gICAgICB9LFxuXG4gICAgICBsaW5rOiAobG9iYnlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9jaGFubmVsLWxpbmtpbmdgO1xuICAgICAgfSxcblxuICAgICAgbWVtYmVyc0J1bGs6IChsb2JieUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9L21lbWJlcnMvYnVsa2A7XG4gICAgICB9LFxuXG4gICAgICBtb2RlcmF0aW9uTWV0YWRhdGE6IChsb2JieUlkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvbG9iYmllcy8ke2VuY29kZShsb2JieUlkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vbW9kZXJhdGlvbi1tZXRhZGF0YWA7XG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlczogKGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvbG9iYmllcy8ke2VuY29kZShsb2JieUlkKX0vbWVzc2FnZXM/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcblxuICAgICAgaW52aXRlU2VsZjogKGxvYmJ5SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvbG9iYmllcy8ke2VuY29kZShsb2JieUlkKX0vbWVtYmVycy9AbWUvaW52aXRlc2A7XG4gICAgICB9LFxuXG4gICAgICBpbnZpdGVVc2VyOiAobG9iYnlJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9L21lbWJlcnMvJHtlbmNvZGUodXNlcklkKX0vaW52aXRlc2A7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBhcHBsaWNhdGlvbkVtb2ppKGFwcGxpY2F0aW9uSWQsIGVtb2ppSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW1vamlzLyR7ZW5jb2RlKGVtb2ppSWQpfWA7XG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uRW1vamlzKGFwcGxpY2F0aW9uSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW1vamlzYDtcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhKGFwcGxpY2F0aW9uSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vcm9sZS1jb25uZWN0aW9ucy9tZXRhZGF0YWA7XG4gICAgfSxcblxuICAgIC8vIFVzZXIgZW5kcG9pbnRzXG4gICAgdXNlcih1c2VySWQpIHtcbiAgICAgIHJldHVybiBgL3VzZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb24oKSB7XG4gICAgICByZXR1cm4gJy9hcHBsaWNhdGlvbnMvQG1lJztcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vYWN0aXZpdHktaW5zdGFuY2VzLyR7ZW5jb2RlKGluc3RhbmNlSWQpfWA7XG4gICAgfSxcblxuICAgIGN1cnJlbnRVc2VyKCkge1xuICAgICAgcmV0dXJuICcvdXNlcnMvQG1lJztcbiAgICB9LFxuXG4gICAgZ2F0ZXdheUJvdCgpIHtcbiAgICAgIHJldHVybiAnL2dhdGV3YXkvYm90JztcbiAgICB9LFxuXG4gICAgc3RpY2tlclBhY2soc3RpY2tlclBhY2tJZCkge1xuICAgICAgcmV0dXJuIGAvc3RpY2tlci1wYWNrcy8ke2VuY29kZShzdGlja2VyUGFja0lkKX1gO1xuICAgIH0sXG5cbiAgICBzdGlja2VyUGFja3MoKSB7XG4gICAgICByZXR1cm4gJy9zdGlja2VyLXBhY2tzJztcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVDb21wb25lbnQodXJpQ29tcG9uZW50OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB1cmlDb21wb25lbnQgIT09ICdzdHJpbmcnKSByZXR1cm4gdXJpQ29tcG9uZW50LnRvU3RyaW5nKCk7XG4gIGlmICgvXlxcZCskLy50ZXN0KHVyaUNvbXBvbmVudCkpIHJldHVybiB1cmlDb21wb25lbnQ7XG5cbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh1cmlDb21wb25lbnQpO1xufVxuIl0sIm5hbWVzIjpbImNhbWVsVG9TbmFrZUNhc2UiLCJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiaXNHZXRNZXNzYWdlc0JlZm9yZSIsImlzR2V0TWVzc2FnZXNMaW1pdCIsImNyZWF0ZVJvdXRlcyIsImRpc2FibGVVUklFbmNvZGUiLCJlbmNvZGUiLCJ4IiwidG9TdHJpbmciLCJlbmNvZGVDb21wb25lbnQiLCJ3ZWJob29rcyIsImlkIiwid2ViaG9va0lkIiwibWVzc2FnZSIsInRva2VuIiwibWVzc2FnZUlkIiwib3B0aW9ucyIsInVybCIsInRocmVhZElkIiwid2l0aENvbXBvbmVudHMiLCJ3ZWJob29rIiwid2FpdCIsInVuZGVmaW5lZCIsImNoYW5uZWxzIiwiYnVsayIsImNoYW5uZWxJZCIsImRtIiwiZG1SZWNpcGllbnQiLCJ1c2VySWQiLCJwaW4iLCJwaW5zIiwibWVzc2FnZVBpbnMiLCJiZWZvcmUiLCJsaW1pdCIsIm1lc3NhZ2VQaW4iLCJyZWFjdGlvbnMiLCJib3QiLCJlbW9qaSIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXIiLCJhbGwiLCJ0eXBlIiwiYWZ0ZXIiLCJjaGFubmVsIiwiZm9sbG93IiwiZm9ydW0iLCJpbnZpdGVzIiwibWVzc2FnZXMiLCJhcm91bmQiLCJvdmVyd3JpdGUiLCJvdmVyd3JpdGVJZCIsImNyb3NzcG9zdCIsInN0YWdlcyIsInN0YWdlIiwidGhyZWFkcyIsImFjdGl2ZSIsImd1aWxkSWQiLCJtZW1iZXJzIiwid2l0aE1lbWJlciIsIm1lIiwiZ2V0VXNlciIsImFyY2hpdmVkIiwicHVibGljIiwiaXNvIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwicHJpdmF0ZSIsImpvaW5lZCIsInR5cGluZyIsInBvbGxzIiwidm90ZXMiLCJhbnN3ZXJJZCIsImV4cGlyZSIsImd1aWxkcyIsInVzZXJHdWlsZHMiLCJ3aXRoQ291bnRzIiwiYXVkaXRsb2dzIiwiYWN0aW9uVHlwZSIsImF1dG9tb2QiLCJydWxlIiwicnVsZUlkIiwicnVsZXMiLCJlbW9qaUlkIiwiZW1vamlzIiwiZXZlbnRzIiwid2l0aFVzZXJDb3VudCIsImV2ZW50IiwiZXZlbnRJZCIsInVzZXJzIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwic2NoZWR1bGVkRXZlbnRJZCIsImludml0ZVRhcmdldFVzZXJzIiwiaW52aXRlVGFyZ2V0VXNlcnNKb2JTdGF0dXMiLCJsZWF2ZSIsImJhbiIsImJhbnMiLCJidWxrQmFuIiwibWVtYmVyIiwiY3VycmVudE1lbWJlciIsInNlYXJjaCIsInF1ZXJ5IiwicHJ1bmUiLCJkYXlzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZVJvbGVzIiwiam9pbiIsIm1lc3NhZ2VzU2VhcmNoIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiaXRlbSIsInByZXZpZXciLCJyb2xlcyIsIm9uZSIsInJvbGVJZCIsIm1lbWJlcklkIiwibWVtYmVyQ291bnRzIiwic3RpY2tlcnMiLCJzdGlja2VyIiwic3RpY2tlcklkIiwidm9pY2UiLCJ0ZW1wbGF0ZXMiLCJjb2RlIiwidmFuaXR5IiwicmVnaW9ucyIsIndlbGNvbWUiLCJ3aWRnZXQiLCJ3aWRnZXRKc29uIiwib25ib2FyZGluZyIsImluY2lkZW50QWN0aW9ucyIsImludGVyYWN0aW9ucyIsImNvbW1hbmRzIiwiYXBwbGljYXRpb25JZCIsIndpdGhMb2NhbGl6YXRpb25zIiwiY29tbWFuZElkIiwicGVybWlzc2lvbnMiLCJwZXJtaXNzaW9uIiwiY29tbWFuZCIsInJlc3BvbnNlcyIsImNhbGxiYWNrIiwiaW50ZXJhY3Rpb25JZCIsIndpdGhSZXNwb25zZSIsIm9yaWdpbmFsIiwib2F1dGgyIiwidG9rZW5FeGNoYW5nZSIsInRva2VuUmV2b2tlIiwiY3VycmVudEF1dGhvcml6YXRpb24iLCJhcHBsaWNhdGlvbiIsImNvbm5lY3Rpb25zIiwicm9sZUNvbm5lY3Rpb25zIiwibW9uZXRpemF0aW9uIiwiZW50aXRsZW1lbnRzIiwiZXhjbHVkZUVuZGVkIiwic2t1SWRzIiwiZW50aXRsZW1lbnQiLCJlbnRpdGxlbWVudElkIiwiY29uc3VtZUVudGl0bGVtZW50Iiwic2t1cyIsInN1YnNjcmlwdGlvbiIsInNrdUlkIiwic3Vic2NyaXB0aW9uSWQiLCJzdWJzY3JpcHRpb25zIiwic291bmRib2FyZCIsInNlbmRTb3VuZCIsImxpc3REZWZhdWx0IiwiZ3VpbGRTb3VuZHMiLCJndWlsZFNvdW5kIiwic291bmRJZCIsImxvYmJ5IiwiY3JlYXRlIiwibG9iYnlJZCIsImxpbmsiLCJtZW1iZXJzQnVsayIsIm1vZGVyYXRpb25NZXRhZGF0YSIsImludml0ZVNlbGYiLCJpbnZpdGVVc2VyIiwiYXBwbGljYXRpb25FbW9qaSIsImFwcGxpY2F0aW9uRW1vamlzIiwiYXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhIiwiYXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlIiwiaW5zdGFuY2VJZCIsImN1cnJlbnRVc2VyIiwiZ2F0ZXdheUJvdCIsInN0aWNrZXJQYWNrIiwic3RpY2tlclBhY2tJZCIsInN0aWNrZXJQYWNrcyIsInVyaUNvbXBvbmVudCIsInRlc3QiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGdCQUFnQixFQUFFQyxrQkFBa0IsRUFBRUMsbUJBQW1CLEVBQUVDLG1CQUFtQixFQUFFQyxrQkFBa0IsUUFBUSxvQkFBb0I7QUFHdkk7Ozs7O0NBS0MsR0FDRCxPQUFPLFNBQVNDLGFBQWFDLG1CQUE0QixLQUFLO0lBQzVELE1BQU1DLFNBQWlDRCxtQkFBbUIsQ0FBQ0UsSUFB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
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AddDmRecipientOptions, AddGuildMemberOptions, AddLobbyMember, AtLeastOne, BeginGuildPrune, BigString, Camelize, CreateApplicationCommand, CreateApplicationEmoji, CreateAutoModerationRuleOptions, CreateChannelInvite, CreateForumPostWithMessage, CreateGlobalApplicationCommandOptions, CreateGroupDmOptions, CreateGuildApplicationCommandOptions, CreateGuildBan, CreateGuildBulkBan, CreateGuildChannel, CreateGuildEmoji, CreateGuildRole, CreateGuildSoundboardSound, CreateGuildStickerOptions, CreateLobby, CreateMessageOptions, CreateScheduledEvent, CreateStageInstance, CreateTemplate, CreateTestEntitlement, CreateWebhook, DeleteWebhookMessageOptions, DiscordAccessTokenResponse, DiscordActivityInstance, DiscordApplication, DiscordApplicationCommand, DiscordApplicationCommandPermissions, DiscordApplicationRoleConnection, DiscordApplicationRoleConnectionMetadata, DiscordAuditLog, DiscordAutoModerationRule, DiscordBan, DiscordBulkBan, DiscordChannel, DiscordConnection, DiscordCurrentAuthorization, DiscordEmoji, DiscordEntitlement, DiscordFollowedChannel, DiscordGetAnswerVotesResponse, DiscordGetChannelPins, DiscordGetGatewayBot, DiscordGuild, DiscordGuildApplicationCommandPermissions, DiscordGuildOnboarding, DiscordGuildPreview, DiscordGuildWidget, DiscordGuildWidgetSettings, DiscordIncidentsData, DiscordIntegration, DiscordInteractionCallbackResponse, DiscordInvite, DiscordInviteMetadata, DiscordListActiveThreads, DiscordListArchivedThreads, DiscordLobby, DiscordLobbyMember, DiscordMember, DiscordMemberWithUser, DiscordMessage, DiscordPrunedCount, DiscordRole, DiscordScheduledEvent, DiscordSku, DiscordSoundboardSound, DiscordStageInstance, DiscordSticker, DiscordStickerPack, DiscordSubscription, DiscordTargetUsersJobStatus, DiscordTemplate, DiscordThreadMember, DiscordTokenExchange, DiscordTokenRevocation, DiscordUser, DiscordVanityUrl, DiscordVoiceRegion, DiscordVoiceState, DiscordWebhook, DiscordWelcomeScreen, EditApplication, EditAutoModerationRuleOptions, EditChannelPermissionOverridesOptions, EditGuildOnboarding, EditGuildRole, EditGuildStickerOptions, EditMessage, EditOwnVoiceState, EditScheduledEvent, EditUserVoiceState, EditWebhookMessageOptions, ExecuteWebhook, FileContent, GetApplicationCommandPermissionOptions, GetBans, GetChannelPinsOptions, GetEntitlements, GetGlobalApplicationCommandsOptions, GetGuildApplicationCommandsOptions, GetGuildAuditLog, GetGuildPruneCountQuery, GetInvite, GetMessagesOptions, GetPollAnswerVotes, GetReactions, GetScheduledEvents, GetScheduledEventUsers, GetThreadMember, GetUserGuilds, GetWebhookMessageOptions, InteractionCallbackData, InteractionCallbackOptions, InteractionResponse, LinkChannelToLobby, ListArchivedThreads, ListGuildMembers, ListSkuSubscriptionsOptions, ListThreadMembers, ModifyApplicationEmoji, ModifyChannel, ModifyCurrentMember, ModifyGuild, ModifyGuildChannelPositions, ModifyGuildEmoji, ModifyGuildIncidentActions, ModifyGuildMember, ModifyGuildSoundboardSound, ModifyGuildTemplate, ModifyGuildWelcomeScreen, ModifyLobby, ModifyRolePositions, ModifyWebhook, SearchMembers, SendSoundboardSound, StartThreadWithMessage, StartThreadWithoutMessage, UpsertGlobalApplicationCommandOptions, UpsertGuildApplicationCommandOptions } from '@discordeno/types';
1
+ import type { AddDmRecipientOptions, AddGuildMemberOptions, AddLobbyMember, AtLeastOne, BeginGuildPrune, BigString, BulkUpdateLobbyMember, Camelize, CreateApplicationCommand, CreateApplicationEmoji, CreateAutoModerationRuleOptions, CreateChannelInvite, CreateForumPostWithMessage, CreateGlobalApplicationCommandOptions, CreateGroupDmOptions, CreateGuildApplicationCommandOptions, CreateGuildBan, CreateGuildBulkBan, CreateGuildChannel, CreateGuildEmoji, CreateGuildRole, CreateGuildSoundboardSound, CreateGuildStickerOptions, CreateLobby, CreateMessageOptions, CreateOrJoinLobby, CreateScheduledEvent, CreateStageInstance, CreateTemplate, CreateTestEntitlement, CreateWebhook, DeleteWebhookMessageOptions, DiscordAccessTokenResponse, DiscordActivityInstance, DiscordApplication, DiscordApplicationCommand, DiscordApplicationCommandPermissions, DiscordApplicationRoleConnection, DiscordApplicationRoleConnectionMetadata, DiscordAuditLog, DiscordAutoModerationRule, DiscordBan, DiscordBulkBan, DiscordChannel, DiscordConnection, DiscordCurrentAuthorization, DiscordEmoji, DiscordEntitlement, DiscordFollowedChannel, DiscordGetAnswerVotesResponse, DiscordGetChannelPins, DiscordGetGatewayBot, DiscordGuild, DiscordGuildApplicationCommandPermissions, DiscordGuildOnboarding, DiscordGuildPreview, DiscordGuildWidget, DiscordGuildWidgetSettings, DiscordIncidentsData, DiscordIntegration, DiscordInteractionCallbackResponse, DiscordInvite, DiscordInviteMetadata, DiscordListActiveThreads, DiscordListArchivedThreads, DiscordLobby, DiscordLobbyInvite, DiscordLobbyMember, DiscordLobbyMessage, DiscordMember, DiscordMemberWithUser, DiscordMessage, DiscordPrunedCount, DiscordRole, DiscordScheduledEvent, DiscordSearchGuildMessages, DiscordSearchGuildMessagesIndexing, DiscordSku, DiscordSoundboardSound, DiscordStageInstance, DiscordSticker, DiscordStickerPack, DiscordSubscription, DiscordTargetUsersJobStatus, DiscordTemplate, DiscordThreadMember, DiscordTokenExchange, DiscordTokenRevocation, DiscordUser, DiscordVanityUrl, DiscordVoiceRegion, DiscordVoiceState, DiscordWebhook, DiscordWelcomeScreen, EditApplication, EditAutoModerationRuleOptions, EditChannelPermissionOverridesOptions, EditGuildOnboarding, EditGuildRole, EditGuildStickerOptions, EditMessage, EditOwnVoiceState, EditScheduledEvent, EditUserVoiceState, EditWebhookMessageOptions, ExecuteWebhook, FileContent, GetApplicationCommandPermissionOptions, GetBans, GetChannelPinsOptions, GetEntitlements, GetGlobalApplicationCommandsOptions, GetGuildApplicationCommandsOptions, GetGuildAuditLog, GetGuildPruneCountQuery, GetInvite, GetLobbyMessages, GetMessagesOptions, GetPollAnswerVotes, GetReactions, GetScheduledEvents, GetScheduledEventUsers, GetThreadMember, GetUserGuilds, GetWebhookMessageOptions, InteractionCallbackData, InteractionCallbackOptions, InteractionResponse, LinkChannelToLobby, ListArchivedThreads, ListGuildMembers, ListSkuSubscriptionsOptions, ListThreadMembers, ModifyApplicationEmoji, ModifyChannel, ModifyCurrentMember, ModifyGuild, ModifyGuildChannelPositions, ModifyGuildEmoji, ModifyGuildIncidentActions, ModifyGuildMember, ModifyGuildSoundboardSound, ModifyGuildTemplate, ModifyGuildWelcomeScreen, ModifyLobby, ModifyRolePositions, ModifyWebhook, SearchGuildMessagesOptions, SearchMembers, SendLobbyMessage, SendSoundboardSound, StartThreadWithMessage, StartThreadWithoutMessage, UpsertGlobalApplicationCommandOptions, UpsertGuildApplicationCommandOptions } from '@discordeno/types';
2
2
  import type { logger } from '@discordeno/utils';
3
3
  import type { InvalidRequestBucket } from './invalidBucket.js';
4
4
  import type { Queue } from './queue.js';
@@ -1885,6 +1885,15 @@ export interface RestManager {
1885
1885
  * @see {@link https://docs.discord.com/developers/resources/channel#get-channel-messages}
1886
1886
  */
1887
1887
  getMessages: (channelId: BigString, options?: GetMessagesOptions) => Promise<Camelize<DiscordMessage>[]>;
1888
+ /**
1889
+ * Search messages in a guild.
1890
+ *
1891
+ * @remarks
1892
+ * Requires `READ_MESSAGE_HISTORY` and is restricted by the `MESSAGE_CONTENT` intent.
1893
+ *
1894
+ * @see {@link https://docs.discord.com/developers/resources/message#search-guild-messages}
1895
+ */
1896
+ searchGuildMessages: (guildId: BigString, options?: SearchGuildMessagesOptions) => Promise<Camelize<DiscordSearchGuildMessages | DiscordSearchGuildMessagesIndexing>>;
1888
1897
  /**
1889
1898
  * Returns a sticker pack for the given ID.
1890
1899
  *
@@ -2991,6 +3000,18 @@ export interface RestManager {
2991
3000
  * @returns The created lobby
2992
3001
  */
2993
3002
  createLobby: (options: CreateLobby) => Promise<Camelize<DiscordLobby>>;
3003
+ /**
3004
+ * Creates a new lobby for the application identified by a `secret`, or joins the calling user to the existing lobby with that secret if one already exists.
3005
+ *
3006
+ * Updates lobby metadata and the calling member's metadata on join.
3007
+ *
3008
+ * @param options - The options to create or join the lobby
3009
+ * @returns - The created or joined lobby
3010
+ *
3011
+ * @remarks
3012
+ * Uses `Bearer` token for authorization with the `sdk.social_layer` scope.
3013
+ */
3014
+ createOrJoinLobby: (options: CreateOrJoinLobby) => Promise<Camelize<DiscordLobby>>;
2994
3015
  /**
2995
3016
  * Returns a lobby object for the specified lobby id, if it exists.
2996
3017
  *
@@ -3024,6 +3045,22 @@ export interface RestManager {
3024
3045
  * @returns The lobby member object
3025
3046
  */
3026
3047
  addMemberToLobby: (lobbyId: BigString, userId: BigString, options: AddLobbyMember) => Promise<Camelize<DiscordLobbyMember>>;
3048
+ /**
3049
+ * Adds, updates, or removes up to 25 members from the specified lobby in a single request.
3050
+ *
3051
+ * @param lobbyId - The ID of the lobby to add, update, or remove members from
3052
+ * @param options - The options to add, update, or remove members from the lobby
3053
+ * @returns Returns an array of lobby member objects for the upserted members. Removed members are not included in the response.
3054
+ *
3055
+ * @remarks
3056
+ * Members with `remove_member: false` (the default) are upserted — added if not present, or updated with the provided metadata and flags if already a member. Members with `remove_member: true` are removed.
3057
+ *
3058
+ * Users unknown to Discord will return a 404 UNKNOWN_USER error.
3059
+ * Users that fail permission checks or who have already reached the maximum number of lobbies per application (and are not already a member of this lobby) are silently dropped from the upsert set.
3060
+ *
3061
+ * @see {@link https://docs.discord.com/developers/resources/lobby#bulk-update-lobby-members}
3062
+ */
3063
+ bulkUpdateLobbyMembers: (lobbyId: BigString, options: BulkUpdateLobbyMember[]) => Promise<Camelize<DiscordLobbyMember>[]>;
3027
3064
  /**
3028
3065
  * Removes the provided user from the specified lobby. It is safe to call this even if the user is no longer a member of the lobby, but will fail if the lobby does not exist.
3029
3066
  *
@@ -3081,6 +3118,62 @@ export interface RestManager {
3081
3118
  * @see {@link https://discord.com/developers/docs/game-sdk/social-sdk/chat-moderation#server-side-chat-moderation} for the full moderation flow.
3082
3119
  */
3083
3120
  updateLobbyMessageModerationMetadata: (lobbyId: BigString, messageId: BigString, options: Record<string, string>) => Promise<void>;
3121
+ /**
3122
+ * Sends a message to the specified lobby. The calling user must be a member of the lobby.
3123
+ *
3124
+ * @param bearerToken - The access token of the user
3125
+ * @param lobbyId - The ID of the lobby to send the message to
3126
+ * @param options - The options to send the message
3127
+ * @returns Returns the created lobby message object.
3128
+ *
3129
+ * @remarks
3130
+ * Uses `Bearer` token for authorization with the `sdk.social_layer` scope.
3131
+ *
3132
+ * If the lobby has a linked channel, the message is also forwarded to that channel.
3133
+ * If forwarding fails (for example, due to AutoMod), the lobby message is still delivered to other lobby members.
3134
+ */
3135
+ sendLobbyMessage: (bearerToken: string, lobbyId: BigString, options: SendLobbyMessage) => Promise<Camelize<DiscordLobbyMessage>>;
3136
+ /**
3137
+ * Returns the most recent messages in the specified lobby. The calling user must be a member of the lobby.
3138
+ *
3139
+ * @param bearerToken - The access token of the user
3140
+ * @param lobbyId - The ID of the lobby to get the messages from
3141
+ * @param options - The options to get the messages
3142
+ * @returns Returns an array of lobby message objects
3143
+ *
3144
+ * @remarks
3145
+ * Uses `Bearer` token for authorization with the `sdk.social_layer` scope.
3146
+ */
3147
+ getLobbyMessages: (bearerToken: string, lobbyId: BigString, options?: GetLobbyMessages) => Promise<Camelize<DiscordLobbyMessage>[]>;
3148
+ /**
3149
+ * Creates a single-use guild invite to the lobby's linked channel, targeted at the calling user.
3150
+ *
3151
+ *
3152
+ * @param bearerToken - The access token of the user
3153
+ * @param lobbyId - The ID of the lobby to create the invite for
3154
+ * @returns The created invite object
3155
+ *
3156
+ * @remarks
3157
+ * Uses `Bearer` token for authorization with the `sdk.social_layer` scope.
3158
+ *
3159
+ * The lobby must have a linked channel and the caller must be a member of the lobby.
3160
+ * The invite expires after one hour.
3161
+ */
3162
+ createLobbyChannelInviteForSelf: (bearerToken: string, lobbyId: BigString) => Promise<Camelize<DiscordLobbyInvite>>;
3163
+ /**
3164
+ * Creates a single-use guild invite to the lobby's linked channel on behalf of an application, targeted at the specified user.
3165
+ *
3166
+ * @param lobbyId - The ID of the lobby to create the invite for
3167
+ * @param userId - The ID of the user to create the invite for
3168
+ * @returns The created invite object
3169
+ *
3170
+ * @remarks
3171
+ * Uses `Bot` token for authorization
3172
+ *
3173
+ * The lobby must have a linked channel.
3174
+ * The invite expires after one hour.
3175
+ */
3176
+ createLobbyChannelInviteForUser: (lobbyId: BigString, userId: BigString) => Promise<Camelize<DiscordLobbyInvite>>;
3084
3177
  }
3085
3178
  export type RequestMethods = 'GET' | 'POST' | 'DELETE' | 'PATCH' | 'PUT';
3086
3179
  export type ApiVersions = 9 | 10;