parse-server 9.10.1-alpha.2 → 9.10.1-alpha.4

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.
@@ -9,4 +9,4 @@ var _PubSubAdapter = require("../Adapters/PubSub/PubSubAdapter");
9
9
  var _StorageAdapter = require("../Adapters/Storage/StorageAdapter");
10
10
  var _WSSAdapter = require("../Adapters/WebSocketServer/WSSAdapter");
11
11
  var _CheckGroup = require("../Security/CheckGroup");
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5hbHl0aWNzQWRhcHRlciIsInJlcXVpcmUiLCJfQ2FjaGVBZGFwdGVyIiwiX01haWxBZGFwdGVyIiwiX0ZpbGVzQWRhcHRlciIsIl9Mb2dnZXJBZGFwdGVyIiwiX1B1YlN1YkFkYXB0ZXIiLCJfU3RvcmFnZUFkYXB0ZXIiLCJfV1NTQWRhcHRlciIsIl9DaGVja0dyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL09wdGlvbnMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9DYWNoZUFkYXB0ZXInO1xuaW1wb3J0IHsgTWFpbEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9FbWFpbC9NYWlsQWRhcHRlcic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9Mb2dnZXJBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBTdG9yYWdlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IHsgV1NTQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1dlYlNvY2tldFNlcnZlci9XU1NBZGFwdGVyJztcbmltcG9ydCB7IENoZWNrR3JvdXAgfSBmcm9tICcuLi9TZWN1cml0eS9DaGVja0dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFPcHRpb25zIHtcbiAgLyogUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICA6REVGQVVMVDogW10gKi9cbiAgZGVmaW5pdGlvbnM6IGFueTtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgc3RyaWN0OiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkZWxldGVFeHRyYUZpZWxkczogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGxvY2tTY2hlbWFzOiA/Ym9vbGVhbjtcbiAgLyogKE9wdGlvbmFsKSBLZWVwIGluZGV4ZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UgYnV0IG5vdCBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UgYXJlIGFkZGluZyBpbmRleGVzIG1hbnVhbGx5LCBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgcmVtb3ZlZCB3aGVuIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAga2VlcFVua25vd25JbmRleGVzOiA/Ym9vbGVhbjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGJlZm9yZSBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLiAqL1xuICBiZWZvcmVNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGFmdGVyIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGFmdGVyTWlncmF0aW9uOiA/KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgQWRhcHRlcjxUPiA9IHN0cmluZyB8IGFueSB8IFQ7XG50eXBlIE51bWJlck9yQm9vbGVhbiA9IG51bWJlciB8IGJvb2xlYW47XG50eXBlIE51bWJlck9yU3RyaW5nID0gbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBQcm90ZWN0ZWRGaWVsZHMgPSBhbnk7XG50eXBlIFN0cmluZ09yU3RyaW5nQXJyYXkgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xudHlwZSBFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPSB7XG4gIG9yaWdpbmFsPzogYW55LFxuICBvYmplY3Q6IGFueSxcbiAgbWFzdGVyPzogYm9vbGVhbixcbiAgaXA/OiBzdHJpbmcsXG4gIGluc3RhbGxhdGlvbklkPzogc3RyaW5nLFxuICBjcmVhdGVkV2l0aD86IHtcbiAgICBhY3Rpb246ICdsb2dpbicgfCAnc2lnbnVwJyxcbiAgICBhdXRoUHJvdmlkZXI6IHN0cmluZyxcbiAgfSxcbiAgcmVzZW5kUmVxdWVzdD86IGJvb2xlYW4sXG59O1xudHlwZSBTZW5kRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0ge1xuICB1c2VyOiBhbnksXG4gIG1hc3Rlcj86IGJvb2xlYW4sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6ICgoKSA9PiB2b2lkKSB8IHN0cmluZztcbiAgLyogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgYG1hc3RlcktleWAgaXMgYmVpbmcgdXNlZCBiZWZvcmUgaXQgaXMgcmVxdWVzdGVkIGFnYWluIGlmIGBtYXN0ZXJLZXlgIGlzIHNldCB0byBhIGZ1bmN0aW9uLiBJZiBgbWFzdGVyS2V5YCBpcyBub3Qgc2V0IHRvIGEgZnVuY3Rpb24sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuIERlZmF1bHQgaXMgYDBgLCB3aGljaCBtZWFucyB0aGUgbWFzdGVyIGtleSBpcyByZXF1ZXN0ZWQgYnkgaW52b2tpbmcgdGhlICBgbWFzdGVyS2V5YCBmdW5jdGlvbiBldmVyeSB0aW1lIHRoZSBtYXN0ZXIga2V5IGlzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIuICovXG4gIG1hc3RlcktleVR0bDogP251bWJlcjtcbiAgLyogKE9wdGlvbmFsKSBUaGUgbWFpbnRlbmFuY2Uga2V5IGlzIHVzZWQgZm9yIG1vZGlmeWluZyBpbnRlcm5hbCBhbmQgcmVhZC1vbmx5IGZpZWxkcyBvZiBQYXJzZSBTZXJ2ZXIuPGJyPjxicj7imqDvuI8gVGhpcyBrZXkgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBhIHJlZ3VsYXIgb3BlcmF0aW9uIG9mIFBhcnNlIFNlcnZlci4gVGhpcyBrZXkgaXMgaW50ZW5kZWQgdG8gY29uZHVjdCBvdXQtb2YtYmFuZCBjaGFuZ2VzIHN1Y2ggYXMgb25lLXRpbWUgbWlncmF0aW9ucyBvciBkYXRhIGNvcnJlY3Rpb24gdGFza3MuIEludGVybmFsIGZpZWxkcyBhcmUgbm90IG9mZmljaWFsbHkgZG9jdW1lbnRlZCBhbmQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IHB1YmxpY2F0aW9uIGluIHJlbGVhc2UgY2hhbmdlbG9ncy4gV2Ugc3Ryb25nbHkgYWR2aWNlIG5vdCB0byByZWx5IG9uIGludGVybmFsIGZpZWxkcyBhcyBwYXJ0IG9mIHlvdXIgcmVndWxhciBvcGVyYXRpb24gYW5kIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IHBsYW5uZWQgY2hhbmdlcyAqZGlyZWN0bHkgaW4gdGhlIHNvdXJjZSBjb2RlKiBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBvZiBQYXJzZSBTZXJ2ZXIuICovXG4gIG1haW50ZW5hbmNlS2V5OiBzdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gUGFyc2UgU2VydmVyLjxicj48YnI+4pqg77iPIENlcnRhaW4gc2VydmVyIGZlYXR1cmVzIG9yIGFkYXB0ZXJzIG1heSByZXF1aXJlIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC4gSWYgYSBmZWF0dXJlIHJlcXVpcmVzIHRoaXMsIGl0IGlzIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSW4gdGhhdCBjYXNlIGVuc3VyZSB0aGF0IHRoZSBVUkwgaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfVVJMICovXG4gIHNlcnZlclVSTDogc3RyaW5nO1xuICAvKiBQYXJzZSBTZXJ2ZXIgbWFrZXMgYSBIVFRQIHJlcXVlc3QgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAgYXQgdGhlIGVuZCBvZiBpdHMgbGF1bmNoIHJvdXRpbmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGxhdW5jaCBzdWNjZWVkZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgLCB0aGUgdmVyaWZpY2F0aW9uIHdpbGwgYmUgc2tpcHBlZC4gVGhpcyBjYW4gYmUgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aGVyZSB0aGUgc2VydmVyIFVSTCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLCBzdWNoIGFzIHdoZW4gcnVubmluZyBiZWhpbmQgYSBmaXJld2FsbCBvciBpbiBjZXJ0YWluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLjxicj48YnI+4pqg77iPIFNlcnZlciBVUkwgdmVyaWZpY2F0aW9uIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICB2ZXJpZnlTZXJ2ZXJVcmw6ID9ib29sZWFuO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1hc3RlciBrZXkgcGVybWlzc2lvbnMgdG8gYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBvciByYW5nZXMuPGJyPjxicj5UaGlzIG9wdGlvbiBhY2NlcHRzIGEgbGlzdCBvZiBzaW5nbGUgSVAgYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBgWycxMC4wLjAuMScsICcxMC4wLjAuMiddYC4gWW91IGNhbiBhbHNvIHVzZSBDSURSIG5vdGF0aW9uIHRvIHNwZWNpZnkgYW4gSVAgYWRkcmVzcyByYW5nZSwgZm9yIGV4YW1wbGUgYFsnMTAuMC4xLjAvMjQnXWAuPGJyPjxicj48Yj5TcGVjaWFsIHNjZW5hcmlvczo8L2I+PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgdGhlIG1hc3RlciBrZXkgY2Fubm90IGJlIHVzZWQgZXZlbiBpbiBQYXJzZSBTZXJ2ZXIgQ2xvdWQgQ29kZS4gVGhpcyB2YWx1ZSBjYW5ub3QgYmUgc2V0IHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBhbiBlbXB0eSBhcnJheSB0byBQYXJzZSBTZXJ2ZXIgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLjxicj4tIFNldHRpbmcgYFsnMC4wLjAuMC8wJywgJzo6MCddYCBtZWFucyB0byBhbGxvdyBhbnkgSVB2NCBhbmQgSVB2NiBhZGRyZXNzIHRvIHVzZSB0aGUgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFzdGVyIGtleS5cbiAgOkRFRkFVTFQ6IFtcIjEyNy4wLjAuMVwiLFwiOjoxXCJdICovXG4gIG1hc3RlcktleUlwczogPyhzdHJpbmdbXSk7XG4gIC8qIChPcHRpb25hbCkgUmVzdHJpY3RzIGV4dGVybmFsIGNsaWVudCBhY2Nlc3MgdG8gYSBsaXN0IG9mIGFsbG93ZWQgUkVTVCBBUEkgcm91dGVzLjxicj48YnI+V2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIGFsbCBleHRlcm5hbCBub24tbWFzdGVyLWtleSBSRVNUIEFQSSByZXF1ZXN0cyBhcmUgZGVuaWVkIGJ5IGRlZmF1bHQuIE9ubHkgcm91dGVzIG1hdGNoaW5nIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29uZmlndXJlZCByZWdleCBwYXR0ZXJucyBhcmUgYWxsb3dlZCB0aHJvdWdoLiBJbnRlcm5hbCBjYWxscyBmcm9tIENsb3VkIENvZGUsIENsb3VkIEpvYnMsIGFuZCB0cmlnZ2VycyBhcmUgbm90IGFmZmVjdGVkLjxicj48YnI+RWFjaCBlbnRyeSBpcyBhIHJlZ2V4IHBhdHRlcm4gc3RyaW5nIG1hdGNoZWQgYWdhaW5zdCB0aGUgbm9ybWFsaXplZCByb3V0ZSBpZGVudGlmaWVyIChyZXF1ZXN0IHBhdGggd2l0aCBtb3VudCBwcmVmaXggYW5kIGxlYWRpbmcgc2xhc2ggc3RyaXBwZWQpLiBQYXR0ZXJucyBhcmUgYXV0by1hbmNob3JlZCB3aXRoIGBeYCBhbmQgYCRgIGZvciBmdWxsLW1hdGNoIHNlbWFudGljcy48YnI+PGJyPjxiPkV4YW1wbGVzIG9mIG5vcm1hbGl6ZWQgcm91dGUgaWRlbnRpZmllcnM6PC9iPjx1bD48bGk+YGNsYXNzZXMvR2FtZVNjb3JlYCAoY2xhc3MgQ1JVRCk8L2xpPjxsaT5gY2xhc3Nlcy9HYW1lU2NvcmUvYWJjMTIzYCAob2JqZWN0IGJ5IElEKTwvbGk+PGxpPmB1c2Vyc2AgKHVzZXIgb3BlcmF0aW9ucyk8L2xpPjxsaT5gbG9naW5gIChsb2dpbiBlbmRwb2ludCk8L2xpPjxsaT5gZnVuY3Rpb25zL3NlbmRFbWFpbGAgKENsb3VkIEZ1bmN0aW9uKTwvbGk+PGxpPmBqb2JzL2NsZWFudXBgIChDbG91ZCBKb2IpPC9saT48bGk+YHB1c2hgIChwdXNoIG5vdGlmaWNhdGlvbnMpPC9saT48bGk+YGNvbmZpZ2AgKGNsaWVudCBjb25maWcpPC9saT48bGk+YGluc3RhbGxhdGlvbnNgIChpbnN0YWxsYXRpb25zKTwvbGk+PC91bD48Yj5FeGFtcGxlIHBhdHRlcm5zOjwvYj48dWw+PGxpPmBjbGFzc2VzL0NoYXRNZXNzYWdlYCBtYXRjaGVzIG9ubHkgYGNsYXNzZXMvQ2hhdE1lc3NhZ2VgPC9saT48bGk+YGNsYXNzZXMvQ2hhdC4qYCBtYXRjaGVzIGBjbGFzc2VzL0NoYXRNZXNzYWdlYCwgYGNsYXNzZXMvQ2hhdFJvb21gLCBldGMuPC9saT48bGk+YGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgQ2xvdWQgRnVuY3Rpb25zPC9saT48L3VsPlNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBibG9ja3MgYWxsIGV4dGVybmFsIG5vbi1tYXN0ZXIta2V5IFJFU1QgQVBJIHJlcXVlc3RzIChmdWxsIGxvY2tkb3duIG9mIFJFU1QgQVBJIHJvdXRlcykuPGJyPjxicj5XaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBub3RhdGlvbiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlIGBcImNsYXNzZXMvQ2hhdE1lc3NhZ2UsdXNlcnMsZnVuY3Rpb25zLy4qXCJgLjxicj48YnI+RGVmYXVsdHMgdG8gYHVuZGVmaW5lZGAgd2hpY2ggbWVhbnMgdGhlIGZlYXR1cmUgaXMgaW5hY3RpdmUgYW5kIGFsbCByb3V0ZXMgYXJlIGFjY2Vzc2libGUuPGJyPjxicj48Yj5Ob3RlOjwvYj4gRmlsZSByb3V0ZXMgYW5kIHRoZSBHcmFwaFFMIEFQSSBhcmUgbm90IGNvdmVyZWQgYnkgdGhpcyBvcHRpb24uKi9cbiAgcm91dGVBbGxvd0xpc3Q6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1haW50ZW5hbmNlIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIG9yIHJhbmdlcy48YnI+PGJyPlRoaXMgb3B0aW9uIGFjY2VwdHMgYSBsaXN0IG9mIHNpbmdsZSBJUCBhZGRyZXNzZXMsIGZvciBleGFtcGxlIGBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gLiBZb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZSBgWycxMC4wLjEuMC8yNCddYC48YnI+PGJyPjxiPlNwZWNpYWwgc2NlbmFyaW9zOjwvYj48YnI+LSBTZXR0aW5nIGFuIGVtcHR5IGFycmF5IGBbXWAgbWVhbnMgdGhhdCB0aGUgbWFpbnRlbmFuY2Uga2V5IGNhbm5vdCBiZSB1c2VkIGV2ZW4gaW4gUGFyc2UgU2VydmVyIENsb3VkIENvZGUuIFRoaXMgdmFsdWUgY2Fubm90IGJlIHNldCB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHBhc3MgYW4gZW1wdHkgYXJyYXkgdG8gUGFyc2UgU2VydmVyIHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS48YnI+LSBTZXR0aW5nIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgbWVhbnMgdG8gYWxsb3cgYW55IElQdjQgYW5kIElQdjYgYWRkcmVzcyB0byB1c2UgdGhlIG1haW50ZW5hbmNlIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFpbnRlbmFuY2Uga2V5LlxuICA6REVGQVVMVDogW1wiMTI3LjAuMC4xXCIsXCI6OjFcIl0gKi9cbiAgbWFpbnRlbmFuY2VLZXlJcHM6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIHJlYWQtb25seSBtYXN0ZXIga2V5IHBlcm1pc3Npb25zIHRvIGEgbGlzdCBvZiBJUCBhZGRyZXNzZXMgb3IgcmFuZ2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGUgYFsnMTAuMC4wLjEnLCAnMTAuMC4wLjInXWAuIFlvdSBjYW4gYWxzbyB1c2UgQ0lEUiBub3RhdGlvbiB0byBzcGVjaWZ5IGFuIElQIGFkZHJlc3MgcmFuZ2UsIGZvciBleGFtcGxlIGBbJzEwLjAuMS4wLzI0J11gLjxicj48YnI+PGI+U3BlY2lhbCBzY2VuYXJpb3M6PC9iPjxicj4tIFNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBtZWFucyB0aGF0IHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW5ub3QgYmUgdXNlZCBldmVuIGluIFBhcnNlIFNlcnZlciBDbG91ZCBDb2RlLiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBzZXQgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIFBhcnNlIFNlcnZlciB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnLCAnOjowJ11gIG1lYW5zIHRvIGFsbG93IGFueSBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgdG8gdXNlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgd2hpY2ggbWVhbnMgdGhhdCBhbnkgSVAgYWRkcmVzcyBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBgWycxMjcuMC4wLjEnLCAnOjoxJ11gIHRvIHJlc3RyaWN0IGFjY2VzcyB0byBgbG9jYWxob3N0YC5cbiAgOkRFRkFVTFQ6IFtcIjAuMC4wLjAvMFwiLFwiOjowXCJdICovXG4gIHJlYWRPbmx5TWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIG9yaWdpbnMgZm9yIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gVGhpcyBjYW4gYmUgYSBzdHJpbmcgZm9yIGEgc2luZ2xlIG9yaWdpbiBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBtdWx0aXBsZSBvcmlnaW5zLiAqL1xuICBhbGxvd09yaWdpbjogP1N0cmluZ09yU3RyaW5nQXJyYXk7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzICovXG4gIGFuYWx5dGljc0FkYXB0ZXI6ID9BZGFwdGVyPEFuYWx5dGljc0FkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGZpbGVzIHN1Yi1zeXN0ZW0gKi9cbiAgZmlsZXNBZGFwdGVyOiA/QWRhcHRlcjxGaWxlc0FkYXB0ZXI+O1xuICAvKiBDb25maWd1cmF0aW9uIGZvciBwdXNoLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNwdXNoLW5vdGlmaWNhdGlvbnMgKi9cbiAgcHVzaDogP2FueTtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHNjaGVkdWxlZFB1c2g6ID9ib29sZWFuO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbSAqL1xuICBsb2dnZXJBZGFwdGVyOiA/QWRhcHRlcjxMb2dnZXJBZGFwdGVyPjtcbiAgLyogTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzXG4gIDpFTlY6IEpTT05fTE9HUyAqL1xuICBqc29uTG9nczogP2Jvb2xlYW47XG4gIC8qIEZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSXG4gIDpERUZBVUxUOiAuL2xvZ3MgKi9cbiAgbG9nc0ZvbGRlcjogP3N0cmluZztcbiAgLyogU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAgOkVOVjogVkVSQk9TRSAqL1xuICB2ZXJib3NlOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MgKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIChPcHRpb25hbCkgT3ZlcnJpZGVzIHRoZSBsb2cgbGV2ZWxzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIgdG8gbG9nIGV2ZW50cy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGxvZ0xldmVsczogP0xvZ0xldmVscztcbiAgLyogTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpICovXG4gIG1heExvZ0ZpbGVzOiA/TnVtYmVyT3JTdHJpbmc7XG4gIC8qIERpc2FibGVzIGNvbnNvbGUgb3V0cHV0XG4gIDpFTlY6IFNJTEVOVCAqL1xuICBzaWxlbnQ6ID9ib29sZWFuO1xuICAvKiBUaGUgZnVsbCBVUkkgdG8geW91ciBkYXRhYmFzZS4gU3VwcG9ydGVkIGRhdGFiYXNlcyBhcmUgbW9uZ29kYiBvciBwb3N0Z3Jlcy5cbiAgOkRFRkFVTFQ6IG1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTcvcGFyc2UgKi9cbiAgZGF0YWJhc2VVUkk6IHN0cmluZztcbiAgLyogT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBkYXRhYmFzZSBjbGllbnRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0RBVEFCQVNFX09QVElPTlMgKi9cbiAgZGF0YWJhc2VPcHRpb25zOiA/RGF0YWJhc2VPcHRpb25zO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuICovXG4gIGRhdGFiYXNlQWRhcHRlcjogP0FkYXB0ZXI8U3RvcmFnZUFkYXB0ZXI+O1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbGxhdGlvbiBydWxlIG9mIGNhc2UgY29tcGFyaXNvbiBmb3IgcXVlcmllcyBhbmQgaW5kZXhlcyBpcyBlbmFibGVkLiBFbmFibGUgdGhpcyBvcHRpb24gdG8gcnVuIFBhcnNlIFNlcnZlciB3aXRoIE1vbmdvREIgQXRsYXMgU2VydmVybGVzcyBvciBBV1MgQW1hem9uIERvY3VtZW50REIuIElmIGBmYWxzZWAsIHRoZSBjb2xsYXRpb24gcnVsZSBvZiBjYXNlIGNvbXBhcmlzb24gaXMgZGlzYWJsZWQuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNvbGxhdGlvbkNhc2VDb21wYXJpc29uOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBgZW1haWxgIHByb3BlcnR5IG9mIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGJlaW5nIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIENvbnNlcXVlbnRseSwgcXVlcmllcyBtdXN0IG1hdGNoIHRoZSBjYXNlIGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIHdoaWNoIHdvdWxkIGJlIGxvd2VyY2FzZSBpbiB0aGlzIHNjZW5hcmlvLiBJZiBgZmFsc2VgLCB0aGUgYGVtYWlsYCBwcm9wZXJ0eSBpcyBzdG9yZWQgYXMgc2V0LCB3aXRob3V0IGFueSBjYXNlIG1vZGlmaWNhdGlvbnMuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGNvbnZlcnRFbWFpbFRvTG93ZXJjYXNlOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBgdXNlcm5hbWVgIHByb3BlcnR5IG9mIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGJlaW5nIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIENvbnNlcXVlbnRseSwgcXVlcmllcyBtdXN0IG1hdGNoIHRoZSBjYXNlIGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIHdoaWNoIHdvdWxkIGJlIGxvd2VyY2FzZSBpbiB0aGlzIHNjZW5hcmlvLiBJZiBgZmFsc2VgLCB0aGUgYHVzZXJuYW1lYCBwcm9wZXJ0eSBpcyBzdG9yZWQgYXMgc2V0LCB3aXRob3V0IGFueSBjYXNlIG1vZGlmaWNhdGlvbnMuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGNvbnZlcnRVc2VybmFtZVRvTG93ZXJjYXNlOiA/Ym9vbGVhbjtcbiAgLyogRnVsbCBwYXRoIHRvIHlvdXIgY2xvdWQgY29kZSBtYWluLmpzICovXG4gIGNsb3VkOiA/c3RyaW5nO1xuICAvKiBBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3Nlc1xuICA6REVGQVVMVDogJycgKi9cbiAgY29sbGVjdGlvblByZWZpeDogP3N0cmluZztcbiAgLyogS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHMgKi9cbiAgY2xpZW50S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNESyAqL1xuICBqYXZhc2NyaXB0S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIFVuaXR5IGFuZCAuTmV0IFNESyAqL1xuICBkb3ROZXRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgZW5jcnlwdGluZyB5b3VyIGZpbGVzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkNSWVBUSU9OX0tFWSAqL1xuICBlbmNyeXB0aW9uS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIFJFU1QgY2FsbHNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFU1RfQVBJX0tFWSAqL1xuICByZXN0QVBJS2V5OiA/c3RyaW5nO1xuICAvKiBUaGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgaXMgYSBzZWNyZXQga2V5IHdpdGggdGhlIHNhbWUgcmVhZCBjYXBhYmlsaXRpZXMgYXMgdGhlIGBtYXN0ZXJLZXlgLCBidXQgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIHdyaXRlcy4gTGlrZSB0aGUgYG1hc3RlcktleWAsIGl0IGJ5cGFzc2VzIGFsbCBzZWN1cml0eSBtZWNoYW5pc21zIChDbGFzcyBMZXZlbCBQZXJtaXNzaW9ucywgb2JqZWN0IEFDTHMsIGBwcm90ZWN0ZWRGaWVsZHNgKSwgc28gaXQgZ3JhbnRzIGZ1bGwgcmVhZCBhY2Nlc3MgdG8gYWxsIGRhdGEuPGJyPjxicj5JdCBpcyBpbnRlbmRlZCBzdHJpY3RseSBmb3IgaW50ZXJuYWwsIHNlcnZlci1zaWRlIHVzZSDigJQgZm9yIGV4YW1wbGUgdG8gZ2l2ZSBhIHRydXN0ZWQgaW50ZXJuYWwgcHJvY2VzcyByZWFkIGFjY2VzcyB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGFjY2lkZW50YWwgd3JpdGVzIGR1cmluZyBkZXZlbG9wbWVudCBvciBvcGVyYXRpb25zLiBJdCBpcyBub3QgYSBjcmVkZW50aWFsIGZvciB1bnRydXN0ZWQgY29udGV4dHM6IGl0IG11c3QgbmV2ZXIgYmUgc2hpcHBlZCwgZGlzdHJpYnV0ZWQsIHB1Ymxpc2hlZCwgZW1iZWRkZWQgaW4gYSBjbGllbnQgYXBwbGljYXRpb24sIG9yIG90aGVyd2lzZSBleHBvc2VkIHRvIHVudHJ1c3RlZCBwYXJ0aWVzLCBiZWNhdXNlIGFueW9uZSB3aG8gb2J0YWlucyBpdCBjYW4gcmVhZCBhbGwgZGF0YSBpbiB0aGUgZGF0YWJhc2UuIFVzZSBgcmVhZE9ubHlNYXN0ZXJLZXlJcHNgIHRvIHJlc3RyaWN0IHRoZSBJUCBhZGRyZXNzZXMgZnJvbSB3aGljaCBpdCBtYXkgYmUgdXNlZC4gKi9cbiAgcmVhZE9ubHlNYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIFdoZXRoZXIgdGhlIGByZWFkT25seU1hc3RlcktleWAgaXMgYWxsb3dlZCB0byBydW4gYWdncmVnYXRpb24gcGlwZWxpbmVzIHZpYSB0aGUgYWdncmVnYXRlIGVuZHBvaW50LiBBbiBhZ2dyZWdhdGlvbiBwaXBlbGluZSBjYW4gY29udGFpbiB3cml0ZS1jYXBhYmxlIHN0YWdlcyAoZm9yIGV4YW1wbGUgTW9uZ29EQiBgJG91dGAgYW5kIGAkbWVyZ2VgKSwgc28gYWxsb3dpbmcgYWdncmVnYXRpb24gZWZmZWN0aXZlbHkgZ2l2ZXMgdGhlIHJlYWQtb25seSBtYXN0ZXIga2V5IGEgd2F5IHRvIHBlcmZvcm0gd3JpdGVzLCBjb250cmFyeSB0byBpdHMgcmVhZC1vbmx5IGludGVudC4gSWYgYHRydWVgIChkZWZhdWx0KSwgdGhlIHJlYWQtb25seSBtYXN0ZXIga2V5IGNhbiBydW4gYWdncmVnYXRpb24gcGlwZWxpbmVzLiBJZiBgZmFsc2VgLCB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgY2Fubm90IHJ1biBhZ2dyZWdhdGlvbiBwaXBlbGluZXMgYXQgYWxsLiBOb3RlIHRoYXQgdGhlIGByZWFkT25seU1hc3RlcktleWAgaXMgYSBzZWNyZXQga2V5IGZvciBpbnRlcm5hbCBzZXJ2ZXItc2lkZSB1c2Ugb25seSBhbmQgbXVzdCBuZXZlciBiZSBkaXN0cmlidXRlZDsgdGhpcyBvcHRpb24gaXMgYW4gYWRkaXRpb25hbCBzYWZlZ3VhcmQsIG5vdCBhIHN1YnN0aXR1dGUgZm9yIGtlZXBpbmcgdGhlIGtleSBjb25maWRlbnRpYWwuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0FHR1JFR0FUSU9OX0ZPUl9SRUFEX09OTFlfTUFTVEVSX0tFWVxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBhbGxvd0FnZ3JlZ2F0aW9uRm9yUmVhZE9ubHlNYXN0ZXJLZXk6ID9ib29sZWFuO1xuICAvKiBLZXkgc2VudCB3aXRoIG91dGdvaW5nIHdlYmhvb2sgY2FsbHMgKi9cbiAgd2ViaG9va0tleTogP3N0cmluZztcbiAgLyogS2V5IGZvciB5b3VyIGZpbGVzICovXG4gIGZpbGVLZXk6ID9zdHJpbmc7XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgdGhlIGFkZGl0aW9uIG9mIGEgdW5pcXVlIGhhc2ggdG8gdGhlIGZpbGUgbmFtZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1BSRVNFUlZFX0ZJTEVfTkFNRVxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJlc2VydmVGaWxlTmFtZTogP2Jvb2xlYW47XG4gIC8qIFBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGZpZWxkcyBpbiB0aGUgdXNlciB0YWJsZSB0aGUgc2hvdWxkIGJlIHJlbW92ZWQgZm9yIG5vbi1hdXRob3JpemVkIHVzZXJzLiBEZXByZWNhdGVkIEBzZWUgcHJvdGVjdGVkRmllbGRzICovXG4gIHVzZXJTZW5zaXRpdmVGaWVsZHM6ID8oc3RyaW5nW10pO1xuICAvKiBGaWVsZHMgcGVyIGNsYXNzIHRoYXQgYXJlIGhpZGRlbiBmcm9tIHF1ZXJ5IHJlc3VsdHMgZm9yIHNwZWNpZmljIHVzZXIgZ3JvdXBzLiBQcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UsIGJ1dCBjYW4gc3RpbGwgYmUgdXNlZCBpbnRlcm5hbGx5IChlLmcuIGluIENsb3VkIENvZGUgdHJpZ2dlcnMpLiBDb25maWd1cmUgYXMgYHsgJ0NsYXNzTmFtZSc6IHsgJ1VzZXJHcm91cCc6IFsnZmllbGQxJywgJ2ZpZWxkMiddIH0gfWAgd2hlcmUgYFVzZXJHcm91cGAgaXMgb25lIG9mOiBgJyonYCAoYWxsIHVzZXJzKSwgYCdhdXRoZW50aWNhdGVkJ2AgKGF1dGhlbnRpY2F0ZWQgdXNlcnMpLCBgJ3JvbGU6Um9sZU5hbWUnYCAodXNlcnMgd2l0aCBhIHNwZWNpZmljIHJvbGUpLCBgJ3VzZXJGaWVsZDpGaWVsZE5hbWUnYCAodXNlcnMgcmVmZXJlbmNlZCBieSBhIHBvaW50ZXIgZmllbGQpLCBvciBhIHVzZXIgYG9iamVjdElkYCB0byB0YXJnZXQgYSBzcGVjaWZpYyB1c2VyLiBXaGVuIG11bHRpcGxlIGdyb3VwcyBhcHBseSwgdGhlIGludGVyc2VjdGlvbiBvZiB0aGVpciBwcm90ZWN0ZWQgZmllbGRzIGlzIHVzZWQuIEFueSBmaWVsZCBjYW4gYmUgcHJvdGVjdGVkLCBpbmNsdWRpbmcgc3lzdGVtIGZpZWxkcyBsaWtlIGBjcmVhdGVkQXRgIGFuZCBgdXBkYXRlZEF0YC4gQnkgZGVmYXVsdCwgYGVtYWlsYCBpcyBwcm90ZWN0ZWQgb24gdGhlIGBfVXNlcmAgY2xhc3MgZm9yIGFsbCB1c2Vycy4gT24gdGhlIGBfVXNlcmAgY2xhc3MsIHRoZSBvYmplY3Qgb3duZXIgaXMgZXhlbXB0IGZyb20gcHJvdGVjdGVkIGZpZWxkcyBieSBkZWZhdWx0OyBzZWUgYHByb3RlY3RlZEZpZWxkc093bmVyRXhlbXB0YCB0byBjaGFuZ2UgdGhpcy5cbiAgOkRFRkFVTFQ6IHtcIl9Vc2VyXCI6IHtcIipcIjogW1wiZW1haWxcIl19fSAqL1xuICBwcm90ZWN0ZWRGaWVsZHM6ID9Qcm90ZWN0ZWRGaWVsZHM7XG4gIC8qIFdoZXRoZXIgdGhlIGBfVXNlcmAgY2xhc3MgaXMgZXhlbXB0IGZyb20gYHByb3RlY3RlZEZpZWxkc2Agd2hlbiB0aGUgbG9nZ2VkLWluIHVzZXIgcXVlcmllcyB0aGVpciBvd24gdXNlciBvYmplY3QuIElmIGB0cnVlYCAoZGVmYXVsdCksIGEgdXNlciBjYW4gc2VlIGFsbCB0aGVpciBvd24gZmllbGRzIHJlZ2FyZGxlc3Mgb2YgYHByb3RlY3RlZEZpZWxkc2AgY29uZmlndXJhdGlvbjsgZGVmYXVsdCBwcm90ZWN0ZWQgZmllbGRzIChlLmcuIGBlbWFpbGApIGFyZSBtZXJnZWQgaW50byBhbnkgY3VzdG9tIGBwcm90ZWN0ZWRGaWVsZHNgIGNvbmZpZ3VyYXRpb24uIElmIGBmYWxzZWAsIGBwcm90ZWN0ZWRGaWVsZHNgIGFwcGxpZXMgZXF1YWxseSB0byB0aGUgdXNlcidzIG93biBvYmplY3QsIGNvbnNpc3RlbnQgd2l0aCBhbGwgb3RoZXIgY2xhc3Nlczsgb25seSBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgcHJvdGVjdGVkIGZpZWxkcyBhcHBseSwgZGVmYXVsdHMgYXJlIG5vdCBtZXJnZWQuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1BST1RFQ1RFRF9GSUVMRFNfT1dORVJfRVhFTVBUXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHByb3RlY3RlZEZpZWxkc093bmVyRXhlbXB0OiA/Ym9vbGVhbjtcbiAgLyogV2hldGhlciBDbG91ZCBDb2RlIHRyaWdnZXJzIChlLmcuIGBiZWZvcmVTYXZlYCwgYGFmdGVyU2F2ZWApIGFyZSBleGVtcHQgZnJvbSBgcHJvdGVjdGVkRmllbGRzYC4gSWYgYHRydWVgLCB0cmlnZ2VycyByZWNlaXZlIHRoZSBmdWxsIG9iamVjdCBpbmNsdWRpbmcgcHJvdGVjdGVkIGZpZWxkcyBpbiBgcmVxdWVzdC5vYmplY3RgIGFuZCBgcmVxdWVzdC5vcmlnaW5hbGAsIHJlZ2FyZGxlc3Mgb2YgdGhlIGNhbGxlcidzIGF1dGggY29udGV4dC4gSWYgYGZhbHNlYCwgcHJvdGVjdGVkIGZpZWxkcyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUgb3JpZ2luYWwgb2JqZWN0IGZldGNoIHVzZWQgdG8gYnVpbGQgdHJpZ2dlciBvYmplY3RzLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEU19UUklHR0VSX0VYRU1QVFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdDogP2Jvb2xlYW47XG4gIC8qIFdoZXRoZXIgc2F2ZSBvcGVyYXRpb24gcmVzcG9uc2VzIChjcmVhdGUsIHVwZGF0ZSkgYXJlIGV4ZW1wdCBmcm9tIGBwcm90ZWN0ZWRGaWVsZHNgLiBJZiBgdHJ1ZWAgKGRlZmF1bHQpLCBwcm90ZWN0ZWQgZmllbGRzIG1vZGlmaWVkIGR1cmluZyBhIHNhdmUgYXJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSB0byB0aGUgY2xpZW50LiBJZiBgZmFsc2VgLCBwcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHNhdmUgcmVzcG9uc2VzLCBjb25zaXN0ZW50IHdpdGggaG93IHRoZXkgYXJlIHN0cmlwcGVkIGZyb20gcXVlcnkgcmVzdWx0cy4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEU19TQVZFX1JFU1BPTlNFX0VYRU1QVFxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBwcm90ZWN0ZWRGaWVsZHNTYXZlUmVzcG9uc2VFeGVtcHQ6ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGFub255bW91cyB1c2VycywgZGVmYXVsdHMgdG8gdHJ1ZVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5BQkxFX0FOT05fVVNFUlNcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlQW5vbnltb3VzVXNlcnM6ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGNsaWVudCBjbGFzcyBjcmVhdGlvbiwgZGVmYXVsdHMgdG8gZmFsc2VcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0NMSUVOVF9DTEFTU19DUkVBVElPTlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBjdXN0b20gb2JqZWN0SWRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSURcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93Q3VzdG9tT2JqZWN0SWQ6ID9ib29sZWFuO1xuICAvKiBDb25maWd1cmF0aW9uIGZvciB5b3VyIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVycywgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jb2F1dGgtYW5kLTNyZC1wYXJ0eS1hdXRoZW50aWNhdGlvbjxicj48YnI+UHJvdmlkZXIgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgZGlnaXRzLCBhbmQgdW5kZXJzY29yZXMgKGAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvYCkuIFRoaXMgaXMgYmVjYXVzZSBlYWNoIHByb3ZpZGVyIG5hbWUgaXMgdXNlZCB0byBjb25zdHJ1Y3QgYSBkYXRhYmFzZSBmaWVsZCAoYF9hdXRoX2RhdGFfPHByb3ZpZGVyPmApLCB3aGljaCBtdXN0IGNvbXBseSB3aXRoIFBhcnNlIFNlcnZlcidzIGZpZWxkIG5hbWluZyBydWxlcy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FVVEhfUFJPVklERVJTICovXG4gIGF1dGg6ID97IFtzdHJpbmddOiBBdXRoQWRhcHRlciB9O1xuICAvKiBPcHRpb25hbC4gRW5hYmxlcyBpbnNlY3VyZSBhdXRoZW50aWNhdGlvbiBhZGFwdGVycy4gSW5zZWN1cmUgYXV0aCBhZGFwdGVycyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfSU5TRUNVUkVfQVVUSF9BREFQVEVSU1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlSW5zZWN1cmVBdXRoQWRhcHRlcnM6ID9ib29sZWFuO1xuICAvKiBNYXggZmlsZSBzaXplIGZvciB1cGxvYWRzLCBkZWZhdWx0cyB0byAyMG1iXG4gIDpERUZBVUxUOiAyMG1iICovXG4gIG1heFVwbG9hZFNpemU6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gcmVxdWlyZSB1c2VycyB0byB2ZXJpZnkgdGhlaXIgZW1haWwgYWRkcmVzcyB0byBjb21wbGV0ZSB0aGUgc2lnbi11cCBwcm9jZXNzLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIHZlcmlmaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIGEgcmVxdWVzdCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgY3JlYXRlZFdpdGhgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGludm9jYXRpb24gaXMgZm9yIGBzaWdudXBgIG9yIGBsb2dpbmAgYW5kIHRoZSB1c2VkIGF1dGggcHJvdmlkZXIuXG4gIDxicj48YnI+XG4gIFRoZSBgY3JlYXRlZFdpdGhgIHZhbHVlcyBwZXIgc2NlbmFyaW86XG4gIDx1bD48bGk+UGFzc3dvcmQgc2lnbnVwOiBgeyBhY3Rpb246ICdzaWdudXAnLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIHNpZ251cDogYHsgYWN0aW9uOiAnc2lnbnVwJywgYXV0aFByb3ZpZGVyOiAnPHByb3ZpZGVyPicgfWA8L2xpPjxsaT5QYXNzd29yZCBsb2dpbjogYHsgYWN0aW9uOiAnbG9naW4nLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIGxvZ2luOiBmdW5jdGlvbiBub3QgaW52b2tlZDsgYXV0aCBwcm92aWRlciBsb2dpbiBieXBhc3NlcyBlbWFpbCB2ZXJpZmljYXRpb248L2xpPjxsaT5SZXNlbmQgdmVyaWZpY2F0aW9uIGVtYWlsOiBgY3JlYXRlZFdpdGhgIGlzIGB1bmRlZmluZWRgOyB1c2UgdGhlIGByZXNlbmRSZXF1ZXN0YCBwcm9wZXJ0eSB0byBpZGVudGlmeSB0aG9zZTwvbGk+PC91bD5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdmVyaWZ5VXNlckVtYWlsczogPyhib29sZWFuIHwgKEVtYWlsVmVyaWZpY2F0aW9uUmVxdWVzdCA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPikpO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIHByZXZlbnRpb24uIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhIHJlcXVlc3Qgb2JqZWN0IHRoYXQgaW5jbHVkZXMgYGNyZWF0ZWRXaXRoYCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnZvY2F0aW9uIGlzIGZvciBgc2lnbnVwYCBvciBgbG9naW5gIGFuZCB0aGUgdXNlZCBhdXRoIHByb3ZpZGVyLlxuICA8YnI+PGJyPlxuICBUaGUgYGNyZWF0ZWRXaXRoYCB2YWx1ZXMgcGVyIHNjZW5hcmlvOlxuICA8dWw+PGxpPlBhc3N3b3JkIHNpZ251cDogYHsgYWN0aW9uOiAnc2lnbnVwJywgYXV0aFByb3ZpZGVyOiAncGFzc3dvcmQnIH1gPC9saT48bGk+QXV0aCBwcm92aWRlciBzaWdudXA6IGB7IGFjdGlvbjogJ3NpZ251cCcsIGF1dGhQcm92aWRlcjogJzxwcm92aWRlcj4nIH1gPC9saT48bGk+UGFzc3dvcmQgbG9naW46IGB7IGFjdGlvbjogJ2xvZ2luJywgYXV0aFByb3ZpZGVyOiAncGFzc3dvcmQnIH1gPC9saT48bGk+QXV0aCBwcm92aWRlciBsb2dpbjogZnVuY3Rpb24gbm90IGludm9rZWQ7IGF1dGggcHJvdmlkZXIgbG9naW4gYnlwYXNzZXMgZW1haWwgdmVyaWZpY2F0aW9uPC9saT48L3VsPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWw6ID8oXG4gICAgfCBib29sZWFuXG4gICAgfCAoRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+KVxuICApO1xuICAvKiBJZiBzZXQgdG8gYHRydWVgIGl0IHByZXZlbnRzIGEgdXNlciBmcm9tIHNpZ25pbmcgdXAgaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC4gSW4gdGhhdCBjYXNlIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgdG8gdGhlIHNpZ24tdXAgd2l0aCBIVFRQIHN0YXR1cyA0MDAgYW5kIGEgUGFyc2UgRXJyb3IgMjA1IGBFTUFJTF9OT1RfRk9VTkRgLiBJZiBzZXQgdG8gYGZhbHNlYCB0aGUgc2VydmVyIHJlc3BvbmRzIHdpdGggSFRUUCBzdGF0dXMgMjAwLCBhbmQgY2xpZW50IFNES3MgcmV0dXJuIGFuIHVuYXV0aGVudGljYXRlZCBQYXJzZSBVc2VyIHdpdGhvdXQgc2Vzc2lvbiB0b2tlbi4gSW4gdGhhdCBjYXNlIHN1YnNlcXVlbnQgcmVxdWVzdHMgZmFpbCB1bnRpbCB0aGUgdXNlcidzIGVtYWlsIGFkZHJlc3MgaXMgdmVyaWZpZWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudFNpZ251cFdpdGhVbnZlcmlmaWVkRW1haWw6ID9ib29sZWFuO1xuICAvKiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLlxuICA8YnI+PGJyPlxuICBGb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICAqL1xuICBlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSByZXF1ZXN0IHRvIHZlcmlmeSB0aGUgZW1haWwgc2hvdWxkIHJldHVybiBhIHN1Y2Nlc3MgcmVzcG9uc2UgZXZlbiBpZiB0aGUgcHJvdmlkZWQgZW1haWwgYWRkcmVzcyBkb2VzIG5vdCBiZWxvbmcgdG8gYSB2ZXJpZmlhYmxlIGFjY291bnQsIGZvciBleGFtcGxlIGJlY2F1c2UgaXQgaXMgdW5rbm93biBvciBhbHJlYWR5IHZlcmlmaWVkLCBvciBgZmFsc2VgIGlmIHRoZSByZXF1ZXN0IHNob3VsZCByZXR1cm4gYW4gZXJyb3IgcmVzcG9uc2UgaW4gdGhvc2UgY2FzZXMuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVtYWlsVmVyaWZ5U3VjY2Vzc09uSW52YWxpZEVtYWlsOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCBzZW5kaW5nIG9mIHZlcmlmaWNhdGlvbiBlbWFpbC4gU3VwcG9ydHMgYSBmdW5jdGlvbiB3aXRoIGEgcmV0dXJuIHZhbHVlIG9mIGB0cnVlYCBvciBgZmFsc2VgIGZvciBjb25kaXRpb25hbCBlbWFpbCBzZW5kaW5nLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgPGJyPlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBzZW5kVXNlckVtYWlsVmVyaWZpY2F0aW9uOiA/KFxuICAgIHwgYm9vbGVhblxuICAgIHwgKFNlbmRFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4pXG4gICk7XG4gIC8qIFRoZSBhY2NvdW50IGxvY2tvdXQgcG9saWN5IGZvciBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuXG4gIDxicj48YnI+XG4gIE5vdGU6IFNldHRpbmcgYSB1c2VyJ3MgQUNMIHRvIGFuIGVtcHR5IG9iamVjdCBge31gIHZpYSBtYXN0ZXIga2V5IGlzIGEgc2VwYXJhdGUgbWVjaGFuaXNtIHRoYXQgb25seSBwcmV2ZW50cyBuZXcgbG9naW5zOyBpdCBkb2VzIG5vdCBpbnZhbGlkYXRlIGV4aXN0aW5nIHNlc3Npb24gdG9rZW5zLiBUbyBpbW1lZGlhdGVseSByZXZva2UgYSB1c2VyJ3MgYWNjZXNzLCBkZXN0cm95IHRoZWlyIHNlc3Npb25zIHZpYSBtYXN0ZXIga2V5IGluIGFkZGl0aW9uIHRvIHNldHRpbmcgdGhlIEFDTC4gKi9cbiAgYWNjb3VudExvY2tvdXQ6ID9BY2NvdW50TG9ja291dE9wdGlvbnM7XG4gIC8qIFRoZSBwYXNzd29yZCBwb2xpY3kgZm9yIGVuZm9yY2luZyBwYXNzd29yZCByZWxhdGVkIHJ1bGVzLiAqL1xuICBwYXNzd29yZFBvbGljeTogP1Bhc3N3b3JkUG9saWN5T3B0aW9ucztcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZSAqL1xuICBjYWNoZUFkYXB0ZXI6ID9BZGFwdGVyPENhY2hlQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciBlbWFpbCBzZW5kaW5nICovXG4gIGVtYWlsQWRhcHRlcjogP0FkYXB0ZXI8TWFpbEFkYXB0ZXI+O1xuICAvKiBPcHRpb25hbC4gVGhlIHB1YmxpYyBVUkwgdG8gUGFyc2UgU2VydmVyLiBUaGlzIFVSTCB3aWxsIGJlIHVzZWQgdG8gcmVhY2ggUGFyc2UgU2VydmVyIHB1YmxpY2x5IGZvciBmZWF0dXJlcyBsaWtlIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gbGlua3MuIFRoZSBvcHRpb24gY2FuIGJlIHNldCB0byBhIHN0cmluZyBvciBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFzeW5jaHJvbm91c2x5IHJlc29sdmVkLiBUaGUgcmV0dXJuZWQgVVJMIHN0cmluZyBtdXN0IHN0YXJ0IHdpdGggYGh0dHA6Ly9gIG9yIGBodHRwczovL2AuXG4gIDpFTlY6IFBBUlNFX1BVQkxJQ19TRVJWRVJfVVJMICovXG4gIHB1YmxpY1NlcnZlclVSTDogPyhzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSB8ICgoKSA9PiBQcm9taXNlPHN0cmluZz4pKTtcbiAgLyogVGhlIG9wdGlvbnMgZm9yIHBhZ2VzIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBhZ2VzOiA/UGFnZXNPcHRpb25zO1xuICAvKiBjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0XG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21QYWdlczogP0N1c3RvbVBhZ2VzT3B0aW9ucztcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNvbmZpZ3VyYXRpb24gb2JqZWN0ICovXG4gIGxpdmVRdWVyeTogP0xpdmVRdWVyeU9wdGlvbnM7XG4gIC8qIFNlc3Npb24gZHVyYXRpb24sIGluIHNlY29uZHMsIGRlZmF1bHRzIHRvIDEgeWVhclxuICA6REVGQVVMVDogMzE1MzYwMDAgKi9cbiAgc2Vzc2lvbkxlbmd0aDogP251bWJlcjtcbiAgLyogV2hldGhlciBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGF1dG9tYXRpY2FsbHkgZXh0ZW5kIGEgdmFsaWQgc2Vzc2lvbiBieSB0aGUgc2Vzc2lvbkxlbmd0aC4gSW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2Vzc2lvbiB1cGRhdGVzIGluIHRoZSBkYXRhYmFzZSwgYSBzZXNzaW9uIHdpbGwgb25seSBiZSBleHRlbmRlZCB3aGVuIGEgcmVxdWVzdCBpcyByZWNlaXZlZCBhZnRlciBhdCBsZWFzdCBoYWxmIG9mIHRoZSBjdXJyZW50IHNlc3Npb24ncyBsaWZldGltZSBoYXMgcGFzc2VkLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZXh0ZW5kU2Vzc2lvbk9uVXNlOiA/Ym9vbGVhbjtcbiAgLyogRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLlxuICA6REVGQVVMVDogMTAwICovXG4gIGRlZmF1bHRMaW1pdDogP251bWJlcjtcbiAgLyogTWF4IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gdW5saW1pdGVkICovXG4gIG1heExpbWl0OiA/bnVtYmVyO1xuICAvKiBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiA/Ym9vbGVhbjtcbiAgLyogV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpXG4gIDpERUZBVUxUOiA1MDAwICovXG4gIGNhY2hlVFRMOiA/bnVtYmVyO1xuICAvKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gIDpERUZBVUxUOiAxMDAwMCAqL1xuICBjYWNoZU1heFNpemU6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+PGJyPlxuICBJZiBzZXQgdG8gYGZhbHNlYCB0aGVuIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBhcmUgZXhlY3V0ZWQgYXMgSFRUUCByZXF1ZXN0cyBzZW50IHRvIFBhcnNlIFNlcnZlciB2aWEgdGhlIGBzZXJ2ZXJVUkxgLiBGb3IgZXhhbXBsZSwgYSBgUGFyc2UuUXVlcnlgIGluIENsb3VkIENvZGUgaXMgY2FsbGluZyBQYXJzZSBTZXJ2ZXIgdmlhIGEgSFRUUCByZXF1ZXN0LiBUaGUgc2VydmVyIGlzIGVzc2VudGlhbGx5IG1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBpdHNlbGYsIHVubmVjZXNzYXJpbHkgdXNpbmcgbmV0d29yayByZXNvdXJjZXMgc3VjaCBhcyBuZXR3b3JrIHBvcnRzLlxuICA8YnI+PGJyPlxuICDimqDvuI8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGRpcmVjdEFjY2VzczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZXMgdGhlIGRlZmF1bHQgZXhwcmVzcyBlcnJvciBoYW5kbGVyIGZvciBhbGwgZXJyb3JzXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gRW5hYmxlcyB0aGUgbGVnYWN5IHByb2R1Y3QgcHVyY2hhc2UgQVBJIGluY2x1ZGluZyB0aGUgYF9Qcm9kdWN0YCBjbGFzcyBhbmQgdGhlIGAvdmFsaWRhdGVfcHVyY2hhc2VgIGVuZHBvaW50LiBUaGlzIGlzIGFuIHVuZG9jdW1lbnRlZCwgdW5tYWludGFpbmVkIGxlZ2FjeSBmZWF0dXJlIGluaGVyaXRlZCBmcm9tIHRoZSBvcmlnaW5hbCBQYXJzZSBwbGF0Zm9ybSB0aGF0IG1heSBub3QgZnVuY3Rpb24gYXMgZXhwZWN0ZWQuIFdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHVzaW5nIGl0LiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgdmVyc2lvbi5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQUJMRV9QUk9EVUNUX1BVUkNIQVNFX0xFR0FDWV9BUElcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlUHJvZHVjdFB1cmNoYXNlTGVnYWN5QXBpOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZ2VuZXJhdGVkIG9iamVjdCBpZCdzLCBkZWZhdWx0IDEwXG4gIDpERUZBVUxUOiAxMCAqL1xuICBvYmplY3RJZFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBwb3J0IHRvIHJ1biB0aGUgUGFyc2VTZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gIDpFTlY6IFBPUlRcbiAgOkRFRkFVTFQ6IDEzMzcgKi9cbiAgcG9ydDogP251bWJlcjtcbiAgLyogVGhlIGhvc3QgdG8gc2VydmUgUGFyc2VTZXJ2ZXIgb24sIGRlZmF1bHRzIHRvIDAuMC4wLjBcbiAgOkRFRkFVTFQ6IDAuMC4wLjAgKi9cbiAgaG9zdDogP3N0cmluZztcbiAgLyogTW91bnQgcGF0aCBmb3IgdGhlIHNlcnZlciwgZGVmYXVsdHMgdG8gL3BhcnNlXG4gIDpERUZBVUxUOiAvcGFyc2UgKi9cbiAgbW91bnRQYXRoOiA/c3RyaW5nO1xuICAvKiBSdW4gd2l0aCBjbHVzdGVyLCBvcHRpb25hbGx5IHNldCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBkZWZhdWx0IHRvIG9zLmNwdXMoKS5sZW5ndGggKi9cbiAgY2x1c3RlcjogP051bWJlck9yQm9vbGVhbjtcbiAgLyogbWlkZGxld2FyZSBmb3IgZXhwcmVzcyBzZXJ2ZXIsIGNhbiBiZSBzdHJpbmcgb3IgZnVuY3Rpb24gKi9cbiAgbWlkZGxld2FyZTogPygoKCkgPT4gdm9pZCkgfCBzdHJpbmcpO1xuICAvKiBUaGUgdHJ1c3QgcHJveHkgc2V0dGluZ3MuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzZXR1cCBvZiB0aGUgcmV2ZXJzZSBwcm94eSwgc2luY2UgdGhpcyBzZXR0aW5nIHdpbGwgdHJ1c3QgdmFsdWVzIHByb3ZpZGVkIGluIHRoZSBQYXJzZSBTZXJ2ZXIgQVBJIHJlcXVlc3QuIFNlZSB0aGUgPGEgaHJlZj1cImh0dHBzOi8vZXhwcmVzc2pzLmNvbS9lbi9ndWlkZS9iZWhpbmQtcHJveGllcy5odG1sXCI+ZXhwcmVzcyB0cnVzdCBwcm94eSBzZXR0aW5nczwvYT4gZG9jdW1lbnRhdGlvbi4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHRydXN0UHJveHk6ID9hbnk7XG4gIC8qIFN0YXJ0cyB0aGUgbGl2ZVF1ZXJ5IHNlcnZlciAqL1xuICBzdGFydExpdmVRdWVyeVNlcnZlcjogP2Jvb2xlYW47XG4gIC8qIExpdmUgcXVlcnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAod2lsbCBzdGFydCB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcikgKi9cbiAgbGl2ZVF1ZXJ5U2VydmVyT3B0aW9uczogP0xpdmVRdWVyeVNlcnZlck9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgZm9yIHJlcXVlc3QgaWRlbXBvdGVuY3kgdG8gZGVkdXBsaWNhdGUgaWRlbnRpY2FsIHJlcXVlc3RzIHRoYXQgbWF5IGJlIGNhdXNlZCBieSBuZXR3b3JrIGlzc3Vlcy4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfT1BUSU9OU1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgaWRlbXBvdGVuY3lPcHRpb25zOiA/SWRlbXBvdGVuY3lPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciBmaWxlIHVwbG9hZHNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX09QVElPTlNcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGZpbGVVcGxvYWQ6ID9GaWxlVXBsb2FkT3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgZmlsZSBkb3dubG9hZHNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0ZJTEVfRE9XTkxPQURfT1BUSU9OU1xuICA6REVGQVVMVDoge30gKi9cbiAgZmlsZURvd25sb2FkOiA/RmlsZURvd25sb2FkT3B0aW9ucztcbiAgLyogRnVsbCBwYXRoIHRvIHlvdXIgR3JhcGhRTCBjdXN0b20gc2NoZW1hLmdyYXBocWwgZmlsZSAqL1xuICBncmFwaFFMU2NoZW1hOiA/c3RyaW5nO1xuICAvKiBNb3VudHMgdGhlIEdyYXBoUUwgZW5kcG9pbnRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX01PVU5UX0dSQVBIUUxcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIG1vdW50R3JhcGhRTDogP2Jvb2xlYW47XG4gIC8qIFRoZSBtb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludDxicj48YnI+4pqg77iPIEZpbGUgdXBsb2FkIGluc2lkZSB0aGUgR3JhcGhRTCBtdXRhdGlvbiBzeXN0ZW0gcmVxdWlyZXMgUGFyc2UgU2VydmVyIHRvIGJlIGFibGUgdG8gY2FsbCBpdHNlbGYgYnkgbWFraW5nIHJlcXVlc3RzIHRvIHRoZSBVUkwgc2V0IGluIGBzZXJ2ZXJVUkxgLjxicj48YnI+RGVmYXVsdHMgaXMgYC9ncmFwaHFsYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0dSQVBIUUxfUEFUSFxuICA6REVGQVVMVDogL2dyYXBocWwgKi9cbiAgZ3JhcGhRTFBhdGg6ID9zdHJpbmc7XG4gIC8qIEVuYWJsZSBwdWJsaWMgaW50cm9zcGVjdGlvbiBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQsIGRlZmF1bHRzIHRvIGZhbHNlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9HUkFQSFFMX1BVQkxJQ19JTlRST1NQRUNUSU9OXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBncmFwaFFMUHVibGljSW50cm9zcGVjdGlvbjogP2Jvb2xlYW47XG4gIC8qIERlcHJlY2F0ZWQuIE1vdW50cyB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kIHdoaWNoIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBUaGUgcGxheWdyb3VuZCBleHBvc2VzIHRoZSBtYXN0ZXIga2V5IGluIHRoZSBicm93c2VyLiBVc2UgUGFyc2UgRGFzaGJvYXJkIGFzIEdyYXBoUUwgSURFIG9yIGNvbmZpZ3VyZSBhIHRoaXJkLXBhcnR5IEdyYXBoUUwgY2xpZW50IHdpdGggY3VzdG9tIHJlcXVlc3QgaGVhZGVycy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX01PVU5UX1BMQVlHUk9VTkRcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIG1vdW50UGxheWdyb3VuZDogP2Jvb2xlYW47XG4gIC8qIERlcHJlY2F0ZWQuIE1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQuIFRoZSBwbGF5Z3JvdW5kIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUExBWUdST1VORF9QQVRIXG4gIDpERUZBVUxUOiAvcGxheWdyb3VuZCAqL1xuICBwbGF5Z3JvdW5kUGF0aDogP3N0cmluZztcbiAgLyogRGVmaW5lZCBzY2hlbWFcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1NDSEVNQVxuICAqL1xuICBzY2hlbWE6ID9TY2hlbWFPcHRpb25zO1xuICAvKiBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkICovXG4gIHNlcnZlckNsb3NlQ29tcGxldGU6ID8oKSA9PiB2b2lkO1xuICAvKiBPcHRpb25zIHRvIGxpbWl0IHRoZSBjb21wbGV4aXR5IG9mIHJlcXVlc3RzIHRvIHByZXZlbnQgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrcy4gTGltaXRzIGFyZSBlbmZvcmNlZCBmb3IgYWxsIHJlcXVlc3RzIGV4Y2VwdCB0aG9zZSB1c2luZyB0aGUgbWFzdGVyIG9yIG1haW50ZW5hbmNlIGtleS4gRWFjaCBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGAtMWAgdG8gZGlzYWJsZSB0aGF0IHNwZWNpZmljIGxpbWl0LlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVRVUVTVF9DT01QTEVYSVRZXG4gIDpERUZBVUxUOiB7fSAqL1xuICByZXF1ZXN0Q29tcGxleGl0eTogP1JlcXVlc3RDb21wbGV4aXR5T3B0aW9ucztcbiAgLyogT3B0aW9ucyBjb250cm9sbGluZyBob3cgUGFyc2UgU2VydmVyIGRlZHVwbGljYXRlcyBgX0luc3RhbGxhdGlvbmAgcmVjb3JkcyB0aGF0IHNoYXJlIHRoZSBzYW1lIGBkZXZpY2VUb2tlbmAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9JTlNUQUxMQVRJT05cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGluc3RhbGxhdGlvbjogP0luc3RhbGxhdGlvbk9wdGlvbnM7XG4gIC8qIFF1ZXJ5LXJlbGF0ZWQgc2VydmVyIGRlZmF1bHRzLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUVVFUllcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHF1ZXJ5OiA/UXVlcnlTZXJ2ZXJPcHRpb25zO1xuICAvKiBUaGUgc2VjdXJpdHkgb3B0aW9ucyB0byBpZGVudGlmeSBhbmQgcmVwb3J0IHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBzZWN1cml0eTogP1NlY3VyaXR5T3B0aW9ucztcbiAgLyogU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5mb3JjZVByaXZhdGVVc2VyczogP2Jvb2xlYW47XG4gIC8qIERlcHJlY2F0ZWQuIFRoaXMgb3B0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBBdXRoIHByb3ZpZGVycyBhcmUgYWx3YXlzIHZhbGlkYXRlZCBvbiBsb2dpbi4gT24gdXBkYXRlLCBpZiB0aGlzIGlzIHNldCB0byBgdHJ1ZWAsIGF1dGggcHJvdmlkZXJzIGFyZSBvbmx5IHJlLXZhbGlkYXRlZCB3aGVuIHRoZSBhdXRoIGRhdGEgaGFzIGNoYW5nZWQuIElmIHRoaXMgaXMgc2V0IHRvIGBmYWxzZWAsIGF1dGggcHJvdmlkZXJzIGFyZSByZS12YWxpZGF0ZWQgb24gZXZlcnkgdXBkYXRlLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dFeHBpcmVkQXV0aERhdGFUb2tlbjogP2Jvb2xlYW47XG4gIC8qIEFuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy5cbiAgOkRFRkFVTFQ6IFt7XCJrZXlcIjpcIl9ic29udHlwZVwiLFwidmFsdWVcIjpcIkNvZGVcIn0se1wia2V5XCI6XCJjb25zdHJ1Y3RvclwifSx7XCJrZXlcIjpcIl9fcHJvdG9fX1wifV0gKi9cbiAgcmVxdWVzdEtleXdvcmREZW55bGlzdDogPyhSZXF1ZXN0S2V5d29yZERlbnlsaXN0W10pO1xuICAvKiBPcHRpb25zIHRvIGxpbWl0IHJlcGVhdGVkIHJlcXVlc3RzIHRvIFBhcnNlIFNlcnZlciBBUElzLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHByb3RlY3Qgc2Vuc2l0aXZlIGVuZHBvaW50cyBzdWNoIGFzIGAvcmVxdWVzdFBhc3N3b3JkUmVzZXRgIGZyb20gYnJ1dGUtZm9yY2UgYXR0YWNrcyBvciBQYXJzZSBTZXJ2ZXIgYXMgYSB3aG9sZSBmcm9tIGRlbmlhbC1vZi1zZXJ2aWNlIChEb1MpIGF0dGFja3MuPGJyPjxicj7ihLnvuI8gTWluZCB0aGUgZm9sbG93aW5nIGxpbWl0YXRpb25zOjxicj4tIHJhdGUgbGltaXRzIGFwcGxpZWQgcGVyIElQIGFkZHJlc3M7IHRoaXMgbGltaXRzIHByb3RlY3Rpb24gYWdhaW5zdCBkaXN0cmlidXRlZCBkZW5pYWwtb2Ytc2VydmljZSAoRERvUykgYXR0YWNrcyB3aGVyZSBtYW55IHJlcXVlc3RzIGFyZSBjb21pbmcgZnJvbSB2YXJpb3VzIElQIGFkZHJlc3Nlczxicj4tIGlmIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgYXJlIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgb3IgcmFuIGluIGEgY2x1c3RlciwgZWFjaCBpbnN0YW5jZSB3aWxsIGNhbGN1bGF0ZSBpdCdzIG93biByZXF1ZXN0IHJhdGVzLCBpbmRlcGVuZGVudCBmcm9tIG90aGVyIGluc3RhbmNlczsgdGhpcyBsaW1pdHMgdGhlIGFwcGxpY2FiaWxpdHkgb2YgdGhpcyBmZWF0dXJlIHdoZW4gdXNpbmcgYSBsb2FkIGJhbGFuY2VyIGFuZCBhbm90aGVyIHJhdGUgbGltaXRpbmcgc29sdXRpb24gdGhhdCB0YWtlcyByZXF1ZXN0cyBhY3Jvc3MgYWxsIGluc3RhbmNlcyBpbnRvIGFjY291bnQgbWF5IGJlIG1vcmUgc3VpdGFibGU8YnI+LSB0aGlzIGZlYXR1cmUgcHJvdmlkZXMgYmFzaWMgcHJvdGVjdGlvbiBhZ2FpbnN0IGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3MsIGJ1dCBhIG1vcmUgc29waGlzdGljYXRlZCBzb2x1dGlvbiB3b3JrcyBlYXJsaWVyIGluIHRoZSByZXF1ZXN0IGZsb3cgYW5kIHByZXZlbnRzIGEgbWFsaWNpb3VzIHJlcXVlc3RzIHRvIGV2ZW4gcmVhY2ggYSBzZXJ2ZXIgaW5zdGFuY2U7IGl0J3MgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGltcGxlbWVudCBhIHNvbHV0aW9uIGFjY29yZGluZyB0byBhcmNoaXRlY3R1cmUgYW5kIHVzZSBjYXNlLjxicj4tIHJhdGUgbGltaXRzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIFJFU1QgQVBJIFVSTCBwYXRoIChgcmVxdWVzdFBhdGhgKSBhbmQgdGhlcmVmb3JlIGFwcGx5IHRvIFJFU1QgQVBJIHJvdXRlcyBvbmx5OyB0aGV5IGRvIG5vdCBhcHBseSB0byBHcmFwaFFMIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBhbGwgc2VydmVkIHVuZGVyIHRoZSBzaW5nbGUgR3JhcGhRTCBlbmRwb2ludCBwYXRoIChgZ3JhcGhRTFBhdGhgLCBkZWZhdWx0IGAvZ3JhcGhxbGApIGFuZCBhcmUgaWRlbnRpZmllZCBieSB0aGUgcmVxdWVzdCBwYXlsb2FkIHJhdGhlciB0aGFuIHRoZSBVUkwuIFRvIHJhdGUgbGltaXQgR3JhcGhRTCwgZWl0aGVyIHNldCBhIGByZXF1ZXN0UGF0aGAgZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50IHBhdGggdG8gdGhyb3R0bGUgdGhlIGVudGlyZSBHcmFwaFFMIEFQSSwgb3IgdXNlIGEgR3JhcGhRTC1hd2FyZSByYXRlIGxpbWl0aW5nIHNvbHV0aW9uIChmb3IgZXhhbXBsZSBhIHNjaGVtYS1kaXJlY3RpdmUtYmFzZWQgcmF0ZSBsaW1pdGVyKSBmb3IgcGVyLW9wZXJhdGlvbiBsaW1pdHMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICByYXRlTGltaXQ6ID8oUmF0ZUxpbWl0T3B0aW9uc1tdKTtcbiAgLyogT3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHJlcXVlc3QgY29udGV4dCB1c2luZyBpbnZlcnNpb24gb2YgY29udHJvbC9kZXBlbmRlbmN5IGluamVjdGlvbi4qL1xuICByZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmU6ID8ocmVxOiBhbnksIHJlczogYW55LCBuZXh0OiBhbnkpID0+IHZvaWQ7XG4gIC8qIElmIHNldCB0byBgdHJ1ZWAsIGVycm9yIGRldGFpbHMgYXJlIHJlbW92ZWQgZnJvbSBlcnJvciBtZXNzYWdlcyBpbiByZXNwb25zZXMgdG8gY2xpZW50IHJlcXVlc3RzLCBhbmQgaW5zdGVhZCBhIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSBpcyBzZW50LiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlU2FuaXRpemVkRXJyb3JSZXNwb25zZTogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0T3B0aW9ucyB7XG4gIC8qIFRoZSBwYXRoIG9mIHRoZSBBUEkgcm91dGUgdG8gYmUgcmF0ZSBsaW1pdGVkLiBSb3V0ZSBwYXRocywgaW4gY29tYmluYXRpb24gd2l0aCBhIHJlcXVlc3QgbWV0aG9kLCBkZWZpbmUgdGhlIGVuZHBvaW50cyBhdCB3aGljaCByZXF1ZXN0cyBjYW4gYmUgbWFkZS4gUm91dGUgcGF0aHMgY2FuIGJlIHN0cmluZ3Mgb3Igc3RyaW5nIHBhdHRlcm5zIGZvbGxvd2luZyA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL3BpbGxhcmpzL3BhdGgtdG8tcmVnZXhwXCI+cGF0aC10by1yZWdleHAgdjg8L2E+IHN5bnRheC4gKi9cbiAgcmVxdWVzdFBhdGg6IHN0cmluZztcbiAgLyogVGhlIHdpbmRvdyBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB3aXRoaW4gd2hpY2ggdGhlIG51bWJlciBvZiByZXF1ZXN0cyBzZXQgaW4gYHJlcXVlc3RDb3VudGAgY2FuIGJlIG1hZGUgYmVmb3JlIHRoZSByYXRlIGxpbWl0IGlzIGFwcGxpZWQuICovXG4gIHJlcXVlc3RUaW1lV2luZG93OiA/bnVtYmVyO1xuICAvKiBUaGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgY2FuIGJlIG1hZGUgcGVyIElQIGFkZHJlc3Mgd2l0aGluIHRoZSB0aW1lIHdpbmRvdyBzZXQgaW4gYHJlcXVlc3RUaW1lV2luZG93YCBiZWZvcmUgdGhlIHJhdGUgbGltaXQgaXMgYXBwbGllZC4gRm9yIGJhdGNoIHJlcXVlc3RzLCB0aGlzIGFsc28gbGltaXRzIHRoZSBudW1iZXIgb2Ygc3ViLXJlcXVlc3RzIGluIGEgc2luZ2xlIGJhdGNoIHRoYXQgdGFyZ2V0IHRoaXMgcGF0aDsgaG93ZXZlciwgcmVxdWVzdHMgYWxyZWFkeSBjb25zdW1lZCBpbiB0aGUgY3VycmVudCB0aW1lIHdpbmRvdyBhcmUgbm90IGNvdW50ZWQgYWdhaW5zdCB0aGUgYmF0Y2gsIHNvIHRoZSBlZmZlY3RpdmUgbGltaXQgbWF5IGJlIGhpZ2hlciB3aGVuIGNvbWJpbmluZyBpbmRpdmlkdWFsIGFuZCBiYXRjaCByZXF1ZXN0cy4gTm90ZSB0aGF0IHRoaXMgaXMgYSBiYXNpYyBzZXJ2ZXItbGV2ZWwgcmF0ZSBsaW1pdDsgZm9yIGNvbXByZWhlbnNpdmUgcHJvdGVjdGlvbiwgdXNlIGEgcmV2ZXJzZSBwcm94eSBvciBXQUYgZm9yIHJhdGUgbGltaXRpbmcuICovXG4gIHJlcXVlc3RDb3VudDogP251bWJlcjtcbiAgLyogVGhlIGVycm9yIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gdGhlIGJvZHkgb2YgdGhlIEhUVFAgNDI5IHJlc3BvbnNlIHdoZW4gdGhlIHJhdGUgbGltaXQgaXMgaGl0LiBEZWZhdWx0IGlzIGBUb28gbWFueSByZXF1ZXN0cy5gLlxuICA6REVGQVVMVDogVG9vIG1hbnkgcmVxdWVzdHMuICovXG4gIGVycm9yUmVzcG9uc2VNZXNzYWdlOiA/c3RyaW5nO1xuICAvKiBPcHRpb25hbCwgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2RzIHRvIHdoaWNoIHRoZSByYXRlIGxpbWl0IHNob3VsZCBiZSBhcHBsaWVkLCBkZWZhdWx0IGlzIGFsbCBtZXRob2RzLiBUaGUgbWV0aG9kIGlzIG1hdGNoZWQgYWZ0ZXIgYW55IGBfbWV0aG9kYCBib2R5IG92ZXJyaWRlIGhhcyBiZWVuIHJlc29sdmVkLCBpLmUuIGl0IGlzIHRoZSBtZXRob2QgdXNlZCB0byByb3V0ZSB0aGUgcmVxdWVzdC4gTm90ZSB0aGF0IHNvbWUgZW5kcG9pbnRzIGFyZSByZWFjaGFibGUgdmlhIG1vcmUgdGhhbiBvbmUgSFRUUCBtZXRob2QgKGZvciBleGFtcGxlIGAvbG9naW5gIGFuZCBgL3ZlcmlmeVBhc3N3b3JkYCBhcmUgYXZhaWxhYmxlIHZpYSBib3RoIGBHRVRgIGFuZCBgUE9TVGApOyB0byByYXRlIGxpbWl0IHN1Y2ggYW4gZW5kcG9pbnQgcmVsaWFibHksIGluY2x1ZGUgYWxsIHJlbGV2YW50IG1ldGhvZHMgKGUuZy4gYFsnR0VUJywgJ1BPU1QnXWApIG9yIG9taXQgdGhpcyBvcHRpb24gdG8gYXBwbHkgdGhlIGxpbWl0IHRvIGFsbCBtZXRob2RzLiAqL1xuICByZXF1ZXN0TWV0aG9kczogPyhzdHJpbmdbXSk7XG4gIC8qIE9wdGlvbmFsLCBpZiBgdHJ1ZWAgdGhlIHJhdGUgbGltaXQgd2lsbCBhbHNvIGFwcGx5IHRvIHJlcXVlc3RzIHVzaW5nIHRoZSBgbWFzdGVyS2V5YCwgZGVmYXVsdCBpcyBgZmFsc2VgLiBOb3RlIHRoYXQgYSBwdWJsaWMgQ2xvdWQgQ29kZSBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIGludGVybmFsIHJlcXVlc3RzIHVzaW5nIHRoZSBgbWFzdGVyS2V5YCBtYXkgY2lyY3VtdmVudCByYXRlIGxpbWl0aW5nIGFuZCBiZSB2dWxuZXJhYmxlIHRvIGF0dGFja3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpbmNsdWRlTWFzdGVyS2V5OiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwsIGlmIGB0cnVlYCB0aGUgcmF0ZSBsaW1pdCB3aWxsIGFsc28gYXBwbHkgdG8gcmVxdWVzdHMgdGhhdCBhcmUgbWFkZSBpbiBieSBDbG91ZCBDb2RlLCBkZWZhdWx0IGlzIGBmYWxzZWAuIE5vdGUgdGhhdCBhIHB1YmxpYyBDbG91ZCBDb2RlIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaW50ZXJuYWwgcmVxdWVzdHMgbWF5IGNpcmN1bXZlbnQgcmF0ZSBsaW1pdGluZyBhbmQgYmUgdnVsbmVyYWJsZSB0byBhdHRhY2tzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgaW5jbHVkZUludGVybmFsUmVxdWVzdHM6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbCwgdGhlIFVSTCBvZiB0aGUgUmVkaXMgc2VydmVyIHRvIHN0b3JlIHJhdGUgbGltaXQgZGF0YS4gVGhpcyBhbGxvd3MgdG8gcmF0ZSBsaW1pdCByZXF1ZXN0cyBmb3IgbXVsdGlwbGUgc2VydmVycyBieSBjYWxjdWxhdGluZyB0aGUgc3VtIG9mIGFsbCByZXF1ZXN0cyBhY3Jvc3MgYWxsIHNlcnZlcnMuIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlIHNlcnZlcnMgYXJlIHByb2Nlc3NpbmcgcmVxdWVzdHMgYmVoaW5kIGEgbG9hZCBiYWxhbmNlci4gRm9yIGV4YW1wbGUsIHRoZSBsaW1pdCBvZiAxMCByZXF1ZXN0cyBpcyByZWFjaGVkIGlmIGVhY2ggb2YgMiBzZXJ2ZXJzIHByb2Nlc3NlZCA1IHJlcXVlc3RzLlxuICAgKi9cbiAgcmVkaXNVcmw6ID9zdHJpbmc7XG4gIC8qIFRoZSB0eXBlIG9mIHJhdGUgbGltaXQgdG8gYXBwbHkuIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgPHVsPlxuICA8bGk+YGdsb2JhbGA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIG51bWJlciBvZiByZXF1ZXN0cyBtYWRlIGJ5IGFsbCB1c2VyczwvbGk+XG4gIDxsaT5gaXBgOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSByZXF1ZXN0PC9saT5cbiAgPGxpPmB1c2VyYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgdXNlciBJRCBvZiB0aGUgcmVxdWVzdDwvbGk+XG4gIDxsaT5gc2Vzc2lvbmA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIHNlc3Npb24gdG9rZW4gb2YgdGhlIHJlcXVlc3Q8L2xpPlxuICA8L3VsPlxuICBEZWZhdWx0IGlzIGBpcGAuXG4gIDpERUZBVUxUOiBpcCAqL1xuICB6b25lOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RDb21wbGV4aXR5T3B0aW9ucyB7XG4gIC8qIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGAkcmVnZXhgIHF1ZXJ5IG9wZXJhdG9yLiBTZXQgdG8gYGZhbHNlYCB0byByZWplY3QgYCRyZWdleGAgaW4gcXVlcmllcyBmb3Igbm9uLW1hc3Rlci1rZXkgdXNlcnMuIERlZmF1bHQgaXMgYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVRVUVTVF9DT01QTEVYSVRZX0FMTE9XX1JFR0VYXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGFsbG93UmVnZXg6ID9ib29sZWFuO1xuICAvKiBNYXhpbXVtIGRlcHRoIG9mIGluY2x1ZGUgcG9pbnRlciBjaGFpbnMgKGUuZy4gYGEuYi5jYCA9IGRlcHRoIDMpLiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBpbmNsdWRlRGVwdGg6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIGluY2x1ZGUgcGF0aHMgaW4gYSBzaW5nbGUgcXVlcnkuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIGluY2x1ZGVDb3VudDogP251bWJlcjtcbiAgLyogTWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIGAkaW5RdWVyeWAsIGAkbm90SW5RdWVyeWAsIGAkc2VsZWN0YCwgYCRkb250U2VsZWN0YCBzdWJxdWVyaWVzLiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBzdWJxdWVyeURlcHRoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHJldHVybmVkIGJ5IGEgYCRpblF1ZXJ5YCwgYCRub3RJblF1ZXJ5YCwgYCRzZWxlY3RgLCBgJGRvbnRTZWxlY3RgIHN1YnF1ZXJ5LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBzdWJxdWVyeUxpbWl0OiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG5lc3RpbmcgZGVwdGggb2YgYCRvcmAsIGAkYW5kYCwgYCRub3JgIHF1ZXJ5IG9wZXJhdG9ycy4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgcXVlcnlEZXB0aDogP251bWJlcjtcbiAgLyogTWF4aW11bSBkZXB0aCBvZiBHcmFwaFFMIGZpZWxkIHNlbGVjdGlvbnMuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFUVVFU1RfQ09NUExFWElUWV9HUkFQSFFMX0RFUFRIXG4gIDpERUZBVUxUOiAtMSAqL1xuICBncmFwaFFMRGVwdGg6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIGZpZWxkIHNlbGVjdGlvbnMgaW4gYSBHcmFwaFFMIHF1ZXJ5LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVFVRVNUX0NPTVBMRVhJVFlfR1JBUEhRTF9GSUVMRFNcbiAgOkRFRkFVTFQ6IC0xICovXG4gIGdyYXBoUUxGaWVsZHM6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIHN1Yi1yZXF1ZXN0cyBpbiBhIHNpbmdsZSBiYXRjaCByZXF1ZXN0LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBiYXRjaFJlcXVlc3RMaW1pdDogP251bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YWxsYXRpb25PcHRpb25zIHtcbiAgLyogV2hldGhlciB0aGUgYF9JbnN0YWxsYXRpb25gIGRlZHVwbGljYXRpb24gb3BlcmF0aW9uIGVuZm9yY2VzIHRoZSBjYWxsZXIncyBhdXRoIGNvbnRleHQgKGFuZCB0aGUgcmVzdWx0aW5nIEFDTCBhbmQgQ0xQKS4gV2hlbiBgdHJ1ZWAsIHRoZSBkZWR1cCBgZGVzdHJveWAvYHVwZGF0ZWAgcnVucyB3aXRoIHRoZSBjYWxsZXIncyBgcnVuT3B0aW9uc2AsIHNvIEFDTCBhbmQgQ0xQIGFyZSBob25vcmVkLiBXaGVuIGBmYWxzZWAsIHRoZSBkZWR1cCBydW5zIGFzIG1hc3RlciBhbmQgYnlwYXNzZXMgYm90aC4gTWFzdGVyIGFuZCBtYWludGVuYW5jZSBrZXlzIGFsd2F5cyBieXBhc3MgcmVnYXJkbGVzcyBvZiB0aGlzIGZsYWcuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGR1cGxpY2F0ZURldmljZVRva2VuQWN0aW9uRW5mb3JjZUF1dGg6ID9ib29sZWFuO1xuICAvKiBXaGF0IFBhcnNlIFNlcnZlciBkb2VzIHRvIHRoZSBjb25mbGljdGluZyBgX0luc3RhbGxhdGlvbmAgcm93KHMpIHdoZW4gYSBuZXcgaW5zdGFsbCdzIGBkZXZpY2VUb2tlbmAgY29sbGlkZXMgd2l0aCBhbiBleGlzdGluZyByb3cuIGAnZGVsZXRlJ2AgZGVzdHJveXMgdGhlIGNvbmZsaWN0aW5nIHJvdy4gYCd1cGRhdGUnYCBjbGVhcnMgdGhlIG5vdy1jb25mbGljdGluZyBJRCBmaWVsZCBvbiB0aGUgY29uZmxpY3Rpbmcgcm93LCBwcmVzZXJ2aW5nIGN1c3RvbSBmaWVsZHMsIGNoYW5uZWxzLCBhbmQgaGlzdG9yeS4gRGVmYXVsdCBpcyBgJ2RlbGV0ZSdgLlxuICA6REVGQVVMVDogZGVsZXRlICovXG4gIGR1cGxpY2F0ZURldmljZVRva2VuQWN0aW9uOiA/c3RyaW5nO1xuICAvKiBBdCB0aGUgbWVyZ2UgY2FzZSAod2hlbiBhbiBleGlzdGluZyByb3cgaG9sZHMgdGhlIG5ldyBgZGV2aWNlVG9rZW5gIGJ1dCBoYXMgbm8gYGluc3RhbGxhdGlvbklkYCBvZiBpdHMgb3duKSwgd2hpY2ggc2lkZSB3aW5zLiBgJ2RldmljZVRva2VuJ2Ag4oCUIHRoZSBkZXZpY2VUb2tlbi1vbmx5IHJvdyBzdXJ2aXZlcywgdGhlIHJlcXVlc3QncyBgaWRNYXRjaGAgcm93IGlzIHRoZSBsb3Nlci4gYCdpbnN0YWxsYXRpb25JZCdgIOKAlCB0aGUgcmVxdWVzdCdzIGBpZE1hdGNoYCAoYWN0aXZlIGluc3RhbGwpIHN1cnZpdmVzLCB0aGUgZGV2aWNlVG9rZW4tb25seSBvcnBoYW4gaXMgdGhlIGxvc2VyLiBEZWZhdWx0IGlzIGAnZGV2aWNlVG9rZW4nYC5cbiAgOkRFRkFVTFQ6IGRldmljZVRva2VuICovXG4gIGR1cGxpY2F0ZURldmljZVRva2VuTWVyZ2VQcmlvcml0eTogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eU9wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDaGVjazogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgdGhlIHNlY3VyaXR5IGNoZWNrIHJlcG9ydCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2dzLiBUaGlzIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgdGVtcG9yYXJpbHkgdG8gbm90IGV4cG9zZSB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzIGluIGxvZ3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDaGVja0xvZzogP2Jvb2xlYW47XG4gIC8qIFRoZSBzZWN1cml0eSBjaGVjayBncm91cHMgdG8gcnVuLiBUaGlzIGFsbG93cyB0byBhZGQgY3VzdG9tIHNlY3VyaXR5IGNoZWNrcyBvciBvdmVycmlkZSBleGlzdGluZyBvbmVzLiBEZWZhdWx0IGFyZSB0aGUgZ3JvdXBzIGRlZmluZWQgaW4gYENoZWNrR3JvdXBzLmpzYC4gKi9cbiAgY2hlY2tHcm91cHM6ID8oQ2hlY2tHcm91cFtdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVNlcnZlck9wdGlvbnMge1xuICAvKiBXaGVuIGB0cnVlYCwgYWxsIGFnZ3JlZ2F0aW9uIHF1ZXJpZXMgZGVmYXVsdCB0byB1c2luZyBNb25nb0RCIEV4dGVuZGVkIEpTT04gKEVKU09OKSBmb3IgZXhwbGljaXQgdmFsdWUgdHlwaW5nIGFuZCBza2lwIHNjaGVtYS1iYXNlZCB2YWx1ZSBjb2VyY2lvbi4gSW5kaXZpZHVhbCBxdWVyaWVzIGNhbiBzdGlsbCBvdmVycmlkZSB0aGlzIHZpYSB0aGUgYHJhd1ZhbHVlc2Agb3B0aW9uLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9RVUVSWV9BR0dSRUdBVElPTl9SQVdfVkFMVUVTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhZ2dyZWdhdGlvblJhd1ZhbHVlczogP2Jvb2xlYW47XG4gIC8qIFdoZW4gYHRydWVgLCBhbGwgYWdncmVnYXRpb24gcXVlcmllcyBkZWZhdWx0IHRvIHVzaW5nIG5hdGl2ZSBNb25nb0RCIGZpZWxkIG5hbWVzIChubyBhdXRvbWF0aWMgYGNyZWF0ZWRBdGAg4oaSIGBfY3JlYXRlZF9hdGAgcmV3cml0aW5nKS4gSW5kaXZpZHVhbCBxdWVyaWVzIGNhbiBzdGlsbCBvdmVycmlkZSB0aGlzIHZpYSB0aGUgYHJhd0ZpZWxkTmFtZXNgIG9wdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUVVFUllfQUdHUkVHQVRJT05fUkFXX0ZJRUxEX05BTUVTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhZ2dyZWdhdGlvblJhd0ZpZWxkTmFtZXM6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzT3B0aW9ucyB7XG4gIC8qIElzIHRydWUgaWYgcGFnZXMgc2hvdWxkIGJlIGxvY2FsaXplZDsgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIGN1c3RvbSBwYWdlIHJlZGlyZWN0cy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUxvY2FsaXphdGlvbjogP2Jvb2xlYW47XG4gIC8qIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUgZm9yIGxvY2FsaXphdGlvbjsgdGhlIHRyYW5zbGF0aW9ucyB3aWxsIGJlIHVzZWQgdG8gZmlsbCB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUuICovXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiA/c3RyaW5nO1xuICAvKiBUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS5cbiAgOkRFRkFVTFQ6IGVuICovXG4gIGxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBsYWNlaG9sZGVyczogP09iamVjdDtcbiAgLyogSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGZvcmNlUmVkaXJlY3Q6ID9ib29sZWFuO1xuICAvKiBUaGUgcGF0aCB0byB0aGUgcGFnZXMgZGlyZWN0b3J5OyB0aGlzIGFsc28gZGVmaW5lcyB3aGVyZSB0aGUgc3RhdGljIGVuZHBvaW50ICcvYXBwcycgcG9pbnRzIHRvLiBEZWZhdWx0IGlzIHRoZSAnLi9wdWJsaWMvJyBkaXJlY3Rvcnkgb2YgdGhlIHBhcnNlLXNlcnZlciBtb2R1bGUuICovXG4gIHBhZ2VzUGF0aDogP3N0cmluZztcbiAgLyogVGhlIEFQSSBlbmRwb2ludCBmb3IgdGhlIHBhZ2VzLiBEZWZhdWx0IGlzICdhcHBzJy5cbiAgOkRFRkFVTFQ6IGFwcHMgKi9cbiAgcGFnZXNFbmRwb2ludDogP3N0cmluZztcbiAgLyogVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGN1c3RvbVVybHM6ID9QYWdlc0N1c3RvbVVybHNPcHRpb25zO1xuICAvKiBUaGUgY3VzdG9tIHJvdXRlcy5cbiAgOkRFRkFVTFQ6IFtdICovXG4gIGN1c3RvbVJvdXRlczogPyhQYWdlc1JvdXRlW10pO1xuICAvKiBJcyBgdHJ1ZWAgaWYgdGhlIHBhZ2UgcGFyYW1ldGVyIGhlYWRlcnMgc2hvdWxkIGJlIFVSSS1lbmNvZGVkLiBUaGlzIGlzIHJlcXVpcmVkIGlmIGFueSBwYWdlIHBhcmFtZXRlciB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgc3VjaCBhcyB0aGUgYXBwIG5hbWUuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmNvZGVQYWdlUGFyYW1IZWFkZXJzOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc1JvdXRlIHtcbiAgLyogVGhlIHJvdXRlIHBhdGguICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyogVGhlIHJvdXRlIG1ldGhvZCwgZS5nLiAnR0VUJyBvciAnUE9TVCcuICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKiBUaGUgcm91dGUgaGFuZGxlciB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uLiAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzQ3VzdG9tVXJsc09wdGlvbnMge1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQuICovXG4gIHBhc3N3b3JkUmVzZXQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBsaW5rIGludmFsaWQuICovXG4gIHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IHN1Y2Nlc3MuICovXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHN1Y2Nlc3MuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIHNlbmQgZmFpbC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgaW52YWxpZC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25MaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGV4cGlyZWQuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQ6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUGFnZXNPcHRpb25zIHtcbiAgLyogaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkTGluazogP3N0cmluZztcbiAgLyogdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCAqL1xuICBsaW5rU2VuZEZhaWw6ID9zdHJpbmc7XG4gIC8qIGNob29zZSBwYXNzd29yZCBwYWdlIHBhdGggKi9cbiAgY2hvb3NlUGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgbGlua1NlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiB2ZXJpZnkgZW1haWwgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBwYXNzd29yZCByZXNldCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICBwYXNzd29yZFJlc2V0U3VjY2VzczogP3N0cmluZztcbiAgLyogaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZFZlcmlmaWNhdGlvbkxpbms6ID9zdHJpbmc7XG4gIC8qIGV4cGlyZWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoICovXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiA/c3RyaW5nO1xuICAvKiBpbnZhbGlkIHBhc3N3b3JkIHJlc2V0IGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazogP3N0cmluZztcbiAgLyogZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMgKi9cbiAgcGFyc2VGcmFtZVVSTDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlPcHRpb25zIHtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNsYXNzTmFtZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9DTEFTU05BTUVTICovXG4gIGNsYXNzTmFtZXM6ID8oc3RyaW5nW10pO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIFNldHMgdGhlIG1heGltdW0gZXhlY3V0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyBpbiBMaXZlUXVlcnkuIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBSZWd1bGFyIEV4cHJlc3Npb24gRGVuaWFsIG9mIFNlcnZpY2UgKFJlRG9TKSBhdHRhY2tzIHdoZXJlIGEgbWFsaWNpb3VzIHJlZ2V4IHBhdHRlcm4gY291bGQgYmxvY2sgdGhlIGV2ZW50IGxvb3AuIEEgcmVnZXggdGhhdCBleGNlZWRzIHRoZSB0aW1lb3V0IHdpbGwgYmUgdHJlYXRlZCBhcyBub24tbWF0Y2hpbmcuPGJyPjxicj5UaGUgcHJvdGVjdGlvbiBydW5zIGVhY2ggcmVnZXggZXZhbHVhdGlvbiBpbiBhbiBpc29sYXRlZCBWTSBjb250ZXh0IHdpdGggYSB0aW1lb3V0LiBUaGlzIGFkZHMgYXBwcm94aW1hdGVseSA1MCBtaWNyb3NlY29uZHMgb2Ygb3ZlcmhlYWQgcGVyIHJlZ2V4IGV2YWx1YXRpb24uIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGlzIGlzIG5lZ2xpZ2libGUsIGJ1dCBpdCBjYW4gYWRkIHVwIGlmIHlvdSBoYXZlIGEgdmVyeSBsYXJnZSBudW1iZXIgb2YgTGl2ZVF1ZXJ5IHN1YnNjcmlwdGlvbnMgdGhhdCB1c2UgYCRyZWdleGAgb24gdGhlIHNhbWUgY2xhc3MuIEZvciBleGFtcGxlLCAxMCwwMDAgY29uY3VycmVudCByZWdleCBzdWJzY3JpcHRpb25zIHdvdWxkIGFkZCBhcHByb3hpbWF0ZWx5IDUwMG1zIG9mIHByb2Nlc3NpbmcgdGltZSBwZXIgb2JqZWN0IHNhdmUgZXZlbnQgb24gdGhhdCBjbGFzcy48YnI+PGJyPlNldCB0byBgMGAgdG8gZGlzYWJsZSB0aGUgdGltZW91dCBhbmQgdXNlIG5hdGl2ZSByZWdleCBldmFsdWF0aW9uIHdpdGhvdXQgcHJvdGVjdGlvbi4gRGVmYXVsdHMgdG8gYDEwMGAuXG4gIDpERUZBVUxUOiAxMDAgKi9cbiAgcmVnZXhUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlciAqL1xuICB3c3NBZGFwdGVyOiA/QWRhcHRlcjxXU1NBZGFwdGVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIHtcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBhcHBJZCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIGFwcElkLiovXG4gIGFwcElkOiA/c3RyaW5nO1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIG1hc3RlcktleSBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIG1hc3RlcktleS4qL1xuICBtYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgc2VydmVyVVJMIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgc2VydmVyVVJMLiovXG4gIHNlcnZlclVSTDogP3N0cmluZztcbiAgLyogQSBKU09OIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhIHdoaXRlbGlzdCBvZiBrZXlzLiBJdCBpcyB1c2VkIGZvciB2YWxpZGF0aW5nIGNsaWVudHMgd2hlbiB0aGV5IHRyeSB0byBjb25uZWN0IHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLiovXG4gIGtleVBhaXJzOiA/YW55O1xuICAvKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gcGluZy9wb25nIGZyYW1lcy4gVGhlIFdlYlNvY2tldCBzZXJ2ZXIgc2VuZHMgcGluZy9wb25nIGZyYW1lcyB0byB0aGUgY2xpZW50cyB0byBrZWVwIHRoZSBXZWJTb2NrZXQgYWxpdmUuIFRoaXMgdmFsdWUgZGVmaW5lcyB0aGUgaW50ZXJ2YWwgb2YgdGhlIHBpbmcvcG9uZyBmcmFtZSBmcm9tIHRoZSBzZXJ2ZXIgdG8gY2xpZW50cywgZGVmYXVsdHMgdG8gMTAgKiAxMDAwIG1zICgxMCBzKS4qL1xuICB3ZWJzb2NrZXRUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuKi9cbiAgY2FjaGVUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBUaGlzIHN0cmluZyBkZWZpbmVzIHRoZSBsb2cgbGV2ZWwgb2YgdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIFdlIHN1cHBvcnQgVkVSQk9TRSwgSU5GTywgRVJST1IsIE5PTkUsIGRlZmF1bHRzIHRvIElORk8uKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBwb3J0IHRvIHJ1biB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAgOkRFRkFVTFQ6IDEzMzcgKi9cbiAgcG9ydDogP251bWJlcjtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9ucyAqL1xuICByZWRpc09wdGlvbnM6ID9hbnk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTCAqL1xuICByZWRpc1VSTDogP3N0cmluZztcbiAgLyogTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyICovXG4gIHB1YlN1YkFkYXB0ZXI6ID9BZGFwdGVyPFB1YlN1YkFkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlciAqL1xuICB3c3NBZGFwdGVyOiA/QWRhcHRlcjxXU1NBZGFwdGVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVtcG90ZW5jeU9wdGlvbnMge1xuICAvKiBBbiBhcnJheSBvZiBwYXRocyBmb3Igd2hpY2ggdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGVuYWJsZWQuIFRoZSBtb3VudCBwYXRoIG11c3Qgbm90IGJlIGluY2x1ZGVkLCBmb3IgZXhhbXBsZSBpbnN0ZWFkIG9mIGAvcGFyc2UvZnVuY3Rpb25zL215RnVuY3Rpb25gIHNwZWNpZml5IGBmdW5jdGlvbnMvbXlGdW5jdGlvbmAuIFRoZSBlbnRyaWVzIGFyZSBpbnRlcnByZXRlZCBhcyByZWd1bGFyIGV4cHJlc3Npb24sIGZvciBleGFtcGxlIGBmdW5jdGlvbnMvLipgIG1hdGNoZXMgYWxsIGZ1bmN0aW9ucywgYGpvYnMvLipgIG1hdGNoZXMgYWxsIGpvYnMsIGBjbGFzc2VzLy4qYCBtYXRjaGVzIGFsbCBjbGFzc2VzLCBgLipgIG1hdGNoZXMgYWxsIHBhdGhzLlxuICA6REVGQVVMVDogW10gKi9cbiAgcGF0aHM6ID8oc3RyaW5nW10pO1xuICAvKiBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBhZnRlciB3aGljaCBhIHJlcXVlc3QgcmVjb3JkIGlzIGRpc2NhcmRlZCBmcm9tIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gMzAwcy5cbiAgOkRFRkFVTFQ6IDMwMCAqL1xuICB0dGw6ID9udW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudExvY2tvdXRPcHRpb25zIHtcbiAgLyogU2V0IHRoZSBkdXJhdGlvbiBpbiBtaW51dGVzIHRoYXQgYSBsb2NrZWQtb3V0IGFjY291bnQgcmVtYWlucyBsb2NrZWQgb3V0IGJlZm9yZSBhdXRvbWF0aWNhbGx5IGJlY29taW5nIHVubG9ja2VkLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMDAwYC4gKi9cbiAgZHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIGZhaWxlZCBzaWduLWluIGF0dGVtcHRzIHRoYXQgd2lsbCBjYXVzZSBhIHVzZXIgYWNjb3VudCB0byBiZSBsb2NrZWQuIElmIHRoZSBhY2NvdW50IGlzIGxvY2tlZC4gVGhlIGFjY291bnQgd2lsbCB1bmxvY2sgYWZ0ZXIgdGhlIGR1cmF0aW9uIHNldCBpbiB0aGUgYGR1cmF0aW9uYCBvcHRpb24gaGFzIHBhc3NlZCBhbmQgbm8gZnVydGhlciBsb2dpbiBhdHRlbXB0cyBoYXZlIGJlZW4gbWFkZS5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLiAqL1xuICB0aHJlc2hvbGQ6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb25zIGBkdXJhdGlvbmAgYW5kIGB0aHJlc2hvbGRgIHRvIGJlIHNldC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHVubG9ja09uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc3dvcmRQb2xpY3lPcHRpb25zIHtcbiAgLyogU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC5cbiAgPGJyPjxicj5cbiAgSWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JDYWxsYmFja2AsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4gKi9cbiAgdmFsaWRhdG9yUGF0dGVybjogP3N0cmluZztcbiAgLyogICAqL1xuICAvKiBTZXQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHBhc3N3b3JkIHRvIGJlIGFjY2VwdGVkLlxuICA8YnI+PGJyPlxuICBJZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuICovXG4gIHZhbGlkYXRvckNhbGxiYWNrOiA/KCkgPT4gdm9pZDtcbiAgLyogU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYFBhc3N3b3JkIGRvZXMgbm90IG1lZXQgdGhlIFBhc3N3b3JkIFBvbGljeSByZXF1aXJlbWVudHMuYCAqL1xuICB2YWxpZGF0aW9uRXJyb3I6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWxsb3cgdGhlIHVzZXJuYW1lIGFzIHBhcnQgb2YgdGhlIHBhc3N3b3JkLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkb05vdEFsbG93VXNlcm5hbWU6ID9ib29sZWFuO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uICovXG4gIG1heFBhc3N3b3JkQWdlOiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBwcmV2aW91cyBwYXNzd29yZCB0aGF0IHdpbGwgbm90IGJlIGFsbG93ZWQgdG8gYmUgc2V0IGFzIG5ldyBwYXNzd29yZC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgMGAsIG5vIHByZXZpb3VzIHBhc3N3b3JkcyB3aWxsIGJlIGNvbnNpZGVyZWQuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLlxuICA8YnI+XG4gIERlZmF1bHQgaXMgYDBgLlxuICAqL1xuICBtYXhQYXNzd29yZEhpc3Rvcnk6ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIHBhc3N3b3JkIHJlc2V0IHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy5cbiAgPGJyPjxicj5cbiAgRm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHVuZGVmaW5lZGAuXG4gICovXG4gIHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZXNldFRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHJlcXVlc3QgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIHNob3VsZCByZXR1cm4gYSBzdWNjZXNzIHJlc3BvbnNlIGV2ZW4gaWYgdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MgaXMgaW52YWxpZCwgb3IgYGZhbHNlYCBpZiB0aGUgcmVxdWVzdCBzaG91bGQgcmV0dXJuIGFuIGVycm9yIHJlc3BvbnNlIGlmIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGludmFsaWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICByZXNldFBhc3N3b3JkU3VjY2Vzc09uSW52YWxpZEVtYWlsOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkT3B0aW9ucyB7XG4gIC8qIFNldHMgdGhlIGFsbG93ZWQgZmlsZSBleHRlbnNpb25zIGZvciB1cGxvYWRpbmcgZmlsZXMuIFRoZSBleHRlbnNpb24gaXMgZGVmaW5lZCBhcyBhbiBhcnJheSBvZiBmaWxlIGV4dGVuc2lvbnMsIG9yIGEgcmVnZXggcGF0dGVybi48YnI+PGJyPkl0IGlzIHJlY29tbWVuZGVkIHRvIG9ubHkgYWxsb3cgdGhlIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IHlvdXIgYXBwIGFjdHVhbGx5IG5lZWRzLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGJsb2NraW5nIGRhbmdlcm91cyBleHRlbnNpb25zLiBUaGlzIGFsbG93bGlzdCBhcHByb2FjaCBpcyBtb3JlIHNlY3VyZSBiZWNhdXNlIG5ldyBkYW5nZXJvdXMgZmlsZSBleHRlbnNpb25zIG1heSBlbWVyZ2UgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIGRlZmF1bHQgYmxvY2tsaXN0Ljxicj48YnI+VGhlIGRlZmF1bHQgYmxvY2tzIHRoZSBtb3N0IGNvbW1vbiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBhcmUga25vd24gdG8gYmUgcmVuZGVyZWQgYXMgYWN0aXZlIGNvbnRlbnQgYnkgd2ViIGJyb3dzZXJzLCBzdWNoIGFzIEhUTUwsIFNWRywgYW5kIFhNTCBmaWxlcywgd2hpY2ggbWF5IGJlIHVzZWQgYnkgYW4gYXR0YWNrZXIgdG8gY29tcHJvbWlzZSB0aGUgc2Vzc2lvbiB0b2tlbiBvZiBhbm90aGVyIHVzZXIgdmlhIGFjY2Vzc2luZyB0aGUgYnJvd3NlcidzIGxvY2FsIHN0b3JhZ2UuIFRoZSBibG9ja2VkIGV4dGVuc2lvbnMgYXJlOiBgaHRtbGAsIGBodG1gLCBgc2h0bWxgLCBgeGh0bWxgLCBgeGh0bWwreG1sYCwgYHhodGAsIGBzdmdgLCBgc3ZnemAsIGBzdmcreG1sYCwgYHhtbGAsIGB4c2xgLCBgeHNsdGAsIGB4c2x0K3htbGAsIGB4c2RgLCBgcm5nYCwgYHJkZmAsIGByZGYreG1sYCwgYG93bGAsIGBtYXRobWxgLCBgbWF0aG1sK3htbGAuPGJyPjxicj5EZWZhdWx0cyB0byBgW1wiXig/IShbeFhzU10/W2hIXVt0VF1bbU1dW2xMXT8oXFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW2hIXVt0VF18W3NTXVt2Vl1bZ0ddKFt6Wl18XFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW21NXVtsTF18W3hYXVtzU11bbExdW3RUXT8oXFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW3NTXVtkRF18W3JSXVtuTl1bZ0ddfFtyUl1bZERdW2ZGXShcXFxcK1t4WF1bbU1dW2xMXSk/fFtvT11bd1ddW2xMXXxbbU1dW2FBXVt0VF1baEhdW21NXVtsTF0oXFxcXCtbeFhdW21NXVtsTF0pPykkKVwiXWAuXG4gIDpERUZBVUxUOiBbXCJeKD8hKFt4WHNTXT9baEhdW3RUXVttTV1bbExdPyhcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1baEhdW3RUXXxbc1NdW3ZWXVtnR10oW3paXXxcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1bbU1dW2xMXXxbeFhdW3NTXVtsTF1bdFRdPyhcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1bc1NdW2REXXxbclJdW25OXVtnR118W3JSXVtkRF1bZkZdKFxcXFwrW3hYXVttTV1bbExdKT98W29PXVt3V11bbExdfFttTV1bYUFdW3RUXVtoSF1bbU1dW2xMXShcXFxcK1t4WF1bbU1dW2xMXSk/KSQpXCJdICovXG4gIGZpbGVFeHRlbnNpb25zOiA/KHN0cmluZ1tdKTtcbiAgLyogIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUZvckFub255bW91c1VzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yUHVibGljOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgYWxsb3dlZCBob3N0bmFtZXMgZm9yIGZpbGUgVVJMcyByZWZlcmVuY2VkIGluIFBhcnNlIG9iamVjdHMuIFdoZW4gYSBGaWxlIG9iamVjdCBpbmNsdWRlcyBhIFVSTCwgaXRzIGhvc3RuYW1lIG11c3QgbWF0Y2ggb25lIG9mIHRoZXNlIGVudHJpZXMgdG8gYmUgYWNjZXB0ZWQuIFN1cHBvcnRzIGV4YWN0IGhvc3RuYW1lcyAoZS5nLiwgYCdjZG4uZXhhbXBsZS5jb20nYCkgYW5kIHdpbGRjYXJkIHN1YmRvbWFpbnMgKGUuZy4sIGAnKi5leGFtcGxlLmNvbSdgKS4gVXNlIGBbJyonXWAgdG8gYWxsb3cgYW55IGRvbWFpbi4gVXNlIGBbXWAgdG8gYmxvY2sgYWxsIGZpbGUgVVJMcyAob25seSBuYW1lLWJhc2VkIGZpbGVzIGFsbG93ZWQpLlxuICA6REVGQVVMVDogW1wiKlwiXSAqL1xuICBhbGxvd2VkRmlsZVVybERvbWFpbnM6ID8oc3RyaW5nW10pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVEb3dubG9hZE9wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgZG93bmxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSBkb3dubG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgZG93bmxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JQdWJsaWM6ID9ib29sZWFuO1xufVxuXG4vKiBUaGUgYXZhaWxhYmxlIGxvZyBsZXZlbHMgZm9yIFBhcnNlIFNlcnZlciBsb2dnaW5nLiBWYWxpZCB2YWx1ZXMgYXJlOjxicj4tIGAnZXJyb3InYCAtIEVycm9yIGxldmVsIChoaWdoZXN0IHByaW9yaXR5KTxicj4tIGAnd2FybidgIC0gV2FybmluZyBsZXZlbDxicj4tIGAnaW5mbydgIC0gSW5mbyBsZXZlbCAoZGVmYXVsdCk8YnI+LSBgJ3ZlcmJvc2UnYCAtIFZlcmJvc2UgbGV2ZWw8YnI+LSBgJ2RlYnVnJ2AgLSBEZWJ1ZyBsZXZlbDxicj4tIGAnc2lsbHknYCAtIFNpbGx5IGxldmVsIChsb3dlc3QgcHJpb3JpdHkpICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0xldmVsIHtcbiAgLyogRXJyb3IgbGV2ZWwgLSBoaWdoZXN0IHByaW9yaXR5ICovXG4gIGVycm9yOiAnZXJyb3InO1xuICAvKiBXYXJuaW5nIGxldmVsICovXG4gIHdhcm46ICd3YXJuJztcbiAgLyogSW5mbyBsZXZlbCAtIGRlZmF1bHQgKi9cbiAgaW5mbzogJ2luZm8nO1xuICAvKiBWZXJib3NlIGxldmVsICovXG4gIHZlcmJvc2U6ICd2ZXJib3NlJztcbiAgLyogRGVidWcgbGV2ZWwgKi9cbiAgZGVidWc6ICdkZWJ1Zyc7XG4gIC8qIFNpbGx5IGxldmVsIC0gbG93ZXN0IHByaW9yaXR5ICovXG4gIHNpbGx5OiAnc2lsbHknO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0NsaWVudEV2ZW50IHtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIGV2ZW50IG5hbWUgdG8gbGlzdGVuIGZvci4gU2VlIHRoZSBbTW9uZ29EQiBkcml2ZXIgZXZlbnRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tL2RvY3MvZHJpdmVycy9ub2RlL2N1cnJlbnQvZnVuZGFtZW50YWxzL21vbml0b3JpbmcvKSBmb3IgYXZhaWxhYmxlIGV2ZW50cy4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiBPcHRpb25hbCBhcnJheSBvZiBkb3Qtbm90YXRpb24gcGF0aHMgdG8gZXh0cmFjdCBzcGVjaWZpYyBkYXRhIGZyb20gdGhlIGV2ZW50IG9iamVjdC4gSWYgbm90IHByb3ZpZGVkIG9yIGVtcHR5LCB0aGUgZW50aXJlIGV2ZW50IG9iamVjdCB3aWxsIGJlIGxvZ2dlZC4gKi9cbiAga2V5czogPyhzdHJpbmdbXSk7XG4gIC8qIFRoZSBsb2cgbGV2ZWwgdG8gdXNlIGZvciB0aGlzIGV2ZW50LiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy4gRGVmYXVsdHMgdG8gYCdpbmZvJ2AuXG4gIDpERUZBVUxUOiBpbmZvICovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9ucyB7XG4gIC8qIEVuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZVNjaGVtYUhvb2tzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHNjaGVtYSBjYWNoZSBleHBpcmVzIGFuZCB3aWxsIGJlIHJlZmV0Y2hlZCBmcm9tIHRoZSBkYXRhYmFzZS4gVXNlIHRoaXMgb3B0aW9uIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gQSBsb3cgZHVyYXRpb24gd2lsbCBjYXVzZSB0aGUgc2NoZW1hIGNhY2hlIHRvIGJlIHVwZGF0ZWQgdG9vIG9mdGVuLCBjYXVzaW5nIHVubmVjZXNzYXJ5IGRhdGFiYXNlIHJlYWRzLiBBIGhpZ2ggZHVyYXRpb24gd2lsbCBjYXVzZSB0aGUgc2NoZW1hIHRvIGJlIHVwZGF0ZWQgdG9vIHJhcmVseSwgaW5jcmVhc2luZyB0aGUgdGltZSByZXF1aXJlZCB1bnRpbCBzY2hlbWEgY2hhbmdlcyBwcm9wYWdhdGUgdG8gYWxsIHNlcnZlciBpbnN0YW5jZXMuIFRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBvciBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvcHRpb24gYGVuYWJsZVNjaGVtYUhvb2tzYC4gRGVmYXVsdCBpcyBpbmZpbml0ZSB3aGljaCBtZWFucyB0aGUgc2NoZW1hIGNhY2hlIG5ldmVyIGV4cGlyZXMuICovXG4gIHNjaGVtYUNhY2hlVHRsOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB3aGV0aGVyIHRvIHJldHJ5IGZhaWxlZCB3cml0ZXMuICovXG4gIHJldHJ5V3JpdGVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIG51bWJlciBvZiBkb2N1bWVudHMgcGVyIGJhdGNoIGZvciBNb25nb0RCIGN1cnNvciBgZ2V0TW9yZWAgb3BlcmF0aW9ucy4gQSBsb3dlciB2YWx1ZSByZWR1Y2VzIG1lbW9yeSB1c2FnZSBwZXIgYmF0Y2g7IGEgaGlnaGVyIHZhbHVlIHJlZHVjZXMgdGhlIG51bWJlciBvZiBuZXR3b3JrIHJvdW5kLXRyaXBzLlxuICA6REVGQVVMVDogMTAwMCAqL1xuICBiYXRjaFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IGEgY3VtdWxhdGl2ZSB0aW1lIGxpbWl0IGluIG1pbGxpc2Vjb25kcyBmb3IgcHJvY2Vzc2luZyBvcGVyYXRpb25zIG9uIGEgY3Vyc29yLiAqL1xuICBtYXhUaW1lTVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHRoZSBtYXhpbXVtIHJlcGxpY2F0aW9uIGxhZyBmb3IgcmVhZHMgZnJvbSBzZWNvbmRhcnkgbm9kZXMuKi9cbiAgbWF4U3RhbGVuZXNzU2Vjb25kczogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9wZW5lZCwgY2FjaGVkLCByZWFkeS10by11c2UgZGF0YWJhc2UgY29ubmVjdGlvbnMgbWFpbnRhaW5lZCBieSB0aGUgZHJpdmVyLiAqL1xuICBtaW5Qb29sU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW5lZCwgY2FjaGVkLCByZWFkeS10by11c2UgZGF0YWJhc2UgY29ubmVjdGlvbnMgbWFpbnRhaW5lZCBieSB0aGUgZHJpdmVyLiAqL1xuICBtYXhQb29sU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIGEgc2VydmVyIHRvIGJlIGNvbnNpZGVyZWQgc3VpdGFibGUgZm9yIHNlbGVjdGlvbi4gKi9cbiAgc2VydmVyU2VsZWN0aW9uVGltZW91dE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IGEgY29ubmVjdGlvbiBjYW4gcmVtYWluIGlkbGUgaW4gdGhlIGNvbm5lY3Rpb24gcG9vbCBiZWZvcmUgYmVpbmcgcmVtb3ZlZCBhbmQgY2xvc2VkLiAqL1xuICBtYXhJZGxlVGltZU1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGZyZXF1ZW5jeSBpbiBtaWxsaXNlY29uZHMgYXQgd2hpY2ggdGhlIGRyaXZlciBjaGVja3MgdGhlIHN0YXRlIG9mIHRoZSBNb25nb0RCIGRlcGxveW1lbnQuICovXG4gIGhlYXJ0YmVhdEZyZXF1ZW5jeU1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgdG8gZXN0YWJsaXNoIGEgc2luZ2xlIFRDUCBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGJlZm9yZSByYWlzaW5nIGFuIGVycm9yLiBTcGVjaWZ5aW5nIDAgZGlzYWJsZXMgdGhlIGNvbm5lY3Rpb24gdGltZW91dC4gKi9cbiAgY29ubmVjdFRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCBzcGVudCBhdHRlbXB0aW5nIHRvIHNlbmQgb3IgcmVjZWl2ZSBvbiBhIHNvY2tldCBiZWZvcmUgdGltaW5nIG91dC4gU3BlY2lmeWluZyAwIG1lYW5zIG5vIHRpbWVvdXQuICovXG4gIHNvY2tldFRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgd2hldGhlciB0aGUgc29ja2V0IGF0dGVtcHRzIHRvIGNvbm5lY3QgdG8gSVB2NiBhbmQgSVB2NCBhZGRyZXNzZXMgdW50aWwgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLiBJZiBhdmFpbGFibGUsIHRoZSBkcml2ZXIgd2lsbCBzZWxlY3QgdGhlIGZpcnN0IElQdjYgYWRkcmVzcy4gKi9cbiAgYXV0b1NlbGVjdEZhbWlseTogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGEgY29ubmVjdGlvbiBhdHRlbXB0IHRvIGZpbmlzaCBiZWZvcmUgdHJ5aW5nIHRoZSBuZXh0IGFkZHJlc3Mgd2hlbiB1c2luZyB0aGUgYXV0b1NlbGVjdEZhbWlseSBvcHRpb24uIElmIHNldCB0byBhIHBvc2l0aXZlIGludGVnZXIgbGVzcyB0aGFuIDEwLCB0aGUgdmFsdWUgMTAgaXMgdXNlZCBpbnN0ZWFkLiAqL1xuICBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdGhhdCBtYXkgYmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZXN0YWJsaXNoZWQgY29uY3VycmVudGx5IGJ5IHRoZSBjb25uZWN0aW9uIHBvb2wuICovXG4gIG1heENvbm5lY3Rpbmc6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IGEgdGhyZWFkIGNhbiB3YWl0IGZvciBhIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZS4gKi9cbiAgd2FpdFF1ZXVlVGltZW91dE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHJlcGxpY2Egc2V0LCBpZiB0aGUgbW9uZ29kIGlzIGEgbWVtYmVyIG9mIGEgcmVwbGljYSBzZXQuICovXG4gIHJlcGxpY2FTZXQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZm9yY2UgYSBTaW5nbGUgdG9wb2xvZ3kgdHlwZSB3aXRoIGEgY29ubmVjdGlvbiBzdHJpbmcgY29udGFpbmluZyBvbmUgaG9zdC4gKi9cbiAgZGlyZWN0Q29ubmVjdGlvbjogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gaW5zdHJ1Y3QgdGhlIGRyaXZlciBpdCBpcyBjb25uZWN0aW5nIHRvIGEgbG9hZCBiYWxhbmNlciBmcm9udGluZyBhIG1vbmdvcyBsaWtlIHNlcnZpY2UuICovXG4gIGxvYWRCYWxhbmNlZDogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgc2l6ZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiB0aGUgbGF0ZW5jeSB3aW5kb3cgZm9yIHNlbGVjdGluZyBhbW9uZyBtdWx0aXBsZSBzdWl0YWJsZSBNb25nb0RCIGluc3RhbmNlcy4gKi9cbiAgbG9jYWxUaHJlc2hvbGRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBob3N0cyB0byBjb25uZWN0IHRvIHdoZW4gdXNpbmcgYW4gc3J2IGNvbm5lY3Rpb24gc3RyaW5nLCBhIHNldHRpbmcgb2YgMCBtZWFucyB1bmxpbWl0ZWQgaG9zdHMuICovXG4gIHNydk1heEhvc3RzOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIG1vZGlmeSB0aGUgc3J2IFVSSSBzZXJ2aWNlIG5hbWUuICovXG4gIHNydlNlcnZpY2VOYW1lOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIFRMUy9TU0wgZm9yIHRoZSBjb25uZWN0aW9uLiAqL1xuICB0bHM6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIFRMUy9TU0wgZm9yIHRoZSBjb25uZWN0aW9uIChlcXVpdmFsZW50IHRvIHRscyBvcHRpb24pLiAqL1xuICBzc2w6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIGEgbG9jYWwgLnBlbSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGNsaWVudCdzIFRMUy9TU0wgY2VydGlmaWNhdGUgYW5kIGtleS4gKi9cbiAgdGxzQ2VydGlmaWNhdGVLZXlGaWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgdGhlIHRsc0NlcnRpZmljYXRlS2V5RmlsZS4gKi9cbiAgdGxzQ2VydGlmaWNhdGVLZXlGaWxlUGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgYSBsb2NhbCAucGVtIGZpbGUgdGhhdCBjb250YWlucyB0aGUgcm9vdCBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tIHRoZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkuICovXG4gIHRsc0NBRmlsZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBieXBhc3MgdmFsaWRhdGlvbiBvZiB0aGUgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSB0aGUgbW9uZ29kL21vbmdvcyBpbnN0YW5jZS4gKi9cbiAgdGxzQWxsb3dJbnZhbGlkQ2VydGlmaWNhdGVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBkaXNhYmxlIGhvc3RuYW1lIHZhbGlkYXRpb24gb2YgdGhlIGNlcnRpZmljYXRlIHByZXNlbnRlZCBieSB0aGUgbW9uZ29kL21vbmdvcyBpbnN0YW5jZS4gKi9cbiAgdGxzQWxsb3dJbnZhbGlkSG9zdG5hbWVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBkaXNhYmxlIHZhcmlvdXMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbnMuICovXG4gIHRsc0luc2VjdXJlOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IGFuIGFycmF5IG9yIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgb2YgY29tcHJlc3NvcnMgdG8gZW5hYmxlIG5ldHdvcmsgY29tcHJlc3Npb24gZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGlzIGNsaWVudCBhbmQgYSBtb25nb2QvbW9uZ29zIGluc3RhbmNlLiAqL1xuICBjb21wcmVzc29yczogPyhzdHJpbmdbXSB8IHN0cmluZyk7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaWYgdXNpbmcgemxpYiBmb3IgbmV0d29yayBjb21wcmVzc2lvbiAoMC05KS4gKi9cbiAgemxpYkNvbXByZXNzaW9uTGV2ZWw6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgcmVhZCBwcmVmZXJlbmNlcyBmb3IgdGhpcyBjb25uZWN0aW9uLiAqL1xuICByZWFkUHJlZmVyZW5jZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSB0YWdzIGRvY3VtZW50IGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29sb24tc2VwYXJhdGVkIGtleS12YWx1ZSBwYWlycy4gKi9cbiAgcmVhZFByZWZlcmVuY2VUYWdzOiA/KGFueVtdKTtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsZXZlbCBvZiBpc29sYXRpb24uICovXG4gIHJlYWRDb25jZXJuTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgZGF0YWJhc2UgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIncyBjcmVkZW50aWFscy4gKi9cbiAgYXV0aFNvdXJjZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gdGhhdCBNb25nb0RCIHdpbGwgdXNlIHRvIGF1dGhlbnRpY2F0ZSB0aGUgY29ubmVjdGlvbi4gKi9cbiAgYXV0aE1lY2hhbmlzbTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHByb3BlcnRpZXMgZm9yIHRoZSBzcGVjaWZpZWQgYXV0aE1lY2hhbmlzbSBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbG9uLXNlcGFyYXRlZCBrZXktdmFsdWUgcGFpcnMuICovXG4gIGF1dGhNZWNoYW5pc21Qcm9wZXJ0aWVzOiA/YW55O1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHRoYXQgY3JlYXRlZCB0aGlzIE1vbmdvQ2xpZW50IGluc3RhbmNlLiAqL1xuICBhcHBOYW1lOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGVuYWJsZSByZXRyeWFibGUgcmVhZHMuICovXG4gIHJldHJ5UmVhZHM6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGZvcmNlIHNlcnZlciB0byBhc3NpZ24gX2lkIHZhbHVlcyBpbnN0ZWFkIG9mIGRyaXZlci4gKi9cbiAgZm9yY2VTZXJ2ZXJPYmplY3RJZDogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gaW5zdHJ1Y3QgdGhlIGRyaXZlciBtb25pdG9ycyB0byB1c2UgYSBzcGVjaWZpYyBtb25pdG9yaW5nIG1vZGUuICovXG4gIHNlcnZlck1vbml0b3JpbmdNb2RlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSBob3N0IHVzZWQgZm9yIGNyZWF0aW5nIFRDUCBjb25uZWN0aW9ucy4gKi9cbiAgcHJveHlIb3N0OiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSBwb3J0IHVzZWQgZm9yIGNyZWF0aW5nIFRDUCBjb25uZWN0aW9ucy4gKi9cbiAgcHJveHlQb3J0OiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSB1c2VybmFtZSB3aGVuIHRoZSBwcm94eSByZXF1aXJlcyB1c2VybmFtZS9wYXNzd29yZCBhdXRoZW50aWNhdGlvbi4gKi9cbiAgcHJveHlVc2VybmFtZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBjb25maWd1cmUgYSBTb2NrczUgcHJveHkgcGFzc3dvcmQgd2hlbiB0aGUgcHJveHkgcmVxdWlyZXMgdXNlcm5hbWUvcGFzc3dvcmQgYXV0aGVudGljYXRpb24uICovXG4gIHByb3h5UGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgaW5kZXhlcyBvbiB0aGUgZW1haWwgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9uIHRoZSBlbWFpbCBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsQ2FzZUluc2Vuc2l0aXZlOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbiBpbmRleCBvbiB0aGUgX2VtYWlsX3ZlcmlmeV90b2tlbiBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsVmVyaWZ5VG9rZW46ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGFuIGluZGV4IG9uIHRoZSBfcGVyaXNoYWJsZV90b2tlbiBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclBhc3N3b3JkUmVzZXRUb2tlbjogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgaW5kZXhlcyBvbiB0aGUgdXNlcm5hbWUgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJVc2VybmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9uIHRoZSB1c2VybmFtZSBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclVzZXJuYW1lQ2FzZUluc2Vuc2l0aXZlOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB1bmlxdWUgaW5kZXhlcyBvbiB0aGUgYXV0aERhdGEgZmllbGRzIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIGZvciBlYWNoIGNvbmZpZ3VyZWQgYXV0aCBwcm92aWRlciBvbiBzZXJ2ZXIgc3RhcnQsIGluY2x1ZGluZyBgYW5vbnltb3VzYCB3aGVuIGFub255bW91cyB1c2VycyBhcmUgZW5hYmxlZC4gVGhlc2UgaW5kZXhlcyBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgY29uY3VycmVudCBzaWdudXBzIHdpdGggdGhlIHNhbWUgYXV0aERhdGEuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXhlcywga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXhlcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleEF1dGhEYXRhVW5pcXVlbmVzczogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSB1bmlxdWUgaW5kZXggb24gdGhlIG5hbWUgZmllbGQgb2YgdGhlIF9Sb2xlIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFJvbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBkaXNhYmxlIHZhbGlkYXRpb24gb2YgaW5kZXggZmllbGRzLiBXaGVuIGRpc2FibGVkLCBpbmRleGVzIGNhbiBiZSBjcmVhdGVkIGV2ZW4gaWYgdGhlIGZpZWxkcyBkbyBub3QgZXhpc3QgaW4gdGhlIHNjaGVtYS4gVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY3JlYXRpbmcgaW5kZXhlcyBvbiBmaWVsZHMgdGhhdCB3aWxsIGJlIGFkZGVkIGxhdGVyLiAqL1xuICBkaXNhYmxlSW5kZXhGaWVsZFZhbGlkYXRpb246ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGFsbG93IGBQYXJzZS5RdWVyeS5leHBsYWluYCB3aXRob3V0IG1hc3RlciBrZXkuPGJyPjxicj7imqDvuI8gRW5hYmxpbmcgdGhpcyBvcHRpb24gbWF5IGV4cG9zZSBzZW5zaXRpdmUgcXVlcnkgcGVyZm9ybWFuY2UgZGF0YSB0byB1bmF1dGhvcml6ZWQgdXNlcnMgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIGV4cGxvaXRlZCBmb3IgbWFsaWNpb3VzIHB1cnBvc2VzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dQdWJsaWNFeHBsYWluOiA/Ym9vbGVhbjtcbiAgLyogQW4gYXJyYXkgb2YgTW9uZ29EQiBjbGllbnQgZXZlbnQgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlIGxvZ2dpbmcgb2Ygc3BlY2lmaWMgZXZlbnRzLiAqL1xuICBsb2dDbGllbnRFdmVudHM6ID8oTG9nQ2xpZW50RXZlbnRbXSk7XG4gIC8qIEN1c3RvbSBtZXRhZGF0YSB0byBhcHBlbmQgdG8gZGF0YWJhc2UgY2xpZW50IGNvbm5lY3Rpb25zIGZvciBpZGVudGlmeWluZyBQYXJzZSBTZXJ2ZXIgaW5zdGFuY2VzIGluIGRhdGFiYXNlIGxvZ3MuIElmIHNldCwgdGhpcyBtZXRhZGF0YSB3aWxsIGJlIHZpc2libGUgaW4gZGF0YWJhc2UgbG9ncyBkdXJpbmcgY29ubmVjdGlvbiBoYW5kc2hha2VzLiBUaGlzIGNhbiBoZWxwIHdpdGggZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nIGluIGRlcGxveW1lbnRzIHdpdGggbXVsdGlwbGUgZGF0YWJhc2UgY2xpZW50cy4gU2V0IGBuYW1lYCB0byBpZGVudGlmeSB5b3VyIGFwcGxpY2F0aW9uIChlLmcuLCAnTXlBcHAnKSBhbmQgYHZlcnNpb25gIHRvIHlvdXIgYXBwbGljYXRpb24ncyB2ZXJzaW9uLiBMZWF2ZSB1bmRlZmluZWQgKGRlZmF1bHQpIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlIGFuZCBhdm9pZCB0aGUgYWRkaXRpb25hbCBkYXRhIHRyYW5zZmVyIG92ZXJoZWFkLiAqL1xuICBjbGllbnRNZXRhZGF0YTogP0RhdGFiYXNlT3B0aW9uc0NsaWVudE1ldGFkYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9uc0NsaWVudE1ldGFkYXRhIHtcbiAgLyogVGhlIG5hbWUgdG8gaWRlbnRpZnkgeW91ciBhcHBsaWNhdGlvbiBpbiBkYXRhYmFzZSBsb2dzIChlLmcuLCAnTXlBcHAnKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiBUaGUgdmVyc2lvbiBvZiB5b3VyIGFwcGxpY2F0aW9uIChlLmcuLCAnMS4wLjAnKS4gKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhBZGFwdGVyIHtcbiAgLyogSXMgYHRydWVgIGlmIHRoZSBhdXRoIGFkYXB0ZXIgaXMgZW5hYmxlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gIDpERUZBVUxUOiBmYWxzZVxuICA6RU5WOlxuICAqL1xuICBlbmFibGVkOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dMZXZlbHMge1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBUcmlnZ2VycyBgYWZ0ZXJTYXZlYCwgYGFmdGVyRGVsZXRlYCwgYGFmdGVyRmluZGAsIGBhZnRlckxvZ291dGAuIERlZmF1bHQgaXMgYGluZm9gLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgdHJpZ2dlckFmdGVyOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBUcmlnZ2VycyBgYmVmb3JlU2F2ZWAsIGBiZWZvcmVEZWxldGVgLCBgYmVmb3JlRmluZGAsIGBiZWZvcmVMb2dpbmAgb24gc3VjY2Vzcy4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICB0cmlnZ2VyQmVmb3JlU3VjY2VzczogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIGVycm9yLiBEZWZhdWx0IGlzIGBlcnJvcmAuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogZXJyb3JcbiAgKi9cbiAgdHJpZ2dlckJlZm9yZUVycm9yOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBGdW5jdGlvbnMgb24gc3VjY2Vzcy4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICBjbG91ZEZ1bmN0aW9uU3VjY2VzczogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgRnVuY3Rpb25zIG9uIGVycm9yLiBEZWZhdWx0IGlzIGBlcnJvcmAuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogZXJyb3JcbiAgKi9cbiAgY2xvdWRGdW5jdGlvbkVycm9yOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCB3aGVuIGEgc2lnbi11cCBmYWlscyBiZWNhdXNlIHRoZSB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cy4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICBzaWdudXBVc2VybmFtZVRha2VuOiA/c3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUNBLElBQUFBLGlCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5hbHl0aWNzQWRhcHRlciIsInJlcXVpcmUiLCJfQ2FjaGVBZGFwdGVyIiwiX01haWxBZGFwdGVyIiwiX0ZpbGVzQWRhcHRlciIsIl9Mb2dnZXJBZGFwdGVyIiwiX1B1YlN1YkFkYXB0ZXIiLCJfU3RvcmFnZUFkYXB0ZXIiLCJfV1NTQWRhcHRlciIsIl9DaGVja0dyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL09wdGlvbnMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9DYWNoZUFkYXB0ZXInO1xuaW1wb3J0IHsgTWFpbEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9FbWFpbC9NYWlsQWRhcHRlcic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9Mb2dnZXJBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBTdG9yYWdlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IHsgV1NTQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1dlYlNvY2tldFNlcnZlci9XU1NBZGFwdGVyJztcbmltcG9ydCB7IENoZWNrR3JvdXAgfSBmcm9tICcuLi9TZWN1cml0eS9DaGVja0dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFPcHRpb25zIHtcbiAgLyogUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICA6REVGQVVMVDogW10gKi9cbiAgZGVmaW5pdGlvbnM6IGFueTtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgc3RyaWN0OiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkZWxldGVFeHRyYUZpZWxkczogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGxvY2tTY2hlbWFzOiA/Ym9vbGVhbjtcbiAgLyogKE9wdGlvbmFsKSBLZWVwIGluZGV4ZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UgYnV0IG5vdCBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UgYXJlIGFkZGluZyBpbmRleGVzIG1hbnVhbGx5LCBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgcmVtb3ZlZCB3aGVuIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAga2VlcFVua25vd25JbmRleGVzOiA/Ym9vbGVhbjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGJlZm9yZSBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLiAqL1xuICBiZWZvcmVNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGFmdGVyIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGFmdGVyTWlncmF0aW9uOiA/KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgQWRhcHRlcjxUPiA9IHN0cmluZyB8IGFueSB8IFQ7XG50eXBlIE51bWJlck9yQm9vbGVhbiA9IG51bWJlciB8IGJvb2xlYW47XG50eXBlIE51bWJlck9yU3RyaW5nID0gbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBQcm90ZWN0ZWRGaWVsZHMgPSBhbnk7XG50eXBlIFN0cmluZ09yU3RyaW5nQXJyYXkgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xudHlwZSBFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPSB7XG4gIG9yaWdpbmFsPzogYW55LFxuICBvYmplY3Q6IGFueSxcbiAgbWFzdGVyPzogYm9vbGVhbixcbiAgaXA/OiBzdHJpbmcsXG4gIGluc3RhbGxhdGlvbklkPzogc3RyaW5nLFxuICBjcmVhdGVkV2l0aD86IHtcbiAgICBhY3Rpb246ICdsb2dpbicgfCAnc2lnbnVwJyxcbiAgICBhdXRoUHJvdmlkZXI6IHN0cmluZyxcbiAgfSxcbiAgcmVzZW5kUmVxdWVzdD86IGJvb2xlYW4sXG59O1xudHlwZSBTZW5kRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0ge1xuICB1c2VyOiBhbnksXG4gIG1hc3Rlcj86IGJvb2xlYW4sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6ICgoKSA9PiB2b2lkKSB8IHN0cmluZztcbiAgLyogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgYG1hc3RlcktleWAgaXMgYmVpbmcgdXNlZCBiZWZvcmUgaXQgaXMgcmVxdWVzdGVkIGFnYWluIGlmIGBtYXN0ZXJLZXlgIGlzIHNldCB0byBhIGZ1bmN0aW9uLiBJZiBgbWFzdGVyS2V5YCBpcyBub3Qgc2V0IHRvIGEgZnVuY3Rpb24sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuIERlZmF1bHQgaXMgYDBgLCB3aGljaCBtZWFucyB0aGUgbWFzdGVyIGtleSBpcyByZXF1ZXN0ZWQgYnkgaW52b2tpbmcgdGhlICBgbWFzdGVyS2V5YCBmdW5jdGlvbiBldmVyeSB0aW1lIHRoZSBtYXN0ZXIga2V5IGlzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIuICovXG4gIG1hc3RlcktleVR0bDogP251bWJlcjtcbiAgLyogKE9wdGlvbmFsKSBUaGUgbWFpbnRlbmFuY2Uga2V5IGlzIHVzZWQgZm9yIG1vZGlmeWluZyBpbnRlcm5hbCBhbmQgcmVhZC1vbmx5IGZpZWxkcyBvZiBQYXJzZSBTZXJ2ZXIuPGJyPjxicj7imqDvuI8gVGhpcyBrZXkgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBhIHJlZ3VsYXIgb3BlcmF0aW9uIG9mIFBhcnNlIFNlcnZlci4gVGhpcyBrZXkgaXMgaW50ZW5kZWQgdG8gY29uZHVjdCBvdXQtb2YtYmFuZCBjaGFuZ2VzIHN1Y2ggYXMgb25lLXRpbWUgbWlncmF0aW9ucyBvciBkYXRhIGNvcnJlY3Rpb24gdGFza3MuIEludGVybmFsIGZpZWxkcyBhcmUgbm90IG9mZmljaWFsbHkgZG9jdW1lbnRlZCBhbmQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IHB1YmxpY2F0aW9uIGluIHJlbGVhc2UgY2hhbmdlbG9ncy4gV2Ugc3Ryb25nbHkgYWR2aWNlIG5vdCB0byByZWx5IG9uIGludGVybmFsIGZpZWxkcyBhcyBwYXJ0IG9mIHlvdXIgcmVndWxhciBvcGVyYXRpb24gYW5kIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IHBsYW5uZWQgY2hhbmdlcyAqZGlyZWN0bHkgaW4gdGhlIHNvdXJjZSBjb2RlKiBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBvZiBQYXJzZSBTZXJ2ZXIuICovXG4gIG1haW50ZW5hbmNlS2V5OiBzdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gUGFyc2UgU2VydmVyLjxicj48YnI+4pqg77iPIENlcnRhaW4gc2VydmVyIGZlYXR1cmVzIG9yIGFkYXB0ZXJzIG1heSByZXF1aXJlIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC4gSWYgYSBmZWF0dXJlIHJlcXVpcmVzIHRoaXMsIGl0IGlzIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSW4gdGhhdCBjYXNlIGVuc3VyZSB0aGF0IHRoZSBVUkwgaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfVVJMICovXG4gIHNlcnZlclVSTDogc3RyaW5nO1xuICAvKiBQYXJzZSBTZXJ2ZXIgbWFrZXMgYSBIVFRQIHJlcXVlc3QgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAgYXQgdGhlIGVuZCBvZiBpdHMgbGF1bmNoIHJvdXRpbmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGxhdW5jaCBzdWNjZWVkZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgLCB0aGUgdmVyaWZpY2F0aW9uIHdpbGwgYmUgc2tpcHBlZC4gVGhpcyBjYW4gYmUgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aGVyZSB0aGUgc2VydmVyIFVSTCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLCBzdWNoIGFzIHdoZW4gcnVubmluZyBiZWhpbmQgYSBmaXJld2FsbCBvciBpbiBjZXJ0YWluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLjxicj48YnI+4pqg77iPIFNlcnZlciBVUkwgdmVyaWZpY2F0aW9uIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICB2ZXJpZnlTZXJ2ZXJVcmw6ID9ib29sZWFuO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1hc3RlciBrZXkgcGVybWlzc2lvbnMgdG8gYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBvciByYW5nZXMuPGJyPjxicj5UaGlzIG9wdGlvbiBhY2NlcHRzIGEgbGlzdCBvZiBzaW5nbGUgSVAgYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBgWycxMC4wLjAuMScsICcxMC4wLjAuMiddYC4gWW91IGNhbiBhbHNvIHVzZSBDSURSIG5vdGF0aW9uIHRvIHNwZWNpZnkgYW4gSVAgYWRkcmVzcyByYW5nZSwgZm9yIGV4YW1wbGUgYFsnMTAuMC4xLjAvMjQnXWAuPGJyPjxicj48Yj5TcGVjaWFsIHNjZW5hcmlvczo8L2I+PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgdGhlIG1hc3RlciBrZXkgY2Fubm90IGJlIHVzZWQgZXZlbiBpbiBQYXJzZSBTZXJ2ZXIgQ2xvdWQgQ29kZS4gVGhpcyB2YWx1ZSBjYW5ub3QgYmUgc2V0IHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBhbiBlbXB0eSBhcnJheSB0byBQYXJzZSBTZXJ2ZXIgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLjxicj4tIFNldHRpbmcgYFsnMC4wLjAuMC8wJywgJzo6MCddYCBtZWFucyB0byBhbGxvdyBhbnkgSVB2NCBhbmQgSVB2NiBhZGRyZXNzIHRvIHVzZSB0aGUgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFzdGVyIGtleS5cbiAgOkRFRkFVTFQ6IFtcIjEyNy4wLjAuMVwiLFwiOjoxXCJdICovXG4gIG1hc3RlcktleUlwczogPyhzdHJpbmdbXSk7XG4gIC8qIChPcHRpb25hbCkgUmVzdHJpY3RzIGV4dGVybmFsIGNsaWVudCBhY2Nlc3MgdG8gYSBsaXN0IG9mIGFsbG93ZWQgUkVTVCBBUEkgcm91dGVzLjxicj48YnI+V2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIGFsbCBleHRlcm5hbCBub24tbWFzdGVyLWtleSBSRVNUIEFQSSByZXF1ZXN0cyBhcmUgZGVuaWVkIGJ5IGRlZmF1bHQuIE9ubHkgcm91dGVzIG1hdGNoaW5nIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29uZmlndXJlZCByZWdleCBwYXR0ZXJucyBhcmUgYWxsb3dlZCB0aHJvdWdoLiBJbnRlcm5hbCBjYWxscyBmcm9tIENsb3VkIENvZGUsIENsb3VkIEpvYnMsIGFuZCB0cmlnZ2VycyBhcmUgbm90IGFmZmVjdGVkLjxicj48YnI+RWFjaCBlbnRyeSBpcyBhIHJlZ2V4IHBhdHRlcm4gc3RyaW5nIG1hdGNoZWQgYWdhaW5zdCB0aGUgbm9ybWFsaXplZCByb3V0ZSBpZGVudGlmaWVyIChyZXF1ZXN0IHBhdGggd2l0aCBtb3VudCBwcmVmaXggYW5kIGxlYWRpbmcgc2xhc2ggc3RyaXBwZWQpLiBQYXR0ZXJucyBhcmUgYXV0by1hbmNob3JlZCB3aXRoIGBeYCBhbmQgYCRgIGZvciBmdWxsLW1hdGNoIHNlbWFudGljcy48YnI+PGJyPjxiPkV4YW1wbGVzIG9mIG5vcm1hbGl6ZWQgcm91dGUgaWRlbnRpZmllcnM6PC9iPjx1bD48bGk+YGNsYXNzZXMvR2FtZVNjb3JlYCAoY2xhc3MgQ1JVRCk8L2xpPjxsaT5gY2xhc3Nlcy9HYW1lU2NvcmUvYWJjMTIzYCAob2JqZWN0IGJ5IElEKTwvbGk+PGxpPmB1c2Vyc2AgKHVzZXIgb3BlcmF0aW9ucyk8L2xpPjxsaT5gbG9naW5gIChsb2dpbiBlbmRwb2ludCk8L2xpPjxsaT5gZnVuY3Rpb25zL3NlbmRFbWFpbGAgKENsb3VkIEZ1bmN0aW9uKTwvbGk+PGxpPmBqb2JzL2NsZWFudXBgIChDbG91ZCBKb2IpPC9saT48bGk+YHB1c2hgIChwdXNoIG5vdGlmaWNhdGlvbnMpPC9saT48bGk+YGNvbmZpZ2AgKGNsaWVudCBjb25maWcpPC9saT48bGk+YGluc3RhbGxhdGlvbnNgIChpbnN0YWxsYXRpb25zKTwvbGk+PC91bD48Yj5FeGFtcGxlIHBhdHRlcm5zOjwvYj48dWw+PGxpPmBjbGFzc2VzL0NoYXRNZXNzYWdlYCBtYXRjaGVzIG9ubHkgYGNsYXNzZXMvQ2hhdE1lc3NhZ2VgPC9saT48bGk+YGNsYXNzZXMvQ2hhdC4qYCBtYXRjaGVzIGBjbGFzc2VzL0NoYXRNZXNzYWdlYCwgYGNsYXNzZXMvQ2hhdFJvb21gLCBldGMuPC9saT48bGk+YGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgQ2xvdWQgRnVuY3Rpb25zPC9saT48L3VsPlNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBibG9ja3MgYWxsIGV4dGVybmFsIG5vbi1tYXN0ZXIta2V5IFJFU1QgQVBJIHJlcXVlc3RzIChmdWxsIGxvY2tkb3duIG9mIFJFU1QgQVBJIHJvdXRlcykuPGJyPjxicj5XaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBub3RhdGlvbiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlIGBcImNsYXNzZXMvQ2hhdE1lc3NhZ2UsdXNlcnMsZnVuY3Rpb25zLy4qXCJgLjxicj48YnI+RGVmYXVsdHMgdG8gYHVuZGVmaW5lZGAgd2hpY2ggbWVhbnMgdGhlIGZlYXR1cmUgaXMgaW5hY3RpdmUgYW5kIGFsbCByb3V0ZXMgYXJlIGFjY2Vzc2libGUuPGJyPjxicj48Yj5Ob3RlOjwvYj4gRmlsZSByb3V0ZXMgYW5kIHRoZSBHcmFwaFFMIEFQSSBhcmUgbm90IGNvdmVyZWQgYnkgdGhpcyBvcHRpb24uKi9cbiAgcm91dGVBbGxvd0xpc3Q6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1haW50ZW5hbmNlIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIG9yIHJhbmdlcy48YnI+PGJyPlRoaXMgb3B0aW9uIGFjY2VwdHMgYSBsaXN0IG9mIHNpbmdsZSBJUCBhZGRyZXNzZXMsIGZvciBleGFtcGxlIGBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gLiBZb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZSBgWycxMC4wLjEuMC8yNCddYC48YnI+PGJyPjxiPlNwZWNpYWwgc2NlbmFyaW9zOjwvYj48YnI+LSBTZXR0aW5nIGFuIGVtcHR5IGFycmF5IGBbXWAgbWVhbnMgdGhhdCB0aGUgbWFpbnRlbmFuY2Uga2V5IGNhbm5vdCBiZSB1c2VkIGV2ZW4gaW4gUGFyc2UgU2VydmVyIENsb3VkIENvZGUuIFRoaXMgdmFsdWUgY2Fubm90IGJlIHNldCB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHBhc3MgYW4gZW1wdHkgYXJyYXkgdG8gUGFyc2UgU2VydmVyIHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS48YnI+LSBTZXR0aW5nIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgbWVhbnMgdG8gYWxsb3cgYW55IElQdjQgYW5kIElQdjYgYWRkcmVzcyB0byB1c2UgdGhlIG1haW50ZW5hbmNlIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFpbnRlbmFuY2Uga2V5LlxuICA6REVGQVVMVDogW1wiMTI3LjAuMC4xXCIsXCI6OjFcIl0gKi9cbiAgbWFpbnRlbmFuY2VLZXlJcHM6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIHJlYWQtb25seSBtYXN0ZXIga2V5IHBlcm1pc3Npb25zIHRvIGEgbGlzdCBvZiBJUCBhZGRyZXNzZXMgb3IgcmFuZ2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGUgYFsnMTAuMC4wLjEnLCAnMTAuMC4wLjInXWAuIFlvdSBjYW4gYWxzbyB1c2UgQ0lEUiBub3RhdGlvbiB0byBzcGVjaWZ5IGFuIElQIGFkZHJlc3MgcmFuZ2UsIGZvciBleGFtcGxlIGBbJzEwLjAuMS4wLzI0J11gLjxicj48YnI+PGI+U3BlY2lhbCBzY2VuYXJpb3M6PC9iPjxicj4tIFNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBtZWFucyB0aGF0IHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW5ub3QgYmUgdXNlZCBldmVuIGluIFBhcnNlIFNlcnZlciBDbG91ZCBDb2RlLiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBzZXQgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIFBhcnNlIFNlcnZlciB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnLCAnOjowJ11gIG1lYW5zIHRvIGFsbG93IGFueSBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgdG8gdXNlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgd2hpY2ggbWVhbnMgdGhhdCBhbnkgSVAgYWRkcmVzcyBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBgWycxMjcuMC4wLjEnLCAnOjoxJ11gIHRvIHJlc3RyaWN0IGFjY2VzcyB0byBgbG9jYWxob3N0YC5cbiAgOkRFRkFVTFQ6IFtcIjAuMC4wLjAvMFwiLFwiOjowXCJdICovXG4gIHJlYWRPbmx5TWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIG9yaWdpbnMgZm9yIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gVGhpcyBjYW4gYmUgYSBzdHJpbmcgZm9yIGEgc2luZ2xlIG9yaWdpbiBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBtdWx0aXBsZSBvcmlnaW5zLiAqL1xuICBhbGxvd09yaWdpbjogP1N0cmluZ09yU3RyaW5nQXJyYXk7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzICovXG4gIGFuYWx5dGljc0FkYXB0ZXI6ID9BZGFwdGVyPEFuYWx5dGljc0FkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGZpbGVzIHN1Yi1zeXN0ZW0gKi9cbiAgZmlsZXNBZGFwdGVyOiA/QWRhcHRlcjxGaWxlc0FkYXB0ZXI+O1xuICAvKiBDb25maWd1cmF0aW9uIGZvciBwdXNoLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNwdXNoLW5vdGlmaWNhdGlvbnMgKi9cbiAgcHVzaDogP2FueTtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHNjaGVkdWxlZFB1c2g6ID9ib29sZWFuO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbSAqL1xuICBsb2dnZXJBZGFwdGVyOiA/QWRhcHRlcjxMb2dnZXJBZGFwdGVyPjtcbiAgLyogTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzXG4gIDpFTlY6IEpTT05fTE9HUyAqL1xuICBqc29uTG9nczogP2Jvb2xlYW47XG4gIC8qIEZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSXG4gIDpERUZBVUxUOiAuL2xvZ3MgKi9cbiAgbG9nc0ZvbGRlcjogP3N0cmluZztcbiAgLyogU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAgOkVOVjogVkVSQk9TRSAqL1xuICB2ZXJib3NlOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MgKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIChPcHRpb25hbCkgT3ZlcnJpZGVzIHRoZSBsb2cgbGV2ZWxzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIgdG8gbG9nIGV2ZW50cy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGxvZ0xldmVsczogP0xvZ0xldmVscztcbiAgLyogTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpICovXG4gIG1heExvZ0ZpbGVzOiA/TnVtYmVyT3JTdHJpbmc7XG4gIC8qIERpc2FibGVzIGNvbnNvbGUgb3V0cHV0XG4gIDpFTlY6IFNJTEVOVCAqL1xuICBzaWxlbnQ6ID9ib29sZWFuO1xuICAvKiBUaGUgZnVsbCBVUkkgdG8geW91ciBkYXRhYmFzZS4gU3VwcG9ydGVkIGRhdGFiYXNlcyBhcmUgbW9uZ29kYiBvciBwb3N0Z3Jlcy5cbiAgOkRFRkFVTFQ6IG1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTcvcGFyc2UgKi9cbiAgZGF0YWJhc2VVUkk6IHN0cmluZztcbiAgLyogT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBkYXRhYmFzZSBjbGllbnRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0RBVEFCQVNFX09QVElPTlMgKi9cbiAgZGF0YWJhc2VPcHRpb25zOiA/RGF0YWJhc2VPcHRpb25zO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuICovXG4gIGRhdGFiYXNlQWRhcHRlcjogP0FkYXB0ZXI8U3RvcmFnZUFkYXB0ZXI+O1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbGxhdGlvbiBydWxlIG9mIGNhc2UgY29tcGFyaXNvbiBmb3IgcXVlcmllcyBhbmQgaW5kZXhlcyBpcyBlbmFibGVkLiBFbmFibGUgdGhpcyBvcHRpb24gdG8gcnVuIFBhcnNlIFNlcnZlciB3aXRoIE1vbmdvREIgQXRsYXMgU2VydmVybGVzcyBvciBBV1MgQW1hem9uIERvY3VtZW50REIuIElmIGBmYWxzZWAsIHRoZSBjb2xsYXRpb24gcnVsZSBvZiBjYXNlIGNvbXBhcmlzb24gaXMgZGlzYWJsZWQuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNvbGxhdGlvbkNhc2VDb21wYXJpc29uOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBgZW1haWxgIHByb3BlcnR5IG9mIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGJlaW5nIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIENvbnNlcXVlbnRseSwgcXVlcmllcyBtdXN0IG1hdGNoIHRoZSBjYXNlIGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIHdoaWNoIHdvdWxkIGJlIGxvd2VyY2FzZSBpbiB0aGlzIHNjZW5hcmlvLiBJZiBgZmFsc2VgLCB0aGUgYGVtYWlsYCBwcm9wZXJ0eSBpcyBzdG9yZWQgYXMgc2V0LCB3aXRob3V0IGFueSBjYXNlIG1vZGlmaWNhdGlvbnMuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGNvbnZlcnRFbWFpbFRvTG93ZXJjYXNlOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwuIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBgdXNlcm5hbWVgIHByb3BlcnR5IG9mIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGJlaW5nIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIENvbnNlcXVlbnRseSwgcXVlcmllcyBtdXN0IG1hdGNoIHRoZSBjYXNlIGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIHdoaWNoIHdvdWxkIGJlIGxvd2VyY2FzZSBpbiB0aGlzIHNjZW5hcmlvLiBJZiBgZmFsc2VgLCB0aGUgYHVzZXJuYW1lYCBwcm9wZXJ0eSBpcyBzdG9yZWQgYXMgc2V0LCB3aXRob3V0IGFueSBjYXNlIG1vZGlmaWNhdGlvbnMuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGNvbnZlcnRVc2VybmFtZVRvTG93ZXJjYXNlOiA/Ym9vbGVhbjtcbiAgLyogRnVsbCBwYXRoIHRvIHlvdXIgY2xvdWQgY29kZSBtYWluLmpzICovXG4gIGNsb3VkOiA/c3RyaW5nO1xuICAvKiBBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3Nlc1xuICA6REVGQVVMVDogJycgKi9cbiAgY29sbGVjdGlvblByZWZpeDogP3N0cmluZztcbiAgLyogS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHMgKi9cbiAgY2xpZW50S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNESyAqL1xuICBqYXZhc2NyaXB0S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIFVuaXR5IGFuZCAuTmV0IFNESyAqL1xuICBkb3ROZXRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgZW5jcnlwdGluZyB5b3VyIGZpbGVzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkNSWVBUSU9OX0tFWSAqL1xuICBlbmNyeXB0aW9uS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIFJFU1QgY2FsbHNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFU1RfQVBJX0tFWSAqL1xuICByZXN0QVBJS2V5OiA/c3RyaW5nO1xuICAvKiBUaGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgaXMgYSBzZWNyZXQga2V5IHdpdGggdGhlIHNhbWUgcmVhZCBjYXBhYmlsaXRpZXMgYXMgdGhlIGBtYXN0ZXJLZXlgLCBidXQgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIHdyaXRlcy4gTGlrZSB0aGUgYG1hc3RlcktleWAsIGl0IGJ5cGFzc2VzIGFsbCBzZWN1cml0eSBtZWNoYW5pc21zIChDbGFzcyBMZXZlbCBQZXJtaXNzaW9ucywgb2JqZWN0IEFDTHMsIGBwcm90ZWN0ZWRGaWVsZHNgKSwgc28gaXQgZ3JhbnRzIGZ1bGwgcmVhZCBhY2Nlc3MgdG8gYWxsIGRhdGEuPGJyPjxicj5JdCBpcyBpbnRlbmRlZCBzdHJpY3RseSBmb3IgaW50ZXJuYWwsIHNlcnZlci1zaWRlIHVzZSDigJQgZm9yIGV4YW1wbGUgdG8gZ2l2ZSBhIHRydXN0ZWQgaW50ZXJuYWwgcHJvY2VzcyByZWFkIGFjY2VzcyB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGFjY2lkZW50YWwgd3JpdGVzIGR1cmluZyBkZXZlbG9wbWVudCBvciBvcGVyYXRpb25zLiBJdCBpcyBub3QgYSBjcmVkZW50aWFsIGZvciB1bnRydXN0ZWQgY29udGV4dHM6IGl0IG11c3QgbmV2ZXIgYmUgc2hpcHBlZCwgZGlzdHJpYnV0ZWQsIHB1Ymxpc2hlZCwgZW1iZWRkZWQgaW4gYSBjbGllbnQgYXBwbGljYXRpb24sIG9yIG90aGVyd2lzZSBleHBvc2VkIHRvIHVudHJ1c3RlZCBwYXJ0aWVzLCBiZWNhdXNlIGFueW9uZSB3aG8gb2J0YWlucyBpdCBjYW4gcmVhZCBhbGwgZGF0YSBpbiB0aGUgZGF0YWJhc2UuIFVzZSBgcmVhZE9ubHlNYXN0ZXJLZXlJcHNgIHRvIHJlc3RyaWN0IHRoZSBJUCBhZGRyZXNzZXMgZnJvbSB3aGljaCBpdCBtYXkgYmUgdXNlZC4gKi9cbiAgcmVhZE9ubHlNYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIFdoZXRoZXIgdGhlIGByZWFkT25seU1hc3RlcktleWAgaXMgYWxsb3dlZCB0byBydW4gYWdncmVnYXRpb24gcGlwZWxpbmVzIHZpYSB0aGUgYWdncmVnYXRlIGVuZHBvaW50LiBBbiBhZ2dyZWdhdGlvbiBwaXBlbGluZSBjYW4gY29udGFpbiB3cml0ZS1jYXBhYmxlIHN0YWdlcyAoZm9yIGV4YW1wbGUgTW9uZ29EQiBgJG91dGAgYW5kIGAkbWVyZ2VgKSwgc28gYWxsb3dpbmcgYWdncmVnYXRpb24gZWZmZWN0aXZlbHkgZ2l2ZXMgdGhlIHJlYWQtb25seSBtYXN0ZXIga2V5IGEgd2F5IHRvIHBlcmZvcm0gd3JpdGVzLCBjb250cmFyeSB0byBpdHMgcmVhZC1vbmx5IGludGVudC4gSWYgYHRydWVgIChkZWZhdWx0KSwgdGhlIHJlYWQtb25seSBtYXN0ZXIga2V5IGNhbiBydW4gYWdncmVnYXRpb24gcGlwZWxpbmVzLiBJZiBgZmFsc2VgLCB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgY2Fubm90IHJ1biBhZ2dyZWdhdGlvbiBwaXBlbGluZXMgYXQgYWxsLiBOb3RlIHRoYXQgdGhlIGByZWFkT25seU1hc3RlcktleWAgaXMgYSBzZWNyZXQga2V5IGZvciBpbnRlcm5hbCBzZXJ2ZXItc2lkZSB1c2Ugb25seSBhbmQgbXVzdCBuZXZlciBiZSBkaXN0cmlidXRlZDsgdGhpcyBvcHRpb24gaXMgYW4gYWRkaXRpb25hbCBzYWZlZ3VhcmQsIG5vdCBhIHN1YnN0aXR1dGUgZm9yIGtlZXBpbmcgdGhlIGtleSBjb25maWRlbnRpYWwuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0FHR1JFR0FUSU9OX0ZPUl9SRUFEX09OTFlfTUFTVEVSX0tFWVxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBhbGxvd0FnZ3JlZ2F0aW9uRm9yUmVhZE9ubHlNYXN0ZXJLZXk6ID9ib29sZWFuO1xuICAvKiBLZXkgc2VudCB3aXRoIG91dGdvaW5nIHdlYmhvb2sgY2FsbHMgKi9cbiAgd2ViaG9va0tleTogP3N0cmluZztcbiAgLyogS2V5IGZvciB5b3VyIGZpbGVzICovXG4gIGZpbGVLZXk6ID9zdHJpbmc7XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgdGhlIGFkZGl0aW9uIG9mIGEgdW5pcXVlIGhhc2ggdG8gdGhlIGZpbGUgbmFtZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1BSRVNFUlZFX0ZJTEVfTkFNRVxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJlc2VydmVGaWxlTmFtZTogP2Jvb2xlYW47XG4gIC8qIFBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGZpZWxkcyBpbiB0aGUgdXNlciB0YWJsZSB0aGUgc2hvdWxkIGJlIHJlbW92ZWQgZm9yIG5vbi1hdXRob3JpemVkIHVzZXJzLiBEZXByZWNhdGVkIEBzZWUgcHJvdGVjdGVkRmllbGRzICovXG4gIHVzZXJTZW5zaXRpdmVGaWVsZHM6ID8oc3RyaW5nW10pO1xuICAvKiBGaWVsZHMgcGVyIGNsYXNzIHRoYXQgYXJlIGhpZGRlbiBmcm9tIHF1ZXJ5IHJlc3VsdHMgZm9yIHNwZWNpZmljIHVzZXIgZ3JvdXBzLiBQcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UsIGJ1dCBjYW4gc3RpbGwgYmUgdXNlZCBpbnRlcm5hbGx5IChlLmcuIGluIENsb3VkIENvZGUgdHJpZ2dlcnMpLiBDb25maWd1cmUgYXMgYHsgJ0NsYXNzTmFtZSc6IHsgJ1VzZXJHcm91cCc6IFsnZmllbGQxJywgJ2ZpZWxkMiddIH0gfWAgd2hlcmUgYFVzZXJHcm91cGAgaXMgb25lIG9mOiBgJyonYCAoYWxsIHVzZXJzKSwgYCdhdXRoZW50aWNhdGVkJ2AgKGF1dGhlbnRpY2F0ZWQgdXNlcnMpLCBgJ3JvbGU6Um9sZU5hbWUnYCAodXNlcnMgd2l0aCBhIHNwZWNpZmljIHJvbGUpLCBgJ3VzZXJGaWVsZDpGaWVsZE5hbWUnYCAodXNlcnMgcmVmZXJlbmNlZCBieSBhIHBvaW50ZXIgZmllbGQpLCBvciBhIHVzZXIgYG9iamVjdElkYCB0byB0YXJnZXQgYSBzcGVjaWZpYyB1c2VyLiBXaGVuIG11bHRpcGxlIGdyb3VwcyBhcHBseSwgdGhlIGludGVyc2VjdGlvbiBvZiB0aGVpciBwcm90ZWN0ZWQgZmllbGRzIGlzIHVzZWQuIEFueSBmaWVsZCBjYW4gYmUgcHJvdGVjdGVkLCBpbmNsdWRpbmcgc3lzdGVtIGZpZWxkcyBsaWtlIGBjcmVhdGVkQXRgIGFuZCBgdXBkYXRlZEF0YC4gQnkgZGVmYXVsdCwgYGVtYWlsYCBpcyBwcm90ZWN0ZWQgb24gdGhlIGBfVXNlcmAgY2xhc3MgZm9yIGFsbCB1c2Vycy4gT24gdGhlIGBfVXNlcmAgY2xhc3MsIHRoZSBvYmplY3Qgb3duZXIgaXMgZXhlbXB0IGZyb20gcHJvdGVjdGVkIGZpZWxkcyBieSBkZWZhdWx0OyBzZWUgYHByb3RlY3RlZEZpZWxkc093bmVyRXhlbXB0YCB0byBjaGFuZ2UgdGhpcy5cbiAgOkRFRkFVTFQ6IHtcIl9Vc2VyXCI6IHtcIipcIjogW1wiZW1haWxcIl19fSAqL1xuICBwcm90ZWN0ZWRGaWVsZHM6ID9Qcm90ZWN0ZWRGaWVsZHM7XG4gIC8qIFdoZXRoZXIgdGhlIGBfVXNlcmAgY2xhc3MgaXMgZXhlbXB0IGZyb20gYHByb3RlY3RlZEZpZWxkc2Agd2hlbiB0aGUgbG9nZ2VkLWluIHVzZXIgcXVlcmllcyB0aGVpciBvd24gdXNlciBvYmplY3QuIElmIGB0cnVlYCAoZGVmYXVsdCksIGEgdXNlciBjYW4gc2VlIGFsbCB0aGVpciBvd24gZmllbGRzIHJlZ2FyZGxlc3Mgb2YgYHByb3RlY3RlZEZpZWxkc2AgY29uZmlndXJhdGlvbjsgZGVmYXVsdCBwcm90ZWN0ZWQgZmllbGRzIChlLmcuIGBlbWFpbGApIGFyZSBtZXJnZWQgaW50byBhbnkgY3VzdG9tIGBwcm90ZWN0ZWRGaWVsZHNgIGNvbmZpZ3VyYXRpb24uIElmIGBmYWxzZWAsIGBwcm90ZWN0ZWRGaWVsZHNgIGFwcGxpZXMgZXF1YWxseSB0byB0aGUgdXNlcidzIG93biBvYmplY3QsIGNvbnNpc3RlbnQgd2l0aCBhbGwgb3RoZXIgY2xhc3Nlczsgb25seSBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgcHJvdGVjdGVkIGZpZWxkcyBhcHBseSwgZGVmYXVsdHMgYXJlIG5vdCBtZXJnZWQuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1BST1RFQ1RFRF9GSUVMRFNfT1dORVJfRVhFTVBUXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHByb3RlY3RlZEZpZWxkc093bmVyRXhlbXB0OiA/Ym9vbGVhbjtcbiAgLyogV2hldGhlciBDbG91ZCBDb2RlIHRyaWdnZXJzIChlLmcuIGBiZWZvcmVTYXZlYCwgYGFmdGVyU2F2ZWApIGFyZSBleGVtcHQgZnJvbSBgcHJvdGVjdGVkRmllbGRzYC4gSWYgYHRydWVgLCB0cmlnZ2VycyByZWNlaXZlIHRoZSBmdWxsIG9iamVjdCBpbmNsdWRpbmcgcHJvdGVjdGVkIGZpZWxkcyBpbiBgcmVxdWVzdC5vYmplY3RgIGFuZCBgcmVxdWVzdC5vcmlnaW5hbGAsIHJlZ2FyZGxlc3Mgb2YgdGhlIGNhbGxlcidzIGF1dGggY29udGV4dC4gSWYgYGZhbHNlYCwgcHJvdGVjdGVkIGZpZWxkcyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUgb3JpZ2luYWwgb2JqZWN0IGZldGNoIHVzZWQgdG8gYnVpbGQgdHJpZ2dlciBvYmplY3RzLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEU19UUklHR0VSX0VYRU1QVFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdDogP2Jvb2xlYW47XG4gIC8qIFdoZXRoZXIgc2F2ZSBvcGVyYXRpb24gcmVzcG9uc2VzIChjcmVhdGUsIHVwZGF0ZSkgYXJlIGV4ZW1wdCBmcm9tIGBwcm90ZWN0ZWRGaWVsZHNgLiBJZiBgdHJ1ZWAgKGRlZmF1bHQpLCBwcm90ZWN0ZWQgZmllbGRzIG1vZGlmaWVkIGR1cmluZyBhIHNhdmUgYXJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSB0byB0aGUgY2xpZW50LiBJZiBgZmFsc2VgLCBwcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHNhdmUgcmVzcG9uc2VzLCBjb25zaXN0ZW50IHdpdGggaG93IHRoZXkgYXJlIHN0cmlwcGVkIGZyb20gcXVlcnkgcmVzdWx0cy4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEU19TQVZFX1JFU1BPTlNFX0VYRU1QVFxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBwcm90ZWN0ZWRGaWVsZHNTYXZlUmVzcG9uc2VFeGVtcHQ6ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGFub255bW91cyB1c2VycywgZGVmYXVsdHMgdG8gdHJ1ZVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5BQkxFX0FOT05fVVNFUlNcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlQW5vbnltb3VzVXNlcnM6ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGNsaWVudCBjbGFzcyBjcmVhdGlvbiwgZGVmYXVsdHMgdG8gZmFsc2VcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0NMSUVOVF9DTEFTU19DUkVBVElPTlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBjdXN0b20gb2JqZWN0SWRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSURcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93Q3VzdG9tT2JqZWN0SWQ6ID9ib29sZWFuO1xuICAvKiBDb25maWd1cmF0aW9uIGZvciB5b3VyIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVycywgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jb2F1dGgtYW5kLTNyZC1wYXJ0eS1hdXRoZW50aWNhdGlvbjxicj48YnI+UHJvdmlkZXIgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgZGlnaXRzLCBhbmQgdW5kZXJzY29yZXMgKGAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvYCkuIFRoaXMgaXMgYmVjYXVzZSBlYWNoIHByb3ZpZGVyIG5hbWUgaXMgdXNlZCB0byBjb25zdHJ1Y3QgYSBkYXRhYmFzZSBmaWVsZCAoYF9hdXRoX2RhdGFfPHByb3ZpZGVyPmApLCB3aGljaCBtdXN0IGNvbXBseSB3aXRoIFBhcnNlIFNlcnZlcidzIGZpZWxkIG5hbWluZyBydWxlcy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FVVEhfUFJPVklERVJTICovXG4gIGF1dGg6ID97IFtzdHJpbmddOiBBdXRoQWRhcHRlciB9O1xuICAvKiBPcHRpb25hbC4gRW5hYmxlcyBpbnNlY3VyZSBhdXRoZW50aWNhdGlvbiBhZGFwdGVycy4gSW5zZWN1cmUgYXV0aCBhZGFwdGVycyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfSU5TRUNVUkVfQVVUSF9BREFQVEVSU1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlSW5zZWN1cmVBdXRoQWRhcHRlcnM6ID9ib29sZWFuO1xuICAvKiBNYXggZmlsZSBzaXplIGZvciB1cGxvYWRzLCBkZWZhdWx0cyB0byAyMG1iXG4gIDpERUZBVUxUOiAyMG1iICovXG4gIG1heFVwbG9hZFNpemU6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gcmVxdWlyZSB1c2VycyB0byB2ZXJpZnkgdGhlaXIgZW1haWwgYWRkcmVzcyB0byBjb21wbGV0ZSB0aGUgc2lnbi11cCBwcm9jZXNzLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIHZlcmlmaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIGEgcmVxdWVzdCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgY3JlYXRlZFdpdGhgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGludm9jYXRpb24gaXMgZm9yIGBzaWdudXBgIG9yIGBsb2dpbmAgYW5kIHRoZSB1c2VkIGF1dGggcHJvdmlkZXIuXG4gIDxicj48YnI+XG4gIFRoZSBgY3JlYXRlZFdpdGhgIHZhbHVlcyBwZXIgc2NlbmFyaW86XG4gIDx1bD48bGk+UGFzc3dvcmQgc2lnbnVwOiBgeyBhY3Rpb246ICdzaWdudXAnLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIHNpZ251cDogYHsgYWN0aW9uOiAnc2lnbnVwJywgYXV0aFByb3ZpZGVyOiAnPHByb3ZpZGVyPicgfWA8L2xpPjxsaT5QYXNzd29yZCBsb2dpbjogYHsgYWN0aW9uOiAnbG9naW4nLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIGxvZ2luOiBmdW5jdGlvbiBub3QgaW52b2tlZDsgYXV0aCBwcm92aWRlciBsb2dpbiBieXBhc3NlcyBlbWFpbCB2ZXJpZmljYXRpb248L2xpPjxsaT5SZXNlbmQgdmVyaWZpY2F0aW9uIGVtYWlsOiBgY3JlYXRlZFdpdGhgIGlzIGB1bmRlZmluZWRgOyB1c2UgdGhlIGByZXNlbmRSZXF1ZXN0YCBwcm9wZXJ0eSB0byBpZGVudGlmeSB0aG9zZTwvbGk+PC91bD5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdmVyaWZ5VXNlckVtYWlsczogPyhib29sZWFuIHwgKEVtYWlsVmVyaWZpY2F0aW9uUmVxdWVzdCA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPikpO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIHByZXZlbnRpb24uIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhIHJlcXVlc3Qgb2JqZWN0IHRoYXQgaW5jbHVkZXMgYGNyZWF0ZWRXaXRoYCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnZvY2F0aW9uIGlzIGZvciBgc2lnbnVwYCBvciBgbG9naW5gIGFuZCB0aGUgdXNlZCBhdXRoIHByb3ZpZGVyLlxuICA8YnI+PGJyPlxuICBUaGUgYGNyZWF0ZWRXaXRoYCB2YWx1ZXMgcGVyIHNjZW5hcmlvOlxuICA8dWw+PGxpPlBhc3N3b3JkIHNpZ251cDogYHsgYWN0aW9uOiAnc2lnbnVwJywgYXV0aFByb3ZpZGVyOiAncGFzc3dvcmQnIH1gPC9saT48bGk+QXV0aCBwcm92aWRlciBzaWdudXA6IGB7IGFjdGlvbjogJ3NpZ251cCcsIGF1dGhQcm92aWRlcjogJzxwcm92aWRlcj4nIH1gPC9saT48bGk+UGFzc3dvcmQgbG9naW46IGB7IGFjdGlvbjogJ2xvZ2luJywgYXV0aFByb3ZpZGVyOiAncGFzc3dvcmQnIH1gPC9saT48bGk+QXV0aCBwcm92aWRlciBsb2dpbjogZnVuY3Rpb24gbm90IGludm9rZWQ7IGF1dGggcHJvdmlkZXIgbG9naW4gYnlwYXNzZXMgZW1haWwgdmVyaWZpY2F0aW9uPC9saT48L3VsPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWw6ID8oXG4gICAgfCBib29sZWFuXG4gICAgfCAoRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+KVxuICApO1xuICAvKiBJZiBzZXQgdG8gYHRydWVgIGl0IHByZXZlbnRzIGEgdXNlciBmcm9tIHNpZ25pbmcgdXAgaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC4gSW4gdGhhdCBjYXNlIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgdG8gdGhlIHNpZ24tdXAgd2l0aCBIVFRQIHN0YXR1cyA0MDAgYW5kIGEgUGFyc2UgRXJyb3IgMjA1IGBFTUFJTF9OT1RfRk9VTkRgLiBJZiBzZXQgdG8gYGZhbHNlYCB0aGUgc2VydmVyIHJlc3BvbmRzIHdpdGggSFRUUCBzdGF0dXMgMjAwLCBhbmQgY2xpZW50IFNES3MgcmV0dXJuIGFuIHVuYXV0aGVudGljYXRlZCBQYXJzZSBVc2VyIHdpdGhvdXQgc2Vzc2lvbiB0b2tlbi4gSW4gdGhhdCBjYXNlIHN1YnNlcXVlbnQgcmVxdWVzdHMgZmFpbCB1bnRpbCB0aGUgdXNlcidzIGVtYWlsIGFkZHJlc3MgaXMgdmVyaWZpZWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudFNpZ251cFdpdGhVbnZlcmlmaWVkRW1haWw6ID9ib29sZWFuO1xuICAvKiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLlxuICA8YnI+PGJyPlxuICBGb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICAqL1xuICBlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSByZXF1ZXN0IHRvIHZlcmlmeSB0aGUgZW1haWwgc2hvdWxkIHJldHVybiBhIHN1Y2Nlc3MgcmVzcG9uc2UgZXZlbiBpZiB0aGUgcHJvdmlkZWQgZW1haWwgYWRkcmVzcyBkb2VzIG5vdCBiZWxvbmcgdG8gYSB2ZXJpZmlhYmxlIGFjY291bnQsIGZvciBleGFtcGxlIGJlY2F1c2UgaXQgaXMgdW5rbm93biBvciBhbHJlYWR5IHZlcmlmaWVkLCBvciBgZmFsc2VgIGlmIHRoZSByZXF1ZXN0IHNob3VsZCByZXR1cm4gYW4gZXJyb3IgcmVzcG9uc2UgaW4gdGhvc2UgY2FzZXMuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVtYWlsVmVyaWZ5U3VjY2Vzc09uSW52YWxpZEVtYWlsOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCBzZW5kaW5nIG9mIHZlcmlmaWNhdGlvbiBlbWFpbC4gU3VwcG9ydHMgYSBmdW5jdGlvbiB3aXRoIGEgcmV0dXJuIHZhbHVlIG9mIGB0cnVlYCBvciBgZmFsc2VgIGZvciBjb25kaXRpb25hbCBlbWFpbCBzZW5kaW5nLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgPGJyPlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBzZW5kVXNlckVtYWlsVmVyaWZpY2F0aW9uOiA/KFxuICAgIHwgYm9vbGVhblxuICAgIHwgKFNlbmRFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4pXG4gICk7XG4gIC8qIFRoZSBhY2NvdW50IGxvY2tvdXQgcG9saWN5IGZvciBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuXG4gIDxicj48YnI+XG4gIE5vdGU6IFNldHRpbmcgYSB1c2VyJ3MgQUNMIHRvIGFuIGVtcHR5IG9iamVjdCBge31gIHZpYSBtYXN0ZXIga2V5IGlzIGEgc2VwYXJhdGUgbWVjaGFuaXNtIHRoYXQgb25seSBwcmV2ZW50cyBuZXcgbG9naW5zOyBpdCBkb2VzIG5vdCBpbnZhbGlkYXRlIGV4aXN0aW5nIHNlc3Npb24gdG9rZW5zLiBUbyBpbW1lZGlhdGVseSByZXZva2UgYSB1c2VyJ3MgYWNjZXNzLCBkZXN0cm95IHRoZWlyIHNlc3Npb25zIHZpYSBtYXN0ZXIga2V5IGluIGFkZGl0aW9uIHRvIHNldHRpbmcgdGhlIEFDTC4gKi9cbiAgYWNjb3VudExvY2tvdXQ6ID9BY2NvdW50TG9ja291dE9wdGlvbnM7XG4gIC8qIFRoZSBwYXNzd29yZCBwb2xpY3kgZm9yIGVuZm9yY2luZyBwYXNzd29yZCByZWxhdGVkIHJ1bGVzLiAqL1xuICBwYXNzd29yZFBvbGljeTogP1Bhc3N3b3JkUG9saWN5T3B0aW9ucztcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZSAqL1xuICBjYWNoZUFkYXB0ZXI6ID9BZGFwdGVyPENhY2hlQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciBlbWFpbCBzZW5kaW5nICovXG4gIGVtYWlsQWRhcHRlcjogP0FkYXB0ZXI8TWFpbEFkYXB0ZXI+O1xuICAvKiBPcHRpb25hbC4gVGhlIHB1YmxpYyBVUkwgdG8gUGFyc2UgU2VydmVyLiBUaGlzIFVSTCB3aWxsIGJlIHVzZWQgdG8gcmVhY2ggUGFyc2UgU2VydmVyIHB1YmxpY2x5IGZvciBmZWF0dXJlcyBsaWtlIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gbGlua3MuIFRoZSBvcHRpb24gY2FuIGJlIHNldCB0byBhIHN0cmluZyBvciBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFzeW5jaHJvbm91c2x5IHJlc29sdmVkLiBUaGUgcmV0dXJuZWQgVVJMIHN0cmluZyBtdXN0IHN0YXJ0IHdpdGggYGh0dHA6Ly9gIG9yIGBodHRwczovL2AuXG4gIDpFTlY6IFBBUlNFX1BVQkxJQ19TRVJWRVJfVVJMICovXG4gIHB1YmxpY1NlcnZlclVSTDogPyhzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSB8ICgoKSA9PiBQcm9taXNlPHN0cmluZz4pKTtcbiAgLyogVGhlIG9wdGlvbnMgZm9yIHBhZ2VzIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBhZ2VzOiA/UGFnZXNPcHRpb25zO1xuICAvKiBjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0XG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21QYWdlczogP0N1c3RvbVBhZ2VzT3B0aW9ucztcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgTGl2ZVF1ZXJ5IG9uIHRoaXMgUGFyc2UgU2VydmVyLCBmb3IgZXhhbXBsZSBgeyBjbGFzc05hbWVzOiBbJ015Q2xhc3MnXSB9YC4gYGNsYXNzTmFtZXNgIGxpc3RzIHRoZSBjbGFzc2VzIHRoYXQgcHVibGlzaCBjcmVhdGUvdXBkYXRlL2RlbGV0ZSBldmVudHMgdG8gc3Vic2NyaWJlcnM7IHdpdGhvdXQgaXQgbm8gZXZlbnRzIGFyZSBwdXNoZWQsIGV2ZW4gd2hpbGUgYSBMaXZlUXVlcnkgc2VydmVyIGlzIHJ1bm5pbmcuIENvbWJpbmUgd2l0aCBgc3RhcnRMaXZlUXVlcnlTZXJ2ZXJgIHRvIHJ1biBhIExpdmVRdWVyeSBzZXJ2ZXIuICovXG4gIGxpdmVRdWVyeTogP0xpdmVRdWVyeU9wdGlvbnM7XG4gIC8qIFNlc3Npb24gZHVyYXRpb24sIGluIHNlY29uZHMsIGRlZmF1bHRzIHRvIDEgeWVhclxuICA6REVGQVVMVDogMzE1MzYwMDAgKi9cbiAgc2Vzc2lvbkxlbmd0aDogP251bWJlcjtcbiAgLyogV2hldGhlciBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGF1dG9tYXRpY2FsbHkgZXh0ZW5kIGEgdmFsaWQgc2Vzc2lvbiBieSB0aGUgc2Vzc2lvbkxlbmd0aC4gSW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2Vzc2lvbiB1cGRhdGVzIGluIHRoZSBkYXRhYmFzZSwgYSBzZXNzaW9uIHdpbGwgb25seSBiZSBleHRlbmRlZCB3aGVuIGEgcmVxdWVzdCBpcyByZWNlaXZlZCBhZnRlciBhdCBsZWFzdCBoYWxmIG9mIHRoZSBjdXJyZW50IHNlc3Npb24ncyBsaWZldGltZSBoYXMgcGFzc2VkLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZXh0ZW5kU2Vzc2lvbk9uVXNlOiA/Ym9vbGVhbjtcbiAgLyogRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLlxuICA6REVGQVVMVDogMTAwICovXG4gIGRlZmF1bHRMaW1pdDogP251bWJlcjtcbiAgLyogTWF4IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gdW5saW1pdGVkICovXG4gIG1heExpbWl0OiA/bnVtYmVyO1xuICAvKiBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiA/Ym9vbGVhbjtcbiAgLyogV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpXG4gIDpERUZBVUxUOiA1MDAwICovXG4gIGNhY2hlVFRMOiA/bnVtYmVyO1xuICAvKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gIDpERUZBVUxUOiAxMDAwMCAqL1xuICBjYWNoZU1heFNpemU6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+PGJyPlxuICBJZiBzZXQgdG8gYGZhbHNlYCB0aGVuIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBhcmUgZXhlY3V0ZWQgYXMgSFRUUCByZXF1ZXN0cyBzZW50IHRvIFBhcnNlIFNlcnZlciB2aWEgdGhlIGBzZXJ2ZXJVUkxgLiBGb3IgZXhhbXBsZSwgYSBgUGFyc2UuUXVlcnlgIGluIENsb3VkIENvZGUgaXMgY2FsbGluZyBQYXJzZSBTZXJ2ZXIgdmlhIGEgSFRUUCByZXF1ZXN0LiBUaGUgc2VydmVyIGlzIGVzc2VudGlhbGx5IG1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBpdHNlbGYsIHVubmVjZXNzYXJpbHkgdXNpbmcgbmV0d29yayByZXNvdXJjZXMgc3VjaCBhcyBuZXR3b3JrIHBvcnRzLlxuICA8YnI+PGJyPlxuICDimqDvuI8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGRpcmVjdEFjY2VzczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZXMgdGhlIGRlZmF1bHQgZXhwcmVzcyBlcnJvciBoYW5kbGVyIGZvciBhbGwgZXJyb3JzXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gRW5hYmxlcyB0aGUgbGVnYWN5IHByb2R1Y3QgcHVyY2hhc2UgQVBJIGluY2x1ZGluZyB0aGUgYF9Qcm9kdWN0YCBjbGFzcyBhbmQgdGhlIGAvdmFsaWRhdGVfcHVyY2hhc2VgIGVuZHBvaW50LiBUaGlzIGlzIGFuIHVuZG9jdW1lbnRlZCwgdW5tYWludGFpbmVkIGxlZ2FjeSBmZWF0dXJlIGluaGVyaXRlZCBmcm9tIHRoZSBvcmlnaW5hbCBQYXJzZSBwbGF0Zm9ybSB0aGF0IG1heSBub3QgZnVuY3Rpb24gYXMgZXhwZWN0ZWQuIFdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHVzaW5nIGl0LiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgdmVyc2lvbi5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQUJMRV9QUk9EVUNUX1BVUkNIQVNFX0xFR0FDWV9BUElcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlUHJvZHVjdFB1cmNoYXNlTGVnYWN5QXBpOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZ2VuZXJhdGVkIG9iamVjdCBpZCdzLCBkZWZhdWx0IDEwXG4gIDpERUZBVUxUOiAxMCAqL1xuICBvYmplY3RJZFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBwb3J0IHRvIHJ1biB0aGUgUGFyc2VTZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gIDpFTlY6IFBPUlRcbiAgOkRFRkFVTFQ6IDEzMzcgKi9cbiAgcG9ydDogP251bWJlcjtcbiAgLyogVGhlIGhvc3QgdG8gc2VydmUgUGFyc2VTZXJ2ZXIgb24sIGRlZmF1bHRzIHRvIDAuMC4wLjBcbiAgOkRFRkFVTFQ6IDAuMC4wLjAgKi9cbiAgaG9zdDogP3N0cmluZztcbiAgLyogTW91bnQgcGF0aCBmb3IgdGhlIHNlcnZlciwgZGVmYXVsdHMgdG8gL3BhcnNlXG4gIDpERUZBVUxUOiAvcGFyc2UgKi9cbiAgbW91bnRQYXRoOiA/c3RyaW5nO1xuICAvKiBSdW4gd2l0aCBjbHVzdGVyLCBvcHRpb25hbGx5IHNldCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBkZWZhdWx0IHRvIG9zLmNwdXMoKS5sZW5ndGggKi9cbiAgY2x1c3RlcjogP051bWJlck9yQm9vbGVhbjtcbiAgLyogbWlkZGxld2FyZSBmb3IgZXhwcmVzcyBzZXJ2ZXIsIGNhbiBiZSBzdHJpbmcgb3IgZnVuY3Rpb24gKi9cbiAgbWlkZGxld2FyZTogPygoKCkgPT4gdm9pZCkgfCBzdHJpbmcpO1xuICAvKiBUaGUgdHJ1c3QgcHJveHkgc2V0dGluZ3MuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzZXR1cCBvZiB0aGUgcmV2ZXJzZSBwcm94eSwgc2luY2UgdGhpcyBzZXR0aW5nIHdpbGwgdHJ1c3QgdmFsdWVzIHByb3ZpZGVkIGluIHRoZSBQYXJzZSBTZXJ2ZXIgQVBJIHJlcXVlc3QuIFNlZSB0aGUgPGEgaHJlZj1cImh0dHBzOi8vZXhwcmVzc2pzLmNvbS9lbi9ndWlkZS9iZWhpbmQtcHJveGllcy5odG1sXCI+ZXhwcmVzcyB0cnVzdCBwcm94eSBzZXR0aW5nczwvYT4gZG9jdW1lbnRhdGlvbi4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHRydXN0UHJveHk6ID9hbnk7XG4gIC8qIFN0YXJ0cyBhIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIHRoaXMgUGFyc2UgU2VydmVyLiBFdmVudHMgYXJlIG9ubHkgZGVsaXZlcmVkIGZvciB0aGUgY2xhc3NlcyBzZXQgaW4gYGxpdmVRdWVyeS5jbGFzc05hbWVzYCwgc28gYSBtaW5pbWFsIHdvcmtpbmcgc2V0dXAgaXMgYGxpdmVRdWVyeTogeyBjbGFzc05hbWVzOiBbLi4uXSB9YCB0b2dldGhlciB3aXRoIGBzdGFydExpdmVRdWVyeVNlcnZlcjogdHJ1ZWAuICovXG4gIHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyOiA/Ym9vbGVhbjtcbiAgLyogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gUHJvdmlkaW5nIHRoaXMgYWxzbyBzdGFydHMgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgKGxpa2UgYHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyYCk7IGV2ZW50cyBhcmUgc3RpbGwgb25seSBwdWJsaXNoZWQgZm9yIHRoZSBjbGFzc2VzIHNldCBpbiBgbGl2ZVF1ZXJ5LmNsYXNzTmFtZXNgLiAqL1xuICBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zOiA/TGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgcmVxdWVzdCBpZGVtcG90ZW5jeSB0byBkZWR1cGxpY2F0ZSBpZGVudGljYWwgcmVxdWVzdHMgdGhhdCBtYXkgYmUgY2F1c2VkIGJ5IG5ldHdvcmsgaXNzdWVzLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VYUEVSSU1FTlRBTF9JREVNUE9URU5DWV9PUFRJT05TXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpZGVtcG90ZW5jeU9wdGlvbnM6ID9JZGVtcG90ZW5jeU9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgZm9yIGZpbGUgdXBsb2Fkc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfT1BUSU9OU1xuICA6REVGQVVMVDoge30gKi9cbiAgZmlsZVVwbG9hZDogP0ZpbGVVcGxvYWRPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciBmaWxlIGRvd25sb2Fkc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRklMRV9ET1dOTE9BRF9PUFRJT05TXG4gIDpERUZBVUxUOiB7fSAqL1xuICBmaWxlRG93bmxvYWQ6ID9GaWxlRG93bmxvYWRPcHRpb25zO1xuICAvKiBGdWxsIHBhdGggdG8geW91ciBHcmFwaFFMIGN1c3RvbSBzY2hlbWEuZ3JhcGhxbCBmaWxlICovXG4gIGdyYXBoUUxTY2hlbWE6ID9zdHJpbmc7XG4gIC8qIE1vdW50cyB0aGUgR3JhcGhRTCBlbmRwb2ludFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfTU9VTlRfR1JBUEhRTFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbW91bnRHcmFwaFFMOiA/Ym9vbGVhbjtcbiAgLyogVGhlIG1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50PGJyPjxicj7imqDvuI8gRmlsZSB1cGxvYWQgaW5zaWRlIHRoZSBHcmFwaFFMIG11dGF0aW9uIHN5c3RlbSByZXF1aXJlcyBQYXJzZSBTZXJ2ZXIgdG8gYmUgYWJsZSB0byBjYWxsIGl0c2VsZiBieSBtYWtpbmcgcmVxdWVzdHMgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAuPGJyPjxicj5EZWZhdWx0cyBpcyBgL2dyYXBocWxgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfR1JBUEhRTF9QQVRIXG4gIDpERUZBVUxUOiAvZ3JhcGhxbCAqL1xuICBncmFwaFFMUGF0aDogP3N0cmluZztcbiAgLyogRW5hYmxlIHB1YmxpYyBpbnRyb3NwZWN0aW9uIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gZmFsc2VcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0dSQVBIUUxfUFVCTElDX0lOVFJPU1BFQ1RJT05cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGdyYXBoUUxQdWJsaWNJbnRyb3NwZWN0aW9uOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gTW91bnRzIHRoZSBHcmFwaFFMIFBsYXlncm91bmQgd2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFRoZSBwbGF5Z3JvdW5kIGV4cG9zZXMgdGhlIG1hc3RlciBrZXkgaW4gdGhlIGJyb3dzZXIuIFVzZSBQYXJzZSBEYXNoYm9hcmQgYXMgR3JhcGhRTCBJREUgb3IgY29uZmlndXJlIGEgdGhpcmQtcGFydHkgR3JhcGhRTCBjbGllbnQgd2l0aCBjdXN0b20gcmVxdWVzdCBoZWFkZXJzLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfTU9VTlRfUExBWUdST1VORFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbW91bnRQbGF5Z3JvdW5kOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgUGxheWdyb3VuZC4gVGhlIHBsYXlncm91bmQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QTEFZR1JPVU5EX1BBVEhcbiAgOkRFRkFVTFQ6IC9wbGF5Z3JvdW5kICovXG4gIHBsYXlncm91bmRQYXRoOiA/c3RyaW5nO1xuICAvKiBEZWZpbmVkIHNjaGVtYVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfU0NIRU1BXG4gICovXG4gIHNjaGVtYTogP1NjaGVtYU9wdGlvbnM7XG4gIC8qIENhbGxiYWNrIHdoZW4gc2VydmVyIGhhcyBjbG9zZWQgKi9cbiAgc2VydmVyQ2xvc2VDb21wbGV0ZTogPygpID0+IHZvaWQ7XG4gIC8qIE9wdGlvbnMgdG8gbGltaXQgdGhlIGNvbXBsZXhpdHkgb2YgcmVxdWVzdHMgdG8gcHJldmVudCBkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2tzLiBMaW1pdHMgYXJlIGVuZm9yY2VkIGZvciBhbGwgcmVxdWVzdHMgZXhjZXB0IHRob3NlIHVzaW5nIHRoZSBtYXN0ZXIgb3IgbWFpbnRlbmFuY2Uga2V5LiBFYWNoIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYC0xYCB0byBkaXNhYmxlIHRoYXQgc3BlY2lmaWMgbGltaXQuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVFVRVNUX0NPTVBMRVhJVFlcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHJlcXVlc3RDb21wbGV4aXR5OiA/UmVxdWVzdENvbXBsZXhpdHlPcHRpb25zO1xuICAvKiBPcHRpb25zIGNvbnRyb2xsaW5nIGhvdyBQYXJzZSBTZXJ2ZXIgZGVkdXBsaWNhdGVzIGBfSW5zdGFsbGF0aW9uYCByZWNvcmRzIHRoYXQgc2hhcmUgdGhlIHNhbWUgYGRldmljZVRva2VuYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0lOU1RBTExBVElPTlxuICA6REVGQVVMVDoge30gKi9cbiAgaW5zdGFsbGF0aW9uOiA/SW5zdGFsbGF0aW9uT3B0aW9ucztcbiAgLyogUXVlcnktcmVsYXRlZCBzZXJ2ZXIgZGVmYXVsdHMuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9RVUVSWVxuICA6REVGQVVMVDoge30gKi9cbiAgcXVlcnk6ID9RdWVyeVNlcnZlck9wdGlvbnM7XG4gIC8qIFRoZSBzZWN1cml0eSBvcHRpb25zIHRvIGlkZW50aWZ5IGFuZCByZXBvcnQgd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHNlY3VyaXR5OiA/U2VjdXJpdHlPcHRpb25zO1xuICAvKiBTZXQgdG8gdHJ1ZSBpZiBuZXcgdXNlcnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aG91dCBwdWJsaWMgcmVhZCBhbmQgd3JpdGUgYWNjZXNzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmZvcmNlUHJpdmF0ZVVzZXJzOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gVGhpcyBvcHRpb24gd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIEF1dGggcHJvdmlkZXJzIGFyZSBhbHdheXMgdmFsaWRhdGVkIG9uIGxvZ2luLiBPbiB1cGRhdGUsIGlmIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCwgYXV0aCBwcm92aWRlcnMgYXJlIG9ubHkgcmUtdmFsaWRhdGVkIHdoZW4gdGhlIGF1dGggZGF0YSBoYXMgY2hhbmdlZC4gSWYgdGhpcyBpcyBzZXQgdG8gYGZhbHNlYCwgYXV0aCBwcm92aWRlcnMgYXJlIHJlLXZhbGlkYXRlZCBvbiBldmVyeSB1cGRhdGUuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd0V4cGlyZWRBdXRoRGF0YVRva2VuOiA/Ym9vbGVhbjtcbiAgLyogQW4gYXJyYXkgb2Yga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIHByb2hpYml0ZWQgaW4gZGF0YWJhc2UgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgdG8gcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG9ubHkgYSBrZXkgKGB7XCJrZXlcIjpcIi4uLlwifWApLCBvbmx5IGEgdmFsdWUgKGB7XCJ2YWx1ZVwiOlwiLi4uXCJ9YCkgb3IgYSBrZXktdmFsdWUgcGFpciAoYHtcImtleVwiOlwiLi4uXCIsXCJ2YWx1ZVwiOlwiLi4uXCJ9YCkuIFRoZSBzcGVjaWZpY2F0aW9uIGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0eXBlczogYGJvb2xlYW5gLCBgbnVtZXJpY2Agb3IgYHN0cmluZ2AsIHdoZXJlIGBzdHJpbmdgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZWdleCBub3RhdGlvbi4gUmVxdWVzdCBkYXRhIGlzIGRlZXAtc2Nhbm5lZCBmb3IgbWF0Y2hpbmcgZGVmaW5pdGlvbnMgdG8gZGV0ZWN0IGFsc28gYW55IG5lc3RlZCBvY2N1cnJlbmNlcy4gRGVmYXVsdHMgYXJlIHBhdHRlcm5zIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIG1hbGljaW91cyByZXF1ZXN0cy4gU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhdHRlcm5zLlxuICA6REVGQVVMVDogW3tcImtleVwiOlwiX2Jzb250eXBlXCIsXCJ2YWx1ZVwiOlwiQ29kZVwifSx7XCJrZXlcIjpcImNvbnN0cnVjdG9yXCJ9LHtcImtleVwiOlwiX19wcm90b19fXCJ9XSAqL1xuICByZXF1ZXN0S2V5d29yZERlbnlsaXN0OiA/KFJlcXVlc3RLZXl3b3JkRGVueWxpc3RbXSk7XG4gIC8qIE9wdGlvbnMgdG8gbGltaXQgcmVwZWF0ZWQgcmVxdWVzdHMgdG8gUGFyc2UgU2VydmVyIEFQSXMuIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJvdGVjdCBzZW5zaXRpdmUgZW5kcG9pbnRzIHN1Y2ggYXMgYC9yZXF1ZXN0UGFzc3dvcmRSZXNldGAgZnJvbSBicnV0ZS1mb3JjZSBhdHRhY2tzIG9yIFBhcnNlIFNlcnZlciBhcyBhIHdob2xlIGZyb20gZGVuaWFsLW9mLXNlcnZpY2UgKERvUykgYXR0YWNrcy48YnI+PGJyPuKEue+4jyBNaW5kIHRoZSBmb2xsb3dpbmcgbGltaXRhdGlvbnM6PGJyPi0gcmF0ZSBsaW1pdHMgYXBwbGllZCBwZXIgSVAgYWRkcmVzczsgdGhpcyBsaW1pdHMgcHJvdGVjdGlvbiBhZ2FpbnN0IGRpc3RyaWJ1dGVkIGRlbmlhbC1vZi1zZXJ2aWNlIChERG9TKSBhdHRhY2tzIHdoZXJlIG1hbnkgcmVxdWVzdHMgYXJlIGNvbWluZyBmcm9tIHZhcmlvdXMgSVAgYWRkcmVzc2VzPGJyPi0gaWYgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBhcmUgYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBvciByYW4gaW4gYSBjbHVzdGVyLCBlYWNoIGluc3RhbmNlIHdpbGwgY2FsY3VsYXRlIGl0J3Mgb3duIHJlcXVlc3QgcmF0ZXMsIGluZGVwZW5kZW50IGZyb20gb3RoZXIgaW5zdGFuY2VzOyB0aGlzIGxpbWl0cyB0aGUgYXBwbGljYWJpbGl0eSBvZiB0aGlzIGZlYXR1cmUgd2hlbiB1c2luZyBhIGxvYWQgYmFsYW5jZXIgYW5kIGFub3RoZXIgcmF0ZSBsaW1pdGluZyBzb2x1dGlvbiB0aGF0IHRha2VzIHJlcXVlc3RzIGFjcm9zcyBhbGwgaW5zdGFuY2VzIGludG8gYWNjb3VudCBtYXkgYmUgbW9yZSBzdWl0YWJsZTxicj4tIHRoaXMgZmVhdHVyZSBwcm92aWRlcyBiYXNpYyBwcm90ZWN0aW9uIGFnYWluc3QgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrcywgYnV0IGEgbW9yZSBzb3BoaXN0aWNhdGVkIHNvbHV0aW9uIHdvcmtzIGVhcmxpZXIgaW4gdGhlIHJlcXVlc3QgZmxvdyBhbmQgcHJldmVudHMgYSBtYWxpY2lvdXMgcmVxdWVzdHMgdG8gZXZlbiByZWFjaCBhIHNlcnZlciBpbnN0YW5jZTsgaXQncyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gaW1wbGVtZW50IGEgc29sdXRpb24gYWNjb3JkaW5nIHRvIGFyY2hpdGVjdHVyZSBhbmQgdXNlIGNhc2UuPGJyPi0gcmF0ZSBsaW1pdHMgYXJlIG1hdGNoZWQgYWdhaW5zdCB0aGUgUkVTVCBBUEkgVVJMIHBhdGggKGByZXF1ZXN0UGF0aGApIGFuZCB0aGVyZWZvcmUgYXBwbHkgdG8gUkVTVCBBUEkgcm91dGVzIG9ubHk7IHRoZXkgZG8gbm90IGFwcGx5IHRvIEdyYXBoUUwgb3BlcmF0aW9ucywgd2hpY2ggYXJlIGFsbCBzZXJ2ZWQgdW5kZXIgdGhlIHNpbmdsZSBHcmFwaFFMIGVuZHBvaW50IHBhdGggKGBncmFwaFFMUGF0aGAsIGRlZmF1bHQgYC9ncmFwaHFsYCkgYW5kIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSByZXF1ZXN0IHBheWxvYWQgcmF0aGVyIHRoYW4gdGhlIFVSTC4gVG8gcmF0ZSBsaW1pdCBHcmFwaFFMLCBlaXRoZXIgc2V0IGEgYHJlcXVlc3RQYXRoYCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQgcGF0aCB0byB0aHJvdHRsZSB0aGUgZW50aXJlIEdyYXBoUUwgQVBJLCBvciB1c2UgYSBHcmFwaFFMLWF3YXJlIHJhdGUgbGltaXRpbmcgc29sdXRpb24gKGZvciBleGFtcGxlIGEgc2NoZW1hLWRpcmVjdGl2ZS1iYXNlZCByYXRlIGxpbWl0ZXIpIGZvciBwZXItb3BlcmF0aW9uIGxpbWl0cy5cbiAgOkRFRkFVTFQ6IFtdICovXG4gIHJhdGVMaW1pdDogPyhSYXRlTGltaXRPcHRpb25zW10pO1xuICAvKiBPcHRpb25zIHRvIGN1c3RvbWl6ZSB0aGUgcmVxdWVzdCBjb250ZXh0IHVzaW5nIGludmVyc2lvbiBvZiBjb250cm9sL2RlcGVuZGVuY3kgaW5qZWN0aW9uLiovXG4gIHJlcXVlc3RDb250ZXh0TWlkZGxld2FyZTogPyhyZXE6IGFueSwgcmVzOiBhbnksIG5leHQ6IGFueSkgPT4gdm9pZDtcbiAgLyogSWYgc2V0IHRvIGB0cnVlYCwgZXJyb3IgZGV0YWlscyBhcmUgcmVtb3ZlZCBmcm9tIGVycm9yIG1lc3NhZ2VzIGluIHJlc3BvbnNlcyB0byBjbGllbnQgcmVxdWVzdHMsIGFuZCBpbnN0ZWFkIGEgZ2VuZXJpYyBlcnJvciBtZXNzYWdlIGlzIHNlbnQuIERlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVTYW5pdGl6ZWRFcnJvclJlc3BvbnNlOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRPcHRpb25zIHtcbiAgLyogVGhlIHBhdGggb2YgdGhlIEFQSSByb3V0ZSB0byBiZSByYXRlIGxpbWl0ZWQuIFJvdXRlIHBhdGhzLCBpbiBjb21iaW5hdGlvbiB3aXRoIGEgcmVxdWVzdCBtZXRob2QsIGRlZmluZSB0aGUgZW5kcG9pbnRzIGF0IHdoaWNoIHJlcXVlc3RzIGNhbiBiZSBtYWRlLiBSb3V0ZSBwYXRocyBjYW4gYmUgc3RyaW5ncyBvciBzdHJpbmcgcGF0dGVybnMgZm9sbG93aW5nIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vcGlsbGFyanMvcGF0aC10by1yZWdleHBcIj5wYXRoLXRvLXJlZ2V4cCB2ODwvYT4gc3ludGF4LiAqL1xuICByZXF1ZXN0UGF0aDogc3RyaW5nO1xuICAvKiBUaGUgd2luZG93IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHdpdGhpbiB3aGljaCB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHNldCBpbiBgcmVxdWVzdENvdW50YCBjYW4gYmUgbWFkZSBiZWZvcmUgdGhlIHJhdGUgbGltaXQgaXMgYXBwbGllZC4gKi9cbiAgcmVxdWVzdFRpbWVXaW5kb3c6ID9udW1iZXI7XG4gIC8qIFRoZSBudW1iZXIgb2YgcmVxdWVzdHMgdGhhdCBjYW4gYmUgbWFkZSBwZXIgSVAgYWRkcmVzcyB3aXRoaW4gdGhlIHRpbWUgd2luZG93IHNldCBpbiBgcmVxdWVzdFRpbWVXaW5kb3dgIGJlZm9yZSB0aGUgcmF0ZSBsaW1pdCBpcyBhcHBsaWVkLiBGb3IgYmF0Y2ggcmVxdWVzdHMsIHRoaXMgYWxzbyBsaW1pdHMgdGhlIG51bWJlciBvZiBzdWItcmVxdWVzdHMgaW4gYSBzaW5nbGUgYmF0Y2ggdGhhdCB0YXJnZXQgdGhpcyBwYXRoOyBob3dldmVyLCByZXF1ZXN0cyBhbHJlYWR5IGNvbnN1bWVkIGluIHRoZSBjdXJyZW50IHRpbWUgd2luZG93IGFyZSBub3QgY291bnRlZCBhZ2FpbnN0IHRoZSBiYXRjaCwgc28gdGhlIGVmZmVjdGl2ZSBsaW1pdCBtYXkgYmUgaGlnaGVyIHdoZW4gY29tYmluaW5nIGluZGl2aWR1YWwgYW5kIGJhdGNoIHJlcXVlc3RzLiBOb3RlIHRoYXQgdGhpcyBpcyBhIGJhc2ljIHNlcnZlci1sZXZlbCByYXRlIGxpbWl0OyBmb3IgY29tcHJlaGVuc2l2ZSBwcm90ZWN0aW9uLCB1c2UgYSByZXZlcnNlIHByb3h5IG9yIFdBRiBmb3IgcmF0ZSBsaW1pdGluZy4gKi9cbiAgcmVxdWVzdENvdW50OiA/bnVtYmVyO1xuICAvKiBUaGUgZXJyb3IgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBpbiB0aGUgYm9keSBvZiB0aGUgSFRUUCA0MjkgcmVzcG9uc2Ugd2hlbiB0aGUgcmF0ZSBsaW1pdCBpcyBoaXQuIERlZmF1bHQgaXMgYFRvbyBtYW55IHJlcXVlc3RzLmAuXG4gIDpERUZBVUxUOiBUb28gbWFueSByZXF1ZXN0cy4gKi9cbiAgZXJyb3JSZXNwb25zZU1lc3NhZ2U6ID9zdHJpbmc7XG4gIC8qIE9wdGlvbmFsLCB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZHMgdG8gd2hpY2ggdGhlIHJhdGUgbGltaXQgc2hvdWxkIGJlIGFwcGxpZWQsIGRlZmF1bHQgaXMgYWxsIG1ldGhvZHMuIFRoZSBtZXRob2QgaXMgbWF0Y2hlZCBhZnRlciBhbnkgYF9tZXRob2RgIGJvZHkgb3ZlcnJpZGUgaGFzIGJlZW4gcmVzb2x2ZWQsIGkuZS4gaXQgaXMgdGhlIG1ldGhvZCB1c2VkIHRvIHJvdXRlIHRoZSByZXF1ZXN0LiBOb3RlIHRoYXQgc29tZSBlbmRwb2ludHMgYXJlIHJlYWNoYWJsZSB2aWEgbW9yZSB0aGFuIG9uZSBIVFRQIG1ldGhvZCAoZm9yIGV4YW1wbGUgYC9sb2dpbmAgYW5kIGAvdmVyaWZ5UGFzc3dvcmRgIGFyZSBhdmFpbGFibGUgdmlhIGJvdGggYEdFVGAgYW5kIGBQT1NUYCk7IHRvIHJhdGUgbGltaXQgc3VjaCBhbiBlbmRwb2ludCByZWxpYWJseSwgaW5jbHVkZSBhbGwgcmVsZXZhbnQgbWV0aG9kcyAoZS5nLiBgWydHRVQnLCAnUE9TVCddYCkgb3Igb21pdCB0aGlzIG9wdGlvbiB0byBhcHBseSB0aGUgbGltaXQgdG8gYWxsIG1ldGhvZHMuICovXG4gIHJlcXVlc3RNZXRob2RzOiA/KHN0cmluZ1tdKTtcbiAgLyogT3B0aW9uYWwsIGlmIGB0cnVlYCB0aGUgcmF0ZSBsaW1pdCB3aWxsIGFsc28gYXBwbHkgdG8gcmVxdWVzdHMgdXNpbmcgdGhlIGBtYXN0ZXJLZXlgLCBkZWZhdWx0IGlzIGBmYWxzZWAuIE5vdGUgdGhhdCBhIHB1YmxpYyBDbG91ZCBDb2RlIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaW50ZXJuYWwgcmVxdWVzdHMgdXNpbmcgdGhlIGBtYXN0ZXJLZXlgIG1heSBjaXJjdW12ZW50IHJhdGUgbGltaXRpbmcgYW5kIGJlIHZ1bG5lcmFibGUgdG8gYXR0YWNrcy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGluY2x1ZGVNYXN0ZXJLZXk6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbCwgaWYgYHRydWVgIHRoZSByYXRlIGxpbWl0IHdpbGwgYWxzbyBhcHBseSB0byByZXF1ZXN0cyB0aGF0IGFyZSBtYWRlIGluIGJ5IENsb3VkIENvZGUsIGRlZmF1bHQgaXMgYGZhbHNlYC4gTm90ZSB0aGF0IGEgcHVibGljIENsb3VkIENvZGUgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBpbnRlcm5hbCByZXF1ZXN0cyBtYXkgY2lyY3VtdmVudCByYXRlIGxpbWl0aW5nIGFuZCBiZSB2dWxuZXJhYmxlIHRvIGF0dGFja3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpbmNsdWRlSW50ZXJuYWxSZXF1ZXN0czogP2Jvb2xlYW47XG4gIC8qIE9wdGlvbmFsLCB0aGUgVVJMIG9mIHRoZSBSZWRpcyBzZXJ2ZXIgdG8gc3RvcmUgcmF0ZSBsaW1pdCBkYXRhLiBUaGlzIGFsbG93cyB0byByYXRlIGxpbWl0IHJlcXVlc3RzIGZvciBtdWx0aXBsZSBzZXJ2ZXJzIGJ5IGNhbGN1bGF0aW5nIHRoZSBzdW0gb2YgYWxsIHJlcXVlc3RzIGFjcm9zcyBhbGwgc2VydmVycy4gVGhpcyBpcyB1c2VmdWwgaWYgbXVsdGlwbGUgc2VydmVycyBhcmUgcHJvY2Vzc2luZyByZXF1ZXN0cyBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyLiBGb3IgZXhhbXBsZSwgdGhlIGxpbWl0IG9mIDEwIHJlcXVlc3RzIGlzIHJlYWNoZWQgaWYgZWFjaCBvZiAyIHNlcnZlcnMgcHJvY2Vzc2VkIDUgcmVxdWVzdHMuXG4gICAqL1xuICByZWRpc1VybDogP3N0cmluZztcbiAgLyogVGhlIHR5cGUgb2YgcmF0ZSBsaW1pdCB0byBhcHBseS4gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICA8dWw+XG4gIDxsaT5gZ2xvYmFsYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIG1hZGUgYnkgYWxsIHVzZXJzPC9saT5cbiAgPGxpPmBpcGA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHJlcXVlc3Q8L2xpPlxuICA8bGk+YHVzZXJgOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSB1c2VyIElEIG9mIHRoZSByZXF1ZXN0PC9saT5cbiAgPGxpPmBzZXNzaW9uYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgc2Vzc2lvbiB0b2tlbiBvZiB0aGUgcmVxdWVzdDwvbGk+XG4gIDwvdWw+XG4gIERlZmF1bHQgaXMgYGlwYC5cbiAgOkRFRkFVTFQ6IGlwICovXG4gIHpvbmU6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdENvbXBsZXhpdHlPcHRpb25zIHtcbiAgLyogV2hldGhlciB0byBhbGxvdyB0aGUgYCRyZWdleGAgcXVlcnkgb3BlcmF0b3IuIFNldCB0byBgZmFsc2VgIHRvIHJlamVjdCBgJHJlZ2V4YCBpbiBxdWVyaWVzIGZvciBub24tbWFzdGVyLWtleSB1c2Vycy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVFVRVNUX0NPTVBMRVhJVFlfQUxMT1dfUkVHRVhcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgYWxsb3dSZWdleDogP2Jvb2xlYW47XG4gIC8qIE1heGltdW0gZGVwdGggb2YgaW5jbHVkZSBwb2ludGVyIGNoYWlucyAoZS5nLiBgYS5iLmNgID0gZGVwdGggMykuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIGluY2x1ZGVEZXB0aDogP251bWJlcjtcbiAgLyogTWF4aW11bSBudW1iZXIgb2YgaW5jbHVkZSBwYXRocyBpbiBhIHNpbmdsZSBxdWVyeS4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgaW5jbHVkZUNvdW50OiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG5lc3RpbmcgZGVwdGggb2YgYCRpblF1ZXJ5YCwgYCRub3RJblF1ZXJ5YCwgYCRzZWxlY3RgLCBgJGRvbnRTZWxlY3RgIHN1YnF1ZXJpZXMuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIHN1YnF1ZXJ5RGVwdGg6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgcmV0dXJuZWQgYnkgYSBgJGluUXVlcnlgLCBgJG5vdEluUXVlcnlgLCBgJHNlbGVjdGAsIGAkZG9udFNlbGVjdGAgc3VicXVlcnkuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIHN1YnF1ZXJ5TGltaXQ6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbmVzdGluZyBkZXB0aCBvZiBgJG9yYCwgYCRhbmRgLCBgJG5vcmAgcXVlcnkgb3BlcmF0b3JzLiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBxdWVyeURlcHRoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIGRlcHRoIG9mIEdyYXBoUUwgZmllbGQgc2VsZWN0aW9ucy4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVRVUVTVF9DT01QTEVYSVRZX0dSQVBIUUxfREVQVEhcbiAgOkRFRkFVTFQ6IC0xICovXG4gIGdyYXBoUUxEZXB0aDogP251bWJlcjtcbiAgLyogTWF4aW11bSBudW1iZXIgb2YgZmllbGQgc2VsZWN0aW9ucyBpbiBhIEdyYXBoUUwgcXVlcnkuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFUVVFU1RfQ09NUExFWElUWV9HUkFQSFFMX0ZJRUxEU1xuICA6REVGQVVMVDogLTEgKi9cbiAgZ3JhcGhRTEZpZWxkczogP251bWJlcjtcbiAgLyogTWF4aW11bSBudW1iZXIgb2Ygc3ViLXJlcXVlc3RzIGluIGEgc2luZ2xlIGJhdGNoIHJlcXVlc3QuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIGJhdGNoUmVxdWVzdExpbWl0OiA/bnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxhdGlvbk9wdGlvbnMge1xuICAvKiBXaGV0aGVyIHRoZSBgX0luc3RhbGxhdGlvbmAgZGVkdXBsaWNhdGlvbiBvcGVyYXRpb24gZW5mb3JjZXMgdGhlIGNhbGxlcidzIGF1dGggY29udGV4dCAoYW5kIHRoZSByZXN1bHRpbmcgQUNMIGFuZCBDTFApLiBXaGVuIGB0cnVlYCwgdGhlIGRlZHVwIGBkZXN0cm95YC9gdXBkYXRlYCBydW5zIHdpdGggdGhlIGNhbGxlcidzIGBydW5PcHRpb25zYCwgc28gQUNMIGFuZCBDTFAgYXJlIGhvbm9yZWQuIFdoZW4gYGZhbHNlYCwgdGhlIGRlZHVwIHJ1bnMgYXMgbWFzdGVyIGFuZCBieXBhc3NlcyBib3RoLiBNYXN0ZXIgYW5kIG1haW50ZW5hbmNlIGtleXMgYWx3YXlzIGJ5cGFzcyByZWdhcmRsZXNzIG9mIHRoaXMgZmxhZy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZHVwbGljYXRlRGV2aWNlVG9rZW5BY3Rpb25FbmZvcmNlQXV0aDogP2Jvb2xlYW47XG4gIC8qIFdoYXQgUGFyc2UgU2VydmVyIGRvZXMgdG8gdGhlIGNvbmZsaWN0aW5nIGBfSW5zdGFsbGF0aW9uYCByb3cocykgd2hlbiBhIG5ldyBpbnN0YWxsJ3MgYGRldmljZVRva2VuYCBjb2xsaWRlcyB3aXRoIGFuIGV4aXN0aW5nIHJvdy4gYCdkZWxldGUnYCBkZXN0cm95cyB0aGUgY29uZmxpY3Rpbmcgcm93LiBgJ3VwZGF0ZSdgIGNsZWFycyB0aGUgbm93LWNvbmZsaWN0aW5nIElEIGZpZWxkIG9uIHRoZSBjb25mbGljdGluZyByb3csIHByZXNlcnZpbmcgY3VzdG9tIGZpZWxkcywgY2hhbm5lbHMsIGFuZCBoaXN0b3J5LiBEZWZhdWx0IGlzIGAnZGVsZXRlJ2AuXG4gIDpERUZBVUxUOiBkZWxldGUgKi9cbiAgZHVwbGljYXRlRGV2aWNlVG9rZW5BY3Rpb246ID9zdHJpbmc7XG4gIC8qIEF0IHRoZSBtZXJnZSBjYXNlICh3aGVuIGFuIGV4aXN0aW5nIHJvdyBob2xkcyB0aGUgbmV3IGBkZXZpY2VUb2tlbmAgYnV0IGhhcyBubyBgaW5zdGFsbGF0aW9uSWRgIG9mIGl0cyBvd24pLCB3aGljaCBzaWRlIHdpbnMuIGAnZGV2aWNlVG9rZW4nYCDigJQgdGhlIGRldmljZVRva2VuLW9ubHkgcm93IHN1cnZpdmVzLCB0aGUgcmVxdWVzdCdzIGBpZE1hdGNoYCByb3cgaXMgdGhlIGxvc2VyLiBgJ2luc3RhbGxhdGlvbklkJ2Ag4oCUIHRoZSByZXF1ZXN0J3MgYGlkTWF0Y2hgIChhY3RpdmUgaW5zdGFsbCkgc3Vydml2ZXMsIHRoZSBkZXZpY2VUb2tlbi1vbmx5IG9ycGhhbiBpcyB0aGUgbG9zZXIuIERlZmF1bHQgaXMgYCdkZXZpY2VUb2tlbidgLlxuICA6REVGQVVMVDogZGV2aWNlVG9rZW4gKi9cbiAgZHVwbGljYXRlRGV2aWNlVG9rZW5NZXJnZVByaW9yaXR5OiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5T3B0aW9ucyB7XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBjaGVjayBmb3Igd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNoZWNrOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiB0aGUgc2VjdXJpdHkgY2hlY2sgcmVwb3J0IHNob3VsZCBiZSB3cml0dGVuIHRvIGxvZ3MuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCB0ZW1wb3JhcmlseSB0byBub3QgZXhwb3NlIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MgaW4gbG9ncy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNoZWNrTG9nOiA/Ym9vbGVhbjtcbiAgLyogVGhlIHNlY3VyaXR5IGNoZWNrIGdyb3VwcyB0byBydW4uIFRoaXMgYWxsb3dzIHRvIGFkZCBjdXN0b20gc2VjdXJpdHkgY2hlY2tzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMuIERlZmF1bHQgYXJlIHRoZSBncm91cHMgZGVmaW5lZCBpbiBgQ2hlY2tHcm91cHMuanNgLiAqL1xuICBjaGVja0dyb3VwczogPyhDaGVja0dyb3VwW10pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U2VydmVyT3B0aW9ucyB7XG4gIC8qIFdoZW4gYHRydWVgLCBhbGwgYWdncmVnYXRpb24gcXVlcmllcyBkZWZhdWx0IHRvIHVzaW5nIE1vbmdvREIgRXh0ZW5kZWQgSlNPTiAoRUpTT04pIGZvciBleHBsaWNpdCB2YWx1ZSB0eXBpbmcgYW5kIHNraXAgc2NoZW1hLWJhc2VkIHZhbHVlIGNvZXJjaW9uLiBJbmRpdmlkdWFsIHF1ZXJpZXMgY2FuIHN0aWxsIG92ZXJyaWRlIHRoaXMgdmlhIHRoZSBgcmF3VmFsdWVzYCBvcHRpb24uIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1FVRVJZX0FHR1JFR0FUSU9OX1JBV19WQUxVRVNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFnZ3JlZ2F0aW9uUmF3VmFsdWVzOiA/Ym9vbGVhbjtcbiAgLyogV2hlbiBgdHJ1ZWAsIGFsbCBhZ2dyZWdhdGlvbiBxdWVyaWVzIGRlZmF1bHQgdG8gdXNpbmcgbmF0aXZlIE1vbmdvREIgZmllbGQgbmFtZXMgKG5vIGF1dG9tYXRpYyBgY3JlYXRlZEF0YCDihpIgYF9jcmVhdGVkX2F0YCByZXdyaXRpbmcpLiBJbmRpdmlkdWFsIHF1ZXJpZXMgY2FuIHN0aWxsIG92ZXJyaWRlIHRoaXMgdmlhIHRoZSBgcmF3RmllbGROYW1lc2Agb3B0aW9uLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9RVUVSWV9BR0dSRUdBVElPTl9SQVdfRklFTERfTkFNRVNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFnZ3JlZ2F0aW9uUmF3RmllbGROYW1lczogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiBwYWdlcyBzaG91bGQgYmUgbG9jYWxpemVkOyB0aGlzIGhhcyBubyBlZmZlY3Qgb24gY3VzdG9tIHBhZ2UgcmVkaXJlY3RzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlTG9jYWxpemF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZSBmb3IgbG9jYWxpemF0aW9uOyB0aGUgdHJhbnNsYXRpb25zIHdpbGwgYmUgdXNlZCB0byBmaWxsIHRlbXBsYXRlIHBsYWNlaG9sZGVycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4gKi9cbiAgbG9jYWxpemF0aW9uSnNvblBhdGg6ID9zdHJpbmc7XG4gIC8qIFRoZSBmYWxsYmFjayBsb2NhbGUgZm9yIGxvY2FsaXphdGlvbiBpZiBubyBtYXRjaGluZyB0cmFuc2xhdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuIGxvY2FsZS4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gcHJvdmlkaW5nIHRyYW5zbGF0aW9uIHJlc291cmNlcyB2aWEgSlNPTiBmaWxlLlxuICA6REVGQVVMVDogZW4gKi9cbiAgbG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGU6ID9zdHJpbmc7XG4gIC8qIFRoZSBwbGFjZWhvbGRlciBrZXlzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBmaWxsZWQgaW4gcGFnZXM7IHRoaXMgY2FuIGJlIGEgc2ltcGxlIG9iamVjdCBvciBhIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICA6REVGQVVMVDoge30gKi9cbiAgcGxhY2Vob2xkZXJzOiA/T2JqZWN0O1xuICAvKiBJcyB0cnVlIGlmIHJlc3BvbnNlcyBzaG91bGQgYWx3YXlzIGJlIHJlZGlyZWN0cyBhbmQgbmV2ZXIgY29udGVudCwgZmFsc2UgaWYgdGhlIHJlc3BvbnNlIHR5cGUgc2hvdWxkIGRlcGVuZCBvbiB0aGUgcmVxdWVzdCB0eXBlIChHRVQgcmVxdWVzdCAtPiBjb250ZW50IHJlc3BvbnNlOyBQT1NUIHJlcXVlc3QgLT4gcmVkaXJlY3QgcmVzcG9uc2UpLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZm9yY2VSZWRpcmVjdDogP2Jvb2xlYW47XG4gIC8qIFRoZSBwYXRoIHRvIHRoZSBwYWdlcyBkaXJlY3Rvcnk7IHRoaXMgYWxzbyBkZWZpbmVzIHdoZXJlIHRoZSBzdGF0aWMgZW5kcG9pbnQgJy9hcHBzJyBwb2ludHMgdG8uIERlZmF1bHQgaXMgdGhlICcuL3B1YmxpYy8nIGRpcmVjdG9yeSBvZiB0aGUgcGFyc2Utc2VydmVyIG1vZHVsZS4gKi9cbiAgcGFnZXNQYXRoOiA/c3RyaW5nO1xuICAvKiBUaGUgQVBJIGVuZHBvaW50IGZvciB0aGUgcGFnZXMuIERlZmF1bHQgaXMgJ2FwcHMnLlxuICA6REVGQVVMVDogYXBwcyAqL1xuICBwYWdlc0VuZHBvaW50OiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMcyB0byB0aGUgY3VzdG9tIHBhZ2VzLlxuICA6REVGQVVMVDoge30gKi9cbiAgY3VzdG9tVXJsczogP1BhZ2VzQ3VzdG9tVXJsc09wdGlvbnM7XG4gIC8qIFRoZSBjdXN0b20gcm91dGVzLlxuICA6REVGQVVMVDogW10gKi9cbiAgY3VzdG9tUm91dGVzOiA/KFBhZ2VzUm91dGVbXSk7XG4gIC8qIElzIGB0cnVlYCBpZiB0aGUgcGFnZSBwYXJhbWV0ZXIgaGVhZGVycyBzaG91bGQgYmUgVVJJLWVuY29kZWQuIFRoaXMgaXMgcmVxdWlyZWQgaWYgYW55IHBhZ2UgcGFyYW1ldGVyIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBzdWNoIGFzIHRoZSBhcHAgbmFtZS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuY29kZVBhZ2VQYXJhbUhlYWRlcnM6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzUm91dGUge1xuICAvKiBUaGUgcm91dGUgcGF0aC4gKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiBUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy4gKi9cbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qIFRoZSByb3V0ZSBoYW5kbGVyIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24uICovXG4gIGhhbmRsZXI6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNDdXN0b21VcmxzT3B0aW9ucyB7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldC4gKi9cbiAgcGFzc3dvcmRSZXNldDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IGxpbmsgaW52YWxpZC4gKi9cbiAgcGFzc3dvcmRSZXNldExpbmtJbnZhbGlkOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gc3VjY2Vzcy4gKi9cbiAgcGFzc3dvcmRSZXNldFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gc3VjY2Vzcy4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgc2VuZCBmYWlsLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRGYWlsOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHJlc2VuZCBsaW5rIC0+IHN1Y2Nlc3MuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBpbnZhbGlkLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgZXhwaXJlZC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25MaW5rRXhwaXJlZDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21QYWdlc09wdGlvbnMge1xuICAvKiBpbnZhbGlkIGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRMaW5rOiA/c3RyaW5nO1xuICAvKiB2ZXJpZmljYXRpb24gbGluayBzZW5kIGZhaWwgcGFnZSBwYXRoICovXG4gIGxpbmtTZW5kRmFpbDogP3N0cmluZztcbiAgLyogY2hvb3NlIHBhc3N3b3JkIHBhZ2UgcGF0aCAqL1xuICBjaG9vc2VQYXNzd29yZDogP3N0cmluZztcbiAgLyogdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICBsaW5rU2VuZFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIHZlcmlmeSBlbWFpbCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICB2ZXJpZnlFbWFpbFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIHBhc3N3b3JkIHJlc2V0IHN1Y2Nlc3MgcGFnZSBwYXRoICovXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBpbnZhbGlkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkVmVyaWZpY2F0aW9uTGluazogP3N0cmluZztcbiAgLyogZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGggKi9cbiAgZXhwaXJlZFZlcmlmaWNhdGlvbkxpbms6ID9zdHJpbmc7XG4gIC8qIGludmFsaWQgcGFzc3dvcmQgcmVzZXQgbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZFBhc3N3b3JkUmVzZXRMaW5rOiA/c3RyaW5nO1xuICAvKiBmb3IgbWFza2luZyB1c2VyLWZhY2luZyBwYWdlcyAqL1xuICBwYXJzZUZyYW1lVVJMOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVRdWVyeU9wdGlvbnMge1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY2xhc3NOYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfTElWRVFVRVJZX0NMQVNTTkFNRVMgKi9cbiAgY2xhc3NOYW1lczogPyhzdHJpbmdbXSk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnMgKi9cbiAgcmVkaXNPcHRpb25zOiA/YW55O1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkwgKi9cbiAgcmVkaXNVUkw6ID9zdHJpbmc7XG4gIC8qIExpdmVRdWVyeSBwdWJzdWIgYWRhcHRlciAqL1xuICBwdWJTdWJBZGFwdGVyOiA/QWRhcHRlcjxQdWJTdWJBZGFwdGVyPjtcbiAgLyogU2V0cyB0aGUgbWF4aW11bSBleGVjdXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIGluIExpdmVRdWVyeS4gVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IFJlZ3VsYXIgRXhwcmVzc2lvbiBEZW5pYWwgb2YgU2VydmljZSAoUmVEb1MpIGF0dGFja3Mgd2hlcmUgYSBtYWxpY2lvdXMgcmVnZXggcGF0dGVybiBjb3VsZCBibG9jayB0aGUgZXZlbnQgbG9vcC4gQSByZWdleCB0aGF0IGV4Y2VlZHMgdGhlIHRpbWVvdXQgd2lsbCBiZSB0cmVhdGVkIGFzIG5vbi1tYXRjaGluZy48YnI+PGJyPlRoZSBwcm90ZWN0aW9uIHJ1bnMgZWFjaCByZWdleCBldmFsdWF0aW9uIGluIGFuIGlzb2xhdGVkIFZNIGNvbnRleHQgd2l0aCBhIHRpbWVvdXQuIFRoaXMgYWRkcyBhcHByb3hpbWF0ZWx5IDUwIG1pY3Jvc2Vjb25kcyBvZiBvdmVyaGVhZCBwZXIgcmVnZXggZXZhbHVhdGlvbi4gRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoaXMgaXMgbmVnbGlnaWJsZSwgYnV0IGl0IGNhbiBhZGQgdXAgaWYgeW91IGhhdmUgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBMaXZlUXVlcnkgc3Vic2NyaXB0aW9ucyB0aGF0IHVzZSBgJHJlZ2V4YCBvbiB0aGUgc2FtZSBjbGFzcy4gRm9yIGV4YW1wbGUsIDEwLDAwMCBjb25jdXJyZW50IHJlZ2V4IHN1YnNjcmlwdGlvbnMgd291bGQgYWRkIGFwcHJveGltYXRlbHkgNTAwbXMgb2YgcHJvY2Vzc2luZyB0aW1lIHBlciBvYmplY3Qgc2F2ZSBldmVudCBvbiB0aGF0IGNsYXNzLjxicj48YnI+U2V0IHRvIGAwYCB0byBkaXNhYmxlIHRoZSB0aW1lb3V0IGFuZCB1c2UgbmF0aXZlIHJlZ2V4IGV2YWx1YXRpb24gd2l0aG91dCBwcm90ZWN0aW9uLiBEZWZhdWx0cyB0byBgMTAwYC5cbiAgOkRFRkFVTFQ6IDEwMCAqL1xuICByZWdleFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyICovXG4gIHdzc0FkYXB0ZXI6ID9BZGFwdGVyPFdTU0FkYXB0ZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVRdWVyeVNlcnZlck9wdGlvbnMge1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIGFwcElkIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgYXBwSWQuKi9cbiAgYXBwSWQ6ID9zdHJpbmc7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LiovXG4gIG1hc3RlcktleTogP3N0cmluZztcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuKi9cbiAgc2VydmVyVVJMOiA/c3RyaW5nO1xuICAvKiBBIEpTT04gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGEgd2hpdGVsaXN0IG9mIGtleXMuIEl0IGlzIHVzZWQgZm9yIHZhbGlkYXRpbmcgY2xpZW50cyB3aGVuIHRoZXkgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMuKi9cbiAga2V5UGFpcnM6ID9hbnk7XG4gIC8qIE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLiovXG4gIHdlYnNvY2tldFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIE51bWJlciBpbiBtaWxsaXNlY29uZHMuIFdoZW4gY2xpZW50cyBwcm92aWRlIHRoZSBzZXNzaW9uVG9rZW4gdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIGZldGNoIGl0cyBQYXJzZVVzZXIncyBvYmplY3RJZCBmcm9tIHBhcnNlIHNlcnZlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGNhY2hlLiBUaGUgdmFsdWUgZGVmaW5lcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLCBkZWZhdWx0cyB0byA1ICogMTAwMCBtcyAoNSBzZWNvbmRzKS4qL1xuICBjYWNoZVRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIFRoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy4qL1xuICBsb2dMZXZlbDogP3N0cmluZztcbiAgLyogVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICA6REVGQVVMVDogMTMzNyAqL1xuICBwb3J0OiA/bnVtYmVyO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyICovXG4gIHdzc0FkYXB0ZXI6ID9BZGFwdGVyPFdTU0FkYXB0ZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW1wb3RlbmN5T3B0aW9ucyB7XG4gIC8qIEFuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICBwYXRoczogPyhzdHJpbmdbXSk7XG4gIC8qIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLlxuICA6REVGQVVMVDogMzAwICovXG4gIHR0bDogP251bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50TG9ja291dE9wdGlvbnMge1xuICAvKiBTZXQgdGhlIGR1cmF0aW9uIGluIG1pbnV0ZXMgdGhhdCBhIGxvY2tlZC1vdXQgYWNjb3VudCByZW1haW5zIGxvY2tlZCBvdXQgYmVmb3JlIGF1dG9tYXRpY2FsbHkgYmVjb21pbmcgdW5sb2NrZWQuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLiAqL1xuICBkdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMGAuICovXG4gIHRocmVzaG9sZDogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCAgaWYgdGhlIGFjY291bnQgc2hvdWxkIGJlIHVubG9ja2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBwYXNzd29yZCByZXNldC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdW5sb2NrT25QYXNzd29yZFJlc2V0OiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZFBvbGljeU9wdGlvbnMge1xuICAvKiBTZXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0aW9uIHBhdHRlcm4gYSBwYXNzd29yZCBtdXN0IG1hdGNoIHRvIGJlIGFjY2VwdGVkLlxuICA8YnI+PGJyPlxuICBJZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvckNhbGxiYWNrYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLiAqL1xuICB2YWxpZGF0b3JQYXR0ZXJuOiA/c3RyaW5nO1xuICAvKiAgICovXG4gIC8qIFNldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuXG4gIDxicj48YnI+XG4gIElmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yUGF0dGVybmAsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4gKi9cbiAgdmFsaWRhdG9yQ2FsbGJhY2s6ID8oKSA9PiB2b2lkO1xuICAvKiBTZXQgdGhlIGVycm9yIG1lc3NhZ2UgdG8gYmUgc2VudC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgUGFzc3dvcmQgZG9lcyBub3QgbWVldCB0aGUgUGFzc3dvcmQgUG9saWN5IHJlcXVpcmVtZW50cy5gICovXG4gIHZhbGlkYXRpb25FcnJvcjogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBkaXNhbGxvdyB0aGUgdXNlcm5hbWUgYXMgcGFydCBvZiB0aGUgcGFzc3dvcmQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGRvTm90QWxsb3dVc2VybmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBwYXNzd29yZCBleHBpcmVzLiBMb2dpbiBhdHRlbXB0cyBmYWlsIGlmIHRoZSB1c2VyIGRvZXMgbm90IHJlc2V0IHRoZSBwYXNzd29yZCBiZWZvcmUgZXhwaXJhdGlvbi4gKi9cbiAgbWF4UGFzc3dvcmRBZ2U6ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSA+PSBgMGAgYW5kIDw9IGAyMGAuXG4gIDxicj5cbiAgRGVmYXVsdCBpcyBgMGAuXG4gICovXG4gIG1heFBhc3N3b3JkSGlzdG9yeTogP251bWJlcjtcbiAgLyogU2V0IHRoZSB2YWxpZGl0eSBkdXJhdGlvbiBvZiB0aGUgcGFzc3dvcmQgcmVzZXQgdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLlxuICA8YnI+PGJyPlxuICBGb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgKi9cbiAgcmVzZXRUb2tlblZhbGlkaXR5RHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSBwYXNzd29yZCByZXNldCB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHJlc2V0VG9rZW5SZXVzZUlmVmFsaWQ6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgcmVxdWVzdCB0byByZXNldCB0aGUgcGFzc3dvcmQgc2hvdWxkIHJldHVybiBhIHN1Y2Nlc3MgcmVzcG9uc2UgZXZlbiBpZiB0aGUgcHJvdmlkZWQgZW1haWwgYWRkcmVzcyBpcyBpbnZhbGlkLCBvciBgZmFsc2VgIGlmIHRoZSByZXF1ZXN0IHNob3VsZCByZXR1cm4gYW4gZXJyb3IgcmVzcG9uc2UgaWYgdGhlIGVtYWlsIGFkZHJlc3MgaXMgaW52YWxpZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHJlc2V0UGFzc3dvcmRTdWNjZXNzT25JbnZhbGlkRW1haWw6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRPcHRpb25zIHtcbiAgLyogU2V0cyB0aGUgYWxsb3dlZCBmaWxlIGV4dGVuc2lvbnMgZm9yIHVwbG9hZGluZyBmaWxlcy4gVGhlIGV4dGVuc2lvbiBpcyBkZWZpbmVkIGFzIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW5zaW9ucywgb3IgYSByZWdleCBwYXR0ZXJuLjxicj48YnI+SXQgaXMgcmVjb21tZW5kZWQgdG8gb25seSBhbGxvdyB0aGUgZmlsZSBleHRlbnNpb25zIHRoYXQgeW91ciBhcHAgYWN0dWFsbHkgbmVlZHMsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYmxvY2tpbmcgZGFuZ2Vyb3VzIGV4dGVuc2lvbnMuIFRoaXMgYWxsb3dsaXN0IGFwcHJvYWNoIGlzIG1vcmUgc2VjdXJlIGJlY2F1c2UgbmV3IGRhbmdlcm91cyBmaWxlIGV4dGVuc2lvbnMgbWF5IGVtZXJnZSB0aGF0IGFyZSBub3QgY292ZXJlZCBieSB0aGUgZGVmYXVsdCBibG9ja2xpc3QuPGJyPjxicj5UaGUgZGVmYXVsdCBibG9ja3MgdGhlIG1vc3QgY29tbW9uIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGFyZSBrbm93biB0byBiZSByZW5kZXJlZCBhcyBhY3RpdmUgY29udGVudCBieSB3ZWIgYnJvd3NlcnMsIHN1Y2ggYXMgSFRNTCwgU1ZHLCBhbmQgWE1MIGZpbGVzLCB3aGljaCBtYXkgYmUgdXNlZCBieSBhbiBhdHRhY2tlciB0byBjb21wcm9taXNlIHRoZSBzZXNzaW9uIHRva2VuIG9mIGFub3RoZXIgdXNlciB2aWEgYWNjZXNzaW5nIHRoZSBicm93c2VyJ3MgbG9jYWwgc3RvcmFnZS4gVGhlIGJsb2NrZWQgZXh0ZW5zaW9ucyBhcmU6IGBodG1sYCwgYGh0bWAsIGBzaHRtbGAsIGB4aHRtbGAsIGB4aHRtbCt4bWxgLCBgeGh0YCwgYHN2Z2AsIGBzdmd6YCwgYHN2Zyt4bWxgLCBgeG1sYCwgYHhzbGAsIGB4c2x0YCwgYHhzbHQreG1sYCwgYHhzZGAsIGBybmdgLCBgcmRmYCwgYHJkZit4bWxgLCBgb3dsYCwgYG1hdGhtbGAsIGBtYXRobWwreG1sYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbXCJeKD8hKFt4WHNTXT9baEhdW3RUXVttTV1bbExdPyhcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1baEhdW3RUXXxbc1NdW3ZWXVtnR10oW3paXXxcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1bbU1dW2xMXXxbeFhdW3NTXVtsTF1bdFRdPyhcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1bc1NdW2REXXxbclJdW25OXVtnR118W3JSXVtkRF1bZkZdKFxcXFwrW3hYXVttTV1bbExdKT98W29PXVt3V11bbExdfFttTV1bYUFdW3RUXVtoSF1bbU1dW2xMXShcXFxcK1t4WF1bbU1dW2xMXSk/KSQpXCJdYC5cbiAgOkRFRkFVTFQ6IFtcIl4oPyEoW3hYc1NdP1toSF1bdFRdW21NXVtsTF0/KFxcXFwrW3hYXVttTV1bbExdKT98W3hYXVtoSF1bdFRdfFtzU11bdlZdW2dHXShbelpdfFxcXFwrW3hYXVttTV1bbExdKT98W3hYXVttTV1bbExdfFt4WF1bc1NdW2xMXVt0VF0/KFxcXFwrW3hYXVttTV1bbExdKT98W3hYXVtzU11bZERdfFtyUl1bbk5dW2dHXXxbclJdW2REXVtmRl0oXFxcXCtbeFhdW21NXVtsTF0pP3xbb09dW3dXXVtsTF18W21NXVthQV1bdFRdW2hIXVttTV1bbExdKFxcXFwrW3hYXVttTV1bbExdKT8pJClcIl0gKi9cbiAgZmlsZUV4dGVuc2lvbnM6ID8oc3RyaW5nW10pO1xuICAvKiAgSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnMuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW55b25lLCByZWdhcmRsZXNzIG9mIHVzZXIgYXV0aGVudGljYXRpb24uXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVGb3JQdWJsaWM6ID9ib29sZWFuO1xuICAvKiBTZXRzIHRoZSBhbGxvd2VkIGhvc3RuYW1lcyBmb3IgZmlsZSBVUkxzIHJlZmVyZW5jZWQgaW4gUGFyc2Ugb2JqZWN0cy4gV2hlbiBhIEZpbGUgb2JqZWN0IGluY2x1ZGVzIGEgVVJMLCBpdHMgaG9zdG5hbWUgbXVzdCBtYXRjaCBvbmUgb2YgdGhlc2UgZW50cmllcyB0byBiZSBhY2NlcHRlZC4gU3VwcG9ydHMgZXhhY3QgaG9zdG5hbWVzIChlLmcuLCBgJ2Nkbi5leGFtcGxlLmNvbSdgKSBhbmQgd2lsZGNhcmQgc3ViZG9tYWlucyAoZS5nLiwgYCcqLmV4YW1wbGUuY29tJ2ApLiBVc2UgYFsnKiddYCB0byBhbGxvdyBhbnkgZG9tYWluLiBVc2UgYFtdYCB0byBibG9jayBhbGwgZmlsZSBVUkxzIChvbmx5IG5hbWUtYmFzZWQgZmlsZXMgYWxsb3dlZCkuXG4gIDpERUZBVUxUOiBbXCIqXCJdICovXG4gIGFsbG93ZWRGaWxlVXJsRG9tYWluczogPyhzdHJpbmdbXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZURvd25sb2FkT3B0aW9ucyB7XG4gIC8qIElzIHRydWUgaWYgZmlsZSBkb3dubG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JBbm9ueW1vdXNVc2VyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIGRvd25sb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSBkb3dubG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW55b25lLCByZWdhcmRsZXNzIG9mIHVzZXIgYXV0aGVudGljYXRpb24uXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUZvclB1YmxpYzogP2Jvb2xlYW47XG59XG5cbi8qIFRoZSBhdmFpbGFibGUgbG9nIGxldmVscyBmb3IgUGFyc2UgU2VydmVyIGxvZ2dpbmcuIFZhbGlkIHZhbHVlcyBhcmU6PGJyPi0gYCdlcnJvcidgIC0gRXJyb3IgbGV2ZWwgKGhpZ2hlc3QgcHJpb3JpdHkpPGJyPi0gYCd3YXJuJ2AgLSBXYXJuaW5nIGxldmVsPGJyPi0gYCdpbmZvJ2AgLSBJbmZvIGxldmVsIChkZWZhdWx0KTxicj4tIGAndmVyYm9zZSdgIC0gVmVyYm9zZSBsZXZlbDxicj4tIGAnZGVidWcnYCAtIERlYnVnIGxldmVsPGJyPi0gYCdzaWxseSdgIC0gU2lsbHkgbGV2ZWwgKGxvd2VzdCBwcmlvcml0eSkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nTGV2ZWwge1xuICAvKiBFcnJvciBsZXZlbCAtIGhpZ2hlc3QgcHJpb3JpdHkgKi9cbiAgZXJyb3I6ICdlcnJvcic7XG4gIC8qIFdhcm5pbmcgbGV2ZWwgKi9cbiAgd2FybjogJ3dhcm4nO1xuICAvKiBJbmZvIGxldmVsIC0gZGVmYXVsdCAqL1xuICBpbmZvOiAnaW5mbyc7XG4gIC8qIFZlcmJvc2UgbGV2ZWwgKi9cbiAgdmVyYm9zZTogJ3ZlcmJvc2UnO1xuICAvKiBEZWJ1ZyBsZXZlbCAqL1xuICBkZWJ1ZzogJ2RlYnVnJztcbiAgLyogU2lsbHkgbGV2ZWwgLSBsb3dlc3QgcHJpb3JpdHkgKi9cbiAgc2lsbHk6ICdzaWxseSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nQ2xpZW50RXZlbnQge1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgZXZlbnQgbmFtZSB0byBsaXN0ZW4gZm9yLiBTZWUgdGhlIFtNb25nb0RCIGRyaXZlciBldmVudHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cubW9uZ29kYi5jb20vZG9jcy9kcml2ZXJzL25vZGUvY3VycmVudC9mdW5kYW1lbnRhbHMvbW9uaXRvcmluZy8pIGZvciBhdmFpbGFibGUgZXZlbnRzLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qIE9wdGlvbmFsIGFycmF5IG9mIGRvdC1ub3RhdGlvbiBwYXRocyB0byBleHRyYWN0IHNwZWNpZmljIGRhdGEgZnJvbSB0aGUgZXZlbnQgb2JqZWN0LiBJZiBub3QgcHJvdmlkZWQgb3IgZW1wdHksIHRoZSBlbnRpcmUgZXZlbnQgb2JqZWN0IHdpbGwgYmUgbG9nZ2VkLiAqL1xuICBrZXlzOiA/KHN0cmluZ1tdKTtcbiAgLyogVGhlIGxvZyBsZXZlbCB0byB1c2UgZm9yIHRoaXMgZXZlbnQuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLiBEZWZhdWx0cyB0byBgJ2luZm8nYC5cbiAgOkRFRkFVTFQ6IGluZm8gKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VPcHRpb25zIHtcbiAgLyogRW5hYmxlcyBkYXRhYmFzZSByZWFsLXRpbWUgaG9va3MgdG8gdXBkYXRlIHNpbmdsZSBzY2hlbWEgY2FjaGUuIFNldCB0byBgdHJ1ZWAgaWYgdXNpbmcgbXVsdGlwbGUgUGFyc2UgU2VydmVycyBpbnN0YW5jZXMgY29ubmVjdGVkIHRvIHRoZSBzYW1lIGRhdGFiYXNlLiBGYWlsaW5nIHRvIGRvIHNvIHdpbGwgY2F1c2UgYSBzY2hlbWEgY2hhbmdlIHRvIG5vdCBwcm9wYWdhdGUgdG8gYWxsIGluc3RhbmNlcyBhbmQgcmUtc3luY2luZyB3aWxsIG9ubHkgaGFwcGVuIHdoZW4gdGhlIGluc3RhbmNlcyByZXN0YXJ0LiBUbyB1c2UgdGhpcyBmZWF0dXJlIHdpdGggTW9uZ29EQiwgYSByZXBsaWNhIHNldCBjbHVzdGVyIHdpdGggW2NoYW5nZSBzdHJlYW1dKGh0dHBzOi8vZG9jcy5tb25nb2RiLmNvbS9tYW51YWwvY2hhbmdlU3RyZWFtcy8jYXZhaWxhYmlsaXR5KSBzdXBwb3J0IGlzIHJlcXVpcmVkLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlU2NoZW1hSG9va3M6ID9ib29sZWFuO1xuICAvKiBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgc2NoZW1hIGNhY2hlIGV4cGlyZXMgYW5kIHdpbGwgYmUgcmVmZXRjaGVkIGZyb20gdGhlIGRhdGFiYXNlLiBVc2UgdGhpcyBvcHRpb24gaWYgdXNpbmcgbXVsdGlwbGUgUGFyc2UgU2VydmVycyBpbnN0YW5jZXMgY29ubmVjdGVkIHRvIHRoZSBzYW1lIGRhdGFiYXNlLiBBIGxvdyBkdXJhdGlvbiB3aWxsIGNhdXNlIHRoZSBzY2hlbWEgY2FjaGUgdG8gYmUgdXBkYXRlZCB0b28gb2Z0ZW4sIGNhdXNpbmcgdW5uZWNlc3NhcnkgZGF0YWJhc2UgcmVhZHMuIEEgaGlnaCBkdXJhdGlvbiB3aWxsIGNhdXNlIHRoZSBzY2hlbWEgdG8gYmUgdXBkYXRlZCB0b28gcmFyZWx5LCBpbmNyZWFzaW5nIHRoZSB0aW1lIHJlcXVpcmVkIHVudGlsIHNjaGVtYSBjaGFuZ2VzIHByb3BhZ2F0ZSB0byBhbGwgc2VydmVyIGluc3RhbmNlcy4gVGhpcyBmZWF0dXJlIGNhbiBiZSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIG9yIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG9wdGlvbiBgZW5hYmxlU2NoZW1hSG9va3NgLiBEZWZhdWx0IGlzIGluZmluaXRlIHdoaWNoIG1lYW5zIHRoZSBzY2hlbWEgY2FjaGUgbmV2ZXIgZXhwaXJlcy4gKi9cbiAgc2NoZW1hQ2FjaGVUdGw6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHdoZXRoZXIgdG8gcmV0cnkgZmFpbGVkIHdyaXRlcy4gKi9cbiAgcmV0cnlXcml0ZXM6ID9ib29sZWFuO1xuICAvKiBUaGUgbnVtYmVyIG9mIGRvY3VtZW50cyBwZXIgYmF0Y2ggZm9yIE1vbmdvREIgY3Vyc29yIGBnZXRNb3JlYCBvcGVyYXRpb25zLiBBIGxvd2VyIHZhbHVlIHJlZHVjZXMgbWVtb3J5IHVzYWdlIHBlciBiYXRjaDsgYSBoaWdoZXIgdmFsdWUgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIG5ldHdvcmsgcm91bmQtdHJpcHMuXG4gIDpERUZBVUxUOiAxMDAwICovXG4gIGJhdGNoU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgYSBjdW11bGF0aXZlIHRpbWUgbGltaXQgaW4gbWlsbGlzZWNvbmRzIGZvciBwcm9jZXNzaW5nIG9wZXJhdGlvbnMgb24gYSBjdXJzb3IuICovXG4gIG1heFRpbWVNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1heGltdW0gcmVwbGljYXRpb24gbGFnIGZvciByZWFkcyBmcm9tIHNlY29uZGFyeSBub2Rlcy4qL1xuICBtYXhTdGFsZW5lc3NTZWNvbmRzOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB0aGUgbWluaW11bSBudW1iZXIgb2Ygb3BlbmVkLCBjYWNoZWQsIHJlYWR5LXRvLXVzZSBkYXRhYmFzZSBjb25uZWN0aW9ucyBtYWludGFpbmVkIGJ5IHRoZSBkcml2ZXIuICovXG4gIG1pblBvb2xTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbmVkLCBjYWNoZWQsIHJlYWR5LXRvLXVzZSBkYXRhYmFzZSBjb25uZWN0aW9ucyBtYWludGFpbmVkIGJ5IHRoZSBkcml2ZXIuICovXG4gIG1heFBvb2xTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgYSBzZXJ2ZXIgdG8gYmUgY29uc2lkZXJlZCBzdWl0YWJsZSBmb3Igc2VsZWN0aW9uLiAqL1xuICBzZXJ2ZXJTZWxlY3Rpb25UaW1lb3V0TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgYSBjb25uZWN0aW9uIGNhbiByZW1haW4gaWRsZSBpbiB0aGUgY29ubmVjdGlvbiBwb29sIGJlZm9yZSBiZWluZyByZW1vdmVkIGFuZCBjbG9zZWQuICovXG4gIG1heElkbGVUaW1lTVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgZnJlcXVlbmN5IGluIG1pbGxpc2Vjb25kcyBhdCB3aGljaCB0aGUgZHJpdmVyIGNoZWNrcyB0aGUgc3RhdGUgb2YgdGhlIE1vbmdvREIgZGVwbG95bWVudC4gKi9cbiAgaGVhcnRiZWF0RnJlcXVlbmN5TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdCB0byBlc3RhYmxpc2ggYSBzaW5nbGUgVENQIHNvY2tldCBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgYmVmb3JlIHJhaXNpbmcgYW4gZXJyb3IuIFNwZWNpZnlpbmcgMCBkaXNhYmxlcyB0aGUgY29ubmVjdGlvbiB0aW1lb3V0LiAqL1xuICBjb25uZWN0VGltZW91dE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHNwZW50IGF0dGVtcHRpbmcgdG8gc2VuZCBvciByZWNlaXZlIG9uIGEgc29ja2V0IGJlZm9yZSB0aW1pbmcgb3V0LiBTcGVjaWZ5aW5nIDAgbWVhbnMgbm8gdGltZW91dC4gKi9cbiAgc29ja2V0VGltZW91dE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB3aGV0aGVyIHRoZSBzb2NrZXQgYXR0ZW1wdHMgdG8gY29ubmVjdCB0byBJUHY2IGFuZCBJUHY0IGFkZHJlc3NlcyB1bnRpbCBhIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuIElmIGF2YWlsYWJsZSwgdGhlIGRyaXZlciB3aWxsIHNlbGVjdCB0aGUgZmlyc3QgSVB2NiBhZGRyZXNzLiAqL1xuICBhdXRvU2VsZWN0RmFtaWx5OiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgYSBjb25uZWN0aW9uIGF0dGVtcHQgdG8gZmluaXNoIGJlZm9yZSB0cnlpbmcgdGhlIG5leHQgYWRkcmVzcyB3aGVuIHVzaW5nIHRoZSBhdXRvU2VsZWN0RmFtaWx5IG9wdGlvbi4gSWYgc2V0IHRvIGEgcG9zaXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gMTAsIHRoZSB2YWx1ZSAxMCBpcyB1c2VkIGluc3RlYWQuICovXG4gIGF1dG9TZWxlY3RGYW1pbHlBdHRlbXB0VGltZW91dDogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0aGF0IG1heSBiZSBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBlc3RhYmxpc2hlZCBjb25jdXJyZW50bHkgYnkgdGhlIGNvbm5lY3Rpb24gcG9vbC4gKi9cbiAgbWF4Q29ubmVjdGluZzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgYSB0aHJlYWQgY2FuIHdhaXQgZm9yIGEgY29ubmVjdGlvbiB0byBiZWNvbWUgYXZhaWxhYmxlLiAqL1xuICB3YWl0UXVldWVUaW1lb3V0TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgcmVwbGljYSBzZXQsIGlmIHRoZSBtb25nb2QgaXMgYSBtZW1iZXIgb2YgYSByZXBsaWNhIHNldC4gKi9cbiAgcmVwbGljYVNldDogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBmb3JjZSBhIFNpbmdsZSB0b3BvbG9neSB0eXBlIHdpdGggYSBjb25uZWN0aW9uIHN0cmluZyBjb250YWluaW5nIG9uZSBob3N0LiAqL1xuICBkaXJlY3RDb25uZWN0aW9uOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBpbnN0cnVjdCB0aGUgZHJpdmVyIGl0IGlzIGNvbm5lY3RpbmcgdG8gYSBsb2FkIGJhbGFuY2VyIGZyb250aW5nIGEgbW9uZ29zIGxpa2Ugc2VydmljZS4gKi9cbiAgbG9hZEJhbGFuY2VkOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBzaXplIChpbiBtaWxsaXNlY29uZHMpIG9mIHRoZSBsYXRlbmN5IHdpbmRvdyBmb3Igc2VsZWN0aW5nIGFtb25nIG11bHRpcGxlIHN1aXRhYmxlIE1vbmdvREIgaW5zdGFuY2VzLiAqL1xuICBsb2NhbFRocmVzaG9sZE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGhvc3RzIHRvIGNvbm5lY3QgdG8gd2hlbiB1c2luZyBhbiBzcnYgY29ubmVjdGlvbiBzdHJpbmcsIGEgc2V0dGluZyBvZiAwIG1lYW5zIHVubGltaXRlZCBob3N0cy4gKi9cbiAgc3J2TWF4SG9zdHM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gbW9kaWZ5IHRoZSBzcnYgVVJJIHNlcnZpY2UgbmFtZS4gKi9cbiAgc3J2U2VydmljZU5hbWU6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZW5hYmxlIG9yIGRpc2FibGUgVExTL1NTTCBmb3IgdGhlIGNvbm5lY3Rpb24uICovXG4gIHRsczogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZW5hYmxlIG9yIGRpc2FibGUgVExTL1NTTCBmb3IgdGhlIGNvbm5lY3Rpb24gKGVxdWl2YWxlbnQgdG8gdGxzIG9wdGlvbikuICovXG4gIHNzbDogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgYSBsb2NhbCAucGVtIGZpbGUgdGhhdCBjb250YWlucyB0aGUgY2xpZW50J3MgVExTL1NTTCBjZXJ0aWZpY2F0ZSBhbmQga2V5LiAqL1xuICB0bHNDZXJ0aWZpY2F0ZUtleUZpbGU6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgcGFzc3dvcmQgdG8gZGVjcnlwdCB0aGUgdGxzQ2VydGlmaWNhdGVLZXlGaWxlLiAqL1xuICB0bHNDZXJ0aWZpY2F0ZUtleUZpbGVQYXNzd29yZDogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBhIGxvY2FsIC5wZW0gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSByb290IGNlcnRpZmljYXRlIGNoYWluIGZyb20gdGhlIENlcnRpZmljYXRlIEF1dGhvcml0eS4gKi9cbiAgdGxzQ0FGaWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGJ5cGFzcyB2YWxpZGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHRoZSBtb25nb2QvbW9uZ29zIGluc3RhbmNlLiAqL1xuICB0bHNBbGxvd0ludmFsaWRDZXJ0aWZpY2F0ZXM6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGRpc2FibGUgaG9zdG5hbWUgdmFsaWRhdGlvbiBvZiB0aGUgY2VydGlmaWNhdGUgcHJlc2VudGVkIGJ5IHRoZSBtb25nb2QvbW9uZ29zIGluc3RhbmNlLiAqL1xuICB0bHNBbGxvd0ludmFsaWRIb3N0bmFtZXM6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGRpc2FibGUgdmFyaW91cyBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9ucy4gKi9cbiAgdGxzSW5zZWN1cmU6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgYW4gYXJyYXkgb3IgY29tbWEtZGVsaW1pdGVkIHN0cmluZyBvZiBjb21wcmVzc29ycyB0byBlbmFibGUgbmV0d29yayBjb21wcmVzc2lvbiBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoaXMgY2xpZW50IGFuZCBhIG1vbmdvZC9tb25nb3MgaW5zdGFuY2UuICovXG4gIGNvbXByZXNzb3JzOiA/KHN0cmluZ1tdIHwgc3RyaW5nKTtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBjb21wcmVzc2lvbiBsZXZlbCBpZiB1c2luZyB6bGliIGZvciBuZXR3b3JrIGNvbXByZXNzaW9uICgwLTkpLiAqL1xuICB6bGliQ29tcHJlc3Npb25MZXZlbDogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSByZWFkIHByZWZlcmVuY2VzIGZvciB0aGlzIGNvbm5lY3Rpb24uICovXG4gIHJlYWRQcmVmZXJlbmNlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHRhZ3MgZG9jdW1lbnQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb2xvbi1zZXBhcmF0ZWQga2V5LXZhbHVlIHBhaXJzLiAqL1xuICByZWFkUHJlZmVyZW5jZVRhZ3M6ID8oYW55W10pO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGxldmVsIG9mIGlzb2xhdGlvbi4gKi9cbiAgcmVhZENvbmNlcm5MZXZlbDogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBkYXRhYmFzZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlcidzIGNyZWRlbnRpYWxzLiAqL1xuICBhdXRoU291cmNlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSB0aGF0IE1vbmdvREIgd2lsbCB1c2UgdG8gYXV0aGVudGljYXRlIHRoZSBjb25uZWN0aW9uLiAqL1xuICBhdXRoTWVjaGFuaXNtOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgcHJvcGVydGllcyBmb3IgdGhlIHNwZWNpZmllZCBhdXRoTWVjaGFuaXNtIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29sb24tc2VwYXJhdGVkIGtleS12YWx1ZSBwYWlycy4gKi9cbiAgYXV0aE1lY2hhbmlzbVByb3BlcnRpZXM6ID9hbnk7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCBjcmVhdGVkIHRoaXMgTW9uZ29DbGllbnQgaW5zdGFuY2UuICovXG4gIGFwcE5hbWU6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZW5hYmxlIHJldHJ5YWJsZSByZWFkcy4gKi9cbiAgcmV0cnlSZWFkczogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZm9yY2Ugc2VydmVyIHRvIGFzc2lnbiBfaWQgdmFsdWVzIGluc3RlYWQgb2YgZHJpdmVyLiAqL1xuICBmb3JjZVNlcnZlck9iamVjdElkOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBpbnN0cnVjdCB0aGUgZHJpdmVyIG1vbml0b3JzIHRvIHVzZSBhIHNwZWNpZmljIG1vbml0b3JpbmcgbW9kZS4gKi9cbiAgc2VydmVyTW9uaXRvcmluZ01vZGU6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gY29uZmlndXJlIGEgU29ja3M1IHByb3h5IGhvc3QgdXNlZCBmb3IgY3JlYXRpbmcgVENQIGNvbm5lY3Rpb25zLiAqL1xuICBwcm94eUhvc3Q6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gY29uZmlndXJlIGEgU29ja3M1IHByb3h5IHBvcnQgdXNlZCBmb3IgY3JlYXRpbmcgVENQIGNvbm5lY3Rpb25zLiAqL1xuICBwcm94eVBvcnQ6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gY29uZmlndXJlIGEgU29ja3M1IHByb3h5IHVzZXJuYW1lIHdoZW4gdGhlIHByb3h5IHJlcXVpcmVzIHVzZXJuYW1lL3Bhc3N3b3JkIGF1dGhlbnRpY2F0aW9uLiAqL1xuICBwcm94eVVzZXJuYW1lOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSBwYXNzd29yZCB3aGVuIHRoZSBwcm94eSByZXF1aXJlcyB1c2VybmFtZS9wYXNzd29yZCBhdXRoZW50aWNhdGlvbi4gKi9cbiAgcHJveHlQYXNzd29yZDogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBpbmRleGVzIG9uIHRoZSBlbWFpbCBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIGNhc2UtaW5zZW5zaXRpdmUgaW5kZXggb24gdGhlIGVtYWlsIGZpZWxkIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhVc2VyRW1haWxDYXNlSW5zZW5zaXRpdmU6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGFuIGluZGV4IG9uIHRoZSBfZW1haWxfdmVyaWZ5X3Rva2VuIGZpZWxkIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhVc2VyRW1haWxWZXJpZnlUb2tlbjogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYW4gaW5kZXggb24gdGhlIF9wZXJpc2hhYmxlX3Rva2VuIGZpZWxkIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhVc2VyUGFzc3dvcmRSZXNldFRva2VuOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBpbmRleGVzIG9uIHRoZSB1c2VybmFtZSBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclVzZXJuYW1lOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIGNhc2UtaW5zZW5zaXRpdmUgaW5kZXggb24gdGhlIHVzZXJuYW1lIGZpZWxkIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhVc2VyVXNlcm5hbWVDYXNlSW5zZW5zaXRpdmU6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHVuaXF1ZSBpbmRleGVzIG9uIHRoZSBhdXRoRGF0YSBmaWVsZHMgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gZm9yIGVhY2ggY29uZmlndXJlZCBhdXRoIHByb3ZpZGVyIG9uIHNlcnZlciBzdGFydCwgaW5jbHVkaW5nIGBhbm9ueW1vdXNgIHdoZW4gYW5vbnltb3VzIHVzZXJzIGFyZSBlbmFibGVkLiBUaGVzZSBpbmRleGVzIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBjb25jdXJyZW50IHNpZ251cHMgd2l0aCB0aGUgc2FtZSBhdXRoRGF0YS4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleGVzLCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleGVzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4QXV0aERhdGFVbmlxdWVuZXNzOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVuaXF1ZSBpbmRleCBvbiB0aGUgbmFtZSBmaWVsZCBvZiB0aGUgX1JvbGUgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4Um9sZU5hbWU6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdmFsaWRhdGlvbiBvZiBpbmRleCBmaWVsZHMuIFdoZW4gZGlzYWJsZWQsIGluZGV4ZXMgY2FuIGJlIGNyZWF0ZWQgZXZlbiBpZiB0aGUgZmllbGRzIGRvIG5vdCBleGlzdCBpbiB0aGUgc2NoZW1hLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBjcmVhdGluZyBpbmRleGVzIG9uIGZpZWxkcyB0aGF0IHdpbGwgYmUgYWRkZWQgbGF0ZXIuICovXG4gIGRpc2FibGVJbmRleEZpZWxkVmFsaWRhdGlvbjogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYWxsb3cgYFBhcnNlLlF1ZXJ5LmV4cGxhaW5gIHdpdGhvdXQgbWFzdGVyIGtleS48YnI+PGJyPuKaoO+4jyBFbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgZXhwb3NlIHNlbnNpdGl2ZSBxdWVyeSBwZXJmb3JtYW5jZSBkYXRhIHRvIHVuYXV0aG9yaXplZCB1c2VycyBhbmQgY291bGQgcG90ZW50aWFsbHkgYmUgZXhwbG9pdGVkIGZvciBtYWxpY2lvdXMgcHVycG9zZXMuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd1B1YmxpY0V4cGxhaW46ID9ib29sZWFuO1xuICAvKiBBbiBhcnJheSBvZiBNb25nb0RCIGNsaWVudCBldmVudCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUgbG9nZ2luZyBvZiBzcGVjaWZpYyBldmVudHMuICovXG4gIGxvZ0NsaWVudEV2ZW50czogPyhMb2dDbGllbnRFdmVudFtdKTtcbiAgLyogQ3VzdG9tIG1ldGFkYXRhIHRvIGFwcGVuZCB0byBkYXRhYmFzZSBjbGllbnQgY29ubmVjdGlvbnMgZm9yIGlkZW50aWZ5aW5nIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgaW4gZGF0YWJhc2UgbG9ncy4gSWYgc2V0LCB0aGlzIG1ldGFkYXRhIHdpbGwgYmUgdmlzaWJsZSBpbiBkYXRhYmFzZSBsb2dzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRzaGFrZXMuIFRoaXMgY2FuIGhlbHAgd2l0aCBkZWJ1Z2dpbmcgYW5kIG1vbml0b3JpbmcgaW4gZGVwbG95bWVudHMgd2l0aCBtdWx0aXBsZSBkYXRhYmFzZSBjbGllbnRzLiBTZXQgYG5hbWVgIHRvIGlkZW50aWZ5IHlvdXIgYXBwbGljYXRpb24gKGUuZy4sICdNeUFwcCcpIGFuZCBgdmVyc2lvbmAgdG8geW91ciBhcHBsaWNhdGlvbidzIHZlcnNpb24uIExlYXZlIHVuZGVmaW5lZCAoZGVmYXVsdCkgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUgYW5kIGF2b2lkIHRoZSBhZGRpdGlvbmFsIGRhdGEgdHJhbnNmZXIgb3ZlcmhlYWQuICovXG4gIGNsaWVudE1ldGFkYXRhOiA/RGF0YWJhc2VPcHRpb25zQ2xpZW50TWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VPcHRpb25zQ2xpZW50TWV0YWRhdGEge1xuICAvKiBUaGUgbmFtZSB0byBpZGVudGlmeSB5b3VyIGFwcGxpY2F0aW9uIGluIGRhdGFiYXNlIGxvZ3MgKGUuZy4sICdNeUFwcCcpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qIFRoZSB2ZXJzaW9uIG9mIHlvdXIgYXBwbGljYXRpb24gKGUuZy4sICcxLjAuMCcpLiAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEFkYXB0ZXIge1xuICAvKiBJcyBgdHJ1ZWAgaWYgdGhlIGF1dGggYWRhcHRlciBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlXG4gIDpFTlY6XG4gICovXG4gIGVuYWJsZWQ6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0xldmVscyB7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIFRyaWdnZXJzIGBhZnRlclNhdmVgLCBgYWZ0ZXJEZWxldGVgLCBgYWZ0ZXJGaW5kYCwgYGFmdGVyTG9nb3V0YC4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICB0cmlnZ2VyQWZ0ZXI6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIFRyaWdnZXJzIGBiZWZvcmVTYXZlYCwgYGJlZm9yZURlbGV0ZWAsIGBiZWZvcmVGaW5kYCwgYGJlZm9yZUxvZ2luYCBvbiBzdWNjZXNzLiBEZWZhdWx0IGlzIGBpbmZvYC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuXG4gIDpERUZBVUxUOiBpbmZvXG4gICovXG4gIHRyaWdnZXJCZWZvcmVTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBUcmlnZ2VycyBgYmVmb3JlU2F2ZWAsIGBiZWZvcmVEZWxldGVgLCBgYmVmb3JlRmluZGAsIGBiZWZvcmVMb2dpbmAgb24gZXJyb3IuIERlZmF1bHQgaXMgYGVycm9yYC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuXG4gIDpERUZBVUxUOiBlcnJvclxuICAqL1xuICB0cmlnZ2VyQmVmb3JlRXJyb3I6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIEZ1bmN0aW9ucyBvbiBzdWNjZXNzLiBEZWZhdWx0IGlzIGBpbmZvYC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuXG4gIDpERUZBVUxUOiBpbmZvXG4gICovXG4gIGNsb3VkRnVuY3Rpb25TdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBGdW5jdGlvbnMgb24gZXJyb3IuIERlZmF1bHQgaXMgYGVycm9yYC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuXG4gIDpERUZBVUxUOiBlcnJvclxuICAqL1xuICBjbG91ZEZ1bmN0aW9uRXJyb3I6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIHdoZW4gYSBzaWduLXVwIGZhaWxzIGJlY2F1c2UgdGhlIHVzZXJuYW1lIGFscmVhZHkgZXhpc3RzLiBEZWZhdWx0IGlzIGBpbmZvYC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuXG4gIDpERUZBVUxUOiBpbmZvXG4gICovXG4gIHNpZ251cFVzZXJuYW1lVGFrZW46ID9zdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsSUFBQUEsaUJBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "9.10.1-alpha.2",
3
+ "version": "9.10.1-alpha.4",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {
@@ -60,17 +60,17 @@
60
60
  "tv4": "1.3.0",
61
61
  "winston": "3.19.0",
62
62
  "winston-daily-rotate-file": "5.0.0",
63
- "ws": "8.20.0"
63
+ "ws": "8.21.0"
64
64
  },
65
65
  "devDependencies": {
66
- "@actions/core": "3.0.0",
66
+ "@actions/core": "3.0.1",
67
67
  "@apollo/client": "3.13.8",
68
68
  "@babel/cli": "7.28.6",
69
- "@babel/core": "7.29.6",
69
+ "@babel/core": "7.29.7",
70
70
  "@babel/eslint-parser": "7.28.6",
71
71
  "@babel/plugin-proposal-object-rest-spread": "7.20.7",
72
72
  "@babel/plugin-transform-flow-strip-types": "7.27.1",
73
- "@babel/preset-env": "7.29.2",
73
+ "@babel/preset-env": "7.29.7",
74
74
  "@babel/preset-typescript": "7.27.1",
75
75
  "@saithodev/semantic-release-backmerge": "4.0.1",
76
76
  "@semantic-release/changelog": "6.0.3",
@@ -78,11 +78,11 @@
78
78
  "@semantic-release/git": "10.0.1",
79
79
  "@semantic-release/github": "12.0.6",
80
80
  "@semantic-release/npm": "13.0.0",
81
- "@semantic-release/release-notes-generator": "14.1.0",
81
+ "@semantic-release/release-notes-generator": "14.1.1",
82
82
  "all-node-versions": "13.0.1",
83
83
  "apollo-upload-client": "18.0.1",
84
84
  "clean-jsdoc-theme": "4.3.0",
85
- "cross-env": "7.0.3",
85
+ "cross-env": "10.1.0",
86
86
  "deep-diff": "1.0.2",
87
87
  "eslint": "9.27.0",
88
88
  "eslint-plugin-expect-type": "0.6.2",
@@ -99,7 +99,7 @@
99
99
  "madge": "8.0.0",
100
100
  "mock-files-adapter": "file:spec/dependencies/mock-files-adapter",
101
101
  "mock-mail-adapter": "file:spec/dependencies/mock-mail-adapter",
102
- "mongodb-runner": "5.9.3",
102
+ "mongodb-runner": "6.8.3",
103
103
  "node-abort-controller": "3.1.1",
104
104
  "node-fetch": "3.3.2",
105
105
  "nyc": "17.1.0",