ftpd-lite 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/commands/CwdCommand.js +2 -2
- package/src/commands/DeleCommand.js +2 -2
- package/src/commands/FeatCommand.js +3 -3
- package/src/commands/ListCommand.js +3 -3
- package/src/commands/MkdCommand.js +21 -3
- package/src/commands/PassCommand.js +3 -3
- package/src/commands/PasvCommand.js +3 -3
- package/src/commands/PortCommand.js +3 -3
- package/src/commands/PwdCommand.js +2 -2
- package/src/commands/QuitCommand.js +3 -3
- package/src/commands/RetrCommand.js +3 -3
- package/src/commands/RmdCommand.js +2 -2
- package/src/commands/RnfrCommand.js +2 -2
- package/src/commands/RntoCommand.js +2 -2
- package/src/commands/StorCommand.js +3 -3
- package/src/commands/SystCommand.js +3 -3
- package/src/commands/TypeCommand.js +3 -3
- package/src/commands/UserCommand.js +4 -4
- package/src/connection.js +6 -6
- package/src/core/DataServer.js +8 -8
- package/src/core/FtpServer.d.ts +5 -0
- package/src/core/FtpServer.js +102 -44
- package/src/fileTransfer.js +8 -8
- package/src/types.d.ts +2 -0
- package/src/types.js +3 -1
- package/src/userManager.js +28 -28
- package/src/utils/logger.js +1 -1
- package/src/utils/pathUtils.js +1 -1
package/src/fileTransfer.js
CHANGED
|
@@ -52,7 +52,7 @@ class FileTransfer {
|
|
|
52
52
|
return true;
|
|
53
53
|
}
|
|
54
54
|
async uploadFile(conn, remotePath, data) {
|
|
55
|
-
console.log(`[FileTransfer]
|
|
55
|
+
console.log(`[FileTransfer] File upload: ${conn.user || 'unknown'} - ${remotePath}`);
|
|
56
56
|
if (!this.userManager.checkPermission(conn.user || '', 'write')) {
|
|
57
57
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
58
58
|
conn.lastMessage = `Permission denied: upload`;
|
|
@@ -61,7 +61,7 @@ class FileTransfer {
|
|
|
61
61
|
conn.lastMessage = `Command not yet implemented: STOR`;
|
|
62
62
|
}
|
|
63
63
|
async downloadFile(conn, remotePath) {
|
|
64
|
-
console.log(`[FileTransfer]
|
|
64
|
+
console.log(`[FileTransfer] File download: ${conn.user || 'unknown'} - ${remotePath}`);
|
|
65
65
|
if (!this.userManager.checkPermission(conn.user || '', 'read')) {
|
|
66
66
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
67
67
|
conn.lastMessage = `Permission denied: download`;
|
|
@@ -70,7 +70,7 @@ class FileTransfer {
|
|
|
70
70
|
conn.lastMessage = `Command not yet implemented: RETR`;
|
|
71
71
|
}
|
|
72
72
|
async deleteFile(conn, remotePath) {
|
|
73
|
-
console.log(`[FileTransfer]
|
|
73
|
+
console.log(`[FileTransfer] File delete: ${conn.user || 'unknown'} - ${remotePath}`);
|
|
74
74
|
if (!this.userManager.checkPermission(conn.user || '', 'delete')) {
|
|
75
75
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
76
76
|
conn.lastMessage = `Permission denied: delete`;
|
|
@@ -79,7 +79,7 @@ class FileTransfer {
|
|
|
79
79
|
conn.lastMessage = `Command not yet implemented: DELE`;
|
|
80
80
|
}
|
|
81
81
|
async createDirectory(conn, remotePath) {
|
|
82
|
-
console.log(`[FileTransfer]
|
|
82
|
+
console.log(`[FileTransfer] Directory creation: ${conn.user || 'unknown'} - ${remotePath}`);
|
|
83
83
|
if (!this.userManager.checkPermission(conn.user || '', 'mkd')) {
|
|
84
84
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
85
85
|
conn.lastMessage = `Permission denied: create directory`;
|
|
@@ -88,7 +88,7 @@ class FileTransfer {
|
|
|
88
88
|
conn.lastMessage = `Command not yet implemented: MKD`;
|
|
89
89
|
}
|
|
90
90
|
async removeDirectory(conn, remotePath) {
|
|
91
|
-
console.log(`[FileTransfer]
|
|
91
|
+
console.log(`[FileTransfer] Directory removal: ${conn.user || 'unknown'} - ${remotePath}`);
|
|
92
92
|
if (!this.userManager.checkPermission(conn.user || '', 'rmdir')) {
|
|
93
93
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
94
94
|
conn.lastMessage = `Permission denied: remove directory`;
|
|
@@ -97,7 +97,7 @@ class FileTransfer {
|
|
|
97
97
|
conn.lastMessage = `Command not yet implemented: RMD`;
|
|
98
98
|
}
|
|
99
99
|
async renameFile(conn, oldPath, newPath) {
|
|
100
|
-
console.log(`[FileTransfer]
|
|
100
|
+
console.log(`[FileTransfer] File rename: ${conn.user || 'unknown'} - ${oldPath} -> ${newPath}`);
|
|
101
101
|
if (!this.userManager.checkPermission(conn.user || '', 'rename')) {
|
|
102
102
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
103
103
|
conn.lastMessage = `Permission denied: rename`;
|
|
@@ -106,7 +106,7 @@ class FileTransfer {
|
|
|
106
106
|
conn.lastMessage = `Command not yet implemented: RNFR/RNTO`;
|
|
107
107
|
}
|
|
108
108
|
async changeFileMode(conn, remotePath, mode) {
|
|
109
|
-
console.log(`[FileTransfer]
|
|
109
|
+
console.log(`[FileTransfer] File permissions change: ${conn.user || 'unknown'} - ${remotePath}`);
|
|
110
110
|
if (!this.userManager.checkPermission(conn.user || '', 'chmod')) {
|
|
111
111
|
conn.lastReply = types_1.ReplyCode.NO_PERMISSION;
|
|
112
112
|
conn.lastMessage = `Permission denied: chmod`;
|
|
@@ -117,4 +117,4 @@ class FileTransfer {
|
|
|
117
117
|
}
|
|
118
118
|
exports.FileTransfer = FileTransfer;
|
|
119
119
|
exports.fileTransfer = new FileTransfer();
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVRyYW5zZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZpbGVUcmFuc2Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFZLElBQUksaUNBQWE7QUFDN0IsbUNBQW1EO0FBQ25ELCtDQUE0QztBQUs1QztJQUdFO1FBRUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFXLENBQUM7SUFDakMsQ0FBQztJQUtPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV0QixJQUFJLENBQUMsV0FBVyxHQUFJLE1BQWMsQ0FBQyxhQUFhO2dCQUM5QyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFLTyxlQUFlLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBRXRELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtNLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQW1CLEVBQ25CLFVBQWtCLEVBQ2xCLElBQVk7UUFFWixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsTUFBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBR3ZGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBMkIsQ0FBQztRQUNqRCxDQUFDO1FBR0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBUyxDQUFDLE9B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QUksQ0FBQyxJQUFJLElBQUksU0FBUyxNQUFNLE9BQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRzdHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBMkIsQ0FBQztRQUNqRCxDQUFDO1FBR0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBUyxDQUFDLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0lBQzlELENBQUM7SUFLTSxLQUFLLENBQUMsY0FBYyxDQUN6QixJQUFtQixFQUNuQixVQUFrQixFQUNsQixJQUFZO1FBRVosT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLE1BQU0sVUFBVSxFQUFFLENBQUMsQ0FBQztRQUduRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFTLENBQUMsYUFBYSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsMEJBQTBCLENBQUM7UUFDaEQsQ0FBQztRQUdELElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQ0FBb0MsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7O0FBR1ksUUFBQSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBSZXBseUNvZGUsIEZ0cENvbm5lY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFVzZXJNYW5hZ2VyIH0gZnJvbSAnLi91c2VyTWFuYWdlcic7XG5cbi8qKlxuICogRmlsZVRyYW5zZmVyIC0gRG9zeWEgdHJhbnNmZXIgacWfbGVtbGVyaVxuICovXG5leHBvcnQgY2xhc3MgRmlsZVRyYW5zZmVyIHtcbiAgcHJpdmF0ZSB1c2VyTWFuYWdlcjogVXNlck1hbmFnZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gRMO2bmfDvCBiYcSfxLFtbMSxbMSxxJ/EsW5kYW4ga2HDp8Sxbm1hayBpw6dpbiBsYXp5IGluaXRcbiAgICB0aGlzLnVzZXJNYW5hZ2VyID0gbnVsbCBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVXNlck1hbmFnZXIgc2luZ2xldG9uJ8SxbsSxIGFsXG4gICAqL1xuICBwcml2YXRlIGdldFVzZXJNYW5hZ2VyKCk6IFVzZXJNYW5hZ2VyIHtcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIpIHtcbiAgICAgIC8vIETDtm5nw7wgYmHEn8SxbWzEsWzEscSfxLFuxLEgw6fDtnptZWsgacOnaW4gZ2xvYmFsIGluc3RhbmNlIGt1bGxhblxuICAgICAgdGhpcy51c2VyTWFuYWdlciA9IChnbG9iYWwgYXMgYW55KS5fX3VzZXJNYW5hZ2VyIHx8IFxuICAgICAgICBuZXcgVXNlck1hbmFnZXIocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3VzZXJzLmpzb24nKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJNYW5hZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIMSwemluIGtvbnRyb2zDvCAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1Blcm1pc3Npb24odXNlcjogc3RyaW5nLCBwZXJtaXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgcGVybWlzc2lvbiBjaGVja2luZ1xuICAgIHJldHVybiB0cnVlOyAvLyBQbGFjZWhvbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIERvc3lhIHnDvGtsZSAoU1RPUikgLSBUT0RPOiBJbXBsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRGaWxlKFxuICAgIGNvbm46IEZ0cENvbm5lY3Rpb24sXG4gICAgcmVtb3RlUGF0aDogc3RyaW5nLFxuICAgIGRhdGE6IEJ1ZmZlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRG9zeWEgecO8a2xlbWU6ICR7Y29ubi51c2VyIHx8ICd1bmtub3duJ30gLSAke3JlbW90ZVBhdGh9YCk7XG4gICAgXG4gICAgLy8gxLB6aW4ga29udHJvbMO8XG4gICAgaWYgKCF0aGlzLnVzZXJNYW5hZ2VyLmNoZWNrUGVybWlzc2lvbihjb25uLnVzZXIgfHwgJycsICd3cml0ZScpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogdXBsb2FkYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSB5w7xrbGVtZSBpbXBsZW1lbnRhc3lvbnVcbiAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5DTURfRVJSO1xuICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgQ29tbWFuZCBub3QgeWV0IGltcGxlbWVudGVkOiBTVE9SYDsgIFxuICB9XG5cbiAgLyoqXG4gICAqIERvc3lhIGluZGlyIChSRVRSKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkRmlsZShcbiAgICBjb25uOiBGdHBDb25uZWN0aW9uLFxuICAgIHJlbW90ZVBhdGg6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRG9zeWEgaW5kaXJtZTogJHtjb25uLnVzZXIgfHwgJ3Vua25vd24nfSAtICR7cmVtb3RlUGF0aH1gKTtcbiAgICBcbiAgICAvLyDEsHppbiBrb250cm9sw7xcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIuY2hlY2tQZXJtaXNzaW9uKGNvbm4udXNlciB8fCAnJywgJ3JlYWQnKSkge1xuICAgICAgY29ubi5sYXN0UmVwbHkgPSBSZXBseUNvZGUuTk9fUEVSTUlTU0lPTjtcbiAgICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgUGVybWlzc2lvbiBkZW5pZWQ6IGRvd25sb2FkYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSBpbmRpcm1lIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IFJFVFJgOyAgXG4gIH1cblxuICAvKipcbiAgICogRG9zeWEgc2lsIChERUxFKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUZpbGUoXG4gICAgY29ubjogRnRwQ29ubmVjdGlvbixcbiAgICByZW1vdGVQYXRoOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coYFtGaWxlVHJhbnNmZXJdIERvc3lhIHNpbG1lOiAke2Nvbm4udXNlciB8fCAndW5rbm93bid9IC0gJHtyZW1vdGVQYXRofWApO1xuICAgIFxuICAgIC8vIMSwemluIGtvbnRyb2zDvFxuICAgIGlmICghdGhpcy51c2VyTWFuYWdlci5jaGVja1Blcm1pc3Npb24oY29ubi51c2VyIHx8ICcnLCAnZGVsZXRlJykpIHtcbiAgICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLk5PX1BFUk1JU1NJT047XG4gICAgICBjb25uLmxhc3RNZXNzYWdlID0gYFBlcm1pc3Npb24gZGVuaWVkOiBkZWxldGVgO1xuICAgIH1cblxuICAgIC8vIFRPRE86IERvc3lhIHNpbG1lIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IERFTEVgOyAgXG4gIH1cblxuICAvKipcbiAgICogRGl6aW4gb2x1xZ90dXJtYSAoTUtEKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZURpcmVjdG9yeShcbiAgICBjb25uOiBGdHBDb25uZWN0aW9uLFxuICAgIHJlbW90ZVBhdGg6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRGl6aW4gb2x1xZ90dXJtYTogJHtjb25uLnVzZXIgfHwgJ3Vua25vd24nfSAtICR7cmVtb3RlUGF0aH1gKTtcbiAgICBcbiAgICAvLyDEsHppbiBrb250cm9sw7xcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIuY2hlY2tQZXJtaXNzaW9uKGNvbm4udXNlciB8fCAnJywgJ21rZCcpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogY3JlYXRlIGRpcmVjdG9yeWA7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRGl6aW4gb2x1xZ90dXJtYSBpbXBsZW1lbnRhc3lvbnVcbiAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5DTURfRVJSO1xuICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgQ29tbWFuZCBub3QgeWV0IGltcGxlbWVudGVkOiBNS0RgOyAgXG4gIH1cblxuICAvKipcbiAgICogRGl6aW4gc2lsbWUgKFJNRCkgLSBUT0RPOiBJbXBsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyByZW1vdmVEaXJlY3RvcnkoXG4gICAgY29ubjogRnRwQ29ubmVjdGlvbixcbiAgICByZW1vdGVQYXRoOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coYFtGaWxlVHJhbnNmZXJdIERpemluIHNpbG1lOiAke2Nvbm4udXNlciB8fCAndW5rbm93bid9IC0gJHtyZW1vdGVQYXRofWApO1xuICAgIFxuICAgIC8vIMSwemluIGtvbnRyb2zDvFxuICAgIGlmICghdGhpcy51c2VyTWFuYWdlci5jaGVja1Blcm1pc3Npb24oY29ubi51c2VyIHx8ICcnLCAncm1kaXInKSkge1xuICAgICAgY29ubi5sYXN0UmVwbHkgPSBSZXBseUNvZGUuTk9fUEVSTUlTU0lPTjtcbiAgICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgUGVybWlzc2lvbiBkZW5pZWQ6IHJlbW92ZSBkaXJlY3RvcnlgO1xuICAgIH1cblxuICAgIC8vIFRPRE86IERpemluIHNpbG1lIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IFJNRGA7ICBcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3N5YSB5ZW5pZGVuIGFkbGFuZMSxcm1hIChSTkZSL1JOVE8pIC0gVE9ETzogSW1wbGVtZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVuYW1lRmlsZShcbiAgICBjb25uOiBGdHBDb25uZWN0aW9uLFxuICAgIG9sZFBhdGg6IHN0cmluZyxcbiAgICBuZXdQYXRoOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coYFtGaWxlVHJhbnNmZXJdIERvc3lhIHllbmlkZW4gYWRsYW5kxLFybWE6ICR7Y29ubi51c2VyIHx8ICd1bmtub3duJ30gLSAke29sZFBhdGh9IC0+ICR7bmV3UGF0aH1gKTtcbiAgICBcbiAgICAvLyDEsHppbiBrb250cm9sw7xcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIuY2hlY2tQZXJtaXNzaW9uKGNvbm4udXNlciB8fCAnJywgJ3JlbmFtZScpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogcmVuYW1lYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSB5ZW5pZGVuIGFkbGFuZMSxcm1hIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IFJORlIvUk5UT2A7ICBcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3N5YSBpemlubGVyaW5pIGRlxJ9pxZ90aXIgKENITU9EKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZUZpbGVNb2RlKFxuICAgIGNvbm46IEZ0cENvbm5lY3Rpb24sXG4gICAgcmVtb3RlUGF0aDogc3RyaW5nLFxuICAgIG1vZGU6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRG9zeWEgaXppbmxlcmkgZGXEn2nFn3Rpcm1lOiAke2Nvbm4udXNlciB8fCAndW5rbm93bid9IC0gJHtyZW1vdGVQYXRofWApO1xuICAgIFxuICAgIC8vIMSwemluIGtvbnRyb2zDvFxuICAgIGlmICghdGhpcy51c2VyTWFuYWdlci5jaGVja1Blcm1pc3Npb24oY29ubi51c2VyIHx8ICcnLCAnY2htb2QnKSkge1xuICAgICAgY29ubi5sYXN0UmVwbHkgPSBSZXBseUNvZGUuTk9fUEVSTUlTU0lPTjtcbiAgICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgUGVybWlzc2lvbiBkZW5pZWQ6IGNobW9kYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSBpemlubGVyaSBkZcSfacWfdGlybWUgaW1wbGVtZW50YXN5b251XG4gICAgY29ubi5sYXN0UmVwbHkgPSBSZXBseUNvZGUuQ01EX0VSUjtcbiAgICBjb25uLmxhc3RNZXNzYWdlID0gYENvbW1hbmQgbm90IHlldCBpbXBsZW1lbnRlZDogQ0hNT0RgOyAgXG4gIH1cbn1cblxuLy8gU2luZ2xldG9uIGluc3RhbmNlXG5leHBvcnQgY29uc3QgZmlsZVRyYW5zZmVyID0gbmV3IEZpbGVUcmFuc2ZlcigpOyJdfQ==
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVRyYW5zZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZpbGVUcmFuc2Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFZLElBQUksaUNBQWE7QUFDN0IsbUNBQW1EO0FBQ25ELCtDQUE0QztBQUs1QztJQUdFO1FBRUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFXLENBQUM7SUFDakMsQ0FBQztJQUtPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV0QixJQUFJLENBQUMsV0FBVyxHQUFJLE1BQWMsQ0FBQyxhQUFhO2dCQUM5QyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFLTyxlQUFlLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBRXRELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtNLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQW1CLEVBQ25CLFVBQWtCLEVBQ2xCLElBQVk7UUFFWixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsTUFBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBR3JGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBMkIsQ0FBQztRQUNqRCxDQUFDO1FBR0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBUyxDQUFDLE9B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QUksQ0FBQyxJQUFJLElBQUksU0FBUyxNQUFNLE9BQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBR2hHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBMkIsQ0FBQztRQUNqRCxDQUFDO1FBR0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBUyxDQUFDLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0lBQzlELENBQUM7SUFLTSxLQUFLLENBQUMsY0FBYyxDQUN6QixJQUFtQixFQUNuQixVQUFrQixFQUNsQixJQUFZO1FBRVosT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLE1BQU0sVUFBVSxFQUFFLENBQUMsQ0FBQztRQUdqRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFTLENBQUMsYUFBYSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsMEJBQTBCLENBQUM7UUFDaEQsQ0FBQztRQUdELElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQ0FBb0MsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7O0FBR1ksUUFBQSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBSZXBseUNvZGUsIEZ0cENvbm5lY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFVzZXJNYW5hZ2VyIH0gZnJvbSAnLi91c2VyTWFuYWdlcic7XG5cbi8qKlxuICogRmlsZVRyYW5zZmVyIC0gRG9zeWEgdHJhbnNmZXIgacWfbGVtbGVyaVxuICovXG5leHBvcnQgY2xhc3MgRmlsZVRyYW5zZmVyIHtcbiAgcHJpdmF0ZSB1c2VyTWFuYWdlcjogVXNlck1hbmFnZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gRMO2bmfDvCBiYcSfxLFtbMSxbMSxxJ/EsW5kYW4ga2HDp8Sxbm1hayBpw6dpbiBsYXp5IGluaXRcbiAgICB0aGlzLnVzZXJNYW5hZ2VyID0gbnVsbCBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVXNlck1hbmFnZXIgc2luZ2xldG9uJ8SxbsSxIGFsXG4gICAqL1xuICBwcml2YXRlIGdldFVzZXJNYW5hZ2VyKCk6IFVzZXJNYW5hZ2VyIHtcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIpIHtcbiAgICAgIC8vIETDtm5nw7wgYmHEn8SxbWzEsWzEscSfxLFuxLEgw6fDtnptZWsgacOnaW4gZ2xvYmFsIGluc3RhbmNlIGt1bGxhblxuICAgICAgdGhpcy51c2VyTWFuYWdlciA9IChnbG9iYWwgYXMgYW55KS5fX3VzZXJNYW5hZ2VyIHx8IFxuICAgICAgICBuZXcgVXNlck1hbmFnZXIocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3VzZXJzLmpzb24nKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJNYW5hZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIMSwemluIGtvbnRyb2zDvCAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1Blcm1pc3Npb24odXNlcjogc3RyaW5nLCBwZXJtaXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgcGVybWlzc2lvbiBjaGVja2luZ1xuICAgIHJldHVybiB0cnVlOyAvLyBQbGFjZWhvbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIERvc3lhIHnDvGtsZSAoU1RPUikgLSBUT0RPOiBJbXBsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRGaWxlKFxuICAgIGNvbm46IEZ0cENvbm5lY3Rpb24sXG4gICAgcmVtb3RlUGF0aDogc3RyaW5nLFxuICAgIGRhdGE6IEJ1ZmZlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRmlsZSB1cGxvYWQ6ICR7Y29ubi51c2VyIHx8ICd1bmtub3duJ30gLSAke3JlbW90ZVBhdGh9YCk7XG4gICAgXG4gICAgLy8gxLB6aW4ga29udHJvbMO8XG4gICAgaWYgKCF0aGlzLnVzZXJNYW5hZ2VyLmNoZWNrUGVybWlzc2lvbihjb25uLnVzZXIgfHwgJycsICd3cml0ZScpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogdXBsb2FkYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSB5w7xrbGVtZSBpbXBsZW1lbnRhc3lvbnVcbiAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5DTURfRVJSO1xuICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgQ29tbWFuZCBub3QgeWV0IGltcGxlbWVudGVkOiBTVE9SYDsgIFxuICB9XG5cbiAgLyoqXG4gICAqIERvc3lhIGluZGlyIChSRVRSKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkRmlsZShcbiAgICBjb25uOiBGdHBDb25uZWN0aW9uLFxuICAgIHJlbW90ZVBhdGg6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRmlsZSBkb3dubG9hZDogJHtjb25uLnVzZXIgfHwgJ3Vua25vd24nfSAtICR7cmVtb3RlUGF0aH1gKTtcbiAgICBcbiAgICAvLyDEsHppbiBrb250cm9sw7xcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIuY2hlY2tQZXJtaXNzaW9uKGNvbm4udXNlciB8fCAnJywgJ3JlYWQnKSkge1xuICAgICAgY29ubi5sYXN0UmVwbHkgPSBSZXBseUNvZGUuTk9fUEVSTUlTU0lPTjtcbiAgICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgUGVybWlzc2lvbiBkZW5pZWQ6IGRvd25sb2FkYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSBpbmRpcm1lIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IFJFVFJgOyAgXG4gIH1cblxuICAvKipcbiAgICogRG9zeWEgc2lsIChERUxFKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUZpbGUoXG4gICAgY29ubjogRnRwQ29ubmVjdGlvbixcbiAgICByZW1vdGVQYXRoOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coYFtGaWxlVHJhbnNmZXJdIEZpbGUgZGVsZXRlOiAke2Nvbm4udXNlciB8fCAndW5rbm93bid9IC0gJHtyZW1vdGVQYXRofWApO1xuICAgIFxuICAgIC8vIMSwemluIGtvbnRyb2zDvFxuICAgIGlmICghdGhpcy51c2VyTWFuYWdlci5jaGVja1Blcm1pc3Npb24oY29ubi51c2VyIHx8ICcnLCAnZGVsZXRlJykpIHtcbiAgICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLk5PX1BFUk1JU1NJT047XG4gICAgICBjb25uLmxhc3RNZXNzYWdlID0gYFBlcm1pc3Npb24gZGVuaWVkOiBkZWxldGVgO1xuICAgIH1cblxuICAgIC8vIFRPRE86IERvc3lhIHNpbG1lIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IERFTEVgOyAgXG4gIH1cblxuICAvKipcbiAgICogRGl6aW4gb2x1xZ90dXJtYSAoTUtEKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZURpcmVjdG9yeShcbiAgICBjb25uOiBGdHBDb25uZWN0aW9uLFxuICAgIHJlbW90ZVBhdGg6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRGlyZWN0b3J5IGNyZWF0aW9uOiAke2Nvbm4udXNlciB8fCAndW5rbm93bid9IC0gJHtyZW1vdGVQYXRofWApO1xuICAgIFxuICAgIC8vIMSwemluIGtvbnRyb2zDvFxuICAgIGlmICghdGhpcy51c2VyTWFuYWdlci5jaGVja1Blcm1pc3Npb24oY29ubi51c2VyIHx8ICcnLCAnbWtkJykpIHtcbiAgICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLk5PX1BFUk1JU1NJT047XG4gICAgICBjb25uLmxhc3RNZXNzYWdlID0gYFBlcm1pc3Npb24gZGVuaWVkOiBjcmVhdGUgZGlyZWN0b3J5YDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEaXppbiBvbHXFn3R1cm1hIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IE1LRGA7ICBcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXppbiBzaWxtZSAoUk1EKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlbW92ZURpcmVjdG9yeShcbiAgICBjb25uOiBGdHBDb25uZWN0aW9uLFxuICAgIHJlbW90ZVBhdGg6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRGlyZWN0b3J5IHJlbW92YWw6ICR7Y29ubi51c2VyIHx8ICd1bmtub3duJ30gLSAke3JlbW90ZVBhdGh9YCk7XG4gICAgXG4gICAgLy8gxLB6aW4ga29udHJvbMO8XG4gICAgaWYgKCF0aGlzLnVzZXJNYW5hZ2VyLmNoZWNrUGVybWlzc2lvbihjb25uLnVzZXIgfHwgJycsICdybWRpcicpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogcmVtb3ZlIGRpcmVjdG9yeWA7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRGl6aW4gc2lsbWUgaW1wbGVtZW50YXN5b251XG4gICAgY29ubi5sYXN0UmVwbHkgPSBSZXBseUNvZGUuQ01EX0VSUjtcbiAgICBjb25uLmxhc3RNZXNzYWdlID0gYENvbW1hbmQgbm90IHlldCBpbXBsZW1lbnRlZDogUk1EYDsgIFxuICB9XG5cbiAgLyoqXG4gICAqIERvc3lhIHllbmlkZW4gYWRsYW5kxLFybWEgKFJORlIvUk5UTykgLSBUT0RPOiBJbXBsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyByZW5hbWVGaWxlKFxuICAgIGNvbm46IEZ0cENvbm5lY3Rpb24sXG4gICAgb2xkUGF0aDogc3RyaW5nLFxuICAgIG5ld1BhdGg6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRmlsZSByZW5hbWU6ICR7Y29ubi51c2VyIHx8ICd1bmtub3duJ30gLSAke29sZFBhdGh9IC0+ICR7bmV3UGF0aH1gKTtcbiAgICBcbiAgICAvLyDEsHppbiBrb250cm9sw7xcbiAgICBpZiAoIXRoaXMudXNlck1hbmFnZXIuY2hlY2tQZXJtaXNzaW9uKGNvbm4udXNlciB8fCAnJywgJ3JlbmFtZScpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogcmVuYW1lYDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBEb3N5YSB5ZW5pZGVuIGFkbGFuZMSxcm1hIGltcGxlbWVudGFzeW9udVxuICAgIGNvbm4ubGFzdFJlcGx5ID0gUmVwbHlDb2RlLkNNRF9FUlI7XG4gICAgY29ubi5sYXN0TWVzc2FnZSA9IGBDb21tYW5kIG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IFJORlIvUk5UT2A7ICBcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3N5YSBpemlubGVyaW5pIGRlxJ9pxZ90aXIgKENITU9EKSAtIFRPRE86IEltcGxlbWVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZUZpbGVNb2RlKFxuICAgIGNvbm46IEZ0cENvbm5lY3Rpb24sXG4gICAgcmVtb3RlUGF0aDogc3RyaW5nLFxuICAgIG1vZGU6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgW0ZpbGVUcmFuc2Zlcl0gRmlsZSBwZXJtaXNzaW9ucyBjaGFuZ2U6ICR7Y29ubi51c2VyIHx8ICd1bmtub3duJ30gLSAke3JlbW90ZVBhdGh9YCk7XG4gICAgXG4gICAgLy8gxLB6aW4ga29udHJvbMO8XG4gICAgaWYgKCF0aGlzLnVzZXJNYW5hZ2VyLmNoZWNrUGVybWlzc2lvbihjb25uLnVzZXIgfHwgJycsICdjaG1vZCcpKSB7XG4gICAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5OT19QRVJNSVNTSU9OO1xuICAgICAgY29ubi5sYXN0TWVzc2FnZSA9IGBQZXJtaXNzaW9uIGRlbmllZDogY2htb2RgO1xuICAgIH1cblxuICAgIC8vIFRPRE86IERvc3lhIGl6aW5sZXJpIGRlxJ9pxZ90aXJtZSBpbXBsZW1lbnRhc3lvbnVcbiAgICBjb25uLmxhc3RSZXBseSA9IFJlcGx5Q29kZS5DTURfRVJSO1xuICAgIGNvbm4ubGFzdE1lc3NhZ2UgPSBgQ29tbWFuZCBub3QgeWV0IGltcGxlbWVudGVkOiBDSE1PRGA7ICBcbiAgfVxufVxuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2VcbmV4cG9ydCBjb25zdCBmaWxlVHJhbnNmZXIgPSBuZXcgRmlsZVRyYW5zZmVyKCk7Il19
|
package/src/types.d.ts
CHANGED
package/src/types.js
CHANGED
|
@@ -36,6 +36,8 @@ var ReplyCode;
|
|
|
36
36
|
ReplyCode[ReplyCode["NO_SUCH_USER"] = 530] = "NO_SUCH_USER";
|
|
37
37
|
ReplyCode[ReplyCode["NOT_LOGGED"] = 530] = "NOT_LOGGED";
|
|
38
38
|
ReplyCode[ReplyCode["WRITE_PROTECT"] = 451] = "WRITE_PROTECT";
|
|
39
|
+
ReplyCode[ReplyCode["CANNOT_OPEN_DATA"] = 425] = "CANNOT_OPEN_DATA";
|
|
40
|
+
ReplyCode[ReplyCode["TRANSFER_ABORTED"] = 426] = "TRANSFER_ABORTED";
|
|
39
41
|
ReplyCode[ReplyCode["INTERNAL_ERR"] = 500] = "INTERNAL_ERR";
|
|
40
42
|
ReplyCode[ReplyCode["BAD_CMD"] = 502] = "BAD_CMD";
|
|
41
43
|
ReplyCode[ReplyCode["BAD_USER"] = 530] = "BAD_USER";
|
|
@@ -50,4 +52,4 @@ var ReplyCode;
|
|
|
50
52
|
ReplyCode[ReplyCode["TIMEOUT"] = 421] = "TIMEOUT";
|
|
51
53
|
ReplyCode[ReplyCode["SERVICE_NOT_AVAILABLE"] = 421] = "SERVICE_NOT_AVAILABLE";
|
|
52
54
|
})(ReplyCode || (exports.ReplyCode = ReplyCode = {}));
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBVUEsSUFBWSxTQTBEWDtBQTFERCxXQUFZLFNBQVM7SUFFbkIsbURBQWMsQ0FBQTtJQUNkLDJEQUFrQixDQUFBO0lBR2xCLHVDQUFRLENBQUE7SUFDUixpREFBYSxDQUFBO0lBQ2IsaURBQWEsQ0FBQTtJQUNiLG1EQUFjLENBQUE7SUFDZCxtREFBYyxDQUFBO0lBQ2QsaURBQWEsQ0FBQTtJQUNiLGlEQUFhLENBQUE7SUFDYixpREFBYSxDQUFBO0lBQ2IsaURBQWEsQ0FBQTtJQUNiLCtDQUFZLENBQUE7SUFDWiwrQ0FBWSxDQUFBO0lBQ1osaURBQWEsQ0FBQTtJQUNiLG1EQUFjLENBQUE7SUFDZCxpREFBYSxDQUFBO0lBQ2IsaURBQWEsQ0FBQTtJQUNiLCtDQUFZLENBQUE7SUFDWiwrQ0FBWSxDQUFBO0lBQ1osaURBQWEsQ0FBQTtJQUdiLHFEQUFlLENBQUE7SUFDZixtREFBYyxDQUFBO0lBQ2QsbURBQWMsQ0FBQTtJQUNkLG1EQUFjLENBQUE7SUFHZCxtREFBYyxDQUFBO0lBQ2QsbURBQWMsQ0FBQTtJQUNkLGlEQUFhLENBQUE7SUFDYix1REFBZ0IsQ0FBQTtJQUNoQixxREFBZSxDQUFBO0lBQ2YsaURBQWEsQ0FBQTtJQUNiLDJEQUFrQixDQUFBO0lBQ2xCLHVEQUFnQixDQUFBO0lBQ2hCLDZEQUFtQixDQUFBO0lBQ25CLG1FQUFzQixDQUFBO0lBQ3RCLG1FQUFzQixDQUFBO0lBR3RCLDJEQUFrQixDQUFBO0lBQ2xCLGlEQUFhLENBQUE7SUFDYixtREFBYyxDQUFBO0lBQ2QseURBQWlCLENBQUE7SUFDakIsK0RBQW9CLENBQUE7SUFDcEIseURBQWlCLENBQUE7SUFDakIsNkRBQW1CLENBQUE7SUFDbkIsbUVBQXNCLENBQUE7SUFDdEIseURBQWlCLENBQUE7SUFDakIsaURBQWEsQ0FBQTtJQUNiLHlEQUFpQixDQUFBO0lBQ2pCLGlEQUFhLENBQUE7SUFDYiw2RUFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBMURXLFNBQVMsYUFBVCxTQUFTLEdBQVQsU0FBUyxRQTBEcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBuZXQgZnJvbSAnbmV0JztcblxuLyoqXG4gKiBSRkMgOTU5IEZUUCBQcm90b2NvbCBUeXBlc1xuICogaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvaW5mby9yZmM5NTlcbiAqL1xuXG4vKipcbiAqIEZUUCBZYW7EsXQgS29kbGFyxLEgKFJGQyA5NTkpXG4gKi9cbmV4cG9ydCBlbnVtIFJlcGx5Q29kZSB7XG4gIC8qKiAxMDAtMTk5OiDEsMWfbGVtIHRhbWFtbGFubWFkxLEsIGJpbGdpIG1lc2FqxLEgKi9cbiAgQ09OVElOVUUgPSAxMjUsXG4gIERBVEFfQ09OTkVDVCA9IDE1MCxcbiAgXG4gIC8qKiAyMDAtMjk5OiBCYcWfYXLEsWzEsSAqL1xuICBPSyA9IDIwMCxcbiAgVVNFUl9PSyA9IDIzMCxcbiAgUEFTU19PSyA9IDIzMCxcbiAgU1lTX05BTUUgPSAyMTEsXG4gIFNZU19UWVBFID0gMjE1LFxuICBGRUFUX09LID0gMjExLFxuICBSRVRSX09LID0gMjI2LFxuICBTVE9SX09LID0gMjI2LFxuICBERUxFX09LID0gMjUwLFxuICBSTURfT0sgPSAyNTAsXG4gIE1LRF9PSyA9IDI1NyxcbiAgTElTVF9PSyA9IDE1MCxcbiAgTElTVF9FTkQgPSAyMjYsXG4gIE5PT1BfT0sgPSAyMDAsXG4gIFFVSVRfT0sgPSAyMjEsXG4gIENXRF9PSyA9IDI1MCxcbiAgUFdEX09LID0gMjU3LFxuICBSRVNUX09LID0gMzUwLFxuICBcbiAgLyoqIDMwMC0zOTk6IEJla2xleWVuIGJpbGdpICovXG4gIFVTRVJfUEFTUyA9IDMzMSxcbiAgUEFTU19BQ0MgPSAzMzIsXG4gIFVTRVJfQUNDID0gMzMyLFxuICBSRVNUX05FVyA9IDM1MCxcbiAgXG4gIC8qKiA0MDAtNDk5OiBHZcOnaWNpIGhhdGEgKi9cbiAgVVNFUl9FUlIgPSA1MDMsXG4gIFBBU1NfRVJSID0gNTAzLFxuICBDTURfRVJSID0gNTAwLFxuICBTWU5UQVhfRVJSID0gNTAxLFxuICBQQVJBTV9FUlIgPSA1MDIsXG4gIEJBRF9TRVEgPSA1MDMsXG4gIE5PX1NVQ0hfVVNFUiA9IDUzMCxcbiAgTk9UX0xPR0dFRCA9IDUzMCxcbiAgV1JJVEVfUFJPVEVDVCA9IDQ1MSxcbiAgQ0FOTk9UX09QRU5fREFUQSA9IDQyNSxcbiAgVFJBTlNGRVJfQUJPUlRFRCA9IDQyNixcbiAgXG4gIC8qKiA1MDAtNTk5OiBLYWzEsWPEsSBoYXRhICovXG4gIElOVEVSTkFMX0VSUiA9IDUwMCxcbiAgQkFEX0NNRCA9IDUwMixcbiAgQkFEX1VTRVIgPSA1MzAsXG4gIE5PVF9BTExPV0VEID0gNTUwLFxuICBGSUxFX05PVF9GT1VORCA9IDU1MCxcbiAgUEFUSF9FWElTVFMgPSA1NTAsXG4gIE5PX1BFUk1JU1NJT04gPSA1NTAsXG4gIERJUkVDVE9SWV9FWElTVFMgPSA1NTAsXG4gIEZJTEVfRVhJU1RTID0gNTUwLFxuICBTWVNUX09LID0gMjE1LFxuICBCQURfQUREUkVTUyA9IDQyMSxcbiAgVElNRU9VVCA9IDQyMSxcbiAgU0VSVklDRV9OT1RfQVZBSUxBQkxFID0gNDIxLFxufVxuXG4vKipcbiAqIEt1bGxhbsSxY8SxIGl6aW4gdMO8cmxlcmlcbiAqL1xuZXhwb3J0IHR5cGUgUGVybWlzc2lvbiA9IFxuICB8ICdyZWFkJyAgICAgICAgICAgLy8gRG9zeWEgb2t1bWFcbiAgfCAnd3JpdGUnICAgICAgICAgIC8vIERvc3lhIHlhem1hXG4gIHwgJ2xpc3QnICAgICAgICAgICAvLyBEaXppbiBsaXN0ZWxlbWVcbiAgfCAnY3JlYXRlJyAgICAgICAgIC8vIERvc3lhL2RpemluIG9sdcWfdHVybWFcbiAgfCAnYXBwZW5kJyAgICAgICAgIC8vIERvc3lhIGVrbGVtZVxuICB8ICdkZWxldGUnICAgICAgICAgLy8gRG9zeWEgc2lsbWVcbiAgfCAnY2htb2QnICAgICAgICAgIC8vIERvc3lhIGl6aW5sZXJpIGRlxJ9pxZ90aXJtZVxuICB8ICdta2QnICAgICAgICAgICAgLy8gRGl6aW4gb2x1xZ90dXJtYVxuICB8ICdybWRpcicgICAgICAgICAgLy8gRGl6aW4gc2lsbWVcbiAgfCAncmVuYW1lJyAgICAgICAgIC8vIERvc3lhIHllbmlkZW4gYWRsYW5kxLFybWFcbiAgfCAnZGVsZXRlbXlmaWxlcycgIC8vIEtlbmRpIGRvc3lhbGFyxLFuxLEgc2lsbWVcbiAgfCAnbm9wYXNzd2QnICAgICAgIC8vIMWeaWZyZXNpeiBnaXJpxZ9cbiAgfCAncGFzc2l2ZScgICAgICAgIC8vIFBhc2lmIG1vZCAoUEFTVilcbiAgfCAncG9ydCcgICAgICAgICAgIC8vIEFrdGlmIG1vZCAoUE9SVClcbiAgfCAnbm9ubG9jYWxiaW5kJyAgIC8vIFllcmVsIG9sbWF5YW4gYmHEn2xhbm1hXG4gIHwgJ3ByaXZhdGUnICAgICAgICAvLyDDlnplbCBrb211dGxhclxuICB8ICd0bHMnOyAgICAgICAgICAgIC8vIFRMUy9TU0xcblxuLyoqXG4gKiBLdWxsYW7EsWPEsSBpemluIG9iamVzaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJQZXJtaXNzaW9ucyB7XG4gIHJlYWQ/OiBib29sZWFuO1xuICB3cml0ZT86IGJvb2xlYW47XG4gIGxpc3Q/OiBib29sZWFuO1xuICBjcmVhdGU/OiBib29sZWFuO1xuICBhcHBlbmQ/OiBib29sZWFuO1xuICBkZWxldGU/OiBib29sZWFuO1xuICBjaG1vZD86IGJvb2xlYW47XG4gIG1rZD86IGJvb2xlYW47XG4gIHJtZGlyPzogYm9vbGVhbjtcbiAgcmVuYW1lPzogYm9vbGVhbjtcbiAgZGVsZXRlbXlmaWxlcz86IGJvb2xlYW47XG4gIG5vcGFzc3dkPzogYm9vbGVhbjtcbiAgcGFzc2l2ZT86IGJvb2xlYW47XG4gIHBvcnQ/OiBib29sZWFuO1xuICBub25sb2NhbGJpbmQ/OiBib29sZWFuO1xuICBwcml2YXRlPzogYm9vbGVhbjtcbiAgdGxzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBGVFAgQmHEn2xhbnTEsSBiaWxnaWxlcmlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdHBDb25uZWN0aW9uIHtcbiAgc29ja2V0OiBuZXQuU29ja2V0O1xuICB1c2VyOiBzdHJpbmcgfCBudWxsO1xuICBwYXNzOiBzdHJpbmcgfCBudWxsO1xuICBob21lRGlyOiBzdHJpbmc7XG4gIGN1cnJlbnREaXI6IHN0cmluZztcbiAgcGVybWlzc2lvbnM6IFVzZXJQZXJtaXNzaW9ucztcbiAgdHJhbnNmZXJNb2RlOiAnYXNjaWknIHwgJ2JpbmFyeScgfCBudWxsO1xuICB0cmFuc2ZlclNpemU6IG51bWJlcjtcbiAgbGFzdFJlcGx5OiBudW1iZXI7XG4gIGxhc3RNZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBSTkZSIGlsZSBiZWxpcmxlbmVuIHllbmlkZW4gYWRsYW5kxLFybWEga2F5bmHEn8SxICovXG4gIHJuZnJQYXRoPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFZlcmkgYmFnbGFudGkgbW9kdTogUEFTViAocGFzaWYpIHZleWEgUE9SVCAoYWt0aWYpICovXG4gIGRhdGFNb2RlPzogJ3Bhc3NpdmUnIHwgJ2FjdGl2ZSc7XG4gIC8qKiBBa3RpZiBtb2RkYSAoUE9SVCkgaXN0ZW1jaW5pbiBkaW5sZWRpZ2kgYWRyZXMgKi9cbiAgYWN0aXZlRGF0YVRhcmdldD86IHsgaXA6IHN0cmluZzsgcG9ydDogbnVtYmVyIH07XG59XG5cbi8qKlxuICogS3VsbGFuxLFjxLEgYmlsZ2lsZXJpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIGhvbWVEaXI6IHN0cmluZztcbiAgcGVybWlzc2lvbnM6IFVzZXJQZXJtaXNzaW9ucztcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogS3VsbGFuxLFjxLEgecO2bmV0aW1pIHZlcml0YWJhbsSxXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck1hbmFnZXJEYXRhIHtcbiAgdXNlcnM6IFVzZXJbXTtcbiAgbGFzdFVwZGF0ZWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBWZXJpIGJhxJ9sYW50xLFzxLEgYmlsZ2lsZXJpIChQT1JUL1BBU1YpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUNvbm5lY3Rpb24ge1xuICBzb2NrZXQ6IG5ldC5Tb2NrZXQ7XG4gIHBhc3NpdmU6IGJvb2xlYW47XG4gIGxvY2FsUG9ydDogbnVtYmVyO1xuICBzdGF0ZTogJ2xpc3RlbmluZycgfCAnY29ubmVjdGluZycgfCAnY29ubmVjdGVkJyB8ICdjbG9zaW5nJyB8ICdjbG9zZWQnO1xufVxuXG4vKipcbiAqIEtvbXV0IHNvbnXDpyBvYmplc2lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kUmVzdWx0IHtcbiAgY29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRhdGE/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEtvbXV0IGnFn2xldmkgdGlwIHRhbsSxbWxhbWFzxLFcbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZEhhbmRsZXIgPSAoY29ubjogRnRwQ29ubmVjdGlvbiwgYXJnczogc3RyaW5nKSA9PiBQcm9taXNlPENvbW1hbmRSZXN1bHQ+O1xuXG4vKipcbiAqIFNlcnZlciBheWFybGFyxLFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICBwb3J0OiBudW1iZXI7XG4gIGRhdGFQb3J0OiBudW1iZXI7XG4gIHVzZXJGaWxlOiBzdHJpbmc7XG4gIG1heENvbm5lY3Rpb25zOiBudW1iZXI7XG4gIGxvZ0xldmVsOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbiAgLyoqIDIyMCBrYXJzaWxhbWEgKGJhbm5lcikgbWVzYWppOyBib3MgYmlyYWtpbGlyc2EgXCI8cG9ydD4gRlRQIFNlcnZlciBSZWFkeVwiIGt1bGxhbmlsaXIgKi9cbiAgYmFubmVyOiBzdHJpbmc7XG4gIC8qKiBQQVNWIHZlcmkgYmFnbGFudGkgcG9ydGxhcmkgYnUgYXJhbGlrdGFuIHNlY2lsaXIgKi9cbiAgcGFzc2l2ZVBvcnRSYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfTtcbn1cblxuLyoqXG4gKiBEb3N5YSB0cmFuc2ZlciBkdXJ1bXVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlclN0YXR1cyB7XG4gIGZpbGU6IHN0cmluZztcbiAgc3RhdGU6ICdwZW5kaW5nJyB8ICd0cmFuc2ZlcnJpbmcnIHwgJ2NvbXBsZXRlJyB8ICdmYWlsZWQnO1xuICBzaXplOiBudW1iZXI7XG4gIHRyYW5zZmVycmVkOiBudW1iZXI7XG4gIG1vZGU6ICdhc2NpaScgfCAnYmluYXJ5JztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG59XG5cbiJdfQ==
|
package/src/userManager.js
CHANGED
|
@@ -89,7 +89,7 @@ class UserManager {
|
|
|
89
89
|
const content = fs.readFileSync(this.userFile, 'utf-8');
|
|
90
90
|
this.data = JSON.parse(content);
|
|
91
91
|
this.users = this.data.users || [];
|
|
92
|
-
console.log(`[UserManager] ${this.users.length}
|
|
92
|
+
console.log(`[UserManager] ${this.users.length} users loaded`);
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
95
|
this.data = {
|
|
@@ -97,11 +97,11 @@ class UserManager {
|
|
|
97
97
|
lastUpdated: new Date().toISOString(),
|
|
98
98
|
};
|
|
99
99
|
this.save();
|
|
100
|
-
console.log(`[UserManager]
|
|
100
|
+
console.log(`[UserManager] Default ${this.users.length} users created`);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
catch (error) {
|
|
104
|
-
console.error(
|
|
104
|
+
console.error(`[UserManager] Load error:`);
|
|
105
105
|
this.users = DEFAULT_USERS;
|
|
106
106
|
this.data = {
|
|
107
107
|
users: DEFAULT_USERS,
|
|
@@ -113,34 +113,34 @@ class UserManager {
|
|
|
113
113
|
try {
|
|
114
114
|
this.data.lastUpdated = new Date().toISOString();
|
|
115
115
|
fs.writeFileSync(this.userFile, JSON.stringify(this.data, null, 2));
|
|
116
|
-
console.log(`[UserManager]
|
|
116
|
+
console.log(`[UserManager] Save error:`);
|
|
117
117
|
}
|
|
118
118
|
catch (error) {
|
|
119
|
-
console.error(
|
|
119
|
+
console.error(`[UserManager] Empty username`);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
findUser(username) {
|
|
123
123
|
if (!username || username.trim() === '') {
|
|
124
|
-
console.error(
|
|
124
|
+
console.error(`[UserManager] User not found: ${username}`);
|
|
125
125
|
return null;
|
|
126
126
|
}
|
|
127
127
|
const user = this.users.find((u) => u.username.toLowerCase() === username.toLowerCase() && u.isActive);
|
|
128
128
|
if (!user) {
|
|
129
|
-
console.error(
|
|
129
|
+
console.error(`[UserManager] User not found: ${username}`);
|
|
130
130
|
}
|
|
131
131
|
if (!user) {
|
|
132
|
-
console.log(`[UserManager]
|
|
132
|
+
console.log(`[UserManager] Empty username or password`);
|
|
133
133
|
}
|
|
134
134
|
return user;
|
|
135
135
|
}
|
|
136
136
|
addUser(username, password, homeDir, permissions) {
|
|
137
137
|
if (!username || !password) {
|
|
138
|
-
console.error(
|
|
138
|
+
console.error(`[UserManager] User already exists: ${username}`);
|
|
139
139
|
return false;
|
|
140
140
|
}
|
|
141
141
|
const existing = this.findUser(username);
|
|
142
142
|
if (existing) {
|
|
143
|
-
console.log(`[UserManager]
|
|
143
|
+
console.log(`[UserManager] User added: ${username}`);
|
|
144
144
|
return false;
|
|
145
145
|
}
|
|
146
146
|
const newUser = {
|
|
@@ -152,35 +152,35 @@ class UserManager {
|
|
|
152
152
|
};
|
|
153
153
|
this.users.push(newUser);
|
|
154
154
|
this.save();
|
|
155
|
-
console.log(`[UserManager]
|
|
155
|
+
console.log(`[UserManager] User not found: ${username}`);
|
|
156
156
|
return true;
|
|
157
157
|
}
|
|
158
158
|
deleteUser(username) {
|
|
159
159
|
const user = this.findUser(username);
|
|
160
160
|
if (!user) {
|
|
161
|
-
console.log(`[UserManager]
|
|
161
|
+
console.log(`[UserManager] User deleted: ${username}`);
|
|
162
162
|
return false;
|
|
163
163
|
}
|
|
164
164
|
this.users = this.users.filter((u) => u.username !== username);
|
|
165
165
|
this.save();
|
|
166
|
-
console.log(`[UserManager]
|
|
166
|
+
console.log(`[UserManager] User not found: ${username}`);
|
|
167
167
|
return true;
|
|
168
168
|
}
|
|
169
169
|
toggleUserStatus(username, isActive) {
|
|
170
170
|
const user = this.findUser(username);
|
|
171
171
|
if (!user) {
|
|
172
|
-
console.log(`[UserManager]
|
|
172
|
+
console.log(`[UserManager] User status changed: ${username} (${isActive ? 'active' : 'passive'})`);
|
|
173
173
|
return false;
|
|
174
174
|
}
|
|
175
175
|
user.isActive = isActive;
|
|
176
176
|
this.save();
|
|
177
|
-
console.log(`[UserManager]
|
|
177
|
+
console.log(`[UserManager] User not found: ${username}`);
|
|
178
178
|
return true;
|
|
179
179
|
}
|
|
180
180
|
updatePermissions(username, permissions) {
|
|
181
181
|
const user = this.findUser(username);
|
|
182
182
|
if (!user) {
|
|
183
|
-
console.log(`[UserManager]
|
|
183
|
+
console.log(`[UserManager] Permissions updated: ${username}`);
|
|
184
184
|
return false;
|
|
185
185
|
}
|
|
186
186
|
const currentPermissions = user.permissions || {};
|
|
@@ -190,21 +190,21 @@ class UserManager {
|
|
|
190
190
|
};
|
|
191
191
|
user.permissions = newPermissions;
|
|
192
192
|
this.save();
|
|
193
|
-
console.log(`[UserManager]
|
|
193
|
+
console.log(`[UserManager] Permission check failed - user not found: ${username}`);
|
|
194
194
|
return true;
|
|
195
195
|
}
|
|
196
196
|
checkPermission(username, permission) {
|
|
197
197
|
const user = this.findUser(username);
|
|
198
198
|
if (!user) {
|
|
199
|
-
console.log(`[UserManager]
|
|
199
|
+
console.log(`[UserManager] User not found: ${username}`);
|
|
200
200
|
return false;
|
|
201
201
|
}
|
|
202
202
|
const hasPermission = user.permissions?.[permission] === true;
|
|
203
203
|
if (!hasPermission) {
|
|
204
|
-
console.log(`[UserManager]
|
|
204
|
+
console.log(`[UserManager] Permission denied: ${username} - ${permission}`);
|
|
205
205
|
}
|
|
206
206
|
else {
|
|
207
|
-
console.log(`[UserManager]
|
|
207
|
+
console.log(`[UserManager] Permission granted: ${username} - ${permission}`);
|
|
208
208
|
}
|
|
209
209
|
return hasPermission;
|
|
210
210
|
}
|
|
@@ -224,39 +224,39 @@ class UserManager {
|
|
|
224
224
|
changeUsername(oldUsername, newUsername) {
|
|
225
225
|
const user = this.findUser(oldUsername);
|
|
226
226
|
if (!user) {
|
|
227
|
-
console.log(`[UserManager]
|
|
227
|
+
console.log(`[UserManager] Username already exists: ${newUsername}`);
|
|
228
228
|
return false;
|
|
229
229
|
}
|
|
230
230
|
const existing = this.findUser(newUsername);
|
|
231
231
|
if (existing) {
|
|
232
|
-
console.log(`[UserManager]
|
|
232
|
+
console.log(`[UserManager] Username already exists: ${newUsername}`);
|
|
233
233
|
return false;
|
|
234
234
|
}
|
|
235
235
|
user.username = newUsername;
|
|
236
236
|
this.save();
|
|
237
|
-
console.log(`[UserManager]
|
|
237
|
+
console.log(`[UserManager] Username changed: ${oldUsername} -> ${newUsername}`);
|
|
238
238
|
return true;
|
|
239
239
|
}
|
|
240
240
|
changePassword(username, newPassword) {
|
|
241
241
|
const user = this.findUser(username);
|
|
242
242
|
if (!user) {
|
|
243
|
-
console.log(`[UserManager]
|
|
243
|
+
console.log(`[UserManager] Password changed: ${username}`);
|
|
244
244
|
return false;
|
|
245
245
|
}
|
|
246
246
|
user.password = newPassword;
|
|
247
247
|
this.save();
|
|
248
|
-
console.log(`[UserManager]
|
|
248
|
+
console.log(`[UserManager] User not found: ${username}`);
|
|
249
249
|
return true;
|
|
250
250
|
}
|
|
251
251
|
changeHomeDir(username, newHomeDir) {
|
|
252
252
|
const user = this.findUser(username);
|
|
253
253
|
if (!user) {
|
|
254
|
-
console.log(`[UserManager]
|
|
254
|
+
console.log(`[UserManager] User not found: ${username}`);
|
|
255
255
|
return false;
|
|
256
256
|
}
|
|
257
257
|
user.homeDir = path.resolve(newHomeDir);
|
|
258
258
|
this.save();
|
|
259
|
-
console.log(`[UserManager]
|
|
259
|
+
console.log(`[UserManager] Directory changed: ${username} -> ${user.homeDir}`);
|
|
260
260
|
return true;
|
|
261
261
|
}
|
|
262
262
|
static getInstance(userFile) {
|
|
@@ -284,4 +284,4 @@ async function getUserManager(userFile) {
|
|
|
284
284
|
}
|
|
285
285
|
return userManagerInitPromise;
|
|
286
286
|
}
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlck1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXNlck1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQVksRUFBRSwrQkFBVztBQUN6QixNQUFZLElBQUksaUNBQWE7QUFNN0IsTUFBTSxhQUFhLEdBQVc7SUFDNUI7UUFDRSxRQUFRLEVBQUUsT0FBTztRQUNqQixRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7UUFDL0MsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxJQUFJO1lBQ1osS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsSUFBSTtZQUNULEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixhQUFhLEVBQUUsSUFBSTtTQUNwQjtRQUNELFFBQVEsRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNFLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztRQUMvQyxXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLEdBQUcsRUFBRSxLQUFLO1lBQ1YsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUs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Q0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQy9CLENBQUM7Q0FHRjs7QUFEZ0IscUJBQVMsR0FBdUIsSUFBSSxBQUEzQixDQUE0QjtBQUl0RCxJQUFJLG1CQUFtQixHQUF1QixJQUFJLENBQUM7QUFDbkQsSUFBSSxzQkFBc0IsR0FBZ0MsSUFBSSxDQUFDO0FBRXhELEtBQUsseUJBQXlCLFFBQWlCO0lBQ3BELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzVCLHNCQUFzQixHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDZCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsbUJBQW1CLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCB7IFVzZXIsIFVzZXJQZXJtaXNzaW9ucywgVXNlck1hbmFnZXJEYXRhLCBQZXJtaXNzaW9uIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogRGVmYXVsdCBrdWxsYW7EsWPEsWxhclxyXG4gKi9cclxuY29uc3QgREVGQVVMVF9VU0VSUzogVXNlcltdID0gW1xyXG4gIHtcclxuICAgIHVzZXJuYW1lOiAnYWRtaW4nLFxyXG4gICAgcGFzc3dvcmQ6ICdhZG1pbjEyMycsXHJcbiAgICBob21lRGlyOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vZmlsZXMvYWRtaW4nKSxcclxuICAgIHBlcm1pc3Npb25zOiB7XHJcbiAgICAgIHJlYWQ6IHRydWUsXHJcbiAgICAgIHdyaXRlOiB0cnVlLFxyXG4gICAgICBsaXN0OiB0cnVlLFxyXG4gICAgICBjcmVhdGU6IHRydWUsXHJcbiAgICAgIGFwcGVuZDogdHJ1ZSxcclxuICAgICAgZGVsZXRlOiB0cnVlLFxyXG4gICAgICBjaG1vZDogdHJ1ZSxcclxuICAgICAgbWtkOiB0cnVlLFxyXG4gICAgICBybWRpcjogdHJ1ZSxcclxuICAgICAgcmVuYW1lOiB0cnVlLFxyXG4gICAgICBkZWxldGVteWZpbGVzOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdXNlcm5hbWU6ICdndWVzdCcsXHJcbiAgICBwYXNzd29yZDogJ2d1ZXN0MTIzJyxcclxuICAgIGhvbWVEaXI6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9maWxlcy9ndWVzdCcpLFxyXG4gICAgcGVybWlzc2lvbnM6IHtcclxuICAgICAgcmVhZDogdHJ1ZSxcclxuICAgICAgd3JpdGU6IGZhbHNlLFxyXG4gICAgICBsaXN0OiB0cnVlLFxyXG4gICAgICBjcmVhdGU6IGZhbHNlLFxyXG4gICAgICBhcHBlbmQ6IGZhbHNlLFxyXG4gICAgICBkZWxldGU6IGZhbHNlLFxyXG4gICAgICBjaG1vZDogZmFsc2UsXHJcbiAgICAgIG1rZDogZmFsc2UsXHJcbiAgICAgIHJtZGlyOiBmYWxzZSxcclxuICAgICAgcmVuYW1lOiBmYWxzZSxcclxuICAgICAgZGVsZXRlbXlmaWxlczogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgaXNBY3RpdmU6IHRydWUsXHJcbiAgfSxcclxuXTtcclxuXHJcbi8qKlxyXG4gKiBVc2VyTWFuYWdlciBjbGFzcyAtIEt1bGxhbsSxY8SxIHnDtm5ldGltaVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFVzZXJNYW5hZ2VyIHtcclxuICBwcml2YXRlIHVzZXJGaWxlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB1c2VyczogVXNlcltdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRhOiBVc2VyTWFuYWdlckRhdGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHVzZXJGaWxlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudXNlckZpbGUgPSB1c2VyRmlsZTtcclxuICAgIHRoaXMubG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogS3VsbGFuxLFjxLEgdmVyaWxlcmluaSB5w7xrbGVcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyh0aGlzLnVzZXJGaWxlKSkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmModGhpcy51c2VyRmlsZSwgJ3V0Zi04Jyk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuICAgICAgICB0aGlzLnVzZXJzID0gdGhpcy5kYXRhLnVzZXJzIHx8IFtdO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdICR7dGhpcy51c2Vycy5sZW5ndGh9IGt1bGxhbsSxY8SxIHnDvGtsZW5kaWApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFZhcnNhecSxbGFuIGt1bGxhbsSxY8SxbGFyxLEgb2x1xZ90dXJcclxuICAgICAgICB0aGlzLmRhdGEgPSB7XHJcbiAgICAgICAgICB1c2VyczogREVGQVVMVF9VU0VSUyxcclxuICAgICAgICAgIGxhc3RVcGRhdGVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnNhdmUoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBWYXJzYXnEsWxhbiAke3RoaXMudXNlcnMubGVuZ3RofSBrdWxsYW7EsWPEsSBvbHXFn3R1cnVsZHVgKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1VzZXJNYW5hZ2VyXSBZw7xrbGVtZSBoYXRhc8SxOicsIGVycm9yKTtcclxuICAgICAgdGhpcy51c2VycyA9IERFRkFVTFRfVVNFUlM7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHtcclxuICAgICAgICB1c2VyczogREVGQVVMVF9VU0VSUyxcclxuICAgICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogS3VsbGFuxLFjxLEgdmVyaWxlcmluaSBrYXlkZXRcclxuICAgKi9cclxuICBwcml2YXRlIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmRhdGEubGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy51c2VyRmlsZSwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLCBudWxsLCAyKSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIFZlcmlsZXIga2F5ZGVkaWxkaTogJHt0aGlzLnVzZXJGaWxlfWApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1VzZXJNYW5hZ2VyXSBLYXlkZXRtZSBoYXRhc8SxOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEt1bGxhbsSxY8SxIGJ1bFxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaW5kVXNlcih1c2VybmFtZTogc3RyaW5nKTogVXNlciB8IG51bGwge1xyXG4gICAgaWYgKCF1c2VybmFtZSB8fCB1c2VybmFtZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tVc2VyTWFuYWdlcl0gQm/FnyBrdWxsYW7EsWPEsSBhZMSxJyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJzLmZpbmQoXHJcbiAgICAgICh1KSA9PiB1LnVzZXJuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVzZXJuYW1lLnRvTG93ZXJDYXNlKCkgJiYgdS5pc0FjdGl2ZVxyXG4gICAgKSBhcyBVc2VyIHwgbnVsbDtcclxuICAgIGlmICghdXNlcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdbVXNlck1hbmFnZXJdIEt1bGxhbsSxY8SxIGJ1bHVuYW1hZMSxOiAnICsgdXNlcm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdXNlcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBidWx1bmFtYWTEsTogJHt1c2VybmFtZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdXNlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEt1bGxhbsSxY8SxIGVrbGVcclxuICAgKi9cclxuICBwdWJsaWMgYWRkVXNlcih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcsIHBlcm1pc3Npb25zOiBVc2VyUGVybWlzc2lvbnMpOiBib29sZWFuIHtcclxuICAgIGlmICghdXNlcm5hbWUgfHwgIXBhc3N3b3JkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tVc2VyTWFuYWdlcl0gQm/FnyBrdWxsYW7EsWPEsSBhZMSxIHZleWEgxZ9pZnJlJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBLdWxsYW7EsWPEsSBhZMSxIHphdGVuIHZhcnNhIGtvbnRyb2wgZXRcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5maW5kVXNlcih1c2VybmFtZSk7XHJcbiAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gS3VsbGFuxLFjxLEgemF0ZW4gdmFyOiAke3VzZXJuYW1lfWApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3VXNlcjogVXNlciA9IHtcclxuICAgICAgdXNlcm5hbWUsXHJcbiAgICAgIHBhc3N3b3JkLFxyXG4gICAgICBob21lRGlyOiBwYXRoLnJlc29sdmUoaG9tZURpciksXHJcbiAgICAgIHBlcm1pc3Npb25zOiB7IC4uLnBlcm1pc3Npb25zIH0sXHJcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnVzZXJzLnB1c2gobmV3VXNlcik7XHJcbiAgICB0aGlzLnNhdmUoKTtcclxuICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIEt1bGxhbsSxY8SxIGVrbGVuZGk6ICR7dXNlcm5hbWV9YCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEt1bGxhbsSxY8SxIHNpbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGVVc2VyKHVzZXJuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmZpbmRVc2VyKHVzZXJuYW1lKTtcclxuICAgIGlmICghdXNlcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBidWx1bmFtYWTEsTogJHt1c2VybmFtZX1gKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJzLmZpbHRlcigodSkgPT4gdS51c2VybmFtZSAhPT0gdXNlcm5hbWUpO1xyXG4gICAgdGhpcy5zYXZlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBzaWxpbmRpOiAke3VzZXJuYW1lfWApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBLdWxsYW7EsWPEsSBha3RpZi9wYXNpZiB5YXBcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlVXNlclN0YXR1cyh1c2VybmFtZTogc3RyaW5nLCBpc0FjdGl2ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xyXG4gICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIEt1bGxhbsSxY8SxIGJ1bHVuYW1hZMSxOiAke3VzZXJuYW1lfWApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdXNlci5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xyXG4gICAgdGhpcy5zYXZlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBkdXJ1bXUgZGXEn2nFn3RpcmlsZGk6ICR7dXNlcm5hbWV9ICgke2lzQWN0aXZlID8gJ2FrdGlmJyA6ICdwYXNpZid9KWApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBLdWxsYW7EsWPEsSBpemlubGVyaW5pIGfDvG5jZWxsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVQZXJtaXNzaW9ucyh1c2VybmFtZTogc3RyaW5nLCBwZXJtaXNzaW9uczogVXNlclBlcm1pc3Npb25zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5maW5kVXNlcih1c2VybmFtZSk7XHJcbiAgICBpZiAoIXVzZXIpIHtcclxuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gS3VsbGFuxLFjxLEgYnVsdW5hbWFkxLE6ICR7dXNlcm5hbWV9YCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNZXZjdXQgaXppbmxlcmkga29weWFsYVxyXG4gICAgY29uc3QgY3VycmVudFBlcm1pc3Npb25zID0gdXNlci5wZXJtaXNzaW9ucyB8fCB7fTtcclxuICAgIFxyXG4gICAgLy8gWWVuaSBpemlubGVyaSBiaXJsZcWfdGlyICh5ZW5pIGl6aW4gdmFyc2EgZ8O8bmNlbGxlLCB5b2tzYSBtZXZjdXQga29ydSlcclxuICAgIGNvbnN0IG5ld1Blcm1pc3Npb25zID0ge1xyXG4gICAgICAuLi5jdXJyZW50UGVybWlzc2lvbnMsXHJcbiAgICAgIC4uLnBlcm1pc3Npb25zLFxyXG4gICAgfSBhcyBVc2VyUGVybWlzc2lvbnM7XHJcblxyXG4gICAgdXNlci5wZXJtaXNzaW9ucyA9IG5ld1Blcm1pc3Npb25zO1xyXG4gICAgdGhpcy5zYXZlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSDEsHppbmxlciBnw7xuY2VsbGVuZGk6ICR7dXNlcm5hbWV9YCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEt1bGxhbsSxY8SxIGl6aW5sZXJpbmkga29udHJvbCBldFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjaGVja1Blcm1pc3Npb24odXNlcm5hbWU6IHN0cmluZywgcGVybWlzc2lvbjogUGVybWlzc2lvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xyXG4gICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIMSwemluIGtvbnRyb2zDvCBiYcWfYXLEsXPEsXogLSBrdWxsYW7EsWPEsSBidWx1bmFtYWTEsTogJHt1c2VybmFtZX1gKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSB1c2VyLnBlcm1pc3Npb25zPy5bcGVybWlzc2lvbl0gPT09IHRydWU7XHJcbiAgICBcclxuICAgIGlmICghaGFzUGVybWlzc2lvbikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSDEsHppbiByZWRkZWRpbGRpOiAke3VzZXJuYW1lfSAtICR7cGVybWlzc2lvbn1gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIMSwemluIG9uYXlsYW5kxLE6ICR7dXNlcm5hbWV9IC0gJHtwZXJtaXNzaW9ufWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBoYXNQZXJtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVMO8bSBrdWxsYW7EsWPEsWxhcsSxIGxpc3RlbGVcclxuICAgKi9cclxuICBwdWJsaWMgbGlzdFVzZXJzKCk6IFVzZXJbXSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2Vycy5maWx0ZXIoKHUpID0+IHUuaXNBY3RpdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogS3VsbGFuxLFjxLEgaXN0YXRpc3Rpa2xlcmlcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VXNlclN0YXRzKCk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xyXG4gICAgY29uc3Qgc3RhdHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xyXG4gICAgdGhpcy51c2Vycy5mb3JFYWNoKCh1c2VyKSA9PiB7XHJcbiAgICAgIHN0YXRzLnNldCh1c2VyLnVzZXJuYW1lLCBPYmplY3Qua2V5cyh1c2VyLnBlcm1pc3Npb25zIHx8IHt9KS5sZW5ndGgpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RhdHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBLdWxsYW7EsWPEsSBzYXnEsXPEsW7EsSBhbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRVc2VyQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJzLmZpbHRlcigodSkgPT4gdS5pc0FjdGl2ZSkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogS3VsbGFuxLFjxLEgYWTEsW7EsSBkZcSfacWfdGlyXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVVzZXJuYW1lKG9sZFVzZXJuYW1lOiBzdHJpbmcsIG5ld1VzZXJuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmZpbmRVc2VyKG9sZFVzZXJuYW1lKTtcclxuICAgIGlmICghdXNlcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBidWx1bmFtYWTEsTogJHtvbGRVc2VybmFtZX1gKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFllbmkga3VsbGFuxLFjxLEgYWTEsSB6YXRlbiB2YXJzYSBrb250cm9sIGV0XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZmluZFVzZXIobmV3VXNlcm5hbWUpO1xyXG4gICAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIEt1bGxhbsSxY8SxIGFkxLEgemF0ZW4gdmFyOiAke25ld1VzZXJuYW1lfWApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdXNlci51c2VybmFtZSA9IG5ld1VzZXJuYW1lO1xyXG4gICAgdGhpcy5zYXZlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBhZMSxIGRlxJ9pxZ90aXJpbGRpOiAke29sZFVzZXJuYW1lfSAtPiAke25ld1VzZXJuYW1lfWApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBLdWxsYW7EsWPEsSDFn2lmcmVzaW5pIGRlxJ9pxZ90aXJcclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQodXNlcm5hbWU6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xyXG4gICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIEt1bGxhbsSxY8SxIGJ1bHVuYW1hZMSxOiAke3VzZXJuYW1lfWApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdXNlci5wYXNzd29yZCA9IG5ld1Bhc3N3b3JkO1xyXG4gICAgdGhpcy5zYXZlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSDFnmlmcmUgZGXEn2nFn3RpcmlsZGk6ICR7dXNlcm5hbWV9YCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEt1bGxhbsSxY8SxIGRpemluaW5pIGRlxJ9pxZ90aXJcclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlSG9tZURpcih1c2VybmFtZTogc3RyaW5nLCBuZXdIb21lRGlyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmZpbmRVc2VyKHVzZXJuYW1lKTtcclxuICAgIGlmICghdXNlcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBLdWxsYW7EsWPEsSBidWx1bmFtYWTEsTogJHt1c2VybmFtZX1gKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHVzZXIuaG9tZURpciA9IHBhdGgucmVzb2x2ZShuZXdIb21lRGlyKTtcclxuICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gRGl6aW4gZGXEn2nFn3RpcmlsZGk6ICR7dXNlcm5hbWV9IC0+ICR7dXNlci5ob21lRGlyfWApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VyTWFuYWdlciDDtnJuZcSfaSBvbHXFn3R1ciAoc2luZ2xldG9uKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UodXNlckZpbGU6IHN0cmluZyk6IFVzZXJNYW5hZ2VyIHtcclxuICAgIGlmICghVXNlck1hbmFnZXIuX2luc3RhbmNlKSB7XHJcbiAgICAgIFVzZXJNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBVc2VyTWFuYWdlcih1c2VyRmlsZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gVXNlck1hbmFnZXIuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBVc2VyTWFuYWdlciB8IG51bGwgPSBudWxsO1xyXG59XHJcblxyXG4vLyBTaW5nbGV0b24gaW5zdGFuY2Ugb2x1xZ90dXJtYSAtIGTDtm5nw7wgYmHEn8SxbWzEsWzEscSfxLFuZGFuIGthw6fEsW5tYWsgacOnaW5cclxubGV0IHVzZXJNYW5hZ2VySW5zdGFuY2U6IFVzZXJNYW5hZ2VyIHwgbnVsbCA9IG51bGw7XHJcbmxldCB1c2VyTWFuYWdlckluaXRQcm9taXNlOiBQcm9taXNlPFVzZXJNYW5hZ2VyPiB8IG51bGwgPSBudWxsO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFVzZXJNYW5hZ2VyKHVzZXJGaWxlPzogc3RyaW5nKTogUHJvbWlzZTxVc2VyTWFuYWdlcj4ge1xyXG4gIGlmICghdXNlck1hbmFnZXJJbml0UHJvbWlzZSkge1xyXG4gICAgdXNlck1hbmFnZXJJbml0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XHJcbiAgICAgIGlmICghdXNlck1hbmFnZXJJbnN0YW5jZSkge1xyXG4gICAgICAgIGlmICghdXNlckZpbGUpIHtcclxuICAgICAgICAgIHVzZXJGaWxlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3VzZXJzLmpzb24nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdXNlck1hbmFnZXJJbnN0YW5jZSA9IG5ldyBVc2VyTWFuYWdlcih1c2VyRmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHVzZXJNYW5hZ2VySW5zdGFuY2U7XHJcbiAgICB9KSgpO1xyXG4gIH1cclxuICByZXR1cm4gdXNlck1hbmFnZXJJbml0UHJvbWlzZTtcclxufVxyXG4iXX0=
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlck1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXNlck1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQVksRUFBRSwrQkFBVztBQUN6QixNQUFZLElBQUksaUNBQWE7QUFNN0IsTUFBTSxhQUFhLEdBQVc7SUFDNUI7UUFDRSxRQUFRLEVBQUUsT0FBTztRQUNqQixRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7UUFDL0MsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxJQUFJO1lBQ1osS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsSUFBSTtZQUNULEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixhQUFhLEVBQUUsSUFBSTtTQUNwQjtRQUNELFFBQVEsRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNFLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztRQUMvQyxXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLEdBQUcsRUFBRSxLQUFLO1lBQ1YsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsS0FBSztZQUNiLGFBQWEsRUFBRSxLQUFLO1NBQ3JCO1FBQ0QsUUFBUSxFQUFFLElBQUk7S0FDZjtDQUNGLENBQUM7QUFLRjtJQUtFLFlBQVksUUFBZ0I7UUFIcEIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUl6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBS08sSUFBSTtRQUNWLElBQUksQ0FBQztZQUNILElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFDLENBQUM7WUFDakUsQ0FBQztpQkFBTSxDQUFDO2dCQUVOLElBQUksQ0FBQyxJQUFJLEdBQUc7b0JBQ1YsS0FBSyxFQUFFLGFBQWE7b0JBQ3BCLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtpQkFDdEMsQ0FBQztnQkFDRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLGdCQUFnQixDQUFDLENBQUM7WUFDMUUsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUc7Z0JBQ1YsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTthQUN0QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFLTyxJQUFJO1FBQ1YsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqRCxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUtNLFFBQVEsQ0FBQyxRQUFnQjtRQUM5QixJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMxQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FDMUQsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtNLE9BQU8sQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsT0FBZSxFQUFFLFdBQTRCO1FBQzlGLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQVM7WUFDcEIsUUFBUTtZQUNSLFFBQVE7WUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDOUIsV0FBVyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUU7WUFDL0IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLTSxVQUFVLENBQUMsUUFBZ0I7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLTSxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLFFBQWlCO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25HLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00saUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxXQUE0QjtRQUNyRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDOUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBR0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUdsRCxNQUFNLGNBQWMsR0FBRztZQUNyQixHQUFHLGtCQUFrQjtZQUNyQixHQUFHLFdBQVc7U0FDSSxDQUFDO1FBRXJCLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkRBQTJELFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00sZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBc0I7UUFDN0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUM7UUFFOUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLFFBQVEsTUFBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsUUFBUSxNQUFNLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFLTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFLTSxZQUFZO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUtNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyRCxDQUFDO0lBS00sY0FBYyxDQUFDLFdBQW1CLEVBQUUsV0FBbUI7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsMENBQTBDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDckUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsV0FBVyxPQUFPLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00sY0FBYyxDQUFDLFFBQWdCLEVBQUUsV0FBbUI7UUFDekQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00sYUFBYSxDQUFDLFFBQWdCLEVBQUUsVUFBa0I7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00sTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNCLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0NBR0Y7O0FBRGdCLHFCQUFTLEdBQXVCLElBQUksQUFBM0IsQ0FBNEI7QUFJdEQsSUFBSSxtQkFBbUIsR0FBdUIsSUFBSSxDQUFDO0FBQ25ELElBQUksc0JBQXNCLEdBQWdDLElBQUksQ0FBQztBQUV4RCxLQUFLLHlCQUF5QixRQUFpQjtJQUNwRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM1QixzQkFBc0IsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO2dCQUNELG1CQUFtQixHQUFHLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxPQUFPLG1CQUFtQixDQUFDO1FBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDO0lBQ0QsT0FBTyxzQkFBc0IsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFVzZXIsIFVzZXJQZXJtaXNzaW9ucywgVXNlck1hbmFnZXJEYXRhLCBQZXJtaXNzaW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdCBrdWxsYW7EsWPEsWxhclxuICovXG5jb25zdCBERUZBVUxUX1VTRVJTOiBVc2VyW10gPSBbXG4gIHtcbiAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICBwYXNzd29yZDogJ2FkbWluMTIzJyxcbiAgICBob21lRGlyOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vZmlsZXMvYWRtaW4nKSxcbiAgICBwZXJtaXNzaW9uczoge1xuICAgICAgcmVhZDogdHJ1ZSxcbiAgICAgIHdyaXRlOiB0cnVlLFxuICAgICAgbGlzdDogdHJ1ZSxcbiAgICAgIGNyZWF0ZTogdHJ1ZSxcbiAgICAgIGFwcGVuZDogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgIGNobW9kOiB0cnVlLFxuICAgICAgbWtkOiB0cnVlLFxuICAgICAgcm1kaXI6IHRydWUsXG4gICAgICByZW5hbWU6IHRydWUsXG4gICAgICBkZWxldGVteWZpbGVzOiB0cnVlLFxuICAgIH0sXG4gICAgaXNBY3RpdmU6IHRydWUsXG4gIH0sXG4gIHtcbiAgICB1c2VybmFtZTogJ2d1ZXN0JyxcbiAgICBwYXNzd29yZDogJ2d1ZXN0MTIzJyxcbiAgICBob21lRGlyOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vZmlsZXMvZ3Vlc3QnKSxcbiAgICBwZXJtaXNzaW9uczoge1xuICAgICAgcmVhZDogdHJ1ZSxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIGxpc3Q6IHRydWUsXG4gICAgICBjcmVhdGU6IGZhbHNlLFxuICAgICAgYXBwZW5kOiBmYWxzZSxcbiAgICAgIGRlbGV0ZTogZmFsc2UsXG4gICAgICBjaG1vZDogZmFsc2UsXG4gICAgICBta2Q6IGZhbHNlLFxuICAgICAgcm1kaXI6IGZhbHNlLFxuICAgICAgcmVuYW1lOiBmYWxzZSxcbiAgICAgIGRlbGV0ZW15ZmlsZXM6IGZhbHNlLFxuICAgIH0sXG4gICAgaXNBY3RpdmU6IHRydWUsXG4gIH0sXG5dO1xuXG4vKipcbiAqIFVzZXJNYW5hZ2VyIGNsYXNzIC0gS3VsbGFuxLFjxLEgecO2bmV0aW1pXG4gKi9cbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlciB7XG4gIHByaXZhdGUgdXNlckZpbGU6IHN0cmluZztcbiAgcHJpdmF0ZSB1c2VyczogVXNlcltdID0gW107XG4gIHByaXZhdGUgZGF0YTogVXNlck1hbmFnZXJEYXRhO1xuXG4gIGNvbnN0cnVjdG9yKHVzZXJGaWxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnVzZXJGaWxlID0gdXNlckZpbGU7XG4gICAgdGhpcy5sb2FkKCk7XG4gIH1cblxuICAvKipcbiAgICogS3VsbGFuxLFjxLEgdmVyaWxlcmluaSB5w7xrbGVcbiAgICovXG4gIHByaXZhdGUgbG9hZCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGhpcy51c2VyRmlsZSkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyh0aGlzLnVzZXJGaWxlLCAndXRmLTgnKTtcbiAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZGF0YS51c2VycyB8fCBbXTtcbiAgICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gJHt0aGlzLnVzZXJzLmxlbmd0aH0gdXNlcnMgbG9hZGVkYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBWYXJzYXnEsWxhbiBrdWxsYW7EsWPEsWxhcsSxIG9sdcWfdHVyXG4gICAgICAgIHRoaXMuZGF0YSA9IHtcbiAgICAgICAgICB1c2VyczogREVGQVVMVF9VU0VSUyxcbiAgICAgICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gRGVmYXVsdCAke3RoaXMudXNlcnMubGVuZ3RofSB1c2VycyBjcmVhdGVkYCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtVc2VyTWFuYWdlcl0gTG9hZCBlcnJvcjpgKTtcbiAgICAgIHRoaXMudXNlcnMgPSBERUZBVUxUX1VTRVJTO1xuICAgICAgdGhpcy5kYXRhID0ge1xuICAgICAgICB1c2VyczogREVGQVVMVF9VU0VSUyxcbiAgICAgICAgbGFzdFVwZGF0ZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEt1bGxhbsSxY8SxIHZlcmlsZXJpbmkga2F5ZGV0XG4gICAqL1xuICBwcml2YXRlIHNhdmUoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGF0YS5sYXN0VXBkYXRlZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy51c2VyRmlsZSwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLCBudWxsLCAyKSk7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBTYXZlIGVycm9yOmApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbVXNlck1hbmFnZXJdIEVtcHR5IHVzZXJuYW1lYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEt1bGxhbsSxY8SxIGJ1bFxuICAgKi9cbiAgcHVibGljIGZpbmRVc2VyKHVzZXJuYW1lOiBzdHJpbmcpOiBVc2VyIHwgbnVsbCB7XG4gICAgaWYgKCF1c2VybmFtZSB8fCB1c2VybmFtZS50cmltKCkgPT09ICcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbVXNlck1hbmFnZXJdIFVzZXIgbm90IGZvdW5kOiAke3VzZXJuYW1lfWApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlciA9IHRoaXMudXNlcnMuZmluZChcbiAgICAgICh1KSA9PiB1LnVzZXJuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVzZXJuYW1lLnRvTG93ZXJDYXNlKCkgJiYgdS5pc0FjdGl2ZVxuICAgICkgYXMgVXNlciB8IG51bGw7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbVXNlck1hbmFnZXJdIFVzZXIgbm90IGZvdW5kOiAke3VzZXJuYW1lfWApO1xuICAgIH1cblxuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gRW1wdHkgdXNlcm5hbWUgb3IgcGFzc3dvcmRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBLdWxsYW7EsWPEsSBla2xlXG4gICAqL1xuICBwdWJsaWMgYWRkVXNlcih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcsIHBlcm1pc3Npb25zOiBVc2VyUGVybWlzc2lvbnMpOiBib29sZWFuIHtcbiAgICBpZiAoIXVzZXJuYW1lIHx8ICFwYXNzd29yZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgW1VzZXJNYW5hZ2VyXSBVc2VyIGFscmVhZHkgZXhpc3RzOiAke3VzZXJuYW1lfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEt1bGxhbsSxY8SxIGFkxLEgemF0ZW4gdmFyc2Ega29udHJvbCBldFxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5maW5kVXNlcih1c2VybmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBVc2VyIGFkZGVkOiAke3VzZXJuYW1lfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG4gICAgICB1c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgaG9tZURpcjogcGF0aC5yZXNvbHZlKGhvbWVEaXIpLFxuICAgICAgcGVybWlzc2lvbnM6IHsgLi4ucGVybWlzc2lvbnMgfSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJzLnB1c2gobmV3VXNlcik7XG4gICAgdGhpcy5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gVXNlciBub3QgZm91bmQ6ICR7dXNlcm5hbWV9YCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogS3VsbGFuxLFjxLEgc2lsXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlVXNlcih1c2VybmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gVXNlciBkZWxldGVkOiAke3VzZXJuYW1lfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJzLmZpbHRlcigodSkgPT4gdS51c2VybmFtZSAhPT0gdXNlcm5hbWUpO1xuICAgIHRoaXMuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIFVzZXIgbm90IGZvdW5kOiAke3VzZXJuYW1lfWApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEt1bGxhbsSxY8SxIGFrdGlmL3Bhc2lmIHlhcFxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVVzZXJTdGF0dXModXNlcm5hbWU6IHN0cmluZywgaXNBY3RpdmU6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5maW5kVXNlcih1c2VybmFtZSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBVc2VyIHN0YXR1cyBjaGFuZ2VkOiAke3VzZXJuYW1lfSAoJHtpc0FjdGl2ZSA/ICdhY3RpdmUnIDogJ3Bhc3NpdmUnfSlgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB1c2VyLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gICAgdGhpcy5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gVXNlciBub3QgZm91bmQ6ICR7dXNlcm5hbWV9YCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogS3VsbGFuxLFjxLEgaXppbmxlcmluaSBnw7xuY2VsbGVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVQZXJtaXNzaW9ucyh1c2VybmFtZTogc3RyaW5nLCBwZXJtaXNzaW9uczogVXNlclBlcm1pc3Npb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gUGVybWlzc2lvbnMgdXBkYXRlZDogJHt1c2VybmFtZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBNZXZjdXQgaXppbmxlcmkga29weWFsYVxuICAgIGNvbnN0IGN1cnJlbnRQZXJtaXNzaW9ucyA9IHVzZXIucGVybWlzc2lvbnMgfHwge307XG4gICAgXG4gICAgLy8gWWVuaSBpemlubGVyaSBiaXJsZcWfdGlyICh5ZW5pIGl6aW4gdmFyc2EgZ8O8bmNlbGxlLCB5b2tzYSBtZXZjdXQga29ydSlcbiAgICBjb25zdCBuZXdQZXJtaXNzaW9ucyA9IHtcbiAgICAgIC4uLmN1cnJlbnRQZXJtaXNzaW9ucyxcbiAgICAgIC4uLnBlcm1pc3Npb25zLFxuICAgIH0gYXMgVXNlclBlcm1pc3Npb25zO1xuXG4gICAgdXNlci5wZXJtaXNzaW9ucyA9IG5ld1Blcm1pc3Npb25zO1xuICAgIHRoaXMuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIFBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIC0gdXNlciBub3QgZm91bmQ6ICR7dXNlcm5hbWV9YCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogS3VsbGFuxLFjxLEgaXppbmxlcmluaSBrb250cm9sIGV0XG4gICAqL1xuICBwdWJsaWMgY2hlY2tQZXJtaXNzaW9uKHVzZXJuYW1lOiBzdHJpbmcsIHBlcm1pc3Npb246IFBlcm1pc3Npb24pOiBib29sZWFuIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5maW5kVXNlcih1c2VybmFtZSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBVc2VyIG5vdCBmb3VuZDogJHt1c2VybmFtZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gdXNlci5wZXJtaXNzaW9ucz8uW3Blcm1pc3Npb25dID09PSB0cnVlO1xuXG4gICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBQZXJtaXNzaW9uIGRlbmllZDogJHt1c2VybmFtZX0gLSAke3Blcm1pc3Npb259YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIFBlcm1pc3Npb24gZ3JhbnRlZDogJHt1c2VybmFtZX0gLSAke3Blcm1pc3Npb259YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Blcm1pc3Npb247XG4gIH1cblxuICAvKipcbiAgICogVMO8bSBrdWxsYW7EsWPEsWxhcsSxIGxpc3RlbGVcbiAgICovXG4gIHB1YmxpYyBsaXN0VXNlcnMoKTogVXNlcltdIHtcbiAgICByZXR1cm4gdGhpcy51c2Vycy5maWx0ZXIoKHUpID0+IHUuaXNBY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEt1bGxhbsSxY8SxIGlzdGF0aXN0aWtsZXJpXG4gICAqL1xuICBwdWJsaWMgZ2V0VXNlclN0YXRzKCk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICAgIGNvbnN0IHN0YXRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICB0aGlzLnVzZXJzLmZvckVhY2goKHVzZXIpID0+IHtcbiAgICAgIHN0YXRzLnNldCh1c2VyLnVzZXJuYW1lLCBPYmplY3Qua2V5cyh1c2VyLnBlcm1pc3Npb25zIHx8IHt9KS5sZW5ndGgpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGF0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBLdWxsYW7EsWPEsSBzYXnEsXPEsW7EsSBhbFxuICAgKi9cbiAgcHVibGljIGdldFVzZXJDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnVzZXJzLmZpbHRlcigodSkgPT4gdS5pc0FjdGl2ZSkubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEt1bGxhbsSxY8SxIGFkxLFuxLEgZGXEn2nFn3RpclxuICAgKi9cbiAgcHVibGljIGNoYW5nZVVzZXJuYW1lKG9sZFVzZXJuYW1lOiBzdHJpbmcsIG5ld1VzZXJuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5maW5kVXNlcihvbGRVc2VybmFtZSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBVc2VybmFtZSBhbHJlYWR5IGV4aXN0czogJHtuZXdVc2VybmFtZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBZZW5pIGt1bGxhbsSxY8SxIGFkxLEgemF0ZW4gdmFyc2Ega29udHJvbCBldFxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5maW5kVXNlcihuZXdVc2VybmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1VzZXJNYW5hZ2VyXSBVc2VybmFtZSBhbHJlYWR5IGV4aXN0czogJHtuZXdVc2VybmFtZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB1c2VyLnVzZXJuYW1lID0gbmV3VXNlcm5hbWU7XG4gICAgdGhpcy5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gVXNlcm5hbWUgY2hhbmdlZDogJHtvbGRVc2VybmFtZX0gLT4gJHtuZXdVc2VybmFtZX1gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLdWxsYW7EsWPEsSDFn2lmcmVzaW5pIGRlxJ9pxZ90aXJcbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VQYXNzd29yZCh1c2VybmFtZTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gUGFzc3dvcmQgY2hhbmdlZDogJHt1c2VybmFtZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB1c2VyLnBhc3N3b3JkID0gbmV3UGFzc3dvcmQ7XG4gICAgdGhpcy5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gVXNlciBub3QgZm91bmQ6ICR7dXNlcm5hbWV9YCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogS3VsbGFuxLFjxLEgZGl6aW5pbmkgZGXEn2nFn3RpclxuICAgKi9cbiAgcHVibGljIGNoYW5nZUhvbWVEaXIodXNlcm5hbWU6IHN0cmluZywgbmV3SG9tZURpcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmluZFVzZXIodXNlcm5hbWUpO1xuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc29sZS5sb2coYFtVc2VyTWFuYWdlcl0gVXNlciBub3QgZm91bmQ6ICR7dXNlcm5hbWV9YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdXNlci5ob21lRGlyID0gcGF0aC5yZXNvbHZlKG5ld0hvbWVEaXIpO1xuICAgIHRoaXMuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGBbVXNlck1hbmFnZXJdIERpcmVjdG9yeSBjaGFuZ2VkOiAke3VzZXJuYW1lfSAtPiAke3VzZXIuaG9tZURpcn1gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VyTWFuYWdlciDDtnJuZcSfaSBvbHXFn3R1ciAoc2luZ2xldG9uKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSh1c2VyRmlsZTogc3RyaW5nKTogVXNlck1hbmFnZXIge1xuICAgIGlmICghVXNlck1hbmFnZXIuX2luc3RhbmNlKSB7XG4gICAgICBVc2VyTWFuYWdlci5faW5zdGFuY2UgPSBuZXcgVXNlck1hbmFnZXIodXNlckZpbGUpO1xuICAgIH1cbiAgICByZXR1cm4gVXNlck1hbmFnZXIuX2luc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBVc2VyTWFuYWdlciB8IG51bGwgPSBudWxsO1xufVxuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2Ugb2x1xZ90dXJtYSAtIGTDtm5nw7wgYmHEn8SxbWzEsWzEscSfxLFuZGFuIGthw6fEsW5tYWsgacOnaW5cbmxldCB1c2VyTWFuYWdlckluc3RhbmNlOiBVc2VyTWFuYWdlciB8IG51bGwgPSBudWxsO1xubGV0IHVzZXJNYW5hZ2VySW5pdFByb21pc2U6IFByb21pc2U8VXNlck1hbmFnZXI+IHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRVc2VyTWFuYWdlcih1c2VyRmlsZT86IHN0cmluZyk6IFByb21pc2U8VXNlck1hbmFnZXI+IHtcbiAgaWYgKCF1c2VyTWFuYWdlckluaXRQcm9taXNlKSB7XG4gICAgdXNlck1hbmFnZXJJbml0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXVzZXJNYW5hZ2VySW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKCF1c2VyRmlsZSkge1xuICAgICAgICAgIHVzZXJGaWxlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3VzZXJzLmpzb24nKTtcbiAgICAgICAgfVxuICAgICAgICB1c2VyTWFuYWdlckluc3RhbmNlID0gbmV3IFVzZXJNYW5hZ2VyKHVzZXJGaWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1c2VyTWFuYWdlckluc3RhbmNlO1xuICAgIH0pKCk7XG4gIH1cbiAgcmV0dXJuIHVzZXJNYW5hZ2VySW5pdFByb21pc2U7XG59XG4iXX0=
|
package/src/utils/logger.js
CHANGED
|
@@ -33,4 +33,4 @@ class Logger {
|
|
|
33
33
|
}
|
|
34
34
|
exports.Logger = Logger;
|
|
35
35
|
Logger.level = LogLevel.INFO;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7SUFDYix5QkFBYSxDQUFBO0lBQ2IsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsUUFBUSxhQUFSLFFBQVEsR0FBUixRQUFRLFFBS25CO0FBRUQ7SUFHUyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWU7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBZTtRQUNyRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxPQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFlO1FBQ3BELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFlO1FBQ3BELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsRyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBZTtRQUNyRCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7O0FBM0JnQixZQUFLLEdBQWEsUUFBUSxDQUFDLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgREVCVUcgPSAnZGVidWcnLFxuICBJTkZPID0gJ2luZm8nLFxuICBXQVJOID0gJ3dhcm4nLFxuICBFUlJPUiA9ICdlcnJvcicsXG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHN0YXRpYyBsZXZlbDogTG9nTGV2ZWwgPSBMb2dMZXZlbC5JTkZPO1xuXG4gIHB1YmxpYyBzdGF0aWMgc2V0TGV2ZWwobGV2ZWw6IExvZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxldmVsID09PSBMb2dMZXZlbC5ERUJVRykge1xuICAgICAgY29uc29sZS5sb2coYFtERUJVR10gJHttZXNzYWdlfWAsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxldmVsID09PSBMb2dMZXZlbC5ERUJVRyB8fCB0aGlzLmxldmVsID09PSBMb2dMZXZlbC5JTkZPKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW0lORk9dICR7bWVzc2FnZX1gLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sZXZlbCA9PT0gTG9nTGV2ZWwuREVCVUcgfHwgdGhpcy5sZXZlbCA9PT0gTG9nTGV2ZWwuSU5GTyB8fCB0aGlzLmxldmVsID09PSBMb2dMZXZlbC5XQVJOKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtXQVJOXSAke21lc3NhZ2V9YCwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGNvbnNvbGUuZXJyb3IoYFtFUlJPUl0gJHttZXNzYWdlfWAsIC4uLmFyZ3MpO1xuICB9XG59XG4iXX0=
|
package/src/utils/pathUtils.js
CHANGED
|
@@ -142,4 +142,4 @@ function toVirtualPath(fsPath, homeDir) {
|
|
|
142
142
|
}
|
|
143
143
|
return '/' + relative.replace(/\\/g, '/');
|
|
144
144
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhdGhVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxNQUFZLElBQUksaUNBQWE7QUFDN0IsTUFBWSxFQUFFLCtCQUFXO0FBTXpCLDBCQUFpQyxPQUFlO0lBQzlDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBR0QsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFHN0MsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBRXZGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBR0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDcEUsVUFBVSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFNRCw2QkFBb0MsT0FBZTtJQUNqRCxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUdELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBSTdDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUU3QyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUtyRSxJQUFJLFVBQVUsS0FBSyxhQUFhLElBQUksVUFBVSxLQUFLLGFBQWEsRUFBRSxDQUFDO1FBRWpFLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDOUIsQ0FBQztTQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUV0RixVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ3hCLENBQUM7U0FBTSxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUU3QixVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFHRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUUvQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBR0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFFM0UsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUdELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9ELFVBQVUsR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBS0QsMEJBQWlDLFVBQWtCLEVBQUUsT0FBZTtJQUVsRSxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFHNUQsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUdyRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxJQUFJLFNBQVMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFLTSxLQUFLLGdDQUFnQyxPQUFlO0lBQ3pELElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFFZixJQUFLLEtBQStCLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBS0QscUJBQTRCLE9BQWUsRUFBRSxRQUFnQjtJQUMzRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBYUQsd0JBQStCLFVBQWtCLEVBQUUsVUFBa0IsRUFBRSxPQUFlO0lBQ3BGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBR2pELE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBR0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0MsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBR0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBTUQsdUJBQThCLE1BQWMsRUFBRSxPQUFlO0lBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcclxuXHJcbi8qKlxyXG4gKiBEaXppbiB5b2x1bnUgbm9ybWFsaXplIGV0XHJcbiAqIFdpbmRvd3MgYWJzb2x1dGUgcGF0aCdsZXJpIG11dGxhayBvbGFyYWsga2Fsc8SxbiwgLi8gcHJlZml4J2kga2FsZMSxciwgcm9vdCd0YW4gYmHFn2xhdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURpclBhdGgoZGlyUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICBpZiAoIWRpclBhdGggfHwgdHlwZW9mIGRpclBhdGggIT09ICdzdHJpbmcnKSB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICAvLyAxLiBXaW5kb3dzIGFic29sdXRlIHBhdGgnbGVyaSBub3JtYWxpemUgZXQgKEM6XFwuLi4gLT4gQzovLi4uKVxyXG4gIGxldCBub3JtYWxpemVkID0gZGlyUGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcblxyXG4gIC8vIDIuIFdpbmRvd3MgZHJpdmUgbGV0dGVyIHBhdGgga29udHJvbMO8IChDOi8uLi4gdmV5YSBDOi4uLilcclxuICBpZiAoL15bYS16QS1aXTpcXC8vLnRlc3Qobm9ybWFsaXplZCkgfHwgL14oW2EtekEtWl06XFwuKXwoW2EtekEtWl06XFwvKS8udGVzdChub3JtYWxpemVkKSkge1xyXG4gICAgLy8gV2luZG93cyBhYnNvbHV0ZSBwYXRoLCBtdXRsYWsgb2xhcmFrIGthbHPEsW46IEM6L1VzZXJzLy4uLi9maWxlcy9hZG1pblxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbiAgfVxyXG5cclxuICAvLyAzLiAuLyBwcmVmaXgnaSBrYWxkxLFyXHJcbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLi8nKSkge1xyXG4gICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc2xpY2UoMik7XHJcbiAgfVxyXG5cclxuICAvLyA0LiBFxJ9lciBhYnNvbHV0ZSBkZcSfaWxzZSwgcm9vdCdkYW4gYmHFn2xhdFxyXG4gIGlmICghbm9ybWFsaXplZC5zdGFydHNXaXRoKCcvJykgJiYgIS9eW2EtekEtWl06XFwvLy50ZXN0KG5vcm1hbGl6ZWQpKSB7XHJcbiAgICBub3JtYWxpemVkID0gJy8nICsgbm9ybWFsaXplZDtcclxuICB9XHJcbiAgXHJcbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMaW51eCB2ZSBXaW5kb3dzIHBhdGgnbGVyaW5pIGfDvMOnbMO8IMWfZWtpbGRlIG5vcm1hbGl6ZSBldFxyXG4gKiBCYWNrc2xhc2ggLT4gZm9yd2FyZCBzbGFzaCwgLi8gdmUgLi4vIMOnw7Z6LCByZWxhdGl2ZSBwYXRoIHlhcCAoUE9TSVggLyB5ZXJpbmUgV2luZG93cyB1eXVtbHUpXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcm9idXN0UGF0aE5vcm1hbGl6ZShkaXJQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGlmICghZGlyUGF0aCB8fCB0eXBlb2YgZGlyUGF0aCAhPT0gJ3N0cmluZycpIHtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIC8vIDEuIEJhY2tzbGFzaCdsZXJpIGZvcndhcmQgc2xhc2gnZSDDp2V2aXJcclxuICBsZXQgbm9ybWFsaXplZCA9IGRpclBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xyXG5cclxuICAvLyAyLiAuLyB2ZSAuLi8gc2VnbWVudCdsZXJpbmkgw6fDtnpcclxuICAvLyByZXBlYXRlZCAvIC0+IHNpbmdsZSAvXHJcbiAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xyXG4gIC8vIC4vIHNlZ21lbnQnbGVyaW5pIGthbGTEsXJcclxuICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlKC9cXC9cXC5cXC8vZywgJy8nKS5yZXBsYWNlKC9cXC5cXC8vZywgJycpO1xyXG4gIC8vIC4uLyBzZWdtZW50J2xlcmluaSBpxZ9sZSAoYmFzaXTDp2UsIHBhdGgucmVzb2x2ZSBoYWxsZWRlY2VrKVxyXG4gIC8vIE5vdGU6IC4vZmlsZXMvYWRtaW4gLT4gZmlsZXMvYWRtaW4sIHRoZW4gd2UnbGwgY29udmVydCB0byBhYnNvbHV0ZSBiZWxvd1xyXG5cclxuICAvLyAzLiAuL2ZpbGVzL2FkbWluIGdpYmkgcmVsYXRpdmUgeW9sIHZhcnNhLCBtdXRsYWsgaGFsZSDDp2V2aXJcclxuICBpZiAobm9ybWFsaXplZCA9PT0gJ2ZpbGVzL2FkbWluJyB8fCBub3JtYWxpemVkID09PSAnZmlsZXMvZ3Vlc3QnKSB7XHJcbiAgICAvLyAuL2ZpbGVzL2FkbWluIG5vcm1hbGl6ZSBlZGlsaW5jZSBmaWxlcy9hZG1pbiBvbGR1LCBidW51IG11dGxhayBoYWxlIMOnZXZpclxyXG4gICAgbm9ybWFsaXplZCA9ICcvZmlsZXMvYWRtaW4nO1xyXG4gIH0gZWxzZSBpZiAobm9ybWFsaXplZCA9PT0gJ2ZpbGVzJyB8fCBub3JtYWxpemVkID09PSAnYWRtaW4nIHx8IG5vcm1hbGl6ZWQgPT09ICdndWVzdCcpIHtcclxuICAgIC8vIGZpbGVzIG5vcm1hbGl6ZSBlZGlsaW5jZSwgL2ZpbGVzIG9sYXJhayDDp2V2aXJcclxuICAgIG5vcm1hbGl6ZWQgPSAnL2ZpbGVzJztcclxuICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWQgPT09ICcnKSB7XHJcbiAgICAvLyBlbXB0eSAtPiAvXHJcbiAgICBub3JtYWxpemVkID0gJy8nO1xyXG4gIH1cclxuXHJcbiAgLy8gNC4gUE9TSVggYWJzb2x1dGUgcGF0aCBrb250cm9sw7wgKC9maWxlcy9hZG1pbiBnaWJpKVxyXG4gIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgLy8gUE9TSVggbXV0bGFrIHlvbCBvbGFyYWsga2Fsc8SxbjogL2ZpbGVzL2FkbWluXHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxuICB9XHJcblxyXG4gIC8vIDUuIFdpbmRvd3MgYWJzb2x1dGUgcGF0aCBrb250cm9sw7wgKEM6L2ZpbGVzL2FkbWluIGdpYmkpXHJcbiAgaWYgKC9eW2EtekEtWl06XFwvXFwvLy50ZXN0KG5vcm1hbGl6ZWQpIHx8IC9eW2EtekEtWl06XFwvXFwuLy50ZXN0KG5vcm1hbGl6ZWQpKSB7XHJcbiAgICAvLyBXaW5kb3dzIG11dGxhayB5b2wgb2xhcmFrIGthbHPEsW46IEM6L2ZpbGVzL2FkbWluXHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxuICB9XHJcblxyXG4gIC8vIDYuIFJlbGF0aXZlIHBhdGggaXNlIC4vIGlsZSBiYcWfbGF0IChXaW5kb3dzIHV5dW1sdSlcclxuICBpZiAoIW5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLicpICYmICFub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgbm9ybWFsaXplZCA9ICcuLycgKyBub3JtYWxpemVkO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHw5xWRU5MxLBLOiBQYXRoJ2luIGhvbWVEaXIgacOnaW5kZSBvbHVwIG9sbWFkxLHEn8SxbsSxIGtvbnRyb2wgZXRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1BhdGhXaXRoaW5Ib21lKHRhcmdldFBhdGg6IHN0cmluZywgaG9tZURpcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgLy8gTm9ybWFsaXplIGJvdGggcGF0aHMgdG8gZm9yd2FyZCBzbGFzaGVzIGZvciBjcm9zcy1wbGF0Zm9ybSBjb21wYXJpc29uXHJcbiAgY29uc3QgdGFyZ2V0Tm9ybWFsaXplZCA9IHRhcmdldFBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xyXG4gIGNvbnN0IGhvbWVOb3JtYWxpemVkID0gKGhvbWVEaXIgfHwgJy4nKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcblxyXG4gIC8vIFN0cmlwIHRyYWlsaW5nIHNsYXNoZXNcclxuICBjb25zdCB0YXJnZXRDbGVhbiA9IHRhcmdldE5vcm1hbGl6ZWQucmVwbGFjZSgvXFwvKyQvLCAnJyk7XHJcbiAgY29uc3QgaG9tZUNsZWFuID0gaG9tZU5vcm1hbGl6ZWQucmVwbGFjZSgvXFwvKyQvLCAnJyk7XHJcblxyXG4gIC8vIElmIHBhdGhzIGFyZSBlcXVhbCwgdGFyZ2V0IGlzIHdpdGhpbiBob21lXHJcbiAgaWYgKHRhcmdldENsZWFuID09PSBob21lQ2xlYW4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgdGFyZ2V0IHN0YXJ0cyB3aXRoIGhvbWUgKyAnLycgKGkuZS4sIHRhcmdldCBpcyBpbnNpZGUgaG9tZSlcclxuICBpZiAoaG9tZUNsZWFuICE9PSAnJyAmJiB0YXJnZXRDbGVhbi5zdGFydHNXaXRoKGhvbWVDbGVhbiArICcvJykpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogRGl6aW4gdmFybMSxxJ/EsW5kYW4gZW1pbiBvbFxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZURpcmVjdG9yeUV4aXN0cyhkaXJQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICB0cnkge1xyXG4gICAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIoZGlyUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vIFphdGVuIHZhcnNhIGhhdGEgdmVybWV6XHJcbiAgICBpZiAoKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gJ0VFWElTVCcpIHtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVGFtIHlvbCBvbHXFn3R1clxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bGxQYXRoKGJhc2VEaXI6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgaWYgKCFiYXNlRGlyIHx8ICFmaWxlUGF0aCkge1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICByZXR1cm4gcGF0aC5yZXNvbHZlKGJhc2VEaXIsIGZpbGVQYXRoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZUUCBpc3RlbWNpc2luaW4gZ8O2bmRlcmRpxJ9pIHlvbHUgZG9zeWEgc2lzdGVtaSBtdXRsYWsgeW9sdW5hIMOnZXZpci5cclxuICpcclxuICogLSBNdXRsYWsgV2luZG93cyB5b2x1IChDOi8uLi4gdmV5YSBDOlxcXFwuLi4pIGhlciB6YW1hbiBkb3N5YSBzaXN0ZW1pIHlvbHVkdXIuXHJcbiAqIC0gTXV0bGFrIFBPU0lYIHlvbHUgKC9hbHQvZGl6aW4pIMO2bmNlIGRvc3lhIHNpc3RlbWkgeW9sdSBvbGFyYWsgZGVuZW5pcjtcclxuICogICBrdWxsYW7EsWPEsW7EsW4gaG9tZURpcidpIGnDp2luZGUgZGXEn2lsc2Ugc2FuYWwga8O2ayAoaG9tZURpcikgw7x6ZXJpbmRlbiDDp8O2esO8bMO8ci5cclxuICogLSBHw7ZyZWxpIHlvbCBoZXIgemFtYW4gY3VycmVudERpciDDvHplcmluZGVuIMOnw7Z6w7xsw7xyLlxyXG4gKlxyXG4gKiBEw7ZuZW4gZGXEn2VyIG11dGxhayBkb3N5YSBzaXN0ZW1pIHlvbHVkdXI7IGhvbWVEaXIgacOnaW5kZSBvbHVwIG9sbWFkxLHEn8SxbsSxXHJcbiAqIMOnYcSfxLFyYW4ga29udHJvbCBlZGVyIChpc1BhdGhXaXRoaW5Ib21lKS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRnRwUGF0aCh0YXJnZXRQYXRoOiBzdHJpbmcsIGN1cnJlbnREaXI6IHN0cmluZywgaG9tZURpcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBob21lID0gcGF0aC5yZXNvbHZlKGhvbWVEaXIgfHwgJy4nKTtcclxuICBjb25zdCBjdXJyZW50ID0gcGF0aC5yZXNvbHZlKGN1cnJlbnREaXIgfHwgaG9tZSk7XHJcblxyXG4gIC8vIEJhY2tzbGFzaCAtPiBzbGFzaCwgdGVrcmFyIGVkZW4gc2xhc2ggLT4gdGVrIHNsYXNoXHJcbiAgY29uc3QgcmF3ID0gKHRhcmdldFBhdGggfHwgJycpLnRyaW0oKS5yZXBsYWNlKC9cXFxcL2csICcvJykucmVwbGFjZSgvXFwvezIsfS9nLCAnLycpO1xyXG4gIGlmICghcmF3IHx8IHJhdyA9PT0gJy4nKSB7XHJcbiAgICByZXR1cm4gY3VycmVudDtcclxuICB9XHJcblxyXG4gIC8vIFPDvHLDvGPDvCBoYXJmaSAoQzovLi4uKSBkb3N5YSBzaXN0ZW1pIHlvbHVkdXJcclxuICBpZiAoL15bYS16QS1aXTpcXC8vLnRlc3QocmF3KSkge1xyXG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShyYXcpO1xyXG4gIH1cclxuXHJcbiAgLy8gUE9TSVggbXV0bGFrIHlvbFxyXG4gIGlmIChyYXcuc3RhcnRzV2l0aCgnLycpKSB7XHJcbiAgICBjb25zdCBhc0ZpbGVTeXN0ZW1QYXRoID0gcGF0aC5yZXNvbHZlKHJhdyk7XHJcbiAgICAvLyBob21lRGlyIGnDp2luZGV5c2UgZ2Vyw6dlayBkb3N5YSBzaXN0ZW1pIHlvbHUgb2xhcmFrIGt1bGxhblxyXG4gICAgaWYgKGlzUGF0aFdpdGhpbkhvbWUoYXNGaWxlU3lzdGVtUGF0aCwgaG9tZSkpIHtcclxuICAgICAgcmV0dXJuIGFzRmlsZVN5c3RlbVBhdGg7XHJcbiAgICB9XHJcbiAgICAvLyBEZcSfaWxzZSBzYW5hbCBrw7ZrID0ga3VsbGFuxLFjxLFuxLFuIGhvbWVEaXInaVxyXG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShob21lLCByYXcucmVwbGFjZSgvXlxcLysvLCAnJykpO1xyXG4gIH1cclxuXHJcbiAgLy8gR8O2cmVsaSB5b2w6IGJ1bHVuZHXEn3UgZGl6aW5kZW4gw6fDtnrDvG1sZVxyXG4gIHJldHVybiBwYXRoLnJlc29sdmUoY3VycmVudCwgcmF3KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERvc3lhIHNpc3RlbWkgeW9sdW51IGlzdGVtY2luaW4gZ8O2cmVjZcSfaSBzYW5hbCAoLyBrw7ZrbMO8KSB5b2xhIMOnZXZpci5cclxuICogaG9tZURpciBrw7ZrIGRpemluIG9sZHXEn3UgacOnaW4gZMSxxZ9hcsSxZGEga2FsYW4geW9sbGFyIFwiL1wiIGTDtm5lci5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1ZpcnR1YWxQYXRoKGZzUGF0aDogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGhvbWUgPSBwYXRoLnJlc29sdmUoaG9tZURpciB8fCAnLicpO1xyXG4gIGNvbnN0IHRhcmdldCA9IHBhdGgucmVzb2x2ZShmc1BhdGggfHwgaG9tZSk7XHJcbiAgY29uc3QgcmVsYXRpdmUgPSBwYXRoLnJlbGF0aXZlKGhvbWUsIHRhcmdldCk7XHJcbiAgaWYgKCFyZWxhdGl2ZSB8fCByZWxhdGl2ZS5zdGFydHNXaXRoKCcuLicpIHx8IHBhdGguaXNBYnNvbHV0ZShyZWxhdGl2ZSkpIHtcclxuICAgIHJldHVybiAnLyc7XHJcbiAgfVxyXG4gIHJldHVybiAnLycgKyByZWxhdGl2ZS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcbn1cclxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhdGhVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxNQUFZLElBQUksaUNBQWE7QUFDN0IsTUFBWSxFQUFFLCtCQUFXO0FBTXpCLDBCQUFpQyxPQUFlO0lBQzlDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBR0QsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFHN0MsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBRXZGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBR0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDcEUsVUFBVSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFNRCw2QkFBb0MsT0FBZTtJQUNqRCxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUdELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBSTdDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUU3QyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUtyRSxJQUFJLFVBQVUsS0FBSyxhQUFhLElBQUksVUFBVSxLQUFLLGFBQWEsRUFBRSxDQUFDO1FBRWpFLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDOUIsQ0FBQztTQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUV0RixVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ3hCLENBQUM7U0FBTSxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUU3QixVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFHRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUUvQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBR0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFFM0UsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUdELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9ELFVBQVUsR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBS0QsMEJBQWlDLFVBQWtCLEVBQUUsT0FBZTtJQUVsRSxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFHNUQsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUdyRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxJQUFJLFNBQVMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFLTSxLQUFLLGdDQUFnQyxPQUFlO0lBQ3pELElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFFZixJQUFLLEtBQStCLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBS0QscUJBQTRCLE9BQWUsRUFBRSxRQUFnQjtJQUMzRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBYUQsd0JBQStCLFVBQWtCLEVBQUUsVUFBa0IsRUFBRSxPQUFlO0lBQ3BGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBR2pELE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBR0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0MsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBR0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBTUQsdUJBQThCLE1BQWMsRUFBRSxPQUFlO0lBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5cbi8qKlxuICogRGl6aW4geW9sdW51IG5vcm1hbGl6ZSBldFxuICogV2luZG93cyBhYnNvbHV0ZSBwYXRoJ2xlcmkgbXV0bGFrIG9sYXJhayBrYWxzxLFuLCAuLyBwcmVmaXgnaSBrYWxkxLFyLCByb290J3RhbiBiYcWfbGF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEaXJQYXRoKGRpclBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghZGlyUGF0aCB8fCB0eXBlb2YgZGlyUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyAxLiBXaW5kb3dzIGFic29sdXRlIHBhdGgnbGVyaSBub3JtYWxpemUgZXQgKEM6XFwuLi4gLT4gQzovLi4uKVxuICBsZXQgbm9ybWFsaXplZCA9IGRpclBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gIC8vIDIuIFdpbmRvd3MgZHJpdmUgbGV0dGVyIHBhdGgga29udHJvbMO8IChDOi8uLi4gdmV5YSBDOi4uLilcbiAgaWYgKC9eW2EtekEtWl06XFwvLy50ZXN0KG5vcm1hbGl6ZWQpIHx8IC9eKFthLXpBLVpdOlxcLil8KFthLXpBLVpdOlxcLykvLnRlc3Qobm9ybWFsaXplZCkpIHtcbiAgICAvLyBXaW5kb3dzIGFic29sdXRlIHBhdGgsIG11dGxhayBvbGFyYWsga2Fsc8SxbjogQzovVXNlcnMvLi4uL2ZpbGVzL2FkbWluXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvLyAzLiAuLyBwcmVmaXgnaSBrYWxkxLFyXG4gIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zbGljZSgyKTtcbiAgfVxuXG4gIC8vIDQuIEXEn2VyIGFic29sdXRlIGRlxJ9pbHNlLCByb290J2RhbiBiYcWfbGF0XG4gIGlmICghbm9ybWFsaXplZC5zdGFydHNXaXRoKCcvJykgJiYgIS9eW2EtekEtWl06XFwvLy50ZXN0KG5vcm1hbGl6ZWQpKSB7XG4gICAgbm9ybWFsaXplZCA9ICcvJyArIG5vcm1hbGl6ZWQ7XG4gIH1cbiAgXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIExpbnV4IHZlIFdpbmRvd3MgcGF0aCdsZXJpbmkgZ8O8w6dsw7wgxZ9la2lsZGUgbm9ybWFsaXplIGV0XG4gKiBCYWNrc2xhc2ggLT4gZm9yd2FyZCBzbGFzaCwgLi8gdmUgLi4vIMOnw7Z6LCByZWxhdGl2ZSBwYXRoIHlhcCAoUE9TSVggLyB5ZXJpbmUgV2luZG93cyB1eXVtbHUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb2J1c3RQYXRoTm9ybWFsaXplKGRpclBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghZGlyUGF0aCB8fCB0eXBlb2YgZGlyUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyAxLiBCYWNrc2xhc2gnbGVyaSBmb3J3YXJkIHNsYXNoJ2Ugw6dldmlyXG4gIGxldCBub3JtYWxpemVkID0gZGlyUGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG5cbiAgLy8gMi4gLi8gdmUgLi4vIHNlZ21lbnQnbGVyaW5pIMOnw7Z6XG4gIC8vIHJlcGVhdGVkIC8gLT4gc2luZ2xlIC9cbiAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICAvLyAuLyBzZWdtZW50J2xlcmluaSBrYWxkxLFyXG4gIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnJlcGxhY2UoL1xcL1xcLlxcLy9nLCAnLycpLnJlcGxhY2UoL1xcLlxcLy9nLCAnJyk7XG4gIC8vIC4uLyBzZWdtZW50J2xlcmluaSBpxZ9sZSAoYmFzaXTDp2UsIHBhdGgucmVzb2x2ZSBoYWxsZWRlY2VrKVxuICAvLyBOb3RlOiAuL2ZpbGVzL2FkbWluIC0+IGZpbGVzL2FkbWluLCB0aGVuIHdlJ2xsIGNvbnZlcnQgdG8gYWJzb2x1dGUgYmVsb3dcblxuICAvLyAzLiAuL2ZpbGVzL2FkbWluIGdpYmkgcmVsYXRpdmUgeW9sIHZhcnNhLCBtdXRsYWsgaGFsZSDDp2V2aXJcbiAgaWYgKG5vcm1hbGl6ZWQgPT09ICdmaWxlcy9hZG1pbicgfHwgbm9ybWFsaXplZCA9PT0gJ2ZpbGVzL2d1ZXN0Jykge1xuICAgIC8vIC4vZmlsZXMvYWRtaW4gbm9ybWFsaXplIGVkaWxpbmNlIGZpbGVzL2FkbWluIG9sZHUsIGJ1bnUgbXV0bGFrIGhhbGUgw6dldmlyXG4gICAgbm9ybWFsaXplZCA9ICcvZmlsZXMvYWRtaW4nO1xuICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWQgPT09ICdmaWxlcycgfHwgbm9ybWFsaXplZCA9PT0gJ2FkbWluJyB8fCBub3JtYWxpemVkID09PSAnZ3Vlc3QnKSB7XG4gICAgLy8gZmlsZXMgbm9ybWFsaXplIGVkaWxpbmNlLCAvZmlsZXMgb2xhcmFrIMOnZXZpclxuICAgIG5vcm1hbGl6ZWQgPSAnL2ZpbGVzJztcbiAgfSBlbHNlIGlmIChub3JtYWxpemVkID09PSAnJykge1xuICAgIC8vIGVtcHR5IC0+IC9cbiAgICBub3JtYWxpemVkID0gJy8nO1xuICB9XG5cbiAgLy8gNC4gUE9TSVggYWJzb2x1dGUgcGF0aCBrb250cm9sw7wgKC9maWxlcy9hZG1pbiBnaWJpKVxuICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAvLyBQT1NJWCBtdXRsYWsgeW9sIG9sYXJhayBrYWxzxLFuOiAvZmlsZXMvYWRtaW5cbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8vIDUuIFdpbmRvd3MgYWJzb2x1dGUgcGF0aCBrb250cm9sw7wgKEM6L2ZpbGVzL2FkbWluIGdpYmkpXG4gIGlmICgvXlthLXpBLVpdOlxcL1xcLy8udGVzdChub3JtYWxpemVkKSB8fCAvXlthLXpBLVpdOlxcL1xcLi8udGVzdChub3JtYWxpemVkKSkge1xuICAgIC8vIFdpbmRvd3MgbXV0bGFrIHlvbCBvbGFyYWsga2Fsc8SxbjogQzovZmlsZXMvYWRtaW5cbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8vIDYuIFJlbGF0aXZlIHBhdGggaXNlIC4vIGlsZSBiYcWfbGF0IChXaW5kb3dzIHV5dW1sdSlcbiAgaWYgKCFub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy4nKSAmJiAhbm9ybWFsaXplZC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICBub3JtYWxpemVkID0gJy4vJyArIG5vcm1hbGl6ZWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLyoqXG4gKiBHw5xWRU5MxLBLOiBQYXRoJ2luIGhvbWVEaXIgacOnaW5kZSBvbHVwIG9sbWFkxLHEn8SxbsSxIGtvbnRyb2wgZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGF0aFdpdGhpbkhvbWUodGFyZ2V0UGF0aDogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gTm9ybWFsaXplIGJvdGggcGF0aHMgdG8gZm9yd2FyZCBzbGFzaGVzIGZvciBjcm9zcy1wbGF0Zm9ybSBjb21wYXJpc29uXG4gIGNvbnN0IHRhcmdldE5vcm1hbGl6ZWQgPSB0YXJnZXRQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgY29uc3QgaG9tZU5vcm1hbGl6ZWQgPSAoaG9tZURpciB8fCAnLicpLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcblxuICAvLyBTdHJpcCB0cmFpbGluZyBzbGFzaGVzXG4gIGNvbnN0IHRhcmdldENsZWFuID0gdGFyZ2V0Tm9ybWFsaXplZC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgY29uc3QgaG9tZUNsZWFuID0gaG9tZU5vcm1hbGl6ZWQucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG5cbiAgLy8gSWYgcGF0aHMgYXJlIGVxdWFsLCB0YXJnZXQgaXMgd2l0aGluIGhvbWVcbiAgaWYgKHRhcmdldENsZWFuID09PSBob21lQ2xlYW4pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRhcmdldCBzdGFydHMgd2l0aCBob21lICsgJy8nIChpLmUuLCB0YXJnZXQgaXMgaW5zaWRlIGhvbWUpXG4gIGlmIChob21lQ2xlYW4gIT09ICcnICYmIHRhcmdldENsZWFuLnN0YXJ0c1dpdGgoaG9tZUNsZWFuICsgJy8nKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIERpemluIHZhcmzEscSfxLFuZGFuIGVtaW4gb2xcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZURpcmVjdG9yeUV4aXN0cyhkaXJQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihkaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBaYXRlbiB2YXJzYSBoYXRhIHZlcm1lelxuICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRUVYSVNUJykge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGFtIHlvbCBvbHXFn3R1clxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsbFBhdGgoYmFzZURpcjogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFiYXNlRGlyIHx8ICFmaWxlUGF0aCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gcGF0aC5yZXNvbHZlKGJhc2VEaXIsIGZpbGVQYXRoKTtcbn1cblxuLyoqXG4gKiBGVFAgaXN0ZW1jaXNpbmluIGfDtm5kZXJkacSfaSB5b2x1IGRvc3lhIHNpc3RlbWkgbXV0bGFrIHlvbHVuYSDDp2V2aXIuXG4gKlxuICogLSBNdXRsYWsgV2luZG93cyB5b2x1IChDOi8uLi4gdmV5YSBDOlxcXFwuLi4pIGhlciB6YW1hbiBkb3N5YSBzaXN0ZW1pIHlvbHVkdXIuXG4gKiAtIE11dGxhayBQT1NJWCB5b2x1ICgvYWx0L2RpemluKSDDtm5jZSBkb3N5YSBzaXN0ZW1pIHlvbHUgb2xhcmFrIGRlbmVuaXI7XG4gKiAgIGt1bGxhbsSxY8SxbsSxbiBob21lRGlyJ2kgacOnaW5kZSBkZcSfaWxzZSBzYW5hbCBrw7ZrIChob21lRGlyKSDDvHplcmluZGVuIMOnw7Z6w7xsw7xyLlxuICogLSBHw7ZyZWxpIHlvbCBoZXIgemFtYW4gY3VycmVudERpciDDvHplcmluZGVuIMOnw7Z6w7xsw7xyLlxuICpcbiAqIETDtm5lbiBkZcSfZXIgbXV0bGFrIGRvc3lhIHNpc3RlbWkgeW9sdWR1cjsgaG9tZURpciBpw6dpbmRlIG9sdXAgb2xtYWTEscSfxLFuxLFcbiAqIMOnYcSfxLFyYW4ga29udHJvbCBlZGVyIChpc1BhdGhXaXRoaW5Ib21lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGdHBQYXRoKHRhcmdldFBhdGg6IHN0cmluZywgY3VycmVudERpcjogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBob21lID0gcGF0aC5yZXNvbHZlKGhvbWVEaXIgfHwgJy4nKTtcbiAgY29uc3QgY3VycmVudCA9IHBhdGgucmVzb2x2ZShjdXJyZW50RGlyIHx8IGhvbWUpO1xuXG4gIC8vIEJhY2tzbGFzaCAtPiBzbGFzaCwgdGVrcmFyIGVkZW4gc2xhc2ggLT4gdGVrIHNsYXNoXG4gIGNvbnN0IHJhdyA9ICh0YXJnZXRQYXRoIHx8ICcnKS50cmltKCkucmVwbGFjZSgvXFxcXC9nLCAnLycpLnJlcGxhY2UoL1xcL3syLH0vZywgJy8nKTtcbiAgaWYgKCFyYXcgfHwgcmF3ID09PSAnLicpIHtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIC8vIFPDvHLDvGPDvCBoYXJmaSAoQzovLi4uKSBkb3N5YSBzaXN0ZW1pIHlvbHVkdXJcbiAgaWYgKC9eW2EtekEtWl06XFwvLy50ZXN0KHJhdykpIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHJhdyk7XG4gIH1cblxuICAvLyBQT1NJWCBtdXRsYWsgeW9sXG4gIGlmIChyYXcuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgY29uc3QgYXNGaWxlU3lzdGVtUGF0aCA9IHBhdGgucmVzb2x2ZShyYXcpO1xuICAgIC8vIGhvbWVEaXIgacOnaW5kZXlzZSBnZXLDp2VrIGRvc3lhIHNpc3RlbWkgeW9sdSBvbGFyYWsga3VsbGFuXG4gICAgaWYgKGlzUGF0aFdpdGhpbkhvbWUoYXNGaWxlU3lzdGVtUGF0aCwgaG9tZSkpIHtcbiAgICAgIHJldHVybiBhc0ZpbGVTeXN0ZW1QYXRoO1xuICAgIH1cbiAgICAvLyBEZcSfaWxzZSBzYW5hbCBrw7ZrID0ga3VsbGFuxLFjxLFuxLFuIGhvbWVEaXInaVxuICAgIHJldHVybiBwYXRoLnJlc29sdmUoaG9tZSwgcmF3LnJlcGxhY2UoL15cXC8rLywgJycpKTtcbiAgfVxuXG4gIC8vIEfDtnJlbGkgeW9sOiBidWx1bmR1xJ91IGRpemluZGVuIMOnw7Z6w7xtbGVcbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShjdXJyZW50LCByYXcpO1xufVxuXG4vKipcbiAqIERvc3lhIHNpc3RlbWkgeW9sdW51IGlzdGVtY2luaW4gZ8O2cmVjZcSfaSBzYW5hbCAoLyBrw7ZrbMO8KSB5b2xhIMOnZXZpci5cbiAqIGhvbWVEaXIga8O2ayBkaXppbiBvbGR1xJ91IGnDp2luIGTEscWfYXLEsWRhIGthbGFuIHlvbGxhciBcIi9cIiBkw7ZuZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1ZpcnR1YWxQYXRoKGZzUGF0aDogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBob21lID0gcGF0aC5yZXNvbHZlKGhvbWVEaXIgfHwgJy4nKTtcbiAgY29uc3QgdGFyZ2V0ID0gcGF0aC5yZXNvbHZlKGZzUGF0aCB8fCBob21lKTtcbiAgY29uc3QgcmVsYXRpdmUgPSBwYXRoLnJlbGF0aXZlKGhvbWUsIHRhcmdldCk7XG4gIGlmICghcmVsYXRpdmUgfHwgcmVsYXRpdmUuc3RhcnRzV2l0aCgnLi4nKSB8fCBwYXRoLmlzQWJzb2x1dGUocmVsYXRpdmUpKSB7XG4gICAgcmV0dXJuICcvJztcbiAgfVxuICByZXR1cm4gJy8nICsgcmVsYXRpdmUucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufVxuIl19
|