@discordeno/gateway 21.0.1-next.c86c512 → 21.0.1-next.d203fc7
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/cjs/Shard.cjs +2 -2
- package/dist/cjs/manager.cjs +1 -1
- package/dist/cjs/types.cjs +1 -1
- package/dist/esm/Shard.js +3 -3
- package/dist/esm/manager.js +2 -2
- package/dist/esm/types.js +1 -1
- package/dist/types/Shard.d.ts.map +1 -1
- package/dist/types/manager.d.ts.map +1 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/esm/manager.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
2
|
import { GatewayIntents, GatewayOpcodes } from '@discordeno/types';
|
|
3
|
-
import { Collection,
|
|
3
|
+
import { Collection, jsonSafeReplacer, LeakyBucket, logger } from '@discordeno/utils';
|
|
4
4
|
import Shard from './Shard.js';
|
|
5
5
|
import { ShardSocketCloseCodes } from './types.js';
|
|
6
6
|
export function createGatewayManager(options) {
|
|
@@ -461,4 +461,4 @@ export function createGatewayManager(options) {
|
|
|
461
461
|
return gateway;
|
|
462
462
|
}
|
|
463
463
|
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQge1xuICB0eXBlIEF0TGVhc3RPbmUsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENhbWVsaXplLFxuICB0eXBlIERpc2NvcmRHZXRHYXRld2F5Qm90LFxuICB0eXBlIERpc2NvcmRNZW1iZXJXaXRoVXNlcixcbiAgdHlwZSBEaXNjb3JkUmVhZHksXG4gIHR5cGUgRGlzY29yZFVwZGF0ZVByZXNlbmNlLFxuICBHYXRld2F5SW50ZW50cyxcbiAgR2F0ZXdheU9wY29kZXMsXG4gIHR5cGUgUmVxdWVzdEd1aWxkTWVtYmVycyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBMZWFreUJ1Y2tldCwganNvblNhZmVSZXBsYWNlciwgbG9nZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgU2hhcmQgZnJvbSAnLi9TaGFyZC5qcydcbmltcG9ydCB7IHR5cGUgU2hhcmRFdmVudHMsIFNoYXJkU29ja2V0Q2xvc2VDb2RlcywgdHlwZSBTaGFyZFNvY2tldFJlcXVlc3QsIHR5cGUgVHJhbnNwb3J0Q29tcHJlc3Npb24sIHR5cGUgVXBkYXRlVm9pY2VTdGF0ZSB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMpOiBHYXRld2F5TWFuYWdlciB7XG4gIGNvbnN0IGNvbm5lY3Rpb25PcHRpb25zID0gb3B0aW9ucy5jb25uZWN0aW9uID8/IHtcbiAgICB1cmw6ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgIHNoYXJkczogMSxcbiAgICBzZXNzaW9uU3RhcnRMaW1pdDoge1xuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgICByZW1haW5pbmc6IDEwMDAsXG4gICAgICB0b3RhbDogMTAwMCxcbiAgICAgIHJlc2V0QWZ0ZXI6IDEwMDAgKiA2MCAqIDYwICogMjQsXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IGdhdGV3YXk6IEdhdGV3YXlNYW5hZ2VyID0ge1xuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMgPz8ge30sXG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gZmFsc2UsXG4gICAgdHJhbnNwb3J0Q29tcHJlc3Npb246IG9wdGlvbnMudHJhbnNwb3J0Q29tcHJlc3Npb24gPz8gbnVsbCxcbiAgICBpbnRlbnRzOiBvcHRpb25zLmludGVudHMgPz8gMCxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBvczogb3B0aW9ucy5wcm9wZXJ0aWVzPy5vcyA/PyBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgYnJvd3Nlcjogb3B0aW9ucy5wcm9wZXJ0aWVzPy5icm93c2VyID8/ICdEaXNjb3JkZW5vJyxcbiAgICAgIGRldmljZTogb3B0aW9ucy5wcm9wZXJ0aWVzPy5kZXZpY2UgPz8gJ0Rpc2NvcmRlbm8nLFxuICAgIH0sXG4gICAgdG9rZW46IG9wdGlvbnMudG9rZW4sXG4gICAgdXJsOiBvcHRpb25zLnVybCA/PyBjb25uZWN0aW9uT3B0aW9ucy51cmwgPz8gJ3dzczovL2dhdGV3YXkuZGlzY29yZC5nZycsXG4gICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IDEwLFxuICAgIGNvbm5lY3Rpb246IGNvbm5lY3Rpb25PcHRpb25zLFxuICAgIHRvdGFsU2hhcmRzOiBvcHRpb25zLnRvdGFsU2hhcmRzID8/IGNvbm5lY3Rpb25PcHRpb25zLnNoYXJkcyA/PyAxLFxuICAgIGxhc3RTaGFyZElkOiBvcHRpb25zLmxhc3RTaGFyZElkID8/IChvcHRpb25zLnRvdGFsU2hhcmRzID8gb3B0aW9ucy50b3RhbFNoYXJkcyAtIDEgOiBjb25uZWN0aW9uT3B0aW9ucyA/IGNvbm5lY3Rpb25PcHRpb25zLnNoYXJkcyAtIDEgOiAwKSxcbiAgICBmaXJzdFNoYXJkSWQ6IG9wdGlvbnMuZmlyc3RTaGFyZElkID8/IDAsXG4gICAgdG90YWxXb3JrZXJzOiBvcHRpb25zLnRvdGFsV29ya2VycyA/PyA0LFxuICAgIHNoYXJkc1Blcldvcmtlcjogb3B0aW9ucy5zaGFyZHNQZXJXb3JrZXIgPz8gMjUsXG4gICAgc3Bhd25TaGFyZERlbGF5OiBvcHRpb25zLnNwYXduU2hhcmREZWxheSA/PyA1MzAwLFxuICAgIHNwcmVhZFNoYXJkc0luUm91bmRSb2Jpbjogb3B0aW9ucy5zcHJlYWRTaGFyZHNJblJvdW5kUm9iaW4gPz8gZmFsc2UsXG4gICAgcHJlZmVyU25ha2VDYXNlOiBvcHRpb25zLnByZWZlclNuYWtlQ2FzZSA/PyBmYWxzZSxcbiAgICBzaGFyZHM6IG5ldyBNYXAoKSxcbiAgICBidWNrZXRzOiBuZXcgTWFwKCksXG4gICAgY2FjaGU6IHtcbiAgICAgIHJlcXVlc3RNZW1iZXJzOiB7XG4gICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuY2FjaGU/LnJlcXVlc3RNZW1iZXJzPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICBwZW5kaW5nOiBuZXcgQ29sbGVjdGlvbigpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIgPz8gbG9nZ2VyLFxuICAgIG1ha2VQcmVzZW5jZTogb3B0aW9ucy5tYWtlUHJlc2VuY2UgPz8gKCgpID0+IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpKSxcbiAgICByZXNoYXJkaW5nOiB7XG4gICAgICBlbmFibGVkOiBvcHRpb25zLnJlc2hhcmRpbmc/LmVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgIHNoYXJkc0Z1bGxQZXJjZW50YWdlOiBvcHRpb25zLnJlc2hhcmRpbmc/LnNoYXJkc0Z1bGxQZXJjZW50YWdlID8/IDgwLFxuICAgICAgY2hlY2tJbnRlcnZhbDogb3B0aW9ucy5yZXNoYXJkaW5nPy5jaGVja0ludGVydmFsID8/IDI4ODAwMDAwLCAvLyA4IGhvdXJzXG4gICAgICBzaGFyZHM6IG5ldyBNYXAoKSxcbiAgICAgIGdldFNlc3Npb25JbmZvOiBvcHRpb25zLnJlc2hhcmRpbmc/LmdldFNlc3Npb25JbmZvLFxuICAgICAgdXBkYXRlR3VpbGRzU2hhcmRJZDogb3B0aW9ucy5yZXNoYXJkaW5nPy51cGRhdGVHdWlsZHNTaGFyZElkLFxuICAgICAgYXN5bmMgY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCgpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoJ1tSZXNoYXJkaW5nXSBDaGVja2luZyBpZiByZXNoYXJkaW5nIGlzIG5lZWRlZC4nKVxuXG4gICAgICAgIGlmICghZ2F0ZXdheS5yZXNoYXJkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZGlzYWJsZWQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFnYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbUmVzaGFyZGluZ10gUmVzaGFyZGluZyBpcyBlbmFibGVkIGJ1dCBubyAncmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbygpJyBpcyBub3QgcHJvdmlkZWQuXCIpXG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZW5hYmxlZC4nKVxuXG4gICAgICAgIGNvbnN0IHNlc3Npb25JbmZvID0gYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKClcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1Jlc2hhcmRpbmddIFNlc3Npb24gaW5mbyByZXRyaWV2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoc2Vzc2lvbkluZm8pfWApXG5cbiAgICAgICAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2ggaWRlbnRpZnkgbGltaXRzIHRvIHRyeSByZXNoYXJkaW5nXG4gICAgICAgIGlmIChzZXNzaW9uSW5mby5zZXNzaW9uU3RhcnRMaW1pdC5yZW1haW5pbmcgPCBzZXNzaW9uSW5mby5zaGFyZHMpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIE5vdCBlbm91Z2ggc2Vzc2lvbiBzdGFydCBsaW1pdHMgbGVmdCB0byByZXNoYXJkLicpXG5cbiAgICAgICAgICByZXR1cm4geyBuZWVkZWQ6IGZhbHNlLCBpbmZvOiBzZXNzaW9uSW5mbyB9XG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIEFibGUgdG8gcmVzaGFyZCwgY2hlY2tpbmcgd2hldGhlciBuZWNlc3Nhcnkgbm93LicpXG5cbiAgICAgICAgLy8gMjUwMCBpcyB0aGUgbWF4IGFtb3VudCBvZiBndWlsZHMgYSBzaW5nbGUgc2hhcmQgY2FuIGhhbmRsZVxuICAgICAgICAvLyAxMDAwIGlzIHRoZSBhbW91bnQgb2YgZ3VpbGRzIGRpc2NvcmQgdXNlcyB0byBkZXRlcm1pbmUgaG93IG1hbnkgc2hhcmRzIHRvIHJlY29tbWVuZC5cbiAgICAgICAgLy8gVGhpcyBhbGdvIGhlbHBzIGNoZWNrIGlmIHlvdXIgYm90IGhhcyBncm93biBlbm91Z2ggdG8gcmVzaGFyZC5cbiAgICAgICAgLy8gV2hpbGUgdGhpcyBpcyBpbXByZWNpc2UgYXMgZGlzY29yZCBjaGFuZ2VzIHRoZSByZWNvbW1lbmRlZCBudW1iZXIgb2Ygc2hhcmQgZXZlcnkgMTAwMCBndWlsZHMgaXQgaXMgZ29vZCBlbm91Z2hcbiAgICAgICAgLy8gVGhlIGFsdGVybmF0aXZlIGlzIHRvIHN0b3JlIHRoZSBndWlsZCBjb3VudCBmb3IgZWFjaCBzaGFyZCBhbmQgcmVxdWlyZSB0aGUgR3VpbGRzIGludGVudCBmb3IgYEdVSUxEX0NSRUFURWAgYW5kIGBHVUlMRF9ERUxFVEVgIGV2ZW50c1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gKHNlc3Npb25JbmZvLnNoYXJkcyAvICgoZ2F0ZXdheS50b3RhbFNoYXJkcyAqIDI1MDApIC8gMTAwMCkpICogMTAwXG5cbiAgICAgICAgLy8gTGVzcyB0aGFuIG5lY2Vzc2FyeSUgYmVpbmcgdXNlZCBzbyBkbyBub3RoaW5nXG4gICAgICAgIGlmIChwZXJjZW50YWdlIDwgZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkc0Z1bGxQZXJjZW50YWdlKSB7XG4gICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoJ1tSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIG5vdCBuZWVkZWQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UsIGluZm86IHNlc3Npb25JbmZvIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oJ1tSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIGlzIG5lZWRlZC4nKVxuXG4gICAgICAgIHJldHVybiB7IG5lZWRlZDogdHJ1ZSwgaW5mbzogc2Vzc2lvbkluZm8gfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJlc2hhcmQoaW5mbykge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gU3RhcnRpbmcgdGhlIHJlc2hhcmQgcHJvY2Vzcy4gUHJldmlvdXMgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcbiAgICAgICAgLy8gU2V0IHZhbHVlcyBvbiBnYXRld2F5XG4gICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgPSBpbmZvLnNoYXJkc1xuICAgICAgICAvLyBIYW5kbGVzIHByZXBhcmluZyBtaWQgc2l6ZWQgYm90cyBmb3IgTEJTXG4gICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgPSBnYXRld2F5LmNhbGN1bGF0ZVRvdGFsU2hhcmRzKClcbiAgICAgICAgLy8gU2V0IGZpcnN0IHNoYXJkIGlkIGlmIHByb3ZpZGVkIGluIGluZm9cbiAgICAgICAgaWYgKHR5cGVvZiBpbmZvLmZpcnN0U2hhcmRJZCA9PT0gJ251bWJlcicpIGdhdGV3YXkuZmlyc3RTaGFyZElkID0gaW5mby5maXJzdFNoYXJkSWRcbiAgICAgICAgLy8gU2V0IGxhc3Qgc2hhcmQgaWQgaWYgcHJvdmlkZWQgaW4gaW5mb1xuICAgICAgICBpZiAodHlwZW9mIGluZm8ubGFzdFNoYXJkSWQgPT09ICdudW1iZXInKSBnYXRld2F5Lmxhc3RTaGFyZElkID0gaW5mby5sYXN0U2hhcmRJZFxuICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFueSBsYXN0U2hhcmRJZCwgd2UgYXNzdW1lIGFsbCB0aGUgc2hhcmRzIGFyZSB0byBiZSB1c2VkXG4gICAgICAgIGVsc2UgZ2F0ZXdheS5sYXN0U2hhcmRJZCA9IGdhdGV3YXkudG90YWxTaGFyZHMgLSAxXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBTdGFydGluZyB0aGUgcmVzaGFyZCBwcm9jZXNzLiBOZXcgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcblxuICAgICAgICAvLyBSZXNldHRpbmcgYnVja2V0c1xuICAgICAgICBnYXRld2F5LmJ1Y2tldHMuY2xlYXIoKVxuICAgICAgICAvLyBSZWZpbGxpbmcgYnVja2V0cyB3aXRoIG5ldyB2YWx1ZXNcbiAgICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgICAgLy8gQ2FsbCBhbGwgdGhlIGJ1Y2tldHMgYW5kIHRlbGwgdGhlaXIgd29ya2VycyAmIHNoYXJkcyB0byBpZGVudGlmeVxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IEFycmF5LmZyb20oZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKSkubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcudGVsbFdvcmtlclRvUHJlcGFyZSh3b3JrZXIuaWQsIHNoYXJkSWQsIGJ1Y2tldElkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gQWxsIHNoYXJkcyBhcmUgbm93IG9ubGluZS5gKVxuXG4gICAgICAgIGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy5vblJlc2hhcmRpbmdTd2l0Y2goKVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHRlbGxXb3JrZXJUb1ByZXBhcmUod29ya2VySWQsIHNoYXJkSWQsIGJ1Y2tldElkKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gVGVsbGluZyB3b3JrZXIgdG8gcHJlcGFyZS4gV29ya2VyOiAke3dvcmtlcklkfSB8IFNoYXJkOiAke3NoYXJkSWR9IHwgQnVja2V0OiAke2J1Y2tldElkfS5gKVxuICAgICAgICBjb25zdCBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IGdhdGV3YXkuY29tcHJlc3MsXG4gICAgICAgICAgICB0cmFuc3BvcnRDb21wcmVzc2lvbjogZ2F0ZXdheS50cmFuc3BvcnRDb21wcmVzc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgaW50ZW50czogZ2F0ZXdheS5pbnRlbnRzLFxuICAgICAgICAgICAgcHJvcGVydGllczogZ2F0ZXdheS5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdG9rZW46IGdhdGV3YXkudG9rZW4sXG4gICAgICAgICAgICB0b3RhbFNoYXJkczogZ2F0ZXdheS50b3RhbFNoYXJkcyxcbiAgICAgICAgICAgIHVybDogZ2F0ZXdheS51cmwsXG4gICAgICAgICAgICB2ZXJzaW9uOiBnYXRld2F5LnZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgIGFzeW5jIG1lc3NhZ2UoX3NoYXJkLCBwYXlsb2FkKSB7XG4gICAgICAgICAgICAgIC8vIElnbm9yZSBhbGwgZXZlbnRzIHVudGlsIHdlIHN3aWNoIGZyb20gdGhlIG9sZCBzaGFyZHMgdG8gdGhlIG5ldyBvbmVzLlxuICAgICAgICAgICAgICBpZiAocGF5bG9hZC50ID09PSAnUkVBRFknKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLnVwZGF0ZUd1aWxkc1NoYXJkSWQ/LihcbiAgICAgICAgICAgICAgICAgIChwYXlsb2FkLmQgYXMgRGlzY29yZFJlYWR5KS5ndWlsZHMubWFwKChnKSA9PiBnLmlkKSxcbiAgICAgICAgICAgICAgICAgIHNoYXJkSWQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9nZ2VyOiBnYXRld2F5LmxvZ2dlcixcbiAgICAgICAgICByZXF1ZXN0SWRlbnRpZnk6IGFzeW5jICgpID0+IGF3YWl0IGdhdGV3YXkucmVxdWVzdElkZW50aWZ5KHNoYXJkSWQpLFxuICAgICAgICAgIG1ha2VQcmVzZW5jZTogZ2F0ZXdheS5tYWtlUHJlc2VuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGdhdGV3YXkucHJlZmVyU25ha2VDYXNlKSB7XG4gICAgICAgICAgc2hhcmQuZm9yd2FyZFRvQm90ID0gYXN5bmMgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHNoYXJkLmV2ZW50cz8ubWVzc2FnZT8uKHNoYXJkLCBwYXlsb2FkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuXG4gICAgICAgIGF3YWl0IHNoYXJkLmlkZW50aWZ5KClcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1Jlc2hhcmRpbmddIFNoYXJkICMke3NoYXJkSWR9IGlkZW50aWZpZWQuYClcbiAgICAgIH0sXG4gICAgICBhc3luYyBvblJlc2hhcmRpbmdTd2l0Y2goKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gTWFraW5nIHRoZSBzd2l0Y2ggZnJvbSB0aGUgb2xkIHNoYXJkcyB0byB0aGUgbmV3IG9uZXMuYClcblxuICAgICAgICAvLyBNb3ZlIHRoZSBldmVudHMgZnJvbSB0aGUgb2xkIHNoYXJkcyB0byB0aGUgbmV3IG9uZXNcbiAgICAgICAgZm9yIChjb25zdCBzaGFyZCBvZiBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzLnZhbHVlcygpKSB7XG4gICAgICAgICAgc2hhcmQuZXZlbnRzID0gb3B0aW9ucy5ldmVudHMgPz8ge31cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9sZCBzaGFyZHMgc3RvcCBwcm9jZXNzaW5nIGV2ZW50c1xuICAgICAgICBmb3IgKGNvbnN0IHNoYXJkIG9mIGdhdGV3YXkuc2hhcmRzLnZhbHVlcygpKSB7XG4gICAgICAgICAgY29uc3Qgb2xkSGFuZGxlciA9IHNoYXJkLmV2ZW50cy5tZXNzYWdlXG5cbiAgICAgICAgICAvLyBDaGFuZ2Ugd2l0aCBzcHJlYWQgb3BlcmF0b3IgdG8gbm90IGFmZmVjdCBuZXcgc2hhcmRzLCBhcyBjaGFuZ2luZyBhbnl0aGluZyBvbiBzaGFyZC5ldmVudHMgd2lsbCBkaXJlY3RseSBjaGFuZ2Ugb3B0aW9ucy5ldmVudHMsIHdoaWNoIGNoYW5nZXMgbmV3IHNoYXJkcycgZXZlbnRzXG4gICAgICAgICAgc2hhcmQuZXZlbnRzID0ge1xuICAgICAgICAgICAgLi4uc2hhcmQuZXZlbnRzLFxuICAgICAgICAgICAgbWVzc2FnZTogYXN5bmMgZnVuY3Rpb24gKF8sIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgLy8gTWVtYmVyIGNoZWNrcyBuZWVkIHRvIGNvbnRpbnVlIGJ1dCBvdGhlcnMgY2FuIHN0b3BcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudCA9PT0gJ0dVSUxEX01FTUJFUlNfQ0hVTksnKSB7XG4gICAgICAgICAgICAgICAgb2xkSGFuZGxlcj8uKHNoYXJkLCBtZXNzYWdlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBTaHV0dGluZyBkb3duIG9sZCBzaGFyZHMuYClcbiAgICAgICAgYXdhaXQgZ2F0ZXdheS5zaHV0ZG93bihTaGFyZFNvY2tldENsb3NlQ29kZXMuUmVzaGFyZGVkLCAnUmVzaGFyZGVkIScsIGZhbHNlKVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBDb21wbGV0ZWQuYClcbiAgICAgICAgZ2F0ZXdheS5zaGFyZHMgPSBuZXcgTWFwKGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMpXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMuY2xlYXIoKVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY2FsY3VsYXRlVG90YWxTaGFyZHMoKSB7XG4gICAgICAvLyBCb3RzIHVuZGVyIDEwMGsgc2VydmVycyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gTEJTLlxuICAgICAgaWYgKGdhdGV3YXkudG90YWxTaGFyZHMgPCAxMDApIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB0b3RhbCBzaGFyZHM6ICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIENhbGN1bGF0aW5nIHRvdGFsIHNoYXJkc2AsIGdhdGV3YXkudG90YWxTaGFyZHMsIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSlcbiAgICAgIC8vIENhbGN1bGF0ZSBhIG11bHRpcGxlIG9mIGBtYXhDb25jdXJyZW5jeWAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgZ2F0ZXdheS5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIE1hdGguY2VpbChcbiAgICAgICAgICBnYXRld2F5LnRvdGFsU2hhcmRzIC9cbiAgICAgICAgICAgIC8vIElmIGBtYXhDb25jdXJyZW5jeWAgaXMgMSwgd2UgY2FuIHNhZmVseSB1c2UgMTYgdG8gZ2V0IGB0b3RhbFNoYXJkc2AgdG8gYmUgaW4gYSBtdWx0aXBsZSBvZiAxNiBzbyB0aGF0IHdlIGNhbiBwcmVwYXJlIGJvdHMgd2l0aCAxMDBrIHNlcnZlcnMgZm9yIExCUy5cbiAgICAgICAgICAgIChnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgPT09IDEgPyAxNiA6IGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSksXG4gICAgICAgICkgKiAoZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5ID09PSAxID8gMTYgOiBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG4gICAgICApXG4gICAgfSxcbiAgICBjYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKSB7XG4gICAgICBjb25zdCB3b3JrZXJJZCA9IG9wdGlvbnMuc3ByZWFkU2hhcmRzSW5Sb3VuZFJvYmluXG4gICAgICAgID8gc2hhcmRJZCAlIGdhdGV3YXkudG90YWxXb3JrZXJzXG4gICAgICAgIDogTWF0aC5taW4oTWF0aC5mbG9vcihzaGFyZElkIC8gZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIpLCBnYXRld2F5LnRvdGFsV29ya2VycyAtIDEpXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFtHYXRld2F5XSBDYWxjdWxhdGluZyB3b3JrZXJJZDogU2hhcmQ6ICR7c2hhcmRJZH0gLT4gV29ya2VyOiAke3dvcmtlcklkfSAtPiBQZXIgV29ya2VyOiAke2dhdGV3YXkuc2hhcmRzUGVyV29ya2VyfSAtPiBUb3RhbDogJHtnYXRld2F5LnRvdGFsV29ya2Vyc31gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIHdvcmtlcklkXG4gICAgfSxcbiAgICBwcmVwYXJlQnVja2V0cygpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5OyArK2kpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBQcmVwYXJpbmcgYnVja2V0cyBmb3IgY29uY3VycmVuY3k6ICR7aX1gKVxuICAgICAgICBnYXRld2F5LmJ1Y2tldHMuc2V0KGksIHtcbiAgICAgICAgICB3b3JrZXJzOiBbXSxcbiAgICAgICAgICBsZWFreUJ1Y2tldDogbmV3IExlYWt5QnVja2V0KHtcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgIHJlZmlsbEFtb3VudDogMSxcbiAgICAgICAgICAgIHJlZmlsbEludGVydmFsOiBnYXRld2F5LnNwYXduU2hhcmREZWxheSxcbiAgICAgICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9yZ2FuaXplIGFsbCBzaGFyZHMgaW50byB0aGVpciBvd24gYnVja2V0c1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFByZXBhcmluZyBidWNrZXRzIGZvciBzaGFyZDogJHtzaGFyZElkfWApXG5cbiAgICAgICAgaWYgKHNoYXJkSWQgPj0gZ2F0ZXdheS50b3RhbFNoYXJkcykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBpcyBiaWdnZXIgb3IgZXF1YWwgdG8gdGhlIHVzZWQgYW1vdW50IG9mIHVzZWQgc2hhcmRzIHdoaWNoIGlzICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVja2V0SWQgPSBzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5XG4gICAgICAgIGNvbnN0IGJ1Y2tldCA9IGdhdGV3YXkuYnVja2V0cy5nZXQoYnVja2V0SWQpXG5cbiAgICAgICAgaWYgKCFidWNrZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBnb3QgYXNzaWduZWQgdG8gYW4gaWxsZWdhbCBidWNrZXQgaWQ6ICR7YnVja2V0SWR9LCBleHBlY3RlZCBhIGJ1Y2tldCBpZCBiZXR3ZWVuIDAgYW5kICR7XG4gICAgICAgICAgICAgIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSAtIDFcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgd29ya2VyIGlkIGZvciB0aGlzIHNoYXJkXG4gICAgICAgIGNvbnN0IHdvcmtlcklkID0gZ2F0ZXdheS5jYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKVxuICAgICAgICBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LmlkID09PSB3b3JrZXJJZClcblxuICAgICAgICAvLyBJZiB0aGlzIHdvcmtlciBhbHJlYWR5IGV4aXN0cywgYWRkIHRoZSBzaGFyZCB0byBpdHMgcXVldWVcbiAgICAgICAgaWYgKHdvcmtlcikge1xuICAgICAgICAgIHdvcmtlci5xdWV1ZS5wdXNoKHNoYXJkSWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVja2V0LndvcmtlcnMucHVzaCh7IGlkOiB3b3JrZXJJZCwgcXVldWU6IFtzaGFyZElkXSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFByZXBhcmUgdGhlIGNvbmN1cnJlbmN5IGJ1Y2tldHNcbiAgICAgIGdhdGV3YXkucHJlcGFyZUJ1Y2tldHMoKVxuXG4gICAgICBjb25zdCBwcm9taXNlcyA9IFsuLi5nYXRld2F5LmJ1Y2tldHMuZW50cmllcygpXS5tYXAoYXN5bmMgKFtidWNrZXRJZCwgYnVja2V0XSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgIGZvciAoY29uc3Qgc2hhcmRJZCBvZiB3b3JrZXIucXVldWUpIHtcbiAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkudGVsbFdvcmtlclRvSWRlbnRpZnkod29ya2VyLmlkLCBzaGFyZElkLCBidWNrZXRJZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIFdlIHVzZSBQcm9taXNlLmFsbCBzbyB3ZSBjYW4gc3RhcnQgYWxsIGJ1Y2tldHMgYXQgdGhlIHNhbWUgdGltZVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgICAgIC8vIENoZWNrIGFuZCByZXNoYXJkIGF1dG9tYXRpY2FsbHkgaWYgYXV0byByZXNoYXJkaW5nIGlzIGVuYWJsZWQuXG4gICAgICBpZiAoZ2F0ZXdheS5yZXNoYXJkaW5nLmVuYWJsZWQgJiYgZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWwgIT09IC0xKSB7XG4gICAgICAgIC8vIEl0IGlzIGJldHRlciB0byBlbnN1cmUgdGhlcmUgaXMgYWx3YXlzIG9ubHkgb25lXG4gICAgICAgIGNsZWFySW50ZXJ2YWwoZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWxJZClcblxuICAgICAgICBpZiAoIWdhdGV3YXkucmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbykge1xuICAgICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5lbmFibGVkID0gZmFsc2VcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci53YXJuKFwiW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZW5hYmxlZCBidXQgJ3Jlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8oKScgd2FzIG5vdCBwcm92aWRlZC4gRGlzYWJsaW5nIHJlc2hhcmRpbmcuXCIpXG5cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsSWQgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzaGFyZGluZ0luZm8gPSBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCgpXG5cbiAgICAgICAgICBpZiAocmVzaGFyZGluZ0luZm8ubmVlZGVkICYmIHJlc2hhcmRpbmdJbmZvLmluZm8pIGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy5yZXNoYXJkKHJlc2hhcmRpbmdJbmZvLmluZm8pXG4gICAgICAgIH0sIGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsKVxuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2h1dGRvd24oY29kZSwgcmVhc29uLCBjbGVhclJlc2hhcmRpbmdJbnRlcnZhbCA9IHRydWUpIHtcbiAgICAgIGlmIChjbGVhclJlc2hhcmRpbmdJbnRlcnZhbCkgY2xlYXJJbnRlcnZhbChnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJbnRlcnZhbElkKVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKGdhdGV3YXkuc2hhcmRzLnZhbHVlcygpKS5tYXAoKHNoYXJkKSA9PiBzaGFyZC5jbG9zZShjb2RlLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGFzeW5jIHNlbmRQYXlsb2FkKHNoYXJkSWQsIHBheWxvYWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG5cbiAgICAgIGlmICghc2hhcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0gbm90IGZvdW5kYClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hhcmQuc2VuZChwYXlsb2FkKVxuICAgIH0sXG4gICAgYXN5bmMgdGVsbFdvcmtlclRvSWRlbnRpZnkod29ya2VySWQsIHNoYXJkSWQsIGJ1Y2tldElkKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFRlbGwgd29ya2VyICMke3dvcmtlcklkfSB0byBpZGVudGlmeSBzaGFyZCAjJHtzaGFyZElkfSBmcm9tIGJ1Y2tldCAke2J1Y2tldElkfWApXG4gICAgICBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBJZGVudGlmeWluZyAke3NoYXJkID8gJ2V4aXN0aW5nJyA6ICduZXcnfSBzaGFyZCAoJHtzaGFyZElkfSlgKVxuXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHNoYXJkID0gbmV3IFNoYXJkKHtcbiAgICAgICAgICBpZDogc2hhcmRJZCxcbiAgICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgICBjb21wcmVzczogdGhpcy5jb21wcmVzcyxcbiAgICAgICAgICAgIHRyYW5zcG9ydENvbXByZXNzaW9uOiBnYXRld2F5LnRyYW5zcG9ydENvbXByZXNzaW9uLFxuICAgICAgICAgICAgaW50ZW50czogdGhpcy5pbnRlbnRzLFxuICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXG4gICAgICAgICAgICB0b3RhbFNoYXJkczogdGhpcy50b3RhbFNoYXJkcyxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzID8/IHt9LFxuICAgICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgICAgcmVxdWVzdElkZW50aWZ5OiBhc3luYyAoKSA9PiBhd2FpdCBnYXRld2F5LnJlcXVlc3RJZGVudGlmeShzaGFyZElkKSxcbiAgICAgICAgICBtYWtlUHJlc2VuY2U6IGdhdGV3YXkubWFrZVByZXNlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0aGlzLnByZWZlclNuYWtlQ2FzZSkge1xuICAgICAgICAgIHNoYXJkLmZvcndhcmRUb0JvdCA9IGFzeW5jIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBzaGFyZCEuZXZlbnRzLm1lc3NhZ2U/LihzaGFyZCEsIHBheWxvYWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzaGFyZC5pZGVudGlmeSgpXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RJZGVudGlmeShzaGFyZElkKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFNoYXJkICMke3NoYXJkSWR9IHJlcXVlc3RlZCBhbiBpZGVudGlmeS5gKVxuXG4gICAgICBjb25zdCBidWNrZXQgPSBnYXRld2F5LmJ1Y2tldHMuZ2V0KHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG5cbiAgICAgIGlmICghYnVja2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHJlcXVlc3QgaWRlbnRpZnkgZm9yIGEgc2hhcmQgdGhhdCBpcyBub3QgYXNzaWduZWQgdG8gYW55IGJ1Y2tldC5cIilcbiAgICAgIH1cblxuICAgICAgYXdhaXQgYnVja2V0LmxlYWt5QnVja2V0LmFjcXVpcmUoKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIEFwcHJvdmVkIGlkZW50aWZ5IHJlcXVlc3QgZm9yIFNoYXJkICMke3NoYXJkSWR9LmApXG4gICAgfSxcblxuICAgIGFzeW5jIGtpbGwoc2hhcmRJZDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFNoYXJkICMke3NoYXJkSWR9IHdhcyByZXF1ZXN0ZWQgdG8gYmUga2lsbGVkLCBidXQgdGhlIHNoYXJkIGNvdWxkIG5vdCBiZSBmb3VuZC5gKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBLaWxsaW5nIFNoYXJkICMke3NoYXJkSWR9YClcbiAgICAgIHRoaXMuc2hhcmRzLmRlbGV0ZShzaGFyZElkKVxuICAgICAgYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG5cbiAgICAvLyBIZWxwZXJzIG1ldGhvZHMgYmVsb3cgdGhpc1xuXG4gICAgY2FsY3VsYXRlU2hhcmRJZChndWlsZElkLCB0b3RhbFNoYXJkcykge1xuICAgICAgLy8gSWYgbm9uZSBpcyBwcm92aWRlZCwgdXNlIHRoZSB0b3RhbCBzaGFyZHMgbnVtYmVyIGZyb20gZ2F0ZXdheSBvYmplY3QuXG4gICAgICBpZiAoIXRvdGFsU2hhcmRzKSB0b3RhbFNoYXJkcyA9IGdhdGV3YXkudG90YWxTaGFyZHNcbiAgICAgIC8vIElmIGl0IGlzIG9ubHkgMSBzaGFyZCwgaXQgd2lsbCBhbHdheXMgYmUgc2hhcmQgaWQgMFxuICAgICAgaWYgKHRvdGFsU2hhcmRzID09PSAxKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gY2FsY3VsYXRlU2hhcmRJZCAoMSBzaGFyZClgKVxuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGNhbGN1bGF0ZVNoYXJkSWQgKGd1aWxkSWQ6ICR7Z3VpbGRJZH0sIHRvdGFsU2hhcmRzOiAke3RvdGFsU2hhcmRzfSlgKVxuICAgICAgcmV0dXJuIE51bWJlcigoQmlnSW50KGd1aWxkSWQpID4+IDIybikgJSBCaWdJbnQodG90YWxTaGFyZHMpKVxuICAgIH0sXG5cbiAgICBhc3luYyBqb2luVm9pY2VDaGFubmVsKGd1aWxkSWQsIGNoYW5uZWxJZCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGpvaW5Wb2ljZUNoYW5uZWwgZ3VpbGRJZDogJHtndWlsZElkfSBjaGFubmVsSWQ6ICR7Y2hhbm5lbElkfWApXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgc2VsZl9tdXRlOiBvcHRpb25zPy5zZWxmTXV0ZSA/PyBmYWxzZSxcbiAgICAgICAgICBzZWxmX2RlYWY6IG9wdGlvbnM/LnNlbGZEZWFmID8/IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyBlZGl0Qm90U3RhdHVzKGRhdGEpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gZWRpdEJvdFN0YXR1cyBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEsIGpzb25TYWZlUmVwbGFjZXIpfWApXG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCldLm1hcChhc3luYyAoc2hhcmQpID0+IHtcbiAgICAgICAgICBnYXRld2F5LmVkaXRTaGFyZFN0YXR1cyhzaGFyZC5pZCwgZGF0YSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhzaGFyZElkLCBkYXRhKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGVkaXRTaGFyZFN0YXR1cyBzaGFyZElkOiAke3NoYXJkSWR9IC0+IGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcblxuICAgICAgYXdhaXQgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5QcmVzZW5jZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIHNpbmNlOiBudWxsLFxuICAgICAgICAgIGFmazogZmFsc2UsXG4gICAgICAgICAgYWN0aXZpdGllczogZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgIGlmIChnYXRld2F5LmludGVudHMgJiYgKCFvcHRpb25zPy5saW1pdCB8fCBvcHRpb25zLmxpbWl0ID4gMSkgJiYgIShnYXRld2F5LmludGVudHMgJiBHYXRld2F5SW50ZW50cy5HdWlsZE1lbWJlcnMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBtb3JlIHRoZW4gMSBtZW1iZXIgd2l0aG91dCB0aGUgR1VJTERfTUVNQkVSUyBpbnRlbnQnKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gKVxuXG4gICAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBzZXR0aW5nIHVzZXIgbGltaXQgYmFzZWQgb24gdXNlcklkcyBsZW5ndGg6ICR7b3B0aW9ucy51c2VySWRzLmxlbmd0aH1gKVxuXG4gICAgICAgIG9wdGlvbnMubGltaXQgPSBvcHRpb25zLnVzZXJJZHMubGVuZ3RoXG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9ucz8ubm9uY2UpIHtcbiAgICAgICAgbGV0IG5vbmNlID0gJydcblxuICAgICAgICB3aGlsZSAoIW5vbmNlIHx8IGdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnMucGVuZGluZy5oYXMobm9uY2UpKSB7XG4gICAgICAgICAgbm9uY2UgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zID8/PSB7IGxpbWl0OiAwIH1cbiAgICAgICAgb3B0aW9ucy5ub25jZSA9IG5vbmNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lbWJlcnMgPSAhZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkXG4gICAgICAgID8gW11cbiAgICAgICAgOiBuZXcgUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgICAgICBpZiAoIWdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnMuZW5hYmxlZCB8fCAhb3B0aW9ucz8ubm9uY2UpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkNhbid0IHJlcXVlc3QgdGhlIG1lbWJlcnMgd2l0aG91dCB0aGUgbm9uY2Ugb3Igd2l0aCB0aGUgZmVhdHVyZSBkaXNhYmxlZC5cIikpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzLnBlbmRpbmcuc2V0KG9wdGlvbnMubm9uY2UsIHtcbiAgICAgICAgICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlJlcXVlc3RHdWlsZE1lbWJlcnMsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIC8vIElmIGEgcXVlcnkgaXMgcHJvdmlkZWQgdXNlIGl0LCBPUiBpZiBhIGxpbWl0IGlzIE5PVCBwcm92aWRlZCB1c2UgXCJcIlxuICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnM/LmxpbWl0ID8/IDAsXG4gICAgICAgICAgcHJlc2VuY2VzOiBvcHRpb25zPy5wcmVzZW5jZXMgPz8gZmFsc2UsXG4gICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgIG5vbmNlOiBvcHRpb25zPy5ub25jZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBhd2FpdCBtZW1iZXJzXG4gICAgfSxcblxuICAgIGFzeW5jIGxlYXZlVm9pY2VDaGFubmVsKGd1aWxkSWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBsZWF2ZVZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IFNoYXJkICR7c2hhcmRJZH1gKVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlZvaWNlU3RhdGVVcGRhdGUsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYW5uZWxfaWQ6IG51bGwsXG4gICAgICAgICAgc2VsZl9tdXRlOiBmYWxzZSxcbiAgICAgICAgICBzZWxmX2RlYWY6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMoZ3VpbGRJZHMpIHtcbiAgICAgIC8qKlxuICAgICAgICogRGlzY29yZCB3aWxsIHNlbmQgdGhlIGV2ZW50cyBmb3IgdGhlIGd1aWxkcyB0aGF0IGFyZSBcInVuZGVyIHRoZSBzaGFyZFwiIHRoYXQgc2VuZHMgdGhlIG9wY29kZS5cbiAgICAgICAqIEZvciB0aGlzIHJlYXNvbiB3ZSBuZWVkIHRvIGdyb3VwIHRoZSBpZHMgd2l0aCB0aGUgc2hhcmQgdGhlIGNhbGN1bGF0ZVNoYXJkSWQgbWV0aG9kIGdpdmVzXG4gICAgICAgKi9cblxuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIEJpZ1N0cmluZ1tdPigpXG5cbiAgICAgIGZvciAoY29uc3QgZ3VpbGRJZCBvZiBndWlsZElkcykge1xuICAgICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgICAgY29uc3QgaWRzID0gbWFwLmdldChzaGFyZElkKSA/PyBbXVxuICAgICAgICBtYXAuc2V0KHNoYXJkSWQsIGlkcylcblxuICAgICAgICBpZHMucHVzaChndWlsZElkKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWy4uLm1hcC5lbnRyaWVzKCldLm1hcCgoW3NoYXJkSWQsIGlkc10pID0+XG4gICAgICAgICAgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMsXG4gICAgICAgICAgICBkOiB7XG4gICAgICAgICAgICAgIGd1aWxkX2lkczogaWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9LFxuICB9XG5cbiAgcmV0dXJuIGdhdGV3YXlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMge1xuICAvKipcbiAgICogSWQgb2YgdGhlIGZpcnN0IFNoYXJkIHdoaWNoIHNob3VsZCBnZXQgY29udHJvbGxlZCBieSB0aGlzIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGZpcnN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogSWQgb2YgdGhlIGxhc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgbGFzdFNoYXJkSWQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzcGF3bmluZyBuZXh0IHNoYXJkLiBPUFRJTUFMIElTIEFCT1ZFIDUxMDAuIFlPVSBET04nVCBXQU5UIFRPIEhJVCBUSEUgUkFURSBMSU1JVCEhIVxuICAgKiBAZGVmYXVsdCA1MzAwXG4gICAqL1xuICBzcGF3blNoYXJkRGVsYXk/OiBudW1iZXJcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2VuZCB0aGUgZGlzY29yZCBwYWNrZXRzIGluIHNuYWtlIGNhc2UgZm9ybS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByZWZlclNuYWtlQ2FzZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRvdGFsIGFtb3VudCBvZiBzaGFyZHMgeW91ciBib3QgdXNlcy4gVXNlZnVsIGZvciB6ZXJvLWRvd250aW1lIHVwZGF0ZXMgb3IgcmVzaGFyZGluZy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgdG90YWxTaGFyZHM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2Ygc2hhcmRzIHRvIGxvYWQgcGVyIHdvcmtlci5cbiAgICogQGRlZmF1bHQgMjVcbiAgICovXG4gIHNoYXJkc1Blcldvcmtlcj86IG51bWJlclxuICAvKipcbiAgICogVGhlIHRvdGFsIGFtb3VudCBvZiB3b3JrZXJzIHRvIHVzZSBmb3IgeW91ciBib3QuXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIHRvdGFsV29ya2Vycz86IG51bWJlclxuICAvKipcbiAgICogV2hldGhlciB0byBzcHJlYWQgc2hhcmRzIGFjcm9zcyB3b3JrZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBCeSBkZWZhdWx0LCBzaGFyZHMgYXJlIGFzc2lnbmVkIHRvIHdvcmtlcnMgaW4gY29udGlndW91cyBibG9ja3MgYmFzZWQgb24gc2hhcmRzUGVyV29ya2VyLiBJZiBhbnkgc2hhcmQgaXMgbGVmdCBvdmVyLCBpdCB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBsYXN0IHdvcmtlci5cbiAgICogVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBoYXZlIDMgd29ya2VycyBhbmQgNDAgc2hhcmRzIHdoaWxlIHNoYXJkc1BlcldvcmtlciBpcyAxMCwgdGhlIGZpcnN0IHdvcmtlciB3aWxsIGdldCBzaGFyZHMgMC05LCB0aGUgc2Vjb25kIHdvcmtlciB3aWxsIGdldCBzaGFyZHMgMTAtMTksIGFuZCBzbyBvbiwgdGhlIGxhc3Qgd29ya2VyIHdpbGwgZ2V0IHNoYXJkcyAyMC0zOS5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvIHRydWUsIHRoZSBzaGFyZHMgd2lsbCBiZSBhc3NpZ25lZCBpbiBhIHJvdW5kLXJvYmluIG1hbm5lciB0byBzcHJlYWQgbW9yZSBldmVubHkgYWNyb3NzIHdvcmtlcnMuXG4gICAqIEZvciBleGFtcGxlLCB3aXRoIDMgd29ya2VycyBhbmQgNDAgc2hhcmRzLCB0aGUgZmlyc3Qgc2hhcmQgd2lsbCBnbyB0byB3b3JrZXIgMCwgdGhlIHNlY29uZCBzaGFyZCB0byB3b3JrZXIgMSwgdGhlIHRoaXJkIHNoYXJkIHRvIHdvcmtlciAyLCB0aGUgZm91cnRoIHNoYXJkIHRvIHdvcmtlciAwLCBhbmQgc28gb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzcHJlYWRTaGFyZHNJblJvdW5kUm9iaW4/OiBib29sZWFuXG4gIC8qKiBJbXBvcnRhbnQgZGF0YSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBtYW5hZ2VyIHRvIGNvbm5lY3Qgc2hhcmRzIHRvIHRoZSBnYXRld2F5LiAqL1xuICBjb25uZWN0aW9uPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzcz86IGJvb2xlYW5cbiAgLyoqIFdoYXQgdHJhbnNwb3J0IGNvbXByZXNzaW9uIHNob3VsZCBiZSB1c2VkICovXG4gIHRyYW5zcG9ydENvbXByZXNzaW9uPzogVHJhbnNwb3J0Q29tcHJlc3Npb24gfCBudWxsXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM/OiBudW1iZXJcbiAgLyoqIElkZW50aWZ5IHByb3BlcnRpZXMgdG8gdXNlICovXG4gIHByb3BlcnRpZXM/OiB7XG4gICAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdGhlIHNoYXJkIHJ1bnMgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImRhcndpblwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCJcbiAgICAgKi9cbiAgICBvczogc3RyaW5nXG4gICAgLyoqIFRoZSBcImJyb3dzZXJcIiB3aGVyZSB0aGlzIHNoYXJkIGlzIHJ1bm5pbmcgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGJyb3dzZXI6IHN0cmluZ1xuICAgIC8qKiBUaGUgZGV2aWNlIG9uIHdoaWNoIHRoZSBzaGFyZCBpcyBydW5uaW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBkZXZpY2U6IHN0cmluZ1xuICB9XG4gIC8qKiBCb3QgdG9rZW4gd2hpY2ggaXMgdXNlZCB0byBjb25uZWN0IHRvIERpc2NvcmQgKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogVGhlIFVSTCBvZiB0aGUgZ2F0ZXdheSB3aGljaCBzaG91bGQgYmUgY29ubmVjdGVkIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIndzczovL2dhdGV3YXkuZGlzY29yZC5nZ1wiXG4gICAqL1xuICB1cmw/OiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uPzogbnVtYmVyXG4gIC8qKiBUaGUgZXZlbnRzIGhhbmRsZXJzICovXG4gIGV2ZW50cz86IFNoYXJkRXZlbnRzXG4gIC8qKiBUaGlzIG1hbmFnZXJzIGNhY2hlIHJlbGF0ZWQgc2V0dGluZ3MuICovXG4gIGNhY2hlPzoge1xuICAgIHJlcXVlc3RNZW1iZXJzPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBsb2dnZXIgdGhhdCB0aGUgZ2F0ZXdheSBtYW5hZ2VyIHdpbGwgdXNlLlxuICAgKiBAZGVmYXVsdCBsb2dnZXIgLy8gVGhlIGxvZ2dlciBleHBvcnRlZCBieSBgQGRpc2NvcmRlbm8vdXRpbHNgXG4gICAqL1xuICBsb2dnZXI/OiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIHByZXNlbmNlIGZvciB3aGVuIHRoZSBib3QgY29ubmVjdHMgdG8gdGhlIGdhdGV3YXlcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBlYWNoIHRpbWUgYSBTaGFyZCBpcyBnb2luZyB0byBpZGVudGlmeVxuICAgKi9cbiAgbWFrZVByZXNlbmNlPzogKCkgPT4gUHJvbWlzZTxEaXNjb3JkVXBkYXRlUHJlc2VuY2UgfCB1bmRlZmluZWQ+XG4gIC8qKiBPcHRpb25zIHJlbGF0ZWQgdG8gcmVzaGFyZGluZy4gKi9cbiAgcmVzaGFyZGluZz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhdXRvbWF0ZWQgcmVzaGFyZGluZyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFRoZSAlIG9mIGhvdyBmdWxsIGEgc2hhcmQgaXMgd2hlbiByZXNoYXJkaW5nIHNob3VsZCBiZSB0cmlnZ2VyZWQuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFdlIHVzZSBkaXNjb3JkIHJlY29tbWVuZGVkIHNoYXJkIHZhbHVlIHRvIGdldCBhbiAqKmFwcHJveGltYXRpb24qKiBvZiB0aGUgc2hhcmQgZnVsbCBwZXJjZW50YWdlIHRvIGNvbXBhcmUgd2l0aCB0aGlzIHZhbHVlIHNvIHRoZSBib3QgbWF5IG5vdCByZXNoYXJkIGF0IHRoZSBleGFjdCBwZXJjZW50YWdlIHByb3ZpZGVkIGJ1dCBtYXkgcmVzaGFyZCB3aGVuIGl0IGlzIGEgYml0IGhpZ2hlciB0aGFuIHRoZSBwcm92aWRlZCBwZXJjZW50YWdlLlxuICAgICAqIEZvciBhY2N1cmF0ZSBjYWxjdWxhdGlvbiwgeW91IG1heSBvdmVycmlkZSB0aGUgYGNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWRgIGZ1bmN0aW9uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCA4MCBhcyBpbiA4MCVcbiAgICAgKi9cbiAgICBzaGFyZHNGdWxsUGVyY2VudGFnZTogbnVtYmVyXG4gICAgLyoqXG4gICAgICogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcywgb2YgaG93IG9mdGVuIHRvIGNoZWNrIHdoZXRoZXIgcmVzaGFyZGluZyBpcyBuZWVkZWQgYW5kIHJlc2hhcmQgYXV0b21hdGljYWxseS4gU2V0IHRvIC0xIHRvIGRpc2FibGUgYXV0byByZXNoYXJkaW5nLlxuICAgICAqIEBkZWZhdWx0IDI4ODAwMDAwICg4IGhvdXJzKVxuICAgICAqL1xuICAgIGNoZWNrSW50ZXJ2YWw6IG51bWJlclxuICAgIC8qKiBIYW5kbGVyIHRvIGdldCBzaGFyZCBjb3VudCBhbmQgb3RoZXIgc2Vzc2lvbiBpbmZvLiAqL1xuICAgIGdldFNlc3Npb25JbmZvPzogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4+XG4gICAgLyoqIEhhbmRsZXIgdG8gZWRpdCB0aGUgc2hhcmQgaWQgb24gYW55IGNhY2hlZCBndWlsZHMuICovXG4gICAgdXBkYXRlR3VpbGRzU2hhcmRJZD86IChndWlsZElkczogc3RyaW5nW10sIHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICAvKiogVGhlIGJ1Y2tldCB0byBxdWV1ZSB0aGUgaWRlbnRpZmllcy4gKi9cbiAgICAgIGxlYWt5QnVja2V0OiBMZWFreUJ1Y2tldFxuICAgIH1cbiAgPlxuICAvKiogVGhlIHNoYXJkcyB0aGF0IGFyZSBjcmVhdGVkLiAqL1xuICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAvKiogVGhlIGxvZ2dlciBmb3IgdGhlIGdhdGV3YXkgbWFuYWdlci4gKi9cbiAgbG9nZ2VyOiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0byByZXNoYXJkaW5nLiAqL1xuICByZXNoYXJkaW5nOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnNbJ3Jlc2hhcmRpbmcnXSAmIHtcbiAgICAvKiogVGhlIGludGVydmFsIGlkIG9mIHRoZSBjaGVjayBpbnRlcnZhbC4gVGhpcyBpcyB1c2VkIHRvIGNsZWFyIHRoZSBpbnRlcnZhbCB3aGVuIHRoZSBtYW5hZ2VyIGlzIHNodXRkb3duLiAqL1xuICAgIGNoZWNrSW50ZXJ2YWxJZD86IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkXG4gICAgLyoqIEhvbGRzIHRoZSBzaGFyZHMgdGhhdCByZXNoYXJkaW5nIGhhcyBjcmVhdGVkLiBPbmNlIHJlc2hhcmRpbmcgaXMgZG9uZSwgdGhpcyByZXBsYWNlcyB0aGUgZ2F0ZXdheS5zaGFyZHMgKi9cbiAgICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAgIC8qKiBIYW5kbGVyIHRvIGNoZWNrIGlmIHJlc2hhcmRpbmcgaXMgbmVjZXNzYXJ5LiAqL1xuICAgIGNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWQ6ICgpID0+IFByb21pc2U8eyBuZWVkZWQ6IGJvb2xlYW47IGluZm8/OiBDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4gfT5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVyIHRvIGJlZ2luIHJlc2hhcmRpbmcuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIG9uY2UgdGhlIHJlc2hhcmRpbmcgaXMgZG9uZS5cbiAgICAgKiBTbyB3aGVuIGFsbCB0aGUgY2FsbHMgdG8ge0BsaW5rIHRlbGxXb3JrZXJUb1ByZXBhcmV9IGFuZCB7QGxpbmsgb25SZXNoYXJkaW5nU3dpdGNofSBhcmUgZG9uZS5cbiAgICAgKi9cbiAgICByZXNoYXJkOiAoaW5mbzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+ICYgeyBmaXJzdFNoYXJkSWQ/OiBudW1iZXI7IGxhc3RTaGFyZElkPzogbnVtYmVyIH0pID0+IFByb21pc2U8dm9pZD5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVyIHRvIGNvbW11bmljYXRlIHRvIGEgd29ya2VyIHRoYXQgaXQgbmVlZHMgdG8gc3Bhd24gYSBuZXcgc2hhcmQgYW5kIGlkZW50aWZ5IGl0IGZvciB0aGUgcmVzaGFyZGluZy5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhpcyBoYW5kbGVyIHdvcmtzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUge0BsaW5rIHRlbGxXb3JrZXJUb0lkZW50aWZ5fSBoYW5kbGVyLlxuICAgICAqIFNvIHlvdSBzaG91bGQgd2FpdCBmb3IgdGhlIHdvcmtlciB0byBoYXZlIGlkZW50aWZpZWQgdGhlIHNoYXJkIGJlZm9yZSByZXNvbHZpbmcgdGhlIHByb21pc2VcbiAgICAgKi9cbiAgICB0ZWxsV29ya2VyVG9QcmVwYXJlOiAod29ya2VySWQ6IG51bWJlciwgc2hhcmRJZDogbnVtYmVyLCBidWNrZXRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgLyoqXG4gICAgICogSGFuZGxlIGNhbGxlZCB3aGVuIGFsbCB0aGUgd29ya2VycyBoYXZlIGZpbmlzaGVkIHByZXBhcmluZyBmb3IgdGhlIHJlc2hhcmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGlzIHNob3VsZCBtYWtlIHRoZSBuZXcgcmVzaGFyZGVkIHNoYXJkcyBiZWNvbWUgdGhlIGFjdGl2ZSBvbmVzIGFuZCBzaHV0ZG93biB0aGUgb2xkIG9uZXNcbiAgICAgKi9cbiAgICBvblJlc2hhcmRpbmdTd2l0Y2g6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgfVxuICAvKiogRGV0ZXJtaW5lIG1heCBudW1iZXIgb2Ygc2hhcmRzIHRvIHVzZSBiYXNlZCB1cG9uIHRoZSBtYXggY29uY3VycmVuY3kuICovXG4gIGNhbGN1bGF0ZVRvdGFsU2hhcmRzOiAoKSA9PiBudW1iZXJcbiAgLyoqIERldGVybWluZSB0aGUgaWQgb2YgdGhlIHdvcmtlciB3aGljaCBpcyBoYW5kbGluZyBhIHNoYXJkLiAqL1xuICBjYWxjdWxhdGVXb3JrZXJJZDogKHNoYXJkSWQ6IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKiBQcmVwYXJlcyBhbGwgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc2hhcmRzLiAqL1xuICBwcmVwYXJlQnVja2V0czogKCkgPT4gdm9pZFxuICAvKiogU3RhcnQgaWRlbnRpZnlpbmcgYWxsIHRoZSBzaGFyZHMuICovXG4gIHNwYXduU2hhcmRzOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0ZG93biBhbGwgc2hhcmRzLiAqL1xuICBzaHV0ZG93bjogKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcsIGNsZWFyUmVzaGFyZGluZ0ludGVydmFsPzogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZW5kUGF5bG9hZDogKHNoYXJkSWQ6IG51bWJlciwgcGF5bG9hZDogU2hhcmRTb2NrZXRSZXF1ZXN0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBBbGxvd3MgdXNlcnMgdG8gaG9vayBpbiBhbmQgY2hhbmdlIHRvIGNvbW11bmljYXRlIHRvIGRpZmZlcmVudCB3b3JrZXJzIGFjcm9zcyBkaWZmZXJlbnQgc2VydmVycyBvciBhbnl0aGluZyB0aGV5IGxpa2UuXG4gICAqIEZvciBleGFtcGxlIHVzaW5nIHJlZGlzIHB1YnN1YiB0byB0YWxrIHRvIG90aGVyIHNlcnZlcnMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgc2hvdWxkIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gaGF2ZSBpZGVudGlmaWVkIHRoZSBzaGFyZCBiZWZvcmUgcmVzb2x2aW5nIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAqL1xuICB0ZWxsV29ya2VyVG9JZGVudGlmeTogKHdvcmtlcklkOiBudW1iZXIsIHNoYXJkSWQ6IG51bWJlciwgYnVja2V0SWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGVsbCB0aGUgbWFuYWdlciB0byBpZGVudGlmeSBhIFNoYXJkLiBJZiB0aGlzIFNoYXJkIGlzIG5vdCBhbHJlYWR5IG1hbmFnZWQgdGhpcyB3aWxsIGFsc28gYWRkIHRoZSBTaGFyZCB0byB0aGUgbWFuYWdlci4gKi9cbiAgaWRlbnRpZnk6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEtpbGwgYSBzaGFyZC4gQ2xvc2UgYSBzaGFyZHMgY29ubmVjdGlvbiB0byBEaXNjb3JkJ3MgZ2F0ZXdheSAoaWYgYW55KSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIG1hbmFnZXIuICovXG4gIGtpbGw6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3VyZSB0aGF0IHRoZSBidWNrZXQgaXMgYWxsb3dlZCB0byBtYWtlIHRoZSBuZXh0IGlkZW50aWZ5IHJlcXVlc3QuICovXG4gIHJlcXVlc3RJZGVudGlmeTogKHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIHNoYXJkcyBiYXNlZCBvbiB0aGUgZ3VpbGQgaWQgYW5kIHRvdGFsIHNoYXJkcy4gKi9cbiAgY2FsY3VsYXRlU2hhcmRJZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdG90YWxTaGFyZHM/OiBudW1iZXIpID0+IG51bWJlclxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIGJvdCB1c2VyIHRvIGEgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB5b3Ugd2FudCB0byBqb2luLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENPTk5FQ1RgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgam9pblZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBBdExlYXN0T25lPE9taXQ8VXBkYXRlVm9pY2VTdGF0ZSwgJ2d1aWxkSWQnIHwgJ2NoYW5uZWxJZCc+PikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCBzdGF0dXMgaW4gYWxsIHNoYXJkcyB0aGF0IHRoaXMgZ2F0ZXdheSBtYW5hZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgbm90aGluZ1xuICAgKi9cbiAgZWRpdEJvdFN0YXR1czogKGRhdGE6IERpc2NvcmRVcGRhdGVQcmVzZW5jZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCdzIHN0YXR1cyBvbiBvbmUgc2hhcmQuXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZElkIFRoZSBzaGFyZCBpZCB0byBlZGl0IHRoZSBzdGF0dXMgZm9yLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgbm90aGluZ1xuICAgKi9cbiAgZWRpdFNoYXJkU3RhdHVzOiAoc2hhcmRJZDogbnVtYmVyLCBkYXRhOiBEaXNjb3JkVXBkYXRlUHJlc2VuY2UpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IgYSBndWlsZCBvdmVyIHRoZSBnYXRld2F5LiBJZiBgZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkYCBpcyBub3Qgc2V0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGFycmF5IGFuZCB5b3UnbGwgaGF2ZSB0byBoYW5kbGUgdGhlIGBHVUlMRF9NRU1CRVJTX0NIVU5LYCBldmVudHMgeW91cnNlbGYuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbWVtYmVycy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgcmVxdWVzdGluZyB0aGUgZW50aXJlIG1lbWJlciBsaXN0OlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfTUVNQkVSU2AgaW50ZW50LlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIHByZXNlbmNlcyAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMucHJlc2VuY2VzIHwgcHJlc2VuY2VzfSBzZXQgdG8gYHRydWVgKTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEdVSUxEX1BSRVNFTkNFU2AgaW50ZW50LlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIGEgcHJlZml4ICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5xdWVyeSB8IHF1ZXJ5fSBub24tYHVuZGVmaW5lZGApOlxuICAgKiAtIFJldHVybnMgYSBtYXhpbXVtIG9mIDEwMCBtZW1iZXJzLlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIGEgdXNlcnMgYnkgSUQgKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnVzZXJJZHMgfCB1c2VySWRzfSBub24tYHVuZGVmaW5lZGApOlxuICAgKiAtIFJldHVybnMgYSBtYXhpbXVtIG9mIDEwMCBtZW1iZXJzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXJzIENodW5rXyBnYXRld2F5IGV2ZW50IGZvciBldmVyeSAxMDAwIG1lbWJlcnMgZmV0Y2hlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjcmVxdWVzdC1ndWlsZC1tZW1iZXJzfVxuICAgKi9cbiAgcmVxdWVzdE1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBPbWl0PFJlcXVlc3RHdWlsZE1lbWJlcnMsICdndWlsZElkJz4pID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PlxuICAvKipcbiAgICogTGVhdmVzIHRoZSB2b2ljZSBjaGFubmVsIHRoZSBib3QgdXNlciBpcyBjdXJyZW50bHkgaW4uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgbGVhdmVWb2ljZUNoYW5uZWw6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFVzZWQgdG8gcmVxdWVzdCBzb3VuZGJvYXJkIHNvdW5kcyBmb3IgYSBsaXN0IG9mIGd1aWxkcy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyBtdWx0aXBsZSAoc2VlIHJlbWFya3MpIF9SZXF1ZXN0IFNvdW5kYm9hcmQgU291bmRzXyBnYXRld2F5IGNvbW1hbmQgb3ZlciB0aGUgZ2F0ZXdheSBiZWhpbmQgdGhlIHNjZW5lcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWRzIC0gVGhlIGd1aWxkcyB0byBnZXQgdGhlIHNvdW5kcyBmcm9tXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX1NvdW5kYm9hcmQgU291bmRzXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiDimqDvuI8gRGlzY29yZCB3aWxsIHNlbmQgdGhlIF9Tb3VuZGJvYXJkIFNvdW5kc18gZm9yIGVhY2ggb2YgdGhlIGd1aWxkIGlkc1xuICAgKiBob3dldmVyIHlvdSBtYXkgbm90IHJlY2VpdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGV2ZW50cyBhcyB0aGUgaWRzIHBhc3NlZCB0byBfUmVxdWVzdCBTb3VuZGJvYXJkIFNvdW5kc18gZm9yIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XG4gICAqIC0gVGhlIGJvdCBpcyBub3QgaW4gdGhlIHNlcnZlciBwcm92aWRlZFxuICAgKiAtIFRoZSBzaGFyZCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50IGZyb20gZG9lcyBub3QgcmVjZWl2ZSBldmVudHMgZm9yIHRoZSBzcGVjaWZpZWQgZ3VpbGRcbiAgICpcbiAgICogVG8gYXZvaWQgdGhpcyBEaXNjb3JkZW5vIHdpbGwgYXV0b21hdGljYWxseSB0cnkgdG8gZ3JvdXAgdGhlIGlkcyBiYXNlZCBvbiB3aGF0IHNoYXJkIHRoZXkgd2lsbCBuZWVkIHRvIGJlIHNlbnQsIGJ1dCB0aGlzIGludm9sdmVzIHNlbmRpbmcgbXVsdGlwbGUgbWVzc2FnZXMgaW4gbXVsdGlwbGUgc2hhcmRzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyNyZXF1ZXN0LXNvdW5kYm9hcmQtc291bmRzfVxuICAgKi9cbiAgcmVxdWVzdFNvdW5kYm9hcmRTb3VuZHM6IChndWlsZElkczogQmlnU3RyaW5nW10pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRoaXMgbWFuYWdlcnMgY2FjaGUgcmVsYXRlZCBzZXR0aW5ncy4gKi9cbiAgY2FjaGU6IHtcbiAgICByZXF1ZXN0TWVtYmVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhblxuICAgICAgLyoqIFRoZSBwZW5kaW5nIHJlcXVlc3RzLiAqL1xuICAgICAgcGVuZGluZzogQ29sbGVjdGlvbjxzdHJpbmcsIFJlcXVlc3RNZW1iZXJSZXF1ZXN0PlxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RNZW1iZXJSZXF1ZXN0IHtcbiAgLyoqIFRoZSB1bmlxdWUgbm9uY2UgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbm9uY2U6IHN0cmluZ1xuICAvKiogVGhlIHJlc29sdmVyIGhhbmRsZXIgdG8gcnVuIHdoZW4gYWxsIG1lbWJlcnMgYXJyaXZlLiAqL1xuICByZXNvbHZlOiAodmFsdWU6IENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcltdPiB8IFByb21pc2VMaWtlPENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcltdPj4pID0+IHZvaWRcbiAgLyoqIFRoZSBtZW1iZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IGFycml2ZWQgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbWVtYmVyczogRGlzY29yZE1lbWJlcldpdGhVc2VyW11cbn1cbiJdLCJuYW1lcyI6WyJyYW5kb21CeXRlcyIsIkdhdGV3YXlJbnRlbnRzIiwiR2F0ZXdheU9wY29kZXMiLCJDb2xsZWN0aW9uIiwiTGVha3lCdWNrZXQiLCJqc29uU2FmZVJlcGxhY2VyIiwibG9nZ2VyIiwiU2hhcmQiLCJTaGFyZFNvY2tldENsb3NlQ29kZXMiLCJjcmVhdGVHYXRld2F5TWFuYWdlciIsIm9wdGlvbnMiLCJjb25uZWN0aW9uT3B0aW9ucyIsImNvbm5lY3Rpb24iLCJ1cmwiLCJzaGFyZHMiLCJzZXNzaW9uU3RhcnRMaW1pdCIsIm1heENvbmN1cnJlbmN5IiwicmVtYWluaW5nIiwidG90YWwiLCJyZXNldEFmdGVyIiwiZ2F0ZXdheSIsImV2ZW50cyIsImNvbXByZXNzIiwidHJhbnNwb3J0Q29tcHJlc3Npb24iLCJpbnRlbnRzIiwicHJvcGVydGllcyIsIm9zIiwicHJvY2VzcyIsInBsYXRmb3JtIiwiYnJvd3NlciIsImRldmljZSIsInRva2VuIiwidmVyc2lvbiIsInRvdGFsU2hhcmRzIiwibGFzdFNoYXJkSWQiLCJmaXJzdFNoYXJkSWQiLCJ0b3RhbFdvcmtlcnMiLCJzaGFyZHNQZXJXb3JrZXIiLCJzcGF3blNoYXJkRGVsYXkiLCJzcHJlYWRTaGFyZHNJblJvdW5kUm9iaW4iLCJwcmVmZXJTbmFrZUNhc2UiLCJNYXAiLCJidWNrZXRzIiwiY2FjaGUiLCJyZXF1ZXN0TWVtYmVycyIsImVuYWJsZWQiLCJwZW5kaW5nIiwibWFrZVByZXNlbmNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ1bmRlZmluZWQiLCJyZXNoYXJkaW5nIiwic2hhcmRzRnVsbFBlcmNlbnRhZ2UiLCJjaGVja0ludGVydmFsIiwiZ2V0U2Vzc2lvbkluZm8iLCJ1cGRhdGVHdWlsZHNTaGFyZElkIiwiY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCIsImRlYnVnIiwibmVlZGVkIiwiRXJyb3IiLCJzZXNzaW9uSW5mbyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbmZvIiwicGVyY2VudGFnZSIsInJlc2hhcmQiLCJjYWxjdWxhdGVUb3RhbFNoYXJkcyIsImNsZWFyIiwicHJlcGFyZUJ1Y2tldHMiLCJwcm9taXNlcyIsIkFycmF5IiwiZnJvbSIsImVudHJpZXMiLCJtYXAiLCJidWNrZXRJZCIsImJ1Y2tldCIsIndvcmtlciIsIndvcmtlcnMiLCJzaGFyZElkIiwicXVldWUiLCJ0ZWxsV29ya2VyVG9QcmVwYXJlIiwiaWQiLCJhbGwiLCJvblJlc2hhcmRpbmdTd2l0Y2giLCJ3b3JrZXJJZCIsInNoYXJkIiwibWVzc2FnZSIsIl9zaGFyZCIsInBheWxvYWQiLCJ0IiwiZCIsImd1aWxkcyIsImciLCJyZXF1ZXN0SWRlbnRpZnkiLCJmb3J3YXJkVG9Cb3QiLCJzZXQiLCJpZGVudGlmeSIsInZhbHVlcyIsIm9sZEhhbmRsZXIiLCJfIiwic2h1dGRvd24iLCJSZXNoYXJkZWQiLCJNYXRoIiwiY2VpbCIsImNhbGN1bGF0ZVdvcmtlcklkIiwibWluIiwiZmxvb3IiLCJpIiwibGVha3lCdWNrZXQiLCJtYXgiLCJyZWZpbGxBbW91bnQiLCJyZWZpbGxJbnRlcnZhbCIsImdldCIsImZpbmQiLCJ3IiwicHVzaCIsInNwYXduU2hhcmRzIiwidGVsbFdvcmtlclRvSWRlbnRpZnkiLCJjbGVhckludGVydmFsIiwiY2hlY2tJbnRlcnZhbElkIiwid2FybiIsInNldEludGVydmFsIiwicmVzaGFyZGluZ0luZm8iLCJjb2RlIiwicmVhc29uIiwiY2xlYXJSZXNoYXJkaW5nSW50ZXJ2YWwiLCJjbG9zZSIsInNlbmRQYXlsb2FkIiwic2VuZCIsImFjcXVpcmUiLCJraWxsIiwiZGVsZXRlIiwiY2FsY3VsYXRlU2hhcmRJZCIsImd1aWxkSWQiLCJOdW1iZXIiLCJCaWdJbnQiLCJqb2luVm9pY2VDaGFubmVsIiwiY2hhbm5lbElkIiwib3AiLCJWb2ljZVN0YXRlVXBkYXRlIiwiZ3VpbGRfaWQiLCJ0b1N0cmluZyIsImNoYW5uZWxfaWQiLCJzZWxmX211dGUiLCJzZWxmTXV0ZSIsInNlbGZfZGVhZiIsInNlbGZEZWFmIiwiZWRpdEJvdFN0YXR1cyIsImRhdGEiLCJlZGl0U2hhcmRTdGF0dXMiLCJQcmVzZW5jZVVwZGF0ZSIsInNpbmNlIiwiYWZrIiwiYWN0aXZpdGllcyIsInN0YXR1cyIsImxpbWl0IiwiR3VpbGRNZW1iZXJzIiwidXNlcklkcyIsImxlbmd0aCIsIm5vbmNlIiwiaGFzIiwibWVtYmVycyIsInJlamVjdCIsIlJlcXVlc3RHdWlsZE1lbWJlcnMiLCJxdWVyeSIsInByZXNlbmNlcyIsInVzZXJfaWRzIiwibGVhdmVWb2ljZUNoYW5uZWwiLCJyZXF1ZXN0U291bmRib2FyZFNvdW5kcyIsImd1aWxkSWRzIiwiaWRzIiwiUmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMiLCJndWlsZF9pZHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFdBQVcsUUFBUSxjQUFhO0FBQ3pDLFNBUUVDLGNBQWMsRUFDZEMsY0FBYyxRQUVULG9CQUFtQjtBQUMxQixTQUFTQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsZ0JBQWdCLEVBQUVDLE1BQU0sUUFBUSxvQkFBbUI7QUFDckYsT0FBT0MsV0FBVyxhQUFZO0FBQzlCLFNBQTJCQyxxQkFBcUIsUUFBbUYsYUFBWTtBQUUvSSxPQUFPLFNBQVNDLHFCQUFxQkMsT0FBb0M7SUFDdkUsTUFBTUMsb0JBQW9CRCxRQUFRRSxVQUFVLElBQUk7UUFDOUNDLEtBQUs7UUFDTEMsUUFBUTtRQUNSQyxtQkFBbUI7WUFDakJDLGdCQUFnQjtZQUNoQkMsV0FBVztZQUNYQyxPQUFPO1lBQ1BDLFlBQVksT0FBTyxLQUFLLEtBQUs7UUFDL0I7SUFDRjtJQUVBLE1BQU1DLFVBQTBCO1FBQzlCQyxRQUFRWCxRQUFRVyxNQUFNLElBQUksQ0FBQztRQUMzQkMsVUFBVVosUUFBUVksUUFBUSxJQUFJO1FBQzlCQyxzQkFBc0JiLFFBQVFhLG9CQUFvQixJQUFJO1FBQ3REQyxTQUFTZCxRQUFRYyxPQUFPLElBQUk7UUFDNUJDLFlBQVk7WUFDVkMsSUFBSWhCLFFBQVFlLFVB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
|
|
464
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQge1xuICB0eXBlIEF0TGVhc3RPbmUsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENhbWVsaXplLFxuICB0eXBlIERpc2NvcmRHZXRHYXRld2F5Qm90LFxuICB0eXBlIERpc2NvcmRNZW1iZXJXaXRoVXNlcixcbiAgdHlwZSBEaXNjb3JkUmVhZHksXG4gIHR5cGUgRGlzY29yZFVwZGF0ZVByZXNlbmNlLFxuICBHYXRld2F5SW50ZW50cyxcbiAgR2F0ZXdheU9wY29kZXMsXG4gIHR5cGUgUmVxdWVzdEd1aWxkTWVtYmVycyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBqc29uU2FmZVJlcGxhY2VyLCBMZWFreUJ1Y2tldCwgbG9nZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgU2hhcmQgZnJvbSAnLi9TaGFyZC5qcydcbmltcG9ydCB7IHR5cGUgU2hhcmRFdmVudHMsIFNoYXJkU29ja2V0Q2xvc2VDb2RlcywgdHlwZSBTaGFyZFNvY2tldFJlcXVlc3QsIHR5cGUgVHJhbnNwb3J0Q29tcHJlc3Npb24sIHR5cGUgVXBkYXRlVm9pY2VTdGF0ZSB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMpOiBHYXRld2F5TWFuYWdlciB7XG4gIGNvbnN0IGNvbm5lY3Rpb25PcHRpb25zID0gb3B0aW9ucy5jb25uZWN0aW9uID8/IHtcbiAgICB1cmw6ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgIHNoYXJkczogMSxcbiAgICBzZXNzaW9uU3RhcnRMaW1pdDoge1xuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgICByZW1haW5pbmc6IDEwMDAsXG4gICAgICB0b3RhbDogMTAwMCxcbiAgICAgIHJlc2V0QWZ0ZXI6IDEwMDAgKiA2MCAqIDYwICogMjQsXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IGdhdGV3YXk6IEdhdGV3YXlNYW5hZ2VyID0ge1xuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMgPz8ge30sXG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gZmFsc2UsXG4gICAgdHJhbnNwb3J0Q29tcHJlc3Npb246IG9wdGlvbnMudHJhbnNwb3J0Q29tcHJlc3Npb24gPz8gbnVsbCxcbiAgICBpbnRlbnRzOiBvcHRpb25zLmludGVudHMgPz8gMCxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBvczogb3B0aW9ucy5wcm9wZXJ0aWVzPy5vcyA/PyBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgYnJvd3Nlcjogb3B0aW9ucy5wcm9wZXJ0aWVzPy5icm93c2VyID8/ICdEaXNjb3JkZW5vJyxcbiAgICAgIGRldmljZTogb3B0aW9ucy5wcm9wZXJ0aWVzPy5kZXZpY2UgPz8gJ0Rpc2NvcmRlbm8nLFxuICAgIH0sXG4gICAgdG9rZW46IG9wdGlvbnMudG9rZW4sXG4gICAgdXJsOiBvcHRpb25zLnVybCA/PyBjb25uZWN0aW9uT3B0aW9ucy51cmwgPz8gJ3dzczovL2dhdGV3YXkuZGlzY29yZC5nZycsXG4gICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IDEwLFxuICAgIGNvbm5lY3Rpb246IGNvbm5lY3Rpb25PcHRpb25zLFxuICAgIHRvdGFsU2hhcmRzOiBvcHRpb25zLnRvdGFsU2hhcmRzID8/IGNvbm5lY3Rpb25PcHRpb25zLnNoYXJkcyA/PyAxLFxuICAgIGxhc3RTaGFyZElkOiBvcHRpb25zLmxhc3RTaGFyZElkID8/IChvcHRpb25zLnRvdGFsU2hhcmRzID8gb3B0aW9ucy50b3RhbFNoYXJkcyAtIDEgOiBjb25uZWN0aW9uT3B0aW9ucyA/IGNvbm5lY3Rpb25PcHRpb25zLnNoYXJkcyAtIDEgOiAwKSxcbiAgICBmaXJzdFNoYXJkSWQ6IG9wdGlvbnMuZmlyc3RTaGFyZElkID8/IDAsXG4gICAgdG90YWxXb3JrZXJzOiBvcHRpb25zLnRvdGFsV29ya2VycyA/PyA0LFxuICAgIHNoYXJkc1Blcldvcmtlcjogb3B0aW9ucy5zaGFyZHNQZXJXb3JrZXIgPz8gMjUsXG4gICAgc3Bhd25TaGFyZERlbGF5OiBvcHRpb25zLnNwYXduU2hhcmREZWxheSA/PyA1MzAwLFxuICAgIHNwcmVhZFNoYXJkc0luUm91bmRSb2Jpbjogb3B0aW9ucy5zcHJlYWRTaGFyZHNJblJvdW5kUm9iaW4gPz8gZmFsc2UsXG4gICAgcHJlZmVyU25ha2VDYXNlOiBvcHRpb25zLnByZWZlclNuYWtlQ2FzZSA/PyBmYWxzZSxcbiAgICBzaGFyZHM6IG5ldyBNYXAoKSxcbiAgICBidWNrZXRzOiBuZXcgTWFwKCksXG4gICAgY2FjaGU6IHtcbiAgICAgIHJlcXVlc3RNZW1iZXJzOiB7XG4gICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuY2FjaGU/LnJlcXVlc3RNZW1iZXJzPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICBwZW5kaW5nOiBuZXcgQ29sbGVjdGlvbigpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIgPz8gbG9nZ2VyLFxuICAgIG1ha2VQcmVzZW5jZTogb3B0aW9ucy5tYWtlUHJlc2VuY2UgPz8gKCgpID0+IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpKSxcbiAgICByZXNoYXJkaW5nOiB7XG4gICAgICBlbmFibGVkOiBvcHRpb25zLnJlc2hhcmRpbmc/LmVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgIHNoYXJkc0Z1bGxQZXJjZW50YWdlOiBvcHRpb25zLnJlc2hhcmRpbmc/LnNoYXJkc0Z1bGxQZXJjZW50YWdlID8/IDgwLFxuICAgICAgY2hlY2tJbnRlcnZhbDogb3B0aW9ucy5yZXNoYXJkaW5nPy5jaGVja0ludGVydmFsID8/IDI4ODAwMDAwLCAvLyA4IGhvdXJzXG4gICAgICBzaGFyZHM6IG5ldyBNYXAoKSxcbiAgICAgIGdldFNlc3Npb25JbmZvOiBvcHRpb25zLnJlc2hhcmRpbmc/LmdldFNlc3Npb25JbmZvLFxuICAgICAgdXBkYXRlR3VpbGRzU2hhcmRJZDogb3B0aW9ucy5yZXNoYXJkaW5nPy51cGRhdGVHdWlsZHNTaGFyZElkLFxuICAgICAgYXN5bmMgY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCgpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoJ1tSZXNoYXJkaW5nXSBDaGVja2luZyBpZiByZXNoYXJkaW5nIGlzIG5lZWRlZC4nKVxuXG4gICAgICAgIGlmICghZ2F0ZXdheS5yZXNoYXJkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZGlzYWJsZWQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFnYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbUmVzaGFyZGluZ10gUmVzaGFyZGluZyBpcyBlbmFibGVkIGJ1dCBubyAncmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbygpJyBpcyBub3QgcHJvdmlkZWQuXCIpXG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZW5hYmxlZC4nKVxuXG4gICAgICAgIGNvbnN0IHNlc3Npb25JbmZvID0gYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKClcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1Jlc2hhcmRpbmddIFNlc3Npb24gaW5mbyByZXRyaWV2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoc2Vzc2lvbkluZm8pfWApXG5cbiAgICAgICAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2ggaWRlbnRpZnkgbGltaXRzIHRvIHRyeSByZXNoYXJkaW5nXG4gICAgICAgIGlmIChzZXNzaW9uSW5mby5zZXNzaW9uU3RhcnRMaW1pdC5yZW1haW5pbmcgPCBzZXNzaW9uSW5mby5zaGFyZHMpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIE5vdCBlbm91Z2ggc2Vzc2lvbiBzdGFydCBsaW1pdHMgbGVmdCB0byByZXNoYXJkLicpXG5cbiAgICAgICAgICByZXR1cm4geyBuZWVkZWQ6IGZhbHNlLCBpbmZvOiBzZXNzaW9uSW5mbyB9XG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIEFibGUgdG8gcmVzaGFyZCwgY2hlY2tpbmcgd2hldGhlciBuZWNlc3Nhcnkgbm93LicpXG5cbiAgICAgICAgLy8gMjUwMCBpcyB0aGUgbWF4IGFtb3VudCBvZiBndWlsZHMgYSBzaW5nbGUgc2hhcmQgY2FuIGhhbmRsZVxuICAgICAgICAvLyAxMDAwIGlzIHRoZSBhbW91bnQgb2YgZ3VpbGRzIGRpc2NvcmQgdXNlcyB0byBkZXRlcm1pbmUgaG93IG1hbnkgc2hhcmRzIHRvIHJlY29tbWVuZC5cbiAgICAgICAgLy8gVGhpcyBhbGdvIGhlbHBzIGNoZWNrIGlmIHlvdXIgYm90IGhhcyBncm93biBlbm91Z2ggdG8gcmVzaGFyZC5cbiAgICAgICAgLy8gV2hpbGUgdGhpcyBpcyBpbXByZWNpc2UgYXMgZGlzY29yZCBjaGFuZ2VzIHRoZSByZWNvbW1lbmRlZCBudW1iZXIgb2Ygc2hhcmQgZXZlcnkgMTAwMCBndWlsZHMgaXQgaXMgZ29vZCBlbm91Z2hcbiAgICAgICAgLy8gVGhlIGFsdGVybmF0aXZlIGlzIHRvIHN0b3JlIHRoZSBndWlsZCBjb3VudCBmb3IgZWFjaCBzaGFyZCBhbmQgcmVxdWlyZSB0aGUgR3VpbGRzIGludGVudCBmb3IgYEdVSUxEX0NSRUFURWAgYW5kIGBHVUlMRF9ERUxFVEVgIGV2ZW50c1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gKHNlc3Npb25JbmZvLnNoYXJkcyAvICgoZ2F0ZXdheS50b3RhbFNoYXJkcyAqIDI1MDApIC8gMTAwMCkpICogMTAwXG5cbiAgICAgICAgLy8gTGVzcyB0aGFuIG5lY2Vzc2FyeSUgYmVpbmcgdXNlZCBzbyBkbyBub3RoaW5nXG4gICAgICAgIGlmIChwZXJjZW50YWdlIDwgZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkc0Z1bGxQZXJjZW50YWdlKSB7XG4gICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoJ1tSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIG5vdCBuZWVkZWQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UsIGluZm86IHNlc3Npb25JbmZvIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oJ1tSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIGlzIG5lZWRlZC4nKVxuXG4gICAgICAgIHJldHVybiB7IG5lZWRlZDogdHJ1ZSwgaW5mbzogc2Vzc2lvbkluZm8gfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJlc2hhcmQoaW5mbykge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gU3RhcnRpbmcgdGhlIHJlc2hhcmQgcHJvY2Vzcy4gUHJldmlvdXMgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcbiAgICAgICAgLy8gU2V0IHZhbHVlcyBvbiBnYXRld2F5XG4gICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgPSBpbmZvLnNoYXJkc1xuICAgICAgICAvLyBIYW5kbGVzIHByZXBhcmluZyBtaWQgc2l6ZWQgYm90cyBmb3IgTEJTXG4gICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgPSBnYXRld2F5LmNhbGN1bGF0ZVRvdGFsU2hhcmRzKClcbiAgICAgICAgLy8gU2V0IGZpcnN0IHNoYXJkIGlkIGlmIHByb3ZpZGVkIGluIGluZm9cbiAgICAgICAgaWYgKHR5cGVvZiBpbmZvLmZpcnN0U2hhcmRJZCA9PT0gJ251bWJlcicpIGdhdGV3YXkuZmlyc3RTaGFyZElkID0gaW5mby5maXJzdFNoYXJkSWRcbiAgICAgICAgLy8gU2V0IGxhc3Qgc2hhcmQgaWQgaWYgcHJvdmlkZWQgaW4gaW5mb1xuICAgICAgICBpZiAodHlwZW9mIGluZm8ubGFzdFNoYXJkSWQgPT09ICdudW1iZXInKSBnYXRld2F5Lmxhc3RTaGFyZElkID0gaW5mby5sYXN0U2hhcmRJZFxuICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFueSBsYXN0U2hhcmRJZCwgd2UgYXNzdW1lIGFsbCB0aGUgc2hhcmRzIGFyZSB0byBiZSB1c2VkXG4gICAgICAgIGVsc2UgZ2F0ZXdheS5sYXN0U2hhcmRJZCA9IGdhdGV3YXkudG90YWxTaGFyZHMgLSAxXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBTdGFydGluZyB0aGUgcmVzaGFyZCBwcm9jZXNzLiBOZXcgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcblxuICAgICAgICAvLyBSZXNldHRpbmcgYnVja2V0c1xuICAgICAgICBnYXRld2F5LmJ1Y2tldHMuY2xlYXIoKVxuICAgICAgICAvLyBSZWZpbGxpbmcgYnVja2V0cyB3aXRoIG5ldyB2YWx1ZXNcbiAgICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgICAgLy8gQ2FsbCBhbGwgdGhlIGJ1Y2tldHMgYW5kIHRlbGwgdGhlaXIgd29ya2VycyAmIHNoYXJkcyB0byBpZGVudGlmeVxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IEFycmF5LmZyb20oZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKSkubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcudGVsbFdvcmtlclRvUHJlcGFyZSh3b3JrZXIuaWQsIHNoYXJkSWQsIGJ1Y2tldElkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gQWxsIHNoYXJkcyBhcmUgbm93IG9ubGluZS5gKVxuXG4gICAgICAgIGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy5vblJlc2hhcmRpbmdTd2l0Y2goKVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHRlbGxXb3JrZXJUb1ByZXBhcmUod29ya2VySWQsIHNoYXJkSWQsIGJ1Y2tldElkKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gVGVsbGluZyB3b3JrZXIgdG8gcHJlcGFyZS4gV29ya2VyOiAke3dvcmtlcklkfSB8IFNoYXJkOiAke3NoYXJkSWR9IHwgQnVja2V0OiAke2J1Y2tldElkfS5gKVxuICAgICAgICBjb25zdCBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IGdhdGV3YXkuY29tcHJlc3MsXG4gICAgICAgICAgICB0cmFuc3BvcnRDb21wcmVzc2lvbjogZ2F0ZXdheS50cmFuc3BvcnRDb21wcmVzc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgaW50ZW50czogZ2F0ZXdheS5pbnRlbnRzLFxuICAgICAgICAgICAgcHJvcGVydGllczogZ2F0ZXdheS5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdG9rZW46IGdhdGV3YXkudG9rZW4sXG4gICAgICAgICAgICB0b3RhbFNoYXJkczogZ2F0ZXdheS50b3RhbFNoYXJkcyxcbiAgICAgICAgICAgIHVybDogZ2F0ZXdheS51cmwsXG4gICAgICAgICAgICB2ZXJzaW9uOiBnYXRld2F5LnZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgIGFzeW5jIG1lc3NhZ2UoX3NoYXJkLCBwYXlsb2FkKSB7XG4gICAgICAgICAgICAgIC8vIElnbm9yZSBhbGwgZXZlbnRzIHVudGlsIHdlIHN3aWNoIGZyb20gdGhlIG9sZCBzaGFyZHMgdG8gdGhlIG5ldyBvbmVzLlxuICAgICAgICAgICAgICBpZiAocGF5bG9hZC50ID09PSAnUkVBRFknKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLnVwZGF0ZUd1aWxkc1NoYXJkSWQ/LihcbiAgICAgICAgICAgICAgICAgIChwYXlsb2FkLmQgYXMgRGlzY29yZFJlYWR5KS5ndWlsZHMubWFwKChnKSA9PiBnLmlkKSxcbiAgICAgICAgICAgICAgICAgIHNoYXJkSWQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9nZ2VyOiBnYXRld2F5LmxvZ2dlcixcbiAgICAgICAgICByZXF1ZXN0SWRlbnRpZnk6IGFzeW5jICgpID0+IGF3YWl0IGdhdGV3YXkucmVxdWVzdElkZW50aWZ5KHNoYXJkSWQpLFxuICAgICAgICAgIG1ha2VQcmVzZW5jZTogZ2F0ZXdheS5tYWtlUHJlc2VuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGdhdGV3YXkucHJlZmVyU25ha2VDYXNlKSB7XG4gICAgICAgICAgc2hhcmQuZm9yd2FyZFRvQm90ID0gYXN5bmMgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHNoYXJkLmV2ZW50cz8ubWVzc2FnZT8uKHNoYXJkLCBwYXlsb2FkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuXG4gICAgICAgIGF3YWl0IHNoYXJkLmlkZW50aWZ5KClcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1Jlc2hhcmRpbmddIFNoYXJkICMke3NoYXJkSWR9IGlkZW50aWZpZWQuYClcbiAgICAgIH0sXG4gICAgICBhc3luYyBvblJlc2hhcmRpbmdTd2l0Y2goKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gTWFraW5nIHRoZSBzd2l0Y2ggZnJvbSB0aGUgb2xkIHNoYXJkcyB0byB0aGUgbmV3IG9uZXMuYClcblxuICAgICAgICAvLyBNb3ZlIHRoZSBldmVudHMgZnJvbSB0aGUgb2xkIHNoYXJkcyB0byB0aGUgbmV3IG9uZXNcbiAgICAgICAgZm9yIChjb25zdCBzaGFyZCBvZiBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzLnZhbHVlcygpKSB7XG4gICAgICAgICAgc2hhcmQuZXZlbnRzID0gb3B0aW9ucy5ldmVudHMgPz8ge31cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9sZCBzaGFyZHMgc3RvcCBwcm9jZXNzaW5nIGV2ZW50c1xuICAgICAgICBmb3IgKGNvbnN0IHNoYXJkIG9mIGdhdGV3YXkuc2hhcmRzLnZhbHVlcygpKSB7XG4gICAgICAgICAgY29uc3Qgb2xkSGFuZGxlciA9IHNoYXJkLmV2ZW50cy5tZXNzYWdlXG5cbiAgICAgICAgICAvLyBDaGFuZ2Ugd2l0aCBzcHJlYWQgb3BlcmF0b3IgdG8gbm90IGFmZmVjdCBuZXcgc2hhcmRzLCBhcyBjaGFuZ2luZyBhbnl0aGluZyBvbiBzaGFyZC5ldmVudHMgd2lsbCBkaXJlY3RseSBjaGFuZ2Ugb3B0aW9ucy5ldmVudHMsIHdoaWNoIGNoYW5nZXMgbmV3IHNoYXJkcycgZXZlbnRzXG4gICAgICAgICAgc2hhcmQuZXZlbnRzID0ge1xuICAgICAgICAgICAgLi4uc2hhcmQuZXZlbnRzLFxuICAgICAgICAgICAgbWVzc2FnZTogYXN5bmMgZnVuY3Rpb24gKF8sIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgLy8gTWVtYmVyIGNoZWNrcyBuZWVkIHRvIGNvbnRpbnVlIGJ1dCBvdGhlcnMgY2FuIHN0b3BcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudCA9PT0gJ0dVSUxEX01FTUJFUlNfQ0hVTksnKSB7XG4gICAgICAgICAgICAgICAgb2xkSGFuZGxlcj8uKHNoYXJkLCBtZXNzYWdlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBTaHV0dGluZyBkb3duIG9sZCBzaGFyZHMuYClcbiAgICAgICAgYXdhaXQgZ2F0ZXdheS5zaHV0ZG93bihTaGFyZFNvY2tldENsb3NlQ29kZXMuUmVzaGFyZGVkLCAnUmVzaGFyZGVkIScsIGZhbHNlKVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBDb21wbGV0ZWQuYClcbiAgICAgICAgZ2F0ZXdheS5zaGFyZHMgPSBuZXcgTWFwKGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMpXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMuY2xlYXIoKVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY2FsY3VsYXRlVG90YWxTaGFyZHMoKSB7XG4gICAgICAvLyBCb3RzIHVuZGVyIDEwMGsgc2VydmVycyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gTEJTLlxuICAgICAgaWYgKGdhdGV3YXkudG90YWxTaGFyZHMgPCAxMDApIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB0b3RhbCBzaGFyZHM6ICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIENhbGN1bGF0aW5nIHRvdGFsIHNoYXJkc2AsIGdhdGV3YXkudG90YWxTaGFyZHMsIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSlcbiAgICAgIC8vIENhbGN1bGF0ZSBhIG11bHRpcGxlIG9mIGBtYXhDb25jdXJyZW5jeWAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgZ2F0ZXdheS5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIE1hdGguY2VpbChcbiAgICAgICAgICBnYXRld2F5LnRvdGFsU2hhcmRzIC9cbiAgICAgICAgICAgIC8vIElmIGBtYXhDb25jdXJyZW5jeWAgaXMgMSwgd2UgY2FuIHNhZmVseSB1c2UgMTYgdG8gZ2V0IGB0b3RhbFNoYXJkc2AgdG8gYmUgaW4gYSBtdWx0aXBsZSBvZiAxNiBzbyB0aGF0IHdlIGNhbiBwcmVwYXJlIGJvdHMgd2l0aCAxMDBrIHNlcnZlcnMgZm9yIExCUy5cbiAgICAgICAgICAgIChnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgPT09IDEgPyAxNiA6IGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSksXG4gICAgICAgICkgKiAoZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5ID09PSAxID8gMTYgOiBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG4gICAgICApXG4gICAgfSxcbiAgICBjYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKSB7XG4gICAgICBjb25zdCB3b3JrZXJJZCA9IG9wdGlvbnMuc3ByZWFkU2hhcmRzSW5Sb3VuZFJvYmluXG4gICAgICAgID8gc2hhcmRJZCAlIGdhdGV3YXkudG90YWxXb3JrZXJzXG4gICAgICAgIDogTWF0aC5taW4oTWF0aC5mbG9vcihzaGFyZElkIC8gZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIpLCBnYXRld2F5LnRvdGFsV29ya2VycyAtIDEpXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFtHYXRld2F5XSBDYWxjdWxhdGluZyB3b3JrZXJJZDogU2hhcmQ6ICR7c2hhcmRJZH0gLT4gV29ya2VyOiAke3dvcmtlcklkfSAtPiBQZXIgV29ya2VyOiAke2dhdGV3YXkuc2hhcmRzUGVyV29ya2VyfSAtPiBUb3RhbDogJHtnYXRld2F5LnRvdGFsV29ya2Vyc31gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIHdvcmtlcklkXG4gICAgfSxcbiAgICBwcmVwYXJlQnVja2V0cygpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5OyArK2kpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBQcmVwYXJpbmcgYnVja2V0cyBmb3IgY29uY3VycmVuY3k6ICR7aX1gKVxuICAgICAgICBnYXRld2F5LmJ1Y2tldHMuc2V0KGksIHtcbiAgICAgICAgICB3b3JrZXJzOiBbXSxcbiAgICAgICAgICBsZWFreUJ1Y2tldDogbmV3IExlYWt5QnVja2V0KHtcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgIHJlZmlsbEFtb3VudDogMSxcbiAgICAgICAgICAgIHJlZmlsbEludGVydmFsOiBnYXRld2F5LnNwYXduU2hhcmREZWxheSxcbiAgICAgICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9yZ2FuaXplIGFsbCBzaGFyZHMgaW50byB0aGVpciBvd24gYnVja2V0c1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFByZXBhcmluZyBidWNrZXRzIGZvciBzaGFyZDogJHtzaGFyZElkfWApXG5cbiAgICAgICAgaWYgKHNoYXJkSWQgPj0gZ2F0ZXdheS50b3RhbFNoYXJkcykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBpcyBiaWdnZXIgb3IgZXF1YWwgdG8gdGhlIHVzZWQgYW1vdW50IG9mIHVzZWQgc2hhcmRzIHdoaWNoIGlzICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVja2V0SWQgPSBzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5XG4gICAgICAgIGNvbnN0IGJ1Y2tldCA9IGdhdGV3YXkuYnVja2V0cy5nZXQoYnVja2V0SWQpXG5cbiAgICAgICAgaWYgKCFidWNrZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBnb3QgYXNzaWduZWQgdG8gYW4gaWxsZWdhbCBidWNrZXQgaWQ6ICR7YnVja2V0SWR9LCBleHBlY3RlZCBhIGJ1Y2tldCBpZCBiZXR3ZWVuIDAgYW5kICR7XG4gICAgICAgICAgICAgIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSAtIDFcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgd29ya2VyIGlkIGZvciB0aGlzIHNoYXJkXG4gICAgICAgIGNvbnN0IHdvcmtlcklkID0gZ2F0ZXdheS5jYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKVxuICAgICAgICBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LmlkID09PSB3b3JrZXJJZClcblxuICAgICAgICAvLyBJZiB0aGlzIHdvcmtlciBhbHJlYWR5IGV4aXN0cywgYWRkIHRoZSBzaGFyZCB0byBpdHMgcXVldWVcbiAgICAgICAgaWYgKHdvcmtlcikge1xuICAgICAgICAgIHdvcmtlci5xdWV1ZS5wdXNoKHNoYXJkSWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVja2V0LndvcmtlcnMucHVzaCh7IGlkOiB3b3JrZXJJZCwgcXVldWU6IFtzaGFyZElkXSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFByZXBhcmUgdGhlIGNvbmN1cnJlbmN5IGJ1Y2tldHNcbiAgICAgIGdhdGV3YXkucHJlcGFyZUJ1Y2tldHMoKVxuXG4gICAgICBjb25zdCBwcm9taXNlcyA9IFsuLi5nYXRld2F5LmJ1Y2tldHMuZW50cmllcygpXS5tYXAoYXN5bmMgKFtidWNrZXRJZCwgYnVja2V0XSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgIGZvciAoY29uc3Qgc2hhcmRJZCBvZiB3b3JrZXIucXVldWUpIHtcbiAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkudGVsbFdvcmtlclRvSWRlbnRpZnkod29ya2VyLmlkLCBzaGFyZElkLCBidWNrZXRJZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIFdlIHVzZSBQcm9taXNlLmFsbCBzbyB3ZSBjYW4gc3RhcnQgYWxsIGJ1Y2tldHMgYXQgdGhlIHNhbWUgdGltZVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgICAgIC8vIENoZWNrIGFuZCByZXNoYXJkIGF1dG9tYXRpY2FsbHkgaWYgYXV0byByZXNoYXJkaW5nIGlzIGVuYWJsZWQuXG4gICAgICBpZiAoZ2F0ZXdheS5yZXNoYXJkaW5nLmVuYWJsZWQgJiYgZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWwgIT09IC0xKSB7XG4gICAgICAgIC8vIEl0IGlzIGJldHRlciB0byBlbnN1cmUgdGhlcmUgaXMgYWx3YXlzIG9ubHkgb25lXG4gICAgICAgIGNsZWFySW50ZXJ2YWwoZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWxJZClcblxuICAgICAgICBpZiAoIWdhdGV3YXkucmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbykge1xuICAgICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5lbmFibGVkID0gZmFsc2VcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci53YXJuKFwiW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZW5hYmxlZCBidXQgJ3Jlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8oKScgd2FzIG5vdCBwcm92aWRlZC4gRGlzYWJsaW5nIHJlc2hhcmRpbmcuXCIpXG5cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsSWQgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzaGFyZGluZ0luZm8gPSBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCgpXG5cbiAgICAgICAgICBpZiAocmVzaGFyZGluZ0luZm8ubmVlZGVkICYmIHJlc2hhcmRpbmdJbmZvLmluZm8pIGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy5yZXNoYXJkKHJlc2hhcmRpbmdJbmZvLmluZm8pXG4gICAgICAgIH0sIGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsKVxuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2h1dGRvd24oY29kZSwgcmVhc29uLCBjbGVhclJlc2hhcmRpbmdJbnRlcnZhbCA9IHRydWUpIHtcbiAgICAgIGlmIChjbGVhclJlc2hhcmRpbmdJbnRlcnZhbCkgY2xlYXJJbnRlcnZhbChnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJbnRlcnZhbElkKVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKGdhdGV3YXkuc2hhcmRzLnZhbHVlcygpKS5tYXAoKHNoYXJkKSA9PiBzaGFyZC5jbG9zZShjb2RlLCByZWFzb24pKSlcbiAgICB9LFxuICAgIGFzeW5jIHNlbmRQYXlsb2FkKHNoYXJkSWQsIHBheWxvYWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG5cbiAgICAgIGlmICghc2hhcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0gbm90IGZvdW5kYClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hhcmQuc2VuZChwYXlsb2FkKVxuICAgIH0sXG4gICAgYXN5bmMgdGVsbFdvcmtlclRvSWRlbnRpZnkod29ya2VySWQsIHNoYXJkSWQsIGJ1Y2tldElkKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFRlbGwgd29ya2VyICMke3dvcmtlcklkfSB0byBpZGVudGlmeSBzaGFyZCAjJHtzaGFyZElkfSBmcm9tIGJ1Y2tldCAke2J1Y2tldElkfWApXG4gICAgICBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBJZGVudGlmeWluZyAke3NoYXJkID8gJ2V4aXN0aW5nJyA6ICduZXcnfSBzaGFyZCAoJHtzaGFyZElkfSlgKVxuXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHNoYXJkID0gbmV3IFNoYXJkKHtcbiAgICAgICAgICBpZDogc2hhcmRJZCxcbiAgICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgICBjb21wcmVzczogdGhpcy5jb21wcmVzcyxcbiAgICAgICAgICAgIHRyYW5zcG9ydENvbXByZXNzaW9uOiBnYXRld2F5LnRyYW5zcG9ydENvbXByZXNzaW9uLFxuICAgICAgICAgICAgaW50ZW50czogdGhpcy5pbnRlbnRzLFxuICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXG4gICAgICAgICAgICB0b3RhbFNoYXJkczogdGhpcy50b3RhbFNoYXJkcyxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzID8/IHt9LFxuICAgICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgICAgcmVxdWVzdElkZW50aWZ5OiBhc3luYyAoKSA9PiBhd2FpdCBnYXRld2F5LnJlcXVlc3RJZGVudGlmeShzaGFyZElkKSxcbiAgICAgICAgICBtYWtlUHJlc2VuY2U6IGdhdGV3YXkubWFrZVByZXNlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0aGlzLnByZWZlclNuYWtlQ2FzZSkge1xuICAgICAgICAgIHNoYXJkLmZvcndhcmRUb0JvdCA9IGFzeW5jIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBzaGFyZCEuZXZlbnRzLm1lc3NhZ2U/LihzaGFyZCEsIHBheWxvYWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzaGFyZC5pZGVudGlmeSgpXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RJZGVudGlmeShzaGFyZElkKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFNoYXJkICMke3NoYXJkSWR9IHJlcXVlc3RlZCBhbiBpZGVudGlmeS5gKVxuXG4gICAgICBjb25zdCBidWNrZXQgPSBnYXRld2F5LmJ1Y2tldHMuZ2V0KHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG5cbiAgICAgIGlmICghYnVja2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHJlcXVlc3QgaWRlbnRpZnkgZm9yIGEgc2hhcmQgdGhhdCBpcyBub3QgYXNzaWduZWQgdG8gYW55IGJ1Y2tldC5cIilcbiAgICAgIH1cblxuICAgICAgYXdhaXQgYnVja2V0LmxlYWt5QnVja2V0LmFjcXVpcmUoKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIEFwcHJvdmVkIGlkZW50aWZ5IHJlcXVlc3QgZm9yIFNoYXJkICMke3NoYXJkSWR9LmApXG4gICAgfSxcblxuICAgIGFzeW5jIGtpbGwoc2hhcmRJZDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFNoYXJkICMke3NoYXJkSWR9IHdhcyByZXF1ZXN0ZWQgdG8gYmUga2lsbGVkLCBidXQgdGhlIHNoYXJkIGNvdWxkIG5vdCBiZSBmb3VuZC5gKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBLaWxsaW5nIFNoYXJkICMke3NoYXJkSWR9YClcbiAgICAgIHRoaXMuc2hhcmRzLmRlbGV0ZShzaGFyZElkKVxuICAgICAgYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG5cbiAgICAvLyBIZWxwZXJzIG1ldGhvZHMgYmVsb3cgdGhpc1xuXG4gICAgY2FsY3VsYXRlU2hhcmRJZChndWlsZElkLCB0b3RhbFNoYXJkcykge1xuICAgICAgLy8gSWYgbm9uZSBpcyBwcm92aWRlZCwgdXNlIHRoZSB0b3RhbCBzaGFyZHMgbnVtYmVyIGZyb20gZ2F0ZXdheSBvYmplY3QuXG4gICAgICBpZiAoIXRvdGFsU2hhcmRzKSB0b3RhbFNoYXJkcyA9IGdhdGV3YXkudG90YWxTaGFyZHNcbiAgICAgIC8vIElmIGl0IGlzIG9ubHkgMSBzaGFyZCwgaXQgd2lsbCBhbHdheXMgYmUgc2hhcmQgaWQgMFxuICAgICAgaWYgKHRvdGFsU2hhcmRzID09PSAxKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gY2FsY3VsYXRlU2hhcmRJZCAoMSBzaGFyZClgKVxuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGNhbGN1bGF0ZVNoYXJkSWQgKGd1aWxkSWQ6ICR7Z3VpbGRJZH0sIHRvdGFsU2hhcmRzOiAke3RvdGFsU2hhcmRzfSlgKVxuICAgICAgcmV0dXJuIE51bWJlcigoQmlnSW50KGd1aWxkSWQpID4+IDIybikgJSBCaWdJbnQodG90YWxTaGFyZHMpKVxuICAgIH0sXG5cbiAgICBhc3luYyBqb2luVm9pY2VDaGFubmVsKGd1aWxkSWQsIGNoYW5uZWxJZCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGpvaW5Wb2ljZUNoYW5uZWwgZ3VpbGRJZDogJHtndWlsZElkfSBjaGFubmVsSWQ6ICR7Y2hhbm5lbElkfWApXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgc2VsZl9tdXRlOiBvcHRpb25zPy5zZWxmTXV0ZSA/PyBmYWxzZSxcbiAgICAgICAgICBzZWxmX2RlYWY6IG9wdGlvbnM/LnNlbGZEZWFmID8/IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyBlZGl0Qm90U3RhdHVzKGRhdGEpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gZWRpdEJvdFN0YXR1cyBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEsIGpzb25TYWZlUmVwbGFjZXIpfWApXG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCldLm1hcChhc3luYyAoc2hhcmQpID0+IHtcbiAgICAgICAgICBnYXRld2F5LmVkaXRTaGFyZFN0YXR1cyhzaGFyZC5pZCwgZGF0YSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhzaGFyZElkLCBkYXRhKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGVkaXRTaGFyZFN0YXR1cyBzaGFyZElkOiAke3NoYXJkSWR9IC0+IGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcblxuICAgICAgYXdhaXQgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5QcmVzZW5jZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIHNpbmNlOiBudWxsLFxuICAgICAgICAgIGFmazogZmFsc2UsXG4gICAgICAgICAgYWN0aXZpdGllczogZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgIGlmIChnYXRld2F5LmludGVudHMgJiYgKCFvcHRpb25zPy5saW1pdCB8fCBvcHRpb25zLmxpbWl0ID4gMSkgJiYgIShnYXRld2F5LmludGVudHMgJiBHYXRld2F5SW50ZW50cy5HdWlsZE1lbWJlcnMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBtb3JlIHRoZW4gMSBtZW1iZXIgd2l0aG91dCB0aGUgR1VJTERfTUVNQkVSUyBpbnRlbnQnKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gKVxuXG4gICAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBzZXR0aW5nIHVzZXIgbGltaXQgYmFzZWQgb24gdXNlcklkcyBsZW5ndGg6ICR7b3B0aW9ucy51c2VySWRzLmxlbmd0aH1gKVxuXG4gICAgICAgIG9wdGlvbnMubGltaXQgPSBvcHRpb25zLnVzZXJJZHMubGVuZ3RoXG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9ucz8ubm9uY2UpIHtcbiAgICAgICAgbGV0IG5vbmNlID0gJydcblxuICAgICAgICB3aGlsZSAoIW5vbmNlIHx8IGdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnMucGVuZGluZy5oYXMobm9uY2UpKSB7XG4gICAgICAgICAgbm9uY2UgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zID8/PSB7IGxpbWl0OiAwIH1cbiAgICAgICAgb3B0aW9ucy5ub25jZSA9IG5vbmNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lbWJlcnMgPSAhZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkXG4gICAgICAgID8gW11cbiAgICAgICAgOiBuZXcgUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgICAgICBpZiAoIWdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnMuZW5hYmxlZCB8fCAhb3B0aW9ucz8ubm9uY2UpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkNhbid0IHJlcXVlc3QgdGhlIG1lbWJlcnMgd2l0aG91dCB0aGUgbm9uY2Ugb3Igd2l0aCB0aGUgZmVhdHVyZSBkaXNhYmxlZC5cIikpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzLnBlbmRpbmcuc2V0KG9wdGlvbnMubm9uY2UsIHtcbiAgICAgICAgICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlJlcXVlc3RHdWlsZE1lbWJlcnMsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIC8vIElmIGEgcXVlcnkgaXMgcHJvdmlkZWQgdXNlIGl0LCBPUiBpZiBhIGxpbWl0IGlzIE5PVCBwcm92aWRlZCB1c2UgXCJcIlxuICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnM/LmxpbWl0ID8/IDAsXG4gICAgICAgICAgcHJlc2VuY2VzOiBvcHRpb25zPy5wcmVzZW5jZXMgPz8gZmFsc2UsXG4gICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgIG5vbmNlOiBvcHRpb25zPy5ub25jZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBhd2FpdCBtZW1iZXJzXG4gICAgfSxcblxuICAgIGFzeW5jIGxlYXZlVm9pY2VDaGFubmVsKGd1aWxkSWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBsZWF2ZVZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IFNoYXJkICR7c2hhcmRJZH1gKVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlZvaWNlU3RhdGVVcGRhdGUsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYW5uZWxfaWQ6IG51bGwsXG4gICAgICAgICAgc2VsZl9tdXRlOiBmYWxzZSxcbiAgICAgICAgICBzZWxmX2RlYWY6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMoZ3VpbGRJZHMpIHtcbiAgICAgIC8qKlxuICAgICAgICogRGlzY29yZCB3aWxsIHNlbmQgdGhlIGV2ZW50cyBmb3IgdGhlIGd1aWxkcyB0aGF0IGFyZSBcInVuZGVyIHRoZSBzaGFyZFwiIHRoYXQgc2VuZHMgdGhlIG9wY29kZS5cbiAgICAgICAqIEZvciB0aGlzIHJlYXNvbiB3ZSBuZWVkIHRvIGdyb3VwIHRoZSBpZHMgd2l0aCB0aGUgc2hhcmQgdGhlIGNhbGN1bGF0ZVNoYXJkSWQgbWV0aG9kIGdpdmVzXG4gICAgICAgKi9cblxuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIEJpZ1N0cmluZ1tdPigpXG5cbiAgICAgIGZvciAoY29uc3QgZ3VpbGRJZCBvZiBndWlsZElkcykge1xuICAgICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgICAgY29uc3QgaWRzID0gbWFwLmdldChzaGFyZElkKSA/PyBbXVxuICAgICAgICBtYXAuc2V0KHNoYXJkSWQsIGlkcylcblxuICAgICAgICBpZHMucHVzaChndWlsZElkKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWy4uLm1hcC5lbnRyaWVzKCldLm1hcCgoW3NoYXJkSWQsIGlkc10pID0+XG4gICAgICAgICAgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMsXG4gICAgICAgICAgICBkOiB7XG4gICAgICAgICAgICAgIGd1aWxkX2lkczogaWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9LFxuICB9XG5cbiAgcmV0dXJuIGdhdGV3YXlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMge1xuICAvKipcbiAgICogSWQgb2YgdGhlIGZpcnN0IFNoYXJkIHdoaWNoIHNob3VsZCBnZXQgY29udHJvbGxlZCBieSB0aGlzIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGZpcnN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogSWQgb2YgdGhlIGxhc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgbGFzdFNoYXJkSWQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzcGF3bmluZyBuZXh0IHNoYXJkLiBPUFRJTUFMIElTIEFCT1ZFIDUxMDAuIFlPVSBET04nVCBXQU5UIFRPIEhJVCBUSEUgUkFURSBMSU1JVCEhIVxuICAgKiBAZGVmYXVsdCA1MzAwXG4gICAqL1xuICBzcGF3blNoYXJkRGVsYXk/OiBudW1iZXJcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2VuZCB0aGUgZGlzY29yZCBwYWNrZXRzIGluIHNuYWtlIGNhc2UgZm9ybS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByZWZlclNuYWtlQ2FzZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRvdGFsIGFtb3VudCBvZiBzaGFyZHMgeW91ciBib3QgdXNlcy4gVXNlZnVsIGZvciB6ZXJvLWRvd250aW1lIHVwZGF0ZXMgb3IgcmVzaGFyZGluZy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgdG90YWxTaGFyZHM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2Ygc2hhcmRzIHRvIGxvYWQgcGVyIHdvcmtlci5cbiAgICogQGRlZmF1bHQgMjVcbiAgICovXG4gIHNoYXJkc1Blcldvcmtlcj86IG51bWJlclxuICAvKipcbiAgICogVGhlIHRvdGFsIGFtb3VudCBvZiB3b3JrZXJzIHRvIHVzZSBmb3IgeW91ciBib3QuXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIHRvdGFsV29ya2Vycz86IG51bWJlclxuICAvKipcbiAgICogV2hldGhlciB0byBzcHJlYWQgc2hhcmRzIGFjcm9zcyB3b3JrZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBCeSBkZWZhdWx0LCBzaGFyZHMgYXJlIGFzc2lnbmVkIHRvIHdvcmtlcnMgaW4gY29udGlndW91cyBibG9ja3MgYmFzZWQgb24gc2hhcmRzUGVyV29ya2VyLiBJZiBhbnkgc2hhcmQgaXMgbGVmdCBvdmVyLCBpdCB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBsYXN0IHdvcmtlci5cbiAgICogVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBoYXZlIDMgd29ya2VycyBhbmQgNDAgc2hhcmRzIHdoaWxlIHNoYXJkc1BlcldvcmtlciBpcyAxMCwgdGhlIGZpcnN0IHdvcmtlciB3aWxsIGdldCBzaGFyZHMgMC05LCB0aGUgc2Vjb25kIHdvcmtlciB3aWxsIGdldCBzaGFyZHMgMTAtMTksIGFuZCBzbyBvbiwgdGhlIGxhc3Qgd29ya2VyIHdpbGwgZ2V0IHNoYXJkcyAyMC0zOS5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvIHRydWUsIHRoZSBzaGFyZHMgd2lsbCBiZSBhc3NpZ25lZCBpbiBhIHJvdW5kLXJvYmluIG1hbm5lciB0byBzcHJlYWQgbW9yZSBldmVubHkgYWNyb3NzIHdvcmtlcnMuXG4gICAqIEZvciBleGFtcGxlLCB3aXRoIDMgd29ya2VycyBhbmQgNDAgc2hhcmRzLCB0aGUgZmlyc3Qgc2hhcmQgd2lsbCBnbyB0byB3b3JrZXIgMCwgdGhlIHNlY29uZCBzaGFyZCB0byB3b3JrZXIgMSwgdGhlIHRoaXJkIHNoYXJkIHRvIHdvcmtlciAyLCB0aGUgZm91cnRoIHNoYXJkIHRvIHdvcmtlciAwLCBhbmQgc28gb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzcHJlYWRTaGFyZHNJblJvdW5kUm9iaW4/OiBib29sZWFuXG4gIC8qKiBJbXBvcnRhbnQgZGF0YSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBtYW5hZ2VyIHRvIGNvbm5lY3Qgc2hhcmRzIHRvIHRoZSBnYXRld2F5LiAqL1xuICBjb25uZWN0aW9uPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzcz86IGJvb2xlYW5cbiAgLyoqIFdoYXQgdHJhbnNwb3J0IGNvbXByZXNzaW9uIHNob3VsZCBiZSB1c2VkICovXG4gIHRyYW5zcG9ydENvbXByZXNzaW9uPzogVHJhbnNwb3J0Q29tcHJlc3Npb24gfCBudWxsXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM/OiBudW1iZXJcbiAgLyoqIElkZW50aWZ5IHByb3BlcnRpZXMgdG8gdXNlICovXG4gIHByb3BlcnRpZXM/OiB7XG4gICAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdGhlIHNoYXJkIHJ1bnMgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImRhcndpblwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCJcbiAgICAgKi9cbiAgICBvczogc3RyaW5nXG4gICAgLyoqIFRoZSBcImJyb3dzZXJcIiB3aGVyZSB0aGlzIHNoYXJkIGlzIHJ1bm5pbmcgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGJyb3dzZXI6IHN0cmluZ1xuICAgIC8qKiBUaGUgZGV2aWNlIG9uIHdoaWNoIHRoZSBzaGFyZCBpcyBydW5uaW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBkZXZpY2U6IHN0cmluZ1xuICB9XG4gIC8qKiBCb3QgdG9rZW4gd2hpY2ggaXMgdXNlZCB0byBjb25uZWN0IHRvIERpc2NvcmQgKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogVGhlIFVSTCBvZiB0aGUgZ2F0ZXdheSB3aGljaCBzaG91bGQgYmUgY29ubmVjdGVkIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIndzczovL2dhdGV3YXkuZGlzY29yZC5nZ1wiXG4gICAqL1xuICB1cmw/OiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uPzogbnVtYmVyXG4gIC8qKiBUaGUgZXZlbnRzIGhhbmRsZXJzICovXG4gIGV2ZW50cz86IFNoYXJkRXZlbnRzXG4gIC8qKiBUaGlzIG1hbmFnZXJzIGNhY2hlIHJlbGF0ZWQgc2V0dGluZ3MuICovXG4gIGNhY2hlPzoge1xuICAgIHJlcXVlc3RNZW1iZXJzPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBsb2dnZXIgdGhhdCB0aGUgZ2F0ZXdheSBtYW5hZ2VyIHdpbGwgdXNlLlxuICAgKiBAZGVmYXVsdCBsb2dnZXIgLy8gVGhlIGxvZ2dlciBleHBvcnRlZCBieSBgQGRpc2NvcmRlbm8vdXRpbHNgXG4gICAqL1xuICBsb2dnZXI/OiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIHByZXNlbmNlIGZvciB3aGVuIHRoZSBib3QgY29ubmVjdHMgdG8gdGhlIGdhdGV3YXlcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBlYWNoIHRpbWUgYSBTaGFyZCBpcyBnb2luZyB0byBpZGVudGlmeVxuICAgKi9cbiAgbWFrZVByZXNlbmNlPzogKCkgPT4gUHJvbWlzZTxEaXNjb3JkVXBkYXRlUHJlc2VuY2UgfCB1bmRlZmluZWQ+XG4gIC8qKiBPcHRpb25zIHJlbGF0ZWQgdG8gcmVzaGFyZGluZy4gKi9cbiAgcmVzaGFyZGluZz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhdXRvbWF0ZWQgcmVzaGFyZGluZyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFRoZSAlIG9mIGhvdyBmdWxsIGEgc2hhcmQgaXMgd2hlbiByZXNoYXJkaW5nIHNob3VsZCBiZSB0cmlnZ2VyZWQuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFdlIHVzZSBkaXNjb3JkIHJlY29tbWVuZGVkIHNoYXJkIHZhbHVlIHRvIGdldCBhbiAqKmFwcHJveGltYXRpb24qKiBvZiB0aGUgc2hhcmQgZnVsbCBwZXJjZW50YWdlIHRvIGNvbXBhcmUgd2l0aCB0aGlzIHZhbHVlIHNvIHRoZSBib3QgbWF5IG5vdCByZXNoYXJkIGF0IHRoZSBleGFjdCBwZXJjZW50YWdlIHByb3ZpZGVkIGJ1dCBtYXkgcmVzaGFyZCB3aGVuIGl0IGlzIGEgYml0IGhpZ2hlciB0aGFuIHRoZSBwcm92aWRlZCBwZXJjZW50YWdlLlxuICAgICAqIEZvciBhY2N1cmF0ZSBjYWxjdWxhdGlvbiwgeW91IG1heSBvdmVycmlkZSB0aGUgYGNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWRgIGZ1bmN0aW9uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCA4MCBhcyBpbiA4MCVcbiAgICAgKi9cbiAgICBzaGFyZHNGdWxsUGVyY2VudGFnZTogbnVtYmVyXG4gICAgLyoqXG4gICAgICogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcywgb2YgaG93IG9mdGVuIHRvIGNoZWNrIHdoZXRoZXIgcmVzaGFyZGluZyBpcyBuZWVkZWQgYW5kIHJlc2hhcmQgYXV0b21hdGljYWxseS4gU2V0IHRvIC0xIHRvIGRpc2FibGUgYXV0byByZXNoYXJkaW5nLlxuICAgICAqIEBkZWZhdWx0IDI4ODAwMDAwICg4IGhvdXJzKVxuICAgICAqL1xuICAgIGNoZWNrSW50ZXJ2YWw6IG51bWJlclxuICAgIC8qKiBIYW5kbGVyIHRvIGdldCBzaGFyZCBjb3VudCBhbmQgb3RoZXIgc2Vzc2lvbiBpbmZvLiAqL1xuICAgIGdldFNlc3Npb25JbmZvPzogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4+XG4gICAgLyoqIEhhbmRsZXIgdG8gZWRpdCB0aGUgc2hhcmQgaWQgb24gYW55IGNhY2hlZCBndWlsZHMuICovXG4gICAgdXBkYXRlR3VpbGRzU2hhcmRJZD86IChndWlsZElkczogc3RyaW5nW10sIHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICAvKiogVGhlIGJ1Y2tldCB0byBxdWV1ZSB0aGUgaWRlbnRpZmllcy4gKi9cbiAgICAgIGxlYWt5QnVja2V0OiBMZWFreUJ1Y2tldFxuICAgIH1cbiAgPlxuICAvKiogVGhlIHNoYXJkcyB0aGF0IGFyZSBjcmVhdGVkLiAqL1xuICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAvKiogVGhlIGxvZ2dlciBmb3IgdGhlIGdhdGV3YXkgbWFuYWdlci4gKi9cbiAgbG9nZ2VyOiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0byByZXNoYXJkaW5nLiAqL1xuICByZXNoYXJkaW5nOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnNbJ3Jlc2hhcmRpbmcnXSAmIHtcbiAgICAvKiogVGhlIGludGVydmFsIGlkIG9mIHRoZSBjaGVjayBpbnRlcnZhbC4gVGhpcyBpcyB1c2VkIHRvIGNsZWFyIHRoZSBpbnRlcnZhbCB3aGVuIHRoZSBtYW5hZ2VyIGlzIHNodXRkb3duLiAqL1xuICAgIGNoZWNrSW50ZXJ2YWxJZD86IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkXG4gICAgLyoqIEhvbGRzIHRoZSBzaGFyZHMgdGhhdCByZXNoYXJkaW5nIGhhcyBjcmVhdGVkLiBPbmNlIHJlc2hhcmRpbmcgaXMgZG9uZSwgdGhpcyByZXBsYWNlcyB0aGUgZ2F0ZXdheS5zaGFyZHMgKi9cbiAgICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAgIC8qKiBIYW5kbGVyIHRvIGNoZWNrIGlmIHJlc2hhcmRpbmcgaXMgbmVjZXNzYXJ5LiAqL1xuICAgIGNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWQ6ICgpID0+IFByb21pc2U8eyBuZWVkZWQ6IGJvb2xlYW47IGluZm8/OiBDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4gfT5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVyIHRvIGJlZ2luIHJlc2hhcmRpbmcuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIG9uY2UgdGhlIHJlc2hhcmRpbmcgaXMgZG9uZS5cbiAgICAgKiBTbyB3aGVuIGFsbCB0aGUgY2FsbHMgdG8ge0BsaW5rIHRlbGxXb3JrZXJUb1ByZXBhcmV9IGFuZCB7QGxpbmsgb25SZXNoYXJkaW5nU3dpdGNofSBhcmUgZG9uZS5cbiAgICAgKi9cbiAgICByZXNoYXJkOiAoaW5mbzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+ICYgeyBmaXJzdFNoYXJkSWQ/OiBudW1iZXI7IGxhc3RTaGFyZElkPzogbnVtYmVyIH0pID0+IFByb21pc2U8dm9pZD5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVyIHRvIGNvbW11bmljYXRlIHRvIGEgd29ya2VyIHRoYXQgaXQgbmVlZHMgdG8gc3Bhd24gYSBuZXcgc2hhcmQgYW5kIGlkZW50aWZ5IGl0IGZvciB0aGUgcmVzaGFyZGluZy5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhpcyBoYW5kbGVyIHdvcmtzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUge0BsaW5rIHRlbGxXb3JrZXJUb0lkZW50aWZ5fSBoYW5kbGVyLlxuICAgICAqIFNvIHlvdSBzaG91bGQgd2FpdCBmb3IgdGhlIHdvcmtlciB0byBoYXZlIGlkZW50aWZpZWQgdGhlIHNoYXJkIGJlZm9yZSByZXNvbHZpbmcgdGhlIHByb21pc2VcbiAgICAgKi9cbiAgICB0ZWxsV29ya2VyVG9QcmVwYXJlOiAod29ya2VySWQ6IG51bWJlciwgc2hhcmRJZDogbnVtYmVyLCBidWNrZXRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgLyoqXG4gICAgICogSGFuZGxlIGNhbGxlZCB3aGVuIGFsbCB0aGUgd29ya2VycyBoYXZlIGZpbmlzaGVkIHByZXBhcmluZyBmb3IgdGhlIHJlc2hhcmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGlzIHNob3VsZCBtYWtlIHRoZSBuZXcgcmVzaGFyZGVkIHNoYXJkcyBiZWNvbWUgdGhlIGFjdGl2ZSBvbmVzIGFuZCBzaHV0ZG93biB0aGUgb2xkIG9uZXNcbiAgICAgKi9cbiAgICBvblJlc2hhcmRpbmdTd2l0Y2g6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgfVxuICAvKiogRGV0ZXJtaW5lIG1heCBudW1iZXIgb2Ygc2hhcmRzIHRvIHVzZSBiYXNlZCB1cG9uIHRoZSBtYXggY29uY3VycmVuY3kuICovXG4gIGNhbGN1bGF0ZVRvdGFsU2hhcmRzOiAoKSA9PiBudW1iZXJcbiAgLyoqIERldGVybWluZSB0aGUgaWQgb2YgdGhlIHdvcmtlciB3aGljaCBpcyBoYW5kbGluZyBhIHNoYXJkLiAqL1xuICBjYWxjdWxhdGVXb3JrZXJJZDogKHNoYXJkSWQ6IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKiBQcmVwYXJlcyBhbGwgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc2hhcmRzLiAqL1xuICBwcmVwYXJlQnVja2V0czogKCkgPT4gdm9pZFxuICAvKiogU3RhcnQgaWRlbnRpZnlpbmcgYWxsIHRoZSBzaGFyZHMuICovXG4gIHNwYXduU2hhcmRzOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0ZG93biBhbGwgc2hhcmRzLiAqL1xuICBzaHV0ZG93bjogKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcsIGNsZWFyUmVzaGFyZGluZ0ludGVydmFsPzogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZW5kUGF5bG9hZDogKHNoYXJkSWQ6IG51bWJlciwgcGF5bG9hZDogU2hhcmRTb2NrZXRSZXF1ZXN0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBBbGxvd3MgdXNlcnMgdG8gaG9vayBpbiBhbmQgY2hhbmdlIHRvIGNvbW11bmljYXRlIHRvIGRpZmZlcmVudCB3b3JrZXJzIGFjcm9zcyBkaWZmZXJlbnQgc2VydmVycyBvciBhbnl0aGluZyB0aGV5IGxpa2UuXG4gICAqIEZvciBleGFtcGxlIHVzaW5nIHJlZGlzIHB1YnN1YiB0byB0YWxrIHRvIG90aGVyIHNlcnZlcnMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgc2hvdWxkIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gaGF2ZSBpZGVudGlmaWVkIHRoZSBzaGFyZCBiZWZvcmUgcmVzb2x2aW5nIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAqL1xuICB0ZWxsV29ya2VyVG9JZGVudGlmeTogKHdvcmtlcklkOiBudW1iZXIsIHNoYXJkSWQ6IG51bWJlciwgYnVja2V0SWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGVsbCB0aGUgbWFuYWdlciB0byBpZGVudGlmeSBhIFNoYXJkLiBJZiB0aGlzIFNoYXJkIGlzIG5vdCBhbHJlYWR5IG1hbmFnZWQgdGhpcyB3aWxsIGFsc28gYWRkIHRoZSBTaGFyZCB0byB0aGUgbWFuYWdlci4gKi9cbiAgaWRlbnRpZnk6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEtpbGwgYSBzaGFyZC4gQ2xvc2UgYSBzaGFyZHMgY29ubmVjdGlvbiB0byBEaXNjb3JkJ3MgZ2F0ZXdheSAoaWYgYW55KSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIG1hbmFnZXIuICovXG4gIGtpbGw6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3VyZSB0aGF0IHRoZSBidWNrZXQgaXMgYWxsb3dlZCB0byBtYWtlIHRoZSBuZXh0IGlkZW50aWZ5IHJlcXVlc3QuICovXG4gIHJlcXVlc3RJZGVudGlmeTogKHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIHNoYXJkcyBiYXNlZCBvbiB0aGUgZ3VpbGQgaWQgYW5kIHRvdGFsIHNoYXJkcy4gKi9cbiAgY2FsY3VsYXRlU2hhcmRJZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdG90YWxTaGFyZHM/OiBudW1iZXIpID0+IG51bWJlclxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIGJvdCB1c2VyIHRvIGEgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB5b3Ugd2FudCB0byBqb2luLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENPTk5FQ1RgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgam9pblZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBBdExlYXN0T25lPE9taXQ8VXBkYXRlVm9pY2VTdGF0ZSwgJ2d1aWxkSWQnIHwgJ2NoYW5uZWxJZCc+PikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCBzdGF0dXMgaW4gYWxsIHNoYXJkcyB0aGF0IHRoaXMgZ2F0ZXdheSBtYW5hZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgbm90aGluZ1xuICAgKi9cbiAgZWRpdEJvdFN0YXR1czogKGRhdGE6IERpc2NvcmRVcGRhdGVQcmVzZW5jZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCdzIHN0YXR1cyBvbiBvbmUgc2hhcmQuXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZElkIFRoZSBzaGFyZCBpZCB0byBlZGl0IHRoZSBzdGF0dXMgZm9yLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgbm90aGluZ1xuICAgKi9cbiAgZWRpdFNoYXJkU3RhdHVzOiAoc2hhcmRJZDogbnVtYmVyLCBkYXRhOiBEaXNjb3JkVXBkYXRlUHJlc2VuY2UpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IgYSBndWlsZCBvdmVyIHRoZSBnYXRld2F5LiBJZiBgZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkYCBpcyBub3Qgc2V0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGFycmF5IGFuZCB5b3UnbGwgaGF2ZSB0byBoYW5kbGUgdGhlIGBHVUlMRF9NRU1CRVJTX0NIVU5LYCBldmVudHMgeW91cnNlbGYuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbWVtYmVycy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgcmVxdWVzdGluZyB0aGUgZW50aXJlIG1lbWJlciBsaXN0OlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfTUVNQkVSU2AgaW50ZW50LlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIHByZXNlbmNlcyAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMucHJlc2VuY2VzIHwgcHJlc2VuY2VzfSBzZXQgdG8gYHRydWVgKTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEdVSUxEX1BSRVNFTkNFU2AgaW50ZW50LlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIGEgcHJlZml4ICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5xdWVyeSB8IHF1ZXJ5fSBub24tYHVuZGVmaW5lZGApOlxuICAgKiAtIFJldHVybnMgYSBtYXhpbXVtIG9mIDEwMCBtZW1iZXJzLlxuICAgKlxuICAgKiBJZiByZXF1ZXN0aW5nIGEgdXNlcnMgYnkgSUQgKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnVzZXJJZHMgfCB1c2VySWRzfSBub24tYHVuZGVmaW5lZGApOlxuICAgKiAtIFJldHVybnMgYSBtYXhpbXVtIG9mIDEwMCBtZW1iZXJzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXJzIENodW5rXyBnYXRld2F5IGV2ZW50IGZvciBldmVyeSAxMDAwIG1lbWJlcnMgZmV0Y2hlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjcmVxdWVzdC1ndWlsZC1tZW1iZXJzfVxuICAgKi9cbiAgcmVxdWVzdE1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBPbWl0PFJlcXVlc3RHdWlsZE1lbWJlcnMsICdndWlsZElkJz4pID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PlxuICAvKipcbiAgICogTGVhdmVzIHRoZSB2b2ljZSBjaGFubmVsIHRoZSBib3QgdXNlciBpcyBjdXJyZW50bHkgaW4uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX1ZvaWNlIFN0YXRlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgbGVhdmVWb2ljZUNoYW5uZWw6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFVzZWQgdG8gcmVxdWVzdCBzb3VuZGJvYXJkIHNvdW5kcyBmb3IgYSBsaXN0IG9mIGd1aWxkcy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyBtdWx0aXBsZSAoc2VlIHJlbWFya3MpIF9SZXF1ZXN0IFNvdW5kYm9hcmQgU291bmRzXyBnYXRld2F5IGNvbW1hbmQgb3ZlciB0aGUgZ2F0ZXdheSBiZWhpbmQgdGhlIHNjZW5lcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWRzIC0gVGhlIGd1aWxkcyB0byBnZXQgdGhlIHNvdW5kcyBmcm9tXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX1NvdW5kYm9hcmQgU291bmRzXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiDimqDvuI8gRGlzY29yZCB3aWxsIHNlbmQgdGhlIF9Tb3VuZGJvYXJkIFNvdW5kc18gZm9yIGVhY2ggb2YgdGhlIGd1aWxkIGlkc1xuICAgKiBob3dldmVyIHlvdSBtYXkgbm90IHJlY2VpdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGV2ZW50cyBhcyB0aGUgaWRzIHBhc3NlZCB0byBfUmVxdWVzdCBTb3VuZGJvYXJkIFNvdW5kc18gZm9yIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XG4gICAqIC0gVGhlIGJvdCBpcyBub3QgaW4gdGhlIHNlcnZlciBwcm92aWRlZFxuICAgKiAtIFRoZSBzaGFyZCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50IGZyb20gZG9lcyBub3QgcmVjZWl2ZSBldmVudHMgZm9yIHRoZSBzcGVjaWZpZWQgZ3VpbGRcbiAgICpcbiAgICogVG8gYXZvaWQgdGhpcyBEaXNjb3JkZW5vIHdpbGwgYXV0b21hdGljYWxseSB0cnkgdG8gZ3JvdXAgdGhlIGlkcyBiYXNlZCBvbiB3aGF0IHNoYXJkIHRoZXkgd2lsbCBuZWVkIHRvIGJlIHNlbnQsIGJ1dCB0aGlzIGludm9sdmVzIHNlbmRpbmcgbXVsdGlwbGUgbWVzc2FnZXMgaW4gbXVsdGlwbGUgc2hhcmRzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyNyZXF1ZXN0LXNvdW5kYm9hcmQtc291bmRzfVxuICAgKi9cbiAgcmVxdWVzdFNvdW5kYm9hcmRTb3VuZHM6IChndWlsZElkczogQmlnU3RyaW5nW10pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRoaXMgbWFuYWdlcnMgY2FjaGUgcmVsYXRlZCBzZXR0aW5ncy4gKi9cbiAgY2FjaGU6IHtcbiAgICByZXF1ZXN0TWVtYmVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhblxuICAgICAgLyoqIFRoZSBwZW5kaW5nIHJlcXVlc3RzLiAqL1xuICAgICAgcGVuZGluZzogQ29sbGVjdGlvbjxzdHJpbmcsIFJlcXVlc3RNZW1iZXJSZXF1ZXN0PlxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RNZW1iZXJSZXF1ZXN0IHtcbiAgLyoqIFRoZSB1bmlxdWUgbm9uY2UgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbm9uY2U6IHN0cmluZ1xuICAvKiogVGhlIHJlc29sdmVyIGhhbmRsZXIgdG8gcnVuIHdoZW4gYWxsIG1lbWJlcnMgYXJyaXZlLiAqL1xuICByZXNvbHZlOiAodmFsdWU6IENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcltdPiB8IFByb21pc2VMaWtlPENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcltdPj4pID0+IHZvaWRcbiAgLyoqIFRoZSBtZW1iZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IGFycml2ZWQgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbWVtYmVyczogRGlzY29yZE1lbWJlcldpdGhVc2VyW11cbn1cbiJdLCJuYW1lcyI6WyJyYW5kb21CeXRlcyIsIkdhdGV3YXlJbnRlbnRzIiwiR2F0ZXdheU9wY29kZXMiLCJDb2xsZWN0aW9uIiwianNvblNhZmVSZXBsYWNlciIsIkxlYWt5QnVja2V0IiwibG9nZ2VyIiwiU2hhcmQiLCJTaGFyZFNvY2tldENsb3NlQ29kZXMiLCJjcmVhdGVHYXRld2F5TWFuYWdlciIsIm9wdGlvbnMiLCJjb25uZWN0aW9uT3B0aW9ucyIsImNvbm5lY3Rpb24iLCJ1cmwiLCJzaGFyZHMiLCJzZXNzaW9uU3RhcnRMaW1pdCIsIm1heENvbmN1cnJlbmN5IiwicmVtYWluaW5nIiwidG90YWwiLCJyZXNldEFmdGVyIiwiZ2F0ZXdheSIsImV2ZW50cyIsImNvbXByZXNzIiwidHJhbnNwb3J0Q29tcHJlc3Npb24iLCJpbnRlbnRzIiwicHJvcGVydGllcyIsIm9zIiwicHJvY2VzcyIsInBsYXRmb3JtIiwiYnJvd3NlciIsImRldmljZSIsInRva2VuIiwidmVyc2lvbiIsInRvdGFsU2hhcmRzIiwibGFzdFNoYXJkSWQiLCJmaXJzdFNoYXJkSWQiLCJ0b3RhbFdvcmtlcnMiLCJzaGFyZHNQZXJXb3JrZXIiLCJzcGF3blNoYXJkRGVsYXkiLCJzcHJlYWRTaGFyZHNJblJvdW5kUm9iaW4iLCJwcmVmZXJTbmFrZUNhc2UiLCJNYXAiLCJidWNrZXRzIiwiY2FjaGUiLCJyZXF1ZXN0TWVtYmVycyIsImVuYWJsZWQiLCJwZW5kaW5nIiwibWFrZVByZXNlbmNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ1bmRlZmluZWQiLCJyZXNoYXJkaW5nIiwic2hhcmRzRnVsbFBlcmNlbnRhZ2UiLCJjaGVja0ludGVydmFsIiwiZ2V0U2Vzc2lvbkluZm8iLCJ1cGRhdGVHdWlsZHNTaGFyZElkIiwiY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCIsImRlYnVnIiwibmVlZGVkIiwiRXJyb3IiLCJzZXNzaW9uSW5mbyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbmZvIiwicGVyY2VudGFnZSIsInJlc2hhcmQiLCJjYWxjdWxhdGVUb3RhbFNoYXJkcyIsImNsZWFyIiwicHJlcGFyZUJ1Y2tldHMiLCJwcm9taXNlcyIsIkFycmF5IiwiZnJvbSIsImVudHJpZXMiLCJtYXAiLCJidWNrZXRJZCIsImJ1Y2tldCIsIndvcmtlciIsIndvcmtlcnMiLCJzaGFyZElkIiwicXVldWUiLCJ0ZWxsV29ya2VyVG9QcmVwYXJlIiwiaWQiLCJhbGwiLCJvblJlc2hhcmRpbmdTd2l0Y2giLCJ3b3JrZXJJZCIsInNoYXJkIiwibWVzc2FnZSIsIl9zaGFyZCIsInBheWxvYWQiLCJ0IiwiZCIsImd1aWxkcyIsImciLCJyZXF1ZXN0SWRlbnRpZnkiLCJmb3J3YXJkVG9Cb3QiLCJzZXQiLCJpZGVudGlmeSIsInZhbHVlcyIsIm9sZEhhbmRsZXIiLCJfIiwic2h1dGRvd24iLCJSZXNoYXJkZWQiLCJNYXRoIiwiY2VpbCIsImNhbGN1bGF0ZVdvcmtlcklkIiwibWluIiwiZmxvb3IiLCJpIiwibGVha3lCdWNrZXQiLCJtYXgiLCJyZWZpbGxBbW91bnQiLCJyZWZpbGxJbnRlcnZhbCIsImdldCIsImZpbmQiLCJ3IiwicHVzaCIsInNwYXduU2hhcmRzIiwidGVsbFdvcmtlclRvSWRlbnRpZnkiLCJjbGVhckludGVydmFsIiwiY2hlY2tJbnRlcnZhbElkIiwid2FybiIsInNldEludGVydmFsIiwicmVzaGFyZGluZ0luZm8iLCJjb2RlIiwicmVhc29uIiwiY2xlYXJSZXNoYXJkaW5nSW50ZXJ2YWwiLCJjbG9zZSIsInNlbmRQYXlsb2FkIiwic2VuZCIsImFjcXVpcmUiLCJraWxsIiwiZGVsZXRlIiwiY2FsY3VsYXRlU2hhcmRJZCIsImd1aWxkSWQiLCJOdW1iZXIiLCJCaWdJbnQiLCJqb2luVm9pY2VDaGFubmVsIiwiY2hhbm5lbElkIiwib3AiLCJWb2ljZVN0YXRlVXBkYXRlIiwiZ3VpbGRfaWQiLCJ0b1N0cmluZyIsImNoYW5uZWxfaWQiLCJzZWxmX211dGUiLCJzZWxmTXV0ZSIsInNlbGZfZGVhZiIsInNlbGZEZWFmIiwiZWRpdEJvdFN0YXR1cyIsImRhdGEiLCJlZGl0U2hhcmRTdGF0dXMiLCJQcmVzZW5jZVVwZGF0ZSIsInNpbmNlIiwiYWZrIiwiYWN0aXZpdGllcyIsInN0YXR1cyIsImxpbWl0IiwiR3VpbGRNZW1iZXJzIiwidXNlcklkcyIsImxlbmd0aCIsIm5vbmNlIiwiaGFzIiwibWVtYmVycyIsInJlamVjdCIsIlJlcXVlc3RHdWlsZE1lbWJlcnMiLCJxdWVyeSIsInByZXNlbmNlcyIsInVzZXJfaWRzIiwibGVhdmVWb2ljZUNoYW5uZWwiLCJyZXF1ZXN0U291bmRib2FyZFNvdW5kcyIsImd1aWxkSWRzIiwiaWRzIiwiUmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMiLCJndWlsZF9pZHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFdBQVcsUUFBUSxjQUFhO0FBQ3pDLFNBUUVDLGNBQWMsRUFDZEMsY0FBYyxRQUVULG9CQUFtQjtBQUMxQixTQUFTQyxVQUFVLEVBQUVDLGdCQUFnQixFQUFFQyxXQUFXLEVBQUVDLE1BQU0sUUFBUSxvQkFBbUI7QUFDckYsT0FBT0MsV0FBVyxhQUFZO0FBQzlCLFNBQTJCQyxxQkFBcUIsUUFBbUYsYUFBWTtBQUUvSSxPQUFPLFNBQVNDLHFCQUFxQkMsT0FBb0M7SUFDdkUsTUFBTUMsb0JBQW9CRCxRQUFRRSxVQUFVLElBQUk7UUFDOUNDLEtBQUs7UUFDTEMsUUFBUTtRQUNSQyxtQkFBbUI7WUFDakJDLGdCQUFnQjtZQUNoQkMsV0FBVztZQUNYQyxPQUFPO1lBQ1BDLFlBQVksT0FBTyxLQUFLLEtBQUs7UUFDL0I7SUFDRjtJQUVBLE1BQU1DLFVBQTBCO1FBQzlCQyxRQUFRWCxRQUFRVyxNQUFNLElBQUksQ0FBQztRQUMzQkMsVUFBVVosUUFBUVksUUFBUSxJQUFJO1FBQzlCQyxzQkFBc0JiLFFBQVFhLG9CQUFvQixJQUFJO1FBQ3REQyxTQUFTZCxRQUFRYyxPQUFPLElBQUk7UUFDNUJDLFlBQVk7WUFDVkMsSUFBSWhCLFFBQVFlLFVB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
|
package/dist/esm/types.js
CHANGED
|
@@ -40,4 +40,4 @@ export var ShardSocketCloseCodes = /*#__PURE__*/ function(ShardSocketCloseCodes)
|
|
|
40
40
|
return ShardSocketCloseCodes;
|
|
41
41
|
}({});
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhbWVsaXplLCBEaXNjb3JkR2F0ZXdheVBheWxvYWQsIEdhdGV3YXlPcGNvZGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuXG5leHBvcnQgZW51bSBTaGFyZFN0YXRlIHtcbiAgLyoqIFNoYXJkIGlzIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBhbmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIERpc2NvcmQuICovXG4gIENvbm5lY3RlZCA9IDAsXG4gIC8qKiBTaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBzaGFyZCBpcyBub3QgY3VycmVudGx5IHRyeWluZyB0byBpZGVudGlmeSBvciByZXN1bWUuICovXG4gIENvbm5lY3RpbmcgPSAxLFxuICAvKiogU2hhcmQgZ290IGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHN0YXJ0ZWQuICovXG4gIERpc2Nvbm5lY3RlZCA9IDIsXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBnYXRld2F5IGJ1dCBvbmx5IGhlYXJ0YmVhdGluZy4gQXQgdGhpcyBzdGF0ZSB0aGUgc2hhcmQgaGFzIG5vdCBiZWVuIGlkZW50aWZpZWQgd2l0aCBkaXNjb3JkLiAqL1xuICBVbmlkZW50aWZpZWQgPSAzLFxuICAvKiogU2hhcmQgaXMgdHJ5aW5nIHRvIGlkZW50aWZ5IHdpdGggdGhlIGdhdGV3YXkgdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24uICovXG4gIElkZW50aWZ5aW5nID0gNCxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byByZXN1bWUgYSBzZXNzaW9uIHdpdGggdGhlIGdhdGV3YXkuICovXG4gIFJlc3VtaW5nID0gNSxcbiAgLyoqIFNoYXJkIGdvdCBzaHV0IGRvd24gc3R1ZGllZCBvciBkdWUgdG8gYSBub3QgKHNlbGYpIGZpeGFibGUgZXJyb3IgYW5kIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgb24gaXRzIG93bi4gKi9cbiAgT2ZmbGluZSA9IDYsXG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zcG9ydENvbXByZXNzaW9uIHtcbiAgLyoqXG4gICAqIFpMaWItU3RyZWFtIFRyYW5zcG9ydCBDb21wcmVzc2lvbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVXNlcyBgbm9kZTp6bGliYCB0byBkZWNvbXByZXNzIHRoZSBwYXlsb2Fkc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3psaWJzdHJlYW1cbiAgICovXG4gIHpsaWIgPSAnemxpYi1zdHJlYW0nLFxuICAvKipcbiAgICogWlN0ZC1TdHJlYW0gVHJhbnNwb3J0IENvbXByZXNzaW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVc2VzIGBmenN0ZGAgdG8gZGVjb21wcmVzcyB0aGUgcGF5bG9hZHMuIGBmenN0ZGAgaXMgYW4gb3B0aW9uYWwgZGVwZW5kZW5jeSwgaXQgaXMgcmVxdWlyZWQgdG8gYmUgaW5zdGFsbGVkIGZvciB0aGlzIGNvbXByZXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3pzdGRzdHJlYW1cbiAgICovXG4gIHpzdGQgPSAnenN0ZC1zdHJlYW0nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkR2F0ZXdheUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGF0ZXZlciB0byBlbmFibGUgUGF5bG9hZCBjb21wcmVzc2lvbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBpcyBjb21wYXRpYmxlIHdpdGgge0BsaW5rIHRyYW5zcG9ydENvbXByZXNzaW9ufVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3BheWxvYWQtY29tcHJlc3Npb25cbiAgICovXG4gIGNvbXByZXNzOiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGF0IFRyYW5zcG9ydCBDb21wcmVzc2lvbiBzaG91bGQgYmUgdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICpcbiAgICogQHNlZSBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN0cmFuc3BvcnQtY29tcHJlc3Npb25cbiAgICovXG4gIHRyYW5zcG9ydENvbXByZXNzaW9uOiBUcmFuc3BvcnRDb21wcmVzc2lvbiB8IG51bGxcbiAgLyoqIFRoZSBjYWxjdWxhdGVkIGludGVudCB2YWx1ZSBvZiB0aGUgZXZlbnRzIHdoaWNoIHRoZSBzaGFyZCBzaG91bGQgcmVjZWl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaW50ZW50czogbnVtYmVyXG4gIC8qKiBJZGVudGlmeSBwcm9wZXJ0aWVzIHRvIHVzZSAqL1xuICBwcm9wZXJ0aWVzOiB7XG4gICAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdGhlIHNoYXJkIHJ1bnMgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImRhcndpblwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCJcbiAgICAgKi9cbiAgICBvczogc3RyaW5nXG4gICAgLyoqIFRoZSBcImJyb3dzZXJcIiB3aGVyZSB0aGlzIHNoYXJkIGlzIHJ1bm5pbmcgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGJyb3dzZXI6IHN0cmluZ1xuICAgIC8qKiBUaGUgZGV2aWNlIG9uIHdoaWNoIHRoZSBzaGFyZCBpcyBydW5uaW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBkZXZpY2U6IHN0cmluZ1xuICB9XG4gIC8qKiBCb3QgdG9rZW4gd2hpY2ggaXMgdXNlZCB0byBjb25uZWN0IHRvIERpc2NvcmQgKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogVGhlIFVSTCBvZiB0aGUgZ2F0ZXdheSB3aGljaCBzaG91bGQgYmUgY29ubmVjdGVkIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIndzczovL2dhdGV3YXkuZGlzY29yZC5nZ1wiXG4gICAqL1xuICB1cmw6IHN0cmluZ1xuICAvKiogVGhlIGdhdGV3YXkgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHZlcnNpb246IG51bWJlclxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBzaGFyZHMgdG8gY29ubmVjdCB0byBhY3Jvc3MgdGhlIGVudGlyZSBib3QuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHRvdGFsU2hhcmRzOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZEhlYXJ0IHtcbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBoZWFydGJlYXQgd2FzIGFja25vd2xlZGdlZCBieSBEaXNjb3JkIGluIHRpbWUuICovXG4gIGFja25vd2xlZGdlZDogYm9vbGVhblxuICAvKiogSW50ZXJ2YWwgYmV0d2VlbiBoZWFydGJlYXRzIHJlcXVlc3RlZCBieSBEaXNjb3JkLiAqL1xuICBpbnRlcnZhbDogbnVtYmVyXG4gIC8qKiBJZCBvZiB0aGUgaW50ZXJ2YWwsIHdoaWNoIGlzIHVzZWQgZm9yIHNlbmRpbmcgdGhlIGhlYXJ0YmVhdHMuICovXG4gIGludGVydmFsSWQ/OiBOb2RlSlMuVGltZW91dFxuICAvKiogVW5peCAoaW4gbWlsbGlzZWNvbmRzKSB0aW1lc3RhbXAgd2hlbiB0aGUgbGFzdCBoZWFydGJlYXQgQUNLIHdhcyByZWNlaXZlZCBmcm9tIERpc2NvcmQuICovXG4gIGxhc3RBY2s/OiBudW1iZXJcbiAgLyoqIFVuaXggdGltZXN0YW1wIChpbiBtaWxsaXNlY29uZHMpIHdoZW4gdGhlIGxhc3QgaGVhcnRiZWF0IHdhcyBzZW50LiAqL1xuICBsYXN0QmVhdD86IG51bWJlclxuICAvKiogUm91bmQgdHJpcCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIGZyb20gU2hhcmQgdG8gRGlzY29yZCBhbmQgYmFjay5cbiAgICogQ2FsY3VsYXRlZCB1c2luZyB0aGUgaGVhcnRiZWF0IHN5c3RlbS5cbiAgICogTm90ZTogdGhpcyB2YWx1ZSBpcyB1bmRlZmluZWQgdW50aWwgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0byBEaXNjb3JkIGhhcyBoYXBwZW5lZC5cbiAgICovXG4gIHJ0dD86IG51bWJlclxuICAvKiogSWQgb2YgdGhlIHRpbWVvdXQgd2hpY2ggaXMgdXNlZCBmb3Igc2VuZGluZyB0aGUgZmlyc3QgaGVhcnRiZWF0IHRvIERpc2NvcmQgc2luY2UgaXQncyBcInNwZWNpYWxcIi4gKi9cbiAgdGltZW91dElkPzogTm9kZUpTLlRpbWVvdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZEV2ZW50cyB7XG4gIC8qKiBBIGhlYXJ0YmVhdCBoYXMgYmVlbiBzZW5kLiAqL1xuICBoZWFydGJlYXQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBBIGhlYXJ0YmVhdCBBQ0sgd2FzIHJlY2VpdmVkLiAqL1xuICBoZWFydGJlYXRBY2s/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBTaGFyZCBoYXMgcmVjZWl2ZWQgYSBIZWxsbyBwYXlsb2FkLiAqL1xuICBoZWxsbz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBTaGFyZHMgc2Vzc2lvbiBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gKi9cbiAgaW52YWxpZFNlc3Npb24/OiAoc2hhcmQ6IFNoYXJkLCByZXN1bWFibGU6IGJvb2xlYW4pID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3RhcnRlZCBhIHJlc3VtZSBhY3Rpb24uICovXG4gIHJlc3VtaW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdWNjZXNzZnVsbHkgcmVzdW1lZCBhbiBvbGQgc2Vzc2lvbi4gKi9cbiAgcmVzdW1lZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIERpc2NvcmQgaGFzIHJlcXVlc3RlZCB0aGUgU2hhcmQgdG8gcmVjb25uZWN0LiAqL1xuICByZXF1ZXN0ZWRSZWNvbm5lY3Q/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgc3RhcnRlZCB0byBjb25uZWN0IHRvIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBjb25uZWN0aW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGlzIGNvbm5lY3RlZCB3aXRoIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBjb25uZWN0ZWQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGRpc2Nvbm5lY3RlZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3RhcnRlZCB0byBpZGVudGlmeSBpdHNlbGYgdG8gRGlzY29yZC4gKi9cbiAgaWRlbnRpZnlpbmc/
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhbWVsaXplLCBEaXNjb3JkR2F0ZXdheVBheWxvYWQsIEdhdGV3YXlPcGNvZGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuXG5leHBvcnQgZW51bSBTaGFyZFN0YXRlIHtcbiAgLyoqIFNoYXJkIGlzIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBhbmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIERpc2NvcmQuICovXG4gIENvbm5lY3RlZCA9IDAsXG4gIC8qKiBTaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBzaGFyZCBpcyBub3QgY3VycmVudGx5IHRyeWluZyB0byBpZGVudGlmeSBvciByZXN1bWUuICovXG4gIENvbm5lY3RpbmcgPSAxLFxuICAvKiogU2hhcmQgZ290IGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHN0YXJ0ZWQuICovXG4gIERpc2Nvbm5lY3RlZCA9IDIsXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBnYXRld2F5IGJ1dCBvbmx5IGhlYXJ0YmVhdGluZy4gQXQgdGhpcyBzdGF0ZSB0aGUgc2hhcmQgaGFzIG5vdCBiZWVuIGlkZW50aWZpZWQgd2l0aCBkaXNjb3JkLiAqL1xuICBVbmlkZW50aWZpZWQgPSAzLFxuICAvKiogU2hhcmQgaXMgdHJ5aW5nIHRvIGlkZW50aWZ5IHdpdGggdGhlIGdhdGV3YXkgdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24uICovXG4gIElkZW50aWZ5aW5nID0gNCxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byByZXN1bWUgYSBzZXNzaW9uIHdpdGggdGhlIGdhdGV3YXkuICovXG4gIFJlc3VtaW5nID0gNSxcbiAgLyoqIFNoYXJkIGdvdCBzaHV0IGRvd24gc3R1ZGllZCBvciBkdWUgdG8gYSBub3QgKHNlbGYpIGZpeGFibGUgZXJyb3IgYW5kIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgb24gaXRzIG93bi4gKi9cbiAgT2ZmbGluZSA9IDYsXG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zcG9ydENvbXByZXNzaW9uIHtcbiAgLyoqXG4gICAqIFpMaWItU3RyZWFtIFRyYW5zcG9ydCBDb21wcmVzc2lvbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVXNlcyBgbm9kZTp6bGliYCB0byBkZWNvbXByZXNzIHRoZSBwYXlsb2Fkc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3psaWJzdHJlYW1cbiAgICovXG4gIHpsaWIgPSAnemxpYi1zdHJlYW0nLFxuICAvKipcbiAgICogWlN0ZC1TdHJlYW0gVHJhbnNwb3J0IENvbXByZXNzaW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVc2VzIGBmenN0ZGAgdG8gZGVjb21wcmVzcyB0aGUgcGF5bG9hZHMuIGBmenN0ZGAgaXMgYW4gb3B0aW9uYWwgZGVwZW5kZW5jeSwgaXQgaXMgcmVxdWlyZWQgdG8gYmUgaW5zdGFsbGVkIGZvciB0aGlzIGNvbXByZXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3pzdGRzdHJlYW1cbiAgICovXG4gIHpzdGQgPSAnenN0ZC1zdHJlYW0nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkR2F0ZXdheUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGF0ZXZlciB0byBlbmFibGUgUGF5bG9hZCBjb21wcmVzc2lvbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBpcyBjb21wYXRpYmxlIHdpdGgge0BsaW5rIHRyYW5zcG9ydENvbXByZXNzaW9ufVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3BheWxvYWQtY29tcHJlc3Npb25cbiAgICovXG4gIGNvbXByZXNzOiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGF0IFRyYW5zcG9ydCBDb21wcmVzc2lvbiBzaG91bGQgYmUgdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICpcbiAgICogQHNlZSBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN0cmFuc3BvcnQtY29tcHJlc3Npb25cbiAgICovXG4gIHRyYW5zcG9ydENvbXByZXNzaW9uOiBUcmFuc3BvcnRDb21wcmVzc2lvbiB8IG51bGxcbiAgLyoqIFRoZSBjYWxjdWxhdGVkIGludGVudCB2YWx1ZSBvZiB0aGUgZXZlbnRzIHdoaWNoIHRoZSBzaGFyZCBzaG91bGQgcmVjZWl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaW50ZW50czogbnVtYmVyXG4gIC8qKiBJZGVudGlmeSBwcm9wZXJ0aWVzIHRvIHVzZSAqL1xuICBwcm9wZXJ0aWVzOiB7XG4gICAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdGhlIHNoYXJkIHJ1bnMgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImRhcndpblwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCJcbiAgICAgKi9cbiAgICBvczogc3RyaW5nXG4gICAgLyoqIFRoZSBcImJyb3dzZXJcIiB3aGVyZSB0aGlzIHNoYXJkIGlzIHJ1bm5pbmcgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGJyb3dzZXI6IHN0cmluZ1xuICAgIC8qKiBUaGUgZGV2aWNlIG9uIHdoaWNoIHRoZSBzaGFyZCBpcyBydW5uaW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBkZXZpY2U6IHN0cmluZ1xuICB9XG4gIC8qKiBCb3QgdG9rZW4gd2hpY2ggaXMgdXNlZCB0byBjb25uZWN0IHRvIERpc2NvcmQgKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogVGhlIFVSTCBvZiB0aGUgZ2F0ZXdheSB3aGljaCBzaG91bGQgYmUgY29ubmVjdGVkIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIndzczovL2dhdGV3YXkuZGlzY29yZC5nZ1wiXG4gICAqL1xuICB1cmw6IHN0cmluZ1xuICAvKiogVGhlIGdhdGV3YXkgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHZlcnNpb246IG51bWJlclxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBzaGFyZHMgdG8gY29ubmVjdCB0byBhY3Jvc3MgdGhlIGVudGlyZSBib3QuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHRvdGFsU2hhcmRzOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZEhlYXJ0IHtcbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBoZWFydGJlYXQgd2FzIGFja25vd2xlZGdlZCBieSBEaXNjb3JkIGluIHRpbWUuICovXG4gIGFja25vd2xlZGdlZDogYm9vbGVhblxuICAvKiogSW50ZXJ2YWwgYmV0d2VlbiBoZWFydGJlYXRzIHJlcXVlc3RlZCBieSBEaXNjb3JkLiAqL1xuICBpbnRlcnZhbDogbnVtYmVyXG4gIC8qKiBJZCBvZiB0aGUgaW50ZXJ2YWwsIHdoaWNoIGlzIHVzZWQgZm9yIHNlbmRpbmcgdGhlIGhlYXJ0YmVhdHMuICovXG4gIGludGVydmFsSWQ/OiBOb2RlSlMuVGltZW91dFxuICAvKiogVW5peCAoaW4gbWlsbGlzZWNvbmRzKSB0aW1lc3RhbXAgd2hlbiB0aGUgbGFzdCBoZWFydGJlYXQgQUNLIHdhcyByZWNlaXZlZCBmcm9tIERpc2NvcmQuICovXG4gIGxhc3RBY2s/OiBudW1iZXJcbiAgLyoqIFVuaXggdGltZXN0YW1wIChpbiBtaWxsaXNlY29uZHMpIHdoZW4gdGhlIGxhc3QgaGVhcnRiZWF0IHdhcyBzZW50LiAqL1xuICBsYXN0QmVhdD86IG51bWJlclxuICAvKiogUm91bmQgdHJpcCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIGZyb20gU2hhcmQgdG8gRGlzY29yZCBhbmQgYmFjay5cbiAgICogQ2FsY3VsYXRlZCB1c2luZyB0aGUgaGVhcnRiZWF0IHN5c3RlbS5cbiAgICogTm90ZTogdGhpcyB2YWx1ZSBpcyB1bmRlZmluZWQgdW50aWwgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0byBEaXNjb3JkIGhhcyBoYXBwZW5lZC5cbiAgICovXG4gIHJ0dD86IG51bWJlclxuICAvKiogSWQgb2YgdGhlIHRpbWVvdXQgd2hpY2ggaXMgdXNlZCBmb3Igc2VuZGluZyB0aGUgZmlyc3QgaGVhcnRiZWF0IHRvIERpc2NvcmQgc2luY2UgaXQncyBcInNwZWNpYWxcIi4gKi9cbiAgdGltZW91dElkPzogTm9kZUpTLlRpbWVvdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZEV2ZW50cyB7XG4gIC8qKiBBIGhlYXJ0YmVhdCBoYXMgYmVlbiBzZW5kLiAqL1xuICBoZWFydGJlYXQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBBIGhlYXJ0YmVhdCBBQ0sgd2FzIHJlY2VpdmVkLiAqL1xuICBoZWFydGJlYXRBY2s/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBTaGFyZCBoYXMgcmVjZWl2ZWQgYSBIZWxsbyBwYXlsb2FkLiAqL1xuICBoZWxsbz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBTaGFyZHMgc2Vzc2lvbiBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gKi9cbiAgaW52YWxpZFNlc3Npb24/OiAoc2hhcmQ6IFNoYXJkLCByZXN1bWFibGU6IGJvb2xlYW4pID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3RhcnRlZCBhIHJlc3VtZSBhY3Rpb24uICovXG4gIHJlc3VtaW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdWNjZXNzZnVsbHkgcmVzdW1lZCBhbiBvbGQgc2Vzc2lvbi4gKi9cbiAgcmVzdW1lZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIERpc2NvcmQgaGFzIHJlcXVlc3RlZCB0aGUgU2hhcmQgdG8gcmVjb25uZWN0LiAqL1xuICByZXF1ZXN0ZWRSZWNvbm5lY3Q/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgc3RhcnRlZCB0byBjb25uZWN0IHRvIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBjb25uZWN0aW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGlzIGNvbm5lY3RlZCB3aXRoIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBjb25uZWN0ZWQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGRpc2Nvbm5lY3RlZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3RhcnRlZCB0byBpZGVudGlmeSBpdHNlbGYgdG8gRGlzY29yZC4gKi9cbiAgaWRlbnRpZnlpbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGlkZW50aWZpZWQgaXRzZWxmIHdpdGggRGlzY29yZC4gKi9cbiAgcmVhZHk/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIERpc2NvcmQuICovXG4gIG1lc3NhZ2U/OiAoc2hhcmQ6IFNoYXJkLCBwYXlsb2FkOiBDYW1lbGl6ZTxEaXNjb3JkR2F0ZXdheVBheWxvYWQ+KSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBlbnVtIFNoYXJkU29ja2V0Q2xvc2VDb2RlcyB7XG4gIC8qKiBBIHJlZ3VsYXIgU2hhcmQgc2h1dGRvd24uICovXG4gIFNodXRkb3duID0gMzAwMCxcbiAgLyoqIEEgcmVzdW1lIGhhcyBiZWVuIHJlcXVlc3RlZCBhbmQgdGhlcmVmb3JlIHRoZSBvbGQgY29ubmVjdGlvbiBuZWVkcyB0byBiZSBjbG9zZWQuICovXG4gIFJlc3VtZUNsb3NpbmdPbGRDb25uZWN0aW9uID0gMzAyNCxcbiAgLyoqXG4gICAqIERpZCBub3QgcmVjZWl2ZSBhIGhlYXJ0YmVhdCBBQ0sgaW4gdGltZS5cbiAgICogQ2xvc2luZyB0aGUgc2hhcmQgYW5kIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24uXG4gICAqL1xuICBab21iaWVkQ29ubmVjdGlvbiA9IDMwMTAsXG4gIC8qKiBEaXNjb3JkZW5vJ3MgZ2F0ZXdheSB0ZXN0cyBoYWUgYmVlbiBmaW5pc2hlZCwgdGhlcmVmb3JlIHRoZSBTaGFyZCBjYW4gYmUgdHVybmVkIG9mZi4gKi9cbiAgVGVzdGluZ0ZpbmlzaGVkID0gMzA2NCxcbiAgLyoqIFNwZWNpYWwgY2xvc2UgY29kZSByZXNlcnZlZCBmb3IgRGlzY29yZGVubydzIHplcm8tZG93bnRpbWUgcmVzaGFyZGluZyBzeXN0ZW0uICovXG4gIFJlc2hhcmRlZCA9IDMwNjUsXG4gIC8qKiBTaGFyZCBpcyByZS1pZGVudGlmeWluZyB0aGVyZWZvcmUgdGhlIG9sZCBjb25uZWN0aW9uIG5lZWRzIHRvIGJlIGNsb3NlZC4gKi9cbiAgUmVJZGVudGlmeWluZyA9IDMwNjYsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRTb2NrZXRSZXF1ZXN0IHtcbiAgLyoqIFRoZSBPUC1Db2RlIGZvciB0aGUgcGF5bG9hZCB0byBzZW5kLiAqL1xuICBvcDogR2F0ZXdheU9wY29kZXNcbiAgLyoqIFBheWxvYWQgZGF0YS4gKi9cbiAgZDogdW5rbm93blxufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVZvaWNlU3RhdGUge1xuICAvKiogaWQgb2YgdGhlIGd1aWxkICovXG4gIGd1aWxkSWQ6IHN0cmluZ1xuICAvKiogaWQgb2YgdGhlIHZvaWNlIGNoYW5uZWwgY2xpZW50IHdhbnRzIHRvIGpvaW4gKG51bGwgaWYgZGlzY29ubmVjdGluZykgKi9cbiAgY2hhbm5lbElkOiBzdHJpbmcgfCBudWxsXG4gIC8qKiBJcyB0aGUgY2xpZW50IG11dGVkICovXG4gIHNlbGZNdXRlOiBib29sZWFuXG4gIC8qKiBJcyB0aGUgY2xpZW50IGRlYWZlbmVkICovXG4gIHNlbGZEZWFmOiBib29sZWFuXG59XG4iXSwibmFtZXMiOlsiU2hhcmRTdGF0ZSIsIlRyYW5zcG9ydENvbXByZXNzaW9uIiwiU2hhcmRTb2NrZXRDbG9zZUNvZGVzIl0sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLElBQUEsQUFBS0Esb0NBQUFBO0lBQ1YsK0VBQStFO0lBRS9FLDJIQUEySDtJQUUzSCx1RUFBdUU7SUFFdkUsK0hBQStIO0lBRS9ILDBFQUEwRTtJQUUxRSwwREFBMEQ7SUFFMUQsa0hBQWtIO1dBYnhHQTtNQWVYO0FBRUQsT0FBTyxJQUFBLEFBQUtDLDhDQUFBQTtJQUNWOzs7Ozs7O0dBT0M7SUFFRDs7Ozs7OztHQU9DO1dBakJTQTtNQW1CWDtBQWlIRCxPQUFPLElBQUEsQUFBS0MsK0NBQUFBO0lBQ1YsOEJBQThCO0lBRTlCLHFGQUFxRjtJQUVyRjs7O0dBR0M7SUFFRCx5RkFBeUY7SUFFekYsa0ZBQWtGO0lBRWxGLDZFQUE2RTtXQWRuRUE7TUFnQlgifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../../src/Shard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../../src/Shard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE1B,KAAK,qBAAqB,EAG1B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -140,7 +140,7 @@ export interface ShardEvents {
|
|
|
140
140
|
/** The shard has started to identify itself to Discord. */
|
|
141
141
|
identifying?: (shard: Shard) => unknown;
|
|
142
142
|
/** The shard has successfully been identified itself with Discord. */
|
|
143
|
-
|
|
143
|
+
ready?: (shard: Shard) => unknown;
|
|
144
144
|
/** The shard has received a message from Discord. */
|
|
145
145
|
message?: (shard: Shard, payload: Camelize<DiscordGatewayPayload>) => unknown;
|
|
146
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,oBAAY,UAAU;IACpB,iFAAiF;IACjF,SAAS,IAAI;IACb,6HAA6H;IAC7H,UAAU,IAAI;IACd,yEAAyE;IACzE,YAAY,IAAI;IAChB,iIAAiI;IACjI,YAAY,IAAI;IAChB,4EAA4E;IAC5E,WAAW,IAAI;IACf,4DAA4D;IAC5D,QAAQ,IAAI;IACZ,oHAAoH;IACpH,OAAO,IAAI;CACZ;AAED,oBAAY,oBAAoB;IAC9B;;;;;;;OAOG;IACH,IAAI,gBAAgB;IACpB;;;;;;;OAOG;IACH,IAAI,gBAAgB;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;OASG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;;;OAMG;IACH,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACjD;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,EAAE;QACV;;;WAGG;QACH,EAAE,EAAE,MAAM,CAAA;QACV;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAA;QACf;;;WAGG;QACH,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,YAAY,EAAE,OAAO,CAAA;IACrB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IAC3B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACrC,oCAAoC;IACpC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACxC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACjC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAA;IAC9D,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACpC,yDAAyD;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACnC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IAC9C,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACtC,qDAAqD;IACrD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACrC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACxC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACvC,sEAAsE;IACtE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@discordeno/gateway",
|
|
3
|
-
"version": "21.0.1-next.
|
|
3
|
+
"version": "21.0.1-next.d203fc7",
|
|
4
4
|
"main": "./dist/esm/index.js",
|
|
5
5
|
"types": "./dist/types/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -34,15 +34,15 @@
|
|
|
34
34
|
"test:test-type": "tsc --project tests/tsconfig.json"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@discordeno/types": "21.0.1-next.
|
|
38
|
-
"@discordeno/utils": "21.0.1-next.
|
|
37
|
+
"@discordeno/types": "21.0.1-next.d203fc7",
|
|
38
|
+
"@discordeno/utils": "21.0.1-next.d203fc7",
|
|
39
39
|
"ws": "^8.18.1"
|
|
40
40
|
},
|
|
41
41
|
"optionalDependencies": {
|
|
42
42
|
"fzstd": "^0.1.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@biomejs/biome": "
|
|
45
|
+
"@biomejs/biome": "2.1.3",
|
|
46
46
|
"@swc/cli": "^0.5.2",
|
|
47
47
|
"@swc/core": "^1.13.3",
|
|
48
48
|
"@types/chai": "^5.2.2",
|