@discordeno/gateway 19.0.0-next.6f3eb70 → 19.0.0-next.7153262
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.
- package/dist/manager.d.ts +13 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +2 -2
- package/package.json +3 -3
package/dist/manager.d.ts
CHANGED
|
@@ -178,6 +178,19 @@ export interface GatewayManager extends Required<CreateGatewayManagerOptions> {
|
|
|
178
178
|
* @see {@link https://discord.com/developers/docs/topics/gateway#request-guild-members}
|
|
179
179
|
*/
|
|
180
180
|
requestMembers: (guildId: BigString, options?: Omit<RequestGuildMembers, 'guildId'>) => Promise<Camelize<DiscordMember[]>>;
|
|
181
|
+
/**
|
|
182
|
+
* Leaves the voice channel the bot user is currently in.
|
|
183
|
+
*
|
|
184
|
+
* This function sends the _Update Voice State_ gateway command over the gateway behind the scenes.
|
|
185
|
+
*
|
|
186
|
+
* @param guildId - The ID of the guild the voice channel to leave is in.
|
|
187
|
+
*
|
|
188
|
+
* @remarks
|
|
189
|
+
* Fires a _Voice State Update_ gateway event.
|
|
190
|
+
*
|
|
191
|
+
* @see {@link https://discord.com/developers/docs/topics/gateway#update-voice-state}
|
|
192
|
+
*/
|
|
193
|
+
leaveVoiceChannel: (guildId: BigString) => Promise<void>;
|
|
181
194
|
}
|
|
182
195
|
export interface RequestMemberRequest {
|
|
183
196
|
/** The unique nonce for this request. */
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{GatewayIntents as e,GatewayOpcodes as t}from"@discordeno/types";import{Collection as r,createLeakyBucket as
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRMZWFzdE9uZSwgQmlnU3RyaW5nLCBDYW1lbGl6ZSwgRGlzY29yZEdldEdhdGV3YXlCb3QsIERpc2NvcmRNZW1iZXIsIFJlcXVlc3RHdWlsZE1lbWJlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IEdhdGV3YXlJbnRlbnRzLCBHYXRld2F5T3Bjb2RlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBMZWFreUJ1Y2tldCB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgY3JlYXRlTGVha3lCdWNrZXQsIGRlbGF5IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgU2hhcmQgZnJvbSAnLi9TaGFyZC5qcydcbmltcG9ydCB0eXBlIHsgU2hhcmRFdmVudHMsIFN0YXR1c1VwZGF0ZSwgVXBkYXRlVm9pY2VTdGF0ZSB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMpOiBHYXRld2F5TWFuYWdlciB7XG4gIGlmICghb3B0aW9ucy5jb25uZWN0aW9uKSB7XG4gICAgb3B0aW9ucy5jb25uZWN0aW9uID0ge1xuICAgICAgdXJsOiAnd3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnJyxcbiAgICAgIHNoYXJkczogMSxcbiAgICAgIHNlc3Npb25TdGFydExpbWl0OiB7XG4gICAgICAgIG1heENvbmN1cnJlbmN5OiAxLFxuICAgICAgICByZW1haW5pbmc6IDEwMDAsXG4gICAgICAgIHRvdGFsOiAxMDAwLFxuICAgICAgICByZXNldEFmdGVyOiAxMDAwICogNjAgKiA2MCAqIDI0LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBjb25zdCBnYXRld2F5OiBHYXRld2F5TWFuYWdlciA9IHtcbiAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzLFxuICAgIGNvbXByZXNzOiBvcHRpb25zLmNvbXByZXNzID8/IGZhbHNlLFxuICAgIGludGVudHM6IG9wdGlvbnMuaW50ZW50cyA/PyAwLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIG9zOiBvcHRpb25zLnByb3BlcnRpZXM/Lm9zID8/IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICBicm93c2VyOiBvcHRpb25zLnByb3BlcnRpZXM/LmJyb3dzZXIgPz8gJ0Rpc2NvcmRlbm8nLFxuICAgICAgZGV2aWNlOiBvcHRpb25zLnByb3BlcnRpZXM/LmRldmljZSA/PyAnRGlzY29yZGVubycsXG4gICAgfSxcbiAgICB0b2tlbjogb3B0aW9ucy50b2tlbixcbiAgICB1cmw6IG9wdGlvbnMudXJsID8/IG9wdGlvbnMuY29ubmVjdGlvbi51cmwgPz8gJ3dzczovL2dhdGV3YXkuZGlzY29yZC5nZycsXG4gICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IDEwLFxuICAgIGNvbm5lY3Rpb246IG9wdGlvbnMuY29ubmVjdGlvbixcbiAgICB0b3RhbFNoYXJkczogb3B0aW9ucy50b3RhbFNoYXJkcyA/PyBvcHRpb25zLmNvbm5lY3Rpb24uc2hhcmRzID8/IDEsXG4gICAgbGFzdFNoYXJkSWQ6IG9wdGlvbnMubGFzdFNoYXJkSWQgPz8gMCxcbiAgICBmaXJzdFNoYXJkSWQ6IG9wdGlvbnMuZmlyc3RTaGFyZElkID8/IDAsXG4gICAgdG90YWxXb3JrZXJzOiBvcHRpb25zLnRvdGFsV29ya2VycyA/PyA0LFxuICAgIHNoYXJkc1Blcldvcmtlcjogb3B0aW9ucy5zaGFyZHNQZXJXb3JrZXIgPz8gMjUsXG4gICAgc3Bhd25TaGFyZERlbGF5OiBvcHRpb25zLnNwYXduU2hhcmREZWxheSA/PyA1MzAwLFxuICAgIHNoYXJkczogbmV3IE1hcCgpLFxuICAgIGJ1Y2tldHM6IG5ldyBNYXAoKSxcbiAgICBjYWNoZToge1xuICAgICAgcmVxdWVzdE1lbWJlcnM6IHtcbiAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5jYWNoZT8ucmVxdWVzdE1lbWJlcnM/LmVuYWJsZWQgPz8gZmFsc2UsXG4gICAgICAgIHBlbmRpbmc6IG5ldyBDb2xsZWN0aW9uKCksXG4gICAgICB9XG4gICAgfSxcblxuICAgIGNhbGN1bGF0ZVRvdGFsU2hhcmRzKCkge1xuICAgICAgLy8gQm90cyB1bmRlciAxMDBrIHNlcnZlcnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRvdGFsIHNoYXJkcy5cbiAgICAgIGlmIChnYXRld2F5LnRvdGFsU2hhcmRzIDwgMTAwKSByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuXG4gICAgICAvLyBDYWxjdWxhdGUgYSBtdWx0aXBsZSBvZiBgbWF4Q29uY3VycmVuY3lgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgZ2F0ZXdheS50b3RhbFNoYXJkcyAvXG4gICAgICAgICAgICAvLyBJZiBgbWF4Q29uY3VycmVuY3lgIGlzIDEgd2UgY2FuIHNhZmVseSB1c2UgMTYuXG4gICAgICAgICAgICAoZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5ID09PSAxID8gMTYgOiBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpLFxuICAgICAgICApICogZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5XG4gICAgICApXG4gICAgfSxcbiAgICBjYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKSB7XG4gICAgICAvLyBJZ25vcmUgZGVjaW1hbCBudW1iZXJzLlxuICAgICAgbGV0IHdvcmtlcklkID0gTWF0aC5mbG9vcihzaGFyZElkIC8gZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIpXG4gICAgICAvLyBJZiB0aGUgd29ya2VySWQgb3ZlcmZsb3dzIHRoZSBtYXhpbWFsIGFsbG93ZWQgd29ya2VycyB3ZSBieSBkZWZhdWx0IGp1c3QgdXNlIHRvIGxhc3Qgd29ya2VyLlxuICAgICAgaWYgKHdvcmtlcklkID49IGdhdGV3YXkudG90YWxXb3JrZXJzKSB7XG4gICAgICAgIC8vIFRoZSBJZCBvZiB0aGUgbGFzdCBhdmFpbGFibGUgd29ya2VyIGlzIHRvdGFsIC0xXG4gICAgICAgIHdvcmtlcklkID0gZ2F0ZXdheS50b3RhbFdvcmtlcnMgLSAxXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3b3JrZXJJZFxuICAgIH0sXG4gICAgcHJlcGFyZUJ1Y2tldHMoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeTsgKytpKSB7XG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5zZXQoaSwge1xuICAgICAgICAgIHdvcmtlcnM6IFtdLFxuICAgICAgICAgIGxlYWs6IGNyZWF0ZUxlYWt5QnVja2V0KHtcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgIHJlZmlsbEFtb3VudDogMSxcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgbnVtYmVyIHdoaWNoIGlzIHByb3ZlbiB0byBiZSB3b3JraW5nIGRvbnQgY2hhbmdlXG4gICAgICAgICAgICByZWZpbGxJbnRlcnZhbDogZ2F0ZXdheS5zcGF3blNoYXJkRGVsYXksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9SR0FOSVpFIEFMTCBTSEFSRFMgSU5UTyBUSEVJUiBPV04gQlVDS0VUU1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBpZiAoc2hhcmRJZCA+PSBnYXRld2F5LnRvdGFsU2hhcmRzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIGlzIGJpZ2dlciBvciBlcXVhbCB0byB0aGUgdXNlZCBhbW91bnQgb2YgdXNlZCBzaGFyZHMgd2hpY2ggaXMgJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWNrZXRJZCA9IHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3lcbiAgICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChidWNrZXRJZClcbiAgICAgICAgaWYgKGJ1Y2tldCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNoYXJkIChpZDogJHtzaGFyZElkfSkgZ290IGFzc2lnbmVkIHRvIGFuIGlsbGVnYWwgYnVja2V0IGlkOiAke2J1Y2tldElkfSwgZXhwZWN0ZWQgYSBidWNrZXQgaWQgYmV0d2VlbiAwIGFuZCAke1xuICAgICAgICAgICAgICBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgLSAxXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGSU5EIEEgUVVFVUUgSU4gVEhJUyBCVUNLRVQgVEhBVCBIQVMgU1BBQ0VcbiAgICAgICAgLy8gY29uc3Qgd29ya2VyID0gYnVja2V0LndvcmtlcnMuZmluZCgodykgPT4gdy5xdWV1ZS5sZW5ndGggPCBnYXRld2F5LnNoYXJkc1Blcldvcmtlcik7XG4gICAgICAgIGNvbnN0IHdvcmtlcklkID0gZ2F0ZXdheS5jYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKVxuICAgICAgICBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LmlkID09PSB3b3JrZXJJZClcbiAgICAgICAgaWYgKHdvcmtlcikge1xuICAgICAgICAgIC8vIElGIFRIRSBRVUVVRSBIQVMgU1BBQ0UgSlVTVCBBREQgSVQgVE8gVEhJUyBRVUVVRVxuICAgICAgICAgIHdvcmtlci5xdWV1ZS5wdXNoKHNoYXJkSWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVja2V0LndvcmtlcnMucHVzaCh7IGlkOiB3b3JrZXJJZCwgcXVldWU6IFtzaGFyZElkXSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFBSRVBBUkVTIEFMTCBTSEFSRFMgSU4gU1BFQ0lGSUMgQlVDS0VUU1xuICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgIC8vIFByZWZlciBjb25jdXJyZW5jeSBvZiBmb3JFYWNoIGluc3RlYWQgb2YgZm9yb2ZcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKV0ubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnRlbGxXb3JrZXJUb0lkZW50aWZ5KHdvcmtlci5pZCwgc2hhcmRJZCwgYnVja2V0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC8vIGdhdGV3YXkuYnVja2V0cy5mb3JFYWNoKGFzeW5jIChidWNrZXQsIGJ1Y2tldElkKSA9PiB7XG4gICAgICAvLyAgIGZvciAoY29uc3Qgd29ya2VyIG9mIGJ1Y2tldC53b3JrZXJzKSB7XG4gICAgICAvLyAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgLy8gICAgICAgYXdhaXQgZ2F0ZXdheS50ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXIuaWQsIHNoYXJkSWQsIGJ1Y2tldElkKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSlcbiAgICB9LFxuICAgIGFzeW5jIHNodXRkb3duKGNvZGUsIHJlYXNvbikge1xuICAgICAgZ2F0ZXdheS5zaGFyZHMuZm9yRWFjaCgoc2hhcmQpID0+IHNoYXJkLmNsb3NlKGNvZGUsIHJlYXNvbikpXG5cbiAgICAgIGF3YWl0IGRlbGF5KDUwMDApXG4gICAgfSxcbiAgICBhc3luYyB0ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IHRoaXMuY29tcHJlc3MsXG4gICAgICAgICAgICBpbnRlbnRzOiB0aGlzLmludGVudHMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcbiAgICAgICAgICAgIHRvdGFsU2hhcmRzOiB0aGlzLnRvdGFsU2hhcmRzLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuaWRlbnRpZnkoKVxuICAgIH0sXG4gICAgYXN5bmMga2lsbChzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gdGhpcy5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSByZXR1cm5cblxuICAgICAgdGhpcy5zaGFyZHMuZGVsZXRlKHNoYXJkSWQpXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0SWRlbnRpZnkoKSB7fSxcblxuICAgIC8vIEhlbHBlcnMgbWV0aG9kcyBiZWxvdyB0aGlzXG5cbiAgICBjYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQsIHRvdGFsU2hhcmRzKSB7XG4gICAgICAvLyBJZiBub25lIGlzIHByb3ZpZGVkLCB1c2UgdGhlIHRvdGFsIHNoYXJkcyBudW1iZXIgZnJvbSBnYXRld2F5IG9iamVjdC5cbiAgICAgIGlmICghdG90YWxTaGFyZHMpIHRvdGFsU2hhcmRzID0gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgLy8gSWYgaXQgaXMgb25seSAxIHNoYXJkLCBpdCB3aWxsIGFsd2F5cyBiZSBzaGFyZCBpZCAwXG4gICAgICBpZiAodG90YWxTaGFyZHMgPT09IDEpIHJldHVybiAwXG5cbiAgICAgIHJldHVybiBOdW1iZXIoKEJpZ0ludChndWlsZElkKSA+PiAyMm4pICUgQmlnSW50KHRvdGFsU2hhcmRzKSlcbiAgICB9LFxuXG4gICAgYXN5bmMgY29ubmVjdFRvVm9pY2VDaGFubmVsKGd1aWxkSWQsIGNoYW5uZWxJZCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuICAgICAgY29uc3Qgc2hhcmQgPSBnYXRld2F5LnNoYXJkcy5nZXQoc2hhcmRJZClcbiAgICAgIGlmICghc2hhcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0gbm90IGZvdW5kYClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHNoYXJkLnNlbmQoe1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgc2VsZl9tdXRlOiBCb29sZWFuKG9wdGlvbnM/LnNlbGZNdXRlKSxcbiAgICAgICAgICBzZWxmX2RlYWY6IG9wdGlvbnM/LnNlbGZEZWFmID8/IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyBlZGl0Qm90U3RhdHVzKGRhdGEpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCldLm1hcChhc3luYyAoc2hhcmQpID0+IHtcbiAgICAgICAgICBnYXRld2F5LmVkaXRTaGFyZFN0YXR1cyhzaGFyZC5pZCwgZGF0YSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhzaGFyZElkLCBkYXRhKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IGdhdGV3YXkuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJkIChpZDogJHtzaGFyZElkfSkgbm90IGZvdW5kLmApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCBzaGFyZC5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlByZXNlbmNlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgc2luY2U6IG51bGwsXG4gICAgICAgICAgYWZrOiBmYWxzZSxcbiAgICAgICAgICBhY3Rpdml0aWVzOiBkYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMpIHtcbiAgICAgIC8vIFlvdSBjYW4gcmVxdWVzdCAxIG1lbWJlciB3aXRob3V0IHRoZSBpbnRlbnRcbiAgICAgIC8vIENoZWNrIGlmIGludGVudHMgaXMgbm90IDAgYXMgcHJveHkgd3Mgd29uJ3Qgc2V0IGludGVudHMgaW4gb3RoZXIgaW5zdGFuY2VzXG4gICAgICBpZiAoZ2F0ZXdheS5pbnRlbnRzICYmICghb3B0aW9ucz8ubGltaXQgfHwgb3B0aW9ucy5saW1pdCA+IDEpICYmICEoZ2F0ZXdheS5pbnRlbnRzICYgR2F0ZXdheUludGVudHMuR3VpbGRNZW1iZXJzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01JU1NJTkdfSU5URU5UX0dVSUxEX01FTUJFUlMnKVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICAgIG9wdGlvbnMubGltaXQgPSBvcHRpb25zLnVzZXJJZHMubGVuZ3RoXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBub3QgZm91bmQuYClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9uY2UgPSBgJHtndWlsZElkfS0ke0RhdGUubm93KCl9YFxuXG4gICAgICAvLyBHYXRld2F5IGRvZXMgbm90IHJlcXVpcmUgY2FjaGluZyB0aGVzZSByZXF1ZXN0cyBzbyBkaXJlY3RseSBzZW5kIGFuZCByZXR1cm5cbiAgICAgIGlmICghZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycz8uZW5hYmxlZCkge1xuICAgICAgICBhd2FpdCBzaGFyZC5zZW5kKHtcbiAgICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdEd1aWxkTWVtYmVycyxcbiAgICAgICAgICBkOiB7XG4gICAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgLy8gSWYgYSBxdWVyeSBpcyBwcm92aWRlZCB1c2UgaXQsIE9SIGlmIGEgbGltaXQgaXMgTk9UIHByb3ZpZGVkIHVzZSBcIlwiXG4gICAgICAgICAgICBxdWVyeTogb3B0aW9ucz8ucXVlcnkgPz8gKG9wdGlvbnM/LmxpbWl0ID8gdW5kZWZpbmVkIDogJycpLFxuICAgICAgICAgICAgbGltaXQ6IG9wdGlvbnM/LmxpbWl0ID8/IDAsXG4gICAgICAgICAgICBwcmVzZW5jZXM6IG9wdGlvbnM/LnByZXNlbmNlcyA/PyBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJfaWRzOiBvcHRpb25zPy51c2VySWRzPy5tYXAoKGlkKSA9PiBpZC50b1N0cmluZygpKSxcbiAgICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnM/LnBlbmRpbmcuc2V0KG5vbmNlLCB7IG5vbmNlLCByZXNvbHZlLCBtZW1iZXJzOiBbXSB9KVxuXG4gICAgICAgIHNoYXJkLnNlbmQoe1xuICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0R3VpbGRNZW1iZXJzLFxuICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAvLyBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkIHVzZSBpdCwgT1IgaWYgYSBsaW1pdCBpcyBOT1QgcHJvdmlkZWQgdXNlIFwiXCJcbiAgICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICAgIHByZXNlbmNlczogb3B0aW9ucz8ucHJlc2VuY2VzID8/IGZhbHNlLFxuICAgICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgbm9uY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSxcbiAgfVxuXG4gIHJldHVybiBnYXRld2F5XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIElkIG9mIHRoZSBmaXJzdCBTaGFyZCB3aGljaCBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgYnkgdGhpcyBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBmaXJzdFNoYXJkSWQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIElkIG9mIHRoZSBsYXN0IFNoYXJkIHdoaWNoIHNob3VsZCBnZXQgY29udHJvbGxlZCBieSB0aGlzIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGxhc3RTaGFyZElkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBEZWxheSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc3Bhd25pbmcgbmV4dCBzaGFyZC4gT1BUSU1BTCBJUyBBQk9WRSA1MTAwLiBZT1UgRE9OJ1QgV0FOVCBUTyBISVQgVEhFIFJBVEUgTElNSVQhISFcbiAgICogQGRlZmF1bHQgNTMwMFxuICAgKi9cbiAgc3Bhd25TaGFyZERlbGF5PzogbnVtYmVyXG4gIC8qKlxuICAgKiBUb3RhbCBhbW91bnQgb2Ygc2hhcmRzIHlvdXIgYm90IHVzZXMuIFVzZWZ1bCBmb3IgemVyby1kb3dudGltZSB1cGRhdGVzIG9yIHJlc2hhcmRpbmcuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHRvdGFsU2hhcmRzPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHNoYXJkcyB0byBsb2FkIHBlciB3b3JrZXIuXG4gICAqIEBkZWZhdWx0IDI1XG4gICAqL1xuICBzaGFyZHNQZXJXb3JrZXI/OiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBhbW91bnQgb2Ygd29ya2VycyB0byB1c2UgZm9yIHlvdXIgYm90LlxuICAgKiBAZGVmYXVsdCA0XG4gICAqL1xuICB0b3RhbFdvcmtlcnM/OiBudW1iZXJcbiAgLyoqIEltcG9ydGFudCBkYXRhIHdoaWNoIGlzIHVzZWQgYnkgdGhlIG1hbmFnZXIgdG8gY29ubmVjdCBzaGFyZHMgdG8gdGhlIGdhdGV3YXkuICovXG4gIGNvbm5lY3Rpb24/OiBDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD5cbiAgLyoqIFdoZXRoZXIgaW5jb21pbmcgcGF5bG9hZHMgYXJlIGNvbXByZXNzZWQgdXNpbmcgemxpYi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbXByZXNzPzogYm9vbGVhblxuICAvKiogVGhlIGNhbGN1bGF0ZWQgaW50ZW50IHZhbHVlIG9mIHRoZSBldmVudHMgd2hpY2ggdGhlIHNoYXJkIHNob3VsZCByZWNlaXZlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBpbnRlbnRzPzogbnVtYmVyXG4gIC8qKiBJZGVudGlmeSBwcm9wZXJ0aWVzIHRvIHVzZSAqL1xuICBwcm9wZXJ0aWVzPzoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsPzogc3RyaW5nXG4gIC8qKiBUaGUgZ2F0ZXdheSB2ZXJzaW9uIHdoaWNoIHNob3VsZCBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbj86IG51bWJlclxuICAvKiogVGhlIGV2ZW50cyBoYW5kbGVycyAqL1xuICBldmVudHM6IFNoYXJkRXZlbnRzXG4gIC8qKiBUaGlzIG1hbmFnZXJzIGNhY2hlIHJlbGF0ZWQgc2V0dGluZ3MuICovXG4gIGNhY2hlPzoge1xuICAgIHJlcXVlc3RNZW1iZXJzPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICAgIC8qKiBUaGUgcGVuZGluZyByZXF1ZXN0cy4gKi9cbiAgICAgIHBlbmRpbmc6IENvbGxlY3Rpb248c3RyaW5nLCBSZXF1ZXN0TWVtYmVyUmVxdWVzdD5cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5TWFuYWdlciBleHRlbmRzIFJlcXVpcmVkPENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucz4ge1xuICAvKiogVGhlIG1heCBjb25jdXJyZW5jeSBidWNrZXRzLiBUaG9zZSB3aWxsIGJlIGNyZWF0ZWQgd2hlbiB0aGUgYHNwYXduU2hhcmRzYCAod2hpY2ggY2FsbHMgYHByZXBhcmVCdWNrZXRzYCB1bmRlciB0aGUgaG9vZCkgZnVuY3Rpb24gZ2V0cyBjYWxsZWQuICovXG4gIGJ1Y2tldHM6IE1hcDxcbiAgICBudW1iZXIsXG4gICAge1xuICAgICAgd29ya2VyczogQXJyYXk8eyBpZDogbnVtYmVyOyBxdWV1ZTogbnVtYmVyW10gfT5cbiAgICAgIGxlYWs6IExlYWt5QnVja2V0XG4gICAgfVxuICA+XG4gIC8qKiBUaGUgc2hhcmRzIHRoYXQgYXJlIGNyZWF0ZWQuICovXG4gIHNoYXJkczogTWFwPG51bWJlciwgU2hhcmQ+XG4gIC8qKiBEZXRlcm1pbmUgbWF4IG51bWJlciBvZiBzaGFyZHMgdG8gdXNlIGJhc2VkIHVwb24gdGhlIG1heCBjb25jdXJyZW5jeS4gKi9cbiAgY2FsY3VsYXRlVG90YWxTaGFyZHM6ICgpID0+IG51bWJlclxuICAvKiogRGV0ZXJtaW5lIHRoZSBpZCBvZiB0aGUgd29ya2VyIHdoaWNoIGlzIGhhbmRsaW5nIGEgc2hhcmQuICovXG4gIGNhbGN1bGF0ZVdvcmtlcklkOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBudW1iZXJcbiAgLyoqIFByZXBhcmVzIGFsbCB0aGUgYnVja2V0cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGlkZW50aWZ5aW5nIHRoZSBzaGFyZHMuICovXG4gIHByZXBhcmVCdWNrZXRzOiAoKSA9PiB2b2lkXG4gIC8qKiBTdGFydCBpZGVudGlmeWluZyBhbGwgdGhlIHNoYXJkcy4gKi9cbiAgc3Bhd25TaGFyZHM6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFNodXRkb3duIGFsbCBzaGFyZHMuICovXG4gIHNodXRkb3duOiAoY29kZTogbnVtYmVyLCByZWFzb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogQWxsb3dzIHVzZXJzIHRvIGhvb2sgaW4gYW5kIGNoYW5nZSB0byBjb21tdW5pY2F0ZSB0byBkaWZmZXJlbnQgd29ya2VycyBhY3Jvc3MgZGlmZmVyZW50IHNlcnZlcnMgb3IgYW55dGhpbmcgdGhleSBsaWtlLiBGb3IgZXhhbXBsZSB1c2luZyByZWRpcyBwdWJzdWIgdG8gdGFsayB0byBvdGhlciBzZXJ2ZXJzLiAqL1xuICB0ZWxsV29ya2VyVG9JZGVudGlmeTogKHdvcmtlcklkOiBudW1iZXIsIHNoYXJkSWQ6IG51bWJlciwgYnVja2V0SWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGVsbCB0aGUgbWFuYWdlciB0byBpZGVudGlmeSBhIFNoYXJkLiBJZiB0aGlzIFNoYXJkIGlzIG5vdCBhbHJlYWR5IG1hbmFnZWQgdGhpcyB3aWxsIGFsc28gYWRkIHRoZSBTaGFyZCB0byB0aGUgbWFuYWdlci4gKi9cbiAgaWRlbnRpZnk6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEtpbGwgYSBzaGFyZC4gQ2xvc2UgYSBzaGFyZHMgY29ubmVjdGlvbiB0byBEaXNjb3JkJ3MgZ2F0ZXdheSAoaWYgYW55KSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIG1hbmFnZXIuICovXG4gIGtpbGw6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRoaXMgZnVuY3Rpb24gY29tbXVuaWNhdGVzIHdpdGggdGhlIHBhcmVudCBtYW5hZ2VyLCBpbiBvcmRlciB0byBrbm93IHdoZXRoZXIgdGhpcyBtYW5hZ2VyIGlzIGFsbG93ZWQgdG8gaWRlbnRpZnkgYSBuZXcgc2hhcmQuICovXG4gIHJlcXVlc3RJZGVudGlmeTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIHNoYXJkcyBiYXNlZCBvbiB0aGUgZ3VpbGQgaWQgYW5kIHRvdGFsIHNoYXJkcy4gKi9cbiAgY2FsY3VsYXRlU2hhcmRJZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdG90YWxTaGFyZHM/OiBudW1iZXIpID0+IG51bWJlclxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIGJvdCB1c2VyIHRvIGEgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB5b3Ugd2FudCB0byBqb2luLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENPTk5FQ1RgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgY29ubmVjdFRvVm9pY2VDaGFubmVsOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBBdExlYXN0T25lPE9taXQ8VXBkYXRlVm9pY2VTdGF0ZSwgJ2d1aWxkSWQnIHwgJ2NoYW5uZWxJZCc+PixcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgYm90IHN0YXR1cyBpbiBhbGwgc2hhcmRzIHRoYXQgdGhpcyBnYXRld2F5IG1hbmFnZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBzdGF0dXMgZGF0YSB0byBzZXQgdGhlIGJvdHMgc3RhdHVzIHRvLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG4gICAqL1xuICBlZGl0Qm90U3RhdHVzOiAoZGF0YTogU3RhdHVzVXBkYXRlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgYm90J3Mgc3RhdHVzIG9uIG9uZSBzaGFyZC5cbiAgICpcbiAgICogQHBhcmFtIHNoYXJkSWQgVGhlIHNoYXJkIGlkIHRvIGVkaXQgdGhlIHN0YXR1cyBmb3IuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBzdGF0dXMgZGF0YSB0byBzZXQgdGhlIGJvdHMgc3RhdHVzIHRvLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+XG4gICAqL1xuICBlZGl0U2hhcmRTdGF0dXM6IChzaGFyZElkOiBudW1iZXIsIGRhdGE6IFN0YXR1c1VwZGF0ZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvciBhIGd1aWxkIG92ZXIgdGhlIGdhdGV3YXkuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbWVtYmVycy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgcmVxdWVzdGluZyB0aGUgZW50aXJlIG1lbWJlciBsaXN0OlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfTUVNQkVSU2AgaW50ZW50LlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIHByZXNlbmNlcyAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMucHJlc2VuY2VzIHwgcHJlc2VuY2VzfSBzZXQgdG8gYHRydWVgKTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEdVSUxEX1BSRVNFTkNFU2AgaW50ZW50LlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIGEgcHJlZml4ICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5xdWVyeSB8IHF1ZXJ5fSBub24tYHVuZGVmaW5lZGApOlxuICAgKiAtIFJldHVybnMgYSBtYXhpbXVtIG9mIDEwMCBtZW1iZXJzLlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIGEgdXNlcnMgYnkgSUQgKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnVzZXJJZHMgfCB1c2VySWRzfSBub24tYHVuZGVmaW5lZGApOlxuICAgKiAtIFJldHVybnMgYSBtYXhpbXVtIG9mIDEwMCBtZW1iZXJzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXJzIENodW5rXyBnYXRld2F5IGV2ZW50IGZvciBldmVyeSAxMDAwIG1lbWJlcnMgZmV0Y2hlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjcmVxdWVzdC1ndWlsZC1tZW1iZXJzfVxuICAgKi9cbiAgcmVxdWVzdE1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBPbWl0PFJlcXVlc3RHdWlsZE1lbWJlcnMsICdndWlsZElkJz4pID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcltdPj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0TWVtYmVyUmVxdWVzdCB7XG4gIC8qKiBUaGUgdW5pcXVlIG5vbmNlIGZvciB0aGlzIHJlcXVlc3QuICovXG4gIG5vbmNlOiBzdHJpbmdcbiAgLyoqIFRoZSByZXNvbHZlciBoYW5kbGVyIHRvIHJ1biB3aGVuIGFsbCBtZW1iZXJzIGFycml2ZS4gKi9cbiAgcmVzb2x2ZTogKHZhbHVlOiBDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyW10+IHwgUHJvbWlzZUxpa2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcltdPj4pID0+IHZvaWRcbiAgLyoqIFRoZSBtZW1iZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IGFycml2ZWQgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbWVtYmVyczogQ2FtZWxpemU8RGlzY29yZE1lbWJlcltdPlxufVxuIl0sIm5hbWVzIjpbIkdhdGV3YXlJbnRlbnRzIiwiR2F0ZXdheU9wY29kZXMiLCJDb2xsZWN0aW9uIiwiY3JlYXRlTGVha3lCdWNrZXQiLCJkZWxheSIsIlNoYXJkIiwiY3JlYXRlR2F0ZXdheU1hbmFnZXIiLCJvcHRpb25zIiwiY29ubmVjdGlvbiIsInVybCIsInNoYXJkcyIsInNlc3Npb25TdGFydExpbWl0IiwibWF4Q29uY3VycmVuY3kiLCJyZW1haW5pbmciLCJ0b3RhbCIsInJlc2V0QWZ0ZXIiLCJnYXRld2F5IiwiZXZlbnRzIiwiY29tcHJlc3MiLCJpbnRlbnRzIiwicHJvcGVydGllcyIsIm9zIiwicHJvY2VzcyIsInBsYXRmb3JtIiwiYnJvd3NlciIsImRldmljZSIsInRva2VuIiwidmVyc2lvbiIsInRvdGFsU2hhcmRzIiwibGFzdFNoYXJkSWQiLCJmaXJzdFNoYXJkSWQiLCJ0b3RhbFdvcmtlcnMiLCJzaGFyZHNQZXJXb3JrZXIiLCJzcGF3blNoYXJkRGVsYXkiLCJNYXAiLCJidWNrZXRzIiwiY2FjaGUiLCJyZXF1ZXN0TWVtYmVycyIsImVuYWJsZWQiLCJwZW5kaW5nIiwiY2FsY3VsYXRlVG90YWxTaGFyZHMiLCJNYXRoIiwiY2VpbCIsImNhbGN1bGF0ZVdvcmtlcklkIiwic2hhcmRJZCIsIndvcmtlcklkIiwiZmxvb3IiLCJwcmVwYXJlQnVja2V0cyIsImkiLCJzZXQiLCJ3b3JrZXJzIiwibGVhayIsIm1heCIsInJlZmlsbEFtb3VudCIsInJlZmlsbEludGVydmFsIiwiRXJyb3IiLCJidWNrZXRJZCIsImJ1Y2tldCIsImdldCIsIndvcmtlciIsImZpbmQiLCJ3IiwiaWQiLCJxdWV1ZSIsInB1c2giLCJzcGF3blNoYXJkcyIsIlByb21pc2UiLCJhbGwiLCJlbnRyaWVzIiwibWFwIiwidGVsbFdvcmtlclRvSWRlbnRpZnkiLCJzaHV0ZG93biIsImNvZGUiLCJyZWFzb24iLCJmb3JFYWNoIiwic2hhcmQiLCJjbG9zZSIsImlkZW50aWZ5Iiwia2lsbCIsImRlbGV0ZSIsInJlcXVlc3RJZGVudGlmeSIsImNhbGN1bGF0ZVNoYXJkSWQiLCJndWlsZElkIiwiTnVtYmVyIiwiQmlnSW50IiwiY29ubmVjdFRvVm9pY2VDaGFubmVsIiwiY2hhbm5lbElkIiwic2VuZCIsIm9wIiwiVm9pY2VTdGF0ZVVwZGF0ZSIsImQiLCJndWlsZF9pZCIsInRvU3RyaW5nIiwiY2hhbm5lbF9pZCIsInNlbGZfbXV0ZSIsIkJvb2xlYW4iLCJzZWxmTXV0ZSIsInNlbGZfZGVhZiIsInNlbGZEZWFmIiwiZWRpdEJvdFN0YXR1cyIsImRhdGEiLCJ2YWx1ZXMiLCJlZGl0U2hhcmRTdGF0dXMiLCJQcmVzZW5jZVVwZGF0ZSIsInNpbmNlIiwiYWZrIiwiYWN0aXZpdGllcyIsInN0YXR1cyIsImxpbWl0IiwiR3VpbGRNZW1iZXJzIiwidXNlcklkcyIsImxlbmd0aCIsIm5vbmNlIiwiRGF0ZSIsIm5vdyIsInJlc29sdmUiLCJtZW1iZXJzIiwiUmVxdWVzdEd1aWxkTWVtYmVycyIsInF1ZXJ5IiwidW5kZWZpbmVkIiwicHJlc2VuY2VzIiwidXNlcl9pZHMiXSwibWFwcGluZ3MiOiJBQUNBLE9BQVNBLGtCQUFBQSxDQUFjLENBQUVDLGtCQUFBQSxDQUFjLEtBQVEsbUJBQW1CLEFBRWxFLFFBQVNDLGNBQUFBLENBQVUsQ0FBRUMscUJBQUFBLENBQWlCLENBQUVDLFNBQUFBLENBQUssS0FBUSxtQkFBbUIsQUFDeEUsUUFBT0MsTUFBVyxZQUFZLEFBRzlCLFFBQU8sU0FBU0MscUJBQXFCQyxDQUFvQyxDQUFrQixDQUNwRkEsRUFBUUMsVUFBVSxFQUNyQkQsQ0FBQUEsRUFBUUMsVUFBVSxDQUFHLENBQ25CQyxJQUFLLDJCQUNMQyxPQUFRLEVBQ1JDLGtCQUFt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
|
|
1
|
+
import{GatewayIntents as e,GatewayOpcodes as t}from"@discordeno/types";import{Collection as r,createLeakyBucket as a,delay as s,logger as i}from"@discordeno/utils";import n from"./Shard.js";export function createGatewayManager(d){d.connection||(d.connection={url:"wss://gateway.discord.gg",shards:1,sessionStartLimit:{maxConcurrency:1,remaining:1e3,total:1e3,resetAfter:864e5}});let o={events:d.events,compress:d.compress??!1,intents:d.intents??0,properties:{os:d.properties?.os??process.platform,browser:d.properties?.browser??"Discordeno",device:d.properties?.device??"Discordeno"},token:d.token,url:d.url??d.connection.url??"wss://gateway.discord.gg",version:d.version??10,connection:d.connection,totalShards:d.totalShards??d.connection.shards??1,lastShardId:d.lastShardId??0,firstShardId:d.firstShardId??0,totalWorkers:d.totalWorkers??4,shardsPerWorker:d.shardsPerWorker??25,spawnShardDelay:d.spawnShardDelay??5300,shards:new Map,buckets:new Map,cache:{requestMembers:{enabled:d.cache?.requestMembers?.enabled??!1,pending:new r}},calculateTotalShards:()=>o.totalShards<100?(i.debug(`[Gateway] Calculating total shards: ${o.totalShards}`),o.totalShards):(i.debug("[Gateway] Calculating total shards",o.totalShards,o.connection.sessionStartLimit.maxConcurrency),Math.ceil(o.totalShards/(1===o.connection.sessionStartLimit.maxConcurrency?16:o.connection.sessionStartLimit.maxConcurrency))*o.connection.sessionStartLimit.maxConcurrency),calculateWorkerId(e){let t=Math.floor(e/o.shardsPerWorker);return t>=o.totalWorkers&&(t=o.totalWorkers-1),i.debug(`[Gateway] Calculating workerId: Shard: ${e} -> Worker: ${t} -> Per Worker: ${o.shardsPerWorker} -> Total: ${o.totalWorkers}`),t},prepareBuckets(){for(let e=0;e<o.connection.sessionStartLimit.maxConcurrency;++e)i.debug(`[Gateway] Preparing buckets for concurrency: ${e}`),o.buckets.set(e,{workers:[],leak:a({max:1,refillAmount:1,refillInterval:o.spawnShardDelay})});for(let t=o.firstShardId;t<=o.lastShardId;++t){if(i.debug(`[Gateway] Preparing buckets for shard: ${t}`),t>=o.totalShards)throw Error(`Shard (id: ${t}) is bigger or equal to the used amount of used shards which is ${o.totalShards}`);let r=t%o.connection.sessionStartLimit.maxConcurrency,s=o.buckets.get(r);if(!s)throw Error(`Shard (id: ${t}) got assigned to an illegal bucket id: ${r}, expected a bucket id between 0 and ${o.connection.sessionStartLimit.maxConcurrency-1}`);let n=o.calculateWorkerId(t),d=s.workers.find(e=>e.id===n);d?d.queue.push(t):s.workers.push({id:n,queue:[t]})}},async spawnShards(){o.prepareBuckets(),await Promise.all([...o.buckets.entries()].map(async([e,t])=>{for(let r of t.workers)for(let a of r.queue)await o.tellWorkerToIdentify(r.id,a,e)}))},async shutdown(e,t){o.shards.forEach(r=>r.close(e,t)),await s(5e3)},tellWorkerToIdentify:async(e,t,r)=>(i.debug(`[Gateway] tell worker to identify (${e}, ${t}, ${r})`),await o.identify(t)),async identify(e){let t=this.shards.get(e);return i.debug(`[Gateway] identifying ${t?"existing":"new"} shard (${e})`),t||(t=new n({id:e,connection:{compress:this.compress,intents:this.intents,properties:this.properties,token:this.token,totalShards:this.totalShards,url:this.url,version:this.version},events:d.events}),this.shards.set(e,t)),await t.identify()},async kill(e){let t=this.shards.get(e);return t?(i.debug(`[Gateway] kill shard (${e})`),this.shards.delete(e),await t.shutdown()):i.debug(`[Gateway] kill shard but not found (${e})`)},async requestIdentify(){i.debug("[Gateway] requesting identify")},calculateShardId:(e,t)=>(t||(t=o.totalShards),1===t)?(i.debug("[Gateway] calculateShardId (1 shard)"),0):(i.debug(`[Gateway] calculateShardId (guildId: ${e}, totalShards: ${t})`),Number((BigInt(e)>>22n)%BigInt(t))),async connectToVoiceChannel(e,r,a){let s=o.calculateShardId(e),n=o.shards.get(s);if(!n)throw Error(`Shard (id: ${s} not found`);return i.debug(`[Gateway] connectToVoiceChannel guildId: ${e} channelId: ${r}`),await n.send({op:t.VoiceStateUpdate,d:{guild_id:e.toString(),channel_id:r.toString(),self_mute:Boolean(a?.selfMute),self_deaf:a?.selfDeaf??!0}})},async editBotStatus(e){i.debug(`[Gateway] editBotStatus data: ${JSON.stringify(e)}`),await Promise.all([...o.shards.values()].map(async t=>{o.editShardStatus(t.id,e)}))},async editShardStatus(e,r){let a=o.shards.get(e);if(!a)throw Error(`Shard (id: ${e}) not found.`);return i.debug(`[Gateway] editShardStatus shardId: ${e} -> data: ${JSON.stringify(r)}`),await a.send({op:t.PresenceUpdate,d:{since:null,afk:!1,activities:r.activities,status:r.status}})},async requestMembers(r,a){if(o.intents&&(!a?.limit||a.limit>1)&&!(o.intents&e.GuildMembers))throw Error("MISSING_INTENT_GUILD_MEMBERS");a?.userIds?.length&&(i.debug(`[Gateway] requestMembers guildId: ${r} -> setting user limit based on userIds length: ${a.userIds.length}`),a.limit=a.userIds.length);let s=o.calculateShardId(r),n=o.shards.get(s);if(!n)throw Error(`Shard (id: ${s}) not found.`);let d=`${r}-${Date.now()}`;return o.cache.requestMembers?.enabled?await new Promise(e=>{o.cache.requestMembers?.pending.set(d,{nonce:d,resolve:e,members:[]}),i.debug(`[Gateway] requestMembers guildId: ${r} -> requesting members -> data: ${JSON.stringify(a)}`),n.send({op:t.RequestGuildMembers,d:{guild_id:r.toString(),query:a?.query??(a?.limit?void 0:""),limit:a?.limit??0,presences:a?.presences??!1,user_ids:a?.userIds?.map(e=>e.toString()),nonce:d}})}):(i.debug(`[Gateway] requestMembers guildId: ${r} -> skipping cache -> options ${JSON.stringify(a)}`),await n.send({op:t.RequestGuildMembers,d:{guild_id:r.toString(),query:a?.query??(a?.limit?void 0:""),limit:a?.limit??0,presences:a?.presences??!1,user_ids:a?.userIds?.map(e=>e.toString()),nonce:d}}),[])},async leaveVoiceChannel(e){let r=o.calculateShardId(e),a=o.shards.get(r);if(!a)throw Error(`Shard (id: ${r} not found`);return i.debug(`[Gateway] leaveVoiceChannel guildId: ${e}`),await a.send({op:t.VoiceStateUpdate,d:{guild_id:e.toString(),channel_id:null,self_mute:!1,self_deaf:!1}})}};return o}
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRMZWFzdE9uZSwgQmlnU3RyaW5nLCBDYW1lbGl6ZSwgRGlzY29yZEdldEdhdGV3YXlCb3QsIERpc2NvcmRNZW1iZXIsIFJlcXVlc3RHdWlsZE1lbWJlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgeyBHYXRld2F5SW50ZW50cywgR2F0ZXdheU9wY29kZXMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IExlYWt5QnVja2V0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgY3JlYXRlTGVha3lCdWNrZXQsIGRlbGF5LCBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgU2hhcmQgZnJvbSAnLi9TaGFyZC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJkRXZlbnRzLCBTdGF0dXNVcGRhdGUsIFVwZGF0ZVZvaWNlU3RhdGUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdhdGV3YXlNYW5hZ2VyKG9wdGlvbnM6IENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyk6IEdhdGV3YXlNYW5hZ2VyIHtcbiAgaWYgKCFvcHRpb25zLmNvbm5lY3Rpb24pIHtcbiAgICBvcHRpb25zLmNvbm5lY3Rpb24gPSB7XG4gICAgICB1cmw6ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgICAgc2hhcmRzOiAxLFxuICAgICAgc2Vzc2lvblN0YXJ0TGltaXQ6IHtcbiAgICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgICAgIHJlbWFpbmluZzogMTAwMCxcbiAgICAgICAgdG90YWw6IDEwMDAsXG4gICAgICAgIHJlc2V0QWZ0ZXI6IDEwMDAgKiA2MCAqIDYwICogMjQsXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdhdGV3YXk6IEdhdGV3YXlNYW5hZ2VyID0ge1xuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMsXG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gZmFsc2UsXG4gICAgaW50ZW50czogb3B0aW9ucy5pbnRlbnRzID8/IDAsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgb3M6IG9wdGlvbnMucHJvcGVydGllcz8ub3MgPz8gcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGJyb3dzZXI6IG9wdGlvbnMucHJvcGVydGllcz8uYnJvd3NlciA/PyAnRGlzY29yZGVubycsXG4gICAgICBkZXZpY2U6IG9wdGlvbnMucHJvcGVydGllcz8uZGV2aWNlID8/ICdEaXNjb3JkZW5vJyxcbiAgICB9LFxuICAgIHRva2VuOiBvcHRpb25zLnRva2VuLFxuICAgIHVybDogb3B0aW9ucy51cmwgPz8gb3B0aW9ucy5jb25uZWN0aW9uLnVybCA/PyAnd3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnJyxcbiAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gMTAsXG4gICAgY29ubmVjdGlvbjogb3B0aW9ucy5jb25uZWN0aW9uLFxuICAgIHRvdGFsU2hhcmRzOiBvcHRpb25zLnRvdGFsU2hhcmRzID8/IG9wdGlvbnMuY29ubmVjdGlvbi5zaGFyZHMgPz8gMSxcbiAgICBsYXN0U2hhcmRJZDogb3B0aW9ucy5sYXN0U2hhcmRJZCA/PyAwLFxuICAgIGZpcnN0U2hhcmRJZDogb3B0aW9ucy5maXJzdFNoYXJkSWQgPz8gMCxcbiAgICB0b3RhbFdvcmtlcnM6IG9wdGlvbnMudG90YWxXb3JrZXJzID8/IDQsXG4gICAgc2hhcmRzUGVyV29ya2VyOiBvcHRpb25zLnNoYXJkc1BlcldvcmtlciA/PyAyNSxcbiAgICBzcGF3blNoYXJkRGVsYXk6IG9wdGlvbnMuc3Bhd25TaGFyZERlbGF5ID8/IDUzMDAsXG4gICAgc2hhcmRzOiBuZXcgTWFwKCksXG4gICAgYnVja2V0czogbmV3IE1hcCgpLFxuICAgIGNhY2hlOiB7XG4gICAgICByZXF1ZXN0TWVtYmVyczoge1xuICAgICAgICBlbmFibGVkOiBvcHRpb25zLmNhY2hlPy5yZXF1ZXN0TWVtYmVycz8uZW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgcGVuZGluZzogbmV3IENvbGxlY3Rpb24oKSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIGNhbGN1bGF0ZVRvdGFsU2hhcmRzKCkge1xuICAgICAgLy8gQm90cyB1bmRlciAxMDBrIHNlcnZlcnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRvdGFsIHNoYXJkcy5cbiAgICAgIGlmIChnYXRld2F5LnRvdGFsU2hhcmRzIDwgMTAwKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIENhbGN1bGF0aW5nIHRvdGFsIHNoYXJkczogJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApO1xuICAgICAgICByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB0b3RhbCBzaGFyZHNgLCBnYXRld2F5LnRvdGFsU2hhcmRzLCBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpO1xuICAgICAgLy8gQ2FsY3VsYXRlIGEgbXVsdGlwbGUgb2YgYG1heENvbmN1cnJlbmN5YCB3aGljaCBjYW4gYmUgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBnYXRld2F5LlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgTWF0aC5jZWlsKFxuICAgICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgL1xuICAgICAgICAgICAgLy8gSWYgYG1heENvbmN1cnJlbmN5YCBpcyAxIHdlIGNhbiBzYWZlbHkgdXNlIDE2LlxuICAgICAgICAgICAgKGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSA9PT0gMSA/IDE2IDogZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KSxcbiAgICAgICAgKSAqIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeVxuICAgICAgKVxuICAgIH0sXG4gICAgY2FsY3VsYXRlV29ya2VySWQoc2hhcmRJZCkge1xuICAgICAgLy8gSWdub3JlIGRlY2ltYWwgbnVtYmVycy5cbiAgICAgIGxldCB3b3JrZXJJZCA9IE1hdGguZmxvb3Ioc2hhcmRJZCAvIGdhdGV3YXkuc2hhcmRzUGVyV29ya2VyKVxuICAgICAgLy8gSWYgdGhlIHdvcmtlcklkIG92ZXJmbG93cyB0aGUgbWF4aW1hbCBhbGxvd2VkIHdvcmtlcnMgd2UgYnkgZGVmYXVsdCBqdXN0IHVzZSB0byBsYXN0IHdvcmtlci5cbiAgICAgIGlmICh3b3JrZXJJZCA+PSBnYXRld2F5LnRvdGFsV29ya2Vycykge1xuICAgICAgICAvLyBUaGUgSWQgb2YgdGhlIGxhc3QgYXZhaWxhYmxlIHdvcmtlciBpcyB0b3RhbCAtMVxuICAgICAgICB3b3JrZXJJZCA9IGdhdGV3YXkudG90YWxXb3JrZXJzIC0gMVxuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB3b3JrZXJJZDogU2hhcmQ6ICR7c2hhcmRJZH0gLT4gV29ya2VyOiAke3dvcmtlcklkfSAtPiBQZXIgV29ya2VyOiAke2dhdGV3YXkuc2hhcmRzUGVyV29ya2VyfSAtPiBUb3RhbDogJHtnYXRld2F5LnRvdGFsV29ya2Vyc31gKTtcblxuICAgICAgcmV0dXJuIHdvcmtlcklkXG4gICAgfSxcbiAgICBwcmVwYXJlQnVja2V0cygpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5OyArK2kpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gUHJlcGFyaW5nIGJ1Y2tldHMgZm9yIGNvbmN1cnJlbmN5OiAke2l9YCk7XG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5zZXQoaSwge1xuICAgICAgICAgIHdvcmtlcnM6IFtdLFxuICAgICAgICAgIGxlYWs6IGNyZWF0ZUxlYWt5QnVja2V0KHtcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgIHJlZmlsbEFtb3VudDogMSxcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgbnVtYmVyIHdoaWNoIGlzIHByb3ZlbiB0byBiZSB3b3JraW5nIGRvbnQgY2hhbmdlXG4gICAgICAgICAgICByZWZpbGxJbnRlcnZhbDogZ2F0ZXdheS5zcGF3blNoYXJkRGVsYXksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9SR0FOSVpFIEFMTCBTSEFSRFMgSU5UTyBUSEVJUiBPV04gQlVDS0VUU1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBQcmVwYXJpbmcgYnVja2V0cyBmb3Igc2hhcmQ6ICR7c2hhcmRJZH1gKTtcbiAgICAgICAgaWYgKHNoYXJkSWQgPj0gZ2F0ZXdheS50b3RhbFNoYXJkcykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBpcyBiaWdnZXIgb3IgZXF1YWwgdG8gdGhlIHVzZWQgYW1vdW50IG9mIHVzZWQgc2hhcmRzIHdoaWNoIGlzICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVja2V0SWQgPSBzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5XG4gICAgICAgIGNvbnN0IGJ1Y2tldCA9IGdhdGV3YXkuYnVja2V0cy5nZXQoYnVja2V0SWQpXG4gICAgICAgIGlmICghYnVja2V0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNoYXJkIChpZDogJHtzaGFyZElkfSkgZ290IGFzc2lnbmVkIHRvIGFuIGlsbGVnYWwgYnVja2V0IGlkOiAke2J1Y2tldElkfSwgZXhwZWN0ZWQgYSBidWNrZXQgaWQgYmV0d2VlbiAwIGFuZCAke1xuICAgICAgICAgICAgICBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgLSAxXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGSU5EIEEgUVVFVUUgSU4gVEhJUyBCVUNLRVQgVEhBVCBIQVMgU1BBQ0VcbiAgICAgICAgLy8gY29uc3Qgd29ya2VyID0gYnVja2V0LndvcmtlcnMuZmluZCgodykgPT4gdy5xdWV1ZS5sZW5ndGggPCBnYXRld2F5LnNoYXJkc1Blcldvcmtlcik7XG4gICAgICAgIGNvbnN0IHdvcmtlcklkID0gZ2F0ZXdheS5jYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKVxuICAgICAgICBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LmlkID09PSB3b3JrZXJJZClcbiAgICAgICAgaWYgKHdvcmtlcikge1xuICAgICAgICAgIC8vIElGIFRIRSBRVUVVRSBIQVMgU1BBQ0UgSlVTVCBBREQgSVQgVE8gVEhJUyBRVUVVRVxuICAgICAgICAgIHdvcmtlci5xdWV1ZS5wdXNoKHNoYXJkSWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVja2V0LndvcmtlcnMucHVzaCh7IGlkOiB3b3JrZXJJZCwgcXVldWU6IFtzaGFyZElkXSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFBSRVBBUkVTIEFMTCBTSEFSRFMgSU4gU1BFQ0lGSUMgQlVDS0VUU1xuICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgIC8vIFByZWZlciBjb25jdXJyZW5jeSBvZiBmb3JFYWNoIGluc3RlYWQgb2YgZm9yb2ZcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKV0ubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnRlbGxXb3JrZXJUb0lkZW50aWZ5KHdvcmtlci5pZCwgc2hhcmRJZCwgYnVja2V0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9LFxuICAgIGFzeW5jIHNodXRkb3duKGNvZGUsIHJlYXNvbikge1xuICAgICAgZ2F0ZXdheS5zaGFyZHMuZm9yRWFjaCgoc2hhcmQpID0+IHNoYXJkLmNsb3NlKGNvZGUsIHJlYXNvbikpXG5cbiAgICAgIGF3YWl0IGRlbGF5KDUwMDApXG4gICAgfSxcbiAgICBhc3luYyB0ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHRlbGwgd29ya2VyIHRvIGlkZW50aWZ5ICgke3dvcmtlcklkfSwgJHtzaGFyZElkfSwgJHtidWNrZXRJZH0pYClcbiAgICAgIHJldHVybiBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgbG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gaWRlbnRpZnlpbmcgJHtzaGFyZCA/ICdleGlzdGluZycgOiAnbmV3J30gc2hhcmQgKCR7c2hhcmRJZH0pYClcblxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IHRoaXMuY29tcHJlc3MsXG4gICAgICAgICAgICBpbnRlbnRzOiB0aGlzLmludGVudHMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcbiAgICAgICAgICAgIHRvdGFsU2hhcmRzOiB0aGlzLnRvdGFsU2hhcmRzLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuaWRlbnRpZnkoKVxuICAgIH0sXG4gICAgYXN5bmMga2lsbChzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gdGhpcy5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHJldHVybiBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBraWxsIHNoYXJkIGJ1dCBub3QgZm91bmQgKCR7c2hhcmRJZH0pYClcbiAgICAgIH1cblxuICAgICAgbG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0ga2lsbCBzaGFyZCAoJHtzaGFyZElkfSlgKVxuICAgICAgdGhpcy5zaGFyZHMuZGVsZXRlKHNoYXJkSWQpXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0SWRlbnRpZnkoKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0aW5nIGlkZW50aWZ5YClcbiAgICB9LFxuXG4gICAgLy8gSGVscGVycyBtZXRob2RzIGJlbG93IHRoaXNcblxuICAgIGNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZCwgdG90YWxTaGFyZHMpIHtcbiAgICAgIC8vIElmIG5vbmUgaXMgcHJvdmlkZWQsIHVzZSB0aGUgdG90YWwgc2hhcmRzIG51bWJlciBmcm9tIGdhdGV3YXkgb2JqZWN0LlxuICAgICAgaWYgKCF0b3RhbFNoYXJkcykgdG90YWxTaGFyZHMgPSBnYXRld2F5LnRvdGFsU2hhcmRzXG4gICAgICAvLyBJZiBpdCBpcyBvbmx5IDEgc2hhcmQsIGl0IHdpbGwgYWx3YXlzIGJlIHNoYXJkIGlkIDBcbiAgICAgIGlmICh0b3RhbFNoYXJkcyA9PT0gMSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBjYWxjdWxhdGVTaGFyZElkICgxIHNoYXJkKWApO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBjYWxjdWxhdGVTaGFyZElkIChndWlsZElkOiAke2d1aWxkSWR9LCB0b3RhbFNoYXJkczogJHt0b3RhbFNoYXJkc30pYCk7XG4gICAgICByZXR1cm4gTnVtYmVyKChCaWdJbnQoZ3VpbGRJZCkgPj4gMjJuKSAlIEJpZ0ludCh0b3RhbFNoYXJkcykpXG4gICAgfSxcblxuICAgIGFzeW5jIGNvbm5lY3RUb1ZvaWNlQ2hhbm5lbChndWlsZElkLCBjaGFubmVsSWQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9IG5vdCBmb3VuZGApXG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGNvbm5lY3RUb1ZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IGNoYW5uZWxJZDogJHtjaGFubmVsSWR9YClcbiAgICAgIHJldHVybiBhd2FpdCBzaGFyZC5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlZvaWNlU3RhdGVVcGRhdGUsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYW5uZWxfaWQ6IGNoYW5uZWxJZC50b1N0cmluZygpLFxuICAgICAgICAgIHNlbGZfbXV0ZTogQm9vbGVhbihvcHRpb25zPy5zZWxmTXV0ZSksXG4gICAgICAgICAgc2VsZl9kZWFmOiBvcHRpb25zPy5zZWxmRGVhZiA/PyB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgYXN5bmMgZWRpdEJvdFN0YXR1cyhkYXRhKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBlZGl0Qm90U3RhdHVzIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCldLm1hcChhc3luYyAoc2hhcmQpID0+IHtcbiAgICAgICAgICBnYXRld2F5LmVkaXRTaGFyZFN0YXR1cyhzaGFyZC5pZCwgZGF0YSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhzaGFyZElkLCBkYXRhKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IGdhdGV3YXkuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJkIChpZDogJHtzaGFyZElkfSkgbm90IGZvdW5kLmApXG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGVkaXRTaGFyZFN0YXR1cyBzaGFyZElkOiAke3NoYXJkSWR9IC0+IGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICAgIHJldHVybiBhd2FpdCBzaGFyZC5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlByZXNlbmNlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgc2luY2U6IG51bGwsXG4gICAgICAgICAgYWZrOiBmYWxzZSxcbiAgICAgICAgICBhY3Rpdml0aWVzOiBkYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMpIHtcbiAgICAgIC8vIFlvdSBjYW4gcmVxdWVzdCAxIG1lbWJlciB3aXRob3V0IHRoZSBpbnRlbnRcbiAgICAgIC8vIENoZWNrIGlmIGludGVudHMgaXMgbm90IDAgYXMgcHJveHkgd3Mgd29uJ3Qgc2V0IGludGVudHMgaW4gb3RoZXIgaW5zdGFuY2VzXG4gICAgICBpZiAoZ2F0ZXdheS5pbnRlbnRzICYmICghb3B0aW9ucz8ubGltaXQgfHwgb3B0aW9ucy5saW1pdCA+IDEpICYmICEoZ2F0ZXdheS5pbnRlbnRzICYgR2F0ZXdheUludGVudHMuR3VpbGRNZW1iZXJzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01JU1NJTkdfSU5URU5UX0dVSUxEX01FTUJFUlMnKVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gc2V0dGluZyB1c2VyIGxpbWl0IGJhc2VkIG9uIHVzZXJJZHMgbGVuZ3RoOiAke29wdGlvbnMudXNlcklkcy5sZW5ndGh9YClcbiAgICAgICAgb3B0aW9ucy5saW1pdCA9IG9wdGlvbnMudXNlcklkcy5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuICAgICAgY29uc3Qgc2hhcmQgPSBnYXRld2F5LnNoYXJkcy5nZXQoc2hhcmRJZClcbiAgICAgIGlmICghc2hhcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIG5vdCBmb3VuZC5gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBub25jZSA9IGAke2d1aWxkSWR9LSR7RGF0ZS5ub3coKX1gXG5cbiAgICAgIC8vIEdhdGV3YXkgZG9lcyBub3QgcmVxdWlyZSBjYWNoaW5nIHRoZXNlIHJlcXVlc3RzIHNvIGRpcmVjdGx5IHNlbmQgYW5kIHJldHVyblxuICAgICAgaWYgKCFnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzPy5lbmFibGVkKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gc2tpcHBpbmcgY2FjaGUgLT4gb3B0aW9ucyAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG4gICAgICAgIGF3YWl0IHNoYXJkLnNlbmQoe1xuICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0R3VpbGRNZW1iZXJzLFxuICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAvLyBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkIHVzZSBpdCwgT1IgaWYgYSBsaW1pdCBpcyBOT1QgcHJvdmlkZWQgdXNlIFwiXCJcbiAgICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICAgIHByZXNlbmNlczogb3B0aW9ucz8ucHJlc2VuY2VzID8/IGZhbHNlLFxuICAgICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgbm9uY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzPy5wZW5kaW5nLnNldChub25jZSwgeyBub25jZSwgcmVzb2x2ZSwgbWVtYmVyczogW10gfSlcblxuICAgICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0TWVtYmVycyBndWlsZElkOiAke2d1aWxkSWR9IC0+IHJlcXVlc3RpbmcgbWVtYmVycyAtPiBkYXRhOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG4gICAgICAgIHNoYXJkLnNlbmQoe1xuICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0R3VpbGRNZW1iZXJzLFxuICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAvLyBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkIHVzZSBpdCwgT1IgaWYgYSBsaW1pdCBpcyBOT1QgcHJvdmlkZWQgdXNlIFwiXCJcbiAgICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICAgIHByZXNlbmNlczogb3B0aW9ucz8ucHJlc2VuY2VzID8/IGZhbHNlLFxuICAgICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgbm9uY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIGxlYXZlVm9pY2VDaGFubmVsKGd1aWxkSWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9IG5vdCBmb3VuZGApXG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGxlYXZlVm9pY2VDaGFubmVsIGd1aWxkSWQ6ICR7Z3VpbGRJZH1gKVxuICAgICAgcmV0dXJuIGF3YWl0IHNoYXJkLnNlbmQoe1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogbnVsbCxcbiAgICAgICAgICBzZWxmX211dGU6IGZhbHNlLFxuICAgICAgICAgIHNlbGZfZGVhZjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gZ2F0ZXdheVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgZmlyc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgZmlyc3RTaGFyZElkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgbGFzdCBTaGFyZCB3aGljaCBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgYnkgdGhpcyBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBsYXN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNwYXduaW5nIG5leHQgc2hhcmQuIE9QVElNQUwgSVMgQUJPVkUgNTEwMC4gWU9VIERPTidUIFdBTlQgVE8gSElUIFRIRSBSQVRFIExJTUlUISEhXG4gICAqIEBkZWZhdWx0IDUzMDBcbiAgICovXG4gIHNwYXduU2hhcmREZWxheT86IG51bWJlclxuICAvKipcbiAgICogVG90YWwgYW1vdW50IG9mIHNoYXJkcyB5b3VyIGJvdCB1c2VzLiBVc2VmdWwgZm9yIHplcm8tZG93bnRpbWUgdXBkYXRlcyBvciByZXNoYXJkaW5nLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkcz86IG51bWJlclxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBzaGFyZHMgdG8gbG9hZCBwZXIgd29ya2VyLlxuICAgKiBAZGVmYXVsdCAyNVxuICAgKi9cbiAgc2hhcmRzUGVyV29ya2VyPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgYW1vdW50IG9mIHdvcmtlcnMgdG8gdXNlIGZvciB5b3VyIGJvdC5cbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgdG90YWxXb3JrZXJzPzogbnVtYmVyXG4gIC8qKiBJbXBvcnRhbnQgZGF0YSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBtYW5hZ2VyIHRvIGNvbm5lY3Qgc2hhcmRzIHRvIHRoZSBnYXRld2F5LiAqL1xuICBjb25uZWN0aW9uPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzcz86IGJvb2xlYW5cbiAgLyoqIFRoZSBjYWxjdWxhdGVkIGludGVudCB2YWx1ZSBvZiB0aGUgZXZlbnRzIHdoaWNoIHRoZSBzaGFyZCBzaG91bGQgcmVjZWl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaW50ZW50cz86IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllcz86IHtcbiAgICAvKiogT3BlcmF0aW5nIHN5c3RlbSB0aGUgc2hhcmQgcnVucyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZGFyd2luXCIgfCBcImxpbnV4XCIgfCBcIndpbmRvd3NcIlxuICAgICAqL1xuICAgIG9zOiBzdHJpbmdcbiAgICAvKiogVGhlIFwiYnJvd3NlclwiIHdoZXJlIHRoaXMgc2hhcmQgaXMgcnVubmluZyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgYnJvd3Nlcjogc3RyaW5nXG4gICAgLyoqIFRoZSBkZXZpY2Ugb24gd2hpY2ggdGhlIHNoYXJkIGlzIHJ1bm5pbmcuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGRldmljZTogc3RyaW5nXG4gIH1cbiAgLyoqIEJvdCB0b2tlbiB3aGljaCBpcyB1c2VkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBUaGUgVVJMIG9mIHRoZSBnYXRld2F5IHdoaWNoIHNob3VsZCBiZSBjb25uZWN0ZWQgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnXCJcbiAgICovXG4gIHVybD86IHN0cmluZ1xuICAvKiogVGhlIGdhdGV3YXkgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHZlcnNpb24/OiBudW1iZXJcbiAgLyoqIFRoZSBldmVudHMgaGFuZGxlcnMgKi9cbiAgZXZlbnRzOiBTaGFyZEV2ZW50c1xuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZT86IHtcbiAgICByZXF1ZXN0TWVtYmVycz86IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciBvciBub3QgcmVxdWVzdCBtZW1iZXIgcmVxdWVzdHMgc2hvdWxkIGJlIGNhY2hlZC5cbiAgICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKiogVGhlIHBlbmRpbmcgcmVxdWVzdHMuICovXG4gICAgICBwZW5kaW5nOiBDb2xsZWN0aW9uPHN0cmluZywgUmVxdWVzdE1lbWJlclJlcXVlc3Q+XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICBsZWFrOiBMZWFreUJ1Y2tldFxuICAgIH1cbiAgPlxuICAvKiogVGhlIHNoYXJkcyB0aGF0IGFyZSBjcmVhdGVkLiAqL1xuICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAvKiogRGV0ZXJtaW5lIG1heCBudW1iZXIgb2Ygc2hhcmRzIHRvIHVzZSBiYXNlZCB1cG9uIHRoZSBtYXggY29uY3VycmVuY3kuICovXG4gIGNhbGN1bGF0ZVRvdGFsU2hhcmRzOiAoKSA9PiBudW1iZXJcbiAgLyoqIERldGVybWluZSB0aGUgaWQgb2YgdGhlIHdvcmtlciB3aGljaCBpcyBoYW5kbGluZyBhIHNoYXJkLiAqL1xuICBjYWxjdWxhdGVXb3JrZXJJZDogKHNoYXJkSWQ6IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKiBQcmVwYXJlcyBhbGwgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc2hhcmRzLiAqL1xuICBwcmVwYXJlQnVja2V0czogKCkgPT4gdm9pZFxuICAvKiogU3RhcnQgaWRlbnRpZnlpbmcgYWxsIHRoZSBzaGFyZHMuICovXG4gIHNwYXduU2hhcmRzOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0ZG93biBhbGwgc2hhcmRzLiAqL1xuICBzaHV0ZG93bjogKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEFsbG93cyB1c2VycyB0byBob29rIGluIGFuZCBjaGFuZ2UgdG8gY29tbXVuaWNhdGUgdG8gZGlmZmVyZW50IHdvcmtlcnMgYWNyb3NzIGRpZmZlcmVudCBzZXJ2ZXJzIG9yIGFueXRoaW5nIHRoZXkgbGlrZS4gRm9yIGV4YW1wbGUgdXNpbmcgcmVkaXMgcHVic3ViIHRvIHRhbGsgdG8gb3RoZXIgc2VydmVycy4gKi9cbiAgdGVsbFdvcmtlclRvSWRlbnRpZnk6ICh3b3JrZXJJZDogbnVtYmVyLCBzaGFyZElkOiBudW1iZXIsIGJ1Y2tldElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRlbGwgdGhlIG1hbmFnZXIgdG8gaWRlbnRpZnkgYSBTaGFyZC4gSWYgdGhpcyBTaGFyZCBpcyBub3QgYWxyZWFkeSBtYW5hZ2VkIHRoaXMgd2lsbCBhbHNvIGFkZCB0aGUgU2hhcmQgdG8gdGhlIG1hbmFnZXIuICovXG4gIGlkZW50aWZ5OiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBLaWxsIGEgc2hhcmQuIENsb3NlIGEgc2hhcmRzIGNvbm5lY3Rpb24gdG8gRGlzY29yZCdzIGdhdGV3YXkgKGlmIGFueSkgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBtYW5hZ2VyLiAqL1xuICBraWxsOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBUaGlzIGZ1bmN0aW9uIGNvbW11bmljYXRlcyB3aXRoIHRoZSBwYXJlbnQgbWFuYWdlciwgaW4gb3JkZXIgdG8ga25vdyB3aGV0aGVyIHRoaXMgbWFuYWdlciBpcyBhbGxvd2VkIHRvIGlkZW50aWZ5IGEgbmV3IHNoYXJkLiAqL1xuICByZXF1ZXN0SWRlbnRpZnk6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBzaGFyZHMgYmFzZWQgb24gdGhlIGd1aWxkIGlkIGFuZCB0b3RhbCBzaGFyZHMuICovXG4gIGNhbGN1bGF0ZVNoYXJkSWQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHRvdGFsU2hhcmRzPzogbnVtYmVyKSA9PiBudW1iZXJcbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBib3QgdXNlciB0byBhIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgeW91IHdhbnQgdG8gam9pbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBDT05ORUNUYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9Wb2ljZSBTdGF0ZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGNvbm5lY3RUb1ZvaWNlQ2hhbm5lbDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogQXRMZWFzdE9uZTxPbWl0PFVwZGF0ZVZvaWNlU3RhdGUsICdndWlsZElkJyB8ICdjaGFubmVsSWQnPj4sXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCBzdGF0dXMgaW4gYWxsIHNoYXJkcyB0aGF0IHRoaXMgZ2F0ZXdheSBtYW5hZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuICAgKi9cbiAgZWRpdEJvdFN0YXR1czogKGRhdGE6IFN0YXR1c1VwZGF0ZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCdzIHN0YXR1cyBvbiBvbmUgc2hhcmQuXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZElkIFRoZSBzaGFyZCBpZCB0byBlZGl0IHRoZSBzdGF0dXMgZm9yLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuICAgKi9cbiAgZWRpdFNoYXJkU3RhdHVzOiAoc2hhcmRJZDogbnVtYmVyLCBkYXRhOiBTdGF0dXNVcGRhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IgYSBndWlsZCBvdmVyIHRoZSBnYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIG1lbWJlcnMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHJlcXVlc3RpbmcgdGhlIGVudGlyZSBtZW1iZXIgbGlzdDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEdVSUxEX01FTUJFUlNgIGludGVudC5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBwcmVzZW5jZXMgKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnByZXNlbmNlcyB8IHByZXNlbmNlc30gc2V0IHRvIGB0cnVlYCk6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9QUkVTRU5DRVNgIGludGVudC5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBhIHByZWZpeCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMucXVlcnkgfCBxdWVyeX0gbm9uLWB1bmRlZmluZWRgKTpcbiAgICogLSBSZXR1cm5zIGEgbWF4aW11bSBvZiAxMDAgbWVtYmVycy5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBhIHVzZXJzIGJ5IElEICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy51c2VySWRzIHwgdXNlcklkc30gbm9uLWB1bmRlZmluZWRgKTpcbiAgICogLSBSZXR1cm5zIGEgbWF4aW11bSBvZiAxMDAgbWVtYmVycy5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVycyBDaHVua18gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgMTAwMCBtZW1iZXJzIGZldGNoZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3JlcXVlc3QtZ3VpbGQtbWVtYmVyc31cbiAgICovXG4gIHJlcXVlc3RNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogT21pdDxSZXF1ZXN0R3VpbGRNZW1iZXJzLCAnZ3VpbGRJZCc+KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXJbXT4+XG4gIC8qKlxuICAgKiBMZWF2ZXMgdGhlIHZvaWNlIGNoYW5uZWwgdGhlIGJvdCB1c2VyIGlzIGN1cnJlbnRseSBpbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfVm9pY2UgU3RhdGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN1cGRhdGUtdm9pY2Utc3RhdGV9XG4gICAqL1xuICBsZWF2ZVZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RNZW1iZXJSZXF1ZXN0IHtcbiAgLyoqIFRoZSB1bmlxdWUgbm9uY2UgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbm9uY2U6IHN0cmluZ1xuICAvKiogVGhlIHJlc29sdmVyIGhhbmRsZXIgdG8gcnVuIHdoZW4gYWxsIG1lbWJlcnMgYXJyaXZlLiAqL1xuICByZXNvbHZlOiAodmFsdWU6IENhbWVsaXplPERpc2NvcmRNZW1iZXJbXT4gfCBQcm9taXNlTGlrZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyW10+PikgPT4gdm9pZFxuICAvKiogVGhlIG1lbWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgYXJyaXZlZCBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBtZW1iZXJzOiBDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyW10+XG59XG4iXSwibmFtZXMiOlsiR2F0ZXdheUludGVudHMiLCJHYXRld2F5T3Bjb2RlcyIsIkNvbGxlY3Rpb24iLCJjcmVhdGVMZWFreUJ1Y2tldCIsImRlbGF5IiwibG9nZ2VyIiwiU2hhcmQiLCJjcmVhdGVHYXRld2F5TWFuYWdlciIsIm9wdGlvbnMiLCJjb25uZWN0aW9uIiwidXJsIiwic2hhcmRzIiwic2Vzc2lvblN0YXJ0TGltaXQiLCJtYXhDb25jdXJyZW5jeSIsInJlbWFpbmluZyIsInRvdGFsIiwicmVzZXRBZnRlciIsImdhdGV3YXkiLCJldmVudHMiLCJjb21wcmVzcyIsImludGVudHMiLCJwcm9wZXJ0aWVzIiwib3MiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJicm93c2VyIiwiZGV2aWNlIiwidG9rZW4iLCJ2ZXJzaW9uIiwidG90YWxTaGFyZHMiLCJsYXN0U2hhcmRJZCIsImZpcnN0U2hhcmRJZCIsInRvdGFsV29ya2VycyIsInNoYXJkc1BlcldvcmtlciIsInNwYXduU2hhcmREZWxheSIsIk1hcCIsImJ1Y2tldHMiLCJjYWNoZSIsInJlcXVlc3RNZW1iZXJzIiwiZW5hYmxlZCIsInBlbmRpbmciLCJjYWxjdWxhdGVUb3RhbFNoYXJkcyIsImRlYnVnIiwiTWF0aCIsImNlaWwiLCJjYWxjdWxhdGVXb3JrZXJJZCIsInNoYXJkSWQiLCJ3b3JrZXJJZCIsImZsb29yIiwicHJlcGFyZUJ1Y2tldHMiLCJpIiwic2V0Iiwid29ya2VycyIsImxlYWsiLCJtYXgiLCJyZWZpbGxBbW91bnQiLCJyZWZpbGxJbnRlcnZhbCIsIkVycm9yIiwiYnVja2V0SWQiLCJidWNrZXQiLCJnZXQiLCJ3b3JrZXIiLCJmaW5kIiwidyIsImlkIiwicXVldWUiLCJwdXNoIiwic3Bhd25TaGFyZHMiLCJQcm9taXNlIiwiYWxsIiwiZW50cmllcyIsIm1hcCIsInRlbGxXb3JrZXJUb0lkZW50aWZ5Iiwic2h1dGRvd24iLCJjb2RlIiwicmVhc29uIiwiZm9yRWFjaCIsInNoYXJkIiwiY2xvc2UiLCJpZGVudGlmeSIsImtpbGwiLCJkZWxldGUiLCJyZXF1ZXN0SWRlbnRpZnkiLCJjYWxjdWxhdGVTaGFyZElkIiwiZ3VpbGRJZCIsIk51bWJlciIsIkJpZ0ludCIsImNvbm5lY3RUb1ZvaWNlQ2hhbm5lbCIsImNoYW5uZWxJZCIsInNlbmQiLCJvcCIsIlZvaWNlU3RhdGVVcGRhdGUiLCJkIiwiZ3VpbGRfaWQiLCJ0b1N0cmluZyIsImNoYW5uZWxfaWQiLCJzZWxmX211dGUiLCJCb29sZWFuIiwic2VsZk11dGUiLCJzZWxmX2RlYWYiLCJzZWxmRGVhZiIsImVkaXRCb3RTdGF0dXMiLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsInZhbHVlcyIsImVkaXRTaGFyZFN0YXR1cyIsIlByZXNlbmNlVXBkYXRlIiwic2luY2UiLCJhZmsiLCJhY3Rpdml0aWVzIiwic3RhdHVzIiwibGltaXQiLCJHdWlsZE1lbWJlcnMiLCJ1c2VySWRzIiwibGVuZ3RoIiwibm9uY2UiLCJEYXRlIiwibm93IiwicmVzb2x2ZSIsIm1lbWJlcnMiLCJSZXF1ZXN0R3VpbGRNZW1iZXJzIiwicXVlcnkiLCJ1bmRlZmluZWQiLCJwcmVzZW5jZXMiLCJ1c2VyX2lkcyIsImxlYXZlVm9pY2VDaGFubmVsIl0sIm1hcHBpbmdzIjoiQUFDQSxPQUFTQSxrQkFBQUEsQ0FBYyxDQUFFQyxrQkFBQUEsQ0FBYyxLQUFRLG1CQUFvQixBQUVuRSxRQUFTQyxjQUFBQSxDQUFVLENBQUVDLHFCQUFBQSxDQUFpQixDQUFFQyxTQUFBQSxDQUFLLENBQUVDLFVBQUFBLENBQU0sS0FBUSxtQkFBb0IsQUFDakYsUUFBT0MsTUFBVyxZQUFhLEFBRy9CLFFBQU8sU0FBU0MscUJBQXFCQyxDQUFvQyxDQUFrQixDQUNwRkEsRUFBUUMsVUFBVSxFQUNyQkQsQ0FBQUEsRUFBUUMsVUFBVSxDQUFHLENBQ25CQyxJQUFLLDJCQUNMQyxPQUFRLEVBQ1JDLGtCQUFtQixDQUNqQkMsZUFBZ0IsRUFDaEJDLFVBQVcsSUFDWEMsTUFBTyxJ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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@discordeno/gateway",
|
|
3
|
-
"version": "19.0.0-next.
|
|
3
|
+
"version": "19.0.0-next.7153262",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"test:test-type": "tsc --project tsconfig.test.json"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@discordeno/types": "19.0.0-next.
|
|
28
|
-
"@discordeno/utils": "19.0.0-next.
|
|
27
|
+
"@discordeno/types": "19.0.0-next.7153262",
|
|
28
|
+
"@discordeno/utils": "19.0.0-next.7153262",
|
|
29
29
|
"ws": "^8.11.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|