@wppconnect/server 2.8.1 → 2.8.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/CHANGELOG.md +10 -0
- package/Dockerfile +2 -2
- package/dist/controller/catalogController.js +17 -17
- package/dist/controller/communityController.js +15 -15
- package/dist/controller/deviceController.js +107 -107
- package/dist/controller/groupController.js +44 -44
- package/dist/controller/labelsController.js +3 -3
- package/dist/controller/messageController.js +17 -27
- package/dist/controller/miscController.js +14 -14
- package/dist/controller/sessionController.js +41 -36
- package/dist/controller/statusController.js +7 -8
- package/dist/middleware/auth.js +1 -1
- package/dist/middleware/statusConnection.js +4 -4
- package/dist/routes/index.js +1 -1
- package/docker-compose.yml +2 -0
- package/package.json +33 -33
|
@@ -52,10 +52,10 @@ var _sessionUtil = require("../util/sessionUtil"); /*
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
}
|
|
55
|
-
*/const { secretkey } = req.params;if (secretkey !== _config.default.secretKey) {
|
|
56
|
-
|
|
55
|
+
*/const { secretkey } = req.params;if (secretkey !== _config.default.secretKey) {res.status(400).json({ response: 'error', message: 'The token is incorrect' });}try {res.setHeader('Content-Type', 'application/zip');
|
|
56
|
+
res.send(await (0, _manageSession.backupSessions)(req));
|
|
57
57
|
} catch (error) {
|
|
58
|
-
|
|
58
|
+
res.status(500).json({
|
|
59
59
|
status: false,
|
|
60
60
|
message: 'Error on backup session',
|
|
61
61
|
error: error
|
|
@@ -92,7 +92,7 @@ async function restoreAllSessions(req, res) {
|
|
|
92
92
|
const { secretkey } = req.params;
|
|
93
93
|
|
|
94
94
|
if (secretkey !== _config.default.secretKey) {
|
|
95
|
-
|
|
95
|
+
res.status(400).json({
|
|
96
96
|
response: 'error',
|
|
97
97
|
message: 'The token is incorrect'
|
|
98
98
|
});
|
|
@@ -100,9 +100,9 @@ async function restoreAllSessions(req, res) {
|
|
|
100
100
|
|
|
101
101
|
try {
|
|
102
102
|
const result = await (0, _manageSession.restoreSessions)(req, req.file);
|
|
103
|
-
|
|
103
|
+
res.status(200).json(result);
|
|
104
104
|
} catch (error) {
|
|
105
|
-
|
|
105
|
+
res.status(500).json({
|
|
106
106
|
status: false,
|
|
107
107
|
message: 'Error on restore session',
|
|
108
108
|
error: error
|
|
@@ -124,9 +124,9 @@ async function takeScreenshot(req, res) {
|
|
|
124
124
|
|
|
125
125
|
try {
|
|
126
126
|
const result = await req.client.takeScreenshot();
|
|
127
|
-
|
|
127
|
+
res.status(200).json(result);
|
|
128
128
|
} catch (error) {
|
|
129
|
-
|
|
129
|
+
res.status(500).json({
|
|
130
130
|
status: false,
|
|
131
131
|
message: 'Error on take screenshot',
|
|
132
132
|
error: error
|
|
@@ -151,7 +151,7 @@ async function clearSessionData(req, res) {
|
|
|
151
151
|
const { secretkey, session } = req.params;
|
|
152
152
|
|
|
153
153
|
if (secretkey !== _config.default.secretKey) {
|
|
154
|
-
|
|
154
|
+
res.status(400).json({
|
|
155
155
|
response: 'error',
|
|
156
156
|
message: 'The token is incorrect'
|
|
157
157
|
});
|
|
@@ -170,10 +170,10 @@ async function clearSessionData(req, res) {
|
|
|
170
170
|
if (_fs.default.existsSync(pathToken)) {
|
|
171
171
|
await _fs.default.promises.rm(pathToken);
|
|
172
172
|
}
|
|
173
|
-
|
|
173
|
+
res.status(200).json({ success: true });
|
|
174
174
|
} catch (error) {
|
|
175
175
|
_.logger.error(error);
|
|
176
|
-
|
|
176
|
+
res.status(500).json({
|
|
177
177
|
status: false,
|
|
178
178
|
message: 'Error on clear session data',
|
|
179
179
|
error: error
|
|
@@ -222,13 +222,13 @@ async function setLimit(req, res) {
|
|
|
222
222
|
if (!type || !value) throw new Error('Send de type and value');
|
|
223
223
|
|
|
224
224
|
const result = await req.client.setLimit(type, value);
|
|
225
|
-
|
|
225
|
+
res.status(200).json(result);
|
|
226
226
|
} catch (error) {
|
|
227
|
-
|
|
227
|
+
res.status(500).json({
|
|
228
228
|
status: false,
|
|
229
229
|
message: 'Error on set limit',
|
|
230
230
|
error: error
|
|
231
231
|
});
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl8iLCJfY29uZmlnIiwiX21hbmFnZVNlc3Npb24iLCJfc2Vzc2lvblV0aWwiLCJiYWNrdXBBbGxTZXNzaW9ucyIsInJlcSIsInJlcyIsInNlY3JldGtleSIsInBhcmFtcyIsImNvbmZpZyIsInNlY3JldEtleSIsInN0YXR1cyIsImpzb24iLCJyZXNwb25zZSIsIm1lc3NhZ2UiLCJzZXRIZWFkZXIiLCJzZW5kIiwiYmFja3VwU2Vzc2lvbnMiLCJlcnJvciIsInJlc3RvcmVBbGxTZXNzaW9ucyIsInJlc3VsdCIsInJlc3RvcmVTZXNzaW9ucyIsImZpbGUiLCJ0YWtlU2NyZWVuc2hvdCIsImNsaWVudCIsImNsZWFyU2Vzc2lvbkRhdGEiLCJzZXNzaW9uIiwicGFnZSIsImNsaWVudHNBcnJheSIsImxvZ291dCIsInBhdGgiLCJjdXN0b21Vc2VyRGF0YURpciIsInBhdGhUb2tlbiIsIl9fZGlybmFtZSIsImZzIiwiZXhpc3RzU3luYyIsInByb21pc2VzIiwicm0iLCJyZWN1cnNpdmUiLCJzdWNjZXNzIiwibG9nZ2VyIiwic2V0TGltaXQiLCJ0eXBlIiwidmFsdWUiLCJib2R5IiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9taXNjQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLic7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBiYWNrdXBTZXNzaW9ucywgcmVzdG9yZVNlc3Npb25zIH0gZnJvbSAnLi4vdXRpbC9tYW5hZ2VTZXNzaW9uJztcbmltcG9ydCB7IGNsaWVudHNBcnJheSB9IGZyb20gJy4uL3V0aWwvc2Vzc2lvblV0aWwnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFja3VwQWxsU2Vzc2lvbnMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAgICogI3N3YWdnZXIuZGVzY3JpcHRpb24gPSAnUGxlYXNlLCBvcGVuIHRoZSByb3V0ZXIgaW4geW91ciBicm93c2VyLCBpbiBzd2FnZ2VyIHRoaXMgbm90IHJ1bidcbiAgICAgKiAjc3dhZ2dlci5wcm9kdWNlcyA9IFsnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ11cbiAgICAgKiAjc3dhZ2dlci5jb25zdW1lcyA9IFsnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ11cbiAgICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgc2NoZW1hOiAnVEhJU0lTTVlTRUNVUkVUT0tFTidcbiAgICAgICB9XG4gICAgICAgI3N3YWdnZXIucmVzcG9uc2VzWzIwMF0gPSB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQSBaSVAgZmlsZSBjb250YWluZ3MgeW91ciBiYWNrdXAuIFBsZWFzZSwgb3BlbiB0aGlzIGxpbmsgaW4geW91ciBicm93c2VyJyxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vemlwXCI6IHtcbiAgICAgICAgICAgIHNjaGVtYToge31cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICovXG4gIGNvbnN0IHsgc2VjcmV0a2V5IH0gPSByZXEucGFyYW1zO1xuXG4gIGlmIChzZWNyZXRrZXkgIT09IGNvbmZpZy5zZWNyZXRLZXkpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgcmVzcG9uc2U6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHRva2VuIGlzIGluY29ycmVjdCcsXG4gICAgfSk7XG4gIH1cblxuICB0cnkge1xuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi96aXAnKTtcbiAgICByZXR1cm4gcmVzLnNlbmQoYXdhaXQgYmFja3VwU2Vzc2lvbnMocmVxKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gYmFja3VwIHNlc3Npb24nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXN0b3JlQWxsU2Vzc2lvbnMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgI3N3YWdnZXIudGFncyA9IFtcIk1pc2NcIl1cbiAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlY3JldGtleVwiXSA9IHtcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgY29udGVudDoge1xuICAgICAgICBcIm11bHRpcGFydC9mb3JtLWRhdGFcIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogXCJiaW5hcnlcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsnZmlsZSddLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgKi9cbiAgY29uc3QgeyBzZWNyZXRrZXkgfSA9IHJlcS5wYXJhbXM7XG5cbiAgaWYgKHNlY3JldGtleSAhPT0gY29uZmlnLnNlY3JldEtleSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICByZXNwb25zZTogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgdG9rZW4gaXMgaW5jb3JyZWN0JyxcbiAgICB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzdG9yZVNlc3Npb25zKHJlcSwgcmVxLmZpbGUgYXMgYW55KTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzdWx0KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHJlc3RvcmUgc2Vzc2lvbicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRha2VTY3JlZW5zaG90KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgIH1cbiAgKi9cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQudGFrZVNjcmVlbnNob3QoKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzdWx0KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHRha2Ugc2NyZWVuc2hvdCcsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsZWFyU2Vzc2lvbkRhdGEocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgI3N3YWdnZXIudGFncyA9IFtcIk1pc2NcIl1cbiAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlY3JldGtleVwiXSA9IHtcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgIH1cbiAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICB9XG4gICovXG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IHNlY3JldGtleSwgc2Vzc2lvbiB9ID0gcmVxLnBhcmFtcztcblxuICAgIGlmIChzZWNyZXRrZXkgIT09IGNvbmZpZy5zZWNyZXRLZXkpIHtcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICAgIHJlc3BvbnNlOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnVGhlIHRva2VuIGlzIGluY29ycmVjdCcsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlcT8uY2xpZW50Py5wYWdlKSB7XG4gICAgICBkZWxldGUgY2xpZW50c0FycmF5W3JlcS5wYXJhbXMuc2Vzc2lvbl07XG4gICAgICBhd2FpdCByZXEuY2xpZW50LmxvZ291dCgpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gY29uZmlnLmN1c3RvbVVzZXJEYXRhRGlyICsgc2Vzc2lvbjtcbiAgICBjb25zdCBwYXRoVG9rZW4gPSBfX2Rpcm5hbWUgKyBgLi4vLi4vLi4vdG9rZW5zLyR7c2Vzc2lvbn0uZGF0YS5qc29uYDtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aCwge1xuICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aFRva2VuKSkge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aFRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gY2xlYXIgc2Vzc2lvbiBkYXRhJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0TGltaXQocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgI3N3YWdnZXIudGFncyA9IFtcIk1pc2NcIl1cbiAgICNzd2FnZ2VyLmRlc2NyaXB0aW9uID0gJ0NoYW5nZSBsaW1pdHMgb2Ygd2hhdHNhcHAgd2ViLiBUeXBlcyB2YWx1ZTogbWF4TWVkaWFTaXplLCBtYXhGaWxlU2l6ZSwgbWF4U2hhcmUsIHN0YXR1c1ZpZGVvTWF4RHVyYXRpb24sIHVubGltaXRlZFBpbjsnXG4gICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgdHlwZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICB2YWx1ZTogeyB0eXBlOiAnYW55JyB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3R5cGUnLCAndmFsdWUnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAnRGVmYXVsdCc6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnbWF4RmlsZVNpemUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxMDQ4NTc2MDBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICAqL1xuXG4gIHRyeSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gcmVxLmJvZHk7XG4gICAgaWYgKCF0eXBlIHx8ICF2YWx1ZSkgdGhyb3cgbmV3IEVycm9yKCdTZW5kIGRlIHR5cGUgYW5kIHZhbHVlJyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LnNldExpbWl0KHR5cGUsIHZhbHVlKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzdWx0KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHNldCBsaW1pdCcsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBOztBQUVBLElBQUFDLENBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUgsT0FBQTtB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
|
|
234
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl8iLCJfY29uZmlnIiwiX21hbmFnZVNlc3Npb24iLCJfc2Vzc2lvblV0aWwiLCJiYWNrdXBBbGxTZXNzaW9ucyIsInJlcSIsInJlcyIsInNlY3JldGtleSIsInBhcmFtcyIsImNvbmZpZyIsInNlY3JldEtleSIsInN0YXR1cyIsImpzb24iLCJyZXNwb25zZSIsIm1lc3NhZ2UiLCJzZXRIZWFkZXIiLCJzZW5kIiwiYmFja3VwU2Vzc2lvbnMiLCJlcnJvciIsInJlc3RvcmVBbGxTZXNzaW9ucyIsInJlc3VsdCIsInJlc3RvcmVTZXNzaW9ucyIsImZpbGUiLCJ0YWtlU2NyZWVuc2hvdCIsImNsaWVudCIsImNsZWFyU2Vzc2lvbkRhdGEiLCJzZXNzaW9uIiwicGFnZSIsImNsaWVudHNBcnJheSIsImxvZ291dCIsInBhdGgiLCJjdXN0b21Vc2VyRGF0YURpciIsInBhdGhUb2tlbiIsIl9fZGlybmFtZSIsImZzIiwiZXhpc3RzU3luYyIsInByb21pc2VzIiwicm0iLCJyZWN1cnNpdmUiLCJzdWNjZXNzIiwibG9nZ2VyIiwic2V0TGltaXQiLCJ0eXBlIiwidmFsdWUiLCJib2R5IiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9taXNjQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLic7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBiYWNrdXBTZXNzaW9ucywgcmVzdG9yZVNlc3Npb25zIH0gZnJvbSAnLi4vdXRpbC9tYW5hZ2VTZXNzaW9uJztcbmltcG9ydCB7IGNsaWVudHNBcnJheSB9IGZyb20gJy4uL3V0aWwvc2Vzc2lvblV0aWwnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFja3VwQWxsU2Vzc2lvbnMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAgICogI3N3YWdnZXIuZGVzY3JpcHRpb24gPSAnUGxlYXNlLCBvcGVuIHRoZSByb3V0ZXIgaW4geW91ciBicm93c2VyLCBpbiBzd2FnZ2VyIHRoaXMgbm90IHJ1bidcbiAgICAgKiAjc3dhZ2dlci5wcm9kdWNlcyA9IFsnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ11cbiAgICAgKiAjc3dhZ2dlci5jb25zdW1lcyA9IFsnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ11cbiAgICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgc2NoZW1hOiAnVEhJU0lTTVlTRUNVUkVUT0tFTidcbiAgICAgICB9XG4gICAgICAgI3N3YWdnZXIucmVzcG9uc2VzWzIwMF0gPSB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQSBaSVAgZmlsZSBjb250YWluZ3MgeW91ciBiYWNrdXAuIFBsZWFzZSwgb3BlbiB0aGlzIGxpbmsgaW4geW91ciBicm93c2VyJyxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vemlwXCI6IHtcbiAgICAgICAgICAgIHNjaGVtYToge31cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICovXG4gIGNvbnN0IHsgc2VjcmV0a2V5IH0gPSByZXEucGFyYW1zO1xuXG4gIGlmIChzZWNyZXRrZXkgIT09IGNvbmZpZy5zZWNyZXRLZXkpIHtcbiAgICByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICByZXNwb25zZTogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgdG9rZW4gaXMgaW5jb3JyZWN0JyxcbiAgICB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3ppcCcpO1xuICAgIHJlcy5zZW5kKGF3YWl0IGJhY2t1cFNlc3Npb25zKHJlcSkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gYmFja3VwIHNlc3Npb24nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXN0b3JlQWxsU2Vzc2lvbnMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgI3N3YWdnZXIudGFncyA9IFtcIk1pc2NcIl1cbiAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlY3JldGtleVwiXSA9IHtcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgY29udGVudDoge1xuICAgICAgICBcIm11bHRpcGFydC9mb3JtLWRhdGFcIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogXCJiaW5hcnlcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsnZmlsZSddLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgKi9cbiAgY29uc3QgeyBzZWNyZXRrZXkgfSA9IHJlcS5wYXJhbXM7XG5cbiAgaWYgKHNlY3JldGtleSAhPT0gY29uZmlnLnNlY3JldEtleSkge1xuICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgIHJlc3BvbnNlOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ1RoZSB0b2tlbiBpcyBpbmNvcnJlY3QnLFxuICAgIH0pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXN0b3JlU2Vzc2lvbnMocmVxLCByZXEuZmlsZSBhcyBhbnkpO1xuICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3VsdCk7XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHJlc3RvcmUgc2Vzc2lvbicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRha2VTY3JlZW5zaG90KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgIH1cbiAgKi9cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQudGFrZVNjcmVlbnNob3QoKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuanNvbihyZXN1bHQpO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiB0YWtlIHNjcmVlbnNob3QnLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbGVhclNlc3Npb25EYXRhKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgc2NoZW1hOiAnVEhJU0lTTVlTRUNVUkVUT0tFTidcbiAgICB9XG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgfVxuICAqL1xuXG4gIHRyeSB7XG4gICAgY29uc3QgeyBzZWNyZXRrZXksIHNlc3Npb24gfSA9IHJlcS5wYXJhbXM7XG5cbiAgICBpZiAoc2VjcmV0a2V5ICE9PSBjb25maWcuc2VjcmV0S2V5KSB7XG4gICAgICByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICAgIHJlc3BvbnNlOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnVGhlIHRva2VuIGlzIGluY29ycmVjdCcsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlcT8uY2xpZW50Py5wYWdlKSB7XG4gICAgICBkZWxldGUgY2xpZW50c0FycmF5W3JlcS5wYXJhbXMuc2Vzc2lvbl07XG4gICAgICBhd2FpdCByZXEuY2xpZW50LmxvZ291dCgpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gY29uZmlnLmN1c3RvbVVzZXJEYXRhRGlyICsgc2Vzc2lvbjtcbiAgICBjb25zdCBwYXRoVG9rZW4gPSBfX2Rpcm5hbWUgKyBgLi4vLi4vLi4vdG9rZW5zLyR7c2Vzc2lvbn0uZGF0YS5qc29uYDtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aCwge1xuICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aFRva2VuKSkge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aFRva2VuKTtcbiAgICB9XG4gICAgcmVzLnN0YXR1cygyMDApLmpzb24oeyBzdWNjZXNzOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGNsZWFyIHNlc3Npb24gZGF0YScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldExpbWl0KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAjc3dhZ2dlci5kZXNjcmlwdGlvbiA9ICdDaGFuZ2UgbGltaXRzIG9mIHdoYXRzYXBwIHdlYi4gVHlwZXMgdmFsdWU6IG1heE1lZGlhU2l6ZSwgbWF4RmlsZVNpemUsIG1heFNoYXJlLCBzdGF0dXNWaWRlb01heER1cmF0aW9uLCB1bmxpbWl0ZWRQaW47J1xuICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgfV1cbiAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBjb250ZW50OiB7XG4gICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgdmFsdWU6IHsgdHlwZTogJ2FueScgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogWyd0eXBlJywgJ3ZhbHVlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgJ0RlZmF1bHQnOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21heEZpbGVTaXplJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMTA0ODU3NjAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgKi9cblxuICB0cnkge1xuICAgIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHJlcS5ib2R5O1xuICAgIGlmICghdHlwZSB8fCAhdmFsdWUpIHRocm93IG5ldyBFcnJvcignU2VuZCBkZSB0eXBlIGFuZCB2YWx1ZScpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5zZXRMaW1pdCh0eXBlLCB2YWx1ZSk7XG4gICAgcmVzLnN0YXR1cygyMDApLmpzb24ocmVzdWx0KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gc2V0IGxpbWl0JyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxJQUFBQSxHQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7O0FBRUEsSUFBQUMsQ0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBLHdCQUFtRCxDQXRCbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
|
|
@@ -98,7 +98,10 @@ async function download(message, client, logger) {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
async function startAllSessions(
|
|
101
|
+
async function startAllSessions(
|
|
102
|
+
req,
|
|
103
|
+
res)
|
|
104
|
+
{
|
|
102
105
|
/**
|
|
103
106
|
* #swagger.tags = ["Auth"]
|
|
104
107
|
#swagger.autoBody=false
|
|
@@ -127,7 +130,7 @@ async function startAllSessions(req, res) {
|
|
|
127
130
|
const allSessions = await (0, _getAllTokens.default)(req);
|
|
128
131
|
|
|
129
132
|
if (tokenDecrypt !== req.serverOptions.secretKey) {
|
|
130
|
-
|
|
133
|
+
res.status(400).json({
|
|
131
134
|
response: 'error',
|
|
132
135
|
message: 'The token is incorrect'
|
|
133
136
|
});
|
|
@@ -143,7 +146,10 @@ async function startAllSessions(req, res) {
|
|
|
143
146
|
json({ status: 'success', message: 'Starting all sessions' });
|
|
144
147
|
}
|
|
145
148
|
|
|
146
|
-
async function showAllSessions(
|
|
149
|
+
async function showAllSessions(
|
|
150
|
+
req,
|
|
151
|
+
res)
|
|
152
|
+
{
|
|
147
153
|
/**
|
|
148
154
|
* #swagger.tags = ["Auth"]
|
|
149
155
|
#swagger.autoBody=false
|
|
@@ -171,7 +177,7 @@ async function showAllSessions(req, res) {
|
|
|
171
177
|
const arr = [];
|
|
172
178
|
|
|
173
179
|
if (tokenDecrypt !== req.serverOptions.secretKey) {
|
|
174
|
-
|
|
180
|
+
res.status(400).json({
|
|
175
181
|
response: false,
|
|
176
182
|
message: 'The token is incorrect'
|
|
177
183
|
});
|
|
@@ -181,7 +187,7 @@ async function showAllSessions(req, res) {
|
|
|
181
187
|
arr.push({ session: item });
|
|
182
188
|
});
|
|
183
189
|
|
|
184
|
-
|
|
190
|
+
res.status(200).json({ response: await (0, _getAllTokens.default)(req) });
|
|
185
191
|
}
|
|
186
192
|
|
|
187
193
|
async function startSession(req, res) {
|
|
@@ -315,13 +321,16 @@ async function logOutSession(req, res) {
|
|
|
315
321
|
} catch (error) {}*/
|
|
316
322
|
} catch (error) {
|
|
317
323
|
req.logger.error(error);
|
|
318
|
-
|
|
324
|
+
res.
|
|
319
325
|
status(500).
|
|
320
326
|
json({ status: false, message: 'Error closing session', error });
|
|
321
327
|
}
|
|
322
328
|
}
|
|
323
329
|
|
|
324
|
-
async function checkConnectionSession(
|
|
330
|
+
async function checkConnectionSession(
|
|
331
|
+
req,
|
|
332
|
+
res)
|
|
333
|
+
{
|
|
325
334
|
/**
|
|
326
335
|
* #swagger.tags = ["Auth"]
|
|
327
336
|
#swagger.operationId = 'CheckConnectionState'
|
|
@@ -336,9 +345,9 @@ async function checkConnectionSession(req, res) {
|
|
|
336
345
|
try {
|
|
337
346
|
await req.client.isConnected();
|
|
338
347
|
|
|
339
|
-
|
|
348
|
+
res.status(200).json({ status: true, message: 'Connected' });
|
|
340
349
|
} catch (error) {
|
|
341
|
-
|
|
350
|
+
res.status(200).json({ status: false, message: 'Disconnected' });
|
|
342
351
|
}
|
|
343
352
|
}
|
|
344
353
|
|
|
@@ -383,25 +392,25 @@ async function downloadMediaByMessage(req, res) {
|
|
|
383
392
|
}
|
|
384
393
|
|
|
385
394
|
if (!message)
|
|
386
|
-
|
|
395
|
+
res.status(400).json({
|
|
387
396
|
status: 'error',
|
|
388
397
|
message: 'Message not found'
|
|
389
398
|
});
|
|
390
399
|
|
|
391
400
|
if (!(message['mimetype'] || message.isMedia || message.isMMS))
|
|
392
|
-
|
|
401
|
+
res.status(400).json({
|
|
393
402
|
status: 'error',
|
|
394
403
|
message: 'Message does not contain media'
|
|
395
404
|
});
|
|
396
405
|
|
|
397
406
|
const buffer = await client.decryptFile(message);
|
|
398
407
|
|
|
399
|
-
|
|
408
|
+
res.
|
|
400
409
|
status(200).
|
|
401
410
|
json({ base64: buffer.toString('base64'), mimetype: message.mimetype });
|
|
402
411
|
} catch (e) {
|
|
403
412
|
req.logger.error(e);
|
|
404
|
-
|
|
413
|
+
res.status(400).json({
|
|
405
414
|
status: 'error',
|
|
406
415
|
message: 'Decrypt file error',
|
|
407
416
|
error: e
|
|
@@ -431,25 +440,25 @@ async function getMediaByMessage(req, res) {
|
|
|
431
440
|
const message = await client.getMessageById(messageId);
|
|
432
441
|
|
|
433
442
|
if (!message)
|
|
434
|
-
|
|
443
|
+
res.status(400).json({
|
|
435
444
|
status: 'error',
|
|
436
445
|
message: 'Message not found'
|
|
437
446
|
});
|
|
438
447
|
|
|
439
448
|
if (!(message['mimetype'] || message.isMedia || message.isMMS))
|
|
440
|
-
|
|
449
|
+
res.status(400).json({
|
|
441
450
|
status: 'error',
|
|
442
451
|
message: 'Message does not contain media'
|
|
443
452
|
});
|
|
444
453
|
|
|
445
454
|
const buffer = await client.decryptFile(message);
|
|
446
455
|
|
|
447
|
-
|
|
456
|
+
res.
|
|
448
457
|
status(200).
|
|
449
458
|
json({ base64: buffer.toString('base64'), mimetype: message.mimetype });
|
|
450
459
|
} catch (ex) {
|
|
451
460
|
req.logger.error(ex);
|
|
452
|
-
|
|
461
|
+
res.status(500).json({
|
|
453
462
|
status: 'error',
|
|
454
463
|
message: 'The session is not active',
|
|
455
464
|
error: ex
|
|
@@ -479,9 +488,9 @@ async function getSessionState(req, res) {
|
|
|
479
488
|
null;
|
|
480
489
|
|
|
481
490
|
if ((client == null || client.status == null) && !waitQrCode)
|
|
482
|
-
|
|
491
|
+
res.status(200).json({ status: 'CLOSED', qrcode: null });else
|
|
483
492
|
if (client != null)
|
|
484
|
-
|
|
493
|
+
res.status(200).json({
|
|
485
494
|
status: client.status,
|
|
486
495
|
qrcode: qr,
|
|
487
496
|
urlcode: client.urlcode,
|
|
@@ -489,7 +498,7 @@ async function getSessionState(req, res) {
|
|
|
489
498
|
});
|
|
490
499
|
} catch (ex) {
|
|
491
500
|
req.logger.error(ex);
|
|
492
|
-
|
|
501
|
+
res.status(500).json({
|
|
493
502
|
status: 'error',
|
|
494
503
|
message: 'The session is not active',
|
|
495
504
|
error: ex
|
|
@@ -532,20 +541,20 @@ async function getQrCode(req, res) {
|
|
|
532
541
|
});
|
|
533
542
|
res.end(img);
|
|
534
543
|
} else if (typeof req.client === 'undefined') {
|
|
535
|
-
|
|
544
|
+
res.status(200).json({
|
|
536
545
|
status: null,
|
|
537
546
|
message:
|
|
538
547
|
'Session not started. Please, use the /start-session route, for initialization your session'
|
|
539
548
|
});
|
|
540
549
|
} else {
|
|
541
|
-
|
|
550
|
+
res.status(200).json({
|
|
542
551
|
status: req.client.status,
|
|
543
552
|
message: 'QRCode is not available...'
|
|
544
553
|
});
|
|
545
554
|
}
|
|
546
555
|
} catch (ex) {
|
|
547
556
|
req.logger.error(ex);
|
|
548
|
-
|
|
557
|
+
res.
|
|
549
558
|
status(500).
|
|
550
559
|
json({ status: 'error', message: 'Error retrieving QRCode', error: ex });
|
|
551
560
|
}
|
|
@@ -565,12 +574,10 @@ async function killServiceWorker(req, res) {
|
|
|
565
574
|
}
|
|
566
575
|
*/
|
|
567
576
|
try {
|
|
568
|
-
|
|
569
|
-
status(200).
|
|
570
|
-
json({ status: 'error', response: 'Not implemented yet' });
|
|
577
|
+
res.status(200).json({ status: 'error', response: 'Not implemented yet' });
|
|
571
578
|
} catch (ex) {
|
|
572
579
|
req.logger.error(ex);
|
|
573
|
-
|
|
580
|
+
res.status(500).json({
|
|
574
581
|
status: 'error',
|
|
575
582
|
message: 'The session is not active',
|
|
576
583
|
error: ex
|
|
@@ -592,12 +599,10 @@ async function restartService(req, res) {
|
|
|
592
599
|
}
|
|
593
600
|
*/
|
|
594
601
|
try {
|
|
595
|
-
|
|
596
|
-
status(200).
|
|
597
|
-
json({ status: 'error', response: 'Not implemented yet' });
|
|
602
|
+
res.status(200).json({ status: 'error', response: 'Not implemented yet' });
|
|
598
603
|
} catch (ex) {
|
|
599
604
|
req.logger.error(ex);
|
|
600
|
-
|
|
605
|
+
res.status(500).json({
|
|
601
606
|
status: 'error',
|
|
602
607
|
response: { message: 'The session is not active', error: ex }
|
|
603
608
|
});
|
|
@@ -654,12 +659,12 @@ async function subscribePresence(req, res) {
|
|
|
654
659
|
await req.client.subscribePresence(contato);
|
|
655
660
|
}
|
|
656
661
|
|
|
657
|
-
|
|
662
|
+
res.status(200).json({
|
|
658
663
|
status: 'success',
|
|
659
664
|
response: { message: 'Subscribe presence executed' }
|
|
660
665
|
});
|
|
661
666
|
} catch (error) {
|
|
662
|
-
|
|
667
|
+
res.status(500).json({
|
|
663
668
|
status: 'error',
|
|
664
669
|
message: 'Error on subscribe presence',
|
|
665
670
|
error: error
|
|
@@ -727,13 +732,13 @@ async function editBusinessProfile(req, res) {
|
|
|
727
732
|
}
|
|
728
733
|
*/
|
|
729
734
|
try {
|
|
730
|
-
|
|
735
|
+
res.status(200).json(await req.client.editBusinessProfile(req.body));
|
|
731
736
|
} catch (error) {
|
|
732
|
-
|
|
737
|
+
res.status(500).json({
|
|
733
738
|
status: 'error',
|
|
734
739
|
message: 'Error on edit business profile',
|
|
735
740
|
error: error
|
|
736
741
|
});
|
|
737
742
|
}
|
|
738
743
|
}
|
|
739
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9taW1lVHlwZXMiLCJfcXJjb2RlIiwiX3BhY2thZ2UiLCJfY29uZmlnIiwiX2NyZWF0ZVNlc3Npb25VdGlsIiwiX2Z1bmN0aW9ucyIsIl9nZXRBbGxUb2tlbnMiLCJfc2Vzc2lvblV0aWwiLCJTZXNzaW9uVXRpbCIsIkNyZWF0ZVNlc3Npb25VdGlsIiwiZG93bmxvYWRGaWxlRnVuY3Rpb24iLCJtZXNzYWdlIiwiY2xpZW50IiwibG9nZ2VyIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJmaWxlbmFtZSIsInQiLCJmcyIsImV4aXN0c1N5bmMiLCJyZXN1bHQiLCJ0eXBlIiwibWltZSIsImV4dGVuc2lvbiIsIm1pbWV0eXBlIiwid3JpdGVGaWxlIiwiZXJyIiwiZXJyb3IiLCJlIiwid2FybiIsImRvd25sb2FkTWVkaWEiLCJkb3dubG9hZCIsInBhdGgiLCJyZXBsYWNlIiwic3RhcnRBbGxTZXNzaW9ucyIsInJlcSIsInJlcyIsInNlY3JldGtleSIsInBhcmFtcyIsImF1dGhvcml6YXRpb24iLCJ0b2tlbiIsImhlYWRlcnMiLCJ0b2tlbkRlY3J5cHQiLCJ1bmRlZmluZWQiLCJzcGxpdCIsImFsbFNlc3Npb25zIiwiZ2V0QWxsVG9rZW5zIiwic2VydmVyT3B0aW9ucyIsInNlY3JldEtleSIsInN0YXR1cyIsImpzb24iLCJyZXNwb25zZSIsIm1hcCIsInNlc3Npb24iLCJ1dGlsIiwib3BlbmRhdGEiLCJzaG93QWxsU2Vzc2lvbnMiLCJhcnIiLCJPYmplY3QiLCJrZXlzIiwiY2xpZW50c0FycmF5IiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwic3RhcnRTZXNzaW9uIiwid2FpdFFyQ29kZSIsImJvZHkiLCJnZXRTZXNzaW9uU3RhdGUiLCJjbG9zZVNlc3Npb24iLCJjbG9zZSIsImlvIiwiZW1pdCIsImNhbGxXZWJIb29rIiwiY29ubmVjdGVkIiwibG9nT3V0U2Vzc2lvbiIsImxvZ291dCIsImRlbGV0ZVNlc3Npb25PbkFycmF5Iiwic2V0VGltZW91dCIsInBhdGhVc2VyRGF0YSIsImNvbmZpZyIsImN1c3RvbVVzZXJEYXRhRGlyIiwicGF0aFRva2VucyIsIl9fZGlybmFtZSIsInByb21pc2VzIiwicm0iLCJyZWN1cnNpdmUiLCJtYXhSZXRyaWVzIiwiZm9yY2UiLCJyZXRyeURlbGF5IiwiY2hlY2tDb25uZWN0aW9uU2Vzc2lvbiIsImlzQ29ubmVjdGVkIiwiZG93bmxvYWRNZWRpYUJ5TWVzc2FnZSIsIm1lc3NhZ2VJZCIsImlzTWVkaWEiLCJnZXRNZXNzYWdlQnlJZCIsImlzTU1TIiwiYmFzZTY0IiwidG9TdHJpbmciLCJnZXRNZWRpYUJ5TWVzc2FnZSIsImV4IiwicXIiLCJ1cmxjb2RlIiwiUVJDb2RlIiwidG9EYXRhVVJMIiwicXJjb2RlIiwidmVyc2lvbiIsImdldFFyQ29kZSIsInFyT3B0aW9ucyIsImVycm9yQ29ycmVjdGlvbkxldmVsIiwic2NhbGUiLCJ3aWR0aCIsImltZyIsIkJ1ZmZlciIsImZyb20iLCJ3cml0ZUhlYWQiLCJsZW5ndGgiLCJlbmQiLCJraWxsU2VydmljZVdvcmtlciIsInJlc3RhcnRTZXJ2aWNlIiwic3Vic2NyaWJlUHJlc2VuY2UiLCJwaG9uZSIsImlzR3JvdXAiLCJhbGwiLCJjb250YWN0cyIsImdyb3VwcyIsImdldEFsbEdyb3VwcyIsInAiLCJpZCIsIl9zZXJpYWxpemVkIiwiY2hhdHMiLCJnZXRBbGxDb250YWN0cyIsImMiLCJjb250YXRvIiwiY29udGFjdFRvQXJyYXkiLCJlZGl0QnVzaW5lc3NQcm9maWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvc2Vzc2lvbkNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWNsZWFyU2Vzc2lvbmlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTWVzc2FnZSwgV2hhdHNhcHAgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcbmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ3dpbnN0b24nO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCBjb25maWcgZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCBDcmVhdGVTZXNzaW9uVXRpbCBmcm9tICcuLi91dGlsL2NyZWF0ZVNlc3Npb25VdGlsJztcbmltcG9ydCB7IGNhbGxXZWJIb29rLCBjb250YWN0VG9BcnJheSB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcbmltcG9ydCBnZXRBbGxUb2tlbnMgZnJvbSAnLi4vdXRpbC9nZXRBbGxUb2tlbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBkZWxldGVTZXNzaW9uT25BcnJheSB9IGZyb20gJy4uL3V0aWwvc2Vzc2lvblV0aWwnO1xuXG5jb25zdCBTZXNzaW9uVXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEZpbGVGdW5jdGlvbihcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgY2xpZW50OiBXaGF0c2FwcCxcbiAgbG9nZ2VyOiBMb2dnZXJcbikge1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kZWNyeXB0RmlsZShtZXNzYWdlKTtcblxuICAgIGNvbnN0IGZpbGVuYW1lID0gYC4vV2hhdHNBcHBJbWFnZXMvZmlsZSR7bWVzc2FnZS50fWA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3B0dCcpIHtcbiAgICAgICAgcmVzdWx0ID0gYCR7ZmlsZW5hbWV9Lm9nYWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBgJHtmaWxlbmFtZX0uJHttaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKX1gO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGUpO1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgJ0Vycm8gYW8gZGVzY3JpcHRvZ3JhZmFyIGEgbWlkaWEsIHRlbnRhbmRvIGZhemVyIG8gZG93bmxvYWQgZGlyZXRvLi4uJ1xuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kb3dubG9hZE1lZGlhKG1lc3NhZ2UpO1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBgLi9XaGF0c0FwcEltYWdlcy9maWxlJHttZXNzYWdlLnR9YDtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlbmFtZSkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAncHR0Jykge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS5vZ2FgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7ZmlsZW5hbWV9LiR7bWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSl9YDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZSk7XG4gICAgICBsb2dnZXIud2FybignTsOjbyBmb2kgcG9zc8OtdmVsIGJhaXhhciBhIG3DrWRpYS4uLicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQobWVzc2FnZTogYW55LCBjbGllbnQ6IGFueSwgbG9nZ2VyOiBhbnkpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgZG93bmxvYWRGaWxlRnVuY3Rpb24obWVzc2FnZSwgY2xpZW50LCBsb2dnZXIpO1xuICAgIHJldHVybiBwYXRoPy5yZXBsYWNlKCcuLycsICcnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRBbGxTZXNzaW9ucyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3N0YXJ0QWxsU2Vzc2lvbnMnXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRUNPREUnXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgc2VjcmV0a2V5IH0gPSByZXEucGFyYW1zO1xuICBjb25zdCB7IGF1dGhvcml6YXRpb246IHRva2VuIH0gPSByZXEuaGVhZGVycztcblxuICBsZXQgdG9rZW5EZWNyeXB0ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gKHRva2VuIGFzIGFueSkuc3BsaXQoJyAnKVswXTtcbiAgfSBlbHNlIHtcbiAgICB0b2tlbkRlY3J5cHQgPSBzZWNyZXRrZXk7XG4gIH1cblxuICBjb25zdCBhbGxTZXNzaW9ucyA9IGF3YWl0IGdldEFsbFRva2VucyhyZXEpO1xuXG4gIGlmICh0b2tlbkRlY3J5cHQgIT09IHJlcS5zZXJ2ZXJPcHRpb25zLnNlY3JldEtleSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICByZXNwb25zZTogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgdG9rZW4gaXMgaW5jb3JyZWN0JyxcbiAgICB9KTtcbiAgfVxuXG4gIGFsbFNlc3Npb25zLm1hcChhc3luYyAoc2Vzc2lvbjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuICAgIGF3YWl0IHV0aWwub3BlbmRhdGEocmVxLCBzZXNzaW9uKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF3YWl0IHJlc1xuICAgIC5zdGF0dXMoMjAxKVxuICAgIC5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIG1lc3NhZ2U6ICdTdGFydGluZyBhbGwgc2Vzc2lvbnMnIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0FsbFNlc3Npb25zKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc2hvd0FsbFNlc3Npb25zJ1xuICAgICAjc3dhZ2dlci5hdXRvUXVlcnk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuYXV0b0hlYWRlcnM9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCB7IHNlY3JldGtleSB9ID0gcmVxLnBhcmFtcztcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uOiB0b2tlbiB9ID0gcmVxLmhlYWRlcnM7XG5cbiAgbGV0IHRva2VuRGVjcnlwdDogYW55ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gdG9rZW4/LnNwbGl0KCcgJylbMF07XG4gIH0gZWxzZSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gc2VjcmV0a2V5O1xuICB9XG5cbiAgY29uc3QgYXJyOiBhbnkgPSBbXTtcblxuICBpZiAodG9rZW5EZWNyeXB0ICE9PSByZXEuc2VydmVyT3B0aW9ucy5zZWNyZXRLZXkpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgcmVzcG9uc2U6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ1RoZSB0b2tlbiBpcyBpbmNvcnJlY3QnLFxuICAgIH0pO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoY2xpZW50c0FycmF5KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgYXJyLnB1c2goeyBzZXNzaW9uOiBpdGVtIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24oeyByZXNwb25zZTogYXdhaXQgZ2V0QWxsVG9rZW5zKHJlcSkgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFNlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdzdGFydFNlc3Npb24nXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHdlYmhvb2s6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICB3YWl0UXJDb2RlOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICB3ZWJob29rOiBcIlwiLFxuICAgICAgICAgICAgd2FpdFFyQ29kZTogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHNlc3Npb24gPSByZXEuc2Vzc2lvbjtcbiAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuXG4gIGF3YWl0IGdldFNlc3Npb25TdGF0ZShyZXEsIHJlcyk7XG4gIGF3YWl0IFNlc3Npb25VdGlsLm9wZW5kYXRhKHJlcSwgc2Vzc2lvbiwgd2FpdFFyQ29kZSA/IHJlcyA6IG51bGwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2VTZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnY2xvc2VTZXNzaW9uJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT10cnVlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCBzZXNzaW9uID0gcmVxLnNlc3Npb247XG4gIHRyeSB7XG4gICAgaWYgKChjbGllbnRzQXJyYXkgYXMgYW55KVtzZXNzaW9uXS5zdGF0dXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgICAgLnN0YXR1cygyMDApXG4gICAgICAgIC5qc29uKHsgc3RhdHVzOiB0cnVlLCBtZXNzYWdlOiAnU2Vzc2lvbiBzdWNjZXNzZnVsbHkgY2xvc2VkJyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgKGNsaWVudHNBcnJheSBhcyBhbnkpW3Nlc3Npb25dID0geyBzdGF0dXM6IG51bGwgfTtcblxuICAgICAgYXdhaXQgcmVxLmNsaWVudC5jbG9zZSgpO1xuICAgICAgcmVxLmlvLmVtaXQoJ3doYXRzYXBwLXN0YXR1cycsIGZhbHNlKTtcbiAgICAgIGNhbGxXZWJIb29rKHJlcS5jbGllbnQsIHJlcSwgJ2Nsb3Nlc2Vzc2lvbicsIHtcbiAgICAgICAgbWVzc2FnZTogYFNlc3Npb246ICR7c2Vzc2lvbn0gZGlzY29ubmVjdGVkYCxcbiAgICAgICAgY29ubmVjdGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgICAuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ1Nlc3Npb24gc3VjY2Vzc2Z1bGx5IGNsb3NlZCcgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgIC5zdGF0dXMoNTAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3IgY2xvc2luZyBzZXNzaW9uJywgZXJyb3IgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvZ091dFNlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdsb2dvdXRTZXNzaW9uJ1xuICAgKiAjc3dhZ2dlci5kZXNjcmlwdGlvbiA9ICdUaGlzIHJvdXRlIGxvZ291dCBhbmQgZGVsZXRlIHNlc3Npb24gZGF0YSdcbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHJlcS5zZXNzaW9uO1xuICAgIGF3YWl0IHJlcS5jbGllbnQubG9nb3V0KCk7XG4gICAgZGVsZXRlU2Vzc2lvbk9uQXJyYXkocmVxLnNlc3Npb24pO1xuXG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXRoVXNlckRhdGEgPSBjb25maWcuY3VzdG9tVXNlckRhdGFEaXIgKyByZXEuc2Vzc2lvbjtcbiAgICAgIGNvbnN0IHBhdGhUb2tlbnMgPSBfX2Rpcm5hbWUgKyBgLi4vLi4vLi4vdG9rZW5zLyR7cmVxLnNlc3Npb259LmRhdGEuanNvbmA7XG5cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGhVc2VyRGF0YSkpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aFVzZXJEYXRhLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIG1heFJldHJpZXM6IDUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoVG9rZW5zKSkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ybShwYXRoVG9rZW5zLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIG1heFJldHJpZXM6IDUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5pby5lbWl0KCd3aGF0c2FwcC1zdGF0dXMnLCBmYWxzZSk7XG4gICAgICBjYWxsV2ViSG9vayhyZXEuY2xpZW50LCByZXEsICdsb2dvdXRzZXNzaW9uJywge1xuICAgICAgICBtZXNzYWdlOiBgU2Vzc2lvbjogJHtzZXNzaW9ufSBsb2dnZWQgb3V0YCxcbiAgICAgICAgY29ubmVjdGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgICAuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ1Nlc3Npb24gc3VjY2Vzc2Z1bGx5IGNsb3NlZCcgfSk7XG4gICAgfSwgNTAwKTtcbiAgICAvKnRyeSB7XG4gICAgICBhd2FpdCByZXEuY2xpZW50LmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9Ki9cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAuc3RhdHVzKDUwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIGNsb3Npbmcgc2Vzc2lvbicsIGVycm9yIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0Nvbm5lY3Rpb25TZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnQ2hlY2tDb25uZWN0aW9uU3RhdGUnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHJlcS5jbGllbnQuaXNDb25uZWN0ZWQoKTtcblxuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ0Nvbm5lY3RlZCcgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Rpc2Nvbm5lY3RlZCcgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkTWVkaWFCeU1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZG93bmxvYWRNZWRpYWJ5TWVzc2FnZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJzxtZXNzYWdlSWQ+J1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICBjb25zdCBjbGllbnQgPSByZXEuY2xpZW50O1xuICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVxLmJvZHk7XG5cbiAgbGV0IG1lc3NhZ2U7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIW1lc3NhZ2VJZC5pc01lZGlhIHx8ICFtZXNzYWdlSWQudHlwZSkge1xuICAgICAgbWVzc2FnZSA9IGF3YWl0IGNsaWVudC5nZXRNZXNzYWdlQnlJZChtZXNzYWdlSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZUlkO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZSlcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogJ01lc3NhZ2Ugbm90IGZvdW5kJyxcbiAgICAgIH0pO1xuXG4gICAgaWYgKCEobWVzc2FnZVsnbWltZXR5cGUnXSB8fCBtZXNzYWdlLmlzTWVkaWEgfHwgbWVzc2FnZS5pc01NUykpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdNZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gbWVkaWEnLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG5cbiAgICByZXR1cm4gcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgYmFzZTY0OiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLCBtaW1ldHlwZTogbWVzc2FnZS5taW1ldHlwZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdEZWNyeXB0IGZpbGUgZXJyb3InLFxuICAgICAgZXJyb3I6IGUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1lZGlhQnlNZXNzYWdlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldE1lZGlhQnlNZXNzYWdlJ1xuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ21lc3NhZ2VJZCdcbiAgICAgfVxuICAgKi9cbiAgY29uc3QgY2xpZW50ID0gcmVxLmNsaWVudDtcbiAgY29uc3QgeyBtZXNzYWdlSWQgfSA9IHJlcS5wYXJhbXM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgY2xpZW50LmdldE1lc3NhZ2VCeUlkKG1lc3NhZ2VJZCk7XG5cbiAgICBpZiAoIW1lc3NhZ2UpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdNZXNzYWdlIG5vdCBmb3VuZCcsXG4gICAgICB9KTtcblxuICAgIGlmICghKG1lc3NhZ2VbJ21pbWV0eXBlJ10gfHwgbWVzc2FnZS5pc01lZGlhIHx8IG1lc3NhZ2UuaXNNTVMpKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBkb2VzIG5vdCBjb250YWluIG1lZGlhJyxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuXG4gICAgcmV0dXJuIHJlc1xuICAgICAgLnN0YXR1cygyMDApXG4gICAgICAuanNvbih7IGJhc2U2NDogYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSwgbWltZXR5cGU6IG1lc3NhZ2UubWltZXR5cGUgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJyxcbiAgICAgIGVycm9yOiBleCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvblN0YXRlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAgI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZ2V0U2Vzc2lvblN0YXRlJ1xuICAgICAjc3dhZ2dlci5zdW1tYXJ5ID0gJ1JldHJpZXZlIHN0YXR1cyBvZiBhIHNlc3Npb24nXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5ID0gZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGNsaWVudCA9IHJlcS5jbGllbnQ7XG4gICAgY29uc3QgcXIgPVxuICAgICAgY2xpZW50Py51cmxjb2RlICE9IG51bGwgJiYgY2xpZW50Py51cmxjb2RlICE9ICcnXG4gICAgICAgID8gYXdhaXQgUVJDb2RlLnRvRGF0YVVSTChjbGllbnQudXJsY29kZSlcbiAgICAgICAgOiBudWxsO1xuXG4gICAgaWYgKChjbGllbnQgPT0gbnVsbCB8fCBjbGllbnQuc3RhdHVzID09IG51bGwpICYmICF3YWl0UXJDb2RlKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiAnQ0xPU0VEJywgcXJjb2RlOiBudWxsIH0pO1xuICAgIGVsc2UgaWYgKGNsaWVudCAhPSBudWxsKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBjbGllbnQuc3RhdHVzLFxuICAgICAgICBxcmNvZGU6IHFyLFxuICAgICAgICB1cmxjb2RlOiBjbGllbnQudXJsY29kZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbixcbiAgICAgIH0pO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsXG4gICAgICBlcnJvcjogZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFFyQ29kZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldFFyQ29kZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgaWYgKHJlcT8uY2xpZW50Py51cmxjb2RlKSB7XG4gICAgICAvLyBXZSBhZGQgb3B0aW9ucyB0byBnZW5lcmF0ZSB0aGUgUVIgY29kZSBpbiBoaWdoZXIgcmVzb2x1dGlvblxuICAgICAgLy8gVGhlIC9xcmNvZGUtc2Vzc2lvbiByZXF1ZXN0IHdpbGwgbm93IHJldHVybiBhIHJlYWRhYmxlIHFyY29kZS5cbiAgICAgIGNvbnN0IHFyT3B0aW9ucyA9IHtcbiAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdNJyBhcyBjb25zdCxcbiAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycgYXMgY29uc3QsXG4gICAgICAgIHNjYWxlOiA1LFxuICAgICAgICB3aWR0aDogNTAwLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHFyID0gcmVxLmNsaWVudC51cmxjb2RlXG4gICAgICAgID8gYXdhaXQgUVJDb2RlLnRvRGF0YVVSTChyZXEuY2xpZW50LnVybGNvZGUsIHFyT3B0aW9ucylcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgaW1nID0gQnVmZmVyLmZyb20oXG4gICAgICAgIChxciBhcyBhbnkpLnJlcGxhY2UoL15kYXRhOmltYWdlXFwvKHBuZ3xqcGVnfGpwZyk7YmFzZTY0LC8sICcnKSxcbiAgICAgICAgJ2Jhc2U2NCdcbiAgICAgICk7XG4gICAgICByZXMud3JpdGVIZWFkKDIwMCwge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2ltYWdlL3BuZycsXG4gICAgICAgICdDb250ZW50LUxlbmd0aCc6IGltZy5sZW5ndGgsXG4gICAgICB9KTtcbiAgICAgIHJlcy5lbmQoaW1nKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXEuY2xpZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdTZXNzaW9uIG5vdCBzdGFydGVkLiBQbGVhc2UsIHVzZSB0aGUgL3N0YXJ0LXNlc3Npb24gcm91dGUsIGZvciBpbml0aWFsaXphdGlvbiB5b3VyIHNlc3Npb24nLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogcmVxLmNsaWVudC5zdGF0dXMsXG4gICAgICAgIG1lc3NhZ2U6ICdRUkNvZGUgaXMgbm90IGF2YWlsYWJsZS4uLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlc1xuICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAuanNvbih7IHN0YXR1czogJ2Vycm9yJywgbWVzc2FnZTogJ0Vycm9yIHJldHJpZXZpbmcgUVJDb2RlJywgZXJyb3I6IGV4IH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBraWxsU2VydmljZVdvcmtlcihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLmlnbm9yZT10cnVlXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdraWxsU2VydmljZVdvcmtpZXInXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIHJldHVybiByZXNcbiAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIHJlc3BvbnNlOiAnTm90IGltcGxlbWVudGVkIHlldCcgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJyxcbiAgICAgIGVycm9yOiBleCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdGFydFNlcnZpY2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci5pZ25vcmU9dHJ1ZVxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAncmVzdGFydFNlcnZpY2UnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIHJldHVybiByZXNcbiAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIHJlc3BvbnNlOiAnTm90IGltcGxlbWVudGVkIHlldCcgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIHJlc3BvbnNlOiB7IG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJywgZXJyb3I6IGV4IH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1YnNjcmliZVByZXNlbmNlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1pc2NcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc3Vic2NyaWJlUHJlc2VuY2UnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBhbGw6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3QgeyBwaG9uZSwgaXNHcm91cCA9IGZhbHNlLCBhbGwgPSBmYWxzZSB9ID0gcmVxLmJvZHk7XG5cbiAgICBpZiAoYWxsKSB7XG4gICAgICBsZXQgY29udGFjdHM7XG4gICAgICBpZiAoaXNHcm91cCkge1xuICAgICAgICBjb25zdCBncm91cHMgPSBhd2FpdCByZXEuY2xpZW50LmdldEFsbEdyb3VwcyhmYWxzZSk7XG4gICAgICAgIGNvbnRhY3RzID0gZ3JvdXBzLm1hcCgocDogYW55KSA9PiBwLmlkLl9zZXJpYWxpemVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNoYXRzID0gYXdhaXQgcmVxLmNsaWVudC5nZXRBbGxDb250YWN0cygpO1xuICAgICAgICBjb250YWN0cyA9IGNoYXRzLm1hcCgoYzogYW55KSA9PiBjLmlkLl9zZXJpYWxpemVkKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlcS5jbGllbnQuc3Vic2NyaWJlUHJlc2VuY2UoY29udGFjdHMpO1xuICAgIH0gZWxzZVxuICAgICAgZm9yIChjb25zdCBjb250YXRvIG9mIGNvbnRhY3RUb0FycmF5KHBob25lLCBpc0dyb3VwKSkge1xuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnN1YnNjcmliZVByZXNlbmNlKGNvbnRhdG8pO1xuICAgICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgcmVzcG9uc2U6IHsgbWVzc2FnZTogJ1N1YnNjcmliZSBwcmVzZW5jZSBleGVjdXRlZCcgfSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gYXdhaXQgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHN1YnNjcmliZSBwcmVzZW5jZScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVkaXRCdXNpbmVzc1Byb2ZpbGUocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiUHJvZmlsZVwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdlZGl0QnVzaW5lc3NQcm9maWxlJ1xuICAgKiAjc3dhZ2dlci5kZXNjcmlwdGlvbiA9ICdFZGl0IHlvdXIgYnVzc2luZXNzIHByb2ZpbGUnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJvYmpcIl0gPSB7XG4gICAgICBpbjogJ2JvZHknLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgICRhZHJlc3M6ICdBdi4gTm9zc2EgU2VuaG9yYSBkZSBDb3BhY2FiYW5hLCAzMTUnLFxuICAgICAgICAkZW1haWw6ICd0ZXN0QHRlc3QuY29tLmJyJyxcbiAgICAgICAgJGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAkaWQ6IFwiMTMzNDM2NzQzMzg4MjE3XCIsXG4gICAgICAgICAgJGxvY2FsaXplZF9kaXNwbGF5X25hbWU6IFwiQXJ0ZXMgZSBlbnRyZXRlbmltZW50b1wiLFxuICAgICAgICAgICRub3RfYV9iaXo6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICAkd2Vic2l0ZTogW1xuICAgICAgICAgIFwiaHR0cHM6Ly93d3cud3BwY29ubmVjdC5pb1wiLFxuICAgICAgICAgIFwiaHR0cHM6Ly93d3cudGVzdGUyLmNvbS5iclwiLFxuICAgICAgICBdLFxuICAgICAgfVxuICAgICB9XG4gICAgIFxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBhZHJlc3M6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBlbWFpbDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIGNhdGVnb3JpZXM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgICB3ZWJzaXRlczogeyB0eXBlOiBcImFycmF5XCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIGFkcmVzczogJ0F2LiBOb3NzYSBTZW5ob3JhIGRlIENvcGFjYWJhbmEsIDMxNScsXG4gICAgICAgICAgICBlbWFpbDogJ3Rlc3RAdGVzdC5jb20uYnInLFxuICAgICAgICAgICAgY2F0ZWdvcmllczoge1xuICAgICAgICAgICAgICAkaWQ6IFwiMTMzNDM2NzQzMzg4MjE3XCIsXG4gICAgICAgICAgICAgICRsb2NhbGl6ZWRfZGlzcGxheV9uYW1lOiBcIkFydGVzIGUgZW50cmV0ZW5pbWVudG9cIixcbiAgICAgICAgICAgICAgJG5vdF9hX2JpejogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2Vic2l0ZTogW1xuICAgICAgICAgICAgICBcImh0dHBzOi8vd3d3LndwcGNvbm5lY3QuaW9cIixcbiAgICAgICAgICAgICAgXCJodHRwczovL3d3dy50ZXN0ZTIuY29tLmJyXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbihhd2FpdCByZXEuY2xpZW50LmVkaXRCdXNpbmVzc1Byb2ZpbGUocmVxLmJvZHkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGVkaXQgYnVzaW5lc3MgcHJvZmlsZScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBOzs7QUFHQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJ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
|
|
744
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9taW1lVHlwZXMiLCJfcXJjb2RlIiwiX3BhY2thZ2UiLCJfY29uZmlnIiwiX2NyZWF0ZVNlc3Npb25VdGlsIiwiX2Z1bmN0aW9ucyIsIl9nZXRBbGxUb2tlbnMiLCJfc2Vzc2lvblV0aWwiLCJTZXNzaW9uVXRpbCIsIkNyZWF0ZVNlc3Npb25VdGlsIiwiZG93bmxvYWRGaWxlRnVuY3Rpb24iLCJtZXNzYWdlIiwiY2xpZW50IiwibG9nZ2VyIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJmaWxlbmFtZSIsInQiLCJmcyIsImV4aXN0c1N5bmMiLCJyZXN1bHQiLCJ0eXBlIiwibWltZSIsImV4dGVuc2lvbiIsIm1pbWV0eXBlIiwid3JpdGVGaWxlIiwiZXJyIiwiZXJyb3IiLCJlIiwid2FybiIsImRvd25sb2FkTWVkaWEiLCJkb3dubG9hZCIsInBhdGgiLCJyZXBsYWNlIiwic3RhcnRBbGxTZXNzaW9ucyIsInJlcSIsInJlcyIsInNlY3JldGtleSIsInBhcmFtcyIsImF1dGhvcml6YXRpb24iLCJ0b2tlbiIsImhlYWRlcnMiLCJ0b2tlbkRlY3J5cHQiLCJ1bmRlZmluZWQiLCJzcGxpdCIsImFsbFNlc3Npb25zIiwiZ2V0QWxsVG9rZW5zIiwic2VydmVyT3B0aW9ucyIsInNlY3JldEtleSIsInN0YXR1cyIsImpzb24iLCJyZXNwb25zZSIsIm1hcCIsInNlc3Npb24iLCJ1dGlsIiwib3BlbmRhdGEiLCJzaG93QWxsU2Vzc2lvbnMiLCJhcnIiLCJPYmplY3QiLCJrZXlzIiwiY2xpZW50c0FycmF5IiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwic3RhcnRTZXNzaW9uIiwid2FpdFFyQ29kZSIsImJvZHkiLCJnZXRTZXNzaW9uU3RhdGUiLCJjbG9zZVNlc3Npb24iLCJjbG9zZSIsImlvIiwiZW1pdCIsImNhbGxXZWJIb29rIiwiY29ubmVjdGVkIiwibG9nT3V0U2Vzc2lvbiIsImxvZ291dCIsImRlbGV0ZVNlc3Npb25PbkFycmF5Iiwic2V0VGltZW91dCIsInBhdGhVc2VyRGF0YSIsImNvbmZpZyIsImN1c3RvbVVzZXJEYXRhRGlyIiwicGF0aFRva2VucyIsIl9fZGlybmFtZSIsInByb21pc2VzIiwicm0iLCJyZWN1cnNpdmUiLCJtYXhSZXRyaWVzIiwiZm9yY2UiLCJyZXRyeURlbGF5IiwiY2hlY2tDb25uZWN0aW9uU2Vzc2lvbiIsImlzQ29ubmVjdGVkIiwiZG93bmxvYWRNZWRpYUJ5TWVzc2FnZSIsIm1lc3NhZ2VJZCIsImlzTWVkaWEiLCJnZXRNZXNzYWdlQnlJZCIsImlzTU1TIiwiYmFzZTY0IiwidG9TdHJpbmciLCJnZXRNZWRpYUJ5TWVzc2FnZSIsImV4IiwicXIiLCJ1cmxjb2RlIiwiUVJDb2RlIiwidG9EYXRhVVJMIiwicXJjb2RlIiwidmVyc2lvbiIsImdldFFyQ29kZSIsInFyT3B0aW9ucyIsImVycm9yQ29ycmVjdGlvbkxldmVsIiwic2NhbGUiLCJ3aWR0aCIsImltZyIsIkJ1ZmZlciIsImZyb20iLCJ3cml0ZUhlYWQiLCJsZW5ndGgiLCJlbmQiLCJraWxsU2VydmljZVdvcmtlciIsInJlc3RhcnRTZXJ2aWNlIiwic3Vic2NyaWJlUHJlc2VuY2UiLCJwaG9uZSIsImlzR3JvdXAiLCJhbGwiLCJjb250YWN0cyIsImdyb3VwcyIsImdldEFsbEdyb3VwcyIsInAiLCJpZCIsIl9zZXJpYWxpemVkIiwiY2hhdHMiLCJnZXRBbGxDb250YWN0cyIsImMiLCJjb250YXRvIiwiY29udGFjdFRvQXJyYXkiLCJlZGl0QnVzaW5lc3NQcm9maWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvc2Vzc2lvbkNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWNsZWFyU2Vzc2lvbmlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTWVzc2FnZSwgV2hhdHNhcHAgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcbmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ3dpbnN0b24nO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCBjb25maWcgZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCBDcmVhdGVTZXNzaW9uVXRpbCBmcm9tICcuLi91dGlsL2NyZWF0ZVNlc3Npb25VdGlsJztcbmltcG9ydCB7IGNhbGxXZWJIb29rLCBjb250YWN0VG9BcnJheSB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcbmltcG9ydCBnZXRBbGxUb2tlbnMgZnJvbSAnLi4vdXRpbC9nZXRBbGxUb2tlbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBkZWxldGVTZXNzaW9uT25BcnJheSB9IGZyb20gJy4uL3V0aWwvc2Vzc2lvblV0aWwnO1xuXG5jb25zdCBTZXNzaW9uVXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEZpbGVGdW5jdGlvbihcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgY2xpZW50OiBXaGF0c2FwcCxcbiAgbG9nZ2VyOiBMb2dnZXJcbikge1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kZWNyeXB0RmlsZShtZXNzYWdlKTtcblxuICAgIGNvbnN0IGZpbGVuYW1lID0gYC4vV2hhdHNBcHBJbWFnZXMvZmlsZSR7bWVzc2FnZS50fWA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3B0dCcpIHtcbiAgICAgICAgcmVzdWx0ID0gYCR7ZmlsZW5hbWV9Lm9nYWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBgJHtmaWxlbmFtZX0uJHttaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKX1gO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGUpO1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgJ0Vycm8gYW8gZGVzY3JpcHRvZ3JhZmFyIGEgbWlkaWEsIHRlbnRhbmRvIGZhemVyIG8gZG93bmxvYWQgZGlyZXRvLi4uJ1xuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kb3dubG9hZE1lZGlhKG1lc3NhZ2UpO1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBgLi9XaGF0c0FwcEltYWdlcy9maWxlJHttZXNzYWdlLnR9YDtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlbmFtZSkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAncHR0Jykge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS5vZ2FgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7ZmlsZW5hbWV9LiR7bWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSl9YDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZSk7XG4gICAgICBsb2dnZXIud2FybignTsOjbyBmb2kgcG9zc8OtdmVsIGJhaXhhciBhIG3DrWRpYS4uLicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQobWVzc2FnZTogYW55LCBjbGllbnQ6IGFueSwgbG9nZ2VyOiBhbnkpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgZG93bmxvYWRGaWxlRnVuY3Rpb24obWVzc2FnZSwgY2xpZW50LCBsb2dnZXIpO1xuICAgIHJldHVybiBwYXRoPy5yZXBsYWNlKCcuLycsICcnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRBbGxTZXNzaW9ucyhcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlXG4pOiBQcm9taXNlPGFueT4ge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc3RhcnRBbGxTZXNzaW9ucydcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlY3JldGtleVwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ1RISVNJU01ZU0VDVVJFQ09ERSdcbiAgICAgfVxuICAgKi9cbiAgY29uc3QgeyBzZWNyZXRrZXkgfSA9IHJlcS5wYXJhbXM7XG4gIGNvbnN0IHsgYXV0aG9yaXphdGlvbjogdG9rZW4gfSA9IHJlcS5oZWFkZXJzO1xuXG4gIGxldCB0b2tlbkRlY3J5cHQgPSAnJztcblxuICBpZiAoc2VjcmV0a2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICB0b2tlbkRlY3J5cHQgPSAodG9rZW4gYXMgYW55KS5zcGxpdCgnICcpWzBdO1xuICB9IGVsc2Uge1xuICAgIHRva2VuRGVjcnlwdCA9IHNlY3JldGtleTtcbiAgfVxuXG4gIGNvbnN0IGFsbFNlc3Npb25zID0gYXdhaXQgZ2V0QWxsVG9rZW5zKHJlcSk7XG5cbiAgaWYgKHRva2VuRGVjcnlwdCAhPT0gcmVxLnNlcnZlck9wdGlvbnMuc2VjcmV0S2V5KSB7XG4gICAgcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgcmVzcG9uc2U6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHRva2VuIGlzIGluY29ycmVjdCcsXG4gICAgfSk7XG4gIH1cblxuICBhbGxTZXNzaW9ucy5tYXAoYXN5bmMgKHNlc3Npb246IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgQ3JlYXRlU2Vzc2lvblV0aWwoKTtcbiAgICBhd2FpdCB1dGlsLm9wZW5kYXRhKHJlcSwgc2Vzc2lvbik7XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCByZXNcbiAgICAuc3RhdHVzKDIwMSlcbiAgICAuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiAnU3RhcnRpbmcgYWxsIHNlc3Npb25zJyB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dBbGxTZXNzaW9ucyhcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlXG4pOiBQcm9taXNlPGFueT4ge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc2hvd0FsbFNlc3Npb25zJ1xuICAgICAjc3dhZ2dlci5hdXRvUXVlcnk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuYXV0b0hlYWRlcnM9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCB7IHNlY3JldGtleSB9ID0gcmVxLnBhcmFtcztcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uOiB0b2tlbiB9ID0gcmVxLmhlYWRlcnM7XG5cbiAgbGV0IHRva2VuRGVjcnlwdDogYW55ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gdG9rZW4/LnNwbGl0KCcgJylbMF07XG4gIH0gZWxzZSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gc2VjcmV0a2V5O1xuICB9XG5cbiAgY29uc3QgYXJyOiBhbnkgPSBbXTtcblxuICBpZiAodG9rZW5EZWNyeXB0ICE9PSByZXEuc2VydmVyT3B0aW9ucy5zZWNyZXRLZXkpIHtcbiAgICByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICByZXNwb25zZTogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnVGhlIHRva2VuIGlzIGluY29ycmVjdCcsXG4gICAgfSk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhjbGllbnRzQXJyYXkpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICBhcnIucHVzaCh7IHNlc3Npb246IGl0ZW0gfSk7XG4gIH0pO1xuXG4gIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgcmVzcG9uc2U6IGF3YWl0IGdldEFsbFRva2VucyhyZXEpIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSk6IFByb21pc2U8YW55PiB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdzdGFydFNlc3Npb24nXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHdlYmhvb2s6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICB3YWl0UXJDb2RlOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICB3ZWJob29rOiBcIlwiLFxuICAgICAgICAgICAgd2FpdFFyQ29kZTogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHNlc3Npb24gPSByZXEuc2Vzc2lvbjtcbiAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuXG4gIGF3YWl0IGdldFNlc3Npb25TdGF0ZShyZXEsIHJlcyk7XG4gIGF3YWl0IFNlc3Npb25VdGlsLm9wZW5kYXRhKHJlcSwgc2Vzc2lvbiwgd2FpdFFyQ29kZSA/IHJlcyA6IG51bGwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2VTZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSk6IFByb21pc2U8YW55PiB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdjbG9zZVNlc3Npb24nXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PXRydWVcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHNlc3Npb24gPSByZXEuc2Vzc2lvbjtcbiAgdHJ5IHtcbiAgICBpZiAoKGNsaWVudHNBcnJheSBhcyBhbnkpW3Nlc3Npb25dLnN0YXR1cyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlc1xuICAgICAgICAuc3RhdHVzKDIwMClcbiAgICAgICAgLmpzb24oeyBzdGF0dXM6IHRydWUsIG1lc3NhZ2U6ICdTZXNzaW9uIHN1Y2Nlc3NmdWxseSBjbG9zZWQnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAoY2xpZW50c0FycmF5IGFzIGFueSlbc2Vzc2lvbl0gPSB7IHN0YXR1czogbnVsbCB9O1xuXG4gICAgICBhd2FpdCByZXEuY2xpZW50LmNsb3NlKCk7XG4gICAgICByZXEuaW8uZW1pdCgnd2hhdHNhcHAtc3RhdHVzJywgZmFsc2UpO1xuICAgICAgY2FsbFdlYkhvb2socmVxLmNsaWVudCwgcmVxLCAnY2xvc2VzZXNzaW9uJywge1xuICAgICAgICBtZXNzYWdlOiBgU2Vzc2lvbjogJHtzZXNzaW9ufSBkaXNjb25uZWN0ZWRgLFxuICAgICAgICBjb25uZWN0ZWQ6IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgICAgLnN0YXR1cygyMDApXG4gICAgICAgIC5qc29uKHsgc3RhdHVzOiB0cnVlLCBtZXNzYWdlOiAnU2Vzc2lvbiBzdWNjZXNzZnVsbHkgY2xvc2VkJyB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIGF3YWl0IHJlc1xuICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAuanNvbih7IHN0YXR1czogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciBjbG9zaW5nIHNlc3Npb24nLCBlcnJvciB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9nT3V0U2Vzc2lvbihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPGFueT4ge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnbG9nb3V0U2Vzc2lvbidcbiAgICogI3N3YWdnZXIuZGVzY3JpcHRpb24gPSAnVGhpcyByb3V0ZSBsb2dvdXQgYW5kIGRlbGV0ZSBzZXNzaW9uIGRhdGEnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IHNlc3Npb24gPSByZXEuc2Vzc2lvbjtcbiAgICBhd2FpdCByZXEuY2xpZW50LmxvZ291dCgpO1xuICAgIGRlbGV0ZVNlc3Npb25PbkFycmF5KHJlcS5zZXNzaW9uKTtcblxuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGF0aFVzZXJEYXRhID0gY29uZmlnLmN1c3RvbVVzZXJEYXRhRGlyICsgcmVxLnNlc3Npb247XG4gICAgICBjb25zdCBwYXRoVG9rZW5zID0gX19kaXJuYW1lICsgYC4uLy4uLy4uL3Rva2Vucy8ke3JlcS5zZXNzaW9ufS5kYXRhLmpzb25gO1xuXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoVXNlckRhdGEpKSB7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnJtKHBhdGhVc2VyRGF0YSwge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiA1LFxuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJldHJ5RGVsYXk6IDEwMDAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aFRva2VucykpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aFRva2Vucywge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiA1LFxuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJldHJ5RGVsYXk6IDEwMDAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXEuaW8uZW1pdCgnd2hhdHNhcHAtc3RhdHVzJywgZmFsc2UpO1xuICAgICAgY2FsbFdlYkhvb2socmVxLmNsaWVudCwgcmVxLCAnbG9nb3V0c2Vzc2lvbicsIHtcbiAgICAgICAgbWVzc2FnZTogYFNlc3Npb246ICR7c2Vzc2lvbn0gbG9nZ2VkIG91dGAsXG4gICAgICAgIGNvbm5lY3RlZDogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHJlc1xuICAgICAgICAuc3RhdHVzKDIwMClcbiAgICAgICAgLmpzb24oeyBzdGF0dXM6IHRydWUsIG1lc3NhZ2U6ICdTZXNzaW9uIHN1Y2Nlc3NmdWxseSBjbG9zZWQnIH0pO1xuICAgIH0sIDUwMCk7XG4gICAgLyp0cnkge1xuICAgICAgYXdhaXQgcmVxLmNsaWVudC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7fSovXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcmVzXG4gICAgICAuc3RhdHVzKDUwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIGNsb3Npbmcgc2Vzc2lvbicsIGVycm9yIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0Nvbm5lY3Rpb25TZXNzaW9uKFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2Vcbik6IFByb21pc2U8YW55PiB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdDaGVja0Nvbm5lY3Rpb25TdGF0ZSdcbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgYXdhaXQgcmVxLmNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuXG4gICAgcmVzLnN0YXR1cygyMDApLmpzb24oeyBzdGF0dXM6IHRydWUsIG1lc3NhZ2U6ICdDb25uZWN0ZWQnIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Rpc2Nvbm5lY3RlZCcgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkTWVkaWFCeU1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZG93bmxvYWRNZWRpYWJ5TWVzc2FnZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJzxtZXNzYWdlSWQ+J1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICBjb25zdCBjbGllbnQgPSByZXEuY2xpZW50O1xuICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVxLmJvZHk7XG5cbiAgbGV0IG1lc3NhZ2U7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIW1lc3NhZ2VJZC5pc01lZGlhIHx8ICFtZXNzYWdlSWQudHlwZSkge1xuICAgICAgbWVzc2FnZSA9IGF3YWl0IGNsaWVudC5nZXRNZXNzYWdlQnlJZChtZXNzYWdlSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZUlkO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZSlcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBub3QgZm91bmQnLFxuICAgICAgfSk7XG5cbiAgICBpZiAoIShtZXNzYWdlWydtaW1ldHlwZSddIHx8IG1lc3NhZ2UuaXNNZWRpYSB8fCBtZXNzYWdlLmlzTU1TKSlcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBkb2VzIG5vdCBjb250YWluIG1lZGlhJyxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuXG4gICAgcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgYmFzZTY0OiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLCBtaW1ldHlwZTogbWVzc2FnZS5taW1ldHlwZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gICAgcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0RlY3J5cHQgZmlsZSBlcnJvcicsXG4gICAgICBlcnJvcjogZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TWVkaWFCeU1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZ2V0TWVkaWFCeU1lc3NhZ2UnXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnbWVzc2FnZUlkJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCBjbGllbnQgPSByZXEuY2xpZW50O1xuICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVxLnBhcmFtcztcblxuICB0cnkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBjbGllbnQuZ2V0TWVzc2FnZUJ5SWQobWVzc2FnZUlkKTtcblxuICAgIGlmICghbWVzc2FnZSlcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBub3QgZm91bmQnLFxuICAgICAgfSk7XG5cbiAgICBpZiAoIShtZXNzYWdlWydtaW1ldHlwZSddIHx8IG1lc3NhZ2UuaXNNZWRpYSB8fCBtZXNzYWdlLmlzTU1TKSlcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBkb2VzIG5vdCBjb250YWluIG1lZGlhJyxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuXG4gICAgcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgYmFzZTY0OiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLCBtaW1ldHlwZTogbWVzc2FnZS5taW1ldHlwZSB9KTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsXG4gICAgICBlcnJvcjogZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb25TdGF0ZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldFNlc3Npb25TdGF0ZSdcbiAgICAgI3N3YWdnZXIuc3VtbWFyeSA9ICdSZXRyaWV2ZSBzdGF0dXMgb2YgYSBzZXNzaW9uJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keSA9IGZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IHsgd2FpdFFyQ29kZSA9IGZhbHNlIH0gPSByZXEuYm9keTtcbiAgICBjb25zdCBjbGllbnQgPSByZXEuY2xpZW50O1xuICAgIGNvbnN0IHFyID1cbiAgICAgIGNsaWVudD8udXJsY29kZSAhPSBudWxsICYmIGNsaWVudD8udXJsY29kZSAhPSAnJ1xuICAgICAgICA/IGF3YWl0IFFSQ29kZS50b0RhdGFVUkwoY2xpZW50LnVybGNvZGUpXG4gICAgICAgIDogbnVsbDtcblxuICAgIGlmICgoY2xpZW50ID09IG51bGwgfHwgY2xpZW50LnN0YXR1cyA9PSBudWxsKSAmJiAhd2FpdFFyQ29kZSlcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiAnQ0xPU0VEJywgcXJjb2RlOiBudWxsIH0pO1xuICAgIGVsc2UgaWYgKGNsaWVudCAhPSBudWxsKVxuICAgICAgcmVzLnN0YXR1cygyMDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6IGNsaWVudC5zdGF0dXMsXG4gICAgICAgIHFyY29kZTogcXIsXG4gICAgICAgIHVybGNvZGU6IGNsaWVudC51cmxjb2RlLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ1RoZSBzZXNzaW9uIGlzIG5vdCBhY3RpdmUnLFxuICAgICAgZXJyb3I6IGV4LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRRckNvZGUocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdnZXRRckNvZGUnXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGlmIChyZXE/LmNsaWVudD8udXJsY29kZSkge1xuICAgICAgLy8gV2UgYWRkIG9wdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIFFSIGNvZGUgaW4gaGlnaGVyIHJlc29sdXRpb25cbiAgICAgIC8vIFRoZSAvcXJjb2RlLXNlc3Npb24gcmVxdWVzdCB3aWxsIG5vdyByZXR1cm4gYSByZWFkYWJsZSBxcmNvZGUuXG4gICAgICBjb25zdCBxck9wdGlvbnMgPSB7XG4gICAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiAnTScgYXMgY29uc3QsXG4gICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnIGFzIGNvbnN0LFxuICAgICAgICBzY2FsZTogNSxcbiAgICAgICAgd2lkdGg6IDUwMCxcbiAgICAgIH07XG4gICAgICBjb25zdCBxciA9IHJlcS5jbGllbnQudXJsY29kZVxuICAgICAgICA/IGF3YWl0IFFSQ29kZS50b0RhdGFVUkwocmVxLmNsaWVudC51cmxjb2RlLCBxck9wdGlvbnMpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGltZyA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICAocXIgYXMgYW55KS5yZXBsYWNlKC9eZGF0YTppbWFnZVxcLyhwbmd8anBlZ3xqcGcpO2Jhc2U2NCwvLCAnJyksXG4gICAgICAgICdiYXNlNjQnXG4gICAgICApO1xuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAnQ29udGVudC1MZW5ndGgnOiBpbWcubGVuZ3RoLFxuICAgICAgfSk7XG4gICAgICByZXMuZW5kKGltZyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxLmNsaWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdTZXNzaW9uIG5vdCBzdGFydGVkLiBQbGVhc2UsIHVzZSB0aGUgL3N0YXJ0LXNlc3Npb24gcm91dGUsIGZvciBpbml0aWFsaXphdGlvbiB5b3VyIHNlc3Npb24nLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiByZXEuY2xpZW50LnN0YXR1cyxcbiAgICAgICAgbWVzc2FnZTogJ1FSQ29kZSBpcyBub3QgYXZhaWxhYmxlLi4uJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgICByZXNcbiAgICAgIC5zdGF0dXMoNTAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIG1lc3NhZ2U6ICdFcnJvciByZXRyaWV2aW5nIFFSQ29kZScsIGVycm9yOiBleCB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ga2lsbFNlcnZpY2VXb3JrZXIocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci5pZ25vcmU9dHJ1ZVxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAna2lsbFNlcnZpY2VXb3JraWVyJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgKi9cbiAgdHJ5IHtcbiAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7IHN0YXR1czogJ2Vycm9yJywgcmVzcG9uc2U6ICdOb3QgaW1wbGVtZW50ZWQgeWV0JyB9KTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsXG4gICAgICBlcnJvcjogZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RhcnRTZXJ2aWNlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIuaWdub3JlPXRydWVcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3Jlc3RhcnRTZXJ2aWNlJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgKi9cbiAgdHJ5IHtcbiAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7IHN0YXR1czogJ2Vycm9yJywgcmVzcG9uc2U6ICdOb3QgaW1wbGVtZW50ZWQgeWV0JyB9KTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICByZXNwb25zZTogeyBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsIGVycm9yOiBleCB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdWJzY3JpYmVQcmVzZW5jZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3N1YnNjcmliZVByZXNlbmNlJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIGlzR3JvdXA6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgYWxsOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgICBhbGw6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IHsgcGhvbmUsIGlzR3JvdXAgPSBmYWxzZSwgYWxsID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuXG4gICAgaWYgKGFsbCkge1xuICAgICAgbGV0IGNvbnRhY3RzO1xuICAgICAgaWYgKGlzR3JvdXApIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gYXdhaXQgcmVxLmNsaWVudC5nZXRBbGxHcm91cHMoZmFsc2UpO1xuICAgICAgICBjb250YWN0cyA9IGdyb3Vwcy5tYXAoKHA6IGFueSkgPT4gcC5pZC5fc2VyaWFsaXplZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjaGF0cyA9IGF3YWl0IHJlcS5jbGllbnQuZ2V0QWxsQ29udGFjdHMoKTtcbiAgICAgICAgY29udGFjdHMgPSBjaGF0cy5tYXAoKGM6IGFueSkgPT4gYy5pZC5fc2VyaWFsaXplZCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXEuY2xpZW50LnN1YnNjcmliZVByZXNlbmNlKGNvbnRhY3RzKTtcbiAgICB9IGVsc2VcbiAgICAgIGZvciAoY29uc3QgY29udGF0byBvZiBjb250YWN0VG9BcnJheShwaG9uZSwgaXNHcm91cCkpIHtcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zdWJzY3JpYmVQcmVzZW5jZShjb250YXRvKTtcbiAgICAgIH1cblxuICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgcmVzcG9uc2U6IHsgbWVzc2FnZTogJ1N1YnNjcmliZSBwcmVzZW5jZSBleGVjdXRlZCcgfSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gc3Vic2NyaWJlIHByZXNlbmNlJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdEJ1c2luZXNzUHJvZmlsZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJQcm9maWxlXCJdXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2VkaXRCdXNpbmVzc1Byb2ZpbGUnXG4gICAqICNzd2FnZ2VyLmRlc2NyaXB0aW9uID0gJ0VkaXQgeW91ciBidXNzaW5lc3MgcHJvZmlsZSdcbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcIm9ialwiXSA9IHtcbiAgICAgIGluOiAnYm9keScsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgJGFkcmVzczogJ0F2LiBOb3NzYSBTZW5ob3JhIGRlIENvcGFjYWJhbmEsIDMxNScsXG4gICAgICAgICRlbWFpbDogJ3Rlc3RAdGVzdC5jb20uYnInLFxuICAgICAgICAkY2F0ZWdvcmllczoge1xuICAgICAgICAgICRpZDogXCIxMzM0MzY3NDMzODgyMTdcIixcbiAgICAgICAgICAkbG9jYWxpemVkX2Rpc3BsYXlfbmFtZTogXCJBcnRlcyBlIGVudHJldGVuaW1lbnRvXCIsXG4gICAgICAgICAgJG5vdF9hX2JpejogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgICR3ZWJzaXRlOiBbXG4gICAgICAgICAgXCJodHRwczovL3d3dy53cHBjb25uZWN0LmlvXCIsXG4gICAgICAgICAgXCJodHRwczovL3d3dy50ZXN0ZTIuY29tLmJyXCIsXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgIH1cbiAgICAgXG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGFkcmVzczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgY2F0ZWdvcmllczogeyB0eXBlOiBcIm9iamVjdFwiIH0sXG4gICAgICAgICAgICAgIHdlYnNpdGVzOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZToge1xuICAgICAgICAgICAgYWRyZXNzOiAnQXYuIE5vc3NhIFNlbmhvcmEgZGUgQ29wYWNhYmFuYSwgMzE1JyxcbiAgICAgICAgICAgIGVtYWlsOiAndGVzdEB0ZXN0LmNvbS5icicsXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB7XG4gICAgICAgICAgICAgICRpZDogXCIxMzM0MzY3NDMzODgyMTdcIixcbiAgICAgICAgICAgICAgJGxvY2FsaXplZF9kaXNwbGF5X25hbWU6IFwiQXJ0ZXMgZSBlbnRyZXRlbmltZW50b1wiLFxuICAgICAgICAgICAgICAkbm90X2FfYml6OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3ZWJzaXRlOiBbXG4gICAgICAgICAgICAgIFwiaHR0cHM6Ly93d3cud3BwY29ubmVjdC5pb1wiLFxuICAgICAgICAgICAgICBcImh0dHBzOi8vd3d3LnRlc3RlMi5jb20uYnJcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgcmVzLnN0YXR1cygyMDApLmpzb24oYXdhaXQgcmVxLmNsaWVudC5lZGl0QnVzaW5lc3NQcm9maWxlKHJlcS5ib2R5KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGVkaXQgYnVzaW5lc3MgcHJvZmlsZScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBOzs7QUFHQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUixzQkFBQSxDQUFBQyxP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QUFjLEVBQUNiLEtBQUssRUFBRUMsT0FBTyxDQUFDLEVBQUU7TUFDcEQsTUFBTXRGLEdBQUcsQ0FBQ3ZCLE1BQU0sQ0FBQzJHLGlCQUFpQixDQUFDYSxPQUFPLENBQUM7SUFDN0M7O0lBRUZoRyxHQUFHLENBQUNhLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO01BQ25CRCxNQUFNLEVBQUUsU0FBUztNQUNqQkUsUUFBUSxFQUFFLEVBQUV4QyxPQUFPLEVBQUUsNkJBQTZCLENBQUM7SUFDckQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDLE9BQU9nQixLQUFLLEVBQUU7SUFDZFMsR0FBRyxDQUFDYSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUNuQkQsTUFBTSxFQUFFLE9BQU87TUFDZnRDLE9BQU8sRUFBRSw2QkFBNkI7TUFDdENnQixLQUFLLEVBQUVBO0lBQ1QsQ0FBQyxDQUFDO0VBQ0o7QUFDRjs7QUFFTyxlQUFlMkcsbUJBQW1CQSxDQUFDbkcsR0FBWSxFQUFFQyxHQUFhLEVBQUU7RUFDckU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxJQUFJO0lBQ0ZBLEdBQUcsQ0FBQ2EsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsTUFBTWYsR0FBRyxDQUFDdkIsTUFBTSxDQUFDMEgsbUJBQW1CLENBQUNuRyxHQUFHLENBQUMrQixJQUFJLENBQUMsQ0FBQztFQUN0RSxDQUFDLENBQUMsT0FBT3ZDLEtBQUssRUFBRTtJQUNkUyxHQUFHLENBQUNhLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO01BQ25CRCxNQUFNLEVBQUUsT0FBTztNQUNmdEMsT0FBTyxFQUFFLGdDQUFnQztNQUN6Q2dCLEtBQUssRUFBRUE7SUFDVCxDQUFDLENBQUM7RUFDSjtBQUNGIiwiaWdub3JlTGlzdCI6W119
|