@wppconnect/server 2.2.4 → 2.3.0
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 +4 -0
- package/Dockerfile +3 -3
- package/README.md +29 -6
- package/dist/config/upload.js +2 -2
- package/dist/config.js +28 -6
- package/dist/controller/deviceController.js +7 -14
- package/dist/controller/groupController.js +37 -6
- package/dist/controller/messageController.js +244 -27
- package/dist/controller/newsletterController.js +196 -0
- package/dist/controller/orderController.js +14 -27
- package/dist/controller/sessionController.js +20 -35
- package/dist/index.js +9 -3
- package/dist/mapper/index.js +2 -2
- package/dist/mapper/tagone-chat.js +3 -3
- package/dist/mapper/tagone-device.js +3 -3
- package/dist/mapper/tagone-message-document.js +3 -3
- package/dist/mapper/tagone-message-image.js +3 -3
- package/dist/mapper/tagone-message-location.js +3 -3
- package/dist/mapper/tagone-message-video.js +3 -3
- package/dist/mapper/tagone-message.js +3 -3
- package/dist/mapper/tagone-onack.js +3 -3
- package/dist/mapper/tagone-return.js +3 -3
- package/dist/middleware/auth.js +3 -3
- package/dist/middleware/instrumentation.js +39 -0
- package/dist/routes/index.js +65 -11
- package/dist/swagger.json +655 -107
- package/dist/tests/util/bufferUtils.test.js +54 -0
- package/dist/types/ServerOptions.js +1 -1
- package/dist/util/bucketAlreadyExists.js +26 -0
- package/dist/util/bufferutils.js +50 -0
- package/dist/util/chatWootClient.js +124 -38
- package/dist/util/createSessionUtil.js +25 -8
- package/dist/util/db/mongodb/db.js +3 -3
- package/dist/util/db/redis/db.js +3 -3
- package/dist/util/functions.js +85 -21
- package/dist/util/sessionUtil.js +23 -22
- package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +4 -4
- package/dist/util/tokenStore/factory.js +3 -3
- package/dist/util/tokenStore/fileTokenStory.js +3 -3
- package/dist/util/tokenStore/model/token.js +3 -3
- package/dist/util/tokenStore/mongodbTokenStory.js +3 -3
- package/dist/util/tokenStore/redisTokenStory.js +3 -3
- package/jest.config.js +5 -0
- package/package.json +59 -60
- package/tsconfig.json +6 -4
package/CHANGELOG.md
CHANGED
package/Dockerfile
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
FROM node:lts-alpine3.
|
|
1
|
+
FROM node:lts-alpine3.18 as base
|
|
2
2
|
WORKDIR /usr/src/wpp-server
|
|
3
3
|
ENV NODE_ENV=production PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
|
4
|
-
COPY package.json
|
|
4
|
+
COPY package.json ./
|
|
5
5
|
RUN yarn install --production --pure-lockfile && \
|
|
6
6
|
yarn cache clean
|
|
7
7
|
|
|
8
8
|
FROM base as build
|
|
9
9
|
WORKDIR /usr/src/wpp-server
|
|
10
10
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
|
11
|
-
COPY package.json
|
|
11
|
+
COPY package.json ./
|
|
12
12
|
RUN yarn install --production=false --pure-lockfile && \
|
|
13
13
|
yarn cache clean
|
|
14
14
|
COPY . .
|
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## _WPPConnect Server_
|
|
4
4
|
|
|
5
|
+

|
|
6
|
+
|
|
5
7
|
[](https://www.npmjs.com/package/@wppconnect/server)
|
|
6
8
|
[](https://www.npmjs.com/package/@wppconnect/server)
|
|
7
9
|
[](https://isitmaintained.com/project/wppconnect-team/wppconnect-server 'Average time to resolve an issue')
|
|
@@ -10,7 +12,7 @@
|
|
|
10
12
|
[](https://github.com/wppconnect-team/wppconnect-server/actions/workflows/build.yml)
|
|
11
13
|
[](https://github.com/release-it/release-it)
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
Welcome to the **WPPConnect Server** repository, developed by the WPPConnect Team. Our mission is to provide a robust and ready-to-use API for seamless communication with WhatsApp. The server is designed to streamline the process of sending and receiving messages, managing contacts, creating groups, and much more, all while leveraging the power of JavaScript ES6, NodeJS, and a RESTful architecture.
|
|
14
16
|
|
|
15
17
|
- Javascript ES6
|
|
16
18
|
- NodeJS
|
|
@@ -18,6 +20,8 @@ Wppconnect Server is a ready-to-use API, just download, install, and start using
|
|
|
18
20
|
|
|
19
21
|
## Our online channels
|
|
20
22
|
|
|
23
|
+
Connect with us across various platforms to stay updated and engage in discussions:
|
|
24
|
+
|
|
21
25
|
[](https://discord.gg/JU5JGGKGNG)
|
|
22
26
|
[](https://t.me/wppconnect)
|
|
23
27
|
[](https://chat.whatsapp.com/LJaQu6ZyNvnBPNAVRbX00K)
|
|
@@ -25,11 +29,11 @@ Wppconnect Server is a ready-to-use API, just download, install, and start using
|
|
|
25
29
|
|
|
26
30
|
## Documentations
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Access our documentation on [Swagger](https://wppconnect.io/swagger/wppconnect-server)
|
|
32
|
+
Detailed documentation and guides are available for your convenience:
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
- [Postman](https://documenter.getpostman.com/view/9139457/TzshF4jQ)
|
|
35
|
+
- [Swagger](https://wppconnect.io/swagger/wppconnect-server)
|
|
36
|
+
- Swagger UI can be accessed on your server through the route: "IP:PORT/api-docs"
|
|
33
37
|
|
|
34
38
|
## Features
|
|
35
39
|
|
|
@@ -38,7 +42,8 @@ Or Swagger UI in your server. Acess router: "IP:PORT/api-docs"
|
|
|
38
42
|
| Multiple Sessions | ✔ |
|
|
39
43
|
| Send **text, image, video and docs** | ✔ |
|
|
40
44
|
| Get **contacts list** | ✔ |
|
|
41
|
-
|
|
|
45
|
+
| Manage products | ✔ |
|
|
46
|
+
| Receive/Send messages | ✔ |
|
|
42
47
|
| Open/Close Session | ✔ |
|
|
43
48
|
| Change Profile/Username | ✔ |
|
|
44
49
|
| Create Group | ✔ |
|
|
@@ -55,6 +60,7 @@ Or Swagger UI in your server. Acess router: "IP:PORT/api-docs"
|
|
|
55
60
|
- Express
|
|
56
61
|
- Nodemon
|
|
57
62
|
- SocketIO
|
|
63
|
+
- S3
|
|
58
64
|
|
|
59
65
|
## Installation
|
|
60
66
|
|
|
@@ -148,6 +154,14 @@ This server use config.ts file to define some options, default values are:
|
|
|
148
154
|
onRevokedMessage: true,
|
|
149
155
|
// send all events of labels for webook and socket
|
|
150
156
|
onLabelUpdated: true,
|
|
157
|
+
// 'event', 'from' ou 'type' to ignore and not send to webhook
|
|
158
|
+
ignore: [],
|
|
159
|
+
},
|
|
160
|
+
websocket: {
|
|
161
|
+
// Just leave one active, here or on webhook.autoDownload
|
|
162
|
+
autoDownload: false,
|
|
163
|
+
// Just leave one active, here or on webhook.uploadS3, to avoid duplication in S3
|
|
164
|
+
uploadS3: false,
|
|
151
165
|
},
|
|
152
166
|
// send data to chatwoot
|
|
153
167
|
chatwoot: {
|
|
@@ -189,6 +203,7 @@ This server use config.ts file to define some options, default values are:
|
|
|
189
203
|
'--ignore-certificate-errors',
|
|
190
204
|
'--ignore-ssl-errors',
|
|
191
205
|
'--ignore-certificate-errors-spki-list',
|
|
206
|
+
'--disable-features=LeakyPeeker' // Disable the browser's sleep mode when idle, preventing the browser from going into sleep mode, this is useful for WhatsApp not to be in economy mode in the background, avoiding possible crashes
|
|
192
207
|
],
|
|
193
208
|
},
|
|
194
209
|
mapper: {
|
|
@@ -211,6 +226,14 @@ This server use config.ts file to define some options, default values are:
|
|
|
211
226
|
redisDb: 0,
|
|
212
227
|
redisPrefix: 'docker',
|
|
213
228
|
},
|
|
229
|
+
// Your configurations yo upload on AWS
|
|
230
|
+
aws_s3: {
|
|
231
|
+
region: 'sa-east-1',
|
|
232
|
+
access_key_id: '',
|
|
233
|
+
secret_key: '',
|
|
234
|
+
// If you already have a bucket created that will be used. Will bestored: you-default-bucket/{session}/{filename}
|
|
235
|
+
defaultBucketName: ''
|
|
236
|
+
},
|
|
214
237
|
}
|
|
215
238
|
```
|
|
216
239
|
|
package/dist/config/upload.js
CHANGED
|
@@ -28,5 +28,5 @@ var _path = _interopRequireDefault(require("path")); /*
|
|
|
28
28
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
29
29
|
* See the License for the specific language governing permissions and
|
|
30
30
|
* limitations under the License.
|
|
31
|
-
*/const storage = _multer.default.diskStorage({ destination: function (req, file, cb) {const __dirname = _path.default.resolve(_path.default.dirname(''));cb(null, _path.default.resolve(__dirname, 'uploads'));}, filename: function (req, file, cb) {const filename = `wppConnect-${Date.now()}-${file.originalname}`;cb(null, filename);} });const uploads = (0, _multer.default)({ storage: storage });var _default =
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
31
|
+
*/const storage = _multer.default.diskStorage({ destination: function (req, file, cb) {const __dirname = _path.default.resolve(_path.default.dirname(''));cb(null, _path.default.resolve(__dirname, 'uploads'));}, filename: function (req, file, cb) {const filename = `wppConnect-${Date.now()}-${file.originalname}`;cb(null, filename);} });const uploads = (0, _multer.default)({ storage: storage });var _default = exports.default = uploads;
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbXVsdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGF0aCIsInN0b3JhZ2UiLCJtdWx0ZXIiLCJkaXNrU3RvcmFnZSIsImRlc3RpbmF0aW9uIiwicmVxIiwiZmlsZSIsImNiIiwiX19kaXJuYW1lIiwicGF0aCIsInJlc29sdmUiLCJkaXJuYW1lIiwiZmlsZW5hbWUiLCJEYXRlIiwibm93Iiwib3JpZ2luYWxuYW1lIiwidXBsb2FkcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3VwbG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgbXVsdGVyIGZyb20gJ211bHRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3Qgc3RvcmFnZSA9IG11bHRlci5kaXNrU3RvcmFnZSh7XG4gIGRlc3RpbmF0aW9uOiBmdW5jdGlvbiAocmVxLCBmaWxlLCBjYikge1xuICAgIGNvbnN0IF9fZGlybmFtZSA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoJycpKTtcbiAgICBjYihudWxsLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAndXBsb2FkcycpKTtcbiAgfSxcbiAgZmlsZW5hbWU6IGZ1bmN0aW9uIChyZXEsIGZpbGUsIGNiKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBgd3BwQ29ubmVjdC0ke0RhdGUubm93KCl9LSR7ZmlsZS5vcmlnaW5hbG5hbWV9YDtcbiAgICBjYihudWxsLCBmaWxlbmFtZSk7XG4gIH0sXG59KTtcblxuY29uc3QgdXBsb2FkcyA9IG11bHRlcih7IHN0b3JhZ2U6IHN0b3JhZ2UgfSk7XG5leHBvcnQgZGVmYXVsdCB1cGxvYWRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUEsVUFBd0IsQ0FoQnhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUlBLE1BQU1FLE9BQU8sR0FBR0MsZUFBTSxDQUFDQyxXQUFXLENBQUMsRUFDakNDLFdBQVcsRUFBRSxTQUFBQSxDQUFVQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsRUFBRSxFQUFFLENBQ3BDLE1BQU1DLFNBQVMsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNELGFBQUksQ0FBQ0UsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2hESixFQUFFLENBQUMsSUFBSSxFQUFFRSxhQUFJLENBQUNDLE9BQU8sQ0FBQ0YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzlDLENBQUMsRUFDREksUUFBUSxFQUFFLFNBQUFBLENBQVVQLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxFQUFFLEVBQUUsQ0FDakMsTUFBTUssUUFBUSxHQUFJLGNBQWFDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUUsSUFBR1IsSUFBSSxDQUFDUyxZQUFhLEVBQUMsQ0FDaEVSLEVBQUUsQ0FBQyxJQUFJLEVBQUVLLFFBQVEsQ0FBQyxDQUNwQixDQUFDLENBQ0gsQ0FBQyxDQUFDLENBRUYsTUFBTUksT0FBTyxHQUFHLElBQUFkLGVBQU0sRUFBQyxFQUFFRCxPQUFPLEVBQUVBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBZ0IsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FDOUJILE9BQU8ifQ==
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = {
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = exports.default = {
|
|
2
2
|
secretKey: 'THISISMYSECURETOKEN',
|
|
3
3
|
host: 'http://localhost',
|
|
4
4
|
port: '21465',
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
url: null,
|
|
13
13
|
autoDownload: true,
|
|
14
14
|
uploadS3: false,
|
|
15
|
-
awsBucketName: null,
|
|
16
15
|
readMessage: true,
|
|
17
16
|
allUnreadOnStart: false,
|
|
18
17
|
listenAcks: true,
|
|
@@ -21,7 +20,13 @@
|
|
|
21
20
|
onReactionMessage: true,
|
|
22
21
|
onPollResponse: true,
|
|
23
22
|
onRevokedMessage: true,
|
|
24
|
-
onLabelUpdated: true
|
|
23
|
+
onLabelUpdated: true,
|
|
24
|
+
onSelfMessage: false,
|
|
25
|
+
ignore: ['status@broadcast']
|
|
26
|
+
},
|
|
27
|
+
websocket: {
|
|
28
|
+
autoDownload: false,
|
|
29
|
+
uploadS3: false
|
|
25
30
|
},
|
|
26
31
|
chatwoot: {
|
|
27
32
|
sendQrCode: true,
|
|
@@ -58,8 +63,17 @@
|
|
|
58
63
|
'--safebrowsing-disable-auto-update',
|
|
59
64
|
'--ignore-certificate-errors',
|
|
60
65
|
'--ignore-ssl-errors',
|
|
61
|
-
'--ignore-certificate-errors-spki-list']
|
|
66
|
+
'--ignore-certificate-errors-spki-list'],
|
|
62
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Example of configuring the linkPreview generator
|
|
70
|
+
* If you set this to 'null', it will use global servers; however, you have the option to define your own server
|
|
71
|
+
* Clone the repository https://github.com/wppconnect-team/wa-js-api-server and host it on your server with ssl
|
|
72
|
+
*
|
|
73
|
+
* Configure the attribute as follows:
|
|
74
|
+
* linkPreviewApiServers: [ 'https://www.yourserver.com/wa-js-api-server' ]
|
|
75
|
+
*/
|
|
76
|
+
linkPreviewApiServers: null
|
|
63
77
|
},
|
|
64
78
|
mapper: {
|
|
65
79
|
enable: false,
|
|
@@ -79,6 +93,14 @@
|
|
|
79
93
|
redisPassword: '',
|
|
80
94
|
redisDb: 0,
|
|
81
95
|
redisPrefix: 'docker'
|
|
96
|
+
},
|
|
97
|
+
aws_s3: {
|
|
98
|
+
region: 'sa-east-1',
|
|
99
|
+
access_key_id: null,
|
|
100
|
+
secret_key: null,
|
|
101
|
+
defaultBucketName: null,
|
|
102
|
+
endpoint: null,
|
|
103
|
+
forcePathStyle: null
|
|
82
104
|
}
|
|
83
|
-
};
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZWNyZXRLZXkiLCJob3N0IiwicG9ydCIsImRldmljZU5hbWUiLCJwb3dlcmVkQnkiLCJzdGFydEFsbFNlc3Npb24iLCJ0b2tlblN0b3JlVHlwZSIsIm1heExpc3RlbmVycyIsImN1c3RvbVVzZXJEYXRhRGlyIiwid2ViaG9vayIsInVybCIsImF1dG9Eb3dubG9hZCIsInVwbG9hZFMzIiwicmVhZE1lc3NhZ2UiLCJhbGxVbnJlYWRPblN0YXJ0IiwibGlzdGVuQWNrcyIsIm9uUHJlc2VuY2VDaGFuZ2VkIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblBvbGxSZXNwb25zZSIsIm9uUmV2b2tlZE1lc3NhZ2UiLCJvbkxhYmVsVXBkYXRlZCIsIm9uU2VsZk1lc3NhZ2UiLCJpZ25vcmUiLCJ3ZWJzb2NrZXQiLCJjaGF0d29vdCIsInNlbmRRckNvZGUiLCJzZW5kU3RhdHVzIiwiYXJjaGl2ZSIsImVuYWJsZSIsIndhaXRUaW1lIiwiZGF5c1RvQXJjaGl2ZSIsImxvZyIsImxldmVsIiwibG9nZ2VyIiwiY3JlYXRlT3B0aW9ucyIsImJyb3dzZXJBcmdzIiwibGlua1ByZXZpZXdBcGlTZXJ2ZXJzIiwibWFwcGVyIiwicHJlZml4IiwiZGIiLCJtb25nb2RiRGF0YWJhc2UiLCJtb25nb2RiQ29sbGVjdGlvbiIsIm1vbmdvZGJVc2VyIiwibW9uZ29kYlBhc3N3b3JkIiwibW9uZ29kYkhvc3QiLCJtb25nb0lzUmVtb3RlIiwibW9uZ29VUkxSZW1vdGUiLCJtb25nb2RiUG9ydCIsInJlZGlzSG9zdCIsInJlZGlzUG9ydCIsInJlZGlzUGFzc3dvcmQiLCJyZWRpc0RiIiwicmVkaXNQcmVmaXgiLCJhd3NfczMiLCJyZWdpb24iLCJhY2Nlc3Nfa2V5X2lkIiwic2VjcmV0X2tleSIsImRlZmF1bHRCdWNrZXROYW1lIiwiZW5kcG9pbnQiLCJmb3JjZVBhdGhTdHlsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBzZWNyZXRLZXk6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJyxcbiAgaG9zdDogJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICBwb3J0OiAnMjE0NjUnLFxuICBkZXZpY2VOYW1lOiAnV3BwQ29ubmVjdCcsXG4gIHBvd2VyZWRCeTogJ1dQUENvbm5lY3QtU2VydmVyJyxcbiAgc3RhcnRBbGxTZXNzaW9uOiB0cnVlLFxuICB0b2tlblN0b3JlVHlwZTogJ2ZpbGUnLFxuICBtYXhMaXN0ZW5lcnM6IDE1LFxuICBjdXN0b21Vc2VyRGF0YURpcjogJy4vdXNlckRhdGFEaXIvJyxcbiAgd2ViaG9vazoge1xuICAgIHVybDogbnVsbCxcbiAgICBhdXRvRG93bmxvYWQ6IHRydWUsXG4gICAgdXBsb2FkUzM6IGZhbHNlLFxuICAgIHJlYWRNZXNzYWdlOiB0cnVlLFxuICAgIGFsbFVucmVhZE9uU3RhcnQ6IGZhbHNlLFxuICAgIGxpc3RlbkFja3M6IHRydWUsXG4gICAgb25QcmVzZW5jZUNoYW5nZWQ6IHRydWUsXG4gICAgb25QYXJ0aWNpcGFudHNDaGFuZ2VkOiB0cnVlLFxuICAgIG9uUmVhY3Rpb25NZXNzYWdlOiB0cnVlLFxuICAgIG9uUG9sbFJlc3BvbnNlOiB0cnVlLFxuICAgIG9uUmV2b2tlZE1lc3NhZ2U6IHRydWUsXG4gICAgb25MYWJlbFVwZGF0ZWQ6IHRydWUsXG4gICAgb25TZWxmTWVzc2FnZTogZmFsc2UsXG4gICAgaWdub3JlOiBbJ3N0YXR1c0Bicm9hZGNhc3QnXSxcbiAgfSxcbiAgd2Vic29ja2V0OiB7XG4gICAgYXV0b0Rvd25sb2FkOiBmYWxzZSxcbiAgICB1cGxvYWRTMzogZmFsc2UsXG4gIH0sXG4gIGNoYXR3b290OiB7XG4gICAgc2VuZFFyQ29kZTogdHJ1ZSxcbiAgICBzZW5kU3RhdHVzOiB0cnVlLFxuICB9LFxuICBhcmNoaXZlOiB7XG4gICAgZW5hYmxlOiBmYWxzZSxcbiAgICB3YWl0VGltZTogMTAsXG4gICAgZGF5c1RvQXJjaGl2ZTogNDUsXG4gIH0sXG4gIGxvZzoge1xuICAgIGxldmVsOiAnc2lsbHknLCAvLyBCZWZvcmUgb3BlbiBhIGlzc3VlLCBjaGFuZ2UgbGV2ZWwgdG8gc2lsbHkgYW5kIHJldHJ5IGEgYWN0aW9uXG4gICAgbG9nZ2VyOiBbJ2NvbnNvbGUnLCAnZmlsZSddLFxuICB9LFxuICBjcmVhdGVPcHRpb25zOiB7XG4gICAgYnJvd3NlckFyZ3M6IFtcbiAgICAgICctLWRpc2FibGUtd2ViLXNlY3VyaXR5JyxcbiAgICAgICctLW5vLXNhbmRib3gnLFxuICAgICAgJy0tZGlzYWJsZS13ZWItc2VjdXJpdHknLFxuICAgICAgJy0tYWdncmVzc2l2ZS1jYWNoZS1kaXNjYXJkJyxcbiAgICAgICctLWRpc2FibGUtY2FjaGUnLFxuICAgICAgJy0tZGlzYWJsZS1hcHBsaWNhdGlvbi1jYWNoZScsXG4gICAgICAnLS1kaXNhYmxlLW9mZmxpbmUtbG9hZC1zdGFsZS1jYWNoZScsXG4gICAgICAnLS1kaXNrLWNhY2hlLXNpemU9MCcsXG4gICAgICAnLS1kaXNhYmxlLWJhY2tncm91bmQtbmV0d29ya2luZycsXG4gICAgICAnLS1kaXNhYmxlLWRlZmF1bHQtYXBwcycsXG4gICAgICAnLS1kaXNhYmxlLWV4dGVuc2lvbnMnLFxuICAgICAgJy0tZGlzYWJsZS1zeW5jJyxcbiAgICAgICctLWRpc2FibGUtdHJhbnNsYXRlJyxcbiAgICAgICctLWhpZGUtc2Nyb2xsYmFycycsXG4gICAgICAnLS1tZXRyaWNzLXJlY29yZGluZy1vbmx5JyxcbiAgICAgICctLW11dGUtYXVkaW8nLFxuICAgICAgJy0tbm8tZmlyc3QtcnVuJyxcbiAgICAgICctLXNhZmVicm93c2luZy1kaXNhYmxlLWF1dG8tdXBkYXRlJyxcbiAgICAgICctLWlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnMnLFxuICAgICAgJy0taWdub3JlLXNzbC1lcnJvcnMnLFxuICAgICAgJy0taWdub3JlLWNlcnRpZmljYXRlLWVycm9ycy1zcGtpLWxpc3QnLFxuICAgIF0sXG4gICAgLyoqXG4gICAgICogRXhhbXBsZSBvZiBjb25maWd1cmluZyB0aGUgbGlua1ByZXZpZXcgZ2VuZXJhdG9yXG4gICAgICogSWYgeW91IHNldCB0aGlzIHRvICdudWxsJywgaXQgd2lsbCB1c2UgZ2xvYmFsIHNlcnZlcnM7IGhvd2V2ZXIsIHlvdSBoYXZlIHRoZSBvcHRpb24gdG8gZGVmaW5lIHlvdXIgb3duIHNlcnZlclxuICAgICAqIENsb25lIHRoZSByZXBvc2l0b3J5IGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd2EtanMtYXBpLXNlcnZlciBhbmQgaG9zdCBpdCBvbiB5b3VyIHNlcnZlciB3aXRoIHNzbFxuICAgICAqXG4gICAgICogQ29uZmlndXJlIHRoZSBhdHRyaWJ1dGUgYXMgZm9sbG93czpcbiAgICAgKiBsaW5rUHJldmlld0FwaVNlcnZlcnM6IFsgJ2h0dHBzOi8vd3d3LnlvdXJzZXJ2ZXIuY29tL3dhLWpzLWFwaS1zZXJ2ZXInIF1cbiAgICAgKi9cbiAgICBsaW5rUHJldmlld0FwaVNlcnZlcnM6IG51bGwsXG4gIH0sXG4gIG1hcHBlcjoge1xuICAgIGVuYWJsZTogZmFsc2UsXG4gICAgcHJlZml4OiAndGFnb25lLScsXG4gIH0sXG4gIGRiOiB7XG4gICAgbW9uZ29kYkRhdGFiYXNlOiAndG9rZW5zJyxcbiAgICBtb25nb2RiQ29sbGVjdGlvbjogJycsXG4gICAgbW9uZ29kYlVzZXI6ICcnLFxuICAgIG1vbmdvZGJQYXNzd29yZDogJycsXG4gICAgbW9uZ29kYkhvc3Q6ICcnLFxuICAgIG1vbmdvSXNSZW1vdGU6IHRydWUsXG4gICAgbW9uZ29VUkxSZW1vdGU6ICcnLFxuICAgIG1vbmdvZGJQb3J0OiAyNzAxNyxcbiAgICByZWRpc0hvc3Q6ICdsb2NhbGhvc3QnLFxuICAgIHJlZGlzUG9ydDogNjM3OSxcbiAgICByZWRpc1Bhc3N3b3JkOiAnJyxcbiAgICByZWRpc0RiOiAwLFxuICAgIHJlZGlzUHJlZml4OiAnZG9ja2VyJyxcbiAgfSxcbiAgYXdzX3MzOiB7XG4gICAgcmVnaW9uOiAnc2EtZWFzdC0xJyxcbiAgICBhY2Nlc3Nfa2V5X2lkOiBudWxsLFxuICAgIHNlY3JldF9rZXk6IG51bGwsXG4gICAgZGVmYXVsdEJ1Y2tldE5hbWU6IG51bGwsXG4gICAgZW5kcG9pbnQ6IG51bGwsXG4gICAgZm9yY2VQYXRoU3R5bGU6IG51bGwsXG4gIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoicUlBQWU7RUFDYkEsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsSUFBSSxFQUFFLGtCQUFrQjtFQUN4QkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsVUFBVSxFQUFFLFlBQVk7RUFDeEJDLFNBQVMsRUFBRSxtQkFBbUI7RUFDOUJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxjQUFjLEVBQUUsTUFBTTtFQUN0QkMsWUFBWSxFQUFFLEVBQUU7RUFDaEJDLGlCQUFpQixFQUFFLGdCQUFnQjtFQUNuQ0MsT0FBTyxFQUFFO0lBQ1BDLEdBQUcsRUFBRSxJQUFJO0lBQ1RDLFlBQVksRUFBRSxJQUFJO0lBQ2xCQyxRQUFRLEVBQUUsS0FBSztJQUNmQyxXQUFXLEVBQUUsSUFBSTtJQUNqQkMsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLHFCQUFxQixFQUFFLElBQUk7SUFDM0JDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLGNBQWMsRUFBRSxJQUFJO0lBQ3BCQyxnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCQyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsYUFBYSxFQUFFLEtBQUs7SUFDcEJDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQjtFQUM3QixDQUFDO0VBQ0RDLFNBQVMsRUFBRTtJQUNUYixZQUFZLEVBQUUsS0FBSztJQUNuQkMsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEYSxRQUFRLEVBQUU7SUFDUkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFDREMsT0FBTyxFQUFFO0lBQ1BDLE1BQU0sRUFBRSxLQUFLO0lBQ2JDLFFBQVEsRUFBRSxFQUFFO0lBQ1pDLGFBQWEsRUFBRTtFQUNqQixDQUFDO0VBQ0RDLEdBQUcsRUFBRTtJQUNIQyxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ2hCQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTTtFQUM1QixDQUFDO0VBQ0RDLGFBQWEsRUFBRTtJQUNiQyxXQUFXLEVBQUU7SUFDWCx3QkFBd0I7SUFDeEIsY0FBYztJQUNkLHdCQUF3QjtJQUN4Qiw0QkFBNEI7SUFDNUIsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixvQ0FBb0M7SUFDcEMscUJBQXFCO0lBQ3JCLGlDQUFpQztJQUNqQyx3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLDBCQUEwQjtJQUMxQixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLG9DQUFvQztJQUNwQyw2QkFBNkI7SUFDN0IscUJBQXFCO0lBQ3JCLHVDQUF1QyxDQUN4Qzs7SUFDRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0lDLHFCQUFxQixFQUFFO0VBQ3pCLENBQUM7RUFDREMsTUFBTSxFQUFFO0lBQ05ULE1BQU0sRUFBRSxLQUFLO0lBQ2JVLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFDREMsRUFBRSxFQUFFO0lBQ0ZDLGVBQWUsRUFBRSxRQUFRO0lBQ3pCQyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCQyxXQUFXLEVBQUUsRUFBRTtJQUNmQyxlQUFlLEVBQUUsRUFBRTtJQUNuQkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCQyxXQUFXLEVBQUUsS0FBSztJQUNsQkMsU0FBUyxFQUFFLFdBQVc7SUFDdEJDLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLGFBQWEsRUFBRSxFQUFFO0lBQ2pCQyxPQUFPLEVBQUUsQ0FBQztJQUNWQyxXQUFXLEVBQUU7RUFDZixDQUFDO0VBQ0RDLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsV0FBVztJQUNuQkMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxjQUFjLEVBQUU7RUFDbEI7QUFDRixDQUFDIn0=
|