badmfck-api-server 2.7.9 → 2.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -88,7 +88,7 @@ async function Initializer(services) {
88
88
  exports.Initializer = Initializer;
89
89
  class APIService extends BaseService_1.BaseService {
90
90
  static nextLogID = 0;
91
- version = "2.7.9";
91
+ version = "2.8.1";
92
92
  options;
93
93
  monitor;
94
94
  monitorIndexFile;
@@ -510,4 +510,3 @@ class APIService extends BaseService_1.BaseService {
510
510
  }
511
511
  }
512
512
  exports.APIService = APIService;
513
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGlTZXJ2ZXIvQVBJU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3RDtBQUN4RCwrQ0FBeUQ7QUFDekQsZ0RBQXVCO0FBRXZCLGlEQUE0RDtBQUM1RCw0RUFBc0U7QUFFdEUsbURBQWtDO0FBQ2xDLDZDQUF5RDtBQUN6RCwrQ0FBMkM7QUFDM0MsZ0RBQXVCO0FBQ3ZCLG9EQUE0QjtBQUM1Qiw0Q0FBbUI7QUFDbkIsNEVBQTJDO0FBQzNDLDRDQUFtQjtBQUNuQixnREFBNEM7QUFDNUMsa0RBQThDO0FBQzlDLGdEQUF1QjtBQUN2QixpREFBNkM7QUFFN0MsK0NBQTJDO0FBQzNDLGdGQUE0RTtBQW1DNUUsU0FBZ0IsaUJBQWlCO0lBQ2hDLE9BQU87UUFDTixJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxPQUFPO1FBQ3JCLGlCQUFpQixFQUFFO1lBQ2xCLHVCQUF1QjtTQUN2QjtRQUNELFNBQVMsRUFBRSxFQUFFO1FBQ2IsU0FBUyxFQUFDLE1BQU07UUFDaEIsWUFBWSxFQUFFLFVBQVUsR0FBNkI7WUFDcEQsSUFBQSxvQkFBTyxFQUFDLGtCQUFrQixFQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEVBQUMsVUFBUyxHQUFPO1lBQ3ZCLElBQUEscUJBQVEsRUFBQyxrQkFBa0IsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsdUJBQXVCLEVBQUMsS0FBSztRQUM3QixTQUFTLEVBQUMsRUFBRSxHQUFDLElBQUksR0FBQyxJQUFJO1FBQ3RCLFdBQVcsRUFBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFlBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBQyxhQUFhLENBQUM7S0FDbkQsQ0FBQTtBQUNGLENBQUM7QUFuQkQsOENBbUJDO0FBRVksUUFBQSxrQkFB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QWEsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQTtZQUNoRSxPQUFPLElBQUksQ0FBQztTQUNaO1FBRUQsSUFBRyxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUM7WUFDM0IsSUFBRyxDQUFDLE1BQU07Z0JBQ1QsTUFBTSxHQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNqQixLQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBQztnQkFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUcsTUFBTSxJQUFFLENBQUMsRUFBQztvQkFDWixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUMsYUFBYSxHQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO29CQUNyRixNQUFNO2lCQUNOO2FBQ0Q7U0FDRDtRQUNELE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQztJQUN2QixDQUFDOztBQWhoQkYsZ0NBa2hCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHByZXNzLCB7IEFwcGxpY2F0aW9uLCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnXG5pbXBvcnQgeyBCYXNlU2VydmljZSwgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9CYXNlU2VydmljZSdcbmltcG9ydCBjb3JzIGZyb20gJ2NvcnMnXG5pbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHsgQmFzZUVuZHBvaW50LCBJQmFzZUVuZHBvaW50IH0gZnJvbSAnLi9CYXNlRW5kcG9pbnQnXG5pbXBvcnQgRGVmYXVsdEVycm9ycywgeyBFcnJvclV0aWxzIH0gZnJvbSAnLi9zdHJ1Y3R1cmVzL0RlZmF1bHRFcnJvcnMnXG5pbXBvcnQgeyBIVFRQUmVxdWVzdFZPLCBJRXJyb3IsIFRyYW5zZmVyUGFja2V0Vk8gfSBmcm9tICcuL3N0cnVjdHVyZXMvSW50ZXJmYWNlcydcbmltcG9ydCB7UmVxfSBmcm9tIFwiYmFkbWZjay1zaWduYWxcIlxuaW1wb3J0IHsgbG9nQ3JpdCwgbG9nRXJyb3IsIGxvZ0luZm8gfSBmcm9tICcuL0xvZ1NlcnZpY2UnXG5pbXBvcnQgeyBNb25pdG9yIH0gZnJvbSAnLi9tb25pdG9yL01vbml0b3InXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IGZpbGVVcGxvYWQgZnJvbSAnZXhwcmVzcy1maWxldXBsb2FkJ1xuaW1wb3J0IG9zIGZyb20gXCJvc1wiXG5pbXBvcnQgeyBMaXZlbmVzcyB9IGZyb20gJy4vcm91dGVzL0xpdmVuZXNzJ1xuaW1wb3J0IHsgUmVhZGluZXNzIH0gZnJvbSAnLi9yb3V0ZXMvUmVhZGluZXNzJ1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCdcbmltcG9ydCB7IGlzTXlzcWxFcnJvciB9IGZyb20gJy4vTXlzcWxTZXJ2aWNlJ1xuaW1wb3J0IHsgTXlzcWxFcnJvciB9IGZyb20gJ215c3FsJ1xuaW1wb3J0IHsgU3RhdFNlcnZpY2UgfSBmcm9tICcuL1N0YXRTZXJ2aWNlJ1xuaW1wb3J0IHsgRXh0ZXJuYWxTZXJ2aWNlRW5kcG9pbnQgfSBmcm9tICcuL2V4dGVybmFsL0V4dGVybmFsU2VydmljZUVuZHBvaW50J1xuXG5cblxuZXhwb3J0IGludGVyZmFjZSBBUElTZXJ2aWNlTmV0d29ya0xvZ0l0ZW17XHRcblx0aWQ6bnVtYmVyLFxuXHRjcmVhdGVkOm51bWJlcixcblx0dGltZTpudW1iZXIsXG5cdHJlZmVyZXI/OnN0cmluZyxcblx0cmVxdWVzdDp7W2tleTpzdHJpbmddOmFueX0sXG5cdHJlc3BvbnNlOntba2V5OnN0cmluZ106YW55fVxuXHRlcnJvcj86c3RyaW5nfG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBUElTZXJ2aWNlT3B0aW9uc3tcblx0cG9ydDpudW1iZXIsXG5cdGJhc2VFbmRQb2ludDpzdHJpbmcgLy8gXCIvYXBpL1wiXG5cdGNvcnNIb3N0V2hpdGVMaXN0OnN0cmluZ1tdLFxuXHRlbmRwb2ludHM6SUJhc2VFbmRwb2ludFtdLFxuXHRqc29uTGltaXQ6c3RyaW5nIC8vIFwiMTBtYlwiXG5cdG9uTmV0d29ya0xvZz86KChsb2c6QVBJU2VydmljZU5ldHdvcmtMb2dJdGVtKT0+dm9pZCl8bnVsbFxuXHRvbkVycm9yPzooKC4uLnJlc3Q6YW55W10pPT52b2lkKXxudWxsXG5cdGlzUHJvZHVjdGlvbkVudmlyb25tZW50OmJvb2xlYW4sXG5cdGludGVyY2VwdG9yPzpJQmFzZUVuZHBvaW50LFxuXHRwb3N0cHJvZHVjZXI/OihyZXE6SFRUUFJlcXVlc3RWT3x1bmRlZmluZWR8bnVsbCxyZXM6UmVzcG9uc2UsZGF0YTpUcmFuc2ZlclBhY2tldFZPPGFueT4scmVxdWVzdFRpbWU6bnVtYmVyLGVuZHBvaW50PzpzdHJpbmcsbG9nPzpBUElTZXJ2aWNlTmV0d29ya0xvZ0l0ZW18bnVsbCk9PlByb21pc2U8VHJhbnNmZXJQYWNrZXRWTz5cblx0cHJlcHJvZHVjZXI/OihyZXE6SFRUUFJlcXVlc3RWT3x1bmRlZmluZWR8bnVsbCk9PmFueVxuXHRcblx0bW9uaXRvcj86e2xvZ2luOnN0cmluZyxwYXNzd29yZDpzdHJpbmd9W11cblx0Ly9kZXBsb3ltZW50Pzp7bG9naW46c3RyaW5nLHBhc3N3b3JkOnN0cmluZ31cblx0YXBwVmVyc2lvbj86c3RyaW5nXG5cblx0ZmlsZVRlbXBEaXI6c3RyaW5nO1xuXHRmaWxlTGltaXQ6bnVtYmVyIC8vIGJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCk6QVBJU2VydmljZU9wdGlvbnN7XG5cdHJldHVybiB7XG5cdFx0cG9ydDogODA5MSxcblx0XHRiYXNlRW5kUG9pbnQ6ICcvYXBpLycsXG5cdFx0Y29yc0hvc3RXaGl0ZUxpc3Q6IFtcblx0XHRcdCdodHRwOi8vbG9jYWxob3N0OjMwMDAnLFxuXHRcdF0sXG5cdFx0ZW5kcG9pbnRzOiBbXSxcblx0XHRqc29uTGltaXQ6XCIxMG1iXCIsXG5cdFx0b25OZXR3b3JrTG9nOiBmdW5jdGlvbiAobG9nOiBBUElTZXJ2aWNlTmV0d29ya0xvZ0l0ZW0pOiB2b2lkIHtcblx0XHRcdGxvZ0luZm8oXCIke0FQSVNlcnZpY2UuanN9XCIsbG9nKVxuXHRcdH0sXG5cdFx0b25FcnJvcjpmdW5jdGlvbihlcnI6YW55KXtcblx0XHRcdGxvZ0Vycm9yKFwiJHtBUElTZXJ2aWNlLmpzfVwiLGVycik7XG5cdFx0fSxcblx0XHRpc1Byb2R1Y3Rpb25FbnZpcm9ubWVudDpmYWxzZSxcblx0XHRmaWxlTGltaXQ6NTAqMTAyNCoxMDI0LFxuXHRcdGZpbGVUZW1wRGlyOnBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSxcImZpbGVUZW1wRGlyXCIpXG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IFJFUV9DUkVBVEVfTkVUX0xPRzpSZXE8dm9pZCxBUElTZXJ2aWNlTmV0d29ya0xvZ0l0ZW0+ID0gbmV3IFJlcSh1bmRlZmluZWQsXCJSRVFfQ1JFQVRFX05FVF9MT0dcIik7XG5leHBvcnQgY29uc3QgUkVRX0hUVFBfTE9HOlJlcTx2b2lkLEFQSVNlcnZpY2VOZXR3b3JrTG9nSXRlbVtdPiA9IG5ldyBSZXEodW5kZWZpbmVkLFwiUkVRX0hUVFBfTE9HXCIpO1xuZXhwb3J0IGNvbnN0IFJFUV9IVFRQX1JFUVVFU1RTX0NPVU5UOlJlcTx2b2lkLG51bWJlcj4gPSBuZXcgUmVxKHVuZGVmaW5lZCxcIlJFUV9IVFRQX1JFUVVFU1RTX0NPVU5UXCIpO1xuZXhwb3J0IGNvbnN0IFJFUV9IVFRQX1NFUlZFUjpSZXE8dm9pZCx7ZXhwcmVzczpBcHBsaWNhdGlvbixodHRwOmh0dHAuU2VydmVyfT4gPSBuZXcgUmVxKHVuZGVmaW5lZCxcIlJFUV9IVFRQX1NFUlZFUlwiKTtcbmV4cG9ydCBjb25zdCBSRVFfSU5URVJOQUxfQ0FMTDpSZXE8SFRUUFJlcXVlc3RWTyxJRXJyb3J8YW55PiA9IG5ldyBSZXEodW5kZWZpbmVkLFwiUkVRX0lOVEVSTkFMX0NBTExcIik7XG5leHBvcnQgY29uc3QgUkVRX01PTklUT1JfVVNFUlM6UmVxPHthdXRob3JpemF0aW9uOnN0cmluZ30sYW55PiA9IG5ldyBSZXEodW5kZWZpbmVkLFwiUkVRX01PTklUT1JfVVNFUlNcIik7XG5cbmNvbnN0IGFjdGl2ZVNlcnZpY2VzOlN0cmluZ1tdPVtdXG5jb25zdCBlbnRyeVBvaW50czpTdHJpbmdbXT1bXVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gSW5pdGlhbGl6ZXIoc2VydmljZXM6SUJhc2VTZXJ2aWNlW10pe1xuXHQvLyBhZGQgc3RhdCBzZXJ2aWNlXG5cdHNlcnZpY2VzLnB1c2gobmV3IFN0YXRTZXJ2aWNlKCkpO1xuXHRcbiAgICBmb3IgKGxldCBpIG9mIHNlcnZpY2VzKSB7IGF3YWl0IGkuaW5pdCgpO2FjdGl2ZVNlcnZpY2VzLnB1c2goaS5nZXROYW1lKCkpIH1cbiAgICBmb3IgKGxldCBpIG9mIHNlcnZpY2VzKSB7IGkuYXBwbGljYXRpb25SZWFkeSgpIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFQSVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG5cblx0Ly8gTkVUIExPR1xuXHRwcml2YXRlIHN0YXRpYyBuZXh0TG9nSUQ9MDtcblx0cHJpdmF0ZSB2ZXJzaW9uID0gXCIyLjcuOVwiXG5cdHByaXZhdGUgb3B0aW9uczpBUElTZXJ2aWNlT3B0aW9ucztcblx0cHJpdmF0ZSBtb25pdG9yPzpNb25pdG9yXG5cdHByaXZhdGUgbW9uaXRvckluZGV4RmlsZT86QnVmZmVyXG5cdHByaXZhdGUgc3RhcnRlZDpEYXRlID0gbmV3IERhdGUoKTtcblx0cHJpdmF0ZSByZXF1ZXN0c0NvdW50PTA7XG5cdHByaXZhdGUgc2VydmVyPWh0dHBcblxuXHRuZXRMb2c6QVBJU2VydmljZU5ldHdvcmtMb2dJdGVtW109W107XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86QVBJU2VydmljZU9wdGlvbnN8bnVsbCkge1xuXHRcdHN1cGVyKCdIVFRQIFNlcnZpY2UnKVxuXHRcdHRoaXMub3B0aW9ucz1vcHRpb25zID8/IGdldERlZmF1bHRPcHRpb25zKCk7XG5cdFx0aWYoIXRoaXMub3B0aW9ucy5jb3JzSG9zdFdoaXRlTGlzdClcblx0XHRcdHRoaXMub3B0aW9ucy5jb3JzSG9zdFdoaXRlTGlzdD1bXTtcblx0XHRjb25zdCBzZWxmID0gXCJodHRwOi8vbG9jYWxob3N0OlwiK3RoaXMub3B0aW9ucy5wb3J0O1xuXHRcdGlmKCF0aGlzLm9wdGlvbnMuY29yc0hvc3RXaGl0ZUxpc3QuZmluZCh2YWw9PnZhbD09PXNlbGYpKVxuXHRcdFx0dGhpcy5vcHRpb25zLmNvcnNIb3N0V2hpdGVMaXN0LnB1c2goKVxuXG5cdFx0aWYodGhpcy5vcHRpb25zLm1vbml0b3IgJiYgdGhpcy5vcHRpb25zLm1vbml0b3IubGVuZ3RoPjApe1xuXHRcdFx0dGhpcy5tb25pdG9yPW5ldyBNb25pdG9yKCk7XG5cdFx0XHR0aGlzLm9wdGlvbnMuZW5kcG9pbnRzLnB1c2godGhpcy5tb25pdG9yKVxuXHRcdFx0Y29uc29sZS53YXJuKFwiU2VydmljZSBNb25pdG9yIGluaXRpYWxpemVkXCIpXG5cdFx0XHRjb25zb2xlLndhcm4oXCJtb25pdG9yIGxpbmtzOlwiKVxuXHRcdFx0Zm9yKGxldCBpIG9mIHRoaXMub3B0aW9ucy5tb25pdG9yKXtcblx0XHRcdFx0Y29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShpLmxvZ2luK2kucGFzc3dvcmQpLmRpZ2VzdCgpLnRvU3RyaW5nKFwiaGV4XCIpXG5cdFx0XHRcdGNvbnNvbGUud2FybihcIk1vbml0b3IgbGluayBmb3I6IFwiK2kubG9naW4rXCIgLT4gL3NtLVwiK2hhc2gpXHRcdFx0XHRcdFx0XG5cdFx0XHR9XG5cblx0XHRcdFJFUV9NT05JVE9SX1VTRVJTLmxpc3RlbmVyID0gYXN5bmMgKHJlcSk9Pntcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gW11cblx0XHRcdFx0aWYodGhpcy5vcHRpb25zLm1vbml0b3Ipe1xuXHRcdFx0XHRcdGZvcihsZXQgaSBvZiB0aGlzLm9wdGlvbnMubW9uaXRvcil7XG5cdFx0XHRcdFx0XHRjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGkubG9naW4raS5wYXNzd29yZCkuZGlnZXN0KCkudG9TdHJpbmcoXCJoZXhcIik7XG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChoYXNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBhdHRhY2ggZW5kcG9pbnRzIGZvciBleHRlcm5hbCBjYWxsc1xuXHRcdHRoaXMub3B0aW9ucy5lbmRwb2ludHMucHVzaChuZXcgRXh0ZXJuYWxTZXJ2aWNlRW5kcG9pbnQoKSk7XG5cblx0XHQvLyBjcmVhdGUgbGl2ZW5lc3MsIHJlYWRpbmVzc1xuXHRcdHRoaXMub3B0aW9ucy5lbmRwb2ludHMucHVzaChuZXcgTGl2ZW5lc3ModGhpcy5zdGFydGVkKSxuZXcgUmVhZGluZXNzKHRoaXMuc3RhcnRlZCkpXG5cdFx0UkVRX0hUVFBfUkVRVUVTVFNfQ09VTlQubGlzdGVuZXIgPSBhc3luYyAoKSA9PiB0aGlzLnJlcXVlc3RzQ291bnQ7XG5cdH1cblxuXG5cdG92ZXJyaWRlIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG5cblx0XHRSRVFfSFRUUF9MT0cubGlzdGVuZXI9YXN5bmMgaWdub3JlPT50aGlzLm5ldExvZztcblx0XHRSRVFfQ1JFQVRFX05FVF9MT0cubGlzdGVuZXIgPSBhc3luYyBpZ25vcmU9Pntcblx0XHRcdGNvbnN0IGxvZzpBUElTZXJ2aWNlTmV0d29ya0xvZ0l0ZW0gPSB7XG5cdFx0XHRcdGNyZWF0ZWQ6ICtuZXcgRGF0ZSgpLFxuXHRcdFx0XHR0aW1lOiAwLFxuXHRcdFx0XHRyZXF1ZXN0OiB7fSxcblx0XHRcdFx0cmVzcG9uc2U6IHt9LFxuXHRcdFx0XHRlcnJvcjpudWxsLFxuXHRcdFx0XHRpZDogQVBJU2VydmljZS5uZXh0TG9nSUQrK1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5uZXRMb2cucHVzaChsb2cpXG5cdFx0XHRpZih0aGlzLm5ldExvZy5sZW5ndGg+MTAwMClcblx0XHRcdFx0dGhpcy5uZXRMb2cuc2hpZnQoKVxuXHRcdFx0cmV0dXJuIGxvZztcblx0XHR9XG5cblx0XHQvLyBpbnRlcm5hbCBjYWxsXG5cdFx0UkVRX0lOVEVSTkFMX0NBTEwubGlzdGVuZXIgPSBhc3luYyAocmVxKT0+e1xuXHRcdFx0Zm9yKGxldCBpIG9mIHRoaXMub3B0aW9ucy5lbmRwb2ludHMpe1xuXHRcdFx0XHRpZighaSB8fCAhaS5lbmRwb2ludHMpXG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdGZvcihsZXQgaiBvZiBpLmVuZHBvaW50cyl7XG5cdFx0XHRcdFx0bGV0IGVwID0gQmFzZUVuZHBvaW50LmdldEVudHJ5UG9pbnQoKStqLmVuZHBvaW50O1xuXHRcdFx0XHRcdGVwID0gZXAucmVwbGFjZUFsbChcIi8vXCIsXCIvXCIpXG5cdFx0XHRcdFx0aWYoZXAgPT09IHJlcS5lbmRwb2ludCl7XG5cdFx0XHRcdFx0XHRyZXEuaW50ZXJuYWxDYWxsPXRydWU7XG5cdFx0XHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGkuZXhlY3V0ZShyZXEpXG5cdFx0XHRcdFx0XHRpZihyZXNwb25zZS5lcnJvcilcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge2Vycm9yOkRlZmF1bHRFcnJvcnMuVU5LTk9XTl9SRVFVRVNULGRhdGE6bnVsbCxodHRwU3RhdHVzOjQwNH1cblx0XHR9XG5cblx0XHQvLyBpbml0aWFsaXplIGV4cHJlc3Ncblx0XHRjb25zdCBhcHAgPSBleHByZXNzKClcblx0XHRjb25zdCBzZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhcHApO1xuXG5cdFx0UkVRX0hUVFBfU0VSVkVSLmxpc3RlbmVyID0gYXN5bmMgaWdub3JlPT57cmV0dXJuIHtleHByZXNzOmFwcCxodHRwOnNlcnZlcn19O1xuXG5cdFx0aWYodGhpcy5vcHRpb25zLmlzUHJvZHVjdGlvbkVudmlyb25tZW50KVxuXHRcdFx0YXBwLnNldChcImVudlwiLCdwcm9kdWN0aW9uJyk7XG5cblx0XHRhcHAudXNlKGV4cHJlc3MuanNvbih7IGxpbWl0OiAnMTBtYicgfSkpIC8vIGZvciBwYXJzaW5nIGFwcGxpY2F0aW9uL2pzb25cblx0XHRhcHAudXNlKGV4cHJlc3MudXJsZW5jb2RlZCh7IGxpbWl0OiAnMTBtYicsIGV4dGVuZGVkOiB0cnVlIH0pKSAvLyBmb3IgcGFyc2luZyBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcblxuXHRcdGFwcC51c2UoZmlsZVVwbG9hZCh7XG5cdFx0XHRsaW1pdEhhbmRsZXI6IChyZXEsIHJlcywgbmV4dCk9Pntcblx0XHRcdFx0dGhpcy5zZW5kUmVzcG9uc2UocmVxLmdldChcIlJlZmVyZXJcIik/P1wiXCIscmVzLHtcblx0XHRcdFx0XHRlcnJvcjpEZWZhdWx0RXJyb3JzLkZJTEVfVE9PX0xBUkdFLFxuXHRcdFx0XHRcdGRhdGE6bnVsbCxcblx0XHRcdFx0XHRodHRwU3RhdHVzOjQxMyxcblx0XHRcdFx0fSwrbmV3IERhdGUoKSxyZXEucGF0aCk7XG5cdFx0XHR9LFxuXHRcdFx0bGltaXRzOiB7IGZpbGVTaXplOiB0aGlzLm9wdGlvbnMuZmlsZUxpbWl0IH0sXG5cdFx0XHR1c2VUZW1wRmlsZXM6IHRydWUsXG5cdFx0XHR1cmlEZWNvZGVGaWxlTmFtZXM6IHRydWUsXG5cdFx0XHR0ZW1wRmlsZURpcjogdGhpcy5vcHRpb25zLmZpbGVUZW1wRGlyLFxuXHRcdFx0Ly9zYWZlRmlsZU5hbWVzOiB0cnVlLFxuXHRcdFx0YWJvcnRPbkxpbWl0OnRydWVcblx0XHR9KSlcblxuXHRcdGFwcC51c2UoYXN5bmMgKGVycjphbnkscmVxOmFueSxyZXNwOmFueSxuZXh0OmFueSk9Pntcblx0XHRcdFxuXHRcdFx0aWYoIWVycil7XG5cdFx0XHRcdG5leHQoKTtcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cdFx0XHRcdC8vcmVxdWVzdCBzdGFydCB0aW1lXG5cdFx0XHRjb25zdCB0bWUgPSArbmV3IERhdGUoKTtcblx0XHRcdGNvbnN0IGxvZyA9IGF3YWl0IFJFUV9DUkVBVEVfTkVUX0xPRy5yZXF1ZXN0KCk7XG5cdFx0XHRsb2cucmVxdWVzdD17XG5cdFx0XHRcdG1ldGhvZDpyZXEubWV0aG9kLFxuXHRcdFx0XHRkYXRhOlwiXCIsXG5cdFx0XHRcdHBhcmFtczpyZXEucGFyYW1zXG5cdFx0XHR9XG5cblx0XHRcdGxldCByZXNwb25zZUVycm9yPURlZmF1bHRFcnJvcnMuVU5LTk9XTl9SRVFVRVNUO1xuXHRcdFx0aWYgKHR5cGVvZiBlcnIgPT09IFwib2JqZWN0XCIgJiYgZXJyLnN0YXR1cyA9PT0gNDAwICYmICdib2R5JyBpbiBlcnIgJiYgZXJyLnR5cGUgPT09ICdlbnRpdHkucGFyc2UuZmFpbGVkJykge1xuXHRcdFx0XHRyZXNwb25zZUVycm9yID0gRGVmYXVsdEVycm9ycy5KU09OX01BTEZPUk1FRFxuXHRcdFx0fVxuICAgICAgXG5cblx0XHRcdHRoaXMuc2VuZFJlc3BvbnNlKHJlcS5nZXQoXCJSZWZlcmVyXCIpPz9cIlwiLHJlc3Ase1xuXHRcdFx0XHRlcnJvcjpyZXNwb25zZUVycm9yLFxuXHRcdFx0XHRkYXRhOm51bGwsXG5cdFx0XHRcdGh0dHBTdGF0dXM6NDAwXG5cdFx0XHR9LHRtZSxcIlwiLGxvZylcblxuXHRcdH0pXG5cblx0XHRjb25zdCBjb3JzT3B0aW9ucyA9IHtcblx0XHRcdG9yaWdpbjogKG9yaWdpbjogYW55LCBjYWxsYmFjazogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9yaWdpbklzV2hpdGVsaXN0ZWQgPSB0aGlzLm9wdGlvbnMuY29yc0hvc3RXaGl0ZUxpc3QuaW5jbHVkZXMob3JpZ2luKVxuXHRcdFx0XHRjYWxsYmFjayhudWxsLCBvcmlnaW5Jc1doaXRlbGlzdGVkKVxuXHRcdFx0fSxcblx0XHRcdGNyZWRlbnRpYWxzOiB0cnVlXG5cdFx0fVxuXHRcdGFwcC51c2UoY29ycyhjb3JzT3B0aW9ucykpXG5cblx0XHQvLyByZWdpc3RyYXRlIGVuZHBvaW50c1xuXHRcdEJhc2VFbmRwb2ludC5zZXRFbnRyeVBvaW50KHRoaXMub3B0aW9ucy5iYXNlRW5kUG9pbnQpXG5cdFx0XG5cdFx0Zm9yKGxldCBpIG9mIHRoaXMub3B0aW9ucy5lbmRwb2ludHMpe1xuXHRcdFx0YXdhaXQgaS5pbml0KCk7XG5cdFx0XHRpZighaS5lbmRwb2ludHMpXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0Zm9yKGxldCBqIG9mIGkuZW5kcG9pbnRzKXtcblx0XHRcdFx0bGV0IGVwID0gQmFzZUVuZHBvaW50LmdldEVudHJ5UG9pbnQoKStqLmVuZHBvaW50O1xuXHRcdFx0XHRlcCA9IGVwLnJlcGxhY2VBbGwoXCIvL1wiLFwiL1wiKVxuXHRcdFx0XHRcblxuXHRcdFx0XHQvLyBpbmNvbWluZyByZXF1ZXN0XG5cdFx0XHRcdGFwcC5hbGwoZXAsYXN5bmMgKHJlcSxyZXMpPT57XG5cdFx0XHRcdFx0dGhpcy5yZXF1ZXN0c0NvdW50Kys7XG5cdFx0XHRcdFx0Y29uc3QgdG1lID0gK25ldyBEYXRlKCk7XG5cdFx0XHRcdFx0bGV0IGxvZzpBUElTZXJ2aWNlTmV0d29ya0xvZ0l0ZW18bnVsbCA9IG51bGw7XG5cdFx0XHRcdFx0aWYoIWkuaWdub3JlSHR0cExvZ2dpbmcpe1xuXHRcdFx0XHRcdFx0bG9nID0gYXdhaXQgUkVRX0NSRUFURV9ORVRfTE9HLnJlcXVlc3QoKTtcblx0XHRcdFx0XHRcdGxvZy5yZXF1ZXN0PXtcblx0XHRcdFx0XHRcdFx0dXJsOnJlcS51cmwsXG5cdFx0XHRcdFx0XHRcdG1ldGhvZDpyZXEubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRkYXRhOnRoaXMuY2hlY2tEYXRhTGVuZ3RoKHJlcS5ib2R5KSxcblx0XHRcdFx0XHRcdFx0cGFyYW1zOnRoaXMuY2hlY2tEYXRhTGVuZ3RoKHJlcS5wYXJhbXMpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgZXhlY3V0ZSA9IGFzeW5jICgpPT57XG5cblx0XHRcdFx0XHRcdGNvbnN0IGJvZHkgPSByZXEuYm9keTtcblx0XHRcdFx0XHRcdGlmKHJlcS5xdWVyeSAmJiB0eXBlb2YgcmVxLnF1ZXJ5ID09PSBcIm9iamVjdFwiKXtcblx0XHRcdFx0XHRcdFx0Zm9yKGxldCBpIGluIHJlcS5xdWVyeSl7XG5cdFx0XHRcdFx0XHRcdFx0Ym9keVtpXT1yZXEucXVlcnlbaV07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3QgaHR0cFJlcXVlc3Q6SFRUUFJlcXVlc3RWTyA9IHtcblx0XHRcdFx0XHRcdFx0cmF3OnJlcSBhcyBJbmNvbWluZ01lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlOnJlcyxcblx0XHRcdFx0XHRcdFx0bWV0aG9kOnJlcS5tZXRob2QsXG5cdFx0XHRcdFx0XHRcdGRhdGE6cmVxLmJvZHksXG5cdFx0XHRcdFx0XHRcdHBhcmFtczpyZXEucGFyYW1zLFxuXHRcdFx0XHRcdFx0XHRoZWFkZXJzOnJlcS5oZWFkZXJzIGFzIGFueSxcblx0XHRcdFx0XHRcdFx0ZW5kcG9pbnQ6ZXAsXG5cdFx0XHRcdFx0XHRcdGZpbGVzOnJlcS5maWxlcyA/PyBudWxsLFxuXHRcdFx0XHRcdFx0XHRyZWZlcmVyOnJlcS5nZXQoXCJSZWZlcmVyXCIpLFxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZih0aGlzLm9wdGlvbnMucHJlcHJvZHVjZXIpe1xuXHRcdFx0XHRcdFx0XHR0cnl7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHByZXByb2R1Y2VyUmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLnByZXByb2R1Y2VyKGh0dHBSZXF1ZXN0KTtcblx0XHRcdFx0XHRcdFx0aWYocHJlcHJvZHVjZXJSZXN1bHQpXG5cdFx0XHRcdFx0XHRcdFx0aHR0cFJlcXVlc3QucHJlcHJvZHVjZXJSZXN1bHQgPSBwcmVwcm9kdWNlclJlc3VsdDtcblx0XHRcdFx0XHRcdFx0fWNhdGNoKGUpe1xuXHRcdFx0XHRcdFx0XHRcdGxldCBkZXRhaWxzPWAke2V9YFxuXHRcdFx0XHRcdFx0XHRcdGxldCBzdGFjazpJRXJyb3JbXXx1bmRlZmluZWQ9dW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdGlmKEVycm9yVXRpbHMuaXNFcnJvcihlKSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZXRhaWxzPShlIGFzIGFueSkubWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0c3RhY2sgPSBbZSBhcyBhbnldO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGlmKGlzTXlzcWxFcnJvcihlKSlcblx0XHRcdFx0XHRcdFx0XHRcdGRldGFpbHMgPSAoZSBhcyBNeXNxbEVycm9yKS5tZXNzYWdlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZW5kUmVzcG9uc2UocmVxLmdldChcIlJlZmVyZXJcIik/P1wiXCIscmVzLHtlcnJvcjp7Y29kZToxMDAwMixtZXNzYWdlOlwiSW50ZXJuYWwgc2VydmVyIGVycm9yXCIsc3RhY2s6c3RhY2ssZGV0YWlsczpkZXRhaWxzfSxkYXRhOm51bGwsaHR0cFN0YXR1czo1MDB9LHRtZSxlcCxsb2csaHR0cFJlcXVlc3QpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRsZXQgcmVzdWx0XG5cdFx0XHRcdFx0XHR0cnl7XG5cblx0XHRcdFx0XHRcdFx0bGV0IGlnbm9yZUludGVyY2VwdG9yID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGxldCBhbGxvd0ludGVyY2VwdG9yRXJyb3IgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0aWYoai5pZ25vcmVJbnRlcmNlcHRvcilcblx0XHRcdFx0XHRcdFx0XHRpZ25vcmVJbnRlcmNlcHRvcj10cnVlO1xuXHRcdFx0XHRcdFx0XHRpZihqLmFsbG93SW50ZXJjZXB0b3JFcnJvcilcblx0XHRcdFx0XHRcdFx0XHRhbGxvd0ludGVyY2VwdG9yRXJyb3I9dHJ1ZTtcblxuXHRcdFx0XHRcdFx0XHRpZih0eXBlb2Ygai5oYW5kbGVyID09PSBcIm9iamVjdFwiICl7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gdHJ5IHRvIGdldCBoYW5kbGVyIHJlbGF5aW5nIG9uIGh0dHAgbWV0aG9kXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaGFuZGxlciA9IGouaGFuZGxlcltodHRwUmVxdWVzdC5tZXRob2QudG9VcHBlckNhc2UoKV07XG5cdFx0XHRcdFx0XHRcdFx0aWYodHlwZW9mIGhhbmRsZXIgPT09IFwib2JqZWN0XCIpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYoaGFuZGxlci5pZ25vcmVJbnRlcmNlcHRvcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlSW50ZXJjZXB0b3I9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmKGhhbmRsZXIuYWxsb3dJbnRlcmNlcHRvckVycm9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhbGxvd0ludGVyY2VwdG9yRXJyb3I9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gRXhlY3V0ZSBpbnRlcmNlcHRvciBpZiBleGlzdHNcblx0XHRcdFx0XHRcdFx0aWYoIWlnbm9yZUludGVyY2VwdG9yKXtcblx0XHRcdFx0XHRcdFx0XHRsZXQgaW50ZXJjZXB0b3JSZXN1bHQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmludGVyY2VwdG9yKXtcblx0XHRcdFx0XHRcdFx0XHRcdGludGVyY2VwdG9yUmVzdWx0PWF3YWl0IHRoaXMub3B0aW9ucy5pbnRlcmNlcHRvci5leGVjdXRlKGh0dHBSZXF1ZXN0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmKGludGVyY2VwdG9yUmVzdWx0LmVycm9yICYmICFhbGxvd0ludGVyY2VwdG9yRXJyb3Ipe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNlbmRSZXNwb25zZShyZXEuZ2V0KFwiUmVmZXJlclwiKT8/XCJcIixyZXMsaW50ZXJjZXB0b3JSZXN1bHQsdG1lLGVwLGxvZyxodHRwUmVxdWVzdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGh0dHBSZXF1ZXN0LmludGVyY2VwdG9yUmVzdWx0ID0gaW50ZXJjZXB0b3JSZXN1bHRcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBQcmVjaGVjayBXSFk/XG5cdFx0XHRcdFx0XHRcdGlmKGkgPT09IHRoaXMubW9uaXRvcilcblx0XHRcdFx0XHRcdFx0XHRodHRwUmVxdWVzdC5wcmVjaGVjaz17ZGF0YTp0aGlzLm9wdGlvbnMubW9uaXRvcn1cblxuXHRcdFx0XHRcdFx0XHRjb25zdCBwcmVjaGVjaz1hd2FpdCBpLnByZWNoZWNrKGh0dHBSZXF1ZXN0KVxuXHRcdFx0XHRcdFx0XHRpZihwcmVjaGVjayAmJiBwcmVjaGVjay5lcnJvcil7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZW5kUmVzcG9uc2UocmVxLmdldChcIlJlZmVyZXJcIik/P1wiXCIscmVzLHByZWNoZWNrLHRtZSxlcCxsb2csaHR0cFJlcXVlc3QpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGh0dHBSZXF1ZXN0LnByZWNoZWNrPXByZWNoZWNrO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0Ly8gSWYgaW50ZXJjZXB0b3IgaGFzIG5vIGVycm9ycywgZXhlY3V0ZSBtYWluIGhhbmRsZXJcblx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gYXdhaXQgaS5leGVjdXRlKGh0dHBSZXF1ZXN0KVxuXG5cblx0XHRcdFx0XHRcdFx0IFxuXHRcdFx0XHRcdFx0fWNhdGNoKGUpe1xuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoZSk7XG5cdFx0XHRcdFx0XHRcdGlmKHRoaXMub3B0aW9ucy5vbkVycm9yKVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMub3B0aW9ucy5vbkVycm9yKGUpXG5cdFx0XHRcdFx0XHRcdGlmKHRoaXMubW9uaXRvcilcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm1vbml0b3IucmVnaXN0cmF0ZUZhdGFsRXJyb3IoZXApO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0Ly8gY2hlY2sgaWYgZXJyb3IgaXMgSUVycm9yXG5cdFx0XHRcdFx0XHRcdGxldCBkYXRhOlRyYW5zZmVyUGFja2V0Vk8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3I6e1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29kZToxMDAwMixcblx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6XCJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3JcIixcblx0XHRcdFx0XHRcdFx0XHRcdGh0dHBTdGF0dXM6NTAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGV0YWlsczpgJHtlfWBcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpZihFcnJvclV0aWxzLmlzRXJyb3IoZSkpXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YSA9IHtlcnJvcjplIGFzIElFcnJvcn1cblxuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbmRSZXNwb25zZShyZXEuZ2V0KFwiUmVmZXJlclwiKT8/XCJcIixyZXMsZGF0YSx0bWUsZXAsbG9nLGh0dHBSZXF1ZXN0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5zZW5kUmVzcG9uc2UocmVxLmdldChcIlJlZmVyZXJcIik/P1wiXCIscmVzLHJlc3VsdCx0bWUsZXAsbG9nLGh0dHBSZXF1ZXN0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRleGVjdXRlKClcblx0XHRcdFx0fSk7Ly8gaGFuZGxlIGluY29taW5nIHJlcXVlc3RcblxuXHRcdFx0fVxuXHRcdH1cblxuXHRcblxuXHRcdC8vIGZpbmFsIGhhbmRsZXJcblx0XHRhcHAudXNlKChyZXEsIHJlcywgbmV4dCkgPT4ge1xuXHRcdFx0XG5cdFx0XHRjb25zdCB0bWUgPSArbmV3IERhdGUoKVxuXG5cdFx0XHRpZih0aGlzLm1vbml0b3IgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5tb25pdG9yKXtcblx0XHRcdFx0Ly9jaGVjayBpZiByZXF1ZXN0aW5nIG1vbml0b3Jcblx0XHRcdFx0aWYocmVxLm1ldGhvZD09PVwiR0VUXCIpe1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGxldCBtb25pdG9yUmVxdWVzdD1mYWxzZTtcblx0XHRcdFx0XHRmb3IobGV0IGkgb2YgdGhpcy5vcHRpb25zLm1vbml0b3Ipe1xuXHRcdFx0XHRcdFx0Y29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShpLmxvZ2luK2kucGFzc3dvcmQpLmRpZ2VzdCgpLnRvU3RyaW5nKFwiaGV4XCIpXG5cdFx0XHRcdFx0XHRpZihyZXEub3JpZ2luYWxVcmwuZW5kc1dpdGgoXCIvc20tXCIraGFzaCkpe1xuXHRcdFx0XHRcdFx0XHRtb25pdG9yUmVxdWVzdD10cnVlO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZihtb25pdG9yUmVxdWVzdCl7XG5cdFx0XHRcdFx0XHQvLyBzZW5kIGluZGV4IFRodSwgMTYgTm92IDIwMjMgMjM6MzM6MzUgR01UXG5cdFx0XHRcdFx0XHRjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdHRyeXtcblx0XHRcdFx0XHRcdFx0aWYoIXRoaXMubW9uaXRvckluZGV4RmlsZSlcblx0XHRcdFx0XHRcdFx0dGhpcy5tb25pdG9ySW5kZXhGaWxlID0gZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsXCJtb25pdG9yXCIsXCJpbmRleC5odG1sXCIpKTtcblx0XHRcdFx0XHRcdFx0cmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLFwidGV4dC9odG1sXCIpXG5cdFx0XHRcdFx0XHRcdHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LUxlbmd0aFwiLHRoaXMubW9uaXRvckluZGV4RmlsZS5ieXRlTGVuZ3RoKVxuXHRcdFx0XHRcdFx0XHRyZXMuc3RhdHVzKDIwMCkuc2VuZCh0aGlzLm1vbml0b3JJbmRleEZpbGUpO1xuXHRcdFx0XHRcdFx0fWNhdGNoKGUpe1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbmRSZXNwb25zZShyZXEuZ2V0KFwiUmVmZXJlclwiKT8/XCJcIixyZXMse1xuXHRcdFx0XHRcdFx0XHRcdGVycm9yOntcblx0XHRcdFx0XHRcdFx0XHRcdGNvZGU6MTAwMDIsXG5cdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOlwiSW50ZXJuYWwgc2VydmVyIGVycm9yXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRkZXRhaWxzOmAke2V9YFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YTpudWxsLFxuXHRcdFx0XHRcdFx0XHRcdGh0dHBTdGF0dXM6NTAwXG5cdFx0XHRcdFx0XHRcdH0sdG1lLHJlcS5wYXRoKTtcdFx0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdFxuXHRcdFx0dGhpcy5zZW5kUmVzcG9uc2UocmVxLmdldChcIlJlZmVyZXJcIik/P1wiXCIscmVzLHtcblx0XHRcdFx0ZXJyb3I6RGVmYXVsdEVycm9ycy5VTktOT1dOX1JFUVVFU1QsXG5cdFx0XHRcdGRhdGE6bnVsbCxcblx0XHRcdFx0aHR0cFN0YXR1czo0MDRcblx0XHRcdH0sdG1lLHJlcS5wYXRoKTtcblx0XHR9KVxuXG5cdFx0c2VydmVyLmxpc3Rlbih0aGlzLm9wdGlvbnMucG9ydCwgKCkgPT4ge1xuXHRcdFx0bG9nQ3JpdCgnJHtBUElTZXJ2aWNlLmpzfScsJ0FQSSBTZXJ2aWNlIHN0YXJ0ZWQgYXQ6ICcrdGhpcy5vcHRpb25zLnBvcnQrXCIsIHdpdGggYmFzZSBlbmRwb2ludDpcIit0aGlzLm9wdGlvbnMuYmFzZUVuZFBvaW50K1wiLCB2ZXIuOiBcIit0aGlzLnZlcnNpb24pXG5cdFx0fSlcblxuXHRcdC8qYXBwLmxpc3Rlbih0aGlzLm9wdGlvbnMucG9ydCwgKCkgPT4ge1xuXHRcdFx0bG9nQ3JpdCgnJHtBUElTZXJ2aWNlLmpzfScsJ0FQSSBTZXJ2aWNlIHN0YXJ0ZWQgYXQ6ICcrdGhpcy5vcHRpb25zLnBvcnQrXCIsIHdpdGggYmFzZSBlbmRwb2ludDpcIit0aGlzLm9wdGlvbnMuYmFzZUVuZFBvaW50K1wiLCB2ZXIuOiBcIit0aGlzLnZlcnNpb24pXG5cdFx0fSkqL1xuXHR9XG5cblx0YXN5bmMgc2VuZFJlc3BvbnNlKHJlZjpzdHJpbmcscmVzOlJlc3BvbnNlLGRhdGE6VHJhbnNmZXJQYWNrZXRWTzxhbnk+LHJlcXVlc3RUaW1lOm51bWJlcixlbmRwb2ludD86c3RyaW5nLGxvZz86QVBJU2VydmljZU5ldHdvcmtMb2dJdGVtfG51bGwscmVxPzpIVFRQUmVxdWVzdFZPKXtcblxuXHRcdGlmKGRhdGEuYmxvY2tSZXNwb25zZSl7XG5cdFx0XHRpZihsb2cpXG5cdFx0XHRcdGxvZy5lcnJvciA9IFwiUmVzcG9uc2UgYmxvY2tlZFwiXG5cdFx0XHRpZih0aGlzLm9wdGlvbnMub25OZXR3b3JrTG9nICYmIGxvZylcblx0XHRcdFx0dGhpcy5vcHRpb25zLm9uTmV0d29ya0xvZyhsb2cpXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYocmVxICYmIHJlcS5zdHJlYW0pe1xuXHRcdFx0XG5cdFx0fVxuXG5cdFx0aWYodGhpcy5vcHRpb25zLnBvc3Rwcm9kdWNlcil7XG5cdFx0XHR0cnl7XG5cdFx0XHRcdGRhdGEgPSBhd2FpdCB0aGlzLm9wdGlvbnMucG9zdHByb2R1Y2VyKHJlcSxyZXMsZGF0YSxyZXF1ZXN0VGltZSxlbmRwb2ludCxsb2cpO1xuXHRcdFx0fWNhdGNoKGUpe1xuXHRcdFx0XHRsb2dFcnJvcihcIlBvc3Rwcm9kdWNlciBlcnJvclwiLGUpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYoRXJyb3JVdGlscy5pc0Vycm9yKGRhdGEpKVxuXHRcdFx0ZGF0YSA9IHtlcnJvcjpkYXRhIGFzIElFcnJvcixkYXRhOm51bGx9XG5cdFx0XG4gICAgICAgIGRhdGEucmVzcG9uc2VUaW1lID0gKCtuZXcgRGF0ZSgpKSAtIHJlcXVlc3RUaW1lO1xuICAgICAgICBkYXRhLmNvcmUgPSB0aGlzLnZlcnNpb25cbiAgICAgICAgZGF0YS5lbmRwb2ludCA9IGVuZHBvaW50ID8/IFwibm9fZW5kcG9pbnRcIlxuXHRcdFxuXHRcdGlmKHRoaXMub3B0aW9ucy5hcHBWZXJzaW9uKVxuXHRcdFx0ZGF0YS52ZXJzaW9uPXRoaXMub3B0aW9ucy5hcHBWZXJzaW9uXG5cblx0XHRcblx0XHRpZihsb2cpe1xuXHRcdFx0bG9nLnRpbWUgPSBkYXRhLnJlc3BvbnNlVGltZVxuXHRcdFx0bG9nLnJlZmVyZXI9cmVmO1xuXHRcdH1cblxuXHRcdGlmKHRoaXMubW9uaXRvcilcblx0XHRcdHRoaXMubW9uaXRvci5yZWdpc3RyYXRlUmVzcG9uc2UoZGF0YS5lbmRwb2ludCxkYXRhLnJlc3BvbnNlVGltZSlcblxuICAgICAgICBpZihyZXMuZGVzdHJveWVkIHx8IHJlcy5jbG9zZWQpe1xuXG5cdFx0XHRpZihsb2cpXG5cdFx0XHRcdGxvZy5lcnJvciA9IFwiQ29ubmVjdGlvbiBhbHJlYWR5IGNsb3NlZCwgY2FuJ3Qgc2VuZCByZXNwb25zZSBmb3I6IFwiK2RhdGEuZW5kcG9pbnRcblx0XHRcdGlmKHRoaXMub3B0aW9ucy5vbkVycm9yKVxuICAgICAgICAgICAgXHR0aGlzLm9wdGlvbnMub25FcnJvcihcIkNvbm5lY3Rpb24gYWxyZWFkeSBjbG9zZWQsIGNhbid0IHNlbmQgcmVzcG9uc2U6IFwiK2RhdGEuZW5kcG9pbnQsZGF0YSlcbiAgICAgICAgICAgIFxuXHRcdFx0aWYodGhpcy5tb25pdG9yKVxuXHRcdFx0XHR0aGlzLm1vbml0b3IucmVnaXN0cmF0ZUVycm9yKGRhdGEuZW5kcG9pbnQpO1xuXG4gICAgICAgIH1lbHNle1xuXHRcdFx0dHJ5e1xuXG5cdFx0XHRcdGlmKGRhdGEuZmlsZSl7XG5cblx0XHRcdFx0XHRyZXMuc2VuZEZpbGUoZGF0YS5maWxlLGVycj0+e1xuXHRcdFx0XHRcdFx0aWYoZXJyKXtcblx0XHRcdFx0XHRcdFx0aWYobG9nKVxuXHRcdFx0XHRcdFx0XHRcdGxvZy5lcnJvciA9IFwiQ2FuJ3Qgc2VuZCBmaWxlOiBcIitkYXRhLmZpbGVcblx0XHRcdFxuXHRcdFx0XHRcdFx0XHRpZih0aGlzLm1vbml0b3IgJiYgZGF0YS5lbmRwb2ludClcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm1vbml0b3IucmVnaXN0cmF0ZUFQSUVycm9yKGRhdGEuZW5kcG9pbnQpO1xuXG5cdFx0XHRcdFx0XHRcdHRoaXMuc2VuZFJlc3BvbnNlKHJlZixyZXMse1xuXHRcdFx0XHRcdFx0XHRcdGVycm9yOkRlZmF1bHRFcnJvcnMuQ0FOVF9TRU5EX0ZJTEUsXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YTpudWxsLFxuXHRcdFx0XHRcdFx0XHRcdGh0dHBTdGF0dXM6NTAwXG5cdFx0XHRcdFx0XHRcdH0scmVxdWVzdFRpbWUsZGF0YS5lbmRwb2ludCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9KVxuXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRpZihkYXRhLnJlZGlyZWN0KXtcblx0XHRcdFx0XHRyZXMucmVkaXJlY3QoZGF0YS5yZWRpcmVjdCk7XG5cdFx0XHRcdFx0aWYobG9nKVxuXHRcdFx0XHRcdFx0bG9nLnJlc3BvbnNlID0ge3JlZGlyZWN0OmRhdGEucmVkaXJlY3R9XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdC8vIHNldHVwIGhlYWRlcnNcblx0XHRcdFx0XHRpZihkYXRhLmhlYWRlcnMpe1xuXHRcdFx0XHRcdFx0Zm9yKGxldCBpIGluIGRhdGEuaGVhZGVycylcblx0XHRcdFx0XHRcdFx0cmVzLnNldEhlYWRlcihpLGRhdGEuaGVhZGVyc1tpXSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYoZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yLmh0dHBTdGF0dXMgJiYgZGF0YS5lcnJvci5odHRwU3RhdHVzPjk5KVxuXHRcdFx0XHRcdFx0cmVzLnN0YXR1c0NvZGUgPSBkYXRhLmVycm9yLmh0dHBTdGF0dXNcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRyZXMuc3RhdHVzQ29kZT1kYXRhLmh0dHBTdGF0dXMgPz8gMjAwXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0aWYoZGF0YS5yYXdSZXNwb25zZSl7XG5cdFx0XHRcdFx0XHRyZXMuc2VuZChkYXRhLmRhdGEpXG5cdFx0XHRcdFx0XHRpZihsb2cpXG5cdFx0XHRcdFx0XHRcdGxvZy5yZXNwb25zZSA9IHRoaXMuY2hlY2tEYXRhTGVuZ3RoKGRhdGEpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRyZXMuc2VuZChkYXRhKTtcblx0XHRcdFx0XHRcdGlmKGxvZylcblx0XHRcdFx0XHRcdFx0bG9nLnJlc3BvbnNlID0gdGhpcy5jaGVja0RhdGFMZW5ndGgoZGF0YSlcblxuXHRcdFx0XHRcdFx0aWYoZGF0YS5lcnJvciAmJiB0aGlzLm1vbml0b3Ipe1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1vbml0b3IucmVnaXN0cmF0ZUFQSUVycm9yKGRhdGEuZW5kcG9pbnQpXG5cdFx0XHRcdFx0XHRcdGlmKGxvZylcblx0XHRcdFx0XHRcdFx0XHRsb2cuZXJyb3IgPSBkYXRhLmVycm9yLm1lc3NhZ2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9Y2F0Y2goZSl7XG5cdFx0XHRcdGlmKHRoaXMub3B0aW9ucy5vbkVycm9yKVxuXHRcdFx0XHRcdHRoaXMub3B0aW9ucy5vbkVycm9yKFwiQ2FuJ3Qgc2VuZCByZXNwb25zZVwiLGUpO1xuXHRcdFx0XHRpZihsb2cpXG5cdFx0XHRcdFx0bG9nLmVycm9yPVwiQ2FuJ3Qgc2VuZCByZXNwb25zZVwiXG5cdFx0XHRcdGlmKHRoaXMubW9uaXRvcilcblx0XHRcdFx0XHR0aGlzLm1vbml0b3IucmVnaXN0cmF0ZUVycm9yKGRhdGEuZW5kcG9pbnQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIHNob3cgbG9nXG5cdFx0aWYobG9nICYmIGxvZy5lcnJvciAmJiB0aGlzLm9wdGlvbnMub25FcnJvcil7XG5cdFx0XHR0aGlzLm9wdGlvbnMub25FcnJvcihsb2cuZXJyb3IpXG5cdFx0fWVsc2V7XG5cdFx0XHRpZih0aGlzLm9wdGlvbnMub25OZXR3b3JrTG9nICYmIGxvZylcblx0XHRcdFx0dGhpcy5vcHRpb25zLm9uTmV0d29ya0xvZyhsb2cpXG5cdFx0fVxuICAgIH1cblxuXG5cdGNoZWNrRGF0YUxlbmd0aChkYXRhOmFueSxyZXN1bHQ/OmFueSxsdmw/Om51bWJlcik6YW55e1xuXHRcdFxuXHRcdGlmKCFsdmwpXG5cdFx0XHRsdmw9MDtcblxuXHRcdGlmKHR5cGVvZiBkYXRhICE9PSBcIm9iamVjdFwiKXtcblx0XHRcdGlmKHR5cGVvZiBkYXRhPT09XCJzdHJpbmdcIiAmJiBkYXRhLmxlbmd0aD4xMDI0KVxuXHRcdFx0XHRyZXR1cm4gZGF0YS5zdWJzdHJpbmcoMCwxMDAwKStcIi4uLiAodG90YWw6XCIgKyBkYXRhLmxlbmd0aCArIFwiKVwiXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cblx0XHRpZih0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIil7XG5cdFx0XHRpZighcmVzdWx0KVxuXHRcdFx0XHRyZXN1bHQ9e307XG5cdFx0XHRsZXQgYXJyY250ID0gMTAwO1xuXHRcdFx0Zm9yKGxldCBpIGluIGRhdGEpe1xuXHRcdFx0XHRyZXN1bHRbaV09dGhpcy5jaGVja0RhdGFMZW5ndGgoZGF0YVtpXSxyZXN1bHRbaV0sbHZsKzEpO1xuXHRcdFx0XHRhcnJjbnQtLTtcblx0XHRcdFx0aWYoYXJyY250PD0wKXtcblx0XHRcdFx0XHRyZXN1bHRbXCIuLi5cIl09XCIuLi4gdG90YWw6IFwiK0FycmF5LmlzQXJyYXkoZGF0YSk/ZGF0YS5sZW5ndGg6T2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQgPz8gbnVsbDtcblx0fVxuXG59XG4iXX0=
@@ -116,4 +116,3 @@ class BaseEndpoint {
116
116
  }
117
117
  }
118
118
  exports.BaseEndpoint = BaseEndpoint;
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaVNlcnZlci9CYXNlRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQXlEO0FBQ3pELCtFQUF1RDtBQUV2RCxtQ0FBK0I7QUFVL0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLFNBQVMsQ0FBQyxDQUFBO0FBbUI1RixNQUFhLFlBQVk7SUFFYixzQkFBc0IsR0FBVSxFQUFFLENBQUM7SUFFM0MsU0FBUyxDQUFvQjtJQUN0QixpQkFBaUIsR0FBRyxLQUFLLENBQUE7SUFDeEIsTUFBTSxDQUFDLFVBQVUsR0FBUSxHQUFHLENBQUM7SUFDN0IsUUFBUSxHQUFDLEVBQUUsQ0FBQTtJQUluQixNQUFNLENBQUMsYUFBYSxHQUFDLENBQUMsRUFBUyxFQUFDLEVBQUU7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLElBQUUsR0FBRyxDQUFBO1NBQ3ZCO1FBQ0QsSUFBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUMsR0FBRyxHQUFDLEVBQUUsQ0FBQztJQUMvQixDQUFDLENBQUE7SUFDRCxNQUFNLENBQUMsYUFBYSxHQUFDLEdBQVMsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQyxDQUFBO0lBRUQsWUFBWSxRQUFlO1FBQ3ZCLElBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDdkIsUUFBUSxHQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEMsSUFBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3RCLFFBQVEsR0FBQyxRQUFRLEdBQUMsR0FBRyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxTQUE0QjtRQUMxQyxLQUFJLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBQztZQUduQixJQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUcsR0FBRyxFQUFDO2dCQUNuQyxJQUFJLEtBQUssR0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFBO2dCQUN4QixJQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUs7b0JBQ2hDLENBQUMsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMxRCxTQUFTO2FBQ1o7WUFFRCxJQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4QyxJQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUE7WUFFMUQsSUFBRyxDQUFDLENBQUMsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRSxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUdELEtBQUssQ0FBQyxJQUFJO1FBQ04sSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDZixJQUFBLG9CQUFPLEVBQUMsb0JBQW9CLEVBQUMsOEJBQThCLEdBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQzFFLE9BQU87U0FDVjtRQUNELEtBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBQztZQUN4QixJQUFBLG9CQUFPLEVBQUMsb0JBQW9CLEVBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUMsa0NBQWtDLEdBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUMsdUJBQXVCLEdBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQTtTQUN4RztJQUNMLENBQUM7SUFBQSxDQUFDO0lBRUYsMEJBQTBCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQWlCLElBQXNDLE9BQU8sSUFBSSxDQUFBLENBQUEsQ0FBQztJQUVsRixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQWlCO1FBQzNCLElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7WUFDekMsS0FBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFDO2dCQUN4QixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsVUFBVSxHQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7Z0JBQ2pELFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBQyxHQUFHLENBQUMsQ0FBQTtnQkFDeEMsSUFBSSxRQUFRLEtBQUssR0FBRyxDQUFDLFFBQVEsRUFBQztvQkFFMUIsSUFBRyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSSxVQUFVO3dCQUMxQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxHQUFHLENBQUMsQ0FBQTtvQkFHbkMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQWdCLENBQUM7b0JBQzFELElBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSSxVQUFVLEVBQUM7d0JBQ2hGLElBQUcsQ0FBQyxDQUFDLFFBQVE7NEJBQ1QsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLE9BQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEdBQUcsQ0FBQyxDQUFBO3FCQUN2RDtvQkFHRCxJQUFHLENBQUMsQ0FBQyxPQUFPOzJCQUNMLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDOzJCQUNyQixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUksUUFBUTsyQkFDeEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDOzJCQUNyQyxPQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFTLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBQzt3QkFDL0QsSUFBRyxDQUFDLENBQUMsUUFBUTs0QkFDVCxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDakMsT0FBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEdBQUcsQ0FBQyxDQUFBO3FCQUNsRTtvQkFJTCxPQUFPO3dCQUNILEtBQUssRUFBQyxFQUFDLEdBQUcsdUJBQWEsQ0FBQyxrQkFBa0IsRUFBQyxPQUFPLEVBQUMsaUJBQWlCLEdBQUMsVUFBVSxFQUFDO3dCQUNoRixJQUFJLEVBQUMsSUFBSTtxQkFDWixDQUFBO2lCQUNKO2FBRUo7U0FDSjtRQUVELElBQUEsb0JBQU8sRUFBQyxvQkFBb0IsRUFBQyx3QkFBd0IsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFcEUsT0FBTztZQUNILEtBQUssRUFBQyx1QkFBYSxDQUFDLGVBQWU7WUFDbkMsSUFBSSxFQUFDLElBQUk7U0FDWixDQUFBO0lBQ0wsQ0FBQztJQUVTLFlBQVksQ0FBQyxHQUFpQjtRQUNwQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBRXpCLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFHOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBUSxFQUFFLENBQUE7UUFHN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUdqQixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOztBQTVJTCxvQ0E2SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dDcml0LCBsb2dJbmZvLCBsb2dXYXJuIH0gZnJvbSBcIi4vTG9nU2VydmljZVwiO1xuaW1wb3J0IERlZmF1bHRFcnJvcnMgZnJvbSBcIi4vc3RydWN0dXJlcy9EZWZhdWx0RXJyb3JzXCI7XG5pbXBvcnQgeyBIVFRQUmVxdWVzdFZPLCBUcmFuc2ZlclBhY2tldFZPIH0gZnJvbSBcIi4vc3RydWN0dXJlcy9JbnRlcmZhY2VzXCI7XG5pbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCJcblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUVuZHBvaW50e1xuICAgIGVuZHBvaW50cz86SUVuZHBvaW50SGFuZGxlcltdXG4gICAgZXhlY3V0ZToocmVxOkhUVFBSZXF1ZXN0Vk8pPT5Qcm9taXNlPFRyYW5zZmVyUGFja2V0Vk88YW55Pj5cbiAgICBwcmVjaGVjazoocmVxOkhUVFBSZXF1ZXN0Vk8pPT5Qcm9taXNlPFRyYW5zZmVyUGFja2V0Vk88YW55PnxudWxsPlxuICAgIGluaXQ6KCkgPT4gUHJvbWlzZTx2b2lkPlxuICAgIGlnbm9yZUh0dHBMb2dnaW5nOmJvb2xlYW4sXG59XG5cbmNvbnN0IGh0dHBNZXRob2RzID0gW1wiR0VUXCIsXCJQT1NUXCIsXCJQVVRcIixcIkRFTEVURVwiLFwiUEFUQ0hcIixcIk9QVElPTlNcIixcIkhFQURcIixcIlRSQUNFXCIsXCJDT05ORUNUXCJdXG50eXBlIEhUVFBNZXRob2QgPSB0eXBlb2YgaHR0cE1ldGhvZHNbbnVtYmVyXTtcblxudHlwZSBJSGFuZGxlciA9IFJlY29yZDxIVFRQTWV0aG9kLCgocmVxOkhUVFBSZXF1ZXN0Vk8pPT5Qcm9taXNlPFRyYW5zZmVyUGFja2V0Vk88YW55Pj4pfHtcbiAgICBjb250cm9sbGVyOihyZXE6SFRUUFJlcXVlc3RWTyk9PlByb21pc2U8VHJhbnNmZXJQYWNrZXRWTzxhbnk+PixcbiAgICBpZ25vcmVJbnRlcmNlcHRvcj86Ym9vbGVhbixcbiAgICBhbGxvd0ludGVyY2VwdG9yRXJyb3I/OmJvb2xlYW5cbiAgICBhc1N0cmVhbT86Ym9vbGVhblxufT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVuZHBvaW50SGFuZGxlcntcbiAgICBlbmRwb2ludDpzdHJpbmcsXG4gICAgaGFuZGxlcj86KChyZXE6SFRUUFJlcXVlc3RWTyk9PlByb21pc2U8VHJhbnNmZXJQYWNrZXRWTzxhbnk+Pil8SUhhbmRsZXJcbiAgICBpZ25vcmVJbnRlcmNlcHRvcj86Ym9vbGVhblxuICAgIGluZGVwZW5kZWQ/OmJvb2xlYW4gLy8gaWYgdHJ1ZSAtIHdpbGwgYWxsb3cgYWJzb2x1dGUgcGF0aCBsaW5rZSBodHRwOi8vbG9jYWxob3N0OjMwMDAvZW5kZXBlbmRlZF9lbmRwb2ludFxuICAgIGFsbG93SW50ZXJjZXB0b3JFcnJvcj86Ym9vbGVhblxuICAgIGFzU3RyZWFtPzpib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlRW5kcG9pbnQgaW1wbGVtZW50cyBJQmFzZUVuZHBvaW50e1xuXG4gICAgcHJpdmF0ZSBpbmlhbGl6ZWRFbmRwb2ludE5hbWVzOlN0cmluZ1tdPVtdO1xuXG4gICAgZW5kcG9pbnRzPzpJRW5kcG9pbnRIYW5kbGVyW11cbiAgICBwdWJsaWMgaWdub3JlSHR0cExvZ2dpbmcgPSBmYWxzZVxuICAgIHByaXZhdGUgc3RhdGljIGVudHJ5cG9pbnQ6c3RyaW5nPVwiL1wiO1xuICAgIHByaXZhdGUgZW5kcG9pbnQ9XCJcIlxuICAgIFxuXG4gICAgLy8gZ2xvYmFsIGVudHJ5cG9pbnRcbiAgICBzdGF0aWMgc2V0RW50cnlQb2ludD0oZXA6c3RyaW5nKT0+e1xuICAgICAgICB0aGlzLmVudHJ5cG9pbnQgPSBlcDtcbiAgICAgICAgaWYoIXRoaXMuZW50cnlwb2ludC5lbmRzV2l0aChcIi9cIikpe1xuICAgICAgICAgICAgdGhpcy5lbnRyeXBvaW50Kz1cIi9cIlxuICAgICAgICB9XG4gICAgICAgIGlmKCFlcC5zdGFydHNXaXRoKFwiL1wiKSlcbiAgICAgICAgICAgIHRoaXMuZW50cnlwb2ludD1cIi9cIitlcDtcbiAgICB9XG4gICAgc3RhdGljIGdldEVudHJ5UG9pbnQ9KCk6c3RyaW5nPT57XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5cG9pbnQ7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0cnVjdG9yKGVuZHBvaW50OnN0cmluZyl7XG4gICAgICAgIGlmKGVuZHBvaW50LnN0YXJ0c1dpdGgoXCIvXCIpKVxuICAgICAgICAgICAgZW5kcG9pbnQ9ZW5kcG9pbnQuc3Vic3RyaW5nKDEpXG4gICAgICAgIGlmKCFlbmRwb2ludC5lbmRzV2l0aChcIi9cIikpXG4gICAgICAgICAgICBlbmRwb2ludD1lbmRwb2ludCtcIi9cIlxuICAgICAgICB0aGlzLmVuZHBvaW50PWVuZHBvaW50O1xuICAgIH1cbiAgICBcblxuICAgIHJlZ2lzdGVyRW5kcG9pbnRzKGVuZHBvaW50czpJRW5kcG9pbnRIYW5kbGVyW10pe1xuICAgICAgICBmb3IobGV0IGkgb2YgZW5kcG9pbnRzKXtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gYmFzZSBwb2ludFxuICAgICAgICAgICAgaWYoaS5lbmRwb2ludD09PVwiXCIgfHwgaS5lbmRwb2ludD09PVwiL1wiKXtcbiAgICAgICAgICAgICAgICBsZXQgZW1wdHk9aS5lbmRwb2ludCA9PT0gXCJcIjtcbiAgICAgICAgICAgICAgICBpLmVuZHBvaW50PXRoaXMuZW5kcG9pbnRcbiAgICAgICAgICAgICAgICBpZihpLmVuZHBvaW50LmVuZHNXaXRoKFwiL1wiKSAmJiBlbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgaS5lbmRwb2ludD1pLmVuZHBvaW50LnN1YnN0cmluZygwLGkuZW5kcG9pbnQubGVuZ3RoLTEpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKGkuZW5kcG9pbnQuc3RhcnRzV2l0aChcIi9cIikpXG4gICAgICAgICAgICAgICAgaS5lbmRwb2ludCA9IGkuZW5kcG9pbnQuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICBpZihpLmVuZHBvaW50LmVuZHNXaXRoKFwiL1wiKSlcbiAgICAgICAgICAgICAgICBpLmVuZHBvaW50PWkuZW5kcG9pbnQuc3Vic3RyaW5nKDAsaS5lbmRwb2ludC5sZW5ndGgtMSlcblxuICAgICAgICAgICAgaWYoIWkuaW5kZXBlbmRlZClcbiAgICAgICAgICAgICAgICBpLmVuZHBvaW50ID0gdGhpcy5lbmRwb2ludCtpLmVuZHBvaW50XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmRwb2ludHMgPWVuZHBvaW50cztcbiAgICB9XG5cbiAgICBcbiAgICBhc3luYyBpbml0KCl7XG4gICAgICAgIGlmKCF0aGlzLmVuZHBvaW50cyl7XG4gICAgICAgICAgICBsb2dDcml0KFwiJHtCYXNlRW5kcG9pbnQuanN9XCIsXCJObyBlbmRwb2ludHMgcmVnaXN0ZXJlZCBmb3IgXCIrdGhpcy5lbmRwb2ludClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy5lbmRwb2ludHMpe1xuICAgICAgICAgICAgbG9nSW5mbyhcIiR7QmFzZUVuZHBvaW50LmpzfVwiLFwiZW5kcG9pbnQ6IFwiK2kuZW5kcG9pbnQrXCIgaW5pdGFsaXplZCwgaWdub3JlSW50ZXJjZXB0b3I6IFwiKyhpLmlnbm9yZUludGVyY2VwdG9yID8/IFwiZmFsc2VcIikpO1xuICAgICAgICAgICAgdGhpcy5pbmlhbGl6ZWRFbmRwb2ludE5hbWVzLnB1c2goaS5lbmRwb2ludCtcIiBpZ25vcmUgaW50ZXJjZXB0b3I6IFwiKyhpLmlnbm9yZUludGVyY2VwdG9yID8/IFwiZmFsc2VcIikpXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0SW5pdGFsaXplZEVuZHBvaW50TmFtZXMoKTpTdHJpbmdbXXtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pYWxpemVkRW5kcG9pbnROYW1lcztcbiAgICB9XG5cbiAgICBhc3luYyBwcmVjaGVjayhyZXE6SFRUUFJlcXVlc3RWTyk6UHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT58bnVsbD57cmV0dXJuIG51bGx9XG5cbiAgICBhc3luYyBleGVjdXRlKHJlcTpIVFRQUmVxdWVzdFZPKTpQcm9taXNlPFRyYW5zZmVyUGFja2V0Vk88YW55Pj57XG4gICAgICAgIGlmKHRoaXMuZW5kcG9pbnRzICYmIHRoaXMuZW5kcG9pbnRzLmxlbmd0aD4wKXtcbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiB0aGlzLmVuZHBvaW50cyl7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldEVQID0gQmFzZUVuZHBvaW50LmVudHJ5cG9pbnQraS5lbmRwb2ludFxuICAgICAgICAgICAgICAgIHRhcmdldEVQID0gdGFyZ2V0RVAucmVwbGFjZUFsbChcIi8vXCIsXCIvXCIpXG4gICAgICAgICAgICAgICAgaWYoIHRhcmdldEVQID09PSByZXEuZW5kcG9pbnQpe1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgaWYoaS5oYW5kbGVyICYmIHR5cGVvZiBpLmhhbmRsZXIgPT09XCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuaGFuZGxlci5jYWxsKHRoaXMscmVxKVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIG1ldGhvZCBhbmQgY2FsbCBjb250cm9sbGVyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0dHBNZXRob2QgPSByZXEubWV0aG9kLnRvVXBwZXJDYXNlKCkgYXMgSFRUUE1ldGhvZDtcbiAgICAgICAgICAgICAgICAgICAgaWYoaS5oYW5kbGVyICYmIGkuaGFuZGxlcltodHRwTWV0aG9kXSAmJiB0eXBlb2YgaS5oYW5kbGVyW2h0dHBNZXRob2RdID09PVwiZnVuY3Rpb25cIil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpLmFzU3RyZWFtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IHRoaXMuY3JlYXRlU3RyZWFtKHJlcSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGkuaGFuZGxlcltodHRwTWV0aG9kXSBhcyBhbnkpLmNhbGwodGhpcyxyZXEpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBtZXRob2QgYW5kIGNhbGwgY29udHJvbGxlciBpbiBoYW5kbGVyIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICBpZihpLmhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGkuaGFuZGxlcltodHRwTWV0aG9kXVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mIGkuaGFuZGxlcltodHRwTWV0aG9kXSA9PT1cIm9iamVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBcImNvbnRyb2xsZXJcIiBpbiBpLmhhbmRsZXJbaHR0cE1ldGhvZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiAoaS5oYW5kbGVyW2h0dHBNZXRob2RdIGFzIGFueSkuY29udHJvbGxlciA9PT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpLmFzU3RyZWFtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEgPSB0aGlzLmNyZWF0ZVN0cmVhbShyZXEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaS5oYW5kbGVyW2h0dHBNZXRob2RdIGFzIGFueSkuY29udHJvbGxlci5jYWxsKHRoaXMscmVxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAvLyBObyBoYW5kbGVyIGZvciBodHRwIG1ldGhvZFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ey4uLkRlZmF1bHRFcnJvcnMuTUVUSE9EX05PVF9BTExPV0VELGRldGFpbHM6XCJObyBoYW5kbGVyIGZvciBcIitodHRwTWV0aG9kfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6bnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsb2dXYXJuKFwiJHtCYXNlRW5kcG9pbnQuanN9XCIsXCJVbmhhbmRsZWQgZW50cnlwb2ludDogXCIrdGhpcy5lbmRwb2ludClcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlcnJvcjpEZWZhdWx0RXJyb3JzLk5PVF9JTVBMRU1FTlRFRCxcbiAgICAgICAgICAgIGRhdGE6bnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVN0cmVhbShyZXE6SFRUUFJlcXVlc3RWTyk6SFRUUFJlcXVlc3RWT3tcbiAgICAgICAgY29uc3QgcmVzID0gcmVxLnJlc3BvbnNlO1xuICAgICAgICBcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgcmVzLnNldEhlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnLCAnY2h1bmtlZCcpO1xuICAgIFxuICAgICAgICAvLyBjcmVhdGUgYSByZWFkYWJsZSBzdHJlYW1cbiAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlKClcbiAgICBcbiAgICAgICAgLy8gc2VuZCB0aGUgc3RyZWFtIHRvIHRoZSBjbGllbnRcbiAgICAgICAgc3RyZWFtLnBpcGUocmVzKTtcbiAgICBcbiAgICAgICAgLy8gZXJyb3IgaGFuZGxpbmdcbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1N0cmVhbSBlcnJvcjonLCBlcnIpO1xuICAgICAgICAgICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoJ1N0cmVhbSBlcnJvcicpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVxLnN0cmVhbSA9IHN0cmVhbTtcbiAgICAgICAgcmV0dXJuIHJlcTtcbiAgICB9XG59Il19
@@ -32,4 +32,3 @@ class BaseService {
32
32
  applicationReady() { }
33
33
  }
34
34
  exports.BaseService = BaseService;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpU2VydmVyL0Jhc2VTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9FQUFvQztBQVNwQyxNQUFNLFFBQVEsR0FBQyxJQUFJLHdCQUFNLEVBQVEsQ0FBQztBQUdsQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQztBQUdILE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFDLEtBQUssSUFBSSxFQUFFO0lBQzlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBSUgsTUFBYSxXQUFXO0lBRVosSUFBSSxDQUFRO0lBR3RCLFlBQWEsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUMsSUFBSSxHQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUMsSUFBSSxHQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQixLQUFZLENBQUM7Q0FDOUI7QUF2QkQsa0NBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpZ25hbCBmcm9tIFwiYmFkbWZjay1zaWduYWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZVNlcnZpY2Uge1xuICBpbml0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFwcGxpY2F0aW9uUmVhZHk6ICgpID0+IHZvaWRcbiAgZ2V0TmFtZTogKCkgPT4gc3RyaW5nXG59XG5cbi8vIFdhdGNoIGZvciBwcm9jZXNzIHRlcm1pbmF0aW9uXG5jb25zdCBmaW5hbGl6ZT1uZXcgU2lnbmFsPHZvaWQ+KCk7XG5cbi8vIGludGVycnVwdCAoY3RybC1jKVxucHJvY2Vzcy5vbignU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICBmaW5hbGl6ZS5pbnZva2UoKTtcbiAgcHJvY2Vzcy5leGl0KDApO1xufSk7XG4gICAgICAgICAgICBcbi8vIHRlcm1pbmF0ZSAoa2lsbClcbnByb2Nlc3Mub24oJ1NJR1RFUk0nLGFzeW5jICgpID0+IHtcbiAgZmluYWxpemUuaW52b2tlKCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn0pO1xuXG5cbi8vIEJhc2Ugc2VydmljZVxuZXhwb3J0IGNsYXNzIEJhc2VTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlIHtcblxuICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nXG4gIFxuXG4gIGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gIH1cblxuICBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHsgXG4gICAgY29uc29sZS5sb2coXCJTZXJ2aWNlOiBcIit0aGlzLm5hbWUrXCIgaW5pdGlhbGl6ZWRcIik7XG4gICAgZmluYWxpemUuc3Vic2NyaWJlKHRoaXMuZmluaXNoU2VydmljZSk7XG4gIH1cbiAgXG4gIGFzeW5jIGZpbmlzaFNlcnZpY2UgKCl7XG4gICAgY29uc29sZS5sb2coXCJTZXJ2aWNlOiBcIit0aGlzLm5hbWUrXCIgZmluaXNoZWQgLS0gbm90IGltcGxlbWVudGVkIC0tXCIpO1xuICB9XG5cbiAgZ2V0TmFtZSgpOnN0cmluZ3tcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgYXBwbGljYXRpb25SZWFkeSAoKTogdm9pZCB7IH1cbn1cblxuIl19
@@ -54,4 +54,3 @@ class DBService extends BaseService_1.BaseService {
54
54
  }
55
55
  }
56
56
  exports.DBService = DBService;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiREJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaVNlcnZlci9EQlNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQXFDO0FBQ3JDLCtDQUE0QztBQUc1QyxvREFBaUQ7QUEwRHBDLFFBQUEsTUFBTSxHQUFDLElBQUksb0JBQUcsQ0FBcUIsU0FBUyxFQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZFLE1BQWEsU0FBVSxTQUFRLHlCQUFXO0lBRXRDLE1BQU0sQ0FBQyxZQUFZLEdBQWUsRUFBRSxDQUFDO0lBRXJDLE9BQU8sQ0FBa0I7SUFDekIsT0FBTyxHQUFtQixJQUFJLENBQUM7SUFDL0IsWUFBWSxPQUF3QjtRQUNoQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBQyxPQUFPLENBQUM7UUFDckIsSUFBRyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7WUFDL0IsS0FBSSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFDO2dCQUNoQyxJQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFO29CQUMxQixNQUFNLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQywwQkFBMEIsR0FBQyxPQUFPLENBQUMsRUFBRSxFQUFDLENBQUE7YUFDcEU7U0FDSjtRQUNELFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUcsT0FBTyxFQUFDO1lBQzNCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUE7U0FDbkM7UUFFRCxjQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUMsRUFBRTtZQUUzQixJQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO2dCQUNsRixPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUd4RCxLQUFJLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUM7Z0JBQ2hDLElBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTztvQkFDckMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNuQztZQUVELE1BQU0sS0FBSyxHQUFHO2dCQUNWLElBQUksRUFBQyxjQUFjO2dCQUNuQixLQUFLLEVBQUMsQ0FBQyxDQUFDO2dCQUNSLEtBQUssRUFBQyxJQUFJO2dCQUNWLEdBQUcsRUFBQyxFQUFFO2dCQUNOLElBQUksRUFBQyxjQUFjO2dCQUNuQixPQUFPLEVBQUMsZ0JBQWdCLEdBQUMsR0FBRyxDQUFDLElBQUk7YUFDcEMsQ0FBQTtZQUVELElBQUcsR0FBRyxDQUFDLFNBQVM7Z0JBQ1osTUFBTSxLQUFLLENBQUM7WUFDaEIsT0FBTyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsQ0FBQztRQUN6QixDQUFDLENBQUE7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDZixNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDJCQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN4RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQzs7QUF6REwsOEJBNERDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBSZXEgfSBmcm9tIFwiYmFkbWZjay1zaWduYWxcIjtcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSBcIi4vQmFzZVNlcnZpY2VcIjtcbmltcG9ydCB7IG9mZiB9IGZyb20gXCJwcm9jZXNzXCI7XG5pbXBvcnQgeyBJREJBZGFwdGVyIH0gZnJvbSBcIi4vZGIvSURCQWRhcHRlclwiO1xuaW1wb3J0IHsgTXlzcWxBZGFwdGVyIH0gZnJvbSBcIi4vZGIvTXlzcWxBZGFwdGVyXCI7XG5cblxuZXhwb3J0IGludGVyZmFjZSBJREJRdWVyeUZpZWxkIGV4dGVuZHMgUmVjb3JkPHN0cmluZyxzdHJpbmd8bnVtYmVyfGJvb2xlYW58bnVsbHx1bmRlZmluZWR8e1xuICAgIG5hbWU/OnN0cmluZ3xudWxsLFxuICAgIHZhbHVlOnN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCxcbiAgICBzeXN0ZW0/OmJvb2xlYW4sXG4gICAgaWdub3JlSW5JbnNlcnQ/OmJvb2xlYW4sXG4gICAgaWdub3JlSW5VcGRhdGU/OmJvb2xlYW4sXG4gICAgdXNlSW5SZXBsYWNlPzpib29sZWFuXG5cbiAgICBfX3BhcnNlZFZhbHVlPzpzdHJpbmd8bnVtYmVyfGJvb2xlYW58bnVsbHx1bmRlZmluZWRcbn0+e31cblxuZXhwb3J0IGludGVyZmFjZSBJREJRdWVyeXtcbiAgICBkYmlkPzpzdHJpbmcsXG4gICAgcXVlcnk6c3RyaW5nLFxuICAgIGZpZWxkcz86SURCUXVlcnlGaWVsZFxuICAgIHRocm93YWJsZT86Ym9vbGVhblxuICAgIHRyYW5zYWN0aW9uSUQ/Om51bWJlclxuICAgIGNhbGN1bGF0ZUNvdW50Pzpib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURCRXJyb3J7XG4gICAgY29kZTogc3RyaW5nLFxuICAgIGVycm5vOiBudW1iZXIsXG4gICAgZmF0YWw6IGJvb2xlYW4sXG4gICAgc3FsOiBzdHJpbmcsXG4gICAgbmFtZTpzdHJpbmcsXG4gICAgbWVzc2FnZTpzdHJpbmcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURCUmVzdWx0e1xuICAgIGRhdGE/OmFueXxudWxsLFxuICAgIGVycm9yPzpJREJFcnJvcnxudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURCU2VyaWNlT3B0aW9uc3tcbiAgICBpZDpzdHJpbmcsXG4gICAgdHlwZTpcIm15c3FsXCJ8XCJwb3N0Z3Jlc1wiLFxuICAgIGNvbm5lY3Rpb246REJBZGFwdGVyT3B0aW9ucyBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEQkFkYXB0ZXJPcHRpb25ze1xuICAgIGNvbm5lY3Rpb25MaW1pdDpudW1iZXIsXG4gICAgaG9zdDpzdHJpbmcsXG4gICAgdXNlcjpzdHJpbmcsXG4gICAgcGFzc3dvcmQ6c3RyaW5nLFxuICAgIHBvcnQ6bnVtYmVyLFxuICAgIGRhdGFiYXNlOnN0cmluZywgIFxuICAgIHF1ZXVlTGltaXQ/Om51bWJlcixcbiAgICB0cmFuc2FjdGlvbkZhaWxSZXBvcnQ/Oih0cng6YW55LG1lc3NhZ2U6c3RyaW5nKT0+dm9pZCxcbiAgICB0cmFuc2FjdGlvbkZhaWxSZXBvcnREaXI/OnN0cmluZyxcbiAgICBuYXhUcmFuc2FjdGlvbldhaXRUaW1lPzpudW1iZXIsXG4gICAgZGVidWc/OmJvb2xlYW5cblxufVxuXG5leHBvcnQgY29uc3QgUkVRX0RCPW5ldyBSZXE8SURCUXVlcnksSURCUmVzdWx0Pih1bmRlZmluZWQsXCJEQl9TRUxFQ1RcIik7XG5cbmV4cG9ydCBjbGFzcyBEQlNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG5cbiAgICBzdGF0aWMgYWxsSW5zdGFuY2VzOkRCU2VydmljZVtdID0gW107XG5cbiAgICBvcHRpb25zOklEQlNlcmljZU9wdGlvbnM7XG4gICAgYWRhcHRlcjpJREJBZGFwdGVyfG51bGwgPSBudWxsO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6SURCU2VyaWNlT3B0aW9ucykge1xuICAgICAgICBzdXBlcihcIkRCIFNlcnZpY2VcIik7XG4gICAgICAgIHRoaXMub3B0aW9ucz1vcHRpb25zO1xuICAgICAgICBpZihEQlNlcnZpY2UuYWxsSW5zdGFuY2VzLmxlbmd0aD4wKXtcbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiBEQlNlcnZpY2UuYWxsSW5zdGFuY2VzKXtcbiAgICAgICAgICAgICAgICBpZihpLm9wdGlvbnMuaWQgPT09IG9wdGlvbnMuaWQpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHtjb2RlOi0xLG1lc3NhZ2U6XCJEQlNlcnZpY2UgZHVwbGljYXRlIGlkOiBcIitvcHRpb25zLmlkfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIERCU2VydmljZS5hbGxJbnN0YW5jZXMucHVzaCh0aGlzKTtcbiAgICB9XG5cbiAgICBhc3luYyBpbml0KCl7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICAgICAgaWYodGhpcy5vcHRpb25zLnR5cGU9PT1cIm15c3FsXCIpe1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVNeXNxbERhdGFiYXNlKClcbiAgICAgICAgfVxuXG4gICAgICAgIFJFUV9EQi5saXN0ZW5lciA9IGFzeW5jIChyZXEpPT57XG4gICAgICAgICAgICAvLyBvbmx5IG9uZSBkYiBpbnN0YW5jZVxuICAgICAgICAgICAgaWYoIXJlcS5kYmlkICYmIERCU2VydmljZS5hbGxJbnN0YW5jZXMubGVuZ3RoPT09MSAmJiBEQlNlcnZpY2UuYWxsSW5zdGFuY2VzWzBdLmFkYXB0ZXIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIERCU2VydmljZS5hbGxJbnN0YW5jZXNbMF0uYWRhcHRlci5xdWVyeShyZXEpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBtdWx0aXBsZSBkYiBpbnN0YW5jZXNcbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiBEQlNlcnZpY2UuYWxsSW5zdGFuY2VzKXtcbiAgICAgICAgICAgICAgICBpZihpLm9wdGlvbnMuaWQgPT09IHJlcS5kYmlkICYmIGkuYWRhcHRlcilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuYWRhcHRlci5xdWVyeShyZXEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHtcbiAgICAgICAgICAgICAgICBjb2RlOlwiREJfTk9UX0ZPVU5EXCIsXG4gICAgICAgICAgICAgICAgZXJybm86LTEsXG4gICAgICAgICAgICAgICAgZmF0YWw6dHJ1ZSxcbiAgICAgICAgICAgICAgICBzcWw6XCJcIixcbiAgICAgICAgICAgICAgICBuYW1lOlwiREJfTk9UX0ZPVU5EXCIsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcIkRCIG5vdCBmb3VuZDogXCIrcmVxLmRiaWRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYocmVxLnRocm93YWJsZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIHJldHVybiB7ZXJyb3I6ZXJyb3J9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZmluaXNoU2VydmljZSgpe1xuICAgICAgICBhd2FpdCB0aGlzLmFkYXB0ZXI/LmZpbmlzaCgpO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZU15c3FsRGF0YWJhc2UoKXtcbiAgICAgICAgdGhpcy5hZGFwdGVyID0gbmV3IE15c3FsQWRhcHRlcih0aGlzLm9wdGlvbnMuY29ubmVjdGlvbilcbiAgICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLmluaXQoKVxuICAgIH1cblxuXG59Il19
@@ -180,4 +180,3 @@ new DocumentGenerator({
180
180
  savePath: "./bin/",
181
181
  savePathFileName: "doc.json",
182
182
  });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9jdW1lbnRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaVNlcnZlci9Eb2N1bWVudFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLG1EQUE2QztBQW9DN0MsTUFBYSxpQkFBaUI7SUFDckIsYUFBYSxHQUFtQyxFQUFFLENBQUM7SUFDbkQsTUFBTSxDQUEwQjtJQUV4QyxZQUFZLE1BQStCO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxRQUFRO1FBQ2YsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxxQkFBcUIsR0FBRyxHQUFHLEVBQUU7UUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUc5QyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsU0FBUzthQUNUO1lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxD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QVEsRUFBRSxFQUFFLENBQUM7cUJBQ3JCLElBQUksRUFBRSxDQUFDO2dCQUVULE1BQU07WUFFUCxLQUFLLE1BQU07Z0JBQ1YsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO2lCQUNWO2dCQUVELE1BQU07U0FDUDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVPLGlCQUFpQjtRQUV4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFFckUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGdCQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztDQTBERDtBQWhTRCw4Q0FnU0M7QUFHRCxJQUFJLGlCQUFpQixDQUFDO0lBQ3JCLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLFdBQVcsRUFBRSxRQUFRO0lBQ3JCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLGdCQUFnQixFQUFFLFVBQVU7Q0FDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwYXJzZSwgU3BlYyB9IGZyb20gXCJjb21tZW50LXBhcnNlclwiO1xuXG4vL1RPRE86IGFwaSBlbmRwb2ludCwgc291cmNlcGF0aCwgLmRvYyBmaWxlIC0gZnJvbSBjb25maWdcblxuZGVjbGFyZSB0eXBlIERvY3VtZW50R2VuZXJhdG9yQ29uZmlnID0ge1xuXHRzb3VyY2VQYXRoOiBzdHJpbmc7XG5cdGFwaUVuZHBvaW50OiBzdHJpbmc7XG5cdHNhdmVQYXRoOiBzdHJpbmc7XG5cdHNhdmVQYXRoRmlsZU5hbWU6IHN0cmluZztcbn07XG5cbmRlY2xhcmUgdHlwZSBEb2N1bWVudEdlbmVyYXRvckRvY3VtZW50YXRpb24gPSB7XG5cdFtiYXNlRW5kcG9pbnROYW1lOiBzdHJpbmddOiB7XG5cdFx0W2VuZFBvaW50TmFtZTogc3RyaW5nXTogRG9jdW1lbnRHZW5lcmF0b3JEb2N1bWVudGF0aW9uRW5kcG9pbnQ7XG5cdH07XG59O1xuXG5kZWNsYXJlIHR5cGUgRG9jdW1lbnRHZW5lcmF0b3JEb2N1bWVudGF0aW9uRW5kcG9pbnQgPSB7XG5cdGhhbmRsZXI6IHN0cmluZztcblx0ZnVsbFBhdGg6IHN0cmluZztcblx0aWdub3JlSW50ZXJjZXB0b3I/OiBzdHJpbmc7XG5cblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdHBhcmFtZXRlcnM6IERvY3VtZW50R2VuZXJhdG9yRG9jdW1lbnRhdGlvbkVuZHBvaW50UGFyYW1ldGVyW107XG5cdHJldHVybnM/OiBPbWl0PERvY3VtZW50R2VuZXJhdG9yRG9jdW1lbnRhdGlvbkVuZHBvaW50UGFyYW1ldGVyLCBcIm9wdGlvbmFsXCI+O1xuXHRleGFtcGxlPzogc3RyaW5nW107XG5cdHRocm93cz86IE9taXQ8RG9jdW1lbnRHZW5lcmF0b3JEb2N1bWVudGF0aW9uRW5kcG9pbnRQYXJhbWV0ZXIsIFwib3B0aW9uYWxcIj5bXTtcbn07XG5cbmRlY2xhcmUgdHlwZSBEb2N1bWVudEdlbmVyYXRvckRvY3VtZW50YXRpb25FbmRwb2ludFBhcmFtZXRlciA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cdG9wdGlvbmFsPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudEdlbmVyYXRvciB7XG5cdHByaXZhdGUgZG9jdW1lbnRhdGlvbjogRG9jdW1lbnRHZW5lcmF0b3JEb2N1bWVudGF0aW9uID0ge307XG5cdHByaXZhdGUgY29uZmlnOiBEb2N1bWVudEdlbmVyYXRvckNvbmZpZztcblxuXHRjb25zdHJ1Y3Rvcihjb25maWc6IERvY3VtZW50R2VuZXJhdG9yQ29uZmlnKSB7XG5cdFx0dGhpcy5jb25maWcgPSBjb25maWc7XG5cblx0XHR0aGlzLmdlbmVyYXRlRG9jdW1lbnRhdGlvbigpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRGaWxlcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIGZzLnJlYWRkaXJTeW5jKHRoaXMuY29uZmlnLnNvdXJjZVBhdGgpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRGaWxlQ29udGVudChmaWxlOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmNvbmZpZy5zb3VyY2VQYXRoLCBmaWxlKSwgXCJ1dGYtOFwiKTtcblx0fVxuXG5cdHByaXZhdGUgZ2VuZXJhdGVEb2N1bWVudGF0aW9uID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3QgZmlsZSBvZiB0aGlzLmdldEZpbGVzKCkpIHtcblx0XHRcdGNvbnN0IGZpbGVDb250ZW50ID0gdGhpcy5nZXRGaWxlQ29udGVudChmaWxlKTtcblxuXHRcdFx0Ly8gZ2V0IGJhc2UgZW5kcG9pbnRcblx0XHRcdGNvbnN0IGJhc2VFbmRwb2ludCA9IGZpbGVDb250ZW50Lm1hdGNoKC9zdXBlclxcKFsnXCJdKC4qPylbJ1wiXVxcKS8pO1xuXHRcdFx0aWYgKCFiYXNlRW5kcG9pbnQpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihgTm8gYmFzZSBlbmRwb2ludCBmb3VuZCBpbiAke2ZpbGV9YCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBub2RlRW5kcG9pbnQgPSB0aGlzLmNvbmZpZy5hcGlFbmRwb2ludCArIFwiL1wiICsgYmFzZUVuZHBvaW50WzFdO1xuXG5cdFx0XHQvLyBnZXQgYWxsIGVuZHBvaW50c1xuXHRcdFx0Y29uc3QgcmVnZXggPSAve1xccyplbmRwb2ludDpcXHMqXCIoLio/KVwiLFxccypoYW5kbGVyOlxccyp0aGlzXFwuKC4qPykoPzosXFxzKmlnbm9yZUludGVyY2VwdG9yOlxccyoodHJ1ZXxmYWxzZSkpP1xccyp9L2c7XG5cblx0XHRcdGNvbnN0IGVuZHBvaW50cyA9IGZpbGVDb250ZW50Lm1hdGNoQWxsKHJlZ2V4KTtcblxuXHRcdFx0Zm9yIChjb25zdCBtYXRjaCBvZiBlbmRwb2ludHMpIHtcblx0XHRcdFx0Y29uc3QgZW5kcG9pbnROYW1lOiBzdHJpbmcgPSBtYXRjaFsxXTtcblx0XHRcdFx0Y29uc3QgaGFuZGxlciA9IG1hdGNoWzJdO1xuXHRcdFx0XHRjb25zdCBpZ25vcmVJbnRlcmNlcHRvciA9IG1hdGNoWzNdO1xuXG5cdFx0XHRcdGlmICghdGhpcy5kb2N1bWVudGF0aW9uLmhhc093blByb3BlcnR5KG5vZGVFbmRwb2ludCkpIHtcblx0XHRcdFx0XHR0aGlzLmRvY3VtZW50YXRpb25bbm9kZUVuZHBvaW50XSA9IHt9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZW5kcG9pbnQ6IERvY3VtZW50R2VuZXJhdG9yRG9jdW1lbnRhdGlvbkVuZHBvaW50ID0ge1xuXHRcdFx0XHRcdGhhbmRsZXIsXG5cdFx0XHRcdFx0aWdub3JlSW50ZXJjZXB0b3IsXG5cdFx0XHRcdFx0ZnVsbFBhdGg6IG5vZGVFbmRwb2ludCArIFwiL1wiICsgZW5kcG9pbnROYW1lLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBcIlwiLFxuXHRcdFx0XHRcdHBhcmFtZXRlcnM6IFtdLFxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHRoaXMuZG9jdW1lbnRhdGlvbltub2RlRW5kcG9pbnRdW2VuZHBvaW50TmFtZV0gPSB0aGlzLnBhcnNlRW5kUG9pbnRDb21tZW50cyhcblx0XHRcdFx0XHR0aGlzLmdldENvbW1lbnRzQnlFbmRwb2ludChmaWxlQ29udGVudCwgaGFuZGxlciksXG5cdFx0XHRcdFx0ZW5kcG9pbnQsXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5zYXZlRG9jdW1lbnRhdGlvbigpO1xuXG5cdFx0Y29uc29sZS5sb2coXCJEb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBhbmQgc2F2ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuXHR9O1xuXG5cdHByaXZhdGUgZ2V0Q29tbWVudHNCeUVuZHBvaW50KGZpbGVDb250ZW50OiBzdHJpbmcsIGhhbmRsZXI6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0bGV0IGNvbW1lbnRzOiBzdHJpbmcgPSBcIlwiO1xuXG5cdFx0Ly9UT0RPOiBjaGFuZ2UgdG8gcmVnZXhcblx0XHQvL2NvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgL1xcXFwqXFxcXCooW1xcXFxzXFxcXFNdKj8pXFxcXCovXFxcXHMqYXN5bmNcXFxccyske2hhbmRsZXJ9XFxcXHMqXFxcXChgLCBcImdcIik7XG5cdFx0Ly9jb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYC9cXFxcKlxcXFwqKFtcXFxcc1xcXFxTXSo/KVxcXFwqXFxcXC9cXFxccyphc3luY1xcXFxzKyR7aGFuZGxlcn1cXFxccypcXFxcKGAsIFwiZ1wiKTtcblx0XHQvL2NvbnN0IG1hdGNoMiA9IGZpbGVDb250ZW50Lm1hdGNoKHJlZ2V4KTtcblxuXHRcdC8vaWYgKG1hdGNoMikge1xuXHRcdC8vIFx0Y29tbWVudHMgPSBtYXRjaDJbMF07XG5cdFx0Ly8gXHQvLyBmb3JtYXRKYXZhRG9jKG1hdGNoMlswXSwgZGVzY3JpcHRpb24pO1xuXHRcdC8vfVxuXG5cdFx0Y29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGAoYXN5bmMgKSoke2hhbmRsZXJ9KFxcXFxzKilcXFxcKGAsIFwiZ1wiKTtcblx0XHRjb25zdCBtYXRjaCA9IGZpbGVDb250ZW50Lm1hdGNoKHJlZ2V4KTtcblxuXHRcdGlmIChtYXRjaCkge1xuXHRcdFx0Ly8gY29uc3QgaW5kZXhIYW5kbGVyID0gZmlsZUNvbnRlbnQuaW5kZXhPZihgYXN5bmMgJHtoYW5kbGVyfShgKTtcblx0XHRcdGNvbnN0IGluZGV4SGFuZGxlciA9IGZpbGVDb250ZW50LmluZGV4T2YoYCR7bWF0Y2hbMF19YCk7XG5cblx0XHRcdC8vIGlmIChpbmRleEhhbmRsZXIgPT09IC0xKSB7XG5cdFx0XHQvLyBcdGluZGV4SGFuZGxlciA9IGZpbGVDb250ZW50LmluZGV4T2YoYCR7aGFuZGxlcn0oYCk7XG5cdFx0XHQvLyB9XG5cblx0XHRcdGlmIChpbmRleEhhbmRsZXIgIT0gLTEpIHtcblx0XHRcdFx0Y29uc3QgaW5kZXhDb21tZW50U3RhcnQgPSBmaWxlQ29udGVudC5sYXN0SW5kZXhPZihcIi8qKlwiLCBpbmRleEhhbmRsZXIpO1xuXHRcdFx0XHRpZiAoaW5kZXhDb21tZW50U3RhcnQgIT0gLTEpIHtcblx0XHRcdFx0XHRjb25zdCBpbmRleENvbW1lbnRFbmQgPSBmaWxlQ29udGVudC5pbmRleE9mKFwiKi9cIiwgaW5kZXhDb21tZW50U3RhcnQpO1xuXG5cdFx0XHRcdFx0aWYgKGluZGV4Q29tbWVudEVuZCAhPSAtMSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29tbWVudHNTdWJzdHJpbmcgPSBmaWxlQ29udGVudC5zdWJzdHJpbmcoaW5kZXhDb21tZW50U3RhcnQsIGluZGV4Q29tbWVudEVuZCArIDIpO1xuXG5cdFx0XHRcdFx0XHRpZiAoY29tbWVudHNTdWJzdHJpbmcpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVnZXhUb0NoZWNrQ29tbWVudFdpdGhNZXRob2QgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdGAke2NvbW1lbnRzU3Vic3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKX0oW1xcXFxzXSo/KShhc3luYyApKiR7aGFuZGxlcn0oXFxcXHMqKVxcXFwoYCxcblx0XHRcdFx0XHRcdFx0XHRcImdcIixcblx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBtYXRjaFRvQ2hlY2tDb21tZW50V2l0aE1ldGhvZCA9IGZpbGVDb250ZW50Lm1hdGNoKHJlZ2V4VG9DaGVja0NvbW1lbnRXaXRoTWV0aG9kKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAobWF0Y2hUb0NoZWNrQ29tbWVudFdpdGhNZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRjb21tZW50cyA9IGNvbW1lbnRzU3Vic3RyaW5nO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbW1lbnRzO1xuXHR9XG5cblx0cHJpdmF0ZSBwYXJzZUVuZFBvaW50Q29tbWVudHMoXG5cdFx0Y29tbWVudHM6IHN0cmluZyxcblx0XHRlbmRwb2ludDogRG9jdW1lbnRHZW5lcmF0b3JEb2N1bWVudGF0aW9uRW5kcG9pbnQsXG5cdCk6IERvY3VtZW50R2VuZXJhdG9yRG9jdW1lbnRhdGlvbkVuZHBvaW50IHtcblx0XHRpZiAoY29tbWVudHMpIHtcblx0XHRcdGNvbnN0IHBhcnNlZCA9IHBhcnNlKGNvbW1lbnRzLCB7IHNwYWNpbmc6IFwicHJlc2VydmVcIiB9KTtcblx0XHRcdGlmIChwYXJzZWRbMF0pIHtcblx0XHRcdFx0Y29uc3QgZmlyc3RQYXJzZWQgPSBwYXJzZWRbMF07XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGZpcnN0UGFyc2VkLnRhZ3MpO1xuXG5cdFx0XHRcdGVuZHBvaW50LmRlc2NyaXB0aW9uID0gdGhpcy50YWdNb2RpZmljYXRpb25zKGZpcnN0UGFyc2VkLmRlc2NyaXB0aW9uKTtcblxuXHRcdFx0XHRmaXJzdFBhcnNlZC50YWdzLmZvckVhY2goKHRhZykgPT4ge1xuXHRcdFx0XHRcdGVuZHBvaW50ID0gdGhpcy50YWdUb0VuZHBvaW50KHRhZywgZW5kcG9pbnQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZW5kcG9pbnQ7XG5cdH1cblxuXHQvKipcblx0ICogRnJvbSBjb21tZW50LXBhcnNlciBsaWJyYXJ5IHRvIGpzb25cblx0ICpcblx0ICogQHBhcmFtIHRhZ1xuXHQgKiBAcGFyYW0gZW5kcG9pbnRcblx0ICogQHJldHVybnNcblx0ICovXG5cdHByaXZhdGUgdGFnVG9FbmRwb2ludChcblx0XHR0YWc6IFNwZWMsXG5cdFx0ZW5kcG9pbnQ6IERvY3VtZW50R2VuZXJhdG9yRG9jdW1lbnRhdGlvbkVuZHBvaW50LFxuXHQpOiBEb2N1bWVudEdlbmVyYXRvckRvY3VtZW50YXRpb25FbmRwb2ludCB7XG5cdFx0c3dpdGNoICh0YWcudGFnKSB7XG5cdFx0XHRjYXNlIFwicGFyYW1cIjpcblx0XHRcdFx0ZW5kcG9pbnQucGFyYW1ldGVycy5wdXNoKHtcblx0XHRcdFx0XHRuYW1lOiB0aGlzLnRhZ01vZGlmaWNhdGlvbnModGFnLm5hbWUsIFwibmFtZVwiKSxcblx0XHRcdFx0XHR0eXBlOiB0YWcudHlwZSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogdGhpcy50YWdNb2RpZmljYXRpb25zKHRhZy5kZXNjcmlwdGlvbiksXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRhZy5vcHRpb25hbCxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcImRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdGVuZHBvaW50LmRlc2NyaXB0aW9uID0gdGhpcy50YWdNb2RpZmljYXRpb25zKHRhZy5kZXNjcmlwdGlvbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcImV4YW1wbGVcIjpcblx0XHRcdFx0aWYgKCFlbmRwb2ludC5leGFtcGxlKSB7XG5cdFx0XHRcdFx0ZW5kcG9pbnQuZXhhbXBsZSA9IFtdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZW5kcG9pbnQuZXhhbXBsZS5wdXNoKHRoaXMudGFnTW9kaWZpY2F0aW9ucyh0YWcuZGVzY3JpcHRpb24pKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwicmV0dXJuc1wiOlxuXHRcdFx0XHRlbmRwb2ludC5yZXR1cm5zID0ge1xuXHRcdFx0XHRcdG5hbWU6IHRoaXMudGFnTW9kaWZpY2F0aW9ucyh0YWcubmFtZSwgXCJuYW1lXCIpLFxuXHRcdFx0XHRcdHR5cGU6IHRhZy50eXBlLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB0aGlzLnRhZ01vZGlmaWNhdGlvbnModGFnLmRlc2NyaXB0aW9uKSxcblx0XHRcdFx0fTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwidGhyb3dzXCI6XG5cdFx0XHRcdGlmICghZW5kcG9pbnQudGhyb3dzKSB7XG5cdFx0XHRcdFx0ZW5kcG9pbnQudGhyb3dzID0gW107XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlbmRwb2ludC50aHJvd3MucHVzaCh7XG5cdFx0XHRcdFx0bmFtZTogdGhpcy50YWdNb2RpZmljYXRpb25zKHRhZy5uYW1lLCBcIm5hbWVcIiksXG5cdFx0XHRcdFx0dHlwZTogdGFnLnR5cGUsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHRoaXMudGFnTW9kaWZpY2F0aW9ucyh0YWcuZGVzY3JpcHRpb24pLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVuZHBvaW50O1xuXHR9XG5cblx0LyoqXG5cdCAqXG5cdCAqIG1vZGlmaWNhdGlvbiBhZnRlciBjb21tZW50LXBhcnNlciBsaWJyYXJ5IHBhcnNpbmdzIHdpdGggXCItXCIgaW4gZGVzY3JpcHRpb25cblx0ICpcblx0ICogQHBhcmFtIHRleHRcblx0ICogQHBhcmFtIGZpZWxkXG5cdCAqIEByZXR1cm5zXG5cdCAqL1xuXHRwcml2YXRlIHRhZ01vZGlmaWNhdGlvbnModGV4dDogc3RyaW5nLCBmaWVsZDogc3RyaW5nID0gXCJkZXNjcmlwdGlvblwiKTogc3RyaW5nIHtcblx0XHRzd2l0Y2ggKGZpZWxkKSB7XG5cdFx0XHRjYXNlIFwiZGVzY3JpcHRpb25cIjpcblx0XHRcdFx0dGV4dCA9IHRleHRcblx0XHRcdFx0XHQudHJpbSgpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL14oXFwtLikvLCBcIlwiKVxuXHRcdFx0XHRcdC50cmltKCk7XG5cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJuYW1lXCI6XG5cdFx0XHRcdGlmICh0ZXh0ID09PSBcIi1cIikge1xuXHRcdFx0XHRcdHRleHQgPSBcIlwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRleHQ7XG5cdH1cblxuXHRwcml2YXRlIHNhdmVEb2N1bWVudGF0aW9uKCk6IHZvaWQge1xuXHRcdC8vIGNvbnN0IGZvcm1hdEZvclNhdmUgPSB7IGRhdGE6IHRoaXMuZG9jdW1lbnRhdGlvbiB9O1xuXHRcdGNvbnN0IGZvcm1hdEZvclNhdmUgPSB0aGlzLmRvY3VtZW50YXRpb247XG5cdFx0Y29uc3QgZmlsZVBhdGggPSB0aGlzLmNvbmZpZy5zYXZlUGF0aCArIHRoaXMuY29uZmlnLnNhdmVQYXRoRmlsZU5hbWU7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShmb3JtYXRGb3JTYXZlLCBudWxsLCAyKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RG9jdW1lbnRhdGlvbigpOiBEb2N1bWVudEdlbmVyYXRvckRvY3VtZW50YXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmRvY3VtZW50YXRpb247XG5cdH1cblxuXHQvLyBjb25zdCBmb3JtYXRKYXZhRG9jID0gKGNvbW1lbnQsIGZpbmFsRGVzY3JpcHRpb24pID0+IHtcblx0Ly8gXHQvLyDQoNC10LPRg9C70Y/RgNC90YvQtSDQstGL0YDQsNC20LXQvdC40Y8g0LTQu9GPINGA0LDQt9C70LjRh9C90YvRhSDRh9Cw0YHRgtC10Lkg0LrQvtC80LzQtdC90YLQsNGA0LjRj1xuXHQvLyBcdGNvbnN0IGRlc2NyaXB0aW9uUmVnZXggPSAvXFwvXFwqXFwqKFtcXHNcXFNdKj8pKD89XFxzKlxcKlxccypAfFxccypcXCpcXC8pL2c7XG5cdC8vIFx0Y29uc3QgcGFyYW1SZWdleCA9IC9AcGFyYW1cXHMrKFxcdyspXFxzKyhbXlxcc10rKVxccyotXFxzKiguKz8pKD89XFxzK1xcKnwkKS9nO1xuXHQvLyBcdGNvbnN0IHJldHVyblJlZ2V4ID0gL0ByZXR1cm5zP1xccysoW15cXHNdKylcXHMqLVxccyooLis/KSg/PVxccytcXCp8JCkvZztcblx0Ly8gXHRjb25zdCB0aHJvd3NSZWdleCA9IC9AdGhyb3dzXFxzKyhbXlxcc10rKVxccyotXFxzKiguKz8pKD89XFxzK1xcKnwkKS9nO1xuXHQvLyBcdGNvbnN0IHNlZVJlZ2V4ID0gL0BzZWVcXHMrKFteXFxzXSspKD89XFxzK1xcKnwkKS9nO1xuXG5cdC8vIFx0Ly8g0JjQt9Cy0LvQtdC60LDQtdC8INC+0L/QuNGB0LDQvdC40LVcblx0Ly8gXHRjb25zdCBkZXNjcmlwdGlvbk1hdGNoID0gZGVzY3JpcHRpb25SZWdleC5leGVjKGNvbW1lbnQpO1xuXHQvLyBcdGNvbnN0IGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25NYXRjaCA/IGRlc2NyaXB0aW9uTWF0Y2hbMV0udHJpbSgpLnJlcGxhY2UoL1xcKlxccysvZywgXCJcIikucmVwbGFjZSgvXFxuL2csIFwiIFwiKSA6IFwiXCI7XG5cblx0Ly8gXHRmaW5hbERlc2NyaXB0aW9uLmluZm8gPSBkZXNjcmlwdGlvbjtcblxuXHQvLyBcdC8vINCY0LfQstC70LXQutCw0LXQvCDQv9Cw0YDQsNC80LXRgtGA0Ytcblx0Ly8gXHRjb25zdCBwYXJhbXMgPSBbXTtcblx0Ly8gXHRsZXQgcGFyYW1NYXRjaDtcblx0Ly8gXHR3aGlsZSAoKHBhcmFtTWF0Y2ggPSBwYXJhbVJlZ2V4LmV4ZWMoY29tbWVudCkpICE9PSBudWxsKSB7XG5cdC8vIFx0XHRwYXJhbXMucHVzaCh7XG5cdC8vIFx0XHRcdG5hbWU6IHBhcmFtTWF0Y2hbMV0sXG5cdC8vIFx0XHRcdHR5cGU6IHBhcmFtTWF0Y2hbMl0sXG5cdC8vIFx0XHRcdGRlc2NyaXB0aW9uOiBwYXJhbU1hdGNoWzNdLnRyaW0oKSxcblx0Ly8gXHRcdH0pO1xuXHQvLyBcdH1cblx0Ly8gXHRkZXNjcmlwdGlvbi5wYXJhbXMgPSBwYXJhbXM7XG5cblx0Ly8gXHQvLyDQmNC30LLQu9C10LrQsNC10Lwg0LLQvtC30LLRgNCw0YnQsNC10LzQvtC1INC30L3QsNGH0LXQvdC40LVcblx0Ly8gXHRjb25zdCByZXR1cm5NYXRjaCA9IHJldHVyblJlZ2V4LmV4ZWMoY29tbWVudCk7XG5cdC8vIFx0Y29uc3QgcmV0dXJuVHlwZSA9IHJldHVybk1hdGNoID8gcmV0dXJuTWF0Y2hbMV0gOiBcIlwiO1xuXHQvLyBcdGNvbnN0IHJldHVybkRlc2NyaXB0aW9uID0gcmV0dXJuTWF0Y2ggPyByZXR1cm5NYXRjaFsyXS50cmltKCkgOiBcIlwiO1xuXG5cdC8vIFx0ZmluYWxEZXNjcmlwdGlvbi5yZXR1cm4gPSB7XG5cdC8vIFx0XHR0eXBlOiByZXR1cm5UeXBlLFxuXHQvLyBcdFx0ZGVzY3JpcHRpb246IHJldHVybkRlc2NyaXB0aW9uLFxuXHQvLyBcdH07XG5cblx0Ly8gXHQvLyDQmNC30LLQu9C10LrQsNC10Lwg0LjRgdC60LvRjtGH0LXQvdC40Y9cblx0Ly8gXHRjb25zdCB0aHJvd3MgPSBbXTtcblx0Ly8gXHRsZXQgdGhyb3dzTWF0Y2g7XG5cdC8vIFx0d2hpbGUgKCh0aHJvd3NNYXRjaCA9IHRocm93c1JlZ2V4LmV4ZWMoY29tbWVudCkpICE9PSBudWxsKSB7XG5cdC8vIFx0XHR0aHJvd3MucHVzaCh7XG5cdC8vIFx0XHRcdGV4Y2VwdGlvbjogdGhyb3dzTWF0Y2hbMV0sXG5cdC8vIFx0XHRcdGRlc2NyaXB0aW9uOiB0aHJvd3NNYXRjaFsyXS50cmltKCksXG5cdC8vIFx0XHR9KTtcblx0Ly8gXHR9XG5cdC8vIFx0ZGVzY3JpcHRpb24udGhyb3dzID0gdGhyb3dzO1xuXG5cdC8vIFx0Ly8g0JjQt9Cy0LvQtdC60LDQtdC8INGC0LXQs9C4IEBzZWVcblx0Ly8gXHRjb25zdCBzZWVSZWZlcmVuY2VzID0gW107XG5cdC8vIFx0bGV0IHNlZU1hdGNoO1xuXHQvLyBcdHdoaWxlICgoc2VlTWF0Y2ggPSBzZWVSZWdleC5leGVjKGNvbW1lbnQpKSAhPT0gbnVsbCkge1xuXHQvLyBcdFx0c2VlUmVmZXJlbmNlcy5wdXNoKHNlZU1hdGNoWzFdKTtcblx0Ly8gXHR9XG5cblx0Ly8gXHRkZXNjcmlwdGlvbi5zZWUgPSBzZWVSZWZlcmVuY2VzO1xuXHQvLyB9O1xufVxuXG4vLyBjb25zdCBkb2N1bWVudEdlbmVyYXRvciA9XG5uZXcgRG9jdW1lbnRHZW5lcmF0b3Ioe1xuXHRzb3VyY2VQYXRoOiBcIi4vc3JjL2FwaVwiLFxuXHRhcGlFbmRwb2ludDogXCJhcGkvdjFcIixcblx0c2F2ZVBhdGg6IFwiLi9iaW4vXCIsXG5cdHNhdmVQYXRoRmlsZU5hbWU6IFwiZG9jLmpzb25cIixcbn0pO1xuXG4vLyBjb25zb2xlLmxvZyhkb2N1bWVudEdlbmVyYXRvci5nZXREb2N1bWVudGF0aW9uKCkpOyJdfQ==
@@ -30,4 +30,3 @@ const LocalRequest = async (ep, data, method, headers) => {
30
30
  console.log(resp);
31
31
  };
32
32
  exports.LocalRequest = LocalRequest;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaVNlcnZlci9Mb2NhbFJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQXdFO0FBc0NqRSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsRUFBVSxFQUFFLElBQVUsRUFBRSxNQUFlLEVBQUMsT0FBOEIsRUFBRSxFQUFFO0lBQzVHLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNiLElBQUksTUFBTTtRQUNULENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQ2xCLENBQUMsR0FBRyxNQUFNLENBQUE7SUFFWCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3JCLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLElBQUksR0FBRyxHQUFHLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztJQUV4QyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ3RDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFFVixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDOUIsSUFBSTtRQUNILElBQUksQ0FBQyxLQUFLLEtBQUs7WUFDZCxJQUFJLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLE1BQU07WUFDZixJQUFJLEdBQUcsTUFBTSxlQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQTtLQUNyRDtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBQyxDQUFDLENBQUMsQ0FBQTtLQUNyQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBO0FBekJZLFFBQUEsWUFBWSxnQkF5QnhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UsIEludGVybmFsQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSBcImF4aW9zXCJcblxuLypheGlvcy5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoKHg6SW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWc8YW55Pik9Pntcblx0Y29uc29sZS5sb2coYEFYSU9TIFJFUTpcXG5cXHR1cmw6JHt4LnVybH1cXG5cXHRtZXRob2Q6ICR7eC5tZXRob2R9XFxuXFx0ZGF0YTogJHsoKCk9Pntcblx0XHRpZih0eXBlb2YgeC5kYXRhID09PSBcInN0cmluZ1wiIClcblx0XHRcdHJldHVybiB4LmRhdGFcblxuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh4LmRhdGEsbnVsbCxcIlxcdFxcdFwiKTtcblx0fSkoKX1cXG5cXHRoZWFkZXJzOlxcbiR7KCgpPT57XG5cdFx0bGV0IGggPSBcIlwiO1xuXHRcdGZvcihsZXQgaSBpbiB4LmhlYWRlcnMpe1xuXHRcdFx0aWYoaCE9PVwiXCIpXG5cdFx0XHRcdGgrPVwiXFxuXCJcblx0XHRcdGgrPVwiXFx0XFx0XCIraStcIiA9IFwiK3guaGVhZGVyc1tpXVxuXHRcdH1cblx0XHRyZXR1cm4gaFxuXHR9KSgpfWApXG5cdHJldHVybiB4O1xufSlcblxuYXhpb3MuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoeDpBeGlvc1Jlc3BvbnNlKT0+e1xuXHRjb25zb2xlLmxvZyhgQVhJT1MgUkVTUDpcXG5cXHRkYXRhOiAkeygoKT0+e1xuXHRcdGlmKHR5cGVvZiB4LmRhdGEgPT09IFwic3RyaW5nXCIgKVxuXHRcdFx0cmV0dXJuIHguZGF0YVxuXG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHguZGF0YSxudWxsLFwiXFx0XFx0XCIpO1xuXHR9KSgpfVxcblxcdGhlYWRlcnM6XFxuJHsoKCk9Pntcblx0XHRsZXQgaCA9IFwiXCI7XG5cdFx0Zm9yKGxldCBpIGluIHguaGVhZGVycyl7XG5cdFx0XHRpZihoIT09XCJcIilcblx0XHRcdFx0aCs9XCJcXG5cIlxuXHRcdFx0aCs9XCJcXHRcXHRcIitpK1wiID0gXCIreC5oZWFkZXJzW2ldXG5cdFx0fVxuXHRcdHJldHVybiBoXG5cdH0pKCl9YClcblx0cmV0dXJuIHg7XG59KSovXG5cbmV4cG9ydCBjb25zdCBMb2NhbFJlcXVlc3QgPSBhc3luYyAoZXA6IHN0cmluZywgZGF0YT86IGFueSwgbWV0aG9kPzogc3RyaW5nLGhlYWRlcnM/Ontba2V5OnN0cmluZ106c3RyaW5nfSkgPT4ge1xuXHRsZXQgbSA9IFwiZ2V0XCJcblx0aWYgKG1ldGhvZClcblx0XHRtID0gbWV0aG9kLnRvTG93ZXJDYXNlKCk7XG5cdGlmIChkYXRhICYmICFtZXRob2QpXG5cdFx0bSA9IFwicG9zdFwiXG5cblx0aWYgKGVwLnN0YXJ0c1dpdGgoXCIvXCIpKVxuXHRcdGVwID0gZXAuc3Vic3RyaW5nKDEpXG5cdGxldCB1cmwgPSBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA5MS9cIiArIGVwO1xuXHRcblx0aWYgKGVwLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImh0dHBcIikpXG5cdFx0dXJsID0gZXA7XG5cblx0bGV0IHJlc3AgPSBudWxsO1xuXHRjb25zb2xlLmxvZyhcIm9wZW4gdXJsOiBcIiwgdXJsKVxuXHR0cnkge1xuXHRcdGlmIChtID09PSBcImdldFwiKVxuXHRcdFx0cmVzcCA9IGF3YWl0IGF4aW9zLmdldCh1cmwse2hlYWRlcnM6aGVhZGVyc30pO1xuXHRcdGlmIChtID09PSBcInBvc3RcIilcblx0XHRcdHJlc3AgPSBhd2FpdCBheGlvcy5wb3N0KHVybCwgZGF0YSx7aGVhZGVyczpoZWFkZXJzfSlcblx0fSBjYXRjaCAoZSkge1xuXHRcdGNvbnNvbGUubG9nKFwiRVJST1IhIGNhbnQgb3BlbiB1cmxcIixlKVxuXHR9XG5cdGNvbnNvbGUubG9nKHJlc3ApXG59XG4iXX0=
@@ -216,4 +216,3 @@ class LogService extends BaseService_1.BaseService {
216
216
  }
217
217
  }
218
218
  exports.LogService = LogService;
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGlTZXJ2ZXIvTG9nU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUE2QztBQUM3QywrQ0FBNEM7QUFFNUMsSUFBWSxTQU1YO0FBTkQsV0FBWSxTQUFTO0lBQ2pCLHVDQUFLLENBQUE7SUFDTCx5Q0FBTSxDQUFBO0lBQ04seUNBQU0sQ0FBQTtJQUNOLDJDQUFPLENBQUE7SUFDUCx5Q0FBTSxDQUFBO0FBQ1YsQ0FBQyxFQU5XLFNBQVMseUJBQVQsU0FBUyxRQU1wQjtBQWtCTSxNQUFNLG9CQUFvQixHQUFDLEdBQXFCLEVBQUU7SUFDckQsT0FBTztRQUNILFNBQVMsRUFBQyxHQUFHO1FBQ2IsU0FBUyxFQUFDLElBQUk7UUFDZCxLQUFLLEVBQUMsU0FBUyxDQUFDLEdBQUc7S0FDdEIsQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQU5ZLFFBQUEsb0JBQW9CLHdCQU1oQztBQUVNLE1BQU0sT0FBTyxHQUFDLENBQUMsT0FBVyxFQUFDLEdBQUcsUUFBYyxFQUFDLEVBQUUsR0FBQyxhQUFLLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLENBQUMsT0FBTyxFQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQTtBQUF2RyxRQUFBLE9BQU8sV0FBZ0c7QUFDN0csTUFBTSxPQUFPLEdBQUMsQ0FBQyxPQUFXLEVBQUMsR0FBRyxRQUFjLEVBQUMsRUFBRSxHQUFDLGFBQUssQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLEVBQUMsU0FBUyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsQ0FBQyxPQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQyxDQUFBO0FBQXZHLFFBQUEsT0FBTyxXQUFnRztBQUM3RyxN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QUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtvQkFDbkMsR0FBRyxHQUFHLFlBQVksR0FBQyxJQUFJLENBQUMsSUFBSSxHQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3JFO2dCQUFBLE9BQU0sQ0FBQyxFQUFDLEdBQUU7YUFDZDtZQUVELElBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEdBQUcsR0FBQyxpQkFBaUIsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO1NBRXhDO2FBQUk7WUFDRCxHQUFHLEdBQUMsSUFBSSxHQUFDLEVBQUUsQ0FBQTtTQUNkO1FBRUQsSUFBRyxHQUFHLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUssS0FBRyxTQUFTLENBQUMsSUFBSTtZQUMxRCxHQUFHLEdBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBQyxjQUFjLEdBQUMsR0FBRyxDQUFDLE1BQU0sR0FBQyxHQUFHLENBQUE7UUFDN0UsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDOztBQWpNTCxnQ0FrTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2lnbmFsLCB7IFJlcSB9IGZyb20gXCJiYWRtZmNrLXNpZ25hbFwiO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tIFwiLi9CYXNlU2VydmljZVwiO1xuXG5leHBvcnQgZW51bSBMT0dfTEVWRUx7XG4gICAgQUxMPTAsXG4gICAgSU5GTz0xLFxuICAgIFdBUk49MixcbiAgICBFUlJPUj0zLFxuICAgIENSSVQ9NFxufVxuZXhwb3J0IGludGVyZmFjZSBJTG9nSXRlbXtcbiAgICBpZDpudW1iZXIsXG4gICAgbGV2ZWw6TE9HX0xFVkVMLFxuICAgIHRpbWU6bnVtYmVyLFxuICAgIHRleHQ6c3RyaW5nXG4gICAgZGF0ZTpzdHJpbmdcbiAgICBzb3VyY2U6c3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ1NlcnZpY2VPcHRpb25ze1xuICAgIG91dHB1dD86KGRhdGE6SUxvZ0l0ZW0pPT52b2lkLFxuICAgIHN0YWNrU2l6ZTpudW1iZXJcbiAgICBsZXZlbDpMT0dfTEVWRUxcbiAgICB0ZXh0TGltaXQ6bnVtYmVyXG4gICAgd2F0Y2hGb3I/OnN0cmluZ1tdXG59XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0TG9nT3B0aW9ucz0oKTpJTG9nU2VydmljZU9wdGlvbnM9PntcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFja1NpemU6MTAwLFxuICAgICAgICB0ZXh0TGltaXQ6MTAyNCxcbiAgICAgICAgbGV2ZWw6TE9HX0xFVkVMLkFMTFxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxvZ0luZm89KG1lc3NhZ2U6YW55LC4uLm9wdGlvbmFsOmFueVtdKT0+e1NfTE9HLmludm9rZSh7bGV2ZWw6TE9HX0xFVkVMLklORk8sZGF0YTpbbWVzc2FnZSxvcHRpb25hbF19KX1cbmV4cG9ydCBjb25zdCBsb2dXYXJuPShtZXNzYWdlOmFueSwuLi5vcHRpb25hbDphbnlbXSk9PntTX0xPRy5pbnZva2Uoe2xldmVsOkxPR19MRVZFTC5XQVJOLGRhdGE6W21lc3NhZ2Usb3B0aW9uYWxdfSl9XG5leHBvcnQgY29uc3QgbG9nQ3JpdD0obWVzc2FnZTphbnksLi4ub3B0aW9uYWw6YW55W10pPT57U19MT0cuaW52b2tlKHtsZXZlbDpMT0dfTEVWRUwuQ1JJVCxkYXRhOlttZXNzYWdlLG9wdGlvbmFsXX0pfVxuZXhwb3J0IGNvbnN0IGxvZ0Vycm9yPShtZXNzYWdlOmFueSwuLi5vcHRpb25hbDphbnlbXSk9PntTX0xPRy5pbnZva2Uoe2xldmVsOkxPR19MRVZFTC5FUlJPUixkYXRhOlttZXNzYWdlLG9wdGlvbmFsXX0pfVxuXG5cbmV4cG9ydCBjb25zdCBTX0xPRz1uZXcgU2lnbmFsPHtsZXZlbDpMT0dfTEVWRUwsZGF0YTphbnlbXX0+KClcbmV4cG9ydCBjb25zdCBTX0xPR19DUkVBVEVEPW5ldyBTaWduYWw8SUxvZ0l0ZW0+KClcbmV4cG9ydCBjb25zdCBTX0xPR19DSEFOR0VfTEVWRUw9bmV3IFNpZ25hbDxMT0dfTEVWRUw+KCk7XG5leHBvcnQgY29uc3QgU19MT0dfRkxVU0g9bmV3IFNpZ25hbDx2b2lkPigpO1xuZXhwb3J0IGNvbnN0IFNfTE9HX0FERF9TRVJWSUNFX1RPX1dBVENIPW5ldyBTaWduYWw8c3RyaW5nPigpO1xuZXhwb3J0IGNvbnN0IFNfTE9HX1JFTU9WRV9TRVJWSUNFX0ZST01fV0FUQ0g9bmV3IFNpZ25hbDxzdHJpbmc+KCk7XG5leHBvcnQgY29uc3QgU19MT0dfU0VUX1RFWFRfTElNSVQ9bmV3IFNpZ25hbDxudW1iZXI+KCk7XG5leHBvcnQgY29uc3QgUkVRX0xPRz1uZXcgUmVxPHtsYXN0SUQ6bnVtYmVyfXxudWxsfHVuZGVmaW5lZCxJTG9nSXRlbVtdPigpO1xuZXhwb3J0IGNvbnN0IFJFUV9MT0dfVU5JUVVFX1NFUlZJQ0VTPW5ldyBSZXE8dm9pZCx7bmFtZTpzdHJpbmcsY291bnQ6bnVtYmVyfVtdPigpO1xuXG5leHBvcnQgY2xhc3MgTG9nU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNle1xuXG4gICAgc3RhdGljIG5leHRJRD0wO1xuICAgIGxvZzpJTG9nSXRlbVtdPVtdO1xuICAgIG9wdGlvbnM6SUxvZ1NlcnZpY2VPcHRpb25zXG4gICAgbGV2ZWw6TE9HX0xFVkVMPUxPR19MRVZFTC5BTExcbiAgICBcbiAgICB1bmlxdWVTZXJ2aWNlczpNYXA8c3RyaW5nLG51bWJlcj49bmV3IE1hcCgpIC8vIHNlcnZpY2UgbmFtZSAobmFtZS5qcykgJiBjb3VudCBvZiBsb2cgcmVxdWVzdHNcblxuICAgIGNvbnN0cnVjdG9yKG9wdD86SUxvZ1NlcnZpY2VPcHRpb25zKXtcbiAgICAgICAgc3VwZXIoXCJMb2dTZXJ2aWNlXCIpO1xuICAgICAgICBpZighb3B0KVxuICAgICAgICAgICAgb3B0PWdldERlZmF1bHRMb2dPcHRpb25zKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucz1vcHQ7XG4gICAgICAgIHRoaXMubGV2ZWwgPSBvcHQubGV2ZWxcbiAgICAgICAgdGhpcy5jaGVja1RleHRMaW1pdCgpO1xuICAgIH1cblxuICAgIGFzeW5jIGluaXQoKXtcbiAgICAgICAgXG4gICAgICAgIFJFUV9MT0dfVU5JUVVFX1NFUlZJQ0VTLmxpc3RlbmVyID0gYXN5bmMgKCk9PntcbiAgICAgICAgICAgIGNvbnN0IGFycj1bXTtcbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiB0aGlzLnVuaXF1ZVNlcnZpY2VzKVxuICAgICAgICAgICAgICAgIGFyci5wdXNoKHtuYW1lOmlbMF0sY291bnQ6aVsxXX0pXG4gICAgICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgICB9XG5cbiAgICAgICAgUkVRX0xPRy5saXN0ZW5lciA9IGFzeW5jIChyZXEpID0+IHtcbiAgICAgICAgICAgIGlmKHJlcSAmJiByZXEubGFzdElEKXsgIFxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQ9dGhpcy5sb2cuZmlsdGVyKHZhbD0+dmFsLmlkPnJlcS5sYXN0SUQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnRoaXMubG9nXVxuICAgICAgICB9XG5cbiAgICAgICAgU19MT0dfU0VUX1RFWFRfTElNSVQuc3Vic2NyaWJlKGw9PntcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy50ZXh0TGltaXQ9bDtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tUZXh0TGltaXQoKTtcbiAgICAgICAgfSlcbiAgICAgICAgXG4gICAgICAgIFNfTE9HX0FERF9TRVJWSUNFX1RPX1dBVENILnN1YnNjcmliZShzZXJ2aWNlPT57XG4gICAgICAgICAgICBpZighdGhpcy5vcHRpb25zLndhdGNoRm9yKVxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy53YXRjaEZvcj1bXTtcblxuICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLndhdGNoRm9yLmZpbmQodmFsPT52YWw9PT1zZXJ2aWNlKSl7XG4gICAgICAgICAgICAgICAgbG9nQ3JpdChcIiR7TG9nU2VydmljZS5qc31cIixcIlNlcnZpY2UgXFxcIlwiK3NlcnZpY2UrXCJcXFwiIGFsZXJlYWR5IGFkZGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy53YXRjaEZvci5wdXNoKHNlcnZpY2UpO1xuICAgICAgICB9KVxuXG4gICAgICAgIFNfTE9HX1JFTU9WRV9TRVJWSUNFX0ZST01fV0FUQ0guc3Vic2NyaWJlKHNlcnZpY2U9PntcbiAgICAgICAgICAgIGlmKCF0aGlzLm9wdGlvbnMud2F0Y2hGb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5vcHRpb25zLndhdGNoRm9yLmZpbmRJbmRleCh2YWw9PnZhbD09PXNlcnZpY2UpXG4gICAgICAgICAgICBpZihpPi0xKVxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy53YXRjaEZvci5zcGxpY2UoaSwxKTtcbiAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICBsb2dDcml0KFwiJHtMb2dTZXJ2aWNlLmpzfVwiLFwiU2VydmljZSBcXFwiXCIrc2VydmljZStcIlxcXCIgbm90IGRlbGV0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgU19MT0dfQ0hBTkdFX0xFVkVMLnN1YnNjcmliZShsPT57dGhpcy5sZXZlbD1sfSlcblxuICAgICAgICBTX0xPR19GTFVTSC5zdWJzY3JpYmUoKCk9PnRoaXMubG9nPVtdKVxuXG4gICAgICAgIFNfTE9HLnN1YnNjcmliZSgobG9nKT0+e1xuXG4gICAgICAgICAgICBpZihsb2cubGV2ZWw8dGhpcy5sZXZlbClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IG1zZz1sb2cuZGF0YVswXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbmFsPWxvZy5kYXRhWzFdO1xuICAgICAgICAgICAgbGV0IHRleHQgPSB0aGlzLmNyZWF0ZVRleHQobXNnLGxvZy5sZXZlbCk7XG4gICAgICAgICAgICBsZXQgc291cmNlPVwiXCI7XG4gICAgICAgICAgICBpZih0ZXh0LnN0YXJ0c1dpdGgoXCIke1wiKSAmJiB0ZXh0LmVuZHNXaXRoKFwifVwiKSAmJiB0ZXh0LmluZGV4T2YoXCIuanNcIikhPT0tMSl7XG4gICAgICAgICAgICAgICAgc291cmNlPXRleHQuc3Vic3RyaW5nKDIsdGV4dC5sZW5ndGgtMSk7XG4gICAgICAgICAgICAgICAgdGV4dCA9IFwiXCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXNjPXRoaXMudW5pcXVlU2VydmljZXMuZ2V0KHNvdXJjZSkgPz8gMDtcbiAgICAgICAgICAgIHRoaXMudW5pcXVlU2VydmljZXMuc2V0KHNvdXJjZSx1c2MrMSlcblxuICAgICAgICAgICAgbGV0IHNob3dsb2c9dHJ1ZTtcbiAgICAgICAgICAgIGlmKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMud2F0Y2hGb3IgJiYgQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMud2F0Y2hGb3IpICYmIHRoaXMub3B0aW9ucy53YXRjaEZvci5sZW5ndGg+MCl7XG4gICAgICAgICAgICAgICAgc2hvd2xvZz1mYWxzZTtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy5vcHRpb25zLndhdGNoRm9yKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoc291cmNlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpLnRvTG93ZXJDYXNlKCkpIT09LTEpe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd2xvZz10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCFzaG93bG9nICYmIHRoaXMubGV2ZWw9PT1MT0dfTEVWRUwuQ1JJVClcbiAgICAgICAgICAgICAgICBzaG93bG9nPXRydWU7XG5cbiAgICAgICAgICAgIGlmKG9wdGlvbmFsKXtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgb2Ygb3B0aW9uYWwpXG4gICAgICAgICAgICAgICAgICAgIHRleHQrPVwiLCBcIit0aGlzLmNyZWF0ZVRleHQoaSx0aGlzLmxldmVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBsb2dpdGVtOklMb2dJdGVtPXtcbiAgICAgICAgICAgICAgICBsZXZlbDpsb2cubGV2ZWwsXG4gICAgICAgICAgICAgICAgaWQ6TG9nU2VydmljZS5uZXh0SUQrKyxcbiAgICAgICAgICAgICAgICB0ZXh0OnRleHQsXG4gICAgICAgICAgICAgICAgdGltZTpkLmdldFRpbWUoKSxcbiAgICAgICAgICAgICAgICBkYXRlOnRoaXMuY3JlYXRlRGF0ZShkKSxcbiAgICAgICAgICAgICAgICBzb3VyY2U6c291cmNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG91dHB1dCBhcyBzdHJpbmdcbiAgICAgICAgICAgIGlmKHRoaXMub3B0aW9ucy5vdXRwdXQpeyAgICBcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub3V0cHV0KGxvZ2l0ZW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmaXJlIGxvZyBpdGVtXG4gICAgICAgICAgICBTX0xPR19DUkVBVEVELmludm9rZShsb2dpdGVtKVxuXG4gICAgICAgICAgICAvLyBhZGQgbG9nIGl0ZW0gdG8gc3RhY2tcbiAgICAgICAgICAgIHRoaXMubG9nLnB1c2gobG9naXRlbSk7XG4gICAgICAgICAgICBsZXQgbGltaXQgPSB0aGlzLm9wdGlvbnMuc3RhY2tTaXplID8/IDEwMFxuICAgICAgICAgICAgaWYobGltaXQ+MTAwMClcbiAgICAgICAgICAgICAgICBsaW1pdCA9IDEwMDBcbiAgICAgICAgICAgIGlmKHRoaXMubG9nLmxlbmd0aD5saW1pdClcbiAgICAgICAgICAgICAgICB0aGlzLmxvZy5zaGlmdCgpO1xuXG4gICAgICAgIH0pXG5cbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgIH1cblxuICAgIGNoZWNrVGV4dExpbWl0KCl7XG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy50ZXh0TGltaXQ+MTAyNCo0KVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRleHRMaW1pdD0xMDI0KjRcbiAgICB9XG5cbiAgICBjcmVhdGVEYXRlKGQ/OkRhdGUpOnN0cmluZ3tcbiAgICAgICAgaWYoIWQpXG4gICAgICAgICAgICBkPW5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiBkLmdldEZ1bGxZZWFyKCkrXCItXCIrdGhpcy5sZWFkWmVybyhkLmdldE1vbnRoKCkrMSkrXCItXCIrdGhpcy5sZWFkWmVybyhkLmdldERhdGUoKSkrXCIgXCIrdGhpcy5sZWFkWmVybyhkLmdldEhvdXJzKCkpK1wiOlwiK3RoaXMubGVhZFplcm8oZC5nZXRNaW51dGVzKCkpK1wiOlwiK3RoaXMubGVhZFplcm8oZC5nZXRTZWNvbmRzKCkpO1xuICAgIH1cblxuICAgIGxlYWRaZXJvKG51bTpudW1iZXIpOnN0cmluZ3tcbiAgICAgICAgaWYobnVtPDEwKVxuICAgICAgICAgICAgcmV0dXJuIFwiMFwiK251bTtcbiAgICAgICAgcmV0dXJuIG51bStcIlwiXG4gICAgfVxuXG4gICAgY3JlYXRlVGV4dChkYXRhOmFueSxsZXZlbDpMT0dfTEVWRUwpe1xuICAgICAgICBcbiAgICAgICAgaWYoZGF0YSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBcIm51bGxcIlxuXG4gICAgICAgIGlmKGRhdGEgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiXG5cbiAgICAgICAgbGV0IHJlcz1cIlwiXG4gICAgICAgIFxuICAgICAgICBpZih0eXBlb2YgZGF0YSA9PT1cIm9iamVjdFwiKXtcbiAgICAgICAgICAgXG4gICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgICAgY29uc3QgdG1wID1KU09OLnN0cmluZ2lmeShkYXRhLG51bGwsXCJcXHRcIilcbiAgICAgICAgICAgICAgICByZXMgPSB0bXAgPz8gXCJcIjtcbiAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICBpZihcInRvU3RyaW5nXCIgaW4gZGF0YSAmJiBkYXRhLnRvU3RyaW5nICYmIHR5cGVvZiBkYXRhLnRvU3RyaW5nID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IGRhdGEudG9TdHJpbmcoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICBcblxuICAgICAgICAgICAgaWYoYCR7ZGF0YX1gPT09XCJbb2JqZWN0IE1hcF1cIiAmJiBcInNpemVcIiBpbiBkYXRhKXtcbiAgICAgICAgICAgICAgICAvLyB0cnkgdG8gcGFyc2UgbWFwIVxuICAgICAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyPVtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgb2YgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHtrZXk6aVswXSx2YWx1ZTppWzFdfSlcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gXCJNQVAgKHNpemU6XCIrZGF0YS5zaXplK1wiKSBcXG5cIitKU09OLnN0cmluZ2lmeShhcnIsbnVsbCxcIlxcdFwiKTtcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICAgICAgICAgIHJlcytcIiwgdG90YWwgaXRlbXM6IFwiK2RhdGEubGVuZ3RoICAgXG5cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXM9ZGF0YStcIlwiXG4gICAgICAgIH1cblxuICAgICAgICBpZihyZXMubGVuZ3RoPnRoaXMub3B0aW9ucy50ZXh0TGltaXQgJiYgbGV2ZWw9PT1MT0dfTEVWRUwuSU5GTylcbiAgICAgICAgICAgIHJlcz1yZXMuc3Vic3RyaW5nKDAsdGhpcy5vcHRpb25zLnRleHRMaW1pdCkrXCIuLi4gKHRvdGFsOiBcIityZXMubGVuZ3RoK1wiKVwiXG4gICAgICAgIHJldHVybiByZXNcbiAgICB9XG59Il19
@@ -802,4 +802,3 @@ const encrypt = (txt) => {
802
802
  }
803
803
  };
804
804
  exports.default = MysqlService;
805
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlzcWxTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaVNlcnZlci9NeXNxbFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwrQ0FBNEM7QUFDNUMsaUVBQTZDO0FBQzdDLG1DQUFxRTtBQUNyRSw2Q0FBMEQ7QUFDMUQsc0RBQXVDO0FBQ3ZDLDRDQUFtQjtBQUNuQixnREFBdUI7QUFFVixRQUFBLGVBQWUsR0FBQyxJQUFJLHdCQUFNLEVBQVEsQ0FBQTtBQUNsQyxRQUFBLGVBQWUsR0FBRyxJQUFJLG9CQUFHLENBQXdDLFNBQVMsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRzlGLFFBQUEsZ0JBQWdCLEdBQUcsSUFBSSxvQkFBRyxDQUF5QixTQUFTLEVBQUMsOEJBQThCLENBQUMsQ0FBQztBQUM3RixRQUFBLGdCQUFnQixHQUFDLElBQUksb0JBQUcsQ0FBNEMsU0FBUyxFQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDckgsUUFBQSxpQkFBaUIsR0FBQyxJQUFJLG9CQUFHLENBQXlCLFNBQVMsRUFBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2pGLFFBQUEsbUJBQW1CLEdBQUMsSUFBSSxvQkFBRyxDQUF5QixTQUFTLEVBQUMscUJBQXFCLENBQUMsQ0FBQztBQUUzRixNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsS0FBNkIsRUFBd0IsRUFBRSxHQUFDLE9BQU8sTUFBTSx1QkFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQTtBQUExSCxRQUFBLFlBQVksZ0JBQThHO0FBOEJoSSxNQUFNLFlBQVksR0FBQyxDQUFDLENBQUssRUFBaUIsRUFBRTtJQUMvQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUcsU0FBUyxJQUFJ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RUFBRSxFQUFFLENBQUMsRUFDckQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRCxTQUFTLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM5RDtJQUFBLE9BQU0sQ0FBQyxFQUFDO1FBQ0wsT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNILENBQUMsQ0FBQTtBQUVELGtCQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vaW1wb3J0IG15c3FsLCB7IEZpZWxkSW5mbywgTXlzcWxFcnJvciwgUG9vbCwgUG9vbENvbm5lY3Rpb24gfSBmcm9tIFwibXlzcWxcIlxuXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gXCIuL0Jhc2VTZXJ2aWNlXCI7XG5pbXBvcnQgU2lnbmFsLCB7IFJlcSB9IGZyb20gXCJiYWRtZmNrLXNpZ25hbFwiO1xuaW1wb3J0IHsgY3JlYXRlQ2lwaGVyaXYsIGNyZWF0ZURlY2lwaGVyaXYsIGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCB7IGxvZ0NyaXQsIGxvZ0Vycm9yLCBsb2dJbmZvIH0gZnJvbSBcIi4vTG9nU2VydmljZVwiO1xuaW1wb3J0ICogYXMgbXlzcWwgZnJvbSBcIm15c3FsMi9wcm9taXNlXCJcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgY29uc3QgU19NWVNRTF9TVEFSVEVEPW5ldyBTaWduYWw8dm9pZD4oKVxuZXhwb3J0IGNvbnN0IFJFUV9NWVNRTF9RVUVSWSA9IG5ldyBSZXE8TXlTcWxRdWVyeXxNeVNxbFF1ZXJ5W10sTXlzcWxSZXN1bHRbXT4odW5kZWZpbmVkLFwiUkVRX01ZU1FMX1FVRVJZXCIpO1xuLy9leHBvcnQgY29uc3QgUkVRX01ZU1FMX1RSQU5TQUNUSU9OID0gbmV3IFJlcTxNeVNxbFF1ZXJ5W10sTXlzcWxSZXN1bHQ+KHVuZGVmaW5lZCxcIlJFUV9NWVNRTF9UUkFOU0FDVElPTlwiKTtcblxuZXhwb3J0IGNvbnN0IFJFUV9NWVNRTF9UQkVHSU4gPSBuZXcgUmVxPHZvaWQsTXlzcWxFcnJvcnxudW1iZXI+KHVuZGVmaW5lZCxcIlJFUV9NWVNRTF9UUkFOU0FDVElPTl9CRUdJTkdcIik7IC8vIHJldHVybiB0cmFuc2FjdGlvbiBpZCBvciBteXNxbCBlcnJvclxuZXhwb3J0IGNvbnN0IFJFUV9NWVNRTF9UUVVFUlk9bmV3IFJlcTx7cXVlcnk6TXlTcWxRdWVyeSx0aWQ6bnVtYmVyfSxNeXNxbFJlc3VsdD4odW5kZWZpbmVkLFwiUkVRX01ZU1FMX1RSQU5TQUNUSU9OX0FERF9PUEVSQVRJT05cIik7IC8vIHRpZCBtZWFucyB0cmFuc2FjdGlvbiBpZFxuZXhwb3J0IGNvbnN0IFJFUV9NWVNRTF9UQ09NTUlUPW5ldyBSZXE8bnVtYmVyLE15c3FsRXJyb3J8bnVsbD4odW5kZWZpbmVkLFwiUkVRX01ZU1FMX1RDT01NSVRcIik7IC8vIHRpZFxuZXhwb3J0IGNvbnN0IFJFUV9NWVNRTF9UUk9MTEJBQ0s9bmV3IFJlcTxudW1iZXIsTXlzcWxFcnJvcnxudWxsPih1bmRlZmluZWQsXCJSRVFfTVlTUUxfVFJPTExCQUNLXCIpOyAvLyB0aWRcblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVRdWVyeSA9IGFzeW5jIChxdWVyeTpNeVNxbFF1ZXJ5fE15U3FsUXVlcnlbXSk6UHJvbWlzZTxNeXNxbFJlc3VsdFtdPj0+e3JldHVybiBhd2FpdCBSRVFfTVlTUUxfUVVFUlkucmVxdWVzdChxdWVyeSl9XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXlzcWxTZXJ2aWNlT3B0aW9uc3tcbiAgICBjb25uZWN0aW9uTGltaXQ6bnVtYmVyLFxuICAgIGhvc3Q6c3RyaW5nLFxuICAgIHVzZXI6c3RyaW5nLFxuICAgIHBhc3N3b3JkOnN0cmluZyxcbiAgICBwb3J0Om51bWJlcixcbiAgICBkYXRhYmFzZTpzdHJpbmcsICBcbiAgICBxdWV1ZUxpbWl0PzpudW1iZXIsXG4gICAgdHJhbnNhY3Rpb25GYWlsUmVwb3J0PzoodHJ4OklUcmFuc2FjdGlvbixtZXNzYWdlOnN0cmluZyk9PnZvaWQsXG4gICAgdHJhbnNhY3Rpb25GYWlsUmVwb3J0RGlyPzpzdHJpbmcsXG4gICAgZGVidWc/OmJvb2xlYW4sXG4gICAgbmF4VHJhbnNhY3Rpb25XYWl0VGltZT86bnVtYmVyLFxuXHRtaWdyYXRpb25zPzp7XG5cdFx0ZGlyOnN0cmluZyxcblx0XHRjYWxsYmFjazooKT0+dm9pZFxuXHR9fG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNeXNxbEVycm9ye1xuICAgIGNvZGU6IHN0cmluZyxcbiAgICBlcnJubzogbnVtYmVyLFxuICAgIHNxbDogc3RyaW5nLFxuICAgIG5hbWU6c3RyaW5nLFxuICAgIG1lc3NhZ2U6c3RyaW5nXG4gICAgZmF0YWw/OmJvb2xlYW4sXG4gICAgdGhyb3dhYmxlOmJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IGlzTXlzcWxFcnJvcj0oZTphbnkpOmUgaXMgTXlzcWxFcnJvcj0+e1xuICAgIHJldHVybiBlLmNvZGUhPT11bmRlZmluZWQgJiYgZS5lcnJubyE9PXVuZGVmaW5lZCAmJiBlLnNxbCE9PXVuZGVmaW5lZCAmJiBlLm5hbWUhPT11bmRlZmluZWQgJiYgZS5tZXNzYWdlIT09dW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE15c3FsUmVzdWx0e1xuICAgIGVycm9yPzpNeXNxbEVycm9yfG51bGwsXG4gICAgcm9sbGJhY2tFcnJvcj86TXlzcWxFcnJvcnxudWxsLFxuICAgIGlzRHVwbGljYXRlRXJyb3I/OmJvb2xlYW5cbiAgICBkYXRhOmFueVxuICAgIGNvdW50Om51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE15U3FsUXVlcnl7XG4gICAgcXVlcnk6c3RyaW5nXG4gICAgZmllbGRzOk15c3FsUXVlcnlGaWVsZFtdfE15c3FsUXVlcnlGaWVsZE9iamVjdCxcbiAgICByb2xsYmFja1F1ZXJ5PzpzdHJpbmd8bnVsbFxuICAgIHRyYW5zYWN0aW9uSUQ/Om51bWJlclxuICAgIHRocm93YWJsZT86Ym9vbGVhblxuICAgIGNhbGN1bGF0ZUNvdW50Pzpib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXlzcWxRdWVyeUZpZWxke1xuICAgIG5hbWU6c3RyaW5nLFxuICAgIHZhbHVlOnN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCxcbiAgICBzeXN0ZW0/OmJvb2xlYW4sXG4gICAgaWdub3JlSW5JbnNlcnQ/OmJvb2xlYW4sXG4gICAgaWdub3JlSW5VcGRhdGU/OmJvb2xlYW5cbiAgICB1c2VJblJlcGxhY2U/OmJvb2xlYW4sXG4gICAgX3BhcnNlZFZhbHVlPzpzdHJpbmd8bnVtYmVyfGJvb2xlYW58bnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2FjdGlvbntcbiAgICBpZDpudW1iZXJcbiAgICB0aW1lc3RhbXA6bnVtYmVyLFxuICAgIGNvbm46bXlzcWwuUG9vbENvbm5lY3Rpb24sXG4gICAgcXVlcmllczp7c3FsOnN0cmluZyxzdGF0dXM6c3RyaW5nfVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXlzcWxRdWVyeUZpZWxkT2JqZWN0IGV4dGVuZHMgUmVjb3JkPHN0cmluZyxzdHJpbmd8bnVtYmVyfGJvb2xlYW58bnVsbHx1bmRlZmluZWR8e25hbWU/OnN0cmluZ3xudWxsLHZhbHVlOnN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCxzeXN0ZW0/OmJvb2xlYW4saWdub3JlSW5JbnNlcnQ/OmJvb2xlYW4saWdub3JlSW5VcGRhdGU/OmJvb2xlYW4sdXNlSW5SZXBsYWNlPzpib29sZWFufT57XG5cbn1cbiAgICBcblxuLyoqXG4gKiBNeXNxbCBTZXJ2aWNlcywgZXhlY3V0ZSBxdWVyaWVzXG4gKiBNeVNxbFF1ZXJ5LnF1ZXJ5OlxuICogQGZpZWxkcyAtIHJlcGxhY2VkIGJ5IGZpZWxkJ3MgbmFtZXNcbiAqIEB2YWx1ZXMgLSByZXBsYWNlZCBieSBwYXJzZWQgdmFsdWVzXG4gKiBAb251cGRhdGUgLSByZXBhbGNlZCBieSBwYWlyIGZpZWxkIG5hbWUgPSB2YWx1ZVxuICogQG9uZHVwbGljYXRlIC0gcmVwbGFjZWQgYnkgcGFpciBmaWVsZCBuYW1lID0gdmFsdWVcbiAqL1xuXG5leHBvcnQgY2xhc3MgTXlzcWxTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2V7XG5cbiAgICByZWNvbm5lY3Rpb25UaW1lb3V0PTEwMDAqMztcbiAgICByZWNvbm5lY3Rpbmc9ZmFsc2U7XG4gICAgcG9vbDpteXNxbC5Qb29sfG51bGw9bnVsbDtcbiAgICBvcHRpb25zOk15c3FsU2VydmljZU9wdGlvbnM7XG4gICAgc2VydmljZVN0YXJ0ZWQ9ZmFsc2U7XG4gICAgdGltZW91dElEOmFueVxuXG4gICAgZGVidWc9ZmFsc2U7XG5cbiAgICBxdWVyaWVzPVtdOyAvLyBUT0RPOiBTVE9SRSBRVUVSSUVTIFNFTlRTIEJFRk9SRSBUSEUgU0VSVklDRSBJUyBTVEFSVEVEIVxuICAgIHN0YXRpYyBuZXh0VHJhbnNhY3Rpb25JRD0xO1xuICAgIHRyYW5zYWN0aW9uczpJVHJhbnNhY3Rpb25bXT1bXVxuXG4gICAgbWF4VHJhbnNhY3Rpb25XYWl0VGltZSA9IDEwMDAqNjAqMTsgLy8gMSBtaW4gYW5kIGRldGVsZXRlIHRyYW5zYWN0aW9uXG4gICAgbGFzdFN1Y2Nlc3NRdWVyeVRpbWUgPSAwO1xuICAgIHBpbmdJbnRlcnZhbCA9IDEwMDAqNjAqNTsgLy8gZWFjaCAzMCBvZiBpbmFjdGl2aXR5IHNlY29uZHNcblxuICAgIGZhaWxSZXBvcnRGaWxlU3RyZWFtOmZzLldyaXRlU3RyZWFtfG51bGw9bnVsbDtcbiAgICBmYWlsUmVwb3J0RmlsZVN0cmVhbU5hbWU6c3RyaW5nfG51bGw9bnVsbDtcbiAgICBmYWlsUmVwb3J0TGFzdEFjY2Vzc1RpbWU6bnVtYmVyPTA7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOk15c3FsU2VydmljZU9wdGlvbnMpe1xuICAgICAgICBzdXBlcihcIm15c3FsXCIpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICBcblxuICAgICAgICAvLyBkZWNyeXB0IHdoZW4gbmVlZGVkXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5ob3N0LnN0YXJ0c1dpdGgoXCJfXCIpKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmhvc3QgPSBkZWNyeXB0KHRoaXMub3B0aW9ucy5ob3N0LnN1YnN0cmluZygxKSkgPz8gdGhpcy5vcHRpb25zLmhvc3RcbiAgICAgICAgaWYodGhpcy5vcHRpb25zLnVzZXIuc3RhcnRzV2l0aChcIl9cIikpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMudXNlciA9IGRlY3J5cHQodGhpcy5vcHRpb25zLnVzZXIuc3Vic3RyaW5nKDEpKSA/PyB0aGlzLm9wdGlvbnMudXNlclxuICAgICAgICBpZih0aGlzLm9wdGlvbnMuZGF0YWJhc2Uuc3RhcnRzV2l0aChcIl9cIikpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgPSBkZWNyeXB0KHRoaXMub3B0aW9ucy5kYXRhYmFzZS5zdWJzdHJpbmcoMSkpID8/IHRoaXMub3B0aW9ucy5kYXRhYmFzZVxuICAgICAgICBpZih0aGlzLm9wdGlvbnMucGFzc3dvcmQuc3RhcnRzV2l0aChcIl9cIikpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucGFzc3dvcmQgPSBkZWNyeXB0KHRoaXMub3B0aW9ucy5wYXNzd29yZC5zdWJzdHJpbmcoMSkpID8/IHRoaXMub3B0aW9ucy5wYXNzd29yZFxuXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgICAgIHRoaXMuZGVidWcgPSB0cnVlXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5uYXhUcmFuc2FjdGlvbldhaXRUaW1lKVxuICAgICAgICAgICAgdGhpcy5tYXhUcmFuc2FjdGlvbldhaXRUaW1lID0gdGhpcy5vcHRpb25zLm5heFRyYW5zYWN0aW9uV2FpdFRpbWU7XG5cbiAgICAgICAgc2V0SW50ZXJ2YWwoKCk9PntcbiAgICAgICAgICAgIC8vIGNoZWNrIHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy50cmFuc2FjdGlvbnMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcmVtb3ZlZElEczpudW1iZXJbXT1bXTtcbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiB0aGlzLnRyYW5zYWN0aW9ucyl7XG4gICAgICAgICAgICAgICAgaWYobm93LWkudGltZXN0YW1wPnRoaXMubWF4VHJhbnNhY3Rpb25XYWl0VGltZSl7XG4gICAgICAgICAgICAgICAgICAgIGxvZ0Vycm9yKFwiUmVsZWFzZSB0cmFuc2FjdGlvbiBjb25uZWN0aW9uIGR1ZSB0byB0aW1lb3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbihpLHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVkSURzLnB1c2goaS5pZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25zID0gdGhpcy50cmFuc2FjdGlvbnMuZmlsdGVyKGk9PiFyZW1vdmVkSURzLmluY2x1ZGVzKGkuaWQpKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnICYmIGNvdW50LXRoaXMudHJhbnNhY3Rpb25zLmxlbmd0aD4wKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVtb3ZlZDogXCIsY291bnQtdGhpcy50cmFuc2FjdGlvbnMubGVuZ3RoKVxuXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKERhdGUubm93KCktdGhpcy5sYXN0U3VjY2Vzc1F1ZXJ5VGltZT50aGlzLnBpbmdJbnRlcnZhbCl7XG4gICAgICAgICAgICAgICAgaWYoIXRoaXMucG9vbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIERPIFBJTkdcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPTA7aTx0aGlzLm9wdGlvbnMuY29ubmVjdGlvbkxpbWl0O2krKyl7XG4gICAgICAgICAgICAgICAgICAgIFJFUV9NWVNRTF9RVUVSWS5yZXF1ZXN0KHtxdWVyeTpcIlNFTEVDVCAxIEBOT0xJTUlUXCIsZmllbGRzOltdfSlcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5kZWJ1ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGluZyBteXNxbCBvbiBlYWNoIGNvbm5lY3Rpb24gaW4gcG9vbFwiKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBcbiAgICAgICAgfSwxMDAwKjMwKVxuXG4gICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICBpZighdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBhZnRlciAxNSBtaW4gb2YgaW5hY3Rpdml0eSwgY2xvc2UgZmlsZVxuICAgICAgICAgICAgaWYoRGF0ZS5ub3coKS10aGlzLmZhaWxSZXBvcnRMYXN0QWNjZXNzVGltZT4xMDAwKjYwKjE1KXtcbiAgICAgICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtLmVuZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW09bnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LDEwMDAqNjAqNSlcblxuICAgICAgICBpZihvcHRpb25zLnRyYW5zYWN0aW9uRmFpbFJlcG9ydERpcil7XG4gICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXIpKXtcbiAgICAgICAgICAgICAgICAgICAgZnMubWtkaXJTeW5jKG9wdGlvbnMudHJhbnNhY3Rpb25GYWlsUmVwb3J0RGlyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXI9dW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCIke015c3FsU2VydmljZS5qc31cIixcIkNhbid0IGNyZWF0ZSB0cmFuc2FjdGlvbiBmYWlsIHJlcG9ydCBkaXJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBleGVjdXRlUXVlcnkgKHF1ZXJ5Ok15U3FsUXVlcnl8TXlTcWxRdWVyeVtdKTpQcm9taXNlPE15c3FsUmVzdWx0W10+eyByZXR1cm4gYXdhaXQgUkVRX01ZU1FMX1FVRVJZLnJlcXVlc3QocXVlcnkpIH1cblxuICAgIGFzeW5jIGluaXQoKXtcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuXG4gICAgICAgIC8vIHNldHVwIHByb2Nlc3MgZXhpdCBoYW5kbGVycyBpbnRlcnJ1cHQgKGN0cmwrYylcbiAgICAgICAgcHJvY2Vzcy5vbignU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5maW5pc2hBcHAoKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgIC8vIHRlcm1pbmF0ZSAoa2lsbClcbiAgICAgICAgcHJvY2Vzcy5vbignU0lHVEVSTScsYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5maW5pc2hBcHAoKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlU3RhcnRlZD1mYWxzZTtcbiAgICAgICAgbGV0IHBvb2xDcmVhdGVkOmJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSghcG9vbENyZWF0ZWQpe1xuICAgICAgICAgICAgbG9nSW5mbyhcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLFwiQ29ubmVjdGluZyB0byBNWVNRTCFcIilcbiAgICAgICAgICAgIHBvb2xDcmVhdGVkID0gYXdhaXQgdGhpcy5yZWNyZWF0ZVBvb2woKTtcbiAgICAgICAgICAgIGlmKCFwb29sQ3JlYXRlZCl7XG4gICAgICAgICAgICAgICAgbG9nQ3JpdChcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLFwiQ2FuJ3QgY29ubmVjdCB0byBNWVNRTCEgUmV0cnlpbmcgaW4gMyBzZWNvbmRzLi4uXCIpXG4gICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpPT5zZXRUaW1lb3V0KHJlc29sdmUsMzAwMCkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBSRVFfTVlTUUxfUVVFUlkubGlzdGVuZXI9YXN5bmMgZGF0YSA9PntcbiAgICAgICAgICAgIGlmKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICAgICAgICAgIGRhdGE9W2RhdGFdO1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZXM9W11cbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiBkYXRhKXtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeSA9IE15c3FsU2VydmljZS5wcmVwYXJlUXVlcnkoaS5xdWVyeSxpLmZpZWxkcyk7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmV4ZWN1dGUocXVlcnksaS5yb2xsYmFja1F1ZXJ5ID8/IG51bGwsaS50cmFuc2FjdGlvbklEID8/IDAsaS50aHJvd2FibGUgPz8gZmFsc2UsaS5jYWxjdWxhdGVDb3VudCA/PyBmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXhlY3V0ZSBxdWVyaWVzOiBcIixkYXRhLmxlbmd0aClcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgICAgIGZvcihsZXQgaSBvZiByZXN1bHQpe1xuICAgICAgICAgICAgICAgIGlmKGkuZXJyb3IgJiYgaS5lcnJvci5jb2RlPT09XCJDT05OX0VSUlwiKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNvbm5lY3Rpb24gZXJyb3IsIHdhcyBkZXN0cm95ZWQsIHJlY3JlYXRlIHBvb2xcIilcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWNyZWF0ZVBvb2woKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZihpLmVycm9yICYmIChpLmVycm9yLmZhdGFsIHx8IGkuZXJyb3IudGhyb3dhYmxlKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaS5lcnJvcjtcblxuICAgICAgICAgICAgICAgIGlmKCFpLmVycm9yKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTdWNjZXNzUXVlcnlUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBSRVFfTVlTUUxfVEJFR0lOLmxpc3RlbmVyPWFzeW5jICgpPT57ICBcbiAgICAgICAgICAgIGNvbnN0IGNvbm4gPSBhd2FpdCB0aGlzLnBvb2w/LmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgICAgIGlmKCFjb25uKVxuICAgICAgICAgICAgICAgIHJldHVybiB7Y29kZTpcIk5PX1BPT0xcIixlcnJubzoxMDAwMDAsZmF0YWw6dHJ1ZSxzcWw6XCJcIixuYW1lOlwiTk9fUE9PTFwiLG1lc3NhZ2U6XCJNeXNxbCBwb29sIG5vdCBjcmVhdGVkXCIsdGhyb3dhYmxlOmZhbHNlfVxuXG4gICAgICAgICAgICAvLyBmaW5kIGNvbm4gaW4gdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy50cmFuc2FjdGlvbnMpe1xuICAgICAgICAgICAgICAgIGlmKGkuY29ubj09PWNvbm4pe1xuICAgICAgICAgICAgICAgICAgICBsb2dJbmZvKFwiWW91ciBjb25uZWN0aW9uIGlzIGluIHRyYW5zYWN0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7Y29kZTpcIkNPTk5fSU5fVFJYXCIsZXJybm86MTAwMDA1LGZhdGFsOnRydWUsdGhyb3dhYmxlOmZhbHNlLHNxbDpcIlwiLG5hbWU6XCJDT05OX0lOX1RSWFwiLG1lc3NhZ2U6XCJDb25uZWN0aW9uIGlzIGluIHRyYW5zYWN0aW9uXCJ9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0aWQgPSBNeXNxbFNlcnZpY2UubmV4dFRyYW5zYWN0aW9uSUQrKztcbiAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJCZWdpbiB0cmFuc2FjdGlvbiB3aXRoIGlkIFwiLHRpZClcblxuICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIGF3YWl0IGNvbm4uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGNvbm4ucXVlcnkoXCJTVEFSVCBUUkFOU0FDVElPTlwiKTtcbiAgICAgICAgICAgICAgICAvL2NvbnN0IHJlcyA9IGF3YWl0IGNvbm4ucXVlcnkoXCJTRVQgYXV0b2NvbW1pdD0wXCIpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVHJhbnNhY3Rpb24gc3RhcnRlZFwiKVxuXG4gICAgICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICAgICB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24oe2lkOnRpZCxjb25uOmNvbm4sdGltZXN0YW1wOkRhdGUubm93KCkscXVlcmllczpbe3NxbDpcIlNUQVJUIFRSQU5TQUNUSU9OXCIsc3RhdHVzOlwiZXJyb3JcIn1dfSlcbiAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU15c3FsUXVlcnlFcnJvcihlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6dGlkLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgIGNvbm46Y29ubixcbiAgICAgICAgICAgICAgICBxdWVyaWVzOltdXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVHJhbnNhY3Rpb25zIHBvb2w6IFwiLHRoaXMudHJhbnNhY3Rpb25zKVxuXG4gICAgICAgICAgICByZXR1cm4gdGlkO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBSRVFfTVlTUUxfVFFVRVJZLmxpc3RlbmVyPWFzeW5jIGRhdGE9PntcbiAgICAgICAgICAgIGNvbnN0IHRyeCA9IHRoaXMudHJhbnNhY3Rpb25zLmZpbmQoaT0+aS5pZD09PWRhdGEudGlkKTtcbiAgICAgICAgICAgIGlmKCF0cngpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtlcnI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTpcIk5PX1RSWFwiLFxuICAgICAgICAgICAgICAgICAgICBlcnJubzoxMDAwMDQsXG4gICAgICAgICAgICAgICAgICAgIGZhdGFsOnRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNxbDpcIlwiLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOlwiTk9fVFJYXCIsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XCJUcmFuc2FjdGlvbiBub3QgZm91bmRcIixcbiAgICAgICAgICAgICAgICB9LGRhdGE6bnVsbCxyb2xsYmFja0Vycm9yOm51bGwsY291bnQ6MH1cblxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBNeXNxbFNlcnZpY2UucHJlcGFyZVF1ZXJ5KGRhdGEucXVlcnkucXVlcnksZGF0YS5xdWVyeS5maWVsZHMpO1xuICAgICAgICAgICAgbGV0IGVycj1udWxsO1xuICAgICAgICAgICAgbGV0IHNxbERhdGEgPSBudWxsO1xuXG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXhlY3V0ZSBxdWVyeSBvbiB0cmFuc2FjdGlvbjogXCIsdHJ4LmlkKVxuXG4gICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgICAgc3FsRGF0YSA9IGF3YWl0IHRyeC5jb25uLnF1ZXJ5KHF1ZXJ5KTtcbiAgICAgICAgICAgIH1jYXRjaChlKXsgZXJyID0gdGhpcy5jcmVhdGVNeXNxbFF1ZXJ5RXJyb3IoZSk7fVxuXG4gICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgaWYoZXJyKVxuICAgICAgICAgICAgICAgIHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbih0cngpO1xuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBpZihkYXRhLnF1ZXJ5LmNhbGN1bGF0ZUNvdW50ICYmIHF1ZXJ5LmluZGV4T2YoXCJTRUxFQ1RcIik9PT0wKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvdW50UXVlcnkgPSB0aGlzLnByZXBhcmVDb3VudFF1ZXJ5KHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY291bnRRdWVyeVJlc3VsdCA9IGF3YWl0IHRyeC5jb25uLnF1ZXJ5KGNvdW50UXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY291bnRRdWVyeVJlc3VsdCAmJiBjb3VudFF1ZXJ5UmVzdWx0Lmxlbmd0aD4wKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IChjb3VudFF1ZXJ5UmVzdWx0WzBdIGFzIGFueSkuY291bnQ7IC8vIHRvZG8gOiBjaGVjaywgcHJvYmFibHkgbm90IHdvcmtpbmcgKHdyb25nIGZpZWxkIG9yIHNtdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vycm9yKFwiJHtNeXNxbFNlcnZpY2UuanN9LT5UUVVFUlktPnF1ZXJ5IGVycm9yXCIsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJRdWVyeSBleGVjdXRpb24gc3RhdHVzOlwiLGVycj9lcnIubWVzc2FnZTpcImNvbXBsZXRlZFwiKVxuXG4gICAgICAgICAgICB0cngucXVlcmllcy5wdXNoKHtzcWw6cXVlcnksc3RhdHVzOmVycj9lcnIubWVzc2FnZTpcImNvbXBsZXRlZFwifSlcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOnNxbERhdGE/c3FsRGF0YVswXTpudWxsLFxuICAgICAgICAgICAgICAgIGVycm9yOmVycixcbiAgICAgICAgICAgICAgICBjb3VudDpjb3VudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIFJFUV9NWVNRTF9UUk9MTEJBQ0subGlzdGVuZXI9YXN5bmMgKHRpZDpudW1iZXIpPT57XG4gICAgICAgICAgICBjb25zdCB0cnggPSB0aGlzLnRyYW5zYWN0aW9ucy5maW5kKGk9PmkuaWQ9PT10aWQpO1xuICAgICAgICAgICAgaWYoIXRyeCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTpcIk5PX1RSWFwiLFxuICAgICAgICAgICAgICAgICAgICBlcnJubzoxMDAwMDQsXG4gICAgICAgICAgICAgICAgICAgIGZhdGFsOnRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRocm93YWJsZTpmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc3FsOlwiXCIsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6XCJOT19UUlhcIixcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcIlRyYW5zYWN0aW9uIG5vdCBmb3VuZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24odHJ4KTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgUkVRX01ZU1FMX1RDT01NSVQubGlzdGVuZXI9YXN5bmMgKHRpZDpudW1iZXIpPT57XG4gICAgICAgICAgICBjb25zdCB0cnggPSB0aGlzLnRyYW5zYWN0aW9ucy5maW5kKGk9PmkuaWQ9PT10aWQpO1xuICAgICAgICAgICAgaWYoIXRyeCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTpcIk5PX1RSWFwiLFxuICAgICAgICAgICAgICAgICAgICBlcnJubzoxMDAwMDQsXG4gICAgICAgICAgICAgICAgICAgIGZhdGFsOnRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNxbDpcIlwiLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOlwiTk9fVFJYXCIsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XCJUcmFuc2FjdGlvbiBub3QgZm91bmRcIixcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dhYmxlOmZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDb21taXQgdHJhbnNhY3Rpb246XCIsdHJ4LmlkKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyByZW1vdmUgZnJvbSB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25zID0gdGhpcy50cmFuc2FjdGlvbnMuZmlsdGVyKGk9PmkuaWQhPT10aWQpO1xuXG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVHJhbnNhY3Rpb24gcG9vbDpcIix0aGlzLnRyYW5zYWN0aW9ucyApXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IGF3YWl0IHRoaXMuY29tbWl0KHRyeCk7XG5cbiAgICAgICAgICAgIHJldHVybiBlcnI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBjb21taXQodHJ4OklUcmFuc2FjdGlvbik6UHJvbWlzZTxNeXNxbEVycm9yfG51bGw+e1xuICAgICAgIFxuICAgICAgICB0cnl7XG4gICAgICAgICAgICBhd2FpdCB0cnguY29ubi5jb21taXQoKTtcbiAgICAgICAgICAgIC8vYXdhaXQgdHJ4LmNvbm4ucXVlcnkoXCJDT01NSVRcIik7XG4gICAgICAgICAgICB0cnguY29ubi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIHRyeC5jb25uLnJlbGVhc2UoKTtcbiAgICAgICAgfWNhdGNoKGUpe1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyeCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNeXNxbFF1ZXJ5RXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICB9XG5cbiAgICBhc3luYyByb2xsYmFja1RyYW5zYWN0aW9uKHRyeDpJVHJhbnNhY3Rpb24sZG9uTm90UmVtb3ZlPzpib29sZWFuKTpQcm9taXNlPE15c3FsRXJyb3J8bnVsbD57XG4gICAgICAgIGxldCBlcnI9bnVsbDtcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJSb2xsYmFjayBzdGFydGVkXCIsdHJ4LmNvbm4udGhyZWFkSWQpXG4gICAgICAgICAgICBhd2FpdCB0cnguY29ubi5yb2xsYmFjaygpO1xuICAgICAgICAgICAgYXdhaXQgdHJ4LmNvbm4uY29tbWl0KCk7XG4gICAgICAgICAgICAvL2F3YWl0IHRyeC5jb25uLnF1ZXJ5KFwiUk9MTEJBQ0tcIik7XG4gICAgICAgICAgICB0cnguY29ubi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIHRyeC5jb25uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIGlmKCFkb25Ob3RSZW1vdmUpXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMgPSB0aGlzLnRyYW5zYWN0aW9ucy5maWx0ZXIoaT0+aS5pZCE9PXRyeC5pZCk7XG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUm9sbGJhY2sgY29tcGxldGVcIix0cnguY29ubi50aHJlYWRJZClcbiAgICAgICAgfWNhdGNoKGUpe1xuICAgICAgICAgICAgbG9nQ3JpdChcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLFwiQ2FuJ3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb25cIix0cngucXVlcmllcylcbiAgICAgICAgICAgIGVyciA9IHRoaXMuY3JlYXRlTXlzcWxRdWVyeUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RvcmVUcmFuc2FjdGlvbkFzUHJvYmxlbSh0cngsXCJyb2xsYmFja1wiKVxuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbmlzaEFwcCgpe1xuICAgICAgICBjb25zb2xlLmxvZyhcIkZpbmlzaGluZyBteXNxbCBzZXJ2aWNlXCIpXG4gICAgICAgIGZvcihsZXQgaSBvZiB0aGlzLnRyYW5zYWN0aW9ucylcbiAgICAgICAgICAgIHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbihpKTtcblxuICAgICAgICBpZih0aGlzLnBvb2wpe1xuICAgICAgICAgICAgdHJ5e2F3YWl0IHRoaXMucG9vbC5lbmQoKTt9Y2F0Y2goZSl7XG4gICAgICAgICAgICAgICAgbG9nQ3JpdChcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLFwiQ2FuJ3QgY2xvc2UgTVlTUUwgcG9vbCFcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW0pXG4gICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtLmVuZCgpO1xuICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtPW51bGw7XG4gICAgfVxuXG4gICAgcHJlcGFyZUNvdW50UXVlcnkocXVlcnk6c3RyaW5nKTpzdHJpbmd7XG4gICAgICAgIGxldCBjb3VudFF1ZXJ5ID0gcXVlcnk7XG5cbiAgICAgICAgLy8gUkVNT1ZFIExJTUlUXG4gICAgICAgIGlmKGNvdW50UXVlcnkuaW5kZXhPZihcIkxJTUlUXCIpPT09LTEpXG4gICAgICAgICAgICBjb3VudFF1ZXJ5ID0gY291bnRRdWVyeS5zdWJzdHJpbmcoMCxjb3VudFF1ZXJ5LmluZGV4T2YoXCJMSU1JVFwiKSk7XG4gICAgICAgIFxuICAgICAgICAvLyBSRU1PVkUgT1JERVIgXG4gICAgICAgIGlmKGNvdW50UXVlcnkuaW5kZXhPZihcIk9SREVSXCIpIT09LTEpXG4gICAgICAgICAgICBjb3VudFF1ZXJ5ID0gY291bnRRdWVyeS5zdWJzdHJpbmcoMCxjb3VudFF1ZXJ5LmluZGV4T2YoXCJPUkRFUlwiKSlcblxuICAgICAgICBjb3VudFF1ZXJ5ID0gY291bnRRdWVyeS5zdWJzdHJpbmcoY291bnRRdWVyeS5pbmRleE9mKFwiRlJPTVwiKSk7XG4gICAgICAgIFxuXG4gICAgICAgIGNvdW50UXVlcnkgPSBcIlNFTEVDVCBDT1VOVCgxKSBhcyBgY291bnRgIFwiK2NvdW50UXVlcnlcbiAgICAgICAgcmV0dXJuIGNvdW50UXVlcnk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RvcmVUcmFuc2FjdGlvbkFzUHJvYmxlbSh0cng6SVRyYW5zYWN0aW9uLG1lc3NhZ2U6c3RyaW5nKXtcblxuICAgICAgICBpZighdGhpcy5vcHRpb25zLnRyYW5zYWN0aW9uRmFpbFJlcG9ydCAmJiAhdGhpcy5vcHRpb25zLnRyYW5zYWN0aW9uRmFpbFJlcG9ydERpcil7XG4gICAgICAgICAgICBsb2dDcml0KFwiJHtNeXNxbFNlcnZpY2UuanN9XCIsXCJDYW4ndCByZXBvcnQgZmFpbGVkIHRyYW5zYWN0aW9uLCBubyByZXBvcnQgZnVuY3Rpb246IHRyYW5zYWN0aW9uRmFpbFJlcG9ydCBpbiBvcHRpb25zLCBhbmQgdHJhbnNhY3Rpb25GYWlsUmVwb3J0RGlyIGlzbnQgc2V0XCIpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXIpe1xuICAgICAgICAgICAgY29uc3QgeXl5bW1kZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMCkucmVwbGFjZUFsbChcIi1cIixcIlwiKTtcblxuICAgICAgICAgICAgLy9zdG9yZSB0cmFuc2FjdGlvblxuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gcGF0aC5yZXNvbHZlKHRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXIseXl5bW1kZCtcIi5qc29uXCIpO1xuICAgICAgICAgICAgaWYodGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbSl7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbU5hbWUhPT1maWxlKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbS5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbT1udWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBpZih0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtTmFtZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGZpbGUse2ZsYWdzOidhJ30pO1xuICAgICAgICAgICAgICAgIHRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW1OYW1lPWZpbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdG9yZSB0cmFuc2FjdGlvbiBmYWlsIHJlcG9ydDogXCIsZmlsZSx0cngucXVlcmllcyxtZXNzYWdlKVxuXG4gICAgICAgICAgICBpZighdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbSlcbiAgICAgICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oZmlsZSx7ZmxhZ3M6J2EnfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW0ud3JpdGUoSlNPTi5zdHJpbmdpZnkoe3F1ZXJpZXM6dHJ4LnF1ZXJpZXMsdGltZTp0cngudGltZXN0YW1wLGRhdGUsbWVzc2FnZX0pK1wiXFxufUVPQntcXG5cIixlcnI9PntcbiAgICAgICAgICAgICAgICBpZihlcnIpXG4gICAgICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCIke015c3FsU2VydmljZS5qc31cIixcIkNhbid0IHdyaXRlIHRvIHRyYW5zYWN0aW9uIGZhaWwgcmVwb3J0IGZpbGVcIilcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxvZ0luZm8oXCIke015c3FsU2VydmljZS5qc31cIixcIlRyYW5zYWN0aW9uIGZhaWwgcmVwb3J0IHN0b3JlZFwiKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZmFpbFJlcG9ydExhc3RBY2Nlc3NUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnQpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMudHJhbnNhY3Rpb25GYWlsUmVwb3J0KHRyeCxtZXNzYWdlKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHJlY3JlYXRlUG9vbCgpOlByb21pc2U8Ym9vbGVhbj57XG5cbiAgICAgICAgbG9nSW5mbyhcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLFwiQ29ubmVjdGluZyB0byBteXNxbDogXFxuIEhPU1Q6IFwiK3RoaXMub3B0aW9ucy5ob3N0KydcXG4gUE9SVDonK3RoaXMub3B0aW9ucy5wb3J0KVxuXG4gICAgICAgIGlmKHRoaXMucG9vbCl7XG4gICAgICAgICAgICB0aGlzLnBvb2wucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICB0cnl7YXdhaXQgdGhpcy5wb29sLmVuZCgpO31jYXRjaChlKXtcbiAgICAgICAgICAgICAgICBsb2dDcml0KFwiJHtNeXNxbFNlcnZpY2UuanN9XCIsXCJDYW4ndCBjbG9zZSBNWVNRTCBwb29sIVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wb29sID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIFxuICAgICAgICAvLyBLZWVwIGFsaXZlIHBhY2tldHMgc2hvdWxkIGJlIHNlbnRcbiAgICAgICAgLyplbmFibGVLZWVwQWxpdmU6IHRydWUsXG4gICAgICAgIC8vIFdlIHNob3VsZCBzdGFydCBzZW5kaW5nIHRoZW0gZWFybHlcbiAgICAgICAga2VlcEFsaXZlSW5pdGlhbERlbGF5OiAzICogMTAwMCwgLy8gMyBzZWNvbmRzXG4gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgaWRsZSBjb25uZWN0aW9ucywgYnV0IGl0J3Mgbm90IG1hbmRhdG9yeSBmb3IgdGhlIGZpeCB0byB3b3JrLCBpdCBzZWVtc1xuICAgICAgICBtYXhJZGxlOiAwLFxuICAgICAgICAvLyBJZGxlIHRpbWVvdXQgbXVjaCBsYXJnZXIgdGhhbiBrZWVwIGFsaXZlIGRlbGF5IGFuZCBtdWNoIHNtYWxsZXIgdGhhbiBNeVNRTCdzIHRpbWVvdXQgc2V0dGluZ1xuICAgICAgICBpZGxlVGltZW91dDogNSAqIDYwICogMTAwMCAvLyA1IG1pbnV0ZXNcbiAgICAgICAgKi9cblxuICAgICAgICB0cnl7XG4gICAgICAgICAgICB0aGlzLnBvb2wgPW15c3FsLmNyZWF0ZVBvb2woe1xuICAgICAgICAgICAgICAgIGhvc3Q6IHRoaXMub3B0aW9ucy5ob3N0XG4gICAgICAgICAgICAgICAgLHVzZXI6IHRoaXMub3B0aW9ucy51c2VyXG4gICAgICAgICAgICAgICAgLHBhc3N3b3JkOiB0aGlzLm9wdGlvbnMucGFzc3dvcmRcbiAgICAgICAgICAgICAgICAsZGF0YWJhc2U6IHRoaXMub3B0aW9ucy5kYXRhYmFzZVxuICAgICAgICAgICAgICAgICxwb3J0OiB0aGlzLm9wdGlvbnMucG9ydFxuICAgICAgICAgICAgICAgICxjb25uZWN0aW9uTGltaXQ6IHRoaXMub3B0aW9ucy5jb25uZWN0aW9uTGltaXRcbiAgICAgICAgICAgICAgICAscXVldWVMaW1pdDogMTBcbiAgICAgICAgICAgICAgICAsbXVsdGlwbGVTdGF0ZW1lbnRzOiB0cnVlXG5cbiAgICAgICAgICAgICAgICAsZW5hYmxlS2VlcEFsaXZlOnRydWVcbiAgICAgICAgICAgICAgICAsa2VlcEFsaXZlSW5pdGlhbERlbGF5OjMqMTAwMFxuICAgICAgICAgICAgICAgIC8vLG1heElkbGU6MFxuICAgICAgICAgICAgICAgICxpZGxlVGltZW91dDoxMDAwKjYwKjVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICBsb2dDcml0KFwiJHtNeXNxbFNlcnZpY2UuanN9XCIsXCJDYW4ndCBjb25uZWN0IHRvIE1ZU1FMIVwiKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb29sPy5vbignY29ubmVjdGlvbicsIChjb25uZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGxvZ0luZm8oXCIke015c3FsU2VydmljZS5qc31cIixcIk1ZU1FMIENPTk5FQ1RJT04gQ1JFQVRFRFwiKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wb29sPy5vbignYWNxdWlyZScsIChjb25uZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGxvZ0luZm8oXCIke015c3FsU2VydmljZS5qc31cIixcIk1ZU1FMIENPTk5FQ1RJT04gQUNRVUlSRURcIilcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5wb29sPy5vbigncmVsZWFzZScsIChjb25uZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgIGxvZ0luZm8oXCIke015c3FsU2VydmljZS5qc31cIixcIk1ZU1FMIENPTk5FQ1RJT04gUkVMRUFTRURcIilcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5wb29sPy5vbignZW5xdWV1ZScsICgpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgbG9nSW5mbyhcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLFwiTVlTUUwgQ09OTkVDVElPTiBFTlFVRVVFRFwiKVxuICAgICAgICB9KVxuICAgICAgICBcbiAgICAgICAgLy8gQ2hlY2sgY29ubmVjdGlvblxuICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJDaGVjayBteXNxbCBjb25uZWN0aW9uXCIpXG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLHJlamVjdCk9PntcbiAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25uID0gYXdhaXQgdGhpcy5wb29sPy5nZXRDb25uZWN0aW9uKClcbiAgICAgICAgICAgICAgICBpZihjb25uKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3JlcyxmXSA9IGF3YWl0IGNvbm4ucXVlcnkoXCJTRUxFQ1QgMVwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29ubj8ucmVsZWFzZSgpO1xuICAgICAgICAgICAgICAgICAgICBsb2dJbmZvKFwiJHtNeXNxbFNlcnZpY2UuanN9XCIsXCJDb25uZWN0ZWQgdG8gTVlTUUwhXCIpXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICBsb2dDcml0KFwiJHtNeXNxbFNlcnZpY2UuanN9XCIsXCJDYW4ndCBjb25uZWN0IHRvIE1ZU1FMISBcIitlKVxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgYXN5bmMgb25BcHBsaWNhdGlvblJlYWR5KCkge31cblxuXG4gICAgc3RhdGljIGZpZWxkc1RvT2JqZWN0KGZpZWxkczpNeXNxbFF1ZXJ5RmllbGRbXXxNeXNxbFF1ZXJ5RmllbGRPYmplY3QsaWdub3JlU3lzdGVtUGFyYW1ldGVycz86Ym9vbGVhbik6TXlzcWxRdWVyeUZpZWxkT2JqZWN0e1xuICAgICAgICBpZighQXJyYXkuaXNBcnJheShmaWVsZHMpKVxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgICAgY29uc3Qgb2JqOk15c3FsUXVlcnlGaWVsZE9iamVjdD17fTtcbiAgICAgICAgZm9yKGxldCBpIG9mIGZpZWxkcyl7XG4gICAgICAgICAgICBpZighaS5uYW1lKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYodHlwZW9mIGkudmFsdWUhPT0gXCJvYmplY3RcIilcbiAgICAgICAgICAgICAgICBvYmpbaS5uYW1lXT1pLnZhbHVlO1xuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBpZighaWdub3JlU3lzdGVtUGFyYW1ldGVycyl7XG4gICAgICAgICAgICAgICAgICAgIG9ialtpLm5hbWVdPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmkudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06aS5zeXN0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVJbkluc2VydDppLmlnbm9yZUluSW5zZXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlSW5VcGRhdGU6aS5pZ25vcmVJblVwZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZUluUmVwbGFjZTppLnVzZUluUmVwbGFjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6aS5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICAgICAgICBvYmpbaS5uYW1lXT1pLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHN0YXRpYyBvYmplY3RUb0ZpZWxkcyhvYmo6TXlzcWxRdWVyeUZpZWxkT2JqZWN0fE15c3FsUXVlcnlGaWVsZFtdKTpNeXNxbFF1ZXJ5RmllbGRbXXtcbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShvYmopKVxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgY29uc3QgZmllbGRzOk15c3FsUXVlcnlGaWVsZFtdPVtdO1xuICAgICAgICBmb3IobGV0IGkgaW4gb2JqKXtcbiAgICAgICAgICAgIGlmKG9ialtpXSAmJiB0eXBlb2Ygb2JqW2ldID09PSBcIm9iamVjdFwiKXtcbiAgICAgICAgICAgICAgICBsZXQgbW8gPSBvYmpbaV0gYXMgUmVjb3JkPHN0cmluZyxzdHJpbmd8bnVtYmVyfGJvb2xlYW58bnVsbHx1bmRlZmluZWQ+O1xuICAgICAgICAgICAgICAgIGlmKCFtbyl7XG4gICAgICAgICAgICAgICAgICAgIG1vPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6aSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOm51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06ZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVJbkluc2VydDpmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUluVXBkYXRlOmZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlSW5SZXBsYWNlOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOm1vLm5hbWUgYXMgc3RyaW5nID8/IGksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOm1vLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBzeXN0ZW06bW8uc3lzdGVtIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUluSW5zZXJ0Om1vLmlnbm9yZUluSW5zZXJ0IGFzIGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUluVXBkYXRlOm1vLmlnbm9yZUluVXBkYXRlIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgIHVzZUluUmVwbGFjZTptby51c2VJblJlcGxhY2UgYXMgYm9vbGVhblxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBmaWVsZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6aSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6b2JqW2ldIGFzIHN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICB9XG5cbiAgICBzdGF0aWMgcHJlcGFyZVF1ZXJ5KHF1ZXJ5OnN0cmluZyxmaWVsZHM6TXlzcWxRdWVyeUZpZWxkW118TXlzcWxRdWVyeUZpZWxkT2JqZWN0KTpzdHJpbmd7XG4gICAgICAgIFxuICAgICAgICBpZighQXJyYXkuaXNBcnJheShmaWVsZHMpKVxuICAgICAgICAgICAgZmllbGRzID0gTXlzcWxTZXJ2aWNlLm9iamVjdFRvRmllbGRzKGZpZWxkcyk7XG5cbiAgICAgICAgZm9yKGxldCBpIG9mIGZpZWxkcyl7XG4gICAgICAgICAgICBjb25zdCB2YWwgPXRoaXMucHJlcGFyZVF1ZXJ5RmllbGRWYWx1ZShpLnZhbHVlLGkuc3lzdGVtKTtcbiAgICAgICAgICAgIGkuX3BhcnNlZFZhbHVlPXZhbDtcbiAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5LnJlcGxhY2VBbGwoXCJAXCIraS5uYW1lLHZhbCtcIlwiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG1wID0gcXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYodG1wLmluZGV4T2YoXCJzZWxlY3RcIik9PT0wICYmIHRtcC5pbmRleE9mKFwibGltaXRcIik9PT0tMSlcbiAgICAgICAgICAgIHF1ZXJ5Kz1cIiBMSU1JVCAxMDBcIlxuICAgICAgICBcbiAgICAgICAgcXVlcnkgPSBxdWVyeS5yZXBsYWNlQWxsKFwiQE5PTElNSVRcIixcIlwiKVxuXG5cbiAgICAgICAgaWYocXVlcnkuaW5kZXhPZihcIkBmaWVsZHNcIikhPT0tMSl7XG4gICAgICAgICAgICBsZXQgaW5zZXJ0RmllbGROYW1lcz1bXVxuICAgICAgICAgICAgbGV0IGluc2VydEZpZWxkVmFsdWVzPVtdXG4gICAgICAgICAgICBmb3IobGV0IGkgb2YgZmllbGRzKXtcbiAgICAgICAgICAgICAgICBpZihpLmlnbm9yZUluSW5zZXJ0KVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIGluc2VydEZpZWxkTmFtZXMucHVzaCgnYCcraS5uYW1lLnJlcGxhY2VBbGwoXCJgXCIsJycpLnJlcGxhY2VBbGwoJ1xcXCInLFwiXCIpLnJlcGxhY2VBbGwoJ1xcJycsXCJcIikrJ2AnKVxuICAgICAgICAgICAgICAgIGluc2VydEZpZWxkVmFsdWVzLnB1c2goaS5fcGFyc2VkVmFsdWUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5XG4gICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoJ0BmaWVsZHMnLGluc2VydEZpZWxkTmFtZXMuam9pbihcIixcIikpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoJ0B2YWx1ZXMnLGluc2VydEZpZWxkVmFsdWVzLmpvaW4oXCIsXCIpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYocXVlcnkuaW5kZXhPZihcIkBpbnNlcnRcIikhPT0tMSl7XG4gICAgICAgICAgICBsZXQgb25pbnNlcnROYW1lcz1bXVxuICAgICAgICAgICAgbGV0IG9uaW5zZXJ0VmFsdWVzPVtdXG4gICAgICAgICAgICBmb3IobGV0IGkgb2YgZmllbGRzKXtcbiAgICAgICAgICAgICAgICBpZihpLmlnbm9yZUluSW5zZXJ0KVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBvbmluc2VydE5hbWVzLnB1c2goaS5uYW1lKVxuICAgICAgICAgICAgICAgIG9uaW5zZXJ0VmFsdWVzLnB1c2goaS5fcGFyc2VkVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LnJlcGxhY2VBbGwoXCJAaW5zZXJ0XCIsYCgke29uaW5zZXJ0TmFtZXMuam9pbihcIixcIil9KSBWQUxVRVMgKCR7b25pbnNlcnRWYWx1ZXMuam9pbihcIixcIil9KWApXG4gICAgICAgIH1cblxuICAgICAgICBpZihxdWVyeS5pbmRleE9mKFwiQG9udXBkYXRlXCIpIT09LTEpe1xuICAgICAgICAgICAgbGV0IG9uVXBkYXRlPVtdXG4gICAgICAgICAgICBmb3IobGV0IGkgb2YgZmllbGRzKXtcbiAgICAgICAgICAgICAgICBpZihpLmlnbm9yZUluVXBkYXRlKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBvblVwZGF0ZS5wdXNoKCdgJytpLm5hbWUucmVwbGFjZUFsbChcImBcIiwnJykucmVwbGFjZUFsbCgnXFxcIicsXCJcIikucmVwbGFjZUFsbCgnXFwnJyxcIlwiKSsnYCA9ICcraS5fcGFyc2VkVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LnJlcGxhY2VBbGwoXCJAb251cGRhdGVcIixvblVwZGF0ZS5qb2luKFwiICwgXCIpKVxuICAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgaWYocXVlcnkuaW5kZXhPZignQG9uZHVwbGljYXRlJykhPT0tMSl7XG4gICAgICAgICAgICBsZXQgb25EdXBsaWNhdGU9W107XG4gICAgICAgICAgICBmb3IobGV0IGkgb2YgZmllbGRzKXtcbiAgICAgICAgICAgICAgICBpZighaS51c2VJblJlcGxhY2UpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIG9uRHVwbGljYXRlLnB1c2goJ2AnK2kubmFtZS5yZXBsYWNlQWxsKFwiYFwiLCcnKS5yZXBsYWNlQWxsKCdcXFwiJyxcIlwiKS5yZXBsYWNlQWxsKCdcXCcnLFwiXCIpKydgID0gJytpLl9wYXJzZWRWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkucmVwbGFjZUFsbChcIkBvbmR1cGxpY2F0ZVwiLG9uRHVwbGljYXRlLmpvaW4oXCIgLCBcIikpXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gIHF1ZXJ5O1xuICAgIH1cblxuICAgIHN0YXRpYyBwcmVwYXJlUXVlcnlGaWVsZFZhbHVlKHZhbHVlOnN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCxzeXN0ZW0/OmJvb2xlYW4pOnN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZHtcbiAgICAgICAgaWYoIXN5c3RlbSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpe1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZT92YWx1ZS5yZXBsYWNlQWxsKCdcIicsJ1xcXFxcIicpOm51bGxcbiAgICAgICAgICAgIGlmKHZhbHVlIT09bnVsbClcbiAgICAgICAgICAgICAgICB2YWx1ZSA9ICdcIicrdmFsdWUrJ1wiJ1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHZhbHVlID0gXCJOVUxMXCJcbiAgICAgICAgfVxuICAgICAgICBpZih2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIFwiTlVMTFwiXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cblxuICAgIGFzeW5jIGV4ZWN1dGUocXVlcnk6c3RyaW5nLHJvbGxiYWNrUXVlcnk6c3RyaW5nfG51bGwsdHJhbnNhY3Rpb25JRDpudW1iZXIsdGhyb3dhYmxlOmJvb2xlYW4sY2FsY3VsYXRlQ291bnQ6Ym9vbGVhbik6UHJvbWlzZTxNeXNxbFJlc3VsdD57XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZTooZGF0YTpNeXNxbFJlc3VsdCk9PnZvaWQscmVqZWN0KT0+e1xuICAgICAgICAgICAgLy8gQ2hlY2sgcG9vbFxuICAgICAgICAgICAgaWYoIXRoaXMucG9vbCl7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3IoXCIke015c3FsU2VydmljZS5qc31cIixcIk5vIHBvb2xcIilcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJOT19QT09MXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJubzogMTAwMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcWw6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpcIk5PX1BPT0xcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XCJNeXNxbCBwb29sIG5vdCBjcmVhdGVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd2FibGU6dGhyb3dhYmxlP3RydWU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTpudWxsLFxuICAgICAgICAgICAgICAgICAgICBjb3VudDowXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgIGxldCBjb25uOm15c3FsLlBvb2xDb25uZWN0aW9ufG51bGw9bnVsbFxuICAgICAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uSUQgJiYgdHJhbnNhY3Rpb25JRD4wKXtcbiAgICAgICAgICAgICAgICAgICAgY29ubiA9IHRoaXMudHJhbnNhY3Rpb25zLmZpbmQoaT0+aS5pZD09PXRyYW5zYWN0aW9uSUQpPy5jb25uID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZGVidWcpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkV4ZWN1dGUgcXVlcnkgb24gdHJhbnNhY3Rpb246IFwiLGNvbm4/LnRocmVhZElkKVxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBjb25uID0gYXdhaXQgdGhpcy5wb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZih0aGlzLmRlYnVnKVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkV4ZWN1dGUgcXVlcnlcIixjb25uPy50aHJlYWRJZClcblxuICAgICAgICAgICAgICAgIC8vIGlmIGNvbm5lY3Rpb24gbm90IGNyZWF0ZWRcbiAgICAgICAgICAgICAgICBpZighY29ubil7XG4gICAgICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCIke015c3FsU2VydmljZS5qc31cIixgTm8gY29ubmVjdGlvbiBjcmVhdGVkIWApXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiTk9fQ09OTlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vOiAxMDAwMDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlwiTk9fQ09OTlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XCJNeXNxbCBwb29sIGNhbnQgZ2V0IGNvbm5lY3Rpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd2FibGU6dGhyb3dhYmxlP3RydWU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOm51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudDowXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIC8vIERvIHNlbmQgcXVlcnlcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy50cmFuc2FjdGlvbnMpe1xuICAgICAgICAgICAgICAgICAgICBpZihpLmNvbm49PT1jb25uKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0luZm8oXCJZb3VyIGNvbm5lY3Rpb24gaXMgaW4gdHJhbnNhY3Rpb25cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kUXVlcnkoY29ubixxdWVyeSxyZXNvbHZlLHJvbGxiYWNrUXVlcnksdGhyb3dhYmxlP3RydWU6ZmFsc2UsY2FsY3VsYXRlQ291bnQpO1xuXG4gICAgICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3IoXCIke015c3FsU2VydmljZS5qc31cIixlKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyByZWNyZWF0ZSBwb29sLCBjb25uZWN0aW9uIGVycm9yXG4gICAgICAgICAgICAgICAgaWYoYCR7ZX1gLmluZGV4T2YoJ0VDT05OUkVGVVNFRCcpIT09LTEpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjcmVhdGVQb29sKCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yOntcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiTk9fQ09OTlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJybm86IDEwMDAwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dhYmxlOnRocm93YWJsZT90cnVlOmZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3FsOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6XCJOT19DT05OXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOihlICYmIHR5cGVvZiBlID09PSBcIm9iamVjdFwiICYmIFwibWVzc2FnZVwiIGluIGUgYXMgYW55KT8oZSBhcyBhbnkpLm1lc3NhZ2U6XCJNeXNxbCBjYW50IGdldCBjb25uZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTpudWxsLFxuICAgICAgICAgICAgICAgICAgICBjb3VudDowXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIHNlbmRRdWVyeShjb25uOm15c3FsLlBvb2xDb25uZWN0aW9uLHF1ZXJ5OnN0cmluZyxyZXNvbHZlOihkYXRhOk15c3FsUmVzdWx0KT0+dm9pZCxyb2xsYmFjazpzdHJpbmd8bnVsbCx0aHJvd2FibGU6Ym9vbGVhbixjYWxjdWxhdGVDb3VudDpib29sZWFuKXtcbiAgICAgICAgXG5cblxuICAgICAgICBjb25uLm9uKFwiZXJyb3JcIixhc3luYyBlcnI9PntcblxuICAgICAgICAgICAgbGV0IHJvbGxiYWNrRXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgaWYocm9sbGJhY2spXG4gICAgICAgICAgICAgICAgcm9sbGJhY2tFcnJvcj0oYXdhaXQgdGhpcy5xdWVyeUFzeW5jKGNvbm4scm9sbGJhY2spKS5lcnJcbiAgICAgICBcbiAgICAgICAgICAgIGxvZ0Vycm9yKFwiJHtNeXNxbFNlcnZpY2UuanN9LT5jb25uLm9uKCdlcnJvcicpXCIsZXJyKVxuXG4gICAgICAgICAgICAvLyBjbG9zZSBjb25uIG9uIHN1Y2Nlc3NcbiAgICAgICAgICAgIHRyeXtcblxuICAgICAgICAgICAgICAgIGNvbm4ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICAgICAgY29ubi5kZXN0cm95KClcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1jYXRjaChlKXt9XG4gICAgIFxuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgZXJyb3I6e1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBcIkNPTk5fRVJSXCIsXG4gICAgICAgICAgICAgICAgICAgIGVycm5vOiAxMDAwMDMsXG4gICAgICAgICAgICAgICAgICAgIGZhdGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzcWw6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOlwiQ09OTl9FUlJcIixcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcIkVycm9yOiBcIitlcnIsXG4gICAgICAgICAgICAgICAgICAgIHRocm93YWJsZTp0aHJvd2FibGVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRhdGE6bnVsbCxcbiAgICAgICAgICAgICAgICByb2xsYmFja0Vycm9yOnJvbGxiYWNrRXJyb3IsXG4gICAgICAgICAgICAgICAgY291bnQ6MFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuXG5cbiAgICAgICAgbG9nSW5mbyhcIiR7TXlzcWxTZXJ2aWNlLmpzfVwiLHF1ZXJ5KVxuXG4gICAgICAgIC8vIHNlbmQgcXVlcnlcbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5QXN5bmMoY29ubixxdWVyeSk7XG5cbiAgICAgICAgLy8gaGFuZGxlIGVycm9yXG4gICAgICAgIGlmKHF1ZXJ5UmVzdWx0LmVycil7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHJvbGxiYWNrXG4gICAgICAgICAgICBsZXQgcm9sbGJhY2tFcnJvcj1udWxsO1xuICAgICAgICAgICAgaWYocm9sbGJhY2spXG4gICAgICAgICAgICAgICAgcm9sbGJhY2tFcnJvcj0oYXdhaXQgdGhpcy5xdWVyeUFzeW5jKGNvbm4scm9sbGJhY2spKS5lcnJcblxuICAgICAgICAgICAgLy8gY2xvc2UgY29ubmVjdGlvblxuICAgICAgICAgICAgdHJ5e1xuXG4gICAgICAgICAgICAgICAgbGV0IGRvY2xvc2U9ZmFsc2VcbiAgICAgICAgICAgICAgICBpZihxdWVyeVJlc3VsdC5lcnIgJiYgcXVlcnlSZXN1bHQuZXJyLm1lc3NhZ2Upe1xuICAgICAgICAgICAgICAgICAgICBpZihxdWVyeVJlc3VsdC5lcnIubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJjYW4ndCBhZGQgbmV3IGNvbW1hbmQgd2hlbiBjb25uZWN0aW9uIGlzIGluIGNsb3NlZCBzdGF0ZVwiKSE9PS0xKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY2xvc2U9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmKGRvY2xvc2Upe1xuICAgICAgICAgICAgICAgICAgICBjb25uLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgY29ubi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlSZXN1bHQuZXJyLmNvZGU9XCJDT05OX0VSUlwiO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBjb25uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29ubi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Y2F0Y2goZSl7fVxuXG5cblxuXG4gICAgICAgICAgICAvLyBkZXRlcm1pbmUgZHVwbGljYXRlIGVycm9yXG4gICAgICAgICAgICBsZXQgZHVwPWZhbHNlO1xuICAgICAgICAgICAgaWYocXVlcnlSZXN1bHQuZXJyICYmIHF1ZXJ5UmVzdWx0LmVyci5jb2RlICYmIHF1ZXJ5UmVzdWx0LmVyci5jb2RlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImVyX2R1cF9lbnRyeVwiKSE9PS0xKVxuICAgICAgICAgICAgICAgIGR1cD10cnVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsb2dFcnJvcihcIiR7TXlzcWxTZXJ2aWNlLmpzfS0+c2VuZCBxdWVyeS0+cXVlcnkgZXJyb3JcIixxdWVyeVJlc3VsdC5lcnIpO1xuXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICBlcnJvcjp7Li4ucXVlcnlSZXN1bHQuZXJyLHRocm93YWJsZTp0aHJvd2FibGV9LFxuICAgICAgICAgICAgICAgIGRhdGE6bnVsbCxcbiAgICAgICAgICAgICAgICByb2xsYmFja0Vycm9yOnJvbGxiYWNrRXJyb3IsXG4gICAgICAgICAgICAgICAgaXNEdXBsaWNhdGVFcnJvcjpkdXAsXG4gICAgICAgICAgICAgICAgY291bnQ6MFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuOyAvLyBRVUVSWSBFUlJPUiwgUkVUVVJOXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICBpZihjYWxjdWxhdGVDb3VudCAmJiBxdWVyeS5pbmRleE9mKFwiU0VMRUNUXCIpPT09MCl7XG4gICAgICAgICAgICBsZXQgY291bnRRdWVyeSA9IHRoaXMucHJlcGFyZUNvdW50UXVlcnkocXVlcnkpO1xuICAgICAgICAgICAgY29uc3QgY291bnRRdWVyeVJlc3VsdCA9IGF3YWl0IHRoaXMucXVlcnlBc3luYyhjb25uLGNvdW50UXVlcnkpO1xuICAgICAgICAgICAgaWYoY291bnRRdWVyeVJlc3VsdC5lcnIpXG4gICAgICAgICAgICAgICAgbG9nRXJyb3IoXCIke015c3FsU2VydmljZS5qc30tPnNlbmQgcXVlcnktPmNvdW50LT5xdWVyeSBlcnJvclwiLGNvdW50UXVlcnlSZXN1bHQuZXJyKTtcbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgaWYoY291bnRRdWVyeVJlc3VsdC5yZXN1bHRzICYmIGNvdW50UXVlcnlSZXN1bHQucmVzdWx0cy5sZW5ndGg+MCl7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gY291bnRRdWVyeVJlc3VsdC5yZXN1bHRzWzBdLmNvdW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gY2xvc2UgY29ubiBvbiBzdWNjZXNzXG4gICAgICAgIHRyeXtcbiAgICAgICAgICAgIGNvbm4ucmVsZWFzZSgpO1xuICAgICAgICAgICAgY29ubi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgfWNhdGNoKGUpe31cblxuICAgICAgICAvLyBoYW5kbGUgc3VjY2Vzc1xuICAgICAgICBjb25zdCBlcnIgPSBudWxsO1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgIGVycm9yOmVycixcbiAgICAgICAgICAgIGRhdGE6cXVlcnlSZXN1bHQucmVzdWx0cyxcbiAgICAgICAgICAgIGNvdW50OmNvdW50XG4gICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICAvLyBBc3luYyBxdWVyeSB3cmFwcGVyIHRvIGNvbm4ucXVlcnlcbiAgICBhc3luYyBxdWVyeUFzeW5jKGNvbm46bXlzcWwuUG9vbENvbm5lY3Rpb24scXVlcnk6c3RyaW5nKTpQcm9taXNlPHtlcnI6TXlzcWxFcnJvcnxudWxsLHJlc3VsdHM/OmFueX0+e1xuXG4gICAgICAgIGxldCByZXN1bHQ9bnVsbDtcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgY29ubi5xdWVyeShxdWVyeSk7XG4gICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgIHJldHVybiB7ZXJyOnRoaXMuY3JlYXRlTXlzcWxRdWVyeUVycm9yKGUpfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlcnI6bnVsbCxcbiAgICAgICAgICAgIHJlc3VsdHM6cmVzdWx0WzBdLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlTXlzcWxRdWVyeUVycm9yKGVycjphbnksdGhyb3dhYmxlPzpib29sZWFuKTpNeXNxbEVycm9ye1xuICAgICAgICBpZihlcnIgJiYgIHR5cGVvZiBlcnI9PT1cIm9iamVjdFwiICYmIFwiY29kZVwiIGluIGVyciAmJiBcImVycm5vXCIgaW4gZXJyICYmIFwic3FsXCIgaW4gZXJyICYmIFwibmFtZVwiIGluIGVyciAmJiBcIm1lc3NhZ2VcIiBpbiBlcnIpe1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgIGVycm5vOiBlcnIuZXJybm8sXG4gICAgICAgICAgICAgICAgICAgIHNxbDogZXJyLnNxbCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTplcnIubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTplcnIubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dhYmxlOnRocm93YWJsZT90cnVlOmZhbHNlXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcIlFVRVJZX0VSUlwiLFxuICAgICAgICAgICAgICAgIGVycm5vOiAxMDAwMDIsXG4gICAgICAgICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgc3FsOiBcIm5vIHF1ZXJ5XCIsXG4gICAgICAgICAgICAgICAgbmFtZTpcIlFVRVJZX0VSUlwiLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XCJFcnJvcjogXCIrKGVycik/ZXJyOlwiXCIsXG4gICAgICAgICAgICAgICAgdGhyb3dhYmxlOnRocm93YWJsZT90cnVlOmZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuY29uc3Qgc2VjcmV0X2tleT1cIkFLTFdrYWp3JV4mZGd3cWh3Izk4NDUzaTIzYmZrMjNybjJrbmtuZ2xyZ2plaXRcIlxuY29uc3Qgc2VjcmV0X2l2PVwicnRoYWRyZmsyM3JuMmtuIypGTktBQGd0NDRkZjN0c2xyZ2ojIyFpdFwiXG5cbi8vIEdlbmVyYXRlIHNlY3JldCBoYXNoIHdpdGggY3J5cHRvIHRvIHVzZSBmb3IgZW5jcnlwdGlvblxuY29uc3Qga2V5ID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKHNlY3JldF9rZXkpLmRpZ2VzdCgnaGV4Jykuc3Vic3RyaW5nKDAsIDMyKVxuY29uc3QgaXYgPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoc2VjcmV0X2l2KS5kaWdlc3QoJ2hleCcpLnN1YnN0cmluZygwLCAxNilcblxuY29uc3QgZGVjcnlwdCA9KGVuY3J5cHRlZDpzdHJpbmcpOnN0cmluZ3xudWxsPT57XG4gIHRyeXtcbiAgICAgIGVuY3J5cHRlZCA9IEJ1ZmZlci5mcm9tKGVuY3J5cHRlZCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdiaW5hcnknKTtcbiAgICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1jYmMnLCBrZXksIGl2KTtcbiAgICAgIGxldCBkZWNyeXB0ZWQgPSBkZWNpcGhlci51cGRhdGUoZW5jcnlwdGVkLCAnYmluYXJ5JywgJ3V0ZjgnKTtcbiAgICAgIGRlY3J5cHRlZCArPSBkZWNpcGhlci5maW5hbCgndXRmOCcpO1xuICAgICAgcmV0dXJuIGRlY3J5cHRlZDtcbiAgfWNhdGNoKGUpe1xuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgZW5jcnlwdCA9ICh0eHQ6c3RyaW5nKTpzdHJpbmd8bnVsbD0+e1xuICB0cnl7XG4gICAgICBsZXQgZW5jaXBoZXIgPSBjcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1jYmMnLCBrZXksIGl2KSxcbiAgICAgIGVuY3J5cHRlZCA9IGVuY2lwaGVyLnVwZGF0ZSh0eHQsICd1dGY4JywgJ2JpbmFyeScpO1xuICAgICAgZW5jcnlwdGVkICs9IGVuY2lwaGVyLmZpbmFsKCdiaW5hcnknKTtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShlbmNyeXB0ZWQsICdiaW5hcnknKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1jYXRjaChlKXtcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE15c3FsU2VydmljZTsiXX0=
@@ -8,4 +8,3 @@ class StatService extends BaseService_1.BaseService {
8
8
  }
9
9
  }
10
10
  exports.StatService = StatService;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpU2VydmVyL1N0YXRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUE0QztBQUU1QyxNQUFhLFdBQVksU0FBUSx5QkFBVztJQUN4QztRQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFKRCxrQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSBcIi4vQmFzZVNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFN0YXRTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2V7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoXCJTdGF0U2VydmljZVwiKTtcbiAgICB9XG59Il19
@@ -1,2 +1 @@
1
1
  "use strict";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV1NBUElUcmFuc3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpU2VydmVyL1dTQVBJVHJhbnNwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIiXX0=
@@ -1,2 +1 @@
1
1
  "use strict";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViU29ja2V0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGlTZXJ2ZXIvV2ViU29ja2V0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIl19
@@ -16,4 +16,3 @@ class WebsocketService extends BaseService_1.BaseService {
16
16
  }
17
17
  }
18
18
  exports.WebsocketService = WebsocketService;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2Vic29ja2V0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGlTZXJ2ZXIvV2Vic29ja2V0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBNEM7QUFNNUMsTUFBTSxpQ0FBaUMsR0FBRyxHQUEyQixFQUFFO0lBQ25FLE9BQU8sRUFFTixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBR0QsTUFBYSxnQkFBaUIsU0FBUSx5QkFBVztJQUM3QyxPQUFPLENBQTBCO0lBQ2pDLFlBQVksR0FBNkI7UUFDckMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFDLEdBQUcsaUNBQWlDLEVBQUUsRUFBQyxHQUFHLEVBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBVkQsNENBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gXCIuL0Jhc2VTZXJ2aWNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdlYlNvY2tldFNlcnZpY2VPcHRpb25ze1xuXG59XG5cbmNvbnN0IGdldERlZmF1bHRXZWJTb2NrZXRTZXJ2aWNlT3B0aW9ucyA9ICgpOklXZWJTb2NrZXRTZXJ2aWNlT3B0aW9ucz0+e1xuICAgIHJldHVybiB7XG5cbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZXtcbiAgICBvcHRpb25zOklXZWJTb2NrZXRTZXJ2aWNlT3B0aW9ucztcbiAgICBjb25zdHJ1Y3RvcihvcHQ/OklXZWJTb2NrZXRTZXJ2aWNlT3B0aW9ucyl7XG4gICAgICAgIHN1cGVyKFwiV2Vic29ja2V0U2VydmljZVwiKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gey4uLmdldERlZmF1bHRXZWJTb2NrZXRTZXJ2aWNlT3B0aW9ucygpLG9wdH1cbiAgICB9XG5cbiAgICBhc3luYyBpbml0KCl7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG59Il19
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSURCQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGlTZXJ2ZXIvZGIvSURCQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURCUXVlcnksIElEQlJlc3VsdCB9IGZyb20gXCIuLi9EQlNlcnZpY2VcIlxuXG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIElEQkFkYXB0ZXJ7XG4gICAgaW5pdCgpOlByb21pc2U8dm9pZD5cbiAgICBmaW5pc2goKTpQcm9taXNlPHZvaWQ+XG4gICAgcHJlcGFyZVF1ZXJ5KHJlcXVlc3Q6SURCUXVlcnkpOnN0cmluZ1xuICAgIHF1ZXJ5KHJlcXVlc3Q6SURCUXVlcnkpOlByb21pc2U8SURCUmVzdWx0PlxufSJdfQ==
@@ -29,6 +29,7 @@ export declare class MysqlAdapter implements IDBAdapter {
29
29
  failReportFileStreamName: string | null;
30
30
  failReportLastAccessTime: number;
31
31
  poolConnections: number;
32
+ acquiredPoolConnections: number;
32
33
  constructor(options: DBAdapterOptions);
33
34
  init(): Promise<void>;
34
35
  setupTimers(): void;
@@ -27,6 +27,7 @@ class MysqlAdapter {
27
27
  failReportFileStreamName = null;
28
28
  failReportLastAccessTime = 0;
29
29
  poolConnections = 0;
30
+ acquiredPoolConnections = 0;
30
31
  constructor(options) {
31
32
  this.options = options;
32
33
  if (this.options.host.startsWith("_"))
@@ -78,11 +79,8 @@ class MysqlAdapter {
78
79
  if (Date.now() - this.lastSuccessQueryTime > this.pingInterval) {
79
80
  if (!this.pool)
80
81
  return;
81
- for (let i = 0; i < this.options.connectionLimit; i++) {
82
+ for (let i = 0; i < this.options.connectionLimit; i++)
82
83
  this.query({ query: "SELECT 1 @NOLIMIT" });
83
- if (this.options.debug)
84
- console.log("Ping mysql on each connection in pool");
85
- }
86
84
  }
87
85
  }, 1000 * 30);
88
86
  setInterval(() => {
@@ -126,13 +124,21 @@ class MysqlAdapter {
126
124
  (0, LogService_1.logCrit)("MysqlAdapter", "Can't connect to MYSQL! " + e);
127
125
  return false;
128
126
  }
127
+ this.poolConnections = 0;
128
+ this.acquiredPoolConnections = 0;
129
129
  this.pool?.on('connection', (connection) => {
130
130
  if (this.options.debug)
131
131
  (0, LogService_1.logInfo)("MysqlAdapter", "pool -> connection created, total:" + this.poolConnections++);
132
132
  });
133
133
  this.pool?.on('acquire', (connection) => {
134
+ this.acquiredPoolConnections++;
135
+ if (this.options.debug)
136
+ (0, LogService_1.logInfo)("MysqlAdapter", "pool -> connection acquire, busy:" + this.acquiredPoolConnections);
134
137
  });
135
138
  this.pool?.on('release', (connection) => {
139
+ this.acquiredPoolConnections--;
140
+ if (this.options.debug)
141
+ (0, LogService_1.logInfo)("MysqlAdapter", "pool -> connection release, busy:" + this.acquiredPoolConnections);
136
142
  });
137
143
  this.pool?.on('enqueue', () => {
138
144
  if (this.options.debug)
@@ -140,28 +146,17 @@ class MysqlAdapter {
140
146
  });
141
147
  if (this.options.debug)
142
148
  console.log("Check mysql connection");
143
- return new Promise(async (resolve, _) => {
144
- try {
145
- const conn = await this.pool?.getConnection();
146
- if (conn) {
147
- await conn.query("SELECT 1");
148
- conn?.release();
149
- (0, LogService_1.logInfo)("MysqlAdapter", "Connected to MYSQL!");
150
- resolve(true);
151
- }
152
- else
153
- resolve(false);
154
- }
155
- catch (e) {
156
- (0, LogService_1.logCrit)("MysqlAdapter", "Can't connect to MYSQL! " + e);
157
- resolve(false);
158
- }
159
- });
149
+ const res = await this.query({ query: "SELECT 1 @NOLIMIT" });
150
+ if (res.error) {
151
+ (0, LogService_1.logCrit)("MysqlAdapter", "pool -> check connection livenes was failed: " + res.error.message);
152
+ return false;
153
+ }
154
+ return true;
160
155
  }
161
156
  async query(request) {
162
157
  const query = this.prepareQuery(request);
163
158
  if (!this.pool) {
164
- (0, LogService_1.logError)("${MysqlAdapter.js}", "No pool");
159
+ (0, LogService_1.logError)("${MysqlAdapter.js}", "No pool created, can't execute query");
165
160
  const error = {
166
161
  code: "NO_POOL",
167
162
  errno: 100000,
@@ -209,7 +204,7 @@ class MysqlAdapter {
209
204
  if (this.options.debug)
210
205
  (0, LogService_1.logInfo)("Execute query:", query);
211
206
  const result = await conn.query(query);
212
- if (request.transactionID)
207
+ if (!request.transactionID)
213
208
  this.finalizeConnection(conn);
214
209
  return {
215
210
  data: result[0],
@@ -217,8 +212,12 @@ class MysqlAdapter {
217
212
  };
218
213
  }
219
214
  catch (e) {
220
- if (request.transactionID)
215
+ if (!request.transactionID)
221
216
  this.finalizeConnection(conn);
217
+ else if (request.transactionID && request.throwable) {
218
+ this.rollbackTransaction(this.transactions.find(i => i.id === request.transactionID));
219
+ this.finalizeConnection(conn);
220
+ }
222
221
  const error = this.createMysqlQueryError(e);
223
222
  if (request.throwable)
224
223
  throw { ...DefaultErrors_1.default.DB_ERROR, details: error.message, stack: error };
@@ -250,6 +249,8 @@ class MysqlAdapter {
250
249
  try {
251
250
  conn.release();
252
251
  conn.removeAllListeners();
252
+ if (this.options.debug)
253
+ console.log("Release connection: ", conn.threadId);
253
254
  }
254
255
  catch (e) {
255
256
  (0, LogService_1.logCrit)("MysqlAdapter", `Can't release connection: ${e}`);
@@ -468,4 +469,3 @@ const decrypt = (encrypted) => {
468
469
  return null;
469
470
  }
470
471
  };
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlzcWxBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaVNlcnZlci9kYi9NeXNxbEFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsNkRBQW1DO0FBQ25DLDRDQUFvQjtBQUNwQiw4Q0FBMkQ7QUFDM0QsZ0ZBQXdEO0FBQ3hELGdEQUF3QjtBQUN4QixtQ0FBc0Q7QUFVdEQsTUFBYSxZQUFZO0lBQ3JCLE9BQU8sQ0FBa0I7SUFDekIsY0FBYyxHQUFTLEtBQUssQ0FBQztJQUU3QixtQkFBbUIsR0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDO0lBQzNCLFlBQVksR0FBQyxLQUFLLENBQUM7SUFDbkIsSUFBSSxHQUFpQixJQUFJLENBQUM7SUFDMUIsU0FBUyxDQUFJO0lBRWIsT0FBTyxHQUFDLEVBQUUsQ0FBQztJQUNYLE1BQU0sQ0FBQyxpQkFBaUIsR0FBQyxDQUFDLENBQUM7SUFDM0IsWUFBWSxHQUFnQixFQUFFLENBQUE7SUFFOUIsc0JBQXNCLEdBQUcsSUFBSSxHQUFDLEVBQUUsR0FBQyxDQUFDLENBQUM7SUFDbkMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFlBQVksR0FBRyxJQUFJLEdBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQztJQUV6QixvQkFBb0IsR0FBcUIsSUFBSSxDQUFDO0lBQzlDLHdCQUF3QixHQUFhLElBQUksQ0FBQztJQUMxQyx3QkFBd0IsR0FBUSxDQUFDLENBQUM7SUFFbEMsZUFBZSxHQUFRLENBQUMsQ0FBQztJQUV6QixZQUFZLE9BQXdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUMsT0FBTyxDQUFDO1FBR3BCLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxD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QUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELFNBQVMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBQUEsT0FBTSxDQUFDLEVBQUM7UUFDTCxPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJBZGFwdGVyT3B0aW9ucywgSURCRXJyb3IsIElEQlF1ZXJ5LCBJREJRdWVyeUZpZWxkLCBJREJSZXN1bHQgfSBmcm9tIFwiLi4vREJTZXJ2aWNlXCI7XG5pbXBvcnQgeyBJREJBZGFwdGVyLCB9IGZyb20gXCIuL0lEQkFkYXB0ZXJcIjtcbmltcG9ydCBteXNxbCBmcm9tICdteXNxbDIvcHJvbWlzZSc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgbG9nSW5mbywgbG9nQ3JpdCwgbG9nRXJyb3IgfSBmcm9tIFwiLi4vTG9nU2VydmljZVwiO1xuaW1wb3J0IERlZmF1bHRFcnJvcnMgZnJvbSBcIi4uL3N0cnVjdHVyZXMvRGVmYXVsdEVycm9yc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2gsIGNyZWF0ZURlY2lwaGVyaXYgfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmludGVyZmFjZSBJVHJhbnNhY3Rpb257XG4gICAgaWQ6bnVtYmVyXG4gICAgdGltZXN0YW1wOm51bWJlcixcbiAgICBjb25uOm15c3FsLlBvb2xDb25uZWN0aW9uLFxuICAgIHF1ZXJpZXM6e3NxbDpzdHJpbmcsc3RhdHVzOnN0cmluZ31bXVxufVxuXG5cbmV4cG9ydCBjbGFzcyBNeXNxbEFkYXB0ZXIgaW1wbGVtZW50cyBJREJBZGFwdGVye1xuICAgIG9wdGlvbnM6REJBZGFwdGVyT3B0aW9ucztcbiAgICBzZXJ2aWNlU3RhcnRlZDpib29sZWFuPWZhbHNlO1xuXG4gICAgcmVjb25uZWN0aW9uVGltZW91dD0xMDAwKjM7XG4gICAgcmVjb25uZWN0aW5nPWZhbHNlO1xuICAgIHBvb2w6bXlzcWwuUG9vbHxudWxsPW51bGw7XG4gICAgdGltZW91dElEOmFueVxuICAgICAgICBcbiAgICBxdWVyaWVzPVtdOyAvLyBUT0RPOiBTVE9SRSBRVUVSSUVTIFNFTlRTIEJFRk9SRSBUSEUgU0VSVklDRSBJUyBTVEFSVEVEIVxuICAgIHN0YXRpYyBuZXh0VHJhbnNhY3Rpb25JRD0xO1xuICAgIHRyYW5zYWN0aW9uczpJVHJhbnNhY3Rpb25bXT1bXVxuICAgIFxuICAgIG1heFRyYW5zYWN0aW9uV2FpdFRpbWUgPSAxMDAwKjYwKjE7IC8vIDEgbWluIGFuZCBkZXRlbGV0ZSB0cmFuc2FjdGlvblxuICAgIGxhc3RTdWNjZXNzUXVlcnlUaW1lID0gMDtcbiAgICBwaW5nSW50ZXJ2YWwgPSAxMDAwKjYwKjI7IC8vIGVhY2ggMiBtaW5cbiAgICBcbiAgICBmYWlsUmVwb3J0RmlsZVN0cmVhbTpmcy5Xcml0ZVN0cmVhbXxudWxsPW51bGw7XG4gICAgZmFpbFJlcG9ydEZpbGVTdHJlYW1OYW1lOnN0cmluZ3xudWxsPW51bGw7XG4gICAgZmFpbFJlcG9ydExhc3RBY2Nlc3NUaW1lOm51bWJlcj0wO1xuXG4gICAgcG9vbENvbm5lY3Rpb25zOm51bWJlcj0wO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczpEQkFkYXB0ZXJPcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucz1vcHRpb25zO1xuXG4gICAgICAgICAvLyBkZWNyeXB0IHdoZW4gbmVlZGVkXG4gICAgICAgICBpZih0aGlzLm9wdGlvbnMuaG9zdC5zdGFydHNXaXRoKFwiX1wiKSlcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gZGVjcnlwdCh0aGlzLm9wdGlvbnMuaG9zdC5zdWJzdHJpbmcoMSkpID8/IHRoaXMub3B0aW9ucy5ob3N0XG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy51c2VyLnN0YXJ0c1dpdGgoXCJfXCIpKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVzZXIgPSBkZWNyeXB0KHRoaXMub3B0aW9ucy51c2VyLnN1YnN0cmluZygxKSkgPz8gdGhpcy5vcHRpb25zLnVzZXJcbiAgICAgICAgaWYodGhpcy5vcHRpb25zLmRhdGFiYXNlLnN0YXJ0c1dpdGgoXCJfXCIpKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmRhdGFiYXNlID0gZGVjcnlwdCh0aGlzLm9wdGlvbnMuZGF0YWJhc2Uuc3Vic3RyaW5nKDEpKSA/PyB0aGlzLm9wdGlvbnMuZGF0YWJhc2VcbiAgICAgICAgaWYodGhpcy5vcHRpb25zLnBhc3N3b3JkLnN0YXJ0c1dpdGgoXCJfXCIpKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhc3N3b3JkID0gZGVjcnlwdCh0aGlzLm9wdGlvbnMucGFzc3dvcmQuc3Vic3RyaW5nKDEpKSA/PyB0aGlzLm9wdGlvbnMucGFzc3dvcmRcbiAgICB9XG5cbiAgICBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgICAgIC8vIENyZWF0ZSBmaWxlIGZvciB0cmFuc2FjdGlvbiBwb3JibGVtIHJlcG9ydFxuICAgICAgICBpZih0aGlzLm9wdGlvbnMudHJhbnNhY3Rpb25GYWlsUmVwb3J0RGlyKXtcbiAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICBpZighZnMuZXhpc3RzU3luYyh0aGlzLm9wdGlvbnMudHJhbnNhY3Rpb25GYWlsUmVwb3J0RGlyKSlcbiAgICAgICAgICAgICAgICAgICAgZnMubWtkaXJTeW5jKHRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXIpO1xuICAgICAgICAgICAgfWNhdGNoKGUpe1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXI9dW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCJNeXNxbEFkYXB0ZXJcIixcIkNhbid0IGNyZWF0ZSB0cmFuc2FjdGlvbiBmYWlsIHJlcG9ydCBkaXJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gc2V0dXAgcHJvY2VzcyBleGl0IGhhbmRsZXJzIGludGVycnVwdCAoY3RybCtjKVxuICAgICAgICB0aGlzLnNlcnZpY2VTdGFydGVkPWZhbHNlO1xuICAgICAgICBsZXQgcG9vbENyZWF0ZWQ6Ym9vbGVhbiA9IGZhbHNlO1xuICAgICAgICB3aGlsZSghcG9vbENyZWF0ZWQpe1xuICAgICAgICAgICAgcG9vbENyZWF0ZWQgPSBhd2FpdCB0aGlzLnJlY3JlYXRlUG9vbCgpO1xuICAgICAgICAgICAgaWYoIXBvb2xDcmVhdGVkKXtcbiAgICAgICAgICAgICAgICBsb2dDcml0KFwiTXlzcWxBZGFwdGVyXCIsXCJDYW4ndCBjb25uZWN0IHRvIE1ZU1FMISBSZXRyeWluZyBpbiAzIHNlY29uZHMuLi5cIilcbiAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PnNldFRpbWVvdXQocmVzb2x2ZSwzMDAwKSkgLy8gc2xlZXAgMyBzZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldHVwVGltZXJzKCk7XG4gICAgfVxuXG4gICAgc2V0dXBUaW1lcnMoKXtcblxuICAgICAgICAvLyBIYW5kbGUgaGFuZ2luZyB0cmFuc2FjdGlvbnNcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCk9PntcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY2hlY2sgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnRyYW5zYWN0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVkSURzOm51bWJlcltdPVtdO1xuXG4gICAgICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy50cmFuc2FjdGlvbnMpe1xuICAgICAgICAgICAgICAgIGlmKG5vdy1pLnRpbWVzdGFtcD50aGlzLm1heFRyYW5zYWN0aW9uV2FpdFRpbWUpe1xuICAgICAgICAgICAgICAgICAgICBsb2dFcnJvcihcIlJlbGVhc2UgdHJhbnNhY3Rpb24gY29ubmVjdGlvbiBkdWUgdG8gdGltZW91dFwiKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24oaSx0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZElEcy5wdXNoKGkuaWQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9ucyA9IHRoaXMudHJhbnNhY3Rpb25zLmZpbHRlcihpPT4hcmVtb3ZlZElEcy5pbmNsdWRlcyhpLmlkKSlcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIGNvdW50LXRoaXMudHJhbnNhY3Rpb25zLmxlbmd0aD4wKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVtb3ZlZDogXCIsY291bnQtdGhpcy50cmFuc2FjdGlvbnMubGVuZ3RoKVxuXG4gICAgICAgICAgICAvLyBQSU5HIFNFUlZFUlxuICAgICAgICAgICAgaWYoRGF0ZS5ub3coKS10aGlzLmxhc3RTdWNjZXNzUXVlcnlUaW1lPnRoaXMucGluZ0ludGVydmFsKXtcbiAgICAgICAgICAgICAgICBpZighdGhpcy5wb29sKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gRE8gUElOR1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9MDtpPHRoaXMub3B0aW9ucy5jb25uZWN0aW9uTGltaXQ7aSsrKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeSh7cXVlcnk6XCJTRUxFQ1QgMSBATk9MSU1JVFwifSlcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLmRlYnVnKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQaW5nIG15c3FsIG9uIGVhY2ggY29ubmVjdGlvbiBpbiBwb29sXCIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgfSwxMDAwKjMwKVxuICAgICAgICBcblxuICAgICAgICBzZXRJbnRlcnZhbCgoKT0+e1xuICAgICAgICAgICAgaWYoIXRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW0pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gYWZ0ZXIgMTUgbWluIG9mIGluYWN0aXZpdHksIGNsb3NlIGZpbGVcbiAgICAgICAgICAgIGlmKERhdGUubm93KCktdGhpcy5mYWlsUmVwb3J0TGFzdEFjY2Vzc1RpbWU+MTAwMCo2MCoxNSl7XG4gICAgICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbS5lbmQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtPW51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSwxMDAwKjYwKjUpXG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBjb25uZWN0aW9uIHBvb2wgKi9cbiAgICBhc3luYyByZWNyZWF0ZVBvb2woKTpQcm9taXNlPGJvb2xlYW4+e1xuXG4gICAgICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgICAgICAgIGhvc3Q6IHRoaXMub3B0aW9ucy5ob3N0XG4gICAgICAgICAgICAsdXNlcjogdGhpcy5vcHRpb25zLnVzZXJcbiAgICAgICAgICAgICxwYXNzd29yZDogdGhpcy5vcHRpb25zLnBhc3N3b3JkXG4gICAgICAgICAgICAsZGF0YWJhc2U6IHRoaXMub3B0aW9ucy5kYXRhYmFzZVxuICAgICAgICAgICAgLHBvcnQ6IHRoaXMub3B0aW9ucy5wb3J0XG4gICAgICAgICAgICAsY29ubmVjdGlvbkxpbWl0OiB0aGlzLm9wdGlvbnMuY29ubmVjdGlvbkxpbWl0XG4gICAgICAgICAgICAscXVldWVMaW1pdDogdGhpcy5vcHRpb25zLnF1ZXVlTGltaXQgPz8gNTBcbiAgICAgICAgICAgICxtdWx0aXBsZVN0YXRlbWVudHM6IHRydWVcblxuICAgICAgICAgICAgLGVuYWJsZUtlZXBBbGl2ZTp0cnVlXG4gICAgICAgICAgICAsa2VlcEFsaXZlSW5pdGlhbERlbGF5OjMqMTAwMFxuICAgICAgICAgICAgLy8sbWF4SWRsZTowXG4gICAgICAgICAgICAsaWRsZVRpbWVvdXQ6MTAwMCo2MCo1XG4gICAgICAgIH1cblxuICAgICAgICBsb2dJbmZvKFwiJHtNeXNxbEFkYXB0ZXIuanN9XCIsXCJDb25uZWN0aW5nIHRvIG15c3FsOiBcXG4gXCIrSlNPTi5zdHJpbmdpZnkoey4uLm9wdCxwYXNzd29yZDpcIioqKipcIn0sbnVsbCxcIlxcdFwiKSlcbiAgICBcbiAgICAgICAgaWYodGhpcy5wb29sKXtcbiAgICAgICAgICAgIHRoaXMucG9vbC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIHRyeXthd2FpdCB0aGlzLnBvb2wuZW5kKCk7fWNhdGNoKGUpe1xuICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCJNeXNxbEFkYXB0ZXJcIixcIkNhbid0IGNsb3NlIE1ZU1FMIHBvb2whIFwiK2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvb2wgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgXG4gICAgICAgIC8vIEtlZXAgYWxpdmUgcGFja2V0cyBzaG91bGQgYmUgc2VudFxuICAgICAgICAvKmVuYWJsZUtlZXBBbGl2ZTogdHJ1ZSxcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHN0YXJ0IHNlbmRpbmcgdGhlbSBlYXJseVxuICAgICAgICBrZWVwQWxpdmVJbml0aWFsRGVsYXk6IDMgKiAxMDAwLCAvLyAzIHNlY29uZHNcbiAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBpZGxlIGNvbm5lY3Rpb25zLCBidXQgaXQncyBub3QgbWFuZGF0b3J5IGZvciB0aGUgZml4IHRvIHdvcmssIGl0IHNlZW1zXG4gICAgICAgIG1heElkbGU6IDAsXG4gICAgICAgIC8vIElkbGUgdGltZW91dCBtdWNoIGxhcmdlciB0aGFuIGtlZXAgYWxpdmUgZGVsYXkgYW5kIG11Y2ggc21hbGxlciB0aGFuIE15U1FMJ3MgdGltZW91dCBzZXR0aW5nXG4gICAgICAgIGlkbGVUaW1lb3V0OiA1ICogNjAgKiAxMDAwIC8vIDUgbWludXRlc1xuICAgICAgICAqL1xuXG4gICAgICAgIHRyeXtcbiAgICAgICAgICAgIHRoaXMucG9vbCA9bXlzcWwuY3JlYXRlUG9vbChvcHQpO1xuICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICBsb2dDcml0KFwiTXlzcWxBZGFwdGVyXCIsXCJDYW4ndCBjb25uZWN0IHRvIE1ZU1FMISBcIitlKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgXG4gICAgICAgIC8vIFRPRE8gd2F0Y2ggZm9yIGZyZWUgcG9vbCBjb25uZWN0aW9uc1xuXG4gICAgICAgIHRoaXMucG9vbD8ub24oJ2Nvbm5lY3Rpb24nLCAoY29ubmVjdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLmRlYnVnKVxuICAgICAgICAgICAgICAgIGxvZ0luZm8oXCJNeXNxbEFkYXB0ZXJcIixcInBvb2wgLT4gY29ubmVjdGlvbiBjcmVhdGVkLCB0b3RhbDpcIit0aGlzLnBvb2xDb25uZWN0aW9ucysrKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wb29sPy5vbignYWNxdWlyZScsIChjb25uZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvKmlmKHRoaXMub3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgICAgICAgICBsb2dJbmZvKFwiTXlzcWxBZGFwdGVyXCIsXCJNWVNRTCBDT05ORUNUSU9OIEFDUVVJUkVEXCIpKi9cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5wb29sPy5vbigncmVsZWFzZScsIChjb25uZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvKmlmKHRoaXMub3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgICAgICAgICBsb2dJbmZvKFwiTXlzcWxBZGFwdGVyXCIsXCJNWVNRTCBDT05ORUNUSU9OIFJFTEVBU0VEXCIpKi9cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5wb29sPy5vbignZW5xdWV1ZScsICgpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMub3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgICAgICAgICBsb2dJbmZvKFwiTXlzcWxBZGFwdGVyXCIsXCJwb29sIC0+IHdhaXRpbmcgZm9yIGF2YWlsYWJsZSBjb25uZWN0aW9uXCIpXG4gICAgICAgIH0pXG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBjb25uZWN0aW9uXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hlY2sgbXlzcWwgY29ubmVjdGlvblwiKVxuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSxfKT0+e1xuICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbm4gPSBhd2FpdCB0aGlzLnBvb2w/LmdldENvbm5lY3Rpb24oKVxuICAgICAgICAgICAgICAgIGlmKGNvbm4pe1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb25uLnF1ZXJ5KFwiU0VMRUNUIDFcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbm4/LnJlbGVhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgbG9nSW5mbyhcIk15c3FsQWRhcHRlclwiLFwiQ29ubmVjdGVkIHRvIE1ZU1FMIVwiKVxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpXG4gICAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICBsb2dDcml0KFwiTXlzcWxBZGFwdGVyXCIsXCJDYW4ndCBjb25uZWN0IHRvIE1ZU1FMISBcIitlKVxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIHF1ZXJ5KHJlcXVlc3Q6IElEQlF1ZXJ5KTogUHJvbWlzZTxJREJSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnByZXBhcmVRdWVyeShyZXF1ZXN0KTtcblxuICAgICAgICAvLyBDaGVjayBwb29sXG4gICAgICAgIGlmKCF0aGlzLnBvb2wpe1xuICAgICAgICAgICAgbG9nRXJyb3IoXCIke015c3FsQWRhcHRlci5qc31cIixcIk5vIHBvb2xcIilcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0ge1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiTk9fUE9PTFwiLFxuICAgICAgICAgICAgICAgIGVycm5vOiAxMDAwMDAsXG4gICAgICAgICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgc3FsOiBxdWVyeSxcbiAgICAgICAgICAgICAgICBuYW1lOlwiTk9fUE9PTFwiLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XCJNeXNxbCBwb29sIG5vdCBjcmVhdGVkXCIsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihyZXF1ZXN0LnRocm93YWJsZSlcbiAgICAgICAgICAgICAgICB0aHJvdyB7Li4uRGVmYXVsdEVycm9ycy5EQl9FUlJPUixkZXRhaWxzOmVycm9yLm1lc3NhZ2Usc3RhY2s6ZXJyb3J9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YTpudWxsLFxuICAgICAgICAgICAgICAgIGVycm9yOmVycm9yLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0cnl7XG4gICAgICAgICAgICAvLyBnZXQgY29ubmVjdGlvblxuICAgICAgICAgICAgbGV0IGNvbm46bXlzcWwuUG9vbENvbm5lY3Rpb258bnVsbD1udWxsXG4gICAgICAgICAgICBpZihyZXF1ZXN0LnRyYW5zYWN0aW9uSUQgJiYgcmVxdWVzdC50cmFuc2FjdGlvbklEPjApe1xuICAgICAgICAgICAgICAgIGNvbm4gPSB0aGlzLnRyYW5zYWN0aW9ucy5maW5kKGk9PmkuaWQ9PT1yZXF1ZXN0LnRyYW5zYWN0aW9uSUQpPy5jb25uID8/IG51bGw7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLmRlYnVnKVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkV4ZWN1dGUgcXVlcnkgb24gdHJhbnNhY3Rpb246IFwiLGNvbm4/LnRocmVhZElkKVxuICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgICBjb25uID0gYXdhaXQgdGhpcy5wb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgXG4gICAgICAgICAgICBpZih0aGlzLm9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFeGVjdXRlIHF1ZXJ5XCIsY29ubj8udGhyZWFkSWQpXG4gICAgICAgIFxuICAgICAgICAgICAgLy8gaWYgY29ubmVjdGlvbiBub3QgY3JlYXRlZFxuICAgICAgICAgICAgaWYoIWNvbm4pe1xuICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCIke015c3FsQWRhcHRlci5qc31cIixgTm8gY29ubmVjdGlvbiBjcmVhdGVkIWApXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiTk9fQ09OTlwiLFxuICAgICAgICAgICAgICAgICAgICBlcnJubzogMTAwMDAxLFxuICAgICAgICAgICAgICAgICAgICBmYXRhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3FsOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTpcIk5PX0NPTk5cIixcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcIk15c3FsIHBvb2wgY2FudCBnZXQgY29ubmVjdGlvblwiLFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmKHJlcXVlc3QudGhyb3dhYmxlKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyB7Li4uRGVmYXVsdEVycm9ycy5EQl9FUlJPUixkZXRhaWxzOmVycm9yLm1lc3NhZ2Usc3RhY2s6ZXJyb3J9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTpudWxsLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjplcnJvcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICBpZih0aGlzLm9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgICAgICAgIGxvZ0luZm8oXCJFeGVjdXRlIHF1ZXJ5OlwiLHF1ZXJ5KVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29ubi5xdWVyeShxdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvLyBJRiBDT05ORUNUSU9OIE5PVCBJTiBUUkFOU0FDVElPTiFcbiAgICAgICAgICAgICAgICBpZihyZXF1ZXN0LnRyYW5zYWN0aW9uSUQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmluYWxpemVDb25uZWN0aW9uKGNvbm4pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTpyZXN1bHRbMF0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOm51bGxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1jYXRjaChlKXtcblxuICAgICAgICAgICAgICAgIGlmKHJlcXVlc3QudHJhbnNhY3Rpb25JRClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5hbGl6ZUNvbm5lY3Rpb24oY29ubik7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmNyZWF0ZU15c3FsUXVlcnlFcnJvcihlKTtcbiAgICAgICAgICAgICAgICBpZihyZXF1ZXN0LnRocm93YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgey4uLkRlZmF1bHRFcnJvcnMuREJfRVJST1IsZGV0YWlsczplcnJvci5tZXNzYWdlLHN0YWNrOmVycm9yfVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6bnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6dGhpcy5jcmVhdGVNeXNxbFF1ZXJ5RXJyb3IoZSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbG9nQ3JpdChcIk15c3FsQWRhcHRlclwiLGBFcnJvciB3aGVuIGV4ZWN1dGluZyBxdWVyeTogJHtlfWApXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0ge1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiRVhFQ19FUlJPUlwiLFxuICAgICAgICAgICAgICAgIGVycm5vOiAxMDAwMDIsXG4gICAgICAgICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgc3FsOiBxdWVyeSxcbiAgICAgICAgICAgICAgICBuYW1lOlwiRVhFQ1VUSU9OX0VSUk9SXCIsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTplK1wiXCIsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHJlcXVlc3QudGhyb3dhYmxlKVxuICAgICAgICAgICAgICAgIHRocm93IHsuLi5EZWZhdWx0RXJyb3JzLkRCX0VSUk9SLGRldGFpbHM6ZXJyb3IubWVzc2FnZSxzdGFjazplcnJvcn1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOm51bGwsXG4gICAgICAgICAgICAgICAgZXJyb3I6ZXJyb3IsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluYWxpemVDb25uZWN0aW9uKGNvbm46bXlzcWwuUG9vbENvbm5lY3Rpb24pe1xuICAgICAgICB0cnl7XG4gICAgICAgICAgICBjb25uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIGNvbm4ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgIGxvZ0NyaXQoXCJNeXNxbEFkYXB0ZXJcIixgQ2FuJ3QgcmVsZWFzZSBjb25uZWN0aW9uOiAke2V9YClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZXBhcmVRdWVyeShyZXF1ZXN0OiBJREJRdWVyeSk6c3RyaW5ne1xuXG4gICAgICAgIGxldCBxdWVyeSA9IHJlcXVlc3QucXVlcnk7XG4gICAgICAgIGxldCBmaWVsZHMgPSByZXF1ZXN0LmZpZWxkcztcblxuICAgICAgICBpZihmaWVsZHMpe1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGZpZWxkcyl7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNbaV07XG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgICAgICBmaWVsZHNbaV09e3ZhbHVlOnZhbHVlLHN5c3RlbTpmYWxzZX1cbiAgICAgICAgICAgICAgICBpZih2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZih2YWx1ZT09PW51bGwpXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpXT17dmFsdWU6bnVsbCxzeXN0ZW06dHJ1ZX1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWQ9IE15c3FsQWRhcHRlci5wcmVwYXJlUXVlcnlGaWVsZFZhbHVlKHZhbHVlIGFzIElEQlF1ZXJ5RmllbGQpO1xuXG4gICAgICAgICAgICAgICAgLy8gdG9kbyBjcmVhdGUgcmVnZXggdG8gcmVwbGFjZSBhbGxcbiAgICAgICAgICAgICAgICBxdWVyeT1xdWVyeS5yZXBsYWNlQWxsKFwiQFwiK25hbWUscGFyc2VkK1wiXCIpIFxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgY29uc3QgdG1wID0gcXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYodG1wLmluZGV4T2YoXCJzZWxlY3RcIik9PT0wICYmIHRtcC5pbmRleE9mKFwibGltaXRcIik9PT0tMSlcbiAgICAgICAgICAgIHF1ZXJ5Kz1cIiBMSU1JVCAxMDBcIlxuICAgICAgICAgICAgXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnkucmVwbGFjZUFsbChcIkBOT0xJTUlUXCIsXCJcIilcbiAgICBcbiAgICAgICAgaWYocXVlcnkuaW5kZXhPZihcIkBmaWVsZHNcIikhPT0tMSl7XG4gICAgICAgICAgICAgICAgbGV0IGluc2VydEZpZWxkTmFtZXM9W11cbiAgICAgICAgICAgICAgICBsZXQgaW5zZXJ0RmllbGRWYWx1ZXM9W11cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gZmllbGRzKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGYgPSBmaWVsZHNbaV0gYXMgSURCUXVlcnlGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgaWYoZi5pZ25vcmVJbkluc2VydClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBpZighZi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydEZpZWxkTmFtZXMucHVzaCgnYCcrKGYubmFtZStcIlwiKS5yZXBsYWNlQWxsKFwiYFwiLCcnKS5yZXBsYWNlQWxsKCdcXFwiJyxcIlwiKS5yZXBsYWNlQWxsKCdcXCcnLFwiXCIpKydgJylcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0RmllbGRWYWx1ZXMucHVzaChmLl9wYXJzZWRWYWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgcXVlcnk9cXVlcnlcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoJ0BmaWVsZHMnLGluc2VydEZpZWxkTmFtZXMuam9pbihcIixcIikpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKCdAdmFsdWVzJyxpbnNlcnRGaWVsZFZhbHVlcy5qb2luKFwiLFwiKSlcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmKHF1ZXJ5LmluZGV4T2YoXCJAaW5zZXJ0XCIpIT09LTEpe1xuICAgICAgICAgICAgICAgIGxldCBvbmluc2VydE5hbWVzPVtdXG4gICAgICAgICAgICAgICAgbGV0IG9uaW5zZXJ0VmFsdWVzPVtdXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIGZpZWxkcyl7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmID0gZmllbGRzW2ldIGFzIElEQlF1ZXJ5RmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIGlmKGYuaWdub3JlSW5JbnNlcnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgb25pbnNlcnROYW1lcy5wdXNoKChmLm5hbWUrXCJcIikucmVwbGFjZUFsbChcImBcIiwnJykucmVwbGFjZUFsbCgnXFxcIicsXCJcIikucmVwbGFjZUFsbCgnXFwnJyxcIlwiKSlcbiAgICAgICAgICAgICAgICAgICAgb25pbnNlcnRWYWx1ZXMucHVzaChmLl9wYXJzZWRWYWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcXVlcnkgPSBxdWVyeS5yZXBsYWNlQWxsKFwiQGluc2VydFwiLGAoJHtvbmluc2VydE5hbWVzLmpvaW4oXCIsXCIpfSkgVkFMVUVTICgke29uaW5zZXJ0VmFsdWVzLmpvaW4oXCIsXCIpfSlgKVxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYocXVlcnkuaW5kZXhPZihcIkBvbnVwZGF0ZVwiKSE9PS0xKXtcbiAgICAgICAgICAgICAgICBsZXQgb25VcGRhdGU9W11cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gZmllbGRzKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGYgPSBmaWVsZHNbaV0gYXMgSURCUXVlcnlGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgaWYoZi5pZ25vcmVJblVwZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZS5wdXNoKCdgJysoZi5uYW1lK1wiXCIpLnJlcGxhY2VBbGwoXCJgXCIsJycpLnJlcGxhY2VBbGwoJ1xcXCInLFwiXCIpLnJlcGxhY2VBbGwoJ1xcJycsXCJcIikrJ2AgPSAnK2YuX3BhcnNlZFZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LnJlcGxhY2VBbGwoXCJAb251cGRhdGVcIixvblVwZGF0ZS5qb2luKFwiICwgXCIpKVxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYocXVlcnkuaW5kZXhPZignQG9uZHVwbGljYXRlJykhPT0tMSl7XG4gICAgICAgICAgICAgICAgbGV0IG9uRHVwbGljYXRlPVtdO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiBmaWVsZHMpe1xuICAgICAgICAgICAgICAgICAgICBsZXQgZiA9IGZpZWxkc1tpXSBhcyBJREJRdWVyeUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZighZi51c2VJblJlcGxhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgb25EdXBsaWNhdGUucHVzaCgnYCcrKGYubmFtZStcIlwiKS5yZXBsYWNlQWxsKFwiYFwiLCcnKS5yZXBsYWNlQWxsKCdcXFwiJyxcIlwiKS5yZXBsYWNlQWxsKCdcXCcnLFwiXCIpKydgID0gJytmLl9wYXJzZWRWYWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcXVlcnkgPSBxdWVyeS5yZXBsYWNlQWxsKFwiQG9uZHVwbGljYXRlXCIsb25EdXBsaWNhdGUuam9pbihcIiAsIFwiKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICByZXR1cm4gIHF1ZXJ5O1xuICAgIH1cblxuICAgIC8qKiBQcmVwYXJlIGZpZWxkIHZhbHVlICovXG4gICAgc3RhdGljIHByZXBhcmVRdWVyeUZpZWxkVmFsdWUoZmllbGQ6SURCUXVlcnlGaWVsZCk6c3RyaW5nfG51bWJlcnxib29sZWFufG51bGx8dW5kZWZpbmVke1xuICAgICAgICBsZXQgdmFsdWUgPSBmaWVsZC52YWx1ZTtcbiAgICAgICAgbGV0IHN5c3RlbSA9IGZpZWxkLnN5c3RlbTtcblxuICAgICAgICBpZih2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIFwiTlVMTFwiXG5cbiAgICAgICAgaWYoIXN5c3RlbSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJ1wiJywnXFxcXFwiJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgZmllbGQuX19wYXJzZWRWYWx1ZT12YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIGFueTtcbiAgICB9XG5cbiAgICBwcmVwYXJlQ291bnRRdWVyeShxdWVyeTpzdHJpbmcpOnN0cmluZ3tcbiAgICAgICAgbGV0IGNvdW50UXVlcnkgPSBxdWVyeTtcblxuICAgICAgICAvLyBSRU1PVkUgTElNSVRcbiAgICAgICAgaWYoY291bnRRdWVyeS5pbmRleE9mKFwiTElNSVRcIik9PT0tMSlcbiAgICAgICAgICAgIGNvdW50UXVlcnkgPSBjb3VudFF1ZXJ5LnN1YnN0cmluZygwLGNvdW50UXVlcnkuaW5kZXhPZihcIkxJTUlUXCIpKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFJFTU9WRSBPUkRFUiBcbiAgICAgICAgaWYoY291bnRRdWVyeS5pbmRleE9mKFwiT1JERVJcIikhPT0tMSlcbiAgICAgICAgICAgIGNvdW50UXVlcnkgPSBjb3VudFF1ZXJ5LnN1YnN0cmluZygwLGNvdW50UXVlcnkuaW5kZXhPZihcIk9SREVSXCIpKVxuXG4gICAgICAgIC8vVE9ETzogUkVNT1ZFIEpPSU5TXG5cbiAgICAgICAgY291bnRRdWVyeSA9IGNvdW50UXVlcnkuc3Vic3RyaW5nKGNvdW50UXVlcnkuaW5kZXhPZihcIkZST01cIikpO1xuICAgICAgICBcblxuICAgICAgICBjb3VudFF1ZXJ5ID0gXCJTRUxFQ1QgQ09VTlQoMSkgYXMgYGNvdW50YCBcIitjb3VudFF1ZXJ5XG4gICAgICAgIHJldHVybiBjb3VudFF1ZXJ5O1xuICAgIH1cblxuXG4gICAgLy8gVFJBTlNBQ1RJT05TXG4gICAgYXN5bmMgY29tbWl0KHRyeDpJVHJhbnNhY3Rpb24pOlByb21pc2U8SURCRXJyb3J8bnVsbD57XG4gICAgICAgIHRyeXtcbiAgICAgICAgICAgIGF3YWl0IHRyeC5jb25uLmNvbW1pdCgpO1xuICAgICAgICAgICAgLy9hd2FpdCB0cnguY29ubi5xdWVyeShcIkNPTU1JVFwiKTtcbiAgICAgICAgICAgIHRyeC5jb25uLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgICAgICAgICAgdHJ4LmNvbm4ucmVsZWFzZSgpO1xuICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24odHJ4KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU15c3FsUXVlcnlFcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cblxuICAgIGFzeW5jIHJvbGxiYWNrVHJhbnNhY3Rpb24odHJ4OklUcmFuc2FjdGlvbixkb25Ob3RSZW1vdmU/OmJvb2xlYW4pOlByb21pc2U8SURCRXJyb3J8bnVsbD57XG4gICAgICAgIGxldCBlcnI9bnVsbDtcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJSb2xsYmFjayBzdGFydGVkXCIsdHJ4LmNvbm4udGhyZWFkSWQpXG4gICAgICAgICAgICBhd2FpdCB0cnguY29ubi5yb2xsYmFjaygpO1xuICAgICAgICAgICAgYXdhaXQgdHJ4LmNvbm4uY29tbWl0KCk7XG4gICAgICAgICAgICAvL2F3YWl0IHRyeC5jb25uLnF1ZXJ5KFwiUk9MTEJBQ0tcIik7XG4gICAgICAgICAgICB0cnguY29ubi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIHRyeC5jb25uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIGlmKCFkb25Ob3RSZW1vdmUpXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMgPSB0aGlzLnRyYW5zYWN0aW9ucy5maWx0ZXIoaT0+aS5pZCE9PXRyeC5pZCk7XG4gICAgICAgICAgICBpZih0aGlzLm9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSb2xsYmFjayBjb21wbGV0ZVwiLHRyeC5jb25uLnRocmVhZElkKVxuICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICBsb2dDcml0KFwiTXlzcWxBZGFwdGVyXCIsXCJDYW4ndCByb2xsYmFjayB0cmFuc2FjdGlvblwiLHRyeC5xdWVyaWVzKVxuICAgICAgICAgICAgZXJyID0gdGhpcy5jcmVhdGVNeXNxbFF1ZXJ5RXJyb3IoZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlVHJhbnNhY3Rpb25Bc1Byb2JsZW0odHJ4LFwicm9sbGJhY2tcIilcblxuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogRmluaXNoIHNlcnZpY2VcbiAgICAgKi9cbiAgICBhc3luYyBmaW5pc2goKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJGaW5pc2hpbmcgbXlzcWwgc2VydmljZVwiKVxuICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy50cmFuc2FjdGlvbnMpXG4gICAgICAgICAgICB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24oaSk7XG5cbiAgICAgICAgaWYodGhpcy5wb29sKXtcbiAgICAgICAgICAgIHRyeXthd2FpdCB0aGlzLnBvb2wuZW5kKCk7fWNhdGNoKGUpe1xuICAgICAgICAgICAgICAgIGxvZ0NyaXQoXCJNeXNxbEFkYXB0ZXJcIixcIkNhbid0IGNsb3NlIE1ZU1FMIHBvb2whXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZih0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtKVxuICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbS5lbmQoKTtcbiAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbT1udWxsO1xuICAgIH1cblxuICAgIGNyZWF0ZU15c3FsUXVlcnlFcnJvcihlcnI6YW55LHRocm93YWJsZT86Ym9vbGVhbik6SURCRXJyb3J7XG4gICAgICAgIGlmKGVyciAmJiAgdHlwZW9mIGVycj09PVwib2JqZWN0XCIgJiYgXCJjb2RlXCIgaW4gZXJyICYmIFwiZXJybm9cIiBpbiBlcnIgJiYgXCJzcWxcIiBpbiBlcnIgJiYgXCJuYW1lXCIgaW4gZXJyICYmIFwibWVzc2FnZVwiIGluIGVycil7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBlcnIuY29kZSxcbiAgICAgICAgICAgICAgICAgICAgZXJybm86IGVyci5lcnJubyxcbiAgICAgICAgICAgICAgICAgICAgc3FsOiBlcnIuc3FsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOmVyci5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOmVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBmYXRhbDpmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29kZTogXCJRVUVSWV9FUlJcIixcbiAgICAgICAgICAgICAgICBlcnJubzogMTAwMDAyLFxuICAgICAgICAgICAgICAgIGZhdGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNxbDogXCJubyBxdWVyeVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6XCJRVUVSWV9FUlJcIixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOlwiRXJyb3I6IFwiKyhlcnIpP2VycjpcIlwiLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc3RvcmVUcmFuc2FjdGlvbkFzUHJvYmxlbSh0cng6SVRyYW5zYWN0aW9uLG1lc3NhZ2U6c3RyaW5nKXtcbiAgICBcbiAgICAgICAgaWYoIXRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnQgJiYgIXRoaXMub3B0aW9ucy50cmFuc2FjdGlvbkZhaWxSZXBvcnREaXIpe1xuICAgICAgICAgICAgbG9nQ3JpdChcIk15c3FsQWRhcHRlclwiLFwiQ2FuJ3QgcmVwb3J0IGZhaWxlZCB0cmFuc2FjdGlvbiwgbm8gcmVwb3J0IGZ1bmN0aW9uOiB0cmFuc2FjdGlvbkZhaWxSZXBvcnQgaW4gb3B0aW9ucywgYW5kIHRyYW5zYWN0aW9uRmFpbFJlcG9ydERpciBpc250IHNldFwiKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5vcHRpb25zLnRyYW5zYWN0aW9uRmFpbFJlcG9ydERpcil7XG4gICAgICAgICAgICBjb25zdCB5eXltbWRkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLDEwKS5yZXBsYWNlQWxsKFwiLVwiLFwiXCIpO1xuXG4gICAgICAgICAgICAvL3N0b3JlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLnRyYW5zYWN0aW9uRmFpbFJlcG9ydERpcix5eXltbWRkK1wiLmpzb25cIik7XG4gICAgICAgICAgICBpZih0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtKXtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtTmFtZSE9PWZpbGUpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtPW51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGlmKHRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW1OYW1lKXtcbiAgICAgICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oZmlsZSx7ZmxhZ3M6J2EnfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbU5hbWU9ZmlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLmRlYnVnKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU3RvcmUgdHJhbnNhY3Rpb24gZmFpbCByZXBvcnQ6IFwiLGZpbGUsdHJ4LnF1ZXJpZXMsbWVzc2FnZSlcblxuICAgICAgICAgICAgaWYoIXRoaXMuZmFpbFJlcG9ydEZpbGVTdHJlYW0pXG4gICAgICAgICAgICAgICAgdGhpcy5mYWlsUmVwb3J0RmlsZVN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGZpbGUse2ZsYWdzOidhJ30pO1xuXG4gICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRGaWxlU3RyZWFtLndyaXRlKEpTT04uc3RyaW5naWZ5KHtxdWVyaWVzOnRyeC5xdWVyaWVzLHRpbWU6dHJ4LnRpbWVzdGFtcCxkYXRlLG1lc3NhZ2V9KStcIlxcbn1FT0J7XFxuXCIsZXJyPT57XG4gICAgICAgICAgICAgICAgaWYoZXJyKVxuICAgICAgICAgICAgICAgICAgICBsb2dDcml0KFwiTXlzcWxBZGFwdGVyXCIsXCJDYW4ndCB3cml0ZSB0byB0cmFuc2FjdGlvbiBmYWlsIHJlcG9ydCBmaWxlXCIpXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBsb2dJbmZvKFwiTXlzcWxBZGFwdGVyXCIsXCJUcmFuc2FjdGlvbiBmYWlsIHJlcG9ydCBzdG9yZWRcIilcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmZhaWxSZXBvcnRMYXN0QWNjZXNzVGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIFxuICAgICAgICBpZih0aGlzLm9wdGlvbnMudHJhbnNhY3Rpb25GYWlsUmVwb3J0KVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRyYW5zYWN0aW9uRmFpbFJlcG9ydCh0cngsbWVzc2FnZSk7XG4gICAgfVxufVxuXG5cblxuY29uc3Qgc2VjcmV0X2tleT1cIkFLTFdrYWp3JV4mZGd3cWh3Izk4NDUzaTIzYmZrMjNybjJrbmtuZ2xyZ2plaXRcIlxuY29uc3Qgc2VjcmV0X2l2PVwicnRoYWRyZmsyM3JuMmtuIypGTktBQGd0NDRkZjN0c2xyZ2ojIyFpdFwiXG5cbi8vIEdlbmVyYXRlIHNlY3JldCBoYXNoIHdpdGggY3J5cHRvIHRvIHVzZSBmb3IgZW5jcnlwdGlvblxuY29uc3Qga2V5ID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKHNlY3JldF9rZXkpLmRpZ2VzdCgnaGV4Jykuc3Vic3RyaW5nKDAsIDMyKVxuY29uc3QgaXYgPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoc2VjcmV0X2l2KS5kaWdlc3QoJ2hleCcpLnN1YnN0cmluZygwLCAxNilcblxuY29uc3QgZGVjcnlwdCA9KGVuY3J5cHRlZDpzdHJpbmcpOnN0cmluZ3xudWxsPT57XG4gIHRyeXtcbiAgICAgIGVuY3J5cHRlZCA9IEJ1ZmZlci5mcm9tKGVuY3J5cHRlZCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdiaW5hcnknKTtcbiAgICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1jYmMnLCBrZXksIGl2KTtcbiAgICAgIGxldCBkZWNyeXB0ZWQgPSBkZWNpcGhlci51cGRhdGUoZW5jcnlwdGVkLCAnYmluYXJ5JywgJ3V0ZjgnKTtcbiAgICAgIGRlY3J5cHRlZCArPSBkZWNpcGhlci5maW5hbCgndXRmOCcpO1xuICAgICAgcmV0dXJuIGRlY3J5cHRlZDtcbiAgfWNhdGNoKGUpe1xuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn0iXX0=
@@ -22,4 +22,3 @@ class Deployment extends BaseEndpoint_1.BaseEndpoint {
22
22
  }
23
23
  }
24
24
  exports.Deployment = Deployment;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwbG95bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGlTZXJ2ZXIvZGVwbG95bWVudC9EZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUErQztBQUMvQyxvREFBNEI7QUFFNUIsOENBQXdDO0FBR3hDLE1BQWEsVUFBVyxTQUFRLDJCQUFZO0lBRXhDLElBQUksQ0FBTztJQUNYLFlBQVksRUFBQyxLQUFLLEVBQUMsUUFBUSxFQUFnQztRQUN2RCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hGLElBQUEsb0JBQU8sRUFBQyw0Q0FBNEMsR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25CLEVBQUMsaUJBQWlCLEVBQUMsSUFBSSxFQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUM7U0FDN0UsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFrQjtRQUd0QyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7Q0FDSjtBQWpCRCxnQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXEgfSBmcm9tIFwiYmFkbWZjay1zaWduYWxcIjtcbmltcG9ydCB7IEJhc2VFbmRwb2ludCB9IGZyb20gXCIuLi9CYXNlRW5kcG9pbnRcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgSFRUUFJlcXVlc3RWTywgVHJhbnNmZXJQYWNrZXRWTyB9IGZyb20gXCIuLi9zdHJ1Y3R1cmVzL0ludGVyZmFjZXNcIjtcbmltcG9ydCB7IGxvZ1dhcm4gfSBmcm9tIFwiLi4vTG9nU2VydmljZVwiO1xuXG5cbmV4cG9ydCBjbGFzcyBEZXBsb3ltZW50IGV4dGVuZHMgQmFzZUVuZHBvaW50e1xuXG4gICAgaGFzaDpzdHJpbmdcbiAgICBjb25zdHJ1Y3Rvcih7bG9naW4scGFzc3dvcmR9Ontsb2dpbjpzdHJpbmcscGFzc3dvcmQ6c3RyaW5nfSl7XG4gICAgICAgIHN1cGVyKFwic3lzLWRlcGxveW1lbnRcIik7XG4gICAgICAgIHRoaXMuaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShsb2dpbitwYXNzd29yZCkuZGlnZXN0KCkudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgICAgIGxvZ1dhcm4oXCJEZXBsb3ltZW50IGluaXRpYWxpemVkIGF0OiBzeXMtZGVwbG95bWVudC9cIit0aGlzLmhhc2gpXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFbmRwb2ludHMoW1xuICAgICAgICAgICAge2lnbm9yZUludGVyY2VwdG9yOnRydWUsZW5kcG9pbnQ6dGhpcy5oYXNoLGhhbmRsZXI6dGhpcy5kZXBsb3ltZW50SGlzdG9yeX0sXG4gICAgICAgIF0pXG4gICAgfVxuXG4gICAgYXN5bmMgZGVwbG95bWVudEhpc3RvcnkocmVxOiBIVFRQUmVxdWVzdFZPKTogUHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT4+IHtcbiAgICAgICAgLy9jb25zdCBlbmNyeXB0ZWRQYXNzd29yZEFuZExvZ2luZyA9IFxuICAgICAgICAvLyB0b2RvIC0gZ2V0IHByb2plY3Qgcm9vdCBkaXJlY3RvcnlcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfVxufSJdfQ==
@@ -180,4 +180,3 @@ class ExternalService extends BaseService_1.BaseService {
180
180
  }
181
181
  }
182
182
  exports.ExternalService = ExternalService;
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0ZXJuYWxTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaVNlcnZlci9leHRlcm5hbC9FeHRlcm5hbFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBNkM7QUFDN0MsZ0RBQTZDO0FBRTdDLDZFQUF3RTtBQUN4RSxtREFBZ0Q7QUFDaEQsdUNBQW9DO0FBQ3BDLG9EQUE0QjtBQUM1QixrREFBMEM7QUFJN0IsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLG9CQUFHLENBSTFCLFNBQVMsRUFBQyxtQkFBbUIsQ0FBQyxDQUFBO0FBRy9CLFFBQUEsTUFBTSxHQUFHLElBQUksb0JBQUcsQ0FBaUQsU0FBUyxFQUFDLFFBQVEsQ0FBQyxDQUFBO0FBV2pHLGNBQU0sQ0FBQyxRQUFRLEdBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBK0IsRUFBQyxFQUFFO0lBRS9ELElBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFDO1FBQzVDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQTtRQUMxRCxPQUFPLEVBQUMsS0FBSyxFQUFDLEVBQUMsR0FBRyx1QkFBYSxDQUFDLFdBQVcsRUFBQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsRUFBQyxDQUFBO0tBQzVFO0lBRUQsS0FBSSxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFDO1FBQ3pDLElBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRTtZQUNyQixPQUFPLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQztJQUVELE9BQU8sRUFBQyxLQUFLLEVBQUMsRUFBQyxHQUFHLHVCQUFhLENBQUMsV0FBVyxFQUFDLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxFQUFDLENBQUE7QUFDbEYsQ0FB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QU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0YsTUFBTSxNQUFNLEdBQUcsZ0JBQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEdBQVUsRUFBRSxFQUFTLENBQUMsQ0FBQztRQUMzRSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEQsU0FBUyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBUyxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsTUFBTSxZQUFZLEdBQUcsZ0JBQU0sQ0FBQyxhQUFhLENBQ3JDO1lBQ0ksR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUMxQixPQUFPLEVBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsc0JBQXNCO1NBQ2xELEVBQ0Qsa0JBQXlCLENBQzVCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBR3JCLE1BQU0sZUFBZSxHQUFHO1lBQ3BCLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLEtBQUssRUFBRSxTQUFTO1NBQ25CLENBQUE7UUFFUCxPQUFPO1lBQ04sYUFBYSxFQUFDLFNBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsR0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQy9FLElBQUksRUFBQyxlQUFlO1NBQ3BCLENBQUE7SUFDRixDQUFDOztBQXRLRiwwQ0F3S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2lnbmFsLCB7IFJlcSB9IGZyb20gXCJiYWRtZmNrLXNpZ25hbFwiO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tIFwiLi4vQmFzZVNlcnZpY2VcIjtcbmltcG9ydCB7IEhUVFBSZXF1ZXN0Vk8sIElFcnJvciwgVHJhbnNmZXJQYWNrZXRWTyB9IGZyb20gXCIuLi9zdHJ1Y3R1cmVzL0ludGVyZmFjZXNcIjtcbmltcG9ydCBEZWZhdWx0RXJyb3JzLCB7IEVycm9yVXRpbHMgfSBmcm9tIFwiLi4vc3RydWN0dXJlcy9EZWZhdWx0RXJyb3JzXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi4vaGVscGVyL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVUlEIH0gZnJvbSBcIi4uL2hlbHBlci9VSURcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tIFwiYXhpb3NcIjtcblxuXG4vLyBFeHRlcm5hbCBjYWxsXG5leHBvcnQgY29uc3QgUkVRX0VYVEVSTkFMX0NBTEwgPSBuZXcgUmVxPHtcblx0aWQ6c3RyaW5nLFxuXHRyZXF1ZXN0TmFtZTpzdHJpbmcsXG5cdHJlcXVlc3REYXRhOmFueVxufSxhbnl8SUVycm9yPih1bmRlZmluZWQsXCJSRVFfRVhURVJOQUxfQ0FMTFwiKSBcblxuXG5leHBvcnQgY29uc3QgUkVRX1hUID0gbmV3IFJlcTx7aWQ6c3RyaW5nLHJlcTpIVFRQUmVxdWVzdFZPfSxUcmFuc2ZlclBhY2tldFZPPih1bmRlZmluZWQsXCJSRVFfWFRcIikgLy8gZXh0ZXJuYWwgY2FsbCByZWNlaXZlZCBcblxuZXhwb3J0IGludGVyZmFjZSBJRXh0ZXJuYWxTZXJ2aWNlT3B0aW9ucyB7XG5cdGlkOnN0cmluZzsgLy8gc2VydmljZSBpZFxuXHRsb2NhbFNlY3VyaXR5VG9rZW46c3RyaW5nOyAvLyBcblx0cHJpdmF0ZUtleTpzdHJpbmc7IC8vIHByaXZhdGUga2V5IHRvIGRlY3J5cHQgZGF0YSBmb3IgdGhpcyBzZXJ2aWNlXG5cdHB1YmxpY0tleTpzdHJpbmc7IC8vIHB1YmxpYyBrZXkgdG8gZW5jcnlwdCBkYXRhIGZvciB0aGlzIHNlcnZpY2Vcblx0cmVxdWVzdHM6UmVxPGFueSxhbnk+W107IC8vIHJlZ2lzdGVyZWQgcmVxdWVzdHNcblx0dXJsOnN0cmluZzsgLy8gdXJsIHRvIHNlcnZpY2Vcbn1cblxuUkVRX1hULmxpc3RlbmVyPWFzeW5jICh7aWQscmVxfTp7aWQ6c3RyaW5nLHJlcTpIVFRQUmVxdWVzdFZPfSk9Pntcblx0XG5cdGlmKEV4dGVybmFsU2VydmljZS5hbGxJbnN0YW5jZXMubGVuZ3RoID09PSAwKXtcblx0XHRjb25zb2xlLmVycm9yKFwiRXh0ZXJuYWxTZXJ2aWNlLmFsbEluc3RhbmNlcy5sZW5ndGggPT09IDBcIilcblx0XHRyZXR1cm4ge2Vycm9yOnsuLi5EZWZhdWx0RXJyb3JzLkJBRF9SRVFVRVNULGRldGFpbHM6XCJubyBleHRlcm5hbCBzZXJ2aWNlc1wifX1cblx0fVxuXG5cdGZvcihsZXQgaSBvZiBFeHRlcm5hbFNlcnZpY2UuYWxsSW5zdGFuY2VzKXtcblx0XHRpZihpLm9wdGlvbnMuaWQgPT09IGlkKVxuXHRcdFx0cmV0dXJuIGF3YWl0IGkub25FeHRlcm5hbENhbGwocmVxKTtcblx0fVxuXG5cdHJldHVybiB7ZXJyb3I6ey4uLkRlZmF1bHRFcnJvcnMuQkFEX1JFUVVFU1QsZGV0YWlsczpcIm5vIGV4dGVybmFsIHNlcnZpY2UgZm91bmRcIn19XG59XG5cblJFUV9FWFRFUk5BTF9DQUxMLmxpc3RlbmVyPWFzeW5jICh7aWQscmVxdWVzdE5hbWUscmVxdWVzdERhdGF9OntpZDpzdHJpbmcscmVxdWVzdE5hbWU6c3RyaW5nLHJlcXVlc3REYXRhOmFueX0pPT57XG5cdGlmKEV4dGVybmFsU2VydmljZS5hbGxJbnN0YW5jZXMubGVuZ3RoID09PSAwKXtcblx0XHRjb25zb2xlLmVycm9yKFwiRXh0ZXJuYWxTZXJ2aWNlLmFsbEluc3RhbmNlcy5sZW5ndGggPT09IDBcIilcblx0XHRyZXR1cm4gey4uLkRlZmF1bHRFcnJvcnMuQkFEX1JFUVVFU1QsZGV0YWlsczpcIm5vIGV4dGVybmFsIHNlcnZpY2VzXCJ9XG5cdH1cblxuXHRmb3IobGV0IGkgb2YgRXh0ZXJuYWxTZXJ2aWNlLmFsbEluc3RhbmNlcyl7XG5cdFx0aWYoaS5vcHRpb25zLmlkID09PSBpZClcblx0XHRcdHJldHVybiBhd2FpdCBpLnJlcXVlc3RFeHRlcm5hbENhbGwoe2lkLHJlcXVlc3ROYW1lLHJlcXVlc3REYXRhfSk7XG5cdH1cblxuXHRyZXR1cm4gey4uLkRlZmF1bHRFcnJvcnMuQkFEX1JFUVVFU1QsZGV0YWlsczpcIm5vIGV4dGVybmFsIHNlcnZpY2UgZm91bmRcIn1cbn1cblxuZXhwb3J0IGNsYXNzIEV4dGVybmFsU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcblx0XG5cdHN0YXRpYyBhbGxJbnN0YW5jZXM6RXh0ZXJuYWxTZXJ2aWNlW10gPSBbXTtcblx0b3B0aW9uczpJRXh0ZXJuYWxTZXJ2aWNlT3B0aW9uc1xuXHRcblx0Y29uc3RydWN0b3Iob3B0OiBJRXh0ZXJuYWxTZXJ2aWNlT3B0aW9ucyl7XG5cdFx0c3VwZXIoXCJFeHRlcm5hbFNlcnZpY2UtXCIrb3B0LmlkKTtcblx0XHQvLyBmaW5kIGR1cGxpY2F0ZVxuXHRcdGZvcihsZXQgaSBvZiBFeHRlcm5hbFNlcnZpY2UuYWxsSW5zdGFuY2VzKXtcblx0XHRcdGlmKGkub3B0aW9ucy5pZCA9PT0gb3B0LmlkKVxuXHRcdFx0XHR0aHJvdyB7Y29kZTotMSxtZXNzYWdlOlwiZHVwbGljYXRlIGlkXCJ9XG5cdFx0fVxuXHRcdEV4dGVybmFsU2VydmljZS5hbGxJbnN0YW5jZXMucHVzaCh0aGlzKTtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHQ7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblx0XG5cdGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHN1cGVyLmluaXQoKTtcblx0fVxuXG5cdGFzeW5jIHJlcXVlc3RFeHRlcm5hbENhbGwoe2lkLHJlcXVlc3ROYW1lLHJlcXVlc3REYXRhfTp7aWQ6c3RyaW5nLHJlcXVlc3ROYW1lOnN0cmluZyxyZXF1ZXN0RGF0YTphbnl9KTpQcm9taXNlPGFueXxJRXJyb3I+e1xuXHRcdC8vMS4gcHJlcGFyZSBkYXRhXG5cdFx0Y29uc3QgZW5jcnlwdGVkID0gdGhpcy5lbmNyeXB0KHtyZXF1ZXN0TmFtZSxyZXF1ZXN0RGF0YX0pO1xuXHRcdGlmKHRoaXMub3B0aW9ucy51cmwuZW5kc1dpdGgoXCIvXCIpKVxuXHRcdFx0dGhpcy5vcHRpb25zLnVybCA9IHRoaXMub3B0aW9ucy51cmwuc3Vic3RyaW5nKDAsdGhpcy5vcHRpb25zLnVybC5sZW5ndGgtMSlcblx0XHR0cnl7XG5cdFx0XHRjb25zdCByZXNwID0gYXdhaXQgYXhpb3MucG9zdCh0aGlzLm9wdGlvbnMudXJsK1wiL2V4dGVybmFsL2NhbGwvXCIrdGhpcy5vcHRpb25zLmlkLGVuY3J5cHRlZC5kYXRhLHtcblx0XHRcdFx0aGVhZGVyczp7XG5cdFx0XHRcdFx0XCJhdXRob3JpemF0aW9uXCI6ZW5jcnlwdGVkLmF1dGhvcml6YXRpb24sXG5cdFx0XHRcdFx0XCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIixcblx0XHRcdFx0XHRcIkFjY2VwdFwiOlwiYXBwbGljYXRpb24vanNvblwiXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHRjb25zdCBkYXRhID0gcmVzcC5kYXRhO1xuXHRcdFx0aWYodHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIgJiYgXCJlcnJvclwiIGluIGRhdGEpXG5cdFx0XHRcdHJldHVybiBkYXRhLmVycm9yO1xuXHRcdFx0aWYodHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIgJiYgXCJkYXRhXCIgaW4gZGF0YSlcblx0XHRcdFx0cmV0dXJuIGRhdGEuZGF0YTtcblxuXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9Y2F0Y2goZTphbnkpe1xuXHRcdFx0Y29uc3QgZXJyID0gZSBhcyBBeGlvc0Vycm9yO1xuXHRcdFx0XG5cdFx0XHRpZihlcnIucmVzcG9uc2UgJiYgZXJyLnJlc3BvbnNlLmRhdGEpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiRXh0ZXJuYWxTZXJ2aWNlLnJlcXVlc3RFeHRlcm5hbENhbGxcIixlcnIucmVzcG9uc2UuZGF0YSlcblx0XHRcdGVsc2Vcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIkV4dGVybmFsU2VydmljZS5yZXF1ZXN0RXh0ZXJuYWxDYWxsXCIsZXJyLmNhdXNlKVxuXG5cdFx0XHRpZihlcnIucmVzcG9uc2Upe1xuXHRcdFx0XHQvLyBoYW5kbGUgcmVzcG9uc2Vcblx0XHRcdFx0aWYoZXJyLnJlc3BvbnNlLmRhdGEgJiYgdHlwZW9mIGVyci5yZXNwb25zZS5kYXRhID09PVwib2JqZWN0XCIgJiYgXCJlcnJvclwiIGluIGVyci5yZXNwb25zZS5kYXRhKVxuXHRcdFx0XHRcdHJldHVybiBlcnIucmVzcG9uc2UuZGF0YS5lcnJvcjtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7Li4uRGVmYXVsdEVycm9ycy5CQURfUkVRVUVTVCxkZXRhaWxzOmVyci5jYXVzZT8ubWVzc2FnZX07XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgb25FeHRlcm5hbENhbGwocmVxOkhUVFBSZXF1ZXN0Vk8pOlByb21pc2U8VHJhbnNmZXJQYWNrZXRWTz57XG5cblx0XHQvLzEuIGNoZWNrIGF1dGhvcml6YXRpb25cblx0XHRjb25zdCBkYXRhID0gdGhpcy5kZWNyeXB0KHJlcSk7XG5cblx0XHRpZighZGF0YSlcblx0XHRcdHJldHVybiB7ZXJyb3I6ey4uLkRlZmF1bHRFcnJvcnMuQkFEX1JFUVVFU1QsZGV0YWlsczpcIm5vIGRhdGFcIn19O1xuXG5cdFx0aWYoIVZhbGlkYXRvci52YWxpZGF0ZU9iamVjdChbJ3JlcXVlc3ROYW1lJywncmVxdWVzdERhdGEnXSxkYXRhKSlcblx0XHRcdHJldHVybiB7ZXJyb3I6ey4uLkRlZmF1bHRFcnJvcnMuQkFEX1JFUVVFU1QsZGV0YWlsczpcInJlcXVlc3ROYW1lIGFuZCByZXF1ZXN0RGF0YSByZXF1aXJlZFwifX07XG5cblx0XHQvLzIuIGZpbmQgcmVxdWVzdFxuXHRcdGZvcihsZXQgciBvZiB0aGlzLm9wdGlvbnMucmVxdWVzdHMpe1xuXHRcdFx0aWYoci5uYW1lID09PSBkYXRhLnJlcXVlc3ROYW1lKXtcblx0XHRcdFx0Ly8zLiBjYWxsIHJlcXVlc3Rcblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPWF3YWl0IHIucmVxdWVzdChkYXRhLnJlcXVlc3REYXRhKTtcblx0XHRcdFx0aWYoRXJyb3JVdGlscy5pc0Vycm9yKHJlc3BvbnNlKSlcblx0XHRcdFx0XHRyZXR1cm4ge2Vycm9yOnJlc3BvbnNlfTtcblx0XHRcdFx0cmV0dXJuIHtkYXRhOnJlc3BvbnNlfTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4ge2Vycm9yOnsuLi5EZWZhdWx0RXJyb3JzLkJBRF9SRVFVRVNULGRldGFpbHM6XCJubyByZXF1ZXN0IGZvdW5kXCJ9fTtcblxuXHR9XG5cblx0ZGVjcnlwdChyZXE6SFRUUFJlcXVlc3RWTyk6YW55e1xuXG5cdFx0aWYoIVZhbGlkYXRvci52YWxpZGF0ZU9iamVjdChbJ2NkYXRhJywna2V5J10scmVxLmRhdGEpKVxuXHRcdFx0cmV0dXJuIHtlcnJvcjp7Li4uRGVmYXVsdEVycm9ycy5CQURfUkVRVUVTVCxkZXRhaWxzOlwiY2RhdGEgb3Iga2V5IGlzIG1pc3NpbmdcIn19XG5cdCAgXG5cdFx0aWYoIXJlcS5kYXRhLmNkYXRhIHx8IHJlcS5kYXRhLmNkYXRhLmxlbmd0aDwxKVxuXHRcdFx0cmV0dXJuIHtlcnJvcjp7Li4uRGVmYXVsdEVycm9ycy5CQURfUkVRVUVTVCxkZXRhaWxzOlwiY2RhdGEgaXMgZW1wdHlcIn19XG5cdCAgXG5cdFx0aWYodHlwZW9mIHJlcS5kYXRhLmNkYXRhICE9PSBcInN0cmluZ1wiKVxuXHRcdFx0cmV0dXJuIHtlcnJvcjp7Li4uRGVmYXVsdEVycm9ycy5CQURfUkVRVUVTVCxkZXRhaWxzOlwiY2RhdGEgaXMgbm90IGEgc3RyaW5nXCJ9fVxuXHQgIFxuXHRcdC8vIGNvbnN0IHNlY3J1cml0eVxuXHRcdGlmKCFyZXEuaGVhZGVycyB8fCAhcmVxLmhlYWRlcnNbJ2F1dGhvcml6YXRpb24nXSlcblx0XHRcdHJldHVybiB7ZXJyb3I6ey4uLkRlZmF1bHRFcnJvcnMuQkFEX1JFUVVFU1QsZGV0YWlsczpcIm5vIGF1dGhvcml6YXRpb24gaGVhZGVyXCJ9fVxuXHQgIFxuXHRcdC8vIGNoZWNrIGF1dGhvcml6YXRpb25cblx0XHRsZXQgaGVhZGVyID0gcmVxLmhlYWRlcnNbJ2F1dGhvcml6YXRpb24nXS5zcGxpdChcIiBcIikucG9wKCk7XG5cdFx0Y29uc3QgaGFzaCA9IFVJRC5zaGEyNTYodGhpcy5vcHRpb25zLmxvY2FsU2VjdXJpdHlUb2tlbityZXEuZGF0YS5jZGF0YSk7XG5cdFx0aWYoaGFzaCAhPT0gaGVhZGVyKVxuXHRcdFx0cmV0dXJuIHtlcnJvcjp7Li4uRGVmYXVsdEVycm9ycy5CQURfUkVRVUVTVCxkZXRhaWxzOlwid3JvbmcgYXV0aG9yaXphdGlvbiB0b2tlblwifX1cblx0XG5cdFx0Y29uc3QgaXZfYWVzS2V5ID0gY3J5cHRvLnByaXZhdGVEZWNyeXB0KFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6dGhpcy5vcHRpb25zLnByaXZhdGVLZXksXG5cdFx0XHRcdHBhZGRpbmc6Y3J5cHRvLmNvbnN0YW50cy5SU0FfUEtDUzFfT0FFUF9QQURESU5HXG5cdFx0XHR9LFxuXHRcdFx0QnVmZmVyLmZyb20ocmVxLmRhdGEua2V5LCdiYXNlNjQnKSBhcyBhbnlcblx0XHQpXG5cdFxuXHRcdGNvbnN0IGl2ID0gaXZfYWVzS2V5LnN1YmFycmF5KDAsMTYpXG5cdFx0Y29uc3Qga2V5ID0gaXZfYWVzS2V5LnN1YmFycmF5KDE2KTtcblx0XG5cdFx0Y29uc3QgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdihcImFlcy0xOTItY2JjXCIsIGtleSBhcyBhbnksIGl2IGFzIGFueSk7XG5cdFx0bGV0IGRlY3J5cHRlZCA9IGRlY2lwaGVyLnVwZGF0ZShyZXEuZGF0YS5jZGF0YSwgXCJiYXNlNjRcIiwgXCJ1dGY4XCIpO1xuXHRcdGRlY3J5cHRlZCArPSBkZWNpcGhlci5maW5hbChcInV0ZjhcIik7XG5cdFx0bGV0IGRhdGEgPSBudWxsO1xuXHRcdFxuXHRcdHRyeXtcblx0XHRcdGRhdGEgPSBKU09OLnBhcnNlKGRlY3J5cHRlZCk7XG5cdFx0fWNhdGNoKGUpe1xuXHRcdFx0cmV0dXJuIHtlcnJvcjp7Li4uRGVmYXVsdEVycm9ycy5CQURfUkVRVUVTVCxkZXRhaWxzOlwid3JvbmcganNvbjogXCIrZGVjcnlwdGVkLnN1YnN0cmluZygwLDEwMCl9fVxuXHRcdH1cblx0XG5cdFx0aWYoIWRhdGEpXG5cdFx0XHRyZXR1cm4ge2Vycm9yOnsuLi5EZWZhdWx0RXJyb3JzLkJBRF9SRVFVRVNULGRldGFpbHM6XCJubyBkYXRhXCJ9fVxuXHRcblx0XHRyZXR1cm4gZGF0YTtcblx0ICBcblx0fVxuXG5cblx0ZW5jcnlwdChyZXE6IGFueSk6IHthdXRob3JpemF0aW9uOnN0cmluZyxkYXRhOmFueX0ge1xuXG5cdFx0Y29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHJlcSk7XG5cdFx0Y29uc3QgcGFzc3dvcmQgPSBcIlVEaEZVUkVRUm0xSU40QUNSdUg1XCJcblx0XHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7IC8vIDE2IGJ5dGVzICgxMjggYml0cyk7IGNhbiBhbHNvIHVzZSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpXG5cdFx0Y29uc3Qgc2FsdCA9IFwiMmI4ODY5ZjEyZGQ5ZDU2MlwiOyAvLyA4IGJ5dGVzOyBjYW4gYWxzbyB1c2UgY3J5cHRvLnJhbmRvbUJ5dGVzKDgpXG5cdFx0Y29uc3Qga2V5ID0gY3J5cHRvLnBia2RmMlN5bmMocGFzc3dvcmQsIEJ1ZmZlci5mcm9tKHNhbHQsIFwiaGV4XCIpIGFzIGFueSwgMTAwMCwgMjQsIFwic2hhMVwiKTtcblx0XHRjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoXCJhZXMtMTkyLWNiY1wiLCBrZXkgYXMgYW55LCBpdiBhcyBhbnkpO1xuXHRcdGxldCBlbmNyeXB0ZWQgPSBjaXBoZXIudXBkYXRlKGRhdGEsIFwidXRmOFwiLCBcImJhc2U2NFwiKTtcblx0XHRlbmNyeXB0ZWQgKz0gY2lwaGVyLmZpbmFsKFwiYmFzZTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGNvbmNhdGVuYXRlZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2l2IGFzIGFueSwga2V5IGFzIGFueV0pO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRLZXkgPSBjcnlwdG8ucHVibGljRW5jcnlwdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6dGhpcy5vcHRpb25zLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOmNyeXB0by5jb25zdGFudHMuUlNBX1BLQ1MxX09BRVBfUEFERElOR1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmNhdGVuYXRlZEJ1ZmZlciBhcyBhbnlcbiAgICAgICAgKS50b1N0cmluZyhcImJhc2U2NFwiKTtcblxuXG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFBhY2tldCA9IHtcbiAgICAgICAgICAgIGtleTogZW5jcnlwdGVkS2V5LFxuICAgICAgICAgICAgY2RhdGE6IGVuY3J5cHRlZFxuICAgICAgICB9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YXV0aG9yaXphdGlvbjpVSUQuc2hhMjU2KHRoaXMub3B0aW9ucy5sb2NhbFNlY3VyaXR5VG9rZW4rZW5jcnlwdGVkUGFja2V0LmNkYXRhKSxcblx0XHRcdGRhdGE6ZW5jcnlwdGVkUGFja2V0XG5cdFx0fVxuXHR9XG5cdFxufSJdfQ==
@@ -19,4 +19,3 @@ class ExternalServiceEndpoint extends BaseEndpoint_1.BaseEndpoint {
19
19
  }
20
20
  }
21
21
  exports.ExternalServiceEndpoint = ExternalServiceEndpoint;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0ZXJuYWxTZXJ2aWNlRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpU2VydmVyL2V4dGVybmFsL0V4dGVybmFsU2VydmljZUVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUErQztBQUMvQywrREFBeUQ7QUFFekQsdURBQTJDO0FBRTNDLE1BQWEsdUJBQXdCLFNBQVEsMkJBQVk7SUFDckQ7UUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25CLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxJQUFJLEVBQUM7U0FDcEUsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBaUI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFHLDBCQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN6QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQWdCLEVBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQTBCLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBZEQsMERBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRW5kcG9pbnQgfSBmcm9tIFwiLi4vQmFzZUVuZHBvaW50XCI7XG5pbXBvcnQgeyBFcnJvclV0aWxzIH0gZnJvbSBcIi4uL3N0cnVjdHVyZXMvRGVmYXVsdEVycm9yc1wiO1xuaW1wb3J0IHsgSFRUUFJlcXVlc3RWTywgSUVycm9yLCBUcmFuc2ZlclBhY2tldFZPIH0gZnJvbSBcIi4uL3N0cnVjdHVyZXMvSW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUkVRX1hUIH0gZnJvbSBcIi4vRXh0ZXJuYWxTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFNlcnZpY2VFbmRwb2ludCBleHRlbmRzIEJhc2VFbmRwb2ludCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiZXh0ZXJuYWxcIik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFbmRwb2ludHMoW1xuICAgICAgICAgICAge2VuZHBvaW50OlwiY2FsbC86aWRcIixoYW5kbGVyOnRoaXMuaGFuZGxlcixpZ25vcmVJbnRlcmNlcHRvcjp0cnVlfVxuICAgICAgICBdKVxuICAgIH1cblxuICAgIGFzeW5jIGhhbmRsZXIocmVxOkhUVFBSZXF1ZXN0Vk8pOlByb21pc2U8VHJhbnNmZXJQYWNrZXRWTz57XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJFUV9YVC5yZXF1ZXN0KHtpZDpyZXEucGFyYW1zLmlkLHJlcTpyZXF9KTtcbiAgICAgICAgaWYoRXJyb3JVdGlscy5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICAgICAgICByZXR1cm4ge2Vycm9yOnJlc3VsdCBhcyBJRXJyb3J9O1xuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFRyYW5zZmVyUGFja2V0Vk87XG4gICAgfVxufSJdfQ==
@@ -59,4 +59,3 @@ class DataProvider {
59
59
  }
60
60
  }
61
61
  exports.DataProvider = DataProvider;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaVNlcnZlci9oZWxwZXIvRGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9FQUFvQztBQU1wQyxNQUFhLFlBQVk7SUFDYixNQUFNLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztJQUNoQixJQUFJLENBQVM7SUFDYixJQUFJLEdBQUMsS0FBSyxDQUFDO0lBQ1gsZUFBZSxHQUFDLENBQUMsQ0FBQztJQUNsQixTQUFTLEdBQUMsSUFBSSxHQUFDLEVBQUUsR0FBQyxDQUFDLENBQUE7SUFDbkIsSUFBSSxDQUFrQjtJQUN0QixTQUFTLEdBQUMsSUFBSSx3QkFBTSxFQUFPLENBQUE7SUFDM0IsUUFBUSxHQUFTLEtBQUssQ0FBQztJQUV2QixRQUFRLENBQW9EO0lBUXBFLFlBQVksUUFBNEQsRUFBQyxTQUFpQixFQUFDLElBQVk7UUFDbkcsSUFBSSxDQUFDLFFBQVEsR0FBQyxRQUFRLENBQUM7UUFDdkIsSUFBRyxTQUFTLEtBQUcsU0FBUztZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlCLElBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUM7UUFDckIsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBQyxlQUFlLEdBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDYixJQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1IsT0FBTztRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUMsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBTTtRQUNkLElBQUcsSUFBSSxDQUFDLElBQUk7WUFDUixPQUFPO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBRVQsSUFBRyxJQUFJLENBQUMsSUFBSTtZQUNSLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLEVBQUUsQ0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUEsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVuRixJQUFHLElBQUksQ0FBQyxlQUFlLEdBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBQztZQUV4QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDbEQsSUFBRyxJQUFJLEdBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBQyxLQUFLLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUE7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7O0FBbEVMLG9DQW9FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTaWduYWwgZnJvbSBcImJhZG1mY2stc2lnbmFsXCI7XG5cbi8qKlxuICogRGF0YVByb3ZpZGVyIFxuICogZ2F0aGVyaW5nIGRhdGEgdGhyb3VnaHQgZXhlY3V0b3IgYW5kIGhhbmRsZSBkdXBsaWNhdGUgcmVxdWVzdHNcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFQcm92aWRlcjxUPntcbiAgICBwcml2YXRlIHN0YXRpYyBuZXh0SUQ9MTtcbiAgICBwcml2YXRlIG5hbWU/OnN0cmluZztcbiAgICBwcml2YXRlIGJ1c3k9ZmFsc2U7XG4gICAgcHJpdmF0ZSBsYXN0UmVxdWVzdFRpbWU9MDtcbiAgICBwcml2YXRlIGNhY2hlVGltZT0xMDAwKjYwKjVcbiAgICBwcml2YXRlIGRhdGE6VHx1bmRlZmluZWR8bnVsbDtcbiAgICBwcml2YXRlIGNhbGxiYWNrcz1uZXcgU2lnbmFsPGFueT4oKVxuICAgIHByaXZhdGUgd2FzRXJyb3I6Ym9vbGVhbj1mYWxzZTtcblxuICAgIHByaXZhdGUgZXhlY3V0b3I6KCk9PlByb21pc2U8e2RhdGE6VHxudWxsfHVuZGVmaW5lZCxlcnJvcj86Ym9vbGVhbn0+XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZXhlY3V0b3IgRXhlY3V0ZSBwcm9jZWR1cmUgc3RvcmVkIGluIGV4ZWN1dG9yLCB3aGVuIG5lZWQgdG8gZ2V0IGRhdGFcbiAgICAgKiBAcGFyYW0gY2FjaGVUaW1lIGNhY2hlIGludGVydmFsXG4gICAgICogQHBhcmFtIG5hbWUgRGF0YVByb3ZpZGVyIG5hbWUgKGRlYnVnZ2luZylcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihleGVjdXRvcjooKT0+UHJvbWlzZTx7ZGF0YTpUfG51bGx8dW5kZWZpbmVkLGVycm9yPzpib29sZWFufT4sY2FjaGVUaW1lPzpudW1iZXIsbmFtZT86c3RyaW5nKXtcbiAgICAgICAgdGhpcy5leGVjdXRvcj1leGVjdXRvcjtcbiAgICAgICAgaWYoY2FjaGVUaW1lIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5jYWNoZVRpbWU9K2NhY2hlVGltZTtcbiAgICAgICAgaWYoaXNOYU4odGhpcy5jYWNoZVRpbWUpKVxuICAgICAgICAgICAgdGhpcy5jYWNoZVRpbWU9MDtcbiAgICAgICAgaWYoIXRoaXMubmFtZSlcbiAgICAgICAgICAgIHRoaXMubmFtZT1cIkRhdGFQcm92aWRlciBcIisoRGF0YVByb3ZpZGVyLm5leHRJRCsrKVxuICAgIH1cblxuICAgIGFzeW5jIGZvcmNlVXBkYXRlKCl7XG4gICAgICAgIGlmKHRoaXMuYnVzeSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy53YXNFcnJvcj1mYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0UmVxdWVzdFRpbWU9MDtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhKClcbiAgICB9XG5cbiAgICBsb2NhbFVwZGF0ZShkYXRhOlQpe1xuICAgICAgICBpZih0aGlzLmJ1c3kpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMud2FzRXJyb3I9ZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdFJlcXVlc3RUaW1lPStuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RGF0YSgpOlByb21pc2U8VHxudWxsfHVuZGVmaW5lZD57XG5cbiAgICAgICAgaWYodGhpcy5idXN5KVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9PnRoaXMuY2FsbGJhY2tzLnN1YnNjcmliZSgoZCk9PnJlc29sdmUoZCkpKVxuICAgICAgICBcbiAgICAgICAgaWYodGhpcy5sYXN0UmVxdWVzdFRpbWU+MCAmJiAhdGhpcy53YXNFcnJvcil7XG4gICAgICAgICAgICAvLyBjaGVjayBjYWNoZXRpbWVcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSAoK25ldyBEYXRlKCkpIC0gdGhpcy5sYXN0UmVxdWVzdFRpbWU7XG4gICAgICAgICAgICBpZihkaWZmPHRoaXMuY2FjaGVUaW1lKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGE7IC8vIHJldHVybiBjYWNoZWQgdmFsdWVcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVzeT10cnVlO1xuICAgICAgICB0aGlzLndhc0Vycm9yPWZhbHNlO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmV4ZWN1dG9yKCk7XG4gICAgICAgIHRoaXMuYnVzeT1mYWxzZTtcbiAgICAgICAgdGhpcy53YXNFcnJvcj1yZXMuZXJyb3IgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YT1yZXMuZGF0YVxuICAgICAgICB0aGlzLmxhc3RSZXF1ZXN0VGltZT0rbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5jYWxsYmFja3MuaW52b2tlKHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tzLnJlbW92ZUFsbCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH1cbiAgICBcbn0iXX0=
@@ -3,4 +3,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sleep = void 0;
4
4
  const Sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
5
5
  exports.Sleep = Sleep;
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xlZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpU2VydmVyL2hlbHBlci9TbGVlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBTyxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBeEUsUUFBQSxLQUFLLFNBQW1FIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNsZWVwID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpOyJdfQ==
@@ -73,4 +73,3 @@ class UID {
73
73
  }
74
74
  }
75
75
  exports.UID = UID;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVUlELmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaVNlcnZlci9oZWxwZXIvVUlELnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUEyQjtBQUMzQixNQUFhLEdBQUc7SUFDSixNQUFNLENBQVUsS0FBSyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxNQUFNLENBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsZUFBZSxHQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsUUFBUTtRQUNYLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLFFBQVEsQ0FDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztjQUN6QixFQUFFO2NBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsSUFBSSxDQUFDLENBQ2xDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6QyxHQUFHLEdBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUIsR0FBRyxHQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLEdBQUcsR0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUUzQixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBWTtRQUN4QyxJQUFJLElBQUksR0FBQyxFQUFFLENBQUM7UUFDWixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsS0FBSyxFQUFDLENBQUMsRUFBRTtZQUNuQixJQUFJLElBQUUsSUFB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UUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxHQUFHLEdBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUIsR0FBRyxHQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLEdBQUcsR0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQVE7UUFDcEIsT0FBTyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7O0FBeEZMLGtCQXlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiXG5leHBvcnQgY2xhc3MgVUlEe1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGVwb2NoID0gMTY5NzAzNzkyMjY2ODtcbiAgICBwcml2YXRlIHN0YXRpYyBuZXh0VW5pcXVlSUQ9MTtcbiAgICBwcml2YXRlIHN0YXRpYyBuZXh0VW5pcXVlVFJYSUQ9MTtcbiAgICBzdGF0aWMgZ2VuZXJhdGUoKTpzdHJpbmd7XG4gICAgICAgIGxldCB1aWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgIHBhcnNlSW50KFxuICAgICAgICAgICAgKCgrbmV3IERhdGUoKSktdGhpcy5lcG9jaClcbiAgICAgICAgICAgICtcIlwiXG4gICAgICAgICAgICArTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDApXG4gICAgICAgICkudG9TdHJpbmcoMTYpLCdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbiAgICAgICAgdWlkPXVpZC5yZXBsYWNlQWxsKFwiPVwiLFwiXCIpXG4gICAgICAgIHVpZD11aWQucmVwbGFjZUFsbChcIitcIixcIi5cIilcbiAgICAgICAgdWlkPXVpZC5yZXBsYWNlQWxsKFwiL1wiLFwiX1wiKVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHVpZDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2VuZXJhdGVSYW5kb21OdW1iZXJCYXNlKGNvdW50Om51bWJlcik6c3RyaW5ne1xuICAgICAgICBsZXQgYmFzZT1cIlwiO1xuICAgICAgICBmb3IobGV0IGk9MDtpPGNvdW50O2krKylcbiAgICAgICAgICAgIGJhc2UrPU1hdGgucm91bmQoTWF0aC5yYW5kb20oKSo5KTtcbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxuXG4gICAgc3RhdGljIGdlbmVyYXRlTnVtYmVyaWMoeWVhcj86c3RyaW5nKTpudW1iZXJ7XG4gICAgICAgIGlmKCF5ZWFyKVxuICAgICAgICAgICAgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKStcIlwiO1xuICAgICAgICBjb25zdCBuZXh0SUQ9VUlELm5leHRVbmlxdWVJRCsrO1xuICAgICAgICBpZihVSUQubmV4dFVuaXF1ZUlEPjk5KVxuICAgICAgICAgICAgVUlELm5leHRVbmlxdWVJRCA9IDFcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHllYXIuc3Vic3RyaW5nKDIpK1wiXCIrKCtuZXcgRGF0ZSgpIC0gdGhpcy5lcG9jaCkrXCJcIisobmV4dElEK1wiXCIpLnBhZFN0YXJ0KDIsXCIwXCIpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0TmV4dERlc2NlbmRpbmdJbmRleCgpOm51bWJlcntcbiAgICAgICAgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIC0gKCtuZXcgRGF0ZSgpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0TmV4dCgpOnN0cmluZ3tcbiAgICAgICAgY29uc3QgbmV4dElEPVVJRC5uZXh0VW5pcXVlSUQrKztcbiAgICAgICAgaWYoVUlELm5leHRVbmlxdWVJRD45OSlcbiAgICAgICAgICAgIFVJRC5uZXh0VW5pcXVlSUQgPSAxXG4gICAgICAgIHJldHVybiB0aGlzLmxlYWRaZXJvKG5leHRJRClcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGdldE5leHRUUlgoKTpzdHJpbmd7XG4gICAgICAgIGNvbnN0IG5leHRJRD1VSUQubmV4dFVuaXF1ZVRSWElEKys7XG4gICAgICAgIGlmKFVJRC5uZXh0VW5pcXVlVFJYSUQ+OTkpXG4gICAgICAgICAgICBVSUQubmV4dFVuaXF1ZVRSWElEID0gMVxuICAgICAgICByZXR1cm4gdGhpcy5sZWFkWmVybyhuZXh0SUQpXG4gICAgfVxuXG4gIFxuXG4gICAgc3RhdGljIGdlbmVyYXRlVHJ4VUlEKGRhdGU/OkRhdGUpe1xuICAgICAgICBcbiAgICAgICAgaWYoIWRhdGUpXG4gICAgICAgICAgICBkYXRlPW5ldyBEYXRlKCk7XG5cbiAgICAgICAgY29uc3QgeWVhciA9IChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkrXCJcIikuc3Vic3RyaW5nKDIpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gKGRhdGUuZ2V0SG91cnMoKSAqIDM2MDAgKyBkYXRlLmdldE1pbnV0ZXMoKSAqIDYwICsgZGF0ZS5nZXRTZWNvbmRzKCkpK1wiXCI7XG5cbiAgICAgICAgY29uc3Qgc3RyPXllYXJcbiAgICAgICAgICAgICt0aGlzLmxlYWRaZXJvKGRhdGUuZ2V0TW9udGgoKSsxKVxuICAgICAgICAgICAgK3RoaXMubGVhZFplcm8oZGF0ZS5nZXREYXRlKCkpXG4gICAgICAgICAgICArc2Vjb25kcy5wYWRTdGFydCg1LFwiMFwiKVxuICAgICAgICAgICAgK3RoaXMuZ2V0TmV4dFRSWCgpXG5cbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0cik7XG4gICAgICAgICAgICBcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaGEyNTYoc3RyOnN0cmluZyxub2NoYW5nZXM/OmJvb2xlYW4pOnN0cmluZ3tcbiAgICAgICAgXG4gICAgICAgIGlmKG5vY2hhbmdlcylcbiAgICAgICAgICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoc3RyKS5kaWdlc3QoXCJoZXhcIik7XG5cbiAgICAgICAgbGV0IHVpZCA9IGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShzdHIpLmRpZ2VzdChcImJhc2U2NFwiKTtcbiAgICAgICAgdWlkPXVpZC5yZXBsYWNlQWxsKFwiPVwiLFwiXCIpXG4gICAgICAgIHVpZD11aWQucmVwbGFjZUFsbChcIitcIixcIi5cIilcbiAgICAgICAgdWlkPXVpZC5yZXBsYWNlQWxsKFwiL1wiLFwiLVwiKVxuICAgICAgICByZXR1cm4gdWlkO1xuICAgIH1cblxuICAgIHN0YXRpYyBsZWFkWmVybyhpOm51bWJlcik6c3RyaW5ne1xuICAgICAgICByZXR1cm4gKGkrXCJcIikucGFkU3RhcnQoMixcIjBcIilcbiAgICB9XG59Il19
@@ -99,4 +99,3 @@ class Validator {
99
99
  }
100
100
  }
101
101
  exports.Validator = Validator;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaVNlcnZlci9oZWxwZXIvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSxJQUFZLGdCQU9YO0FBUEQsV0FBWSxnQkFBZ0I7SUFDeEIsbURBQUksQ0FBQTtJQUNKLHlFQUFlLENBQUE7SUFDZiwyRUFBZ0IsQ0FBQTtJQUNoQix5RUFBZSxDQUFBO0lBQ2YsNkVBQWlCLENBQUE7SUFDakIsNkVBQWlCLENBQUE7QUFDckIsQ0FBQyxFQVBXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBTzNCO0FBRUQsTUFBYSxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBZSxFQUFDLE1BQVU7UUFDNUMsSUFBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBRyxRQUFRO1lBQ2xDLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLEtBQUksSUFBSSxDQUFDLElBQUksTUFBTSxFQUFDO1lBQ2hCLElBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUcsU0FBUztnQkFDdEMsT0FBTyxLQUFLLENBQUM7U0FDcEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBSSxLQUFTLEVBQUMsSUFBdUM7UUFDckUsSUFBRyxLQUFLLEtBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1FBRWhCLElBQUcsSUFBSSxLQUFHLFFBQVEsRUFBQztZQUNmLElBQUcsT0FBTyxLQUFLLEtBQUksUUFBUSxFQUFDO2dCQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUE7Z0JBQ2pCLElBQUc7b0JBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQUM7Z0JBQUEsT0FBTSxDQUFDLEVB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QUFnQixDQUFDLGVBQWUsQ0FBQTtRQUUzQyxJQUFHLEdBQUcsQ0FBQyxJQUFJLEtBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQztZQUNoQyxHQUFHLENBQUMsS0FBSyxHQUFHLG1DQUFtQyxDQUFDO1NBQ25EO1FBRUQsSUFBRyxHQUFHLENBQUMsS0FBSyxFQUFDO1lBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDMUgsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsSUFBRyxHQUFHLENBQUMsTUFBTSxLQUFHLENBQUM7Z0JBQ2IsT0FBTyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUE7U0FDOUM7UUFJRCxPQUFPLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0o7QUExR0QsOEJBMEdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVFZhbGlkYXRvclR5cGU9XCJzdHJpbmdcInxcIm51bWJlclwifFwiYm9vbGVhblwifFwiZGF0ZVwifFwiYXJyYXlcInxcIm9iamVjdFwifFwiZW1haWxcInxcInBob25lXCJcblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdG9yT3B0aW9uc3tcbiAgICBtaW4/Om51bWJlcixcbiAgICBtYXg/Om51bWJlcixcbiAgICB0eXBlPzpUVmFsaWRhdG9yVHlwZSxcbiAgICByZWdleD86UmVnRXhwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYW90clR5cGV7XG4gICAgbmFtZTpzdHJpbmcsXG4gICAgdHlwZTpUVmFsaWRhdG9yVHlwZVxuICAgIG9wdGlvbmFsPzpib29sZWFuLFxuICAgIGFycmF5VHlwZT86SVZhbGlkYW90clR5cGUsXG59XG5cbmV4cG9ydCBlbnVtIFZhbGlkYXRpb25SZXBvcnR7XG4gICAgT0s9MSxcbiAgICBWQUxVRV9JU19OVUxMPTIsXG4gICAgVFlQRV9NSVNTTUFUQ0g9MyxcbiAgICBWQUxVRV9UT09fQklHPTQsXG4gICAgVkFMVUVfVE9PX1NIT1JUPTUsXG4gICAgVkFMVUVfSU5DT1JSRUNUPTZcbn1cblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvcntcblxuICAgIHN0YXRpYyB2YWxpZGF0ZU9iamVjdChmaWVsZHM6c3RyaW5nW10sb2JqZWN0OmFueSk6Ym9vbGVhbntcbiAgICAgICAgaWYoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0IT09XCJvYmplY3RcIilcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICBmb3IobGV0IGkgb2YgZmllbGRzKXtcbiAgICAgICAgICAgIGlmKCEoaSBpbiBvYmplY3QpIHx8IG9iamVjdFtpXT09PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc3RhdGljIGNvbnZlcnRUb1R5cGU8VD4odmFsdWU6YW55LHR5cGU6XCJzdHJpbmdcInxcIm51bWJlclwifFwiYm9vbGVhblwifFwiZGF0ZVwiKTpUfG51bGx7XG4gICAgICAgIGlmKHZhbHVlPT09bnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYodHlwZT09PVwic3RyaW5nXCIpe1xuICAgICAgICAgICAgaWYodHlwZW9mIHZhbHVlID09PVwib2JqZWN0XCIpe1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsXG4gICAgICAgICAgICAgICAgdHJ5eyByZXN1bHQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7fWNhdGNoKGUpe31cbiAgICAgICAgICAgICAgICBpZihyZXN1bHQhPT1udWxsKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZStcIlwiIGFzIFRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGU9PT1cImJvb2xlYW5cIil7XG4gICAgICAgICAgICBpZih0eXBlb2YgdmFsdWU9PT1cImJvb2xlYW5cIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgYXMgVFxuICAgICAgICAgICAgaWYodHlwZW9mIHZhbHVlPT09XCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU+MCBhcyBUXG4gICAgICAgICAgICBpZih0eXBlb2YgdmFsdWU9PT1cIm9iamVjdFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZSBhcyBUXG4gICAgICAgICAgICBpZih0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZS50b0xvd2VyQ2FzZSgpPT09XCJ0cnVlXCIpIGFzIFRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGU9PT1cImRhdGVcIil7XG4gICAgICAgICAgICBpZih0eXBlb2YgdmFsdWU9PT1cInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZT09PVwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKSBhcyBUXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG51bWJlclxuICAgICAgICBpZih0eXBlb2YgdmFsdWU9PT1cIm51bWJlclwiKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGFzIFRcblxuICAgICAgICBpZih0eXBlb2YgdmFsdWU9PT1cIm9iamVjdFwiKVxuICAgICAgICAgICAgcmV0dXJuIDAgYXMgVFxuXG4gICAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KHZhbHVlK1wiXCIpO1xuICAgICAgICByZXR1cm4gbnVtIGFzIFRcbiAgICB9XG5cbiAgICBzdGF0aWMgdmFsaWRhdGVWYWx1ZSh2YWx1ZTpzdHJpbmd8bnVtYmVyfGJvb2xlYW4sb3B0PzpJVmFsaWRhdG9yT3B0aW9ucyk6VmFsaWRhdGlvblJlcG9ydHtcbiAgICAgICAgaWYodmFsdWU9PT11bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdGlvblJlcG9ydC5WQUxVRV9JU19OVUxMO1xuICAgICAgICBpZighb3B0KVxuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRpb25SZXBvcnQuT0s7XG4gICAgICAgIFxuXG4gICAgICAgIGlmKCFvcHQudHlwZSlcbiAgICAgICAgICAgIG9wdC50eXBlPVwic3RyaW5nXCI7XG5cbiAgICAgICAgaWYob3B0LnR5cGU9PT1cImJvb2xlYW5cIil7XG4gICAgICAgICAgICBpZih0eXBlb2YgdmFsdWU9PT1cImJvb2xlYW5cIilcbiAgICAgICAgICAgICAgICByZXR1cm4gVmFsaWRhdGlvblJlcG9ydC5PSztcbiAgICAgICAgICAgIGlmKHR5cGVvZiB2YWx1ZSA9PT1cIm51bWJlclwiICYmICh2YWx1ZSA9PT0gMSB8fCB2YWx1ZSA9PT0gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRpb25SZXBvcnQuT0tcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0aW9uUmVwb3J0LlRZUEVfTUlTU01BVENIXG4gICAgICAgIH1cblxuICAgICAgICBpZihvcHQudHlwZSA9PT0gXCJudW1iZXJcIil7XG4gICAgICAgICAgICBpZih0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRpb25SZXBvcnQuVFlQRV9NSVNTTUFUQ0hcbiAgICAgICAgICAgIGlmKG9wdC5tYXggJiYgdmFsdWU+b3B0Lm1heClcbiAgICAgICAgICAgICAgICByZXR1cm4gVmFsaWRhdGlvblJlcG9ydC5WQUxVRV9UT09fQklHXG4gICAgICAgICAgICBpZihvcHQubWluICYmIHZhbHVlPG9wdC5taW4pXG4gICAgICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRpb25SZXBvcnQuVkFMVUVfVE9PX0JJR1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRpb25SZXBvcnQuT0s7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdGlvblJlcG9ydC5UWVBFX01JU1NNQVRDSFxuXG4gICAgICAgIGlmKG9wdC5tYXggJiYgdmFsdWUubGVuZ3RoPm9wdC5tYXgpXG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdGlvblJlcG9ydC5WQUxVRV9UT09fQklHXG5cbiAgICAgICAgaWYob3B0Lm1pbiAmJiB2YWx1ZS5sZW5ndGg8b3B0Lm1pbilcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0aW9uUmVwb3J0LlZBTFVFX1RPT19TSE9SVFxuXG4gICAgICAgIGlmKG9wdC50eXBlPT09XCJlbWFpbFwiICYmICFvcHQucmVnZXgpe1xuICAgICAgICAgICAgb3B0LnJlZ2V4ID0gL15bXFx3LVxcLl0rQChbXFx3LV0rXFwuKStbXFx3LV17Miw2fSQvZztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG9wdC5yZWdleCl7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxSZWdleCA9IG5ldyBSZWdFeHAob3B0LnJlZ2V4LnNvdXJjZSwgb3B0LnJlZ2V4LmZsYWdzLmluY2x1ZGVzKCdnJykgPyBvcHQucmVnZXguZmxhZ3MgOiBvcHQucmVnZXguZmxhZ3MgKyAnZycpO1xuICAgICAgICAgICAgY29uc3QgdG1wID0gdmFsdWUucmVwbGFjZUFsbChnbG9iYWxSZWdleCxcIlwiKTtcbiAgICAgICAgICAgIGlmKHRtcC5sZW5ndGghPT0wKVxuICAgICAgICAgICAgICAgIHJldHVybiBWYWxpZGF0aW9uUmVwb3J0LlZBTFVFX0lOQ09SUkVDVFxuICAgICAgICB9XG5cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gVmFsaWRhdGlvblJlcG9ydC5PSztcbiAgICB9XG59Il19
@@ -261,4 +261,3 @@ class Monitor extends BaseEndpoint_1.BaseEndpoint {
261
261
  }
262
262
  }
263
263
  exports.Monitor = Monitor;
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGlTZXJ2ZXIvbW9uaXRvci9Nb25pdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF3QztBQUN4Qyw4Q0FBNkM7QUFDN0Msa0RBQStDO0FBQy9DLDhDQUF3QztBQUV4QyxvREFBNEI7QUFDNUIsNENBQW1CO0FBb0JOLFFBQUEsMkJBQTJCLEdBQUMsSUFBSSx1QkFBTSxFQUFlLENBQUE7QUFFbEUsTUFBYSxPQUFRLFNBQVEsMkJBQVk7SUFFckMsaUJBQWlCLEdBQUMsSUFBSSxDQUFBO0lBRWQsWUFBWSxHQUFDLElBQUksR0FBRyxFQUFrQyxDQUFDO0lBQ3ZELFVBQVUsR0FBQyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUNyRCxXQUFXLEdBQUMsSUFBSSxHQUFHLEVBQXlDLENBQUM7SUFDN0QsaUJBQWlCLEdBQUMsQ0FBQyxDQUFDO0lBRTVCO1FBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXJCLG1DQUEyQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUEsRUFBRSxDQUFBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXhFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNuQixFQUFDLGlCQUFpQixFQUFDLElBQUksRUFBQyxRQUFRLEVBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFDO1lBQ3pELEVBQUMsaUJBQWlCLEVBQUMsSUFBSSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxNQUFNLEVBQUM7WUFDOUQsRUFBQyxpQkFBaUIsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQztZQUNoRSxFQUFDLGlCQUFpQixFQUFDLElBQUksRUFBQyxRQUFRLEVBQUMsYUFBYSxF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LENBQUMsaUJBQWlCO2dCQUN4QyxNQUFNLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDdkIsUUFBUSxFQUFDLFlBQUUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLElBQUksRUFBQyxNQUFNO2FBQ2QsRUFBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUE2QjtRQUN2QyxNQUFNLEdBQUcsR0FBQyxFQUFFLENBQUE7UUFDWixLQUFJLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDWixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtRQUNwQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FDSjtBQWpURCwwQkFpVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwgfSBmcm9tIFwiYmFkbWZjay1zaWduYWxcIjtcbmltcG9ydCB7IFJFUV9IVFRQX0xPRyB9IGZyb20gXCIuLi9BUElTZXJ2aWNlXCI7XG5pbXBvcnQgeyBCYXNlRW5kcG9pbnQgfSBmcm9tIFwiLi4vQmFzZUVuZHBvaW50XCI7XG5pbXBvcnQgeyBSRVFfTE9HIH0gZnJvbSBcIi4uL0xvZ1NlcnZpY2VcIjtcbmltcG9ydCB7IEhUVFBSZXF1ZXN0Vk8sIFRyYW5zZmVyUGFja2V0Vk8gfSBmcm9tIFwiLi4vc3RydWN0dXJlcy9JbnRlcmZhY2VzXCI7XG5pbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIlxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJBY3Rpb257XG4gICAgYWN0aW9uOnN0cmluZztcbn1cblxuaW50ZXJmYWNlIElTdGF0T2JqZWN0e1xuICAgIHJlcXVlc3RzOk1hcDxzdHJpbmcsbnVtYmVyPiwgLy9lcCwgY291bnRcbiAgICBlcnJvcnM6TWFwPHN0cmluZyxudW1iZXI+LCAvLyBlcCwgY291bnRcbiAgICBmYXRhbEVycm9yczpNYXA8c3RyaW5nLG51bWJlcj4sIC8vIGVwLCBjb3VudFxuICAgIGFwaUVycm9yczpNYXA8c3RyaW5nLG51bWJlcj4gLy8gZXAsY291bnRcbn1cblxuaW50ZXJmYWNlIElTeXN0ZW1TdGF0e1xuICAgIGNwdVVzYWdlOmFueSxcbiAgICBtZW1vcnlUb3RhbDpudW1iZXIsXG4gICAgbWVtb3J5VXNhZ2U6YW55LFxufVxuXG5leHBvcnQgY29uc3QgU19NT05JVE9SX1JFR0lTVFJBVEVfQUNUSU9OPW5ldyBTaWduYWw8SVVzZXJBY3Rpb24+KClcblxuZXhwb3J0IGNsYXNzIE1vbml0b3IgZXh0ZW5kcyBCYXNlRW5kcG9pbnR7XG5cbiAgICBpZ25vcmVIdHRwTG9nZ2luZz10cnVlXG4gICAgXG4gICAgcHJpdmF0ZSBodHRwUmVxdWVzdHM9bmV3IE1hcDxudW1iZXIsTWFwPHN0cmluZyxJU3RhdE9iamVjdD4+KCk7IC8vIGRheSBvZiB5ZWFyLGhvdXIsbWludXRlLCBjb3VudFxuICAgIHByaXZhdGUgc3lzdGVtU3RhdD1uZXcgTWFwPG51bWJlcixNYXA8c3RyaW5nLElTeXN0ZW1TdGF0Pj4oKTsgLy8gZGF5IG9mIHllYXIsaG91cixtaW51dGUsIGNvdW50XG4gICAgcHJpdmF0ZSB1c2VyQWN0aW9ucz1uZXcgTWFwPG51bWJlcixNYXA8c3RyaW5nLE1hcDxzdHJpbmcsbnVtYmVyPj4+KCk7IC8vIGRheSBvZiB5ZWFyLCBob3VyK21pbnV0ZSwgYWN0aW9uICwgY291bnRcbiAgICBwcml2YXRlIHJlZ2lzdGVyZWRBY3Rpb25zPTA7XG4gICAgXG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoXCJzeXMtbW9uaXRvclwiKTtcblxuICAgICAgICBTX01PTklUT1JfUkVHSVNUUkFURV9BQ1RJT04uc3Vic2NyaWJlKGRhdGE9PnRoaXMucmVnaXN0cmF0ZUFjdGlvbihkYXRhKSlcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRW5kcG9pbnRzKFtcbiAgICAgICAgICAgIHtpZ25vcmVJbnRlcmNlcHRvcjp0cnVlLGVuZHBvaW50OlwibG9nXCIsaGFuZGxlcjp0aGlzLmxvZ3N9LFxuICAgICAgICAgICAge2lnbm9yZUludGVyY2VwdG9yOnRydWUsZW5kcG9pbnQ6XCJuZXRsb2dcIixoYW5kbGVyOnRoaXMubmV0bG9nfSxcbiAgICAgICAgICAgIHtpZ25vcmVJbnRlcmNlcHRvcjp0cnVlLGVuZHBvaW50OlwibWV0cmljc1wiLGhhbmRsZXI6dGhpcy5tZXRyaWNzfSxcbiAgICAgICAgICAgIHtpZ25vcmVJbnRlcmNlcHRvcjp0cnVlLGVuZHBvaW50Olwic2VydmVyL3N0YXRcIixoYW5kbGVyOnRoaXMuc2VydmVyU3RhdH1cbiAgICAgICAgXSlcblxuICAgICAgICBzZXRJbnRlcnZhbCgoKT0+e1xuICAgICAgICAgICAgdGhpcy5hZGRTeXN0ZW1TdGF0KCk7XG4gICAgICAgIH0sMTAwMCo2MCoxMCk7XG4gICAgICAgIHRoaXMuYWRkU3lzdGVtU3RhdCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdHJhdGVBY3Rpb24oZGF0YTpJVXNlckFjdGlvbil7XG4gICAgICAgIGlmKCFkYXRhLmFjdGlvbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYodHlwZW9mIGRhdGEuYWN0aW9uIT09XCJzdHJpbmdcIilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYoZGF0YS5hY3Rpb24ubGVuZ3RoPjIwKVxuICAgICAgICAgICAgZGF0YS5hY3Rpb249ZGF0YS5hY3Rpb24uc3Vic3RyaW5nKDAsMjApO1xuXG4gICAgICAgIGNvbnN0IGQ9bmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZG95PXRoaXMuZ2V0RGF0ZUluZGV4KGQpO1xuICAgICAgICBsZXQgZGF5PXRoaXMudXNlckFjdGlvbnMuZ2V0KGRveSk7XG4gICAgICAgIFxuICAgICAgICBpZighZGF5KXtcbiAgICAgICAgICAgIGRheT1uZXcgTWFwKCk7IC8vIHN0cmluZyxudW1iZXJcbiAgICAgICAgICAgIHRoaXMudXNlckFjdGlvbnMuc2V0KGRveSxkYXkpO1xuICAgICAgICAgICAgaWYodGhpcy51c2VyQWN0aW9ucy5zaXplPjcpe1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaSBvZiB0aGlzLnVzZXJBY3Rpb25zKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyQWN0aW9ucy5kZWxldGUoaVswXSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWludXRlPXRoaXMuZ2V0SG91ck1pbnV0ZUluZGV4KGQpO1xuICAgICAgICBsZXQgbSA9IGRheS5nZXQobWludXRlKTtcbiAgICAgICAgaWYoIW0pe1xuICAgICAgICAgICAgbT1uZXcgTWFwKCk7XG4gICAgICAgICAgICBkYXkuc2V0KG1pbnV0ZSxtKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGNudCA9IG0uZ2V0KGRhdGEuYWN0aW9uKTtcbiAgICAgICAgaWYoIWNudClcbiAgICAgICAgICAgIGNudD0wO1xuICAgICAgICBjbnQrKztcbiAgICAgICAgbS5zZXQoZGF0YS5hY3Rpb24sY250KTtcblxuICAgIH1cblxuICAgIGFkZFN5c3RlbVN0YXQoKXtcbiAgICAgICAgY29uc3Qgc28gPSB0aGlzLmNyZWF0ZVN5c3RlbVN0YXRPYmooKTtcbiAgICAgICAgc28ubWVtb3J5VXNhZ2U9cHJvY2Vzcy5tZW1vcnlVc2FnZSgpXG4gICAgICAgIHNvLm1lbW9yeVRvdGFsPW9zLnRvdGFsbWVtKClcbiAgICB9XG4gICAgXG5cbiAgICAvLyBNRVRSSUMhXG4gICAgcmVnaXN0cmF0ZUVycm9yKGVuZHBvaW50OnN0cmluZyl7XG4gICAgICAgIGNvbnN0IHNvID0gdGhpcy5jcmVhdGVTdGF0T2JqKCk7XG4gICAgICAgIHRoaXMuaW5jcmVhc2VTdGF0KHNvLmVycm9ycyxlbmRwb2ludClcbiAgICB9XG5cbiAgICByZWdpc3RyYXRlRmF0YWxFcnJvcihlbmRwb2ludDpzdHJpbmcpe1xuICAgICAgICBjb25zdCBzbyA9IHRoaXMuY3JlYXRlU3RhdE9iaigpO1xuICAgICAgICB0aGlzLmluY3JlYXNlU3RhdChzby5mYXRhbEVycm9ycyxlbmRwb2ludClcbiAgICB9XG5cbiAgICByZWdpc3RyYXRlQVBJRXJyb3IoZW5kcG9pbnQ6c3RyaW5nKXtcbiAgICAgICAgY29uc3Qgc28gPSB0aGlzLmNyZWF0ZVN0YXRPYmooKTtcbiAgICAgICAgdGhpcy5pbmNyZWFzZVN0YXQoc28uYXBpRXJyb3JzLGVuZHBvaW50KVxuICAgIH1cblxuICAgIHJlZ2lzdHJhdGVSZXNwb25zZShlbmRwb2ludDpzdHJpbmcscmVzcG9uc2VUaW1lOm51bWJlcil7XG4gICAgICAgIGNvbnN0IHNvID0gdGhpcy5jcmVhdGVTdGF0T2JqKCk7XG4gICAgICAgIHRoaXMuaW5jcmVhc2VTdGF0KHNvLnJlcXVlc3RzLGVuZHBvaW50KVxuICAgIH1cblxuICAgIGluY3JlYXNlU3RhdChzdGF0T2JqZWN0Ok1hcDxzdHJpbmcsbnVtYmVyPixlbmRwb2ludDpzdHJpbmcpOnZvaWR7XG4gICAgICAgIGxldCByZXFlcCA9IHN0YXRPYmplY3QuZ2V0KGVuZHBvaW50KTtcbiAgICAgICAgaWYoIXJlcWVwKVxuICAgICAgICAgICAgcmVxZXA9MCAgICBcbiAgICAgICAgcmVxZXArPTE7XG4gICAgICAgIHN0YXRPYmplY3Quc2V0KGVuZHBvaW50LHJlcWVwKVxuICAgICAgICB0aGlzLnJlZ2lzdGVyZWRBY3Rpb25zKytcbiAgICB9XG5cbiAgICBjcmVhdGVTdGF0T2JqKCk6SVN0YXRPYmplY3R7XG4gICAgICAgIGNvbnN0IGQ9bmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZHRtID0gdGhpcy5nZXREYXRlSW5kZXgoZCk7XG4gICAgICAgIGxldCBkYXk9dGhpcy5odHRwUmVxdWVzdHMuZ2V0KGR0bSk7XG4gICAgICAgIGlmKCFkYXkpe1xuICAgICAgICAgICAgZGF5ID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgdGhpcy5odHRwUmVxdWVzdHMuc2V0KGR0bSxkYXkpO1xuICAgICAgICAgICAgaWYodGhpcy5odHRwUmVxdWVzdHMuc2l6ZT43KXtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgb2YgdGhpcy5odHRwUmVxdWVzdHMpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmh0dHBSZXF1ZXN0cy5kZWxldGUoaVswXSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhvdXJNaW51dGUgPSB0aGlzLmdldEhvdXJNaW51dGVJbmRleChkKTtcbiAgICAgICAgbGV0IGhtID0gZGF5LmdldChob3VyTWludXRlKTtcbiAgICAgICAgaWYoIWhtKXtcbiAgICAgICAgICAgIGhtID0ge1xuICAgICAgICAgICAgICAgIGVycm9yczpuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgcmVxdWVzdHM6bmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIGZhdGFsRXJyb3JzOm5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICBhcGlFcnJvcnM6bmV3IE1hcCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXkuc2V0KGhvdXJNaW51dGUsaG0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhtO1xuICAgIH1cblxuICAgIGNyZWF0ZVN5c3RlbVN0YXRPYmooKTpJU3lzdGVtU3RhdHtcbiAgICAgICAgY29uc3QgZD1uZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBkdG0gPSB0aGlzLmdldERhdGVJbmRleChkKTtcbiAgICAgICAgbGV0IGRheT10aGlzLnN5c3RlbVN0YXQuZ2V0KGR0bSk7XG4gICAgICAgIGlmKCFkYXkpe1xuICAgICAgICAgICAgZGF5ID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgdGhpcy5zeXN0ZW1TdGF0LnNldChkdG0sZGF5KTtcbiAgICAgICAgICAgIGlmKHRoaXMuc3lzdGVtU3RhdC5zaXplPjcpe1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaSBvZiB0aGlzLnN5c3RlbVN0YXQpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN5c3RlbVN0YXQuZGVsZXRlKGlbMF0pXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBob3VyTWludXRlID0gdGhpcy5nZXRIb3VyTWludXRlSW5kZXgoZCk7XG4gICAgICAgIGxldCBobSA9IGRheS5nZXQoaG91ck1pbnV0ZSk7XG4gICAgICAgIGlmKCFobSl7XG4gICAgICAgICAgICBobSA9IHtcbiAgICAgICAgICAgICAgICBjcHVVc2FnZTowLFxuICAgICAgICAgICAgICAgIG1lbW9yeVRvdGFsOjAsXG4gICAgICAgICAgICAgICAgbWVtb3J5VXNhZ2U6e31cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRheS5zZXQoaG91ck1pbnV0ZSxobSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG07XG4gICAgfVxuXG4gICAgZ2V0RGF0ZUluZGV4KGQ6RGF0ZSk6bnVtYmVye1xuICAgICAgICBjb25zdCBkdG0gPSBkO1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoZHRtLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMikrdGhpcy5sZWFkWmVybyhkdG0uZ2V0TW9udGgoKSsxKSt0aGlzLmxlYWRaZXJvKGR0bS5nZXREYXRlKCkpKVxuICAgIH1cblxuICAgIGdldEhvdXJNaW51dGVJbmRleChkOkRhdGUpOnN0cmluZ3tcbiAgICAgICAgY29uc3QgZHRtID0gZDtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVhZFplcm8oZHRtLmdldEhvdXJzKCkpK3RoaXMubGVhZFplcm8oZHRtLmdldE1pbnV0ZXMoKSlcbiAgICB9XG5cbiAgICBsZWFkWmVybyhpOm51bWJlcik6c3RyaW5ne1xuICAgICAgICBpZihpPjkpXG4gICAgICAgICAgICByZXR1cm4gaStcIlwiXG4gICAgICAgIHJldHVybiBcIjBcIitpO1xuICAgIH1cblxuICAgIC8vIFBSRUNIRUNLIEJFRk9SRSBBTlkgRVhFQ1VUSU9OXG4gICAgYXN5bmMgcHJlY2hlY2socmVxOiBIVFRQUmVxdWVzdFZPKTogUHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT4gfCBudWxsPiB7XG4gICAgICAgIFxuICAgICAgICBpZighcmVxLmhlYWRlcnMpXG4gICAgICAgICAgICByZXR1cm4ge2Vycm9yOntjb2RlOjEwMDAxLG1lc3NhZ2U6XCJObyBhdXRob3JpemF0aW9uXCIsaHR0cFN0YXR1czo0MDB9fVxuICAgICAgICBcbiAgICAgICAgaWYoIXJlcS5oZWFkZXJzWydhdXRob3JpemF0aW9uJ10pXG4gICAgICAgICAgICByZXR1cm4ge2Vycm9yOntjb2RlOjEwMDAyLG1lc3NhZ2U6XCJObyBhdXRob3JpemF0aW9uIGZvdW5kXCIsaHR0cFN0YXR1czo0MDB9fVxuXG4gICAgICAgIGNvbnN0IGF1dGggPSByZXEuaGVhZGVyc1snYXV0aG9yaXphdGlvbiddO1xuICAgICAgICBcbiAgICAgICAgaWYoIXJlcS5wcmVjaGVjayB8fCAhQXJyYXkuaXNBcnJheShyZXEucHJlY2hlY2suZGF0YSkpe1xuICAgICAgICAgICAgcmV0dXJuIHtlcnJvcjp7Y29kZToxMDAwMyxtZXNzYWdlOlwiTm8gYXV0aG9yaXphdGlvbiByZWNvcmRzIGZvdW5kXCIsaHR0cFN0YXR1czo0MDB9fVxuICAgICAgICB9XG4gICAgICAgIFxuXG4gICAgICAgIGxldCBhdXRob3JpemVkPWZhbHNlO1xuICAgICAgICBmb3IobGV0IGkgb2YgcmVxLnByZWNoZWNrLmRhdGEpe1xuICAgICAgICAgICAgbGV0IGV4cGVjdGF0aW9uU3RyID0gXCJcIlxuICAgICAgICAgICAgZXhwZWN0YXRpb25TdHIrPXJlcS5lbmRwb2ludFxuICAgICAgICAgICAgZXhwZWN0YXRpb25TdHIrPUpTT04uc3RyaW5naWZ5KGkpXG4gICAgICAgICAgICBleHBlY3RhdGlvblN0cis9SlNPTi5zdHJpbmdpZnkocmVxLm1ldGhvZClcbiAgICAgICAgICAgIGV4cGVjdGF0aW9uU3RyKz1KU09OLnN0cmluZ2lmeShyZXEuZGF0YSlcbiAgICAgICAgICAgIGV4cGVjdGF0aW9uU3RyKz1KU09OLnN0cmluZ2lmeShyZXEucGFyYW1zKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBleHBlY3RhdGlvbiA9IFwic2hhMjU2IFwiK2NyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShleHBlY3RhdGlvblN0cikuZGlnZXN0KCkudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKGF1dGggPT09IGV4cGVjdGF0aW9uKXtcbiAgICAgICAgICAgICAgICBhdXRob3JpemVkPXRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFhdXRob3JpemVkKXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJXcm9uZyB0b2tlbjogXCIrYXV0aClcbiAgICAgICAgICAgIHJldHVybiB7ZXJyb3I6e2NvZGU6MTAwMDQsbWVzc2FnZTpcIlVuYXV0aG9yaXplZCBhY2Nlc3NcIixodHRwU3RhdHVzOjQwMX19XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBhc3luYyBsb2dzKHJlcTpIVFRQUmVxdWVzdFZPKTpQcm9taXNlPFRyYW5zZmVyUGFja2V0Vk88YW55Pj57XG4gICAgICAgIGNvbnN0IGxvZyA9IGF3YWl0IFJFUV9MT0cucmVxdWVzdChudWxsKVxuICAgICAgICByZXR1cm4ge2RhdGE6bG9nfVxuICAgIH1cblxuICAgIGFzeW5jIG5ldGxvZyhyZXE6SFRUUFJlcXVlc3RWTyk6UHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT4+e1xuICAgICAgICBjb25zdCBsb2cgPSBhd2FpdCBSRVFfSFRUUF9MT0cucmVxdWVzdCgpXG4gICAgICAgIHJldHVybiB7ZGF0YTpsb2d9XG4gICAgfVxuXG4gICAgYXN5bmMgbWV0cmljcyhyZXE6SFRUUFJlcXVlc3RWTyk6UHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT4+e1xuICAgICAgICBcbiAgICAgICAgLy8gZ2V0IG1ldHJpYyBmb3IgY3VycmVudCBkYXRlXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBkaSA9IHRoaXMuZ2V0RGF0ZUluZGV4KGRhdGUpO1xuICAgICAgICBjb25zdCBzdGF0ID0gdGhpcy5odHRwUmVxdWVzdHMuZ2V0KGRpKVxuICAgICAgICBcblxuICAgICAgICAvLyBwcmVwYXJlIHRvIHBsYWluIGFycmF5IChtYXAgd2l0aCBtaW51dGVzKVxuICAgICAgICBcbiAgICAgICAgbGV0IHJlc3VsdD1bXVxuICAgICAgICBpZihzdGF0KXtcbiAgICAgICAgICAgIGZvcihsZXQgbWludXRlcyBvZiBzdGF0KXtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG06bWludXRlc1swXSxcbiAgICAgICAgICAgICAgICAgICAgYWU6dGhpcy5tYXBUb0tleVZhbHVlKG1pbnV0ZXNbMV0uYXBpRXJyb3JzKSxcbiAgICAgICAgICAgICAgICAgICAgZTp0aGlzLm1hcFRvS2V5VmFsdWUobWludXRlc1sxXS5lcnJvcnMpLFxuICAgICAgICAgICAgICAgICAgICByOnRoaXMubWFwVG9LZXlWYWx1ZShtaW51dGVzWzFdLnJlcXVlc3RzKSxcbiAgICAgICAgICAgICAgICAgICAgZmU6dGhpcy5tYXBUb0tleVZhbHVlKG1pbnV0ZXNbMV0uZmF0YWxFcnJvcnMpLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHVhID0gdGhpcy51c2VyQWN0aW9ucy5nZXQoZGkpO1xuICAgICAgICBsZXQgdWFSZXN1bHQ6YW55W109W11cbiAgICAgICAgaWYodWEpe1xuICAgICAgICAgICAgZm9yKGxldCBpIG9mIHVhKXtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gaVsxXTtcbiAgICAgICAgICAgICAgICBjb25zdCBtQXJyYXk6YW55W109W11cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogb2YgaVswXSl7XG4gICAgICAgICAgICAgICAgICAgIG1BcnJheS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjpqWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6alsxXVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG06aVswXSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTptQXJyYXlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtkYXRhOntzdGF0OnJlc3VsdCxkYXRlOitkYXRlLHVzZXJBY3Rpb25zOnVhUmVzdWx0fX07XG4gICAgfVxuXG4gICAgYXN5bmMgc2VydmVyU3RhdChyZXE6SFRUUFJlcXVlc3RWTyk6UHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT4+e1xuXG4gICAgICAgIC8vIGdldCBtZXRyaWMgZm9yIGN1cnJlbnQgZGF0ZVxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZGkgPSB0aGlzLmdldERhdGVJbmRleChkYXRlKTtcbiAgICAgICAgY29uc3Qgc3RhdCA9IHRoaXMuc3lzdGVtU3RhdC5nZXQoZGkpXG4gICAgICAgIGlmKCFzdGF0KVxuICAgICAgICAgICAgcmV0dXJuIHtkYXRhOltdfVxuXG4gICAgICAgIC8vIHByZXBhcmUgdG8gcGxhaW4gYXJyYXkgKG1hcCB3aXRoIG1pbnV0ZXMpXG4gICAgICAgIGxldCByZXN1bHQ9W11cbiAgICAgICAgZm9yKGxldCBtaW51dGVzIG9mIHN0YXQpe1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIG06bWludXRlc1swXSxcbiAgICAgICAgICAgICAgICBtdDptaW51dGVzWzFdLm1lbW9yeVRvdGFsLFxuICAgICAgICAgICAgICAgIG11Om1pbnV0ZXNbMV0ubWVtb3J5VXNhZ2UsXG4gICAgICAgICAgICAgICAgY3U6bWludXRlc1sxXS5jcHVVc2FnZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiB7ZGF0YTp7XG4gICAgICAgICAgICByZWdpc3RlcmVkQWN0aW9uczp0aGlzLnJlZ2lzdGVyZWRBY3Rpb25zLFxuICAgICAgICAgICAgdXB0aW1lOnByb2Nlc3MudXB0aW1lKCksXG4gICAgICAgICAgICBvc1VwdGltZTpvcy51cHRpbWUoKSxcbiAgICAgICAgICAgIHN0YXQ6cmVzdWx0XG4gICAgICAgIH19XG4gICAgfVxuXG4gICAgbWFwVG9LZXlWYWx1ZShtYXA6TWFwPHN0cmluZyxzdHJpbmd8bnVtYmVyPik6e25hbWU6c3RyaW5nLHZhbHVlOnN0cmluZ3xudW1iZXJ9W117XG4gICAgICAgIGNvbnN0IHJlcz1bXVxuICAgICAgICBmb3IobGV0IGkgb2YgbWFwKVxuICAgICAgICAgICAgcmVzLnB1c2goe25hbWU6aVswXSx2YWx1ZTppWzFdfSlcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG5cbi8qZnVuY3Rpb24gZ2V0Q1BVVXNhZ2UoY2FsbGJhY2ssIGZyZWUpeyBcblx0XG4gICAgdmFyIHN0YXRzMSA9IGdldENQVUluZm8oKTtcbiAgICB2YXIgc3RhcnRJZGxlID0gc3RhdHMxLmlkbGU7XG4gICAgdmFyIHN0YXJ0VG90YWwgPSBzdGF0czEudG90YWw7XG5cdFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzdGF0czIgPSBnZXRDUFVJbmZvKCk7XG4gICAgICAgIHZhciBlbmRJZGxlID0gc3RhdHMyLmlkbGU7XG4gICAgICAgIHZhciBlbmRUb3RhbCA9IHN0YXRzMi50b3RhbDtcblx0XHRcbiAgICAgICAgdmFyIGlkbGUgXHQ9IGVuZElkbGUgLSBzdGFydElkbGU7XG4gICAgICAgIHZhciB0b3RhbCBcdD0gZW5kVG90YWwgLSBzdGFydFRvdGFsO1xuICAgICAgICB2YXIgcGVyY1x0PSBpZGxlIC8gdG90YWw7XG5cdCAgXHRcbiAgICAgICAgaWYoZnJlZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIGNhbGxiYWNrKCBwZXJjICk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNhbGxiYWNrKCAoMSAtIHBlcmMpICk7XG5cdCAgXHRcdFxuICAgIH0sIDEwMDAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q1BVSW5mbyhjYWxsYmFjayl7IFxuICAgIHZhciBjcHVzID0gX29zLmNwdXMoKTtcblx0XG4gICAgdmFyIHVzZXIgPSAwO1xuICAgIHZhciBuaWNlID0gMDtcbiAgICB2YXIgc3lzID0gMDtcbiAgICB2YXIgaWRsZSA9IDA7XG4gICAgdmFyIGlycSA9IDA7XG4gICAgdmFyIHRvdGFsID0gMDtcblx0XG4gICAgZm9yKHZhciBjcHUgaW4gY3B1cyl7XG4gICAgICAgIGlmICghY3B1cy5oYXNPd25Qcm9wZXJ0eShjcHUpKSBjb250aW51ZTtcdFxuICAgICAgICB1c2VyICs9IGNwdXNbY3B1XS50aW1lcy51c2VyO1xuICAgICAgICBuaWNlICs9IGNwdXNbY3B1XS50aW1lcy5uaWNlO1xuICAgICAgICBzeXMgKz0gY3B1c1tjcHVdLnRpbWVzLnN5cztcbiAgICAgICAgaXJxICs9IGNwdXNbY3B1XS50aW1lcy5pcnE7XG4gICAgICAgIGlkbGUgKz0gY3B1c1tjcHVdLnRpbWVzLmlkbGU7XG4gICAgfVxuXHRcbiAgICB2YXIgdG90YWwgPSB1c2VyICsgbmljZSArIHN5cyArIGlkbGUgKyBpcnE7XG5cdFxuICAgIHJldHVybiB7XG4gICAgICAgICdpZGxlJzogaWRsZSwgXG4gICAgICAgICd0b3RhbCc6IHRvdGFsXG4gICAgfTtcbn0qLyJdfQ==
@@ -23,4 +23,3 @@ class Liveness extends BaseEndpoint_1.BaseEndpoint {
23
23
  }
24
24
  }
25
25
  exports.Liveness = Liveness;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl2ZW5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpU2VydmVyL3JvdXRlcy9MaXZlbmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBd0Q7QUFDeEQsa0RBQStDO0FBRy9DLE1BQWEsUUFBUyxTQUFRLDJCQUFZO0lBQ3RDLE9BQU8sQ0FBTTtJQUNiLFlBQVksTUFBVztRQUNuQixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBQyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBQyxRQUFRLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsYUFBYSxFQUFDLGlCQUFpQixFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUM3RixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBRSxHQUFpQjtRQUVsQyxNQUFNLE9BQU8sR0FBRyxvQ0FBdUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNqRCxNQUFNLElBQUksR0FBRyxFQUFDLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLEVBQUMsQ0FBQTtRQUM1RixJQUFJLEVBQUUsR0FBK0MsSUFBSSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUF3QixDQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsRUFBRSxHQUFDLEVBQUUsR0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxVQUFVLENBQUMsR0FBRSxFQUFFO1lBQ1gsSUFBRyxFQUFFO2dCQUNELEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixDQUFDLEVBQUMsSUFBSSxHQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ1YsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0o7QUFwQkQsNEJBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUkVRX0hUVFBfUkVRVUVTVFNfQ09VTlQgfSBmcm9tIFwiLi4vQVBJU2VydmljZVwiO1xuaW1wb3J0IHsgQmFzZUVuZHBvaW50IH0gZnJvbSBcIi4uL0Jhc2VFbmRwb2ludFwiO1xuaW1wb3J0IHsgSFRUUFJlcXVlc3RWTywgVHJhbnNmZXJQYWNrZXRWTyB9IGZyb20gXCIuLi9zdHJ1Y3R1cmVzL0ludGVyZmFjZXNcIjtcblxuZXhwb3J0IGNsYXNzIExpdmVuZXNzIGV4dGVuZHMgQmFzZUVuZHBvaW50e1xuICAgIHN0YXJ0ZWQ6RGF0ZTtcbiAgICBjb25zdHJ1Y3RvcihzdGF0ZWQ6RGF0ZSl7XG4gICAgICAgIHN1cGVyKFwibGl2ZW5lc3NcIilcbiAgICAgICAgdGhpcy5zdGFydGVkPXN0YXRlZDtcbiAgICAgICAgdGhpcy5yZWdpc3RlckVuZHBvaW50cyhbe2VuZHBvaW50OlwiXCIsaGFuZGxlcjp0aGlzLmNoZWNrTGl2ZW5lc3MsaWdub3JlSW50ZXJjZXB0b3I6dHJ1ZX1dKVxuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrTGl2ZW5lc3MgKHJlcTpIVFRQUmVxdWVzdFZPKXtcbiAgICAgICAgLy8gbGl2ZW5lc3MgcHJvYmUgLSBjaGVjayBpZiBzZXJ2ZXIgaXMgYWxpdmUgKHdhaXQgZm9yIDEwIHNlYyBhbmQgc2VuZCByZXNwb25zZSlcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IFJFUV9IVFRQX1JFUVVFU1RTX0NPVU5ULnJlcXVlc3QoKVxuICAgICAgICBjb25zdCBkYXRhID0ge2RhdGE6e2xpdmVuZXNzOnRydWUsd2FrZVRpbWU6KCtuZXcgRGF0ZSgpKSAtICgrdGhpcy5zdGFydGVkKSxyZXF1ZXN0OnJlcXVlc3R9fVxuICAgICAgICBsZXQgY2I6KChkYXRhOlRyYW5zZmVyUGFja2V0Vk88YW55Pik9PnZvaWQpIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHAgPSBuZXcgUHJvbWlzZTxUcmFuc2ZlclBhY2tldFZPPGFueT4+KChyZXNvbHZlLHJlamVjdCk9PntjYiA9IHJlc29sdmV9KVxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBpZihjYilcbiAgICAgICAgICAgICAgICBjYihkYXRhKTtcbiAgICAgICAgfSwxMDAwKjEwKVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG59Il19
@@ -16,4 +16,3 @@ class Readiness extends BaseEndpoint_1.BaseEndpoint {
16
16
  }
17
17
  }
18
18
  exports.Readiness = Readiness;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVhZGluZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaVNlcnZlci9yb3V0ZXMvUmVhZGluZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUF3RDtBQUN4RCxrREFBOEM7QUFHOUMsTUFBYSxTQUFVLFNBQVEsMkJBQVk7SUFDdkMsT0FBTyxDQUFNO0lBQ2IsWUFBWSxNQUFXO1FBQ25CLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFDLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxjQUFjLEVBQUMsaUJBQWlCLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlGLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFFLEdBQWlCO1FBQ25DLE1BQU0sT0FBTyxHQUFHLG9DQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ2pELE9BQU8sRUFBQyxJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxFQUFDLENBQUE7SUFDMUYsQ0FBQztDQUNKO0FBWkQsOEJBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSRVFfSFRUUF9SRVFVRVNUU19DT1VOVCB9IGZyb20gXCIuLi9BUElTZXJ2aWNlXCI7XG5pbXBvcnQgeyBCYXNlRW5kcG9pbnQgfSBmcm9tIFwiLi4vQmFzZUVuZHBvaW50XCJcbmltcG9ydCB7IEhUVFBSZXF1ZXN0Vk8gfSBmcm9tIFwiLi4vc3RydWN0dXJlcy9JbnRlcmZhY2VzXCJcblxuZXhwb3J0IGNsYXNzIFJlYWRpbmVzcyBleHRlbmRzIEJhc2VFbmRwb2ludHtcbiAgICBzdGFydGVkOkRhdGU7XG4gICAgY29uc3RydWN0b3Ioc3RhdGVkOkRhdGUpe1xuICAgICAgICBzdXBlcihcInJlYWRpbmVzc1wiKVxuICAgICAgICB0aGlzLnN0YXJ0ZWQ9c3RhdGVkO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRW5kcG9pbnRzKFt7ZW5kcG9pbnQ6XCJcIixoYW5kbGVyOnRoaXMuY2hlY2tSZWFkaW5lc3MsaWdub3JlSW50ZXJjZXB0b3I6dHJ1ZX1dKVxuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrUmVhZGluZXNzIChyZXE6SFRUUFJlcXVlc3RWTyl7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBSRVFfSFRUUF9SRVFVRVNUU19DT1VOVC5yZXF1ZXN0KClcbiAgICAgICAgcmV0dXJuIHtkYXRhOntsaXZlbmVzczp0cnVlLHdha2VUaW1lOigrbmV3IERhdGUoKSkgLSAoK3RoaXMuc3RhcnRlZCkscmVxdWVzdDpyZXF1ZXN0fX1cbiAgICB9XG59Il19
@@ -34,4 +34,3 @@ class ErrorUtils {
34
34
  }
35
35
  exports.ErrorUtils = ErrorUtils;
36
36
  exports.default = DefaultErrors;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGlTZXJ2ZXIvc3RydWN0dXJlcy9EZWZhdWx0RXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFpRTtBQUdqRSxNQUFNLGFBQWE7SUFDZixNQUFNLENBQUMsZUFBZSxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsQ0FBQTtJQUNoRSxNQUFNLENBQUMsZUFBZSxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsQ0FBQTtJQUNoRSxNQUFNLENBQUMsY0FBYyxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsQ0FBQTtJQUM5RCxNQUFNLENBQUMsY0FBYyxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsQ0FBQTtJQUNqRSxNQUFNLENBQUMsY0FBYyxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsQ0FBQTtJQUMvRCxNQUFNLENBQUMsZUFBZSxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsQ0FBQTtJQUNoRSxNQUFNLENBQUMsWUFBWSxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsY0FBYyxFQUFDLENBQUE7SUFDMUQsTUFBTSxDQUFDLFdBQVcsR0FBUSxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsR0FBRyxFQUFDLENBQUE7SUFDdkUsTUFBTSxDQUFDLG1CQUFtQixHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsQ0FBQTtJQUN4RSxNQUFNLENBQUMsT0FBTyxHQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUE7SUFDaEQsTUFBTSxDQUFDLGtCQUFrQixHQUFRLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsVUFBVSxFQUFDLEdBQUcsRUFBQyxDQUFBO0lBQ3RGLE1BQU0sQ0FBQyxRQUFRLEdBQVEsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsQ0FBQTs7QUFHdkQsTUFBYSxVQUFVO0lBRW5CLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBTztRQUNsQixNQUFNLGNBQWMsR0FBRyxxQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxTQUFTLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUV2RSxJQUFHLENBQUMsY0FBYztZQUNkLE9BQU8sS0FBSyxDQUFDO1FBRWpCLElBQUcscUJBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBQyxFQUFDLElBQUksRUFBQyxRQUFRLEVBQUMsQ0FBQyxLQUFHLDRCQUFnQixDQUFDLEVBQUU7WUFDdEUsT0FBTyxLQUFLLENBQUM7UUFFakIsSUFBRyxxQkFBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFDLEVBQUMsSUFBSSxFQUFDLFFBQVEsRUFBQyxDQUFDLEtBQUcsNEJBQWdCLENBQUMsRUFBRTtZQUN6RSxPQUFPLEtBQUssQ0FBQztRQUVqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUMsS0FBZTtRQUMzQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0o7QUFyQkQsZ0NBcUJDO0FBRUQsa0JBQWUsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdGlvblJlcG9ydCwgVmFsaWRhdG9yIH0gZnJvbSBcIi4uL2hlbHBlci9WYWxpZGF0b3JcIlxuaW1wb3J0IHsgSUVycm9yIH0gZnJvbSBcIi4vSW50ZXJmYWNlc1wiXG5cbmNsYXNzIERlZmF1bHRFcnJvcnN7XG4gICAgc3RhdGljIE5PVF9JTVBMRU1FTlRFRDpJRXJyb3I9e2NvZGU6MSxtZXNzYWdlOlwiTm90IGltcGxlbWVudGVkXCJ9XG4gICAgc3RhdGljIFVOS05PV05fUkVRVUVTVDpJRXJyb3I9e2NvZGU6MixtZXNzYWdlOlwiVW5rbm93biByZXF1ZXN0XCJ9XG4gICAgc3RhdGljIEpTT05fTUFMRk9STUVEOklFcnJvcj17Y29kZTozLG1lc3NhZ2U6XCJKU09OIG1hbGZvcm1lZFwifVxuICAgIHN0YXRpYyBGSUxFX1RPT19MQVJHRTpJRXJyb3I9e2NvZGU6NCxtZXNzYWdlOlwiRmlsZSBpcyB0b28gbGFyZ2VcIn1cbiAgICBzdGF0aWMgQ0FOVF9TRU5EX0ZJTEU6SUVycm9yPXtjb2RlOjUsbWVzc2FnZTpcIkNhbid0IHNlbmQgZmlsZVwifVxuICAgIHN0YXRpYyBGSUxFX05PVF9FWElTVFM6SUVycm9yPXtjb2RlOjUsbWVzc2FnZTpcIkZpbGUgbm90IGV4aXN0c1wifVxuICAgIHN0YXRpYyBVTkFVVEhPUklaRUQ6SUVycm9yPXtjb2RlOjYsbWVzc2FnZTpcIlVuYXV0aG9yaXplZFwifVxuICAgIHN0YXRpYyBCQURfUkVRVUVTVDpJRXJyb3I9e2NvZGU6NyxtZXNzYWdlOlwiQmFkIHJlcXVlc3RcIixodHRwU3RhdHVzOjQwMH1cbiAgICBzdGF0aWMgU0VSVklDRV9OT1RfV09SS0lORzpJRXJyb3I9e2NvZGU6OCxtZXNzYWdlOlwiU2VydmljZSBub3Qgd29ya2luZ1wifVxuICAgIHN0YXRpYyBUSU1FT1VUOklFcnJvcj17Y29kZTo5LG1lc3NhZ2U6XCJUaW1lb3V0XCJ9XG4gICAgc3RhdGljIE1FVEhPRF9OT1RfQUxMT1dFRDpJRXJyb3I9e2NvZGU6MTAsbWVzc2FnZTpcIk1ldGhvZCBub3QgYWxsb3dlZFwiLGh0dHBTdGF0dXM6NDA1fVxuICAgIHN0YXRpYyBEQl9FUlJPUjpJRXJyb3I9e2NvZGU6MTEsbWVzc2FnZTpcIkRCIGVycm9yXCJ9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclV0aWxze1xuXG4gICAgc3RhdGljIGlzRXJyb3Iob2JqOmFueSk6b2JqIGlzIElFcnJvcntcbiAgICAgICAgY29uc3QgaXNGaWVsZHNFeGlzdHMgPSBWYWxpZGF0b3IudmFsaWRhdGVPYmplY3QoWydjb2RlJywnbWVzc2FnZSddLG9iailcbiAgICBcbiAgICAgICAgaWYoIWlzRmllbGRzRXhpc3RzKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIFxuICAgICAgICBpZihWYWxpZGF0b3IudmFsaWRhdGVWYWx1ZShvYmouY29kZSx7dHlwZTpcIm51bWJlclwifSkhPT1WYWxpZGF0aW9uUmVwb3J0Lk9LKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIFxuICAgICAgICBpZihWYWxpZGF0b3IudmFsaWRhdGVWYWx1ZShvYmoubWVzc2FnZSx7dHlwZTpcInN0cmluZ1wifSkhPT1WYWxpZGF0aW9uUmVwb3J0Lk9LKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXBwZW5kU3RhY2soZXJyb3I6SUVycm9yLHN0YWNrPzpJRXJyb3JbXSk6SUVycm9ye1xuICAgICAgICBlcnJvci5zdGFjayA9IHN0YWNrO1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEZWZhdWx0RXJyb3JzIl19
@@ -9,4 +9,3 @@ var HTTP_STATUS;
9
9
  HTTP_STATUS[HTTP_STATUS["BAD_REQUEST"] = 400] = "BAD_REQUEST";
10
10
  HTTP_STATUS[HTTP_STATUS["SERVER_ERROR"] = 500] = "SERVER_ERROR";
11
11
  })(HTTP_STATUS || (exports.HTTP_STATUS = HTTP_STATUS = {}));
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUFN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGlTZXJ2ZXIvc3RydWN0dXJlcy9IVFRQU3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksV0FNWDtBQU5ELFdBQVksV0FBVztJQUNuQiwyQ0FBTSxDQUFBO0lBQ04seURBQWEsQ0FBQTtJQUNiLCtEQUFnQixDQUFBO0lBQ2hCLDZEQUFlLENBQUE7SUFDZiwrREFBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBTlcsV0FBVywyQkFBWCxXQUFXLFFBTXRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gSFRUUF9TVEFUVVN7XG4gICAgT0s9MjAwLFxuICAgIE5PVF9GT1VORD00MDQsXG4gICAgVU5BVVRIT1JJWkVEPTQwMSxcbiAgICBCQURfUkVRVUVTVD00MDAsXG4gICAgU0VSVkVSX0VSUk9SPTUwMFxufSJdfQ==
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGlTZXJ2ZXIvc3RydWN0dXJlcy9JbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlQXJyYXksIFVwbG9hZGVkRmlsZSB9IGZyb20gXCJleHByZXNzLWZpbGV1cGxvYWRcIlxuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tIFwic3RyZWFtXCJcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlclBhY2tldFZPPFQ9YW55PntcbiAgICBkYXRhPzpUfG51bGwsXG4gICAgZXJyb3I/OklFcnJvcnxudWxsLFxuICAgIHJlc3BvbnNlVGltZT86bnVtYmVyXG4gICAgdmVyc2lvbj86c3RyaW5nLFxuICAgIGNvcmU/OnN0cmluZyxcbiAgICBlbmRwb2ludD86c3RyaW5nXG4gICAgaHR0cFN0YXR1cz86bnVtYmVyLFxuICAgIHJlZGlyZWN0PzpzdHJpbmdcbiAgICByYXdSZXNwb25zZT86Ym9vbGVhblxuICAgIGhlYWRlcnM/Ontba2V5OnN0cmluZ106c3RyaW5nfVxuICAgIGZpbGU/OnN0cmluZyxcbiAgICBibG9ja1Jlc3BvbnNlPzpib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSFRUUFJlcXVlc3RWTzxUPWFueT57XG4gICAgcmF3OmFueSxcbiAgICByZXNwb25zZTphbnksXG4gICAgbWV0aG9kOnN0cmluZyxcbiAgICBkYXRhOlQsXG4gICAgcGFyYW1zOntba2V5OnN0cmluZ106c3RyaW5nfSxcbiAgICBoZWFkZXJzOntba2V5OnN0cmluZ106c3RyaW5nfSxcbiAgICBlbmRwb2ludDpzdHJpbmdcbiAgICBpbnRlcmNlcHRvclJlc3VsdD86VHJhbnNmZXJQYWNrZXRWTzxhbnk+XG4gICAgcHJlcHJvZHVjZXJSZXN1bHQ/OmFueVxuICAgIHByZWNoZWNrPzpUcmFuc2ZlclBhY2tldFZPPGFueT58bnVsbFxuICAgIGZpbGVzOkZpbGVBcnJheSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICByZWZlcmVyPzpzdHJpbmdcbiAgICB1bmxvY2tlZD86Ym9vbGVhblxuICAgIGludGVybmFsQ2FsbD86Ym9vbGVhblxuICAgIHN0cmVhbT86UmVhZGFibGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRXJyb3J7XG4gICAgY29kZTpudW1iZXIsXG4gICAgbWVzc2FnZTpzdHJpbmcsXG4gICAgZGV0YWlscz86c3RyaW5nLFxuICAgIGh0dHBTdGF0dXM/Om51bWJlclxuICAgIHN0YWNrPzpJRXJyb3JbXVxufSJdfQ==
package/dist/index.js CHANGED
@@ -24,4 +24,3 @@ const ExternalService_1 = require("./apiServer/external/ExternalService");
24
24
  Object.defineProperty(exports, "ExternalService", { enumerable: true, get: function () { return ExternalService_1.ExternalService; } });
25
25
  const DBService_1 = require("./apiServer/DBService");
26
26
  Object.defineProperty(exports, "DBService", { enumerable: true, get: function () { return DBService_1.DBService; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWdFO0FBZTVELDJGQWZLLHVCQUFVLE9BZUw7QUFDViw0RkFoQmdCLHdCQUFXLE9BZ0JoQjtBQWZmLDJEQUF3RDtBQWdCcEQsNkZBaEJLLDJCQUFZLE9BZ0JMO0FBZmhCLDJEQUFxRDtBQWdCakQsNkZBaEJJLDJCQUFZLE9BZ0JKO0FBZmhCLDREQUF5RDtBQWdCckQsMEZBaEJLLHFCQUFTLE9BZ0JMO0FBZmIsdURBQW9EO0FBZ0JoRCwyRkFoQkssdUJBQVUsT0FnQkw7QUFmZCx3RUFBa0U7QUFpQjlELDJGQWpCSywwQkFBVSxPQWlCTDtBQWhCZCx5REFBMEU7QUFtQnRFLDRHQW5CSyxxQ0FBMkIsT0FtQkw7QUFsQi9CLGtFQUErRDtBQWMzRCw2RkFkSywyQkFBWSxPQWNMO0FBYmhCLGdEQUE2QztBQU16QyxvRkFOSyxTQUFHLE9BTUw7QUFMUCwwRUFBdUU7QUFjbkUsZ0dBZEssaUNBQWUsT0FjTDtBQWJuQixxREFBa0Q7QUFjOUMsMEZBZEsscUJBQVMsT0FjTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSVNlcnZpY2UsSW5pdGlhbGl6ZXIgfSBmcm9tIFwiLi9hcGlTZXJ2ZXIvQVBJU2VydmljZVwiO1xuaW1wb3J0IHsgTG9jYWxSZXF1ZXN0IH0gZnJvbSBcIi4vYXBpU2VydmVyL0xvY2FsUmVxdWVzdFwiO1xuaW1wb3J0IHtNeXNxbFNlcnZpY2V9IGZyb20gXCIuL2FwaVNlcnZlci9NeXNxbFNlcnZpY2VcIlxuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vYXBpU2VydmVyL2hlbHBlci9WYWxpZGF0b3JcIjtcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tIFwiLi9hcGlTZXJ2ZXIvTG9nU2VydmljZVwiO1xuaW1wb3J0IHsgRXJyb3JVdGlscyB9IGZyb20gXCIuL2FwaVNlcnZlci9zdHJ1Y3R1cmVzL0RlZmF1bHRFcnJvcnNcIjtcbmltcG9ydCB7IFNfTU9OSVRPUl9SRUdJU1RSQVRFX0FDVElPTiB9IGZyb20gXCIuL2FwaVNlcnZlci9tb25pdG9yL01vbml0b3JcIjtcbmltcG9ydCB7IERhdGFQcm92aWRlciB9IGZyb20gXCIuL2FwaVNlcnZlci9oZWxwZXIvRGF0YVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBVSUQgfSBmcm9tIFwiLi9hcGlTZXJ2ZXIvaGVscGVyL1VJRFwiO1xuaW1wb3J0IHsgRXh0ZXJuYWxTZXJ2aWNlIH0gZnJvbSBcIi4vYXBpU2VydmVyL2V4dGVybmFsL0V4dGVybmFsU2VydmljZVwiO1xuaW1wb3J0IHsgREJTZXJ2aWNlIH0gZnJvbSBcIi4vYXBpU2VydmVyL0RCU2VydmljZVwiO1xuXG5cbmV4cG9ydCB7XG4gICAgVUlELFxuICAgIEFQSVNlcnZpY2UsXG4gICAgSW5pdGlhbGl6ZXIsXG4gICAgTG9jYWxSZXF1ZXN0LFxuICAgIE15c3FsU2VydmljZSxcbiAgICBWYWxpZGF0b3IsXG4gICAgTG9nU2VydmljZSxcbiAgICBEYXRhUHJvdmlkZXIsXG4gICAgRXJyb3JVdGlscyxcbiAgICBFeHRlcm5hbFNlcnZpY2UsXG4gICAgREJTZXJ2aWNlLFxuICAgIFNfTU9OSVRPUl9SRUdJU1RSQVRFX0FDVElPTlxufSJdfQ==
package/package.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "badmfck-api-server",
3
- "version": "2.7.9",
3
+ "version": "2.8.1",
4
4
  "description": "Simple API http server based on express",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "commonjs",
8
+
8
9
  "scripts": {
9
10
  "build": "tsc & cp ./src/apiServer/monitor/index.html ./dist/apiServer/monitor/index.html",
10
11
  "test": "echo \"Error: no test specified\" && exit 1"
11
12
  },
13
+
12
14
  "keywords": [
13
15
  "api",
14
16
  "rest",