dcdx 1.3.0-next.25 → 1.3.0-next.27
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/assets/versions.json +1 -1
- package/lib/commands/apt.js +1036 -981
- package/lib/commands/build.js +997 -973
- package/lib/commands/database.js +994 -966
- package/lib/commands/debug.js +997 -973
- package/lib/commands/install.js +1247 -1029
- package/lib/commands/reset.js +994 -966
- package/lib/commands/run.js +994 -966
- package/lib/commands/stop.js +994 -966
- package/lib/commands/update.js +994 -966
- package/lib/index.js +1 -1
- package/lib/types/src/helpers/FileWatcher.d.ts +2 -2
- package/lib/types/src/helpers/Installer.d.ts +2 -2
- package/lib/types/src/types/DCAPT.d.ts +41 -15
- package/lib/types/src/types/FileWatcher.d.ts +36 -0
- package/lib/types/src/types/Install.d.ts +36 -0
- package/lib/types/src/types/Installer.d.ts +21 -0
- package/package.json +3 -1
package/lib/commands/install.js
CHANGED
|
@@ -4,16 +4,222 @@ import { asyncExitHook, gracefulExit } from 'exit-hook';
|
|
|
4
4
|
import { glob } from 'glob';
|
|
5
5
|
import { join, resolve, dirname } from 'path';
|
|
6
6
|
import { cwd } from 'process';
|
|
7
|
+
import { select, input, confirm } from '@inquirer/prompts';
|
|
8
|
+
import axios from 'axios';
|
|
9
|
+
import { SingleBar, Presets } from 'cli-progress';
|
|
10
|
+
import { parse } from 'content-disposition';
|
|
11
|
+
import { createReadStream, rmSync, mkdirSync, createWriteStream, existsSync, readFileSync, realpathSync } from 'fs';
|
|
12
|
+
import { homedir } from 'os';
|
|
13
|
+
import FormData from 'form-data';
|
|
7
14
|
import { z } from 'zod';
|
|
8
15
|
import { DOMParser, XMLSerializer } from '@xmldom/xmldom';
|
|
9
16
|
import { spawn, execSync } from 'child_process';
|
|
10
17
|
import { XMLParser } from 'fast-xml-parser';
|
|
11
|
-
import { existsSync, readFileSync, createReadStream, realpathSync } from 'fs';
|
|
12
18
|
import xpath from 'xpath';
|
|
13
19
|
import { watch } from 'chokidar';
|
|
14
20
|
import Dockerode from 'dockerode';
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
|
|
22
|
+
const app3hour = 'AAABCA0ODAoPeNpdj01PwkAURffzKyZxZ1IyUzARkllQ24gRaQMtGnaP8VEmtjPNfFT59yJVFyzfubkn796Ux0Bz6SmbUM5nbDzj97RISxozHpMUnbSq88poUaLztFEStUN6MJZ2TaiVpu/YY2M6tI6sQrtHmx8qd74EZ+TBIvyUU/AoYs7jiE0jzknWQxMuifA2IBlUbnQ7AulVjwN9AaU9atASs69O2dNFU4wXJLc1aOUGw9w34JwCTTZoe7RPqUgep2X0Vm0n0fNut4gSxl/Jcnj9nFb6Q5tP/Ueu3L+0PHW4ghZFmm2zZV5k6/95CbR7Y9bYGo/zGrV3Ir4jRbDyCA6vt34DO8p3SDAsAhQnJjLD5k9Fr3uaIzkXKf83o5vDdQIUe4XequNCC3D+9ht9ZYhNZFKmnhc=X02dh';
|
|
23
|
+
|
|
24
|
+
const uploadToUPM = async (baseUrl, path, username, password, verbose = true) => {
|
|
25
|
+
const credentials = username && password ? Buffer.from(`${username}:${password}`).toString('base64') : null;
|
|
26
|
+
const response = await axios.get(`${baseUrl}/rest/plugins/1.0/?os_authType=basic`, credentials ? {
|
|
27
|
+
headers: { 'Authorization': `Basic ${credentials}` }
|
|
28
|
+
} : undefined).catch(err => {
|
|
29
|
+
verbose && console.log('Failed to upload plugin archive file to UPM, unable to retrieve token', err);
|
|
30
|
+
return null;
|
|
31
|
+
});
|
|
32
|
+
if (response) {
|
|
33
|
+
const token = response.headers['upm-token'];
|
|
34
|
+
if (token) {
|
|
35
|
+
const formData = new FormData();
|
|
36
|
+
formData.append('plugin', createReadStream(path));
|
|
37
|
+
await axios.post(`${baseUrl}/rest/plugins/1.0/?token=${token}`, formData, { headers: {
|
|
38
|
+
...formData.getHeaders(),
|
|
39
|
+
...credentials ? { 'Authorization': `Basic ${credentials}` } : {}
|
|
40
|
+
} })
|
|
41
|
+
.then(() => verbose && console.log('Finished uploading plugin archive to UPM'))
|
|
42
|
+
.catch(err => verbose && console.log('Failed to upload plugin archive file to UPM', err));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
verbose && console.log('Failed to upload plugin archive file to UPM, unable to retrieve token from headers:', JSON.stringify(response.headers, null, 2));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const waitForPluginToBeEnabled = async (appKey, baseUrl, username, password, verbose = true) => {
|
|
50
|
+
const credentials = username && password ? Buffer.from(`${username}:${password}`).toString('base64') : null;
|
|
51
|
+
verbose && console.log('Waiting for plugin to become enabled');
|
|
52
|
+
let isEnabled = false;
|
|
53
|
+
let count = 0;
|
|
54
|
+
while (!isEnabled && count < 300) {
|
|
55
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
56
|
+
verbose && console.log(`Waiting for plugin to become enabled... ${count}s`);
|
|
57
|
+
const { data } = await axios.get(`${baseUrl}/rest/plugins/1.0/${appKey}-key`, credentials ? {
|
|
58
|
+
headers: { 'Authorization': `Basic ${credentials}` }
|
|
59
|
+
} : undefined).catch(() => ({ data: { enabled: false } }));
|
|
60
|
+
isEnabled = data?.enabled;
|
|
61
|
+
count++;
|
|
62
|
+
}
|
|
63
|
+
return isEnabled;
|
|
64
|
+
};
|
|
65
|
+
const registerLicense = async (appKey, license, baseUrl, username, password, verbose = true) => {
|
|
66
|
+
const credentials = username && password ? Buffer.from(`${username}:${password}`).toString('base64') : null;
|
|
67
|
+
const { data } = await axios.get(`${baseUrl}/rest/plugins/1.0/${appKey}-key/license`, {
|
|
68
|
+
headers: {
|
|
69
|
+
'X-Atlassian-Token': 'no-check',
|
|
70
|
+
'Content-Type': 'application/vnd.atl.plugins+json',
|
|
71
|
+
...credentials ? { 'Authorization': `Basic ${credentials}` } : {}
|
|
72
|
+
}
|
|
73
|
+
}).catch(() => ({ data: {} }));
|
|
74
|
+
const { rawLicense } = data;
|
|
75
|
+
if (!rawLicense || rawLicense !== license) {
|
|
76
|
+
await axios.put(`${baseUrl}/rest/plugins/1.0/${appKey}-key/license`, `{ "rawLicense": "${license}" }`, {
|
|
77
|
+
headers: {
|
|
78
|
+
'X-Atlassian-Token': 'no-check',
|
|
79
|
+
'Content-Type': 'application/vnd.atl.plugins+json',
|
|
80
|
+
...credentials ? { 'Authorization': `Basic ${credentials}` } : {}
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
.then(() => verbose && console.log('Finished uploading license to UPM'))
|
|
84
|
+
.catch(err => verbose && console.log('Failed to upload license to UPM', err));
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const progressBar = new SingleBar({
|
|
89
|
+
format: ' [{bar}] {percentage}% | ETA: {remaining}m',
|
|
90
|
+
hideCursor: true
|
|
91
|
+
}, Presets.legacy);
|
|
92
|
+
const round = (value, step) => {
|
|
93
|
+
step || (step = 1.0);
|
|
94
|
+
const inv = 1.0 / step;
|
|
95
|
+
return Math.round(value * inv) / inv;
|
|
96
|
+
};
|
|
97
|
+
const download = async (addonKey) => {
|
|
98
|
+
const tmpDir = join(homedir(), '.dcdx', 'tmp');
|
|
99
|
+
let tmpFile = join(tmpDir, addonKey);
|
|
100
|
+
mkdirSync(tmpDir, { recursive: true });
|
|
101
|
+
await axios({
|
|
102
|
+
method: 'get',
|
|
103
|
+
url: `https://marketplace.atlassian.com/download/plugins/${addonKey}`,
|
|
104
|
+
responseType: 'stream'
|
|
105
|
+
}).then(response => {
|
|
106
|
+
const disposition = parse(response.headers['content-disposition']);
|
|
107
|
+
const filename = disposition?.parameters?.filename || addonKey;
|
|
108
|
+
tmpFile = filename;
|
|
109
|
+
response.data.pipe(createWriteStream(tmpFile));
|
|
110
|
+
}).catch(() => null);
|
|
111
|
+
return tmpFile;
|
|
112
|
+
};
|
|
113
|
+
const installApp = async (baseUrl, appKey, license = app3hour, force) => {
|
|
114
|
+
// If we are in non-interactive mode, we will download it from MPAC
|
|
115
|
+
if (force) {
|
|
116
|
+
// In order to do so, we need an appkey. If this is not provided, throw a hissy fit
|
|
117
|
+
if (!appKey) {
|
|
118
|
+
throw new Error('Failed to automatically install app into cluster, `appKey` was not provided');
|
|
119
|
+
}
|
|
120
|
+
console.log(`
|
|
121
|
+
Installing the app (${appKey}) into the cluster using the Universal Plugin Manager REST API`);
|
|
122
|
+
// Show a progress bar
|
|
123
|
+
progressBar.start(300, 0, { remaining: 5 });
|
|
124
|
+
const timerId = setInterval(() => {
|
|
125
|
+
if (progressBar.getProgress() >= 300) {
|
|
126
|
+
throw new Error('Failed to install app into the cluster using the Universal Plugin Manager REST API');
|
|
127
|
+
}
|
|
128
|
+
progressBar.increment(1, { remaining: round((progressBar.getTotal() - progressBar.getProgress()) / 60, 0.5) });
|
|
129
|
+
}, 1000);
|
|
130
|
+
// Download the file from MPAC
|
|
131
|
+
const file = await download(appKey);
|
|
132
|
+
// Upload it into the cluster using the UPM REST API
|
|
133
|
+
await uploadToUPM(baseUrl, file, 'admin', 'admin', false);
|
|
134
|
+
// Wait for the plugin to be enabled
|
|
135
|
+
await waitForPluginToBeEnabled(appKey, baseUrl, 'admin', 'admin', false);
|
|
136
|
+
// Register the license (use the 3 hour timebomb in non-interactive mode)
|
|
137
|
+
await registerLicense(appKey, license, baseUrl, 'admin', 'admin', false);
|
|
138
|
+
// Remove the temporary file
|
|
139
|
+
rmSync(file, { force: true });
|
|
140
|
+
// Stop the progress bar
|
|
141
|
+
progressBar.stop();
|
|
142
|
+
clearInterval(timerId);
|
|
143
|
+
// Tell them we succeeded
|
|
144
|
+
console.log(`✔ Finished installing the app (${appKey})`);
|
|
145
|
+
// If we're in interactive mode, let's be nice
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Tell the user they have options
|
|
149
|
+
console.log(`
|
|
150
|
+
It is now required to install the app into the Jira cluster.
|
|
151
|
+
We can install it from the Atlassian Marketplace or you can install it manually.
|
|
152
|
+
`);
|
|
153
|
+
// Ask them if they prefer automation or tedious manual tasks
|
|
154
|
+
const method = await select({
|
|
155
|
+
message: `How do you want to install the app?`,
|
|
156
|
+
default: 'mpac',
|
|
157
|
+
choices: [
|
|
158
|
+
{ name: 'Marketplace', value: 'mpac' },
|
|
159
|
+
{ name: 'Manual', value: 'manual' }
|
|
160
|
+
]
|
|
161
|
+
});
|
|
162
|
+
// If they chose automation, let's automate!
|
|
163
|
+
if (method === 'mpac') {
|
|
164
|
+
// Ask them nicely for the app key
|
|
165
|
+
const addonKey = await input({
|
|
166
|
+
message: 'Please provide the key of the app to be installed',
|
|
167
|
+
default: appKey,
|
|
168
|
+
required: true
|
|
169
|
+
});
|
|
170
|
+
// Ask them nicely for the app license to be used
|
|
171
|
+
const appLicense = await input({
|
|
172
|
+
message: `License`,
|
|
173
|
+
default: license,
|
|
174
|
+
required: true
|
|
175
|
+
});
|
|
176
|
+
// Tell them we are starting
|
|
177
|
+
console.log(`
|
|
178
|
+
Installing the app (${addonKey}) into the cluster using the Universal Plugin Manager REST API`);
|
|
179
|
+
// Show a progress bar
|
|
180
|
+
progressBar.start(300, 0, { remaining: 5 });
|
|
181
|
+
const timerId = setInterval(() => {
|
|
182
|
+
if (progressBar.getProgress() >= 300) {
|
|
183
|
+
throw new Error('Failed to install app into the cluster using the Universal Plugin Manager REST API');
|
|
184
|
+
}
|
|
185
|
+
progressBar.increment(1, { remaining: round((progressBar.getTotal() - progressBar.getProgress()) / 60, 0.5) });
|
|
186
|
+
}, 1000);
|
|
187
|
+
// Download the file from MPAC
|
|
188
|
+
const file = await download(addonKey);
|
|
189
|
+
// Upload it into the cluster using the UPM REST API
|
|
190
|
+
await uploadToUPM(baseUrl, file, 'admin', 'admin', false);
|
|
191
|
+
// Wait for the plugin to be enabled
|
|
192
|
+
await waitForPluginToBeEnabled(addonKey, baseUrl, 'admin', 'admin', false);
|
|
193
|
+
// Register the provided license
|
|
194
|
+
await registerLicense(addonKey, appLicense, baseUrl, 'admin', 'admin', false);
|
|
195
|
+
// Remove the temporary file
|
|
196
|
+
rmSync(file, { force: true });
|
|
197
|
+
// Stop the progress bar
|
|
198
|
+
progressBar.stop();
|
|
199
|
+
clearInterval(timerId);
|
|
200
|
+
// Tell them we succeeded
|
|
201
|
+
console.log(`✔ Finished installing the app (${addonKey})`);
|
|
202
|
+
// They chose violence
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Rub it in their face
|
|
206
|
+
console.log(`
|
|
207
|
+
You can now install the app manually into the cluster.
|
|
208
|
+
Please go to the following page (login with 'admin'/'admin'):
|
|
209
|
+
|
|
210
|
+
${baseUrl}/plugins/servlet/upm?source=side_nav_manage_addons
|
|
211
|
+
`);
|
|
212
|
+
// Make them grovel
|
|
213
|
+
const isInstalledManually = await confirm({
|
|
214
|
+
message: `Please confirm that you have installed the app manually`
|
|
215
|
+
});
|
|
216
|
+
// If the app ain't installed, we ain't doing nothin'. So we better throw a hissy fit
|
|
217
|
+
if (!isInstalledManually) {
|
|
218
|
+
throw new Error('It is required to install the app to run the second performance regression test');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
};
|
|
17
223
|
|
|
18
224
|
const ActionHandler = async (program, { action, errorHandler }, options) => {
|
|
19
225
|
const ops = options || program.opts();
|
|
@@ -66,555 +272,565 @@ const ActionHandler = async (program, { action, errorHandler }, options) => {
|
|
|
66
272
|
};
|
|
67
273
|
|
|
68
274
|
var jira = [
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"10.
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"9.15.
|
|
275
|
+
"10.3.0-RC-ubuntu-jdk17",
|
|
276
|
+
"10.3.0-RC-jdk17",
|
|
277
|
+
"10.3.0-RC",
|
|
278
|
+
"10.3.0-RC-ubi9-jdk17",
|
|
279
|
+
"10.3.0-RC-ubi9",
|
|
280
|
+
"9.15.0",
|
|
281
|
+
"9.15.0-ubuntu-jdk17",
|
|
282
|
+
"9.15.0-jdk17",
|
|
77
283
|
"9.15.1-ubuntu-jdk17",
|
|
78
284
|
"9.15.1-jdk17",
|
|
79
|
-
"
|
|
285
|
+
"9.15.1",
|
|
286
|
+
"10.0.0-jdk17",
|
|
287
|
+
"10.0.0",
|
|
288
|
+
"10.0.0-ubuntu-jdk17",
|
|
289
|
+
"9.15-ubuntu-jdk17",
|
|
290
|
+
"9.15-jdk17",
|
|
291
|
+
"9.15.2-ubuntu-jdk17",
|
|
292
|
+
"9.15.2",
|
|
293
|
+
"9.15",
|
|
294
|
+
"9.15.2-jdk17",
|
|
295
|
+
"9.7.1-jdk11",
|
|
296
|
+
"9.7.1",
|
|
297
|
+
"9.7.1-ubuntu-jdk11",
|
|
298
|
+
"9.12.4-jdk17",
|
|
299
|
+
"9.12.4-ubuntu-jdk17",
|
|
300
|
+
"9.12.4",
|
|
80
301
|
"10.0-ubuntu-jdk17",
|
|
81
|
-
"10.0.1-jdk17",
|
|
82
|
-
"10.0.1-ubuntu-jdk17",
|
|
83
302
|
"10.0-jdk17",
|
|
303
|
+
"10.0.1-ubuntu-jdk17",
|
|
304
|
+
"10.0.1-jdk17",
|
|
84
305
|
"10.0",
|
|
85
|
-
"
|
|
86
|
-
"9.
|
|
87
|
-
"9.
|
|
88
|
-
"9.
|
|
306
|
+
"10.0.1",
|
|
307
|
+
"9.7",
|
|
308
|
+
"9.7.2-jdk11",
|
|
309
|
+
"9.7.2-ubuntu-jdk11",
|
|
310
|
+
"9.7.2",
|
|
311
|
+
"9.7-ubuntu-jdk11",
|
|
312
|
+
"9.7-jdk11",
|
|
89
313
|
"9.12.5",
|
|
314
|
+
"9.12.5-jdk17",
|
|
90
315
|
"9.12.5-ubuntu-jdk17",
|
|
91
|
-
"9.
|
|
92
|
-
"9.12.1",
|
|
93
|
-
"9.12.1-ubuntu-jdk17",
|
|
94
|
-
"10.1.1-jdk17",
|
|
95
|
-
"10.1.1",
|
|
96
|
-
"10.1.1-ubuntu-jdk17",
|
|
316
|
+
"9.16.0-ubuntu-jdk17",
|
|
97
317
|
"9.16.0",
|
|
98
318
|
"9.16.0-jdk17",
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"9.
|
|
103
|
-
"9.12.
|
|
104
|
-
"9.
|
|
105
|
-
"9.12.10",
|
|
319
|
+
"10.1.1-ubuntu-jdk17",
|
|
320
|
+
"10.1.1-jdk17",
|
|
321
|
+
"10.1.1",
|
|
322
|
+
"9.12.0-ubuntu-jdk17",
|
|
323
|
+
"9.12.0",
|
|
324
|
+
"9.12.0-jdk17",
|
|
106
325
|
"9.12.6-ubuntu-jdk17",
|
|
326
|
+
"9.12.6-jdk17",
|
|
107
327
|
"9.12.6",
|
|
108
|
-
"9.
|
|
109
|
-
"9.
|
|
110
|
-
"9.
|
|
111
|
-
"9.12.12",
|
|
112
|
-
"9.12.11-ubuntu-jdk17",
|
|
113
|
-
"9.7.1-jdk11",
|
|
114
|
-
"9.12.11",
|
|
115
|
-
"9.12.11-jdk17",
|
|
116
|
-
"9.12.12-ubuntu-jdk17",
|
|
117
|
-
"9.12.12-jdk17",
|
|
118
|
-
"9.4.12",
|
|
119
|
-
"9.12.8-ubuntu-jdk17",
|
|
120
|
-
"9.17.0-jdk11",
|
|
121
|
-
"9.12.9-jdk17",
|
|
328
|
+
"9.16",
|
|
329
|
+
"9.16-ubuntu-jdk17",
|
|
330
|
+
"9.16-jdk17",
|
|
122
331
|
"9.16.1",
|
|
123
|
-
"
|
|
124
|
-
"9.
|
|
332
|
+
"9.16.1-ubuntu-jdk17",
|
|
333
|
+
"9.16.1-jdk17",
|
|
334
|
+
"9.14-jdk11",
|
|
335
|
+
"9.14-ubuntu-jdk11",
|
|
336
|
+
"9.14.1-jdk11",
|
|
337
|
+
"9.14.1-ubuntu-jdk11",
|
|
338
|
+
"9.12.1-jdk17",
|
|
339
|
+
"9.8.0-ubuntu-jdk11",
|
|
340
|
+
"9.12.1-ubuntu-jdk17",
|
|
341
|
+
"9.12.1",
|
|
342
|
+
"9.8.0-jdk11",
|
|
343
|
+
"9.8.0",
|
|
125
344
|
"10.1.2-jdk17",
|
|
126
|
-
"10.
|
|
345
|
+
"10.1",
|
|
346
|
+
"10.1-jdk17",
|
|
347
|
+
"10.1.2",
|
|
127
348
|
"10.1-ubuntu-jdk17",
|
|
128
|
-
"9.16-jdk17",
|
|
129
|
-
"9.16-ubuntu-jdk17",
|
|
130
|
-
"9.16",
|
|
131
349
|
"10.1.2-ubuntu-jdk17",
|
|
350
|
+
"9.12.7-jdk17",
|
|
132
351
|
"9.12.7",
|
|
133
|
-
"9.4.12-jdk11",
|
|
134
|
-
"10.1.2",
|
|
135
|
-
"ubuntu-jdk17",
|
|
136
|
-
"10.1",
|
|
137
|
-
"9.7-ubuntu-jdk11",
|
|
138
|
-
"9.14-jdk11",
|
|
139
|
-
"9.15.0-jdk11",
|
|
140
|
-
"9.16.1-ubuntu-jdk17",
|
|
141
|
-
"10.2-ubuntu-jdk17",
|
|
142
|
-
"10.2.0-jdk17",
|
|
143
|
-
"9.4.7-ubuntu-jdk11",
|
|
144
|
-
"10-ubuntu-jdk17",
|
|
145
|
-
"10",
|
|
146
|
-
"9.16.1-jdk17",
|
|
147
|
-
"9.4.7-jdk11",
|
|
148
352
|
"9.12.7-ubuntu-jdk17",
|
|
149
|
-
"9.8.0-jdk11",
|
|
150
|
-
"9.12.7-jdk11",
|
|
151
|
-
"9.10.0-ubuntu-jdk11",
|
|
152
|
-
"9.4.7",
|
|
153
|
-
"9.15.0-ubuntu-jdk11",
|
|
154
|
-
"9.12.13-ubuntu-jdk17",
|
|
155
|
-
"9.7.2-jdk11",
|
|
156
|
-
"9.12.9",
|
|
157
|
-
"9.12.7-jdk17",
|
|
158
|
-
"9.8.1-ubuntu-jdk11",
|
|
159
353
|
"9.4.26",
|
|
160
|
-
"9.
|
|
161
|
-
"9.
|
|
162
|
-
"9.
|
|
163
|
-
"9.
|
|
354
|
+
"9.4.26-ubuntu-jdk11",
|
|
355
|
+
"9.4.26-jdk11",
|
|
356
|
+
"9.12.10-ubuntu-jdk17",
|
|
357
|
+
"9.12.10-jdk17",
|
|
358
|
+
"9.12.10",
|
|
359
|
+
"9.17.0",
|
|
360
|
+
"9.8.1",
|
|
164
361
|
"9.8.1-jdk11",
|
|
165
|
-
"9.
|
|
166
|
-
"9.
|
|
167
|
-
"9.
|
|
168
|
-
"9.
|
|
362
|
+
"9.8.1-ubuntu-jdk11",
|
|
363
|
+
"9.15.0-jdk11",
|
|
364
|
+
"9.17.0-jdk17",
|
|
365
|
+
"9.12.8-ubuntu-jdk17",
|
|
366
|
+
"9.15.0-ubuntu-jdk11",
|
|
367
|
+
"9.17.0-ubuntu-jdk17",
|
|
368
|
+
"9.17.0-jdk11",
|
|
369
|
+
"9.12.8",
|
|
370
|
+
"9.12.8-jdk17",
|
|
371
|
+
"9.17.0-ubuntu-jdk11",
|
|
372
|
+
"9.4.27",
|
|
373
|
+
"9.4.27-ubuntu-jdk11",
|
|
374
|
+
"9.4.27-jdk11",
|
|
375
|
+
"latest",
|
|
376
|
+
"9.4.7-jdk11",
|
|
377
|
+
"9.4.7-ubuntu-jdk11",
|
|
378
|
+
"9.4.7",
|
|
379
|
+
"10.2.0-jdk17",
|
|
380
|
+
"10.2.0-ubuntu-jdk17",
|
|
381
|
+
"10.2.0",
|
|
382
|
+
"9.12.11",
|
|
383
|
+
"9.12.11-jdk17",
|
|
384
|
+
"9.12.11-ubuntu-jdk17",
|
|
385
|
+
"10.0.0-ubi9",
|
|
386
|
+
"9.17.1-ubuntu-jdk17",
|
|
387
|
+
"9.12.1-ubi9",
|
|
388
|
+
"9.10.0-ubuntu-jdk11",
|
|
169
389
|
"9.10.0-jdk11",
|
|
390
|
+
"9.8.2-ubuntu-jdk11",
|
|
170
391
|
"9.12.9-ubuntu-jdk17",
|
|
171
|
-
"9.12-jdk11",
|
|
172
|
-
"9.
|
|
392
|
+
"9.12.7-ubuntu-jdk11",
|
|
393
|
+
"9.4.28",
|
|
394
|
+
"9.4.28-jdk11",
|
|
395
|
+
"9.4",
|
|
396
|
+
"10.0.0-ubi9-jdk17",
|
|
397
|
+
"9.15.1-jdk11",
|
|
398
|
+
"9.12.1-ubi9-jdk17",
|
|
399
|
+
"9.15.1-ubuntu-jdk11",
|
|
173
400
|
"9.10.0",
|
|
174
|
-
"
|
|
175
|
-
"9.
|
|
176
|
-
"
|
|
177
|
-
"9.
|
|
178
|
-
"
|
|
179
|
-
"9.
|
|
180
|
-
"9.
|
|
401
|
+
"9.17.1-ubuntu-jdk11",
|
|
402
|
+
"9.17.1-jdk17",
|
|
403
|
+
"9.17.1",
|
|
404
|
+
"9.8.2-jdk11",
|
|
405
|
+
"9.8-jdk11",
|
|
406
|
+
"9.8",
|
|
407
|
+
"9.8.2",
|
|
181
408
|
"9.4.8",
|
|
409
|
+
"9.8-ubuntu-jdk11",
|
|
410
|
+
"9.4.8-jdk11",
|
|
182
411
|
"9.4.8-ubuntu-jdk11",
|
|
183
|
-
"9.
|
|
184
|
-
"9.
|
|
185
|
-
"
|
|
412
|
+
"9.12.9",
|
|
413
|
+
"9.12.9-jdk17",
|
|
414
|
+
"9.12.7-jdk11",
|
|
415
|
+
"9.4-ubuntu-jdk11",
|
|
416
|
+
"9.4.28-ubuntu-jdk11",
|
|
417
|
+
"9.4-jdk11",
|
|
418
|
+
"9.12-jdk11",
|
|
419
|
+
"9.12.15-ubuntu-jdk11",
|
|
420
|
+
"9.12-ubuntu-jdk11",
|
|
421
|
+
"9.17.1-jdk11",
|
|
422
|
+
"9.12.15-jdk11",
|
|
423
|
+
"10.2.1",
|
|
424
|
+
"ubuntu-jdk17",
|
|
425
|
+
"10-ubuntu-jdk17",
|
|
186
426
|
"jdk17",
|
|
187
|
-
"
|
|
427
|
+
"10-jdk17",
|
|
428
|
+
"10.2.1-ubuntu-jdk17",
|
|
429
|
+
"9.12.12-ubuntu-jdk17",
|
|
430
|
+
"9.12.12",
|
|
431
|
+
"10.2-jdk17",
|
|
432
|
+
"9.5.0-jdk17",
|
|
433
|
+
"10",
|
|
434
|
+
"10.2-ubuntu-jdk17",
|
|
435
|
+
"10.2.1-jdk17",
|
|
436
|
+
"10.2",
|
|
437
|
+
"9.12.12-jdk17",
|
|
438
|
+
"9.5.0-ubuntu-jdk17",
|
|
439
|
+
"9.4.2",
|
|
188
440
|
"9.4.2-ubuntu-jdk11",
|
|
189
|
-
"9.
|
|
190
|
-
"9.17.0",
|
|
191
|
-
"9.10.1-jdk11",
|
|
192
|
-
"9.4.26-ubuntu-jdk11",
|
|
193
|
-
"9.4.27-ubuntu-jdk11",
|
|
194
|
-
"9.4.20",
|
|
195
|
-
"9.4.27-jdk11",
|
|
196
|
-
"9.4.27",
|
|
197
|
-
"9.17.0-ubuntu-jdk17",
|
|
198
|
-
"9.17.0-jdk17",
|
|
199
|
-
"9.17.4-ubi9-jdk17",
|
|
200
|
-
"9.17.1-jdk17",
|
|
201
|
-
"9.12.15-ubuntu-jdk11",
|
|
202
|
-
"9.11.0",
|
|
203
|
-
"9.13.0-jdk17",
|
|
204
|
-
"9.13.0-ubuntu-jdk17",
|
|
205
|
-
"9.17.1",
|
|
206
|
-
"9.12.14-jdk17",
|
|
207
|
-
"9.8.1",
|
|
208
|
-
"9.12.7-ubuntu-jdk11",
|
|
209
|
-
"9.8.0-ubuntu-jdk11",
|
|
210
|
-
"9.8.0",
|
|
211
|
-
"9.12.14-ubuntu-jdk17",
|
|
212
|
-
"9.4.26-jdk11",
|
|
213
|
-
"9.13.0",
|
|
214
|
-
"9.10.1",
|
|
215
|
-
"9.17.5-ubi9-jdk17",
|
|
216
|
-
"9.11.0-ubuntu-jdk17",
|
|
441
|
+
"9.4.2-jdk11",
|
|
217
442
|
"9.12.9-ubi9-jdk17",
|
|
218
|
-
"9.17.1-ubuntu-jdk11",
|
|
219
|
-
"9.10-jdk11",
|
|
220
|
-
"9.11.0-jdk17",
|
|
221
|
-
"9.4.14",
|
|
222
|
-
"9.12.1-ubi9",
|
|
223
|
-
"9.4.14-ubuntu-jdk11",
|
|
224
|
-
"9.17.1-jdk11",
|
|
225
|
-
"9.10.2",
|
|
226
443
|
"9.12.9-ubi9",
|
|
227
|
-
"9.12
|
|
228
|
-
"9.4.
|
|
229
|
-
"9.
|
|
444
|
+
"9.4.12-jdk11",
|
|
445
|
+
"9.4.12",
|
|
446
|
+
"9.11.0-ubuntu-jdk11",
|
|
447
|
+
"9.11.0-jdk11",
|
|
448
|
+
"9.4.12-ubuntu-jdk11",
|
|
449
|
+
"9.10.1",
|
|
450
|
+
"9.10.1-ubuntu-jdk11",
|
|
451
|
+
"9.10.1-jdk11",
|
|
452
|
+
"10.0.1-ubi9-jdk17",
|
|
453
|
+
"10.0.1-ubi9",
|
|
230
454
|
"9.12.8-ubuntu-jdk11",
|
|
231
|
-
"9.
|
|
232
|
-
"9.
|
|
233
|
-
"9.
|
|
234
|
-
"9.
|
|
235
|
-
"9.
|
|
455
|
+
"9.7.2-ubi9-jdk17",
|
|
456
|
+
"9.17.2-jdk17",
|
|
457
|
+
"9.17.2-ubuntu-jdk17",
|
|
458
|
+
"9.4.9-jdk11",
|
|
459
|
+
"9.13.0-ubuntu-jdk17",
|
|
460
|
+
"9.13.0",
|
|
461
|
+
"9.12.10-ubi9",
|
|
462
|
+
"9.7.2-ubi9",
|
|
463
|
+
"9.12.8-jdk11",
|
|
236
464
|
"9.17.4-ubi9",
|
|
237
|
-
"9.10
|
|
238
|
-
"9.
|
|
239
|
-
"9.
|
|
240
|
-
"9.
|
|
241
|
-
"9.
|
|
465
|
+
"9.12.10-ubi9-jdk17",
|
|
466
|
+
"9.4.9",
|
|
467
|
+
"9.4.9-ubuntu-jdk11",
|
|
468
|
+
"9.17.2",
|
|
469
|
+
"9.17.4-ubi9-jdk17",
|
|
470
|
+
"9.13.0-jdk17",
|
|
471
|
+
"9.15.2-ubi9-jdk17",
|
|
472
|
+
"9.15.2-ubi9",
|
|
473
|
+
"9.15.2-ubuntu-jdk11",
|
|
474
|
+
"9.15.2-jdk11",
|
|
475
|
+
"9.15-ubuntu-jdk11",
|
|
476
|
+
"9.15-jdk11",
|
|
477
|
+
"9.12.1-jdk11",
|
|
478
|
+
"9.12.1-ubuntu-jdk11",
|
|
479
|
+
"9.17.2-ubuntu-jdk11",
|
|
480
|
+
"9.17.2-jdk11",
|
|
481
|
+
"9.12.13-ubuntu-jdk17",
|
|
482
|
+
"9.12.13",
|
|
483
|
+
"9.4.20",
|
|
484
|
+
"9.4.20-jdk11",
|
|
242
485
|
"9.4.20-ubuntu-jdk11",
|
|
243
|
-
"9.12-
|
|
244
|
-
"9.10.2-ubi9",
|
|
486
|
+
"9.12.13-jdk17",
|
|
245
487
|
"9.10.1-ubi9-jdk17",
|
|
246
|
-
"9.
|
|
247
|
-
"9.
|
|
248
|
-
"9.
|
|
249
|
-
"9.
|
|
488
|
+
"9.12.2-ubi9",
|
|
489
|
+
"9.12.2-ubi9-jdk17",
|
|
490
|
+
"9.10.1-ubi9",
|
|
491
|
+
"9.4.14",
|
|
492
|
+
"9.5.1-ubuntu-jdk17",
|
|
493
|
+
"9.5-jdk17",
|
|
494
|
+
"9.5.1-jdk17",
|
|
250
495
|
"9.10",
|
|
251
|
-
"9.4.9-jdk11",
|
|
252
|
-
"9.11.1-jdk17",
|
|
253
|
-
"9.16.0-ubi9",
|
|
254
|
-
"9.11.1",
|
|
255
496
|
"9.10.2-ubuntu-jdk11",
|
|
256
|
-
"9.
|
|
257
|
-
"9.
|
|
258
|
-
"9.
|
|
259
|
-
"9.
|
|
260
|
-
"9.7.1-jdk17",
|
|
261
|
-
"9.7.1-ubuntu-jdk17",
|
|
262
|
-
"10.0.0-ubi9-jdk17",
|
|
263
|
-
"9.8.0-ubi9-jdk17",
|
|
264
|
-
"9.13-ubuntu-jdk17",
|
|
265
|
-
"9.4.15-ubuntu-jdk11",
|
|
266
|
-
"9.8.0-ubi9",
|
|
267
|
-
"9.12.2-ubi9",
|
|
268
|
-
"9.11.1-ubuntu-jdk17",
|
|
269
|
-
"9.13.1",
|
|
270
|
-
"9.12.9-jdk11",
|
|
271
|
-
"9.4-jdk11",
|
|
272
|
-
"9.4.28-jdk11",
|
|
273
|
-
"9.12.1-ubi9-jdk17",
|
|
274
|
-
"9.4",
|
|
275
|
-
"9.4.28",
|
|
276
|
-
"9.4-ubuntu-jdk11",
|
|
277
|
-
"9.16.1-ubi9",
|
|
278
|
-
"9.11.0-ubuntu-jdk11",
|
|
279
|
-
"9.5.0-ubuntu-jdk11",
|
|
280
|
-
"10.0.0-ubi9",
|
|
281
|
-
"9.16.1-ubi9-jdk17",
|
|
497
|
+
"9.11.1-jdk11",
|
|
498
|
+
"9.13.0-ubi9-jdk17",
|
|
499
|
+
"9.4.14-jdk11",
|
|
500
|
+
"9.4.14-ubuntu-jdk11",
|
|
282
501
|
"9.13.0-ubi9",
|
|
283
|
-
"9.
|
|
284
|
-
"9.4.9-ubuntu-jdk11",
|
|
285
|
-
"9.5.0-jdk11",
|
|
286
|
-
"9.8",
|
|
287
|
-
"9.12",
|
|
288
|
-
"9.8-ubuntu-jdk11",
|
|
289
|
-
"9.13.1-ubuntu-jdk17",
|
|
290
|
-
"9.5.0",
|
|
291
|
-
"9.4.28-ubuntu-jdk11",
|
|
502
|
+
"9.5-ubuntu-jdk17",
|
|
292
503
|
"9.8-ubuntu-jdk17",
|
|
293
|
-
"9.10.0-ubuntu-jdk17",
|
|
294
|
-
"9.12.2-ubi9-jdk17",
|
|
295
|
-
"9.7-jdk17",
|
|
296
|
-
"9.8.2-ubuntu-jdk17",
|
|
297
504
|
"9.12.9-ubuntu-jdk11",
|
|
298
|
-
"9.13",
|
|
299
|
-
"9.13.0-jdk11",
|
|
300
|
-
"9.8.2-jdk11",
|
|
301
|
-
"9.5.0-jdk17",
|
|
302
|
-
"9.8-jdk11",
|
|
303
|
-
"9.17.2-jdk11",
|
|
304
|
-
"9.8.2-ubuntu-jdk11",
|
|
305
|
-
"9.7.2-jdk17",
|
|
306
|
-
"9.12-ubuntu-jdk17",
|
|
307
|
-
"9.4.15",
|
|
308
|
-
"9.8.2",
|
|
309
|
-
"9.4.15-jdk11",
|
|
310
|
-
"9.13.1-ubi9-jdk17",
|
|
311
|
-
"9.12.15",
|
|
312
|
-
"9.12-jdk17",
|
|
313
|
-
"9.12.15-jdk17",
|
|
314
|
-
"9.15.2-ubuntu-jdk11",
|
|
315
|
-
"9.13.0-ubi9-jdk17",
|
|
316
|
-
"9.12.15-ubuntu-jdk17",
|
|
317
|
-
"9.12.2-jdk11",
|
|
318
|
-
"9.8.2-jdk17",
|
|
319
|
-
"9.5.0-ubuntu-jdk17",
|
|
320
|
-
"9.13.1-jdk17",
|
|
321
|
-
"9.13-jdk17",
|
|
322
|
-
"9.17.2-ubuntu-jdk11",
|
|
323
|
-
"9.12.10-ubi9-jdk17",
|
|
324
|
-
"9.11.2-jdk17",
|
|
325
|
-
"9.4.21-ubuntu-jdk11",
|
|
326
|
-
"9.15-ubuntu-jdk11",
|
|
327
|
-
"9.15.2-jdk11",
|
|
328
|
-
"9.11.0-jdk11",
|
|
329
505
|
"9.8-jdk17",
|
|
330
|
-
"9.
|
|
506
|
+
"9.10.2",
|
|
507
|
+
"9.9.0-jdk11",
|
|
508
|
+
"9.10.2-jdk11",
|
|
509
|
+
"9.17.5-ubi9-jdk17",
|
|
510
|
+
"9.11.1-ubuntu-jdk11",
|
|
511
|
+
"9.10-ubuntu-jdk11",
|
|
512
|
+
"9.10-jdk11",
|
|
513
|
+
"9.5.0-ubuntu-jdk11",
|
|
514
|
+
"9.8.2-jdk17",
|
|
515
|
+
"9.5.0",
|
|
516
|
+
"9.5.0-jdk11",
|
|
517
|
+
"9.12.9-jdk11",
|
|
518
|
+
"9.8.2-ubuntu-jdk17",
|
|
519
|
+
"9.9.0-ubuntu-jdk11",
|
|
520
|
+
"9.17.5-ubi9",
|
|
331
521
|
"9.12.2-ubuntu-jdk11",
|
|
332
|
-
"9.
|
|
333
|
-
"9.
|
|
334
|
-
"9.
|
|
335
|
-
"9.
|
|
336
|
-
"9.
|
|
337
|
-
"9.
|
|
338
|
-
"9.
|
|
522
|
+
"9.9.0",
|
|
523
|
+
"9.12.2-jdk11",
|
|
524
|
+
"9.12.10-ubuntu-jdk11",
|
|
525
|
+
"9.12.10-jdk11",
|
|
526
|
+
"9.13",
|
|
527
|
+
"9.13-jdk17",
|
|
528
|
+
"9.13.1",
|
|
529
|
+
"9.13-ubuntu-jdk17",
|
|
530
|
+
"9.13.1-jdk17",
|
|
531
|
+
"9.13.1-ubuntu-jdk17",
|
|
339
532
|
"9.17.3-ubuntu-jdk17",
|
|
533
|
+
"9.11.0",
|
|
534
|
+
"9.17.3-jdk17",
|
|
340
535
|
"9.17.3",
|
|
341
|
-
"9.
|
|
342
|
-
"9.
|
|
343
|
-
"9.
|
|
344
|
-
"9.
|
|
345
|
-
"9.
|
|
346
|
-
"9.
|
|
536
|
+
"9.12.11-ubi9-jdk17",
|
|
537
|
+
"9.12.11-ubi9",
|
|
538
|
+
"9.4.21",
|
|
539
|
+
"9.11.0-jdk17",
|
|
540
|
+
"9.10.2-ubi9-jdk17",
|
|
541
|
+
"9.10.2-ubi9",
|
|
542
|
+
"9.11.0-ubuntu-jdk17",
|
|
543
|
+
"9.4.3",
|
|
544
|
+
"9.4.21-ubuntu-jdk11",
|
|
545
|
+
"9.12.14-ubuntu-jdk17",
|
|
546
|
+
"9.4.3-jdk11",
|
|
547
|
+
"9.4.21-jdk11",
|
|
548
|
+
"9.8.0-ubi9-jdk17",
|
|
549
|
+
"9.12.14",
|
|
550
|
+
"9.4.3-ubuntu-jdk11",
|
|
551
|
+
"9.12.14-jdk17",
|
|
552
|
+
"9.4.15",
|
|
553
|
+
"9.17.3-jdk11",
|
|
554
|
+
"9.16.0-ubi9-jdk17",
|
|
555
|
+
"9.8.0-ubi9",
|
|
347
556
|
"9.13.1-ubi9",
|
|
348
|
-
"9.
|
|
557
|
+
"9.7.1-jdk17",
|
|
558
|
+
"9.7.1-ubuntu-jdk17",
|
|
559
|
+
"9.4.15-jdk11",
|
|
560
|
+
"9.4.15-ubuntu-jdk11",
|
|
561
|
+
"9.17.3-ubuntu-jdk11",
|
|
562
|
+
"9.16.0-ubi9",
|
|
563
|
+
"9.12.3-ubi9-jdk17",
|
|
564
|
+
"9.12.3-ubi9",
|
|
349
565
|
"9.5-ubuntu-jdk11",
|
|
350
|
-
"9.11.0-ubi9-jdk17",
|
|
351
566
|
"9.5.1-ubuntu-jdk11",
|
|
352
|
-
"9.
|
|
353
|
-
"10.
|
|
354
|
-
"
|
|
355
|
-
"
|
|
356
|
-
"9.14.0-jdk17",
|
|
357
|
-
"9.4.16",
|
|
358
|
-
"9.5-ubuntu-jdk17",
|
|
359
|
-
"9.4.16-ubuntu-jdk11",
|
|
567
|
+
"9.5.1-jdk11",
|
|
568
|
+
"10.1.1-ubi9",
|
|
569
|
+
"9.13.1-ubi9-jdk17",
|
|
570
|
+
"10.1.1-ubi9-jdk17",
|
|
360
571
|
"9.5-jdk11",
|
|
361
|
-
"9.
|
|
572
|
+
"9.13.0-jdk11",
|
|
573
|
+
"9.12.11-jdk11",
|
|
574
|
+
"9.11.2-jdk11",
|
|
575
|
+
"9.11.2-ubuntu-jdk11",
|
|
576
|
+
"9.5",
|
|
362
577
|
"9.5.1",
|
|
363
|
-
"9.
|
|
364
|
-
"9.
|
|
365
|
-
"9.
|
|
366
|
-
"9.
|
|
367
|
-
"9.
|
|
578
|
+
"9.11.1",
|
|
579
|
+
"9.12-jdk17",
|
|
580
|
+
"9.12.15-ubuntu-jdk17",
|
|
581
|
+
"9.12-ubuntu-jdk17",
|
|
582
|
+
"9.13.0-ubuntu-jdk11",
|
|
583
|
+
"9.9.1-ubuntu-jdk11",
|
|
584
|
+
"9.12.3-ubuntu-jdk11",
|
|
368
585
|
"9.12.3-jdk11",
|
|
369
|
-
"9.4.
|
|
370
|
-
"9.
|
|
371
|
-
"9.11.1-jdk11",
|
|
372
|
-
"9.8.1-ubi9-jdk17",
|
|
373
|
-
"9.4.22-ubuntu-jdk11",
|
|
374
|
-
"9.12.11-ubi9-jdk17",
|
|
375
|
-
"9.4.0-jdk11",
|
|
376
|
-
"9.9.0-ubuntu-jdk11",
|
|
586
|
+
"9.4.16",
|
|
587
|
+
"9.10.0-ubuntu-jdk17",
|
|
377
588
|
"9.12.11-ubuntu-jdk11",
|
|
378
|
-
"9.
|
|
379
|
-
"9.
|
|
589
|
+
"9.10.0-jdk17",
|
|
590
|
+
"9.16.0-ubuntu-jdk11",
|
|
591
|
+
"9.11.1-ubuntu-jdk17",
|
|
592
|
+
"9.11.1-jdk17",
|
|
593
|
+
"9.16.0-jdk11",
|
|
594
|
+
"9.4.4-ubuntu-jdk11",
|
|
595
|
+
"9.12.15-jdk17",
|
|
596
|
+
"9.12",
|
|
597
|
+
"9.12.15",
|
|
598
|
+
"9.9.1",
|
|
599
|
+
"9.4.22-ubuntu-jdk11",
|
|
600
|
+
"9.4.22",
|
|
601
|
+
"9.16.1-ubi9-jdk17",
|
|
602
|
+
"9.9.1-jdk11",
|
|
380
603
|
"9.4.22-jdk11",
|
|
381
|
-
"9.
|
|
382
|
-
"9.
|
|
383
|
-
"9.5.0-ubi9-jdk17",
|
|
384
|
-
"9.12.3-ubi9-jdk17",
|
|
385
|
-
"9.12.3-ubi9",
|
|
386
|
-
"9.5.0-ubi9",
|
|
387
|
-
"9.9.0-ubuntu-jdk17",
|
|
388
|
-
"9.12.11-jdk11",
|
|
389
|
-
"9.11.2-jdk11",
|
|
390
|
-
"9.9.0",
|
|
391
|
-
"9.11.1-ubi9-jdk17",
|
|
392
|
-
"9.4.3-jdk11",
|
|
604
|
+
"9.17.4",
|
|
605
|
+
"9.8.1-ubi9-jdk17",
|
|
393
606
|
"9.17.4-ubuntu-jdk17",
|
|
394
|
-
"9.
|
|
395
|
-
"9.
|
|
396
|
-
"9.
|
|
607
|
+
"9.8.1-ubi9",
|
|
608
|
+
"9.6.0-jdk17",
|
|
609
|
+
"9.7-ubuntu-jdk17",
|
|
610
|
+
"9.9.0-ubuntu-jdk17",
|
|
611
|
+
"9.5.0-ubi9-jdk17",
|
|
612
|
+
"9.4.16-jdk11",
|
|
613
|
+
"9.4.16-ubuntu-jdk11",
|
|
614
|
+
"9.17.4-jdk11",
|
|
615
|
+
"9.17.4-ubuntu-jdk11",
|
|
616
|
+
"10.1.2-ubi9",
|
|
617
|
+
"10.1.2-ubi9-jdk17",
|
|
618
|
+
"9.12.4-ubi9-jdk17",
|
|
397
619
|
"9.14.0-ubuntu-jdk17",
|
|
620
|
+
"9.13.1-ubuntu-jdk11",
|
|
621
|
+
"9.14.0-jdk17",
|
|
622
|
+
"9.11.3-jdk11",
|
|
623
|
+
"9.16.1-ubi9",
|
|
624
|
+
"9.17.4-jdk17",
|
|
398
625
|
"9.9.0-jdk17",
|
|
399
|
-
"9.
|
|
400
|
-
"9.
|
|
401
|
-
"9.12.2",
|
|
402
|
-
"9.16.0-jdk11",
|
|
403
|
-
"9.11.2-ubuntu-jdk11",
|
|
404
|
-
"9.12.2-jdk17",
|
|
405
|
-
"9.4.17-ubuntu-jdk11",
|
|
406
|
-
"9.4.17",
|
|
407
|
-
"9.12.11-ubi9",
|
|
408
|
-
"9.4.17-jdk11",
|
|
626
|
+
"9.4.4",
|
|
627
|
+
"9.4.4-jdk11",
|
|
409
628
|
"9.13-ubuntu-jdk11",
|
|
410
|
-
"9.8.2-ubi9-jdk17",
|
|
411
|
-
"9.13.1-ubuntu-jdk11",
|
|
412
|
-
"9.11.3-jdk17",
|
|
413
|
-
"9.12.12-ubuntu-jdk11",
|
|
414
|
-
"9.13.1-jdk11",
|
|
415
|
-
"9.12.12-jdk11",
|
|
416
|
-
"9.12.4-ubi9-jdk17",
|
|
417
|
-
"9.11",
|
|
418
|
-
"9.12.4-jdk11",
|
|
419
|
-
"9.4.4-ubuntu-jdk11",
|
|
420
|
-
"9.8.2-ubi9",
|
|
421
629
|
"9.13-jdk11",
|
|
422
|
-
"9.
|
|
423
|
-
"9.11.
|
|
424
|
-
"9.
|
|
425
|
-
"9.6.0-jdk17",
|
|
426
|
-
"9.16.0-ubuntu-jdk11",
|
|
630
|
+
"9.8.2-ubi9-jdk17",
|
|
631
|
+
"9.11.0-ubi9-jdk17",
|
|
632
|
+
"9.12.12-ubi9",
|
|
427
633
|
"9.6.0-ubuntu-jdk17",
|
|
428
|
-
"9.
|
|
429
|
-
"9.
|
|
430
|
-
"9.
|
|
431
|
-
"9.
|
|
432
|
-
"9.
|
|
433
|
-
"9.
|
|
434
|
-
"9.4.
|
|
435
|
-
"9.11-jdk17",
|
|
436
|
-
"9.4.23-ubuntu-jdk11",
|
|
437
|
-
"9.9.1",
|
|
438
|
-
"9.5.1-ubi9-jdk17",
|
|
439
|
-
"9.4.4-jdk11",
|
|
440
|
-
"9.4.1-ubuntu-jdk11",
|
|
441
|
-
"9.17.4-ubuntu-jdk11",
|
|
442
|
-
"9.5.1-ubi9",
|
|
443
|
-
"9.14-ubuntu-jdk17",
|
|
444
|
-
"9.10.1-ubuntu-jdk17",
|
|
445
|
-
"10.1.1-ubi9",
|
|
446
|
-
"10.1.1-ubi9-jdk17",
|
|
447
|
-
"9.17.4-jdk11",
|
|
448
|
-
"9.9.1-ubuntu-jdk17",
|
|
449
|
-
"9.4.1-jdk11",
|
|
450
|
-
"9.14.1",
|
|
451
|
-
"9.4.1",
|
|
452
|
-
"9.8.0-jdk17",
|
|
453
|
-
"9.8.0-ubuntu-jdk17",
|
|
634
|
+
"9.11.2-jdk17",
|
|
635
|
+
"9.5.0-ubi9",
|
|
636
|
+
"9.7.2-ubuntu-jdk17",
|
|
637
|
+
"9.7.2-jdk17",
|
|
638
|
+
"9.7-jdk17",
|
|
639
|
+
"9.4.0",
|
|
640
|
+
"9.4.0-ubuntu-jdk11",
|
|
454
641
|
"9.12.12-ubi9-jdk17",
|
|
455
|
-
"9.
|
|
456
|
-
"9.
|
|
457
|
-
"9.
|
|
458
|
-
"9.
|
|
459
|
-
"9.
|
|
642
|
+
"9.4.0-jdk11",
|
|
643
|
+
"9.6-jdk17",
|
|
644
|
+
"9.8.2-ubi9",
|
|
645
|
+
"9.6-ubuntu-jdk17",
|
|
646
|
+
"9.11.0-ubi9",
|
|
647
|
+
"9.12.12-jdk11",
|
|
648
|
+
"9.11-jdk11",
|
|
649
|
+
"9.11.3-ubuntu-jdk11",
|
|
650
|
+
"9.12.4-ubi9",
|
|
651
|
+
"9.14.0",
|
|
652
|
+
"9.11-ubuntu-jdk11",
|
|
653
|
+
"9.14.0-ubi9",
|
|
654
|
+
"9.13.1-jdk11",
|
|
655
|
+
"9.12.4-jdk11",
|
|
656
|
+
"9.12.4-ubuntu-jdk11",
|
|
657
|
+
"9.14.0-ubi9-jdk17",
|
|
460
658
|
"9.9.1-jdk17",
|
|
461
|
-
"9.
|
|
462
|
-
"9.
|
|
463
|
-
"9.
|
|
464
|
-
"9.9.1-jdk11",
|
|
659
|
+
"9.9.1-ubuntu-jdk17",
|
|
660
|
+
"9.11.2",
|
|
661
|
+
"9.4.17-ubuntu-jdk11",
|
|
465
662
|
"9.6.0-ubuntu-jdk11",
|
|
663
|
+
"9.4.17-jdk11",
|
|
664
|
+
"9.6.0-jdk11",
|
|
665
|
+
"9.4.23-ubuntu-jdk11",
|
|
666
|
+
"9.6.0",
|
|
667
|
+
"9.11.2-ubuntu-jdk17",
|
|
466
668
|
"9.6-jdk11",
|
|
669
|
+
"9.12.12-ubuntu-jdk11",
|
|
467
670
|
"9.6",
|
|
671
|
+
"9.10.1-jdk17",
|
|
672
|
+
"9.9.2-ubuntu-jdk11",
|
|
673
|
+
"9.4.23",
|
|
674
|
+
"9.4.23-jdk11",
|
|
675
|
+
"9.4.17",
|
|
676
|
+
"9.17-ubuntu-jdk17",
|
|
677
|
+
"9.10.1-ubuntu-jdk17",
|
|
678
|
+
"9.17.5-jdk17",
|
|
679
|
+
"9.16.1-jdk11",
|
|
468
680
|
"9.6-ubuntu-jdk11",
|
|
469
|
-
"9.
|
|
470
|
-
"9.
|
|
471
|
-
"9-
|
|
472
|
-
"9.
|
|
473
|
-
"9.
|
|
474
|
-
"9.
|
|
475
|
-
"9.
|
|
681
|
+
"9.17",
|
|
682
|
+
"9.9.2-jdk11",
|
|
683
|
+
"9.16-ubuntu-jdk11",
|
|
684
|
+
"9.12.13-ubi9",
|
|
685
|
+
"9.9",
|
|
686
|
+
"9.17.5",
|
|
687
|
+
"9.5.1-ubi9-jdk17",
|
|
688
|
+
"9.9-ubuntu-jdk11",
|
|
689
|
+
"9.9-jdk11",
|
|
690
|
+
"9.16.1-ubuntu-jdk11",
|
|
691
|
+
"9.16-jdk11",
|
|
476
692
|
"9.17-jdk17",
|
|
477
|
-
"9.
|
|
478
|
-
"9.
|
|
693
|
+
"9.4.5-jdk11",
|
|
694
|
+
"9.11.1-ubi9-jdk17",
|
|
695
|
+
"9.4.5-ubuntu-jdk11",
|
|
696
|
+
"9.4.5",
|
|
697
|
+
"9.4.1-jdk11",
|
|
698
|
+
"9.4.1",
|
|
699
|
+
"9.4.1-ubuntu-jdk11",
|
|
700
|
+
"9.14",
|
|
701
|
+
"9.5.1-ubi9",
|
|
702
|
+
"9.9.2",
|
|
479
703
|
"9.12.5-jdk11",
|
|
480
|
-
"10.1.2-ubi9-jdk17",
|
|
481
|
-
"9.4.24-ubuntu-jdk11",
|
|
482
704
|
"9.12.5-ubuntu-jdk11",
|
|
483
|
-
"9.
|
|
484
|
-
"9.11.2-ubi9",
|
|
485
|
-
"9.17.5",
|
|
486
|
-
"9-ubuntu-jdk11",
|
|
487
|
-
"9.12.5-ubi9-jdk17",
|
|
488
|
-
"9.17.0-ubi9-jdk17",
|
|
489
|
-
"9.17.0-ubi9",
|
|
490
|
-
"9.4.24-jdk11",
|
|
491
|
-
"9.17-ubuntu-jdk17",
|
|
492
|
-
"9.12.13-ubuntu-jdk11",
|
|
493
|
-
"9.11.2-ubi9-jdk17",
|
|
494
|
-
"9-ubuntu-jdk17",
|
|
495
|
-
"9.12.3-ubuntu-jdk17",
|
|
496
|
-
"9.12.3-jdk17",
|
|
497
|
-
"9.17",
|
|
498
|
-
"9.12.3",
|
|
499
|
-
"9.11.3-jdk11",
|
|
500
|
-
"9-jdk11",
|
|
705
|
+
"9.12.13-ubi9-jdk17",
|
|
501
706
|
"9",
|
|
502
|
-
"9
|
|
707
|
+
"9-ubuntu-jdk17",
|
|
708
|
+
"9.12.2",
|
|
709
|
+
"9.12.5-ubi9",
|
|
710
|
+
"9.11.1-ubi9",
|
|
711
|
+
"9.12.5-ubi9-jdk17",
|
|
712
|
+
"9-jdk17",
|
|
503
713
|
"9.17.5-ubuntu-jdk17",
|
|
504
|
-
"9.4.18-ubuntu-jdk11",
|
|
505
|
-
"9.4.10-jdk11",
|
|
506
|
-
"9.16-jdk11",
|
|
507
|
-
"9.4.18",
|
|
508
|
-
"9.4.5-jdk11",
|
|
509
714
|
"9.17.5-jdk11",
|
|
510
|
-
"9.12.13-jdk11",
|
|
511
715
|
"9.17.5-ubuntu-jdk11",
|
|
512
|
-
"9.
|
|
716
|
+
"9.12.13-jdk11",
|
|
717
|
+
"9.14.1",
|
|
513
718
|
"9.17-ubuntu-jdk11",
|
|
514
|
-
"9.
|
|
515
|
-
"9.
|
|
516
|
-
"9.
|
|
517
|
-
"
|
|
518
|
-
"9.
|
|
719
|
+
"9.14.1-jdk17",
|
|
720
|
+
"9.11.3",
|
|
721
|
+
"9.11-jdk17",
|
|
722
|
+
"9.11.3-ubuntu-jdk17",
|
|
723
|
+
"9.11.3-jdk17",
|
|
724
|
+
"9.12.2-ubuntu-jdk17",
|
|
725
|
+
"9.17.0-ubi9-jdk17",
|
|
726
|
+
"9.17-jdk11",
|
|
727
|
+
"9-ubuntu-jdk11",
|
|
728
|
+
"9-jdk11",
|
|
729
|
+
"9.12.13-ubuntu-jdk11",
|
|
730
|
+
"9.14-ubuntu-jdk17",
|
|
731
|
+
"9.14.1-ubuntu-jdk17",
|
|
732
|
+
"9.11",
|
|
733
|
+
"9.14-jdk17",
|
|
734
|
+
"9.11-ubuntu-jdk17",
|
|
735
|
+
"9.12.2-jdk17",
|
|
736
|
+
"9.14.1-ubi9",
|
|
737
|
+
"9.14.1-ubi9-jdk17",
|
|
738
|
+
"9.4.24",
|
|
739
|
+
"9.4.24-ubuntu-jdk11",
|
|
740
|
+
"9.4.24-jdk11",
|
|
741
|
+
"9.17.0-ubi9",
|
|
519
742
|
"9.4.10",
|
|
520
|
-
"9.
|
|
521
|
-
"
|
|
522
|
-
"
|
|
523
|
-
"9.16.1-jdk11",
|
|
524
|
-
"9.16.1-ubuntu-jdk11",
|
|
525
|
-
"9.16-ubuntu-jdk11",
|
|
743
|
+
"9.4.18-jdk11",
|
|
744
|
+
"10.2.0-ubi9-jdk17",
|
|
745
|
+
"10.2.0-ubi9",
|
|
526
746
|
"9.4.10-ubuntu-jdk11",
|
|
527
|
-
"9.9.
|
|
528
|
-
"9.
|
|
747
|
+
"9.9.2-ubuntu-jdk17",
|
|
748
|
+
"9.9-jdk17",
|
|
529
749
|
"9.10-jdk17",
|
|
530
|
-
"9.
|
|
531
|
-
"9.
|
|
532
|
-
"9.
|
|
533
|
-
"9.
|
|
534
|
-
"9.
|
|
535
|
-
"9.
|
|
536
|
-
"9.
|
|
537
|
-
"9.
|
|
750
|
+
"9.10-ubuntu-jdk17",
|
|
751
|
+
"9.8.0-ubuntu-jdk17",
|
|
752
|
+
"9.8.0-jdk17",
|
|
753
|
+
"9.4.18-ubuntu-jdk11",
|
|
754
|
+
"9.4.18",
|
|
755
|
+
"9.11.2-ubi9-jdk17",
|
|
756
|
+
"9.11.2-ubi9",
|
|
757
|
+
"9.7.0-ubuntu-jdk17",
|
|
538
758
|
"9.9.0-ubi9",
|
|
539
|
-
"9.
|
|
540
|
-
"9.
|
|
541
|
-
"9.9.
|
|
542
|
-
"9.
|
|
543
|
-
"9.
|
|
544
|
-
"9.
|
|
545
|
-
"9.
|
|
546
|
-
"9.
|
|
547
|
-
"9.
|
|
548
|
-
"9.
|
|
549
|
-
"9.
|
|
550
|
-
"9.
|
|
759
|
+
"9.7.0-jdk17",
|
|
760
|
+
"9.4.10-jdk11",
|
|
761
|
+
"9.9.0-ubi9-jdk17",
|
|
762
|
+
"9.4.6-ubuntu-jdk11",
|
|
763
|
+
"9.4.6-jdk11",
|
|
764
|
+
"9.9-ubuntu-jdk17",
|
|
765
|
+
"9.10.2-ubuntu-jdk17",
|
|
766
|
+
"9.9.2-jdk17",
|
|
767
|
+
"9.10.2-jdk17",
|
|
768
|
+
"9.4.6",
|
|
769
|
+
"9.14.0-jdk11",
|
|
770
|
+
"9.6.0-ubi9",
|
|
771
|
+
"9.12.6-ubi9-jdk17",
|
|
551
772
|
"9.14.0-ubuntu-jdk11",
|
|
552
|
-
"9.
|
|
553
|
-
"9.
|
|
554
|
-
"9.
|
|
555
|
-
"9.12.
|
|
556
|
-
"9.
|
|
557
|
-
"9.12.
|
|
558
|
-
"9.12.
|
|
773
|
+
"9.6.0-ubi9-jdk17",
|
|
774
|
+
"9.12.0-jdk11",
|
|
775
|
+
"9.12.0-ubuntu-jdk11",
|
|
776
|
+
"9.12.3-jdk17",
|
|
777
|
+
"9.12.3",
|
|
778
|
+
"9.12.14-ubi9",
|
|
779
|
+
"9.12.14-ubi9-jdk17",
|
|
559
780
|
"9.12.6-jdk11",
|
|
560
|
-
"9.12.0-jdk17",
|
|
561
781
|
"9.4.25-jdk11",
|
|
562
|
-
"9.9.1-ubi9-jdk17",
|
|
563
|
-
"9.9.1-ubi9",
|
|
564
|
-
"9.12.6-ubi9-jdk17",
|
|
565
|
-
"9.12.14-jdk11",
|
|
566
|
-
"9.12.4-jdk17",
|
|
567
|
-
"9.12.4",
|
|
568
|
-
"9.4.6-ubuntu-jdk11",
|
|
569
|
-
"9.4.25-ubuntu-jdk11",
|
|
570
|
-
"9.4.19",
|
|
571
|
-
"9.14.0-jdk11",
|
|
572
|
-
"9.7.0-jdk17",
|
|
573
782
|
"9.12.6-ubuntu-jdk11",
|
|
574
783
|
"9.4.25",
|
|
575
|
-
"9.4.
|
|
576
|
-
"9.
|
|
577
|
-
"9.11.3-ubi9",
|
|
578
|
-
"9.7.0-jdk11",
|
|
579
|
-
"9.12.0-jdk11",
|
|
784
|
+
"9.4.25-ubuntu-jdk11",
|
|
785
|
+
"9.12.6-ubi9",
|
|
580
786
|
"9.7.0-ubuntu-jdk11",
|
|
581
|
-
"9.12.14-
|
|
582
|
-
"9.11.3-ubi9-jdk17",
|
|
787
|
+
"9.12.14-ubuntu-jdk11",
|
|
583
788
|
"9.7.0",
|
|
584
|
-
"
|
|
585
|
-
"9.
|
|
586
|
-
"
|
|
587
|
-
"
|
|
588
|
-
"
|
|
589
|
-
"9.12.0-ubuntu-jdk11",
|
|
590
|
-
"9.12.7-ubi9",
|
|
591
|
-
"9.4.11-ubuntu-jdk11",
|
|
789
|
+
"9.12.3-ubuntu-jdk17",
|
|
790
|
+
"9.17.1-ubi9",
|
|
791
|
+
"9.8.1-ubuntu-jdk17",
|
|
792
|
+
"9.4.19-ubuntu-jdk11",
|
|
793
|
+
"9.8.1-jdk17",
|
|
592
794
|
"9.4.11-jdk11",
|
|
795
|
+
"9.12.14-jdk11",
|
|
796
|
+
"9.7.0-jdk11",
|
|
797
|
+
"9.4.19",
|
|
798
|
+
"9.4.19-jdk11",
|
|
593
799
|
"9.4.11",
|
|
594
|
-
"9.
|
|
595
|
-
"9.
|
|
596
|
-
"
|
|
597
|
-
"9.
|
|
800
|
+
"9.4.11-ubuntu-jdk11",
|
|
801
|
+
"9.17.1-ubi9-jdk17",
|
|
802
|
+
"ubi9",
|
|
803
|
+
"9.9.1-ubi9",
|
|
804
|
+
"9.9.1-ubi9-jdk17",
|
|
805
|
+
"10.2.1-ubi9-jdk17",
|
|
806
|
+
"10.2.1-ubi9",
|
|
807
|
+
"ubi9-jdk17",
|
|
808
|
+
"9.11.3-ubi9-jdk17",
|
|
809
|
+
"9.11.3-ubi9",
|
|
810
|
+
"9.12.15-ubi9-jdk17",
|
|
811
|
+
"9.12.15-ubi9",
|
|
598
812
|
"9.12.7-ubi9-jdk17",
|
|
813
|
+
"9.12.7-ubi9",
|
|
814
|
+
"9.15.0-ubi9",
|
|
599
815
|
"9.15.0-ubi9-jdk17",
|
|
600
|
-
"9.
|
|
601
|
-
"9.
|
|
816
|
+
"9.17.2-ubi9-jdk17",
|
|
817
|
+
"9.17.2-ubi9",
|
|
602
818
|
"9.9.2-ubi9",
|
|
603
819
|
"9.9.2-ubi9-jdk17",
|
|
604
|
-
"9.
|
|
605
|
-
"9.
|
|
606
|
-
"9.12.0-ubi9",
|
|
607
|
-
"9.17.3-ubi9",
|
|
820
|
+
"9.7.0-ubi9-jdk17",
|
|
821
|
+
"9.7.0-ubi9",
|
|
608
822
|
"9.12.8-ubi9",
|
|
609
|
-
"9.12.0-ubi9-jdk17",
|
|
610
|
-
"9.12.8-ubi9-jdk17",
|
|
611
|
-
"9.17.3-ubi9-jdk17",
|
|
612
823
|
"9.15.1-ubi9-jdk17",
|
|
824
|
+
"9.12.8-ubi9-jdk17",
|
|
613
825
|
"9.15.1-ubi9",
|
|
614
|
-
"9.
|
|
615
|
-
"9.
|
|
616
|
-
"9.
|
|
826
|
+
"9.17.3-ubi9",
|
|
827
|
+
"9.12.0-ubi9",
|
|
828
|
+
"9.12.0-ubi9-jdk17",
|
|
829
|
+
"9.17.3-ubi9-jdk17",
|
|
617
830
|
"9.10.0-ubi9",
|
|
831
|
+
"9.10.0-ubi9-jdk17",
|
|
832
|
+
"9.7.1-ubi9-jdk17",
|
|
833
|
+
"9.7.1-ubi9",
|
|
618
834
|
"10.3.0-EAP01-jdk17",
|
|
619
835
|
"10.3.0-EAP01",
|
|
620
836
|
"10.3.0-EAP01-ubuntu-jdk17",
|
|
@@ -2058,577 +2274,595 @@ var jira = [
|
|
|
2058
2274
|
"8.8.0-RC02"
|
|
2059
2275
|
];
|
|
2060
2276
|
var confluence = [
|
|
2061
|
-
"8.
|
|
2062
|
-
"8.
|
|
2277
|
+
"8.5.18-jdk17",
|
|
2278
|
+
"8.5-ubuntu-jdk17",
|
|
2279
|
+
"8.5.18-ubuntu-jdk17",
|
|
2280
|
+
"8.5",
|
|
2281
|
+
"8.5-jdk17",
|
|
2282
|
+
"8.5.18",
|
|
2283
|
+
"8.5-jdk11",
|
|
2284
|
+
"8.5.18-ubuntu-jdk11",
|
|
2285
|
+
"8.5.18-jdk11",
|
|
2286
|
+
"8.5-ubuntu-jdk11",
|
|
2287
|
+
"7.19",
|
|
2288
|
+
"7.19.30-ubuntu-jdk11",
|
|
2289
|
+
"7.19-jdk11",
|
|
2290
|
+
"7.19-ubuntu-jdk11",
|
|
2291
|
+
"7.19.30-jdk11",
|
|
2292
|
+
"7.19.30",
|
|
2293
|
+
"8.5.18-ubi9-jdk17",
|
|
2294
|
+
"8.5.18-ubi9",
|
|
2295
|
+
"9.2.0-rc1-jdk21",
|
|
2296
|
+
"9.2.0-rc1-ubuntu-jdk21",
|
|
2297
|
+
"9.2.0-rc1",
|
|
2298
|
+
"eap",
|
|
2299
|
+
"9.2.0-rc1-jdk17",
|
|
2300
|
+
"eap-jdk17",
|
|
2301
|
+
"eap-ubuntu-jdk17",
|
|
2302
|
+
"9.2.0-rc1-ubuntu-jdk17",
|
|
2303
|
+
"9.2.0-rc1-ubi9-jdk17",
|
|
2304
|
+
"9.2.0-rc1-ubi9",
|
|
2305
|
+
"9.2.0-rc1-ubi9-jdk21",
|
|
2063
2306
|
"8.9.7-ubuntu-jdk17",
|
|
2064
|
-
"8.9.
|
|
2065
|
-
"8.9.
|
|
2066
|
-
"8.9-ubuntu-jdk17",
|
|
2067
|
-
"8.9",
|
|
2068
|
-
"8",
|
|
2069
|
-
"8.9.8-ubuntu-jdk17",
|
|
2070
|
-
"8-ubuntu-jdk17",
|
|
2071
|
-
"8-jdk17",
|
|
2072
|
-
"8.9-jdk17",
|
|
2073
|
-
"8.7.2-ubuntu-jdk11",
|
|
2074
|
-
"8.6-ubuntu-jdk17",
|
|
2075
|
-
"8.9.4-ubuntu-jdk11",
|
|
2076
|
-
"8.1.3-ubuntu-jdk11",
|
|
2077
|
-
"8.6",
|
|
2078
|
-
"7.19.9-ubuntu-jdk11",
|
|
2079
|
-
"9.0.1",
|
|
2080
|
-
"8.6-jdk17",
|
|
2081
|
-
"8.5.14-ubuntu-jdk11",
|
|
2082
|
-
"7.19.24-ubuntu-jdk11",
|
|
2083
|
-
"7.19.26-jdk11",
|
|
2084
|
-
"8.5.2-ubuntu-jdk11",
|
|
2307
|
+
"8.9.7-jdk17",
|
|
2308
|
+
"8.9.7",
|
|
2085
2309
|
"8.6.2-ubuntu-jdk17",
|
|
2086
|
-
"8.6
|
|
2310
|
+
"8.6-ubuntu-jdk17",
|
|
2087
2311
|
"8.6.2-jdk17",
|
|
2088
|
-
"8.
|
|
2312
|
+
"8.6.2",
|
|
2313
|
+
"8.6-jdk17",
|
|
2314
|
+
"8.6",
|
|
2315
|
+
"8",
|
|
2316
|
+
"8.9-ubuntu-jdk17",
|
|
2317
|
+
"8-ubuntu-jdk17",
|
|
2318
|
+
"8.9-jdk17",
|
|
2319
|
+
"8-jdk17",
|
|
2320
|
+
"8.9.8",
|
|
2321
|
+
"8.9.8-jdk17",
|
|
2322
|
+
"8.9.8-ubuntu-jdk17",
|
|
2323
|
+
"8.9",
|
|
2324
|
+
"8.7.1",
|
|
2325
|
+
"8.7.1-ubuntu-jdk17",
|
|
2089
2326
|
"8.9.3-jdk11",
|
|
2090
|
-
"8.7.
|
|
2091
|
-
"8.5.12-jdk11",
|
|
2327
|
+
"8.7.1-jdk17",
|
|
2092
2328
|
"8.9.3-ubuntu-jdk11",
|
|
2093
2329
|
"8.7-jdk11",
|
|
2094
|
-
"8.
|
|
2095
|
-
"8.
|
|
2096
|
-
"8.
|
|
2330
|
+
"8.7.2-jdk11",
|
|
2331
|
+
"8.7.2-ubuntu-jdk11",
|
|
2332
|
+
"8.7-ubuntu-jdk11",
|
|
2333
|
+
"7.19.24-ubuntu-jdk11",
|
|
2334
|
+
"7.19.24",
|
|
2335
|
+
"7.19.24-jdk11",
|
|
2336
|
+
"8.5.16-ubuntu-jdk17",
|
|
2337
|
+
"8.1.3",
|
|
2097
2338
|
"8.5.16-jdk17",
|
|
2339
|
+
"8.5.8-jdk11",
|
|
2340
|
+
"8.1.3-ubuntu-jdk11",
|
|
2098
2341
|
"7.19.9",
|
|
2099
|
-
"8.1
|
|
2100
|
-
"8.
|
|
2101
|
-
"8.5.10",
|
|
2102
|
-
"8.5.2-jdk11",
|
|
2342
|
+
"8.9.1",
|
|
2343
|
+
"8.9.1-ubuntu-jdk17",
|
|
2103
2344
|
"8.5.16",
|
|
2104
|
-
"8.5.16-ubuntu-jdk17",
|
|
2105
|
-
"7.19.25",
|
|
2106
|
-
"8.1.4-jdk11",
|
|
2107
|
-
"7.19.24",
|
|
2108
|
-
"8.1-ubuntu-jdk11",
|
|
2109
|
-
"8.1.4",
|
|
2110
|
-
"8.3.1-jdk17",
|
|
2111
|
-
"8.7-ubuntu-jdk11",
|
|
2112
|
-
"8.1",
|
|
2113
|
-
"7.19.9-jdk11",
|
|
2114
2345
|
"8.4.1-ubuntu-jdk17",
|
|
2115
|
-
"8.4.
|
|
2116
|
-
"7.19.24-jdk11",
|
|
2117
|
-
"8.5.1-jdk17",
|
|
2118
|
-
"7.19.4-jdk11",
|
|
2119
|
-
"7.19.19-jdk11",
|
|
2120
|
-
"7.19.25-ubuntu-jdk11",
|
|
2346
|
+
"8.4.1",
|
|
2121
2347
|
"8.1.3-jdk11",
|
|
2122
|
-
"7.
|
|
2123
|
-
"
|
|
2124
|
-
"7.19.26-ubuntu-jdk11",
|
|
2125
|
-
"7.19.19-ubuntu-jdk11",
|
|
2126
|
-
"8.3.1",
|
|
2127
|
-
"7.20.0-jdk11",
|
|
2128
|
-
"8.5.1",
|
|
2129
|
-
"8.9.1-ubuntu-jdk17",
|
|
2130
|
-
"8.4.1-jdk17",
|
|
2348
|
+
"7.19.9-ubuntu-jdk11",
|
|
2349
|
+
"9.0.1",
|
|
2131
2350
|
"8.5.8-ubuntu-jdk11",
|
|
2132
|
-
"8.
|
|
2133
|
-
"
|
|
2134
|
-
"8.4.0-jdk11",
|
|
2135
|
-
"8.4.2",
|
|
2136
|
-
"8.9.5-jdk11",
|
|
2137
|
-
"8.7.1",
|
|
2138
|
-
"8.9.4-jdk11",
|
|
2139
|
-
"8.5.10-jdk17",
|
|
2140
|
-
"8.3.0",
|
|
2141
|
-
"8.0.1",
|
|
2142
|
-
"8.7.1-jdk17",
|
|
2143
|
-
"8.5.17-ubuntu-jdk17",
|
|
2144
|
-
"8.5.6",
|
|
2145
|
-
"7.19.25-jdk11",
|
|
2146
|
-
"8.3.1-ubuntu-jdk17",
|
|
2147
|
-
"8.5.6-ubuntu-jdk17",
|
|
2148
|
-
"8.5.1-ubuntu-jdk17",
|
|
2149
|
-
"8.5",
|
|
2351
|
+
"8.4.1-jdk17",
|
|
2352
|
+
"7.19.9-jdk11",
|
|
2150
2353
|
"8.9.1-jdk17",
|
|
2151
|
-
"
|
|
2152
|
-
"7.19.3",
|
|
2153
|
-
"8.4.5-jdk11",
|
|
2154
|
-
"8.0.2-ubuntu-jdk11",
|
|
2354
|
+
"9.0.1-ubuntu-jdk17",
|
|
2155
2355
|
"9.0.1-jdk17",
|
|
2156
|
-
"8.
|
|
2157
|
-
"8.
|
|
2158
|
-
"
|
|
2159
|
-
"
|
|
2356
|
+
"8.5.1",
|
|
2357
|
+
"8.7.2-ubuntu-jdk17",
|
|
2358
|
+
"8.3.0",
|
|
2359
|
+
"8.5.1-ubuntu-jdk17",
|
|
2360
|
+
"8.7-ubuntu-jdk17",
|
|
2361
|
+
"8.7",
|
|
2362
|
+
"7.19.19-jdk11",
|
|
2363
|
+
"7.19.19-ubuntu-jdk11",
|
|
2160
2364
|
"7.19.19",
|
|
2161
|
-
"
|
|
2162
|
-
"8.4.0-ubuntu-jdk11",
|
|
2163
|
-
"8.5.6-jdk17",
|
|
2164
|
-
"8.5.17-jdk17",
|
|
2165
|
-
"8.5-ubuntu-jdk17",
|
|
2166
|
-
"8.4.2-jdk17",
|
|
2365
|
+
"8.3.0-ubuntu-jdk17",
|
|
2167
2366
|
"8.3.0-jdk17",
|
|
2367
|
+
"8.5.1-jdk17",
|
|
2368
|
+
"8.7.2-jdk17",
|
|
2369
|
+
"8.7-jdk17",
|
|
2370
|
+
"8.7.2",
|
|
2371
|
+
"8.0.1",
|
|
2168
2372
|
"8.0.1-ubuntu-jdk11",
|
|
2169
|
-
"
|
|
2373
|
+
"8.9.4-jdk11",
|
|
2374
|
+
"8.5.2-jdk11",
|
|
2375
|
+
"8.9.4-ubuntu-jdk11",
|
|
2376
|
+
"8.5.6-jdk17",
|
|
2377
|
+
"8.5.6-ubuntu-jdk17",
|
|
2378
|
+
"8.0.1-jdk11",
|
|
2379
|
+
"8.5.6",
|
|
2380
|
+
"8.5.2-ubuntu-jdk11",
|
|
2170
2381
|
"7.19.3-jdk11",
|
|
2171
|
-
"
|
|
2172
|
-
"
|
|
2173
|
-
"8.4
|
|
2174
|
-
"
|
|
2382
|
+
"7.19.3-ubuntu-jdk11",
|
|
2383
|
+
"7.19.3",
|
|
2384
|
+
"8.4-ubuntu-jdk11",
|
|
2385
|
+
"7.19.25-jdk11",
|
|
2175
2386
|
"8.4.5-ubuntu-jdk11",
|
|
2176
|
-
"7.19.
|
|
2177
|
-
"
|
|
2178
|
-
"8.
|
|
2179
|
-
"
|
|
2387
|
+
"7.19.25-ubuntu-jdk11",
|
|
2388
|
+
"7.19.25",
|
|
2389
|
+
"8.4-jdk11",
|
|
2390
|
+
"8.1-ubuntu-jdk11",
|
|
2391
|
+
"8.1",
|
|
2392
|
+
"8.1.4-jdk11",
|
|
2393
|
+
"8.8.0-jdk11",
|
|
2394
|
+
"8.1.4-ubuntu-jdk11",
|
|
2395
|
+
"8.1.4",
|
|
2396
|
+
"8.4.5-jdk11",
|
|
2397
|
+
"8.1-jdk11",
|
|
2398
|
+
"8.5.17",
|
|
2180
2399
|
"8.8.0-ubuntu-jdk11",
|
|
2181
|
-
"
|
|
2182
|
-
"8.
|
|
2183
|
-
"8.7.2-ubuntu-jdk17",
|
|
2184
|
-
"7.19.2-ubuntu-jdk11",
|
|
2185
|
-
"8.7",
|
|
2400
|
+
"8.5.17-ubuntu-jdk17",
|
|
2401
|
+
"8.5.17-jdk17",
|
|
2186
2402
|
"8.5.9-ubuntu-jdk11",
|
|
2187
|
-
"
|
|
2188
|
-
"
|
|
2189
|
-
"
|
|
2403
|
+
"7.20.0-jdk11",
|
|
2404
|
+
"7.20.0",
|
|
2405
|
+
"8.5.9-jdk11",
|
|
2406
|
+
"7.20.0-ubuntu-jdk11",
|
|
2407
|
+
"8.5.12-ubuntu-jdk11",
|
|
2408
|
+
"8.9.2",
|
|
2409
|
+
"8.9.2-jdk17",
|
|
2410
|
+
"8.4.2-ubuntu-jdk17",
|
|
2411
|
+
"8.9.2-ubuntu-jdk17",
|
|
2412
|
+
"8.4.2-jdk17",
|
|
2413
|
+
"8.4.2",
|
|
2414
|
+
"8.5.12-jdk11",
|
|
2415
|
+
"9.0.2",
|
|
2416
|
+
"9.0.2-ubuntu-jdk17",
|
|
2417
|
+
"8.6.1-ubi9-jdk17",
|
|
2418
|
+
"9.0.2-jdk17",
|
|
2419
|
+
"8.3.1-ubuntu-jdk17",
|
|
2420
|
+
"8.4.0-ubuntu-jdk11",
|
|
2421
|
+
"8.3.1-jdk17",
|
|
2422
|
+
"8.3.1",
|
|
2423
|
+
"8.3.0-jdk11",
|
|
2424
|
+
"8.4.0-jdk11",
|
|
2425
|
+
"8.6.1-ubi9",
|
|
2426
|
+
"8.5.10-ubuntu-jdk17",
|
|
2190
2427
|
"8.3.0-ubuntu-jdk11",
|
|
2428
|
+
"8.5.10",
|
|
2429
|
+
"9.0.2-ubi9-jdk17",
|
|
2430
|
+
"9.0.2-ubi9",
|
|
2431
|
+
"8.0.2",
|
|
2432
|
+
"8.9.6-ubi9",
|
|
2433
|
+
"8.0.2-jdk11",
|
|
2434
|
+
"8.5.10-jdk17",
|
|
2435
|
+
"8.8.0-ubi9",
|
|
2436
|
+
"8.8.0-ubi9-jdk17",
|
|
2437
|
+
"7.19.14-jdk11",
|
|
2438
|
+
"8.9.6-ubi9-jdk17",
|
|
2439
|
+
"8.0.2-ubuntu-jdk11",
|
|
2191
2440
|
"7.19.14",
|
|
2192
|
-
"
|
|
2193
|
-
"7.19.0-jdk11",
|
|
2194
|
-
"8.9.2-ubuntu-jdk17",
|
|
2195
|
-
"7.19.0-ubuntu-jdk11",
|
|
2196
|
-
"8.5-jdk17",
|
|
2197
|
-
"8.7.2",
|
|
2198
|
-
"7.19.3-ubuntu-jdk11",
|
|
2199
|
-
"7.19.4",
|
|
2441
|
+
"7.19.2-jdk11",
|
|
2200
2442
|
"7.19.2",
|
|
2201
|
-
"
|
|
2202
|
-
"
|
|
2203
|
-
"8.5.
|
|
2443
|
+
"7.19.14-ubuntu-jdk11",
|
|
2444
|
+
"7.19.2-ubuntu-jdk11",
|
|
2445
|
+
"8.5.3-ubuntu-jdk11",
|
|
2204
2446
|
"8.5.7-ubuntu-jdk17",
|
|
2205
|
-
"8.8-jdk11",
|
|
2206
|
-
"8.5.9-jdk11",
|
|
2207
|
-
"8.3.1-ubuntu-jdk11",
|
|
2208
|
-
"8.4.3-ubuntu-jdk17",
|
|
2209
|
-
"8.4.3",
|
|
2210
|
-
"8.3.0-jdk11",
|
|
2211
|
-
"7.19.2-jdk11",
|
|
2212
|
-
"8.4-jdk11",
|
|
2213
|
-
"8.0.2",
|
|
2214
|
-
"8.5.11-ubuntu-jdk17",
|
|
2215
|
-
"8.8-ubuntu-jdk11",
|
|
2216
|
-
"8.7-jdk17",
|
|
2217
|
-
"8.7-ubuntu-jdk17",
|
|
2218
|
-
"8.8.1-ubuntu-jdk11",
|
|
2219
|
-
"8.0.3",
|
|
2220
2447
|
"8.5.3-jdk11",
|
|
2221
|
-
"8.
|
|
2222
|
-
"8.5.
|
|
2223
|
-
"
|
|
2224
|
-
"8.
|
|
2448
|
+
"8.9.5-jdk11",
|
|
2449
|
+
"8.5.7",
|
|
2450
|
+
"8.5.7-jdk17",
|
|
2451
|
+
"8.9.5-ubuntu-jdk11",
|
|
2452
|
+
"8.8.0-ubuntu-jdk17",
|
|
2453
|
+
"8.8.0-jdk17",
|
|
2454
|
+
"7.19.4-jdk11",
|
|
2455
|
+
"7.19.4",
|
|
2456
|
+
"9.0.1-ubuntu-jdk21",
|
|
2457
|
+
"7.19.4-ubuntu-jdk11",
|
|
2458
|
+
"9.0.1-jdk21",
|
|
2459
|
+
"7.19.0",
|
|
2460
|
+
"8.8.0",
|
|
2461
|
+
"7.19.0-jdk11",
|
|
2462
|
+
"7.19.0-ubuntu-jdk11",
|
|
2463
|
+
"7.19.26-jdk11",
|
|
2464
|
+
"7.19.26-ubuntu-jdk11",
|
|
2465
|
+
"7.19.26",
|
|
2466
|
+
"8.8-ubuntu-jdk11",
|
|
2225
2467
|
"8.8.1-jdk11",
|
|
2468
|
+
"8.8.1-ubuntu-jdk11",
|
|
2469
|
+
"8.8-jdk11",
|
|
2226
2470
|
"8.6.0-jdk11",
|
|
2471
|
+
"8.4.3-ubuntu-jdk17",
|
|
2227
2472
|
"8.6.0-ubuntu-jdk11",
|
|
2228
|
-
"8.
|
|
2473
|
+
"8.4.3-jdk17",
|
|
2474
|
+
"8.4.3",
|
|
2475
|
+
"8.5.14-ubuntu-jdk11",
|
|
2476
|
+
"8.5.14-jdk11",
|
|
2477
|
+
"7.20.1-ubuntu-jdk11",
|
|
2478
|
+
"7.20.1-jdk11",
|
|
2479
|
+
"8.3.2-jdk17",
|
|
2480
|
+
"8.9.3",
|
|
2481
|
+
"7.20.1",
|
|
2229
2482
|
"8.2.0-jdk11",
|
|
2230
|
-
"8.
|
|
2231
|
-
"8.5.8",
|
|
2232
|
-
"8.4.1-jdk11",
|
|
2233
|
-
"8.5.8-ubuntu-jdk17",
|
|
2234
|
-
"8.2.0",
|
|
2235
|
-
"8.5.3-ubuntu-jdk11",
|
|
2236
|
-
"8.9.6-ubuntu-jdk11",
|
|
2237
|
-
"8.4.1-ubuntu-jdk11",
|
|
2238
|
-
"9.0-jdk17",
|
|
2239
|
-
"7.19.15-ubuntu-jdk11",
|
|
2240
|
-
"8.5.4-jdk11",
|
|
2483
|
+
"8.3.2",
|
|
2241
2484
|
"9.0.3",
|
|
2485
|
+
"9.0.3-ubuntu-jdk17",
|
|
2242
2486
|
"8.3.2-ubuntu-jdk17",
|
|
2487
|
+
"9.0-jdk17",
|
|
2488
|
+
"9.0-ubuntu-jdk17",
|
|
2489
|
+
"8.3.1-jdk11",
|
|
2490
|
+
"8.2.0",
|
|
2491
|
+
"8.4.1-ubuntu-jdk11",
|
|
2492
|
+
"8.9.3-jdk17",
|
|
2493
|
+
"8.9.3-ubuntu-jdk17",
|
|
2494
|
+
"8.9.2-ubi9-jdk17",
|
|
2495
|
+
"8.3.1-ubuntu-jdk11",
|
|
2243
2496
|
"8.2.0-ubuntu-jdk11",
|
|
2244
|
-
"
|
|
2245
|
-
"
|
|
2246
|
-
"8.
|
|
2247
|
-
"
|
|
2248
|
-
"8.5.8-jdk17",
|
|
2249
|
-
"9.0.2-ubi9",
|
|
2250
|
-
"8.2.1",
|
|
2251
|
-
"7.19.20",
|
|
2252
|
-
"8.3.3-ubuntu-jdk17",
|
|
2253
|
-
"7.20.1",
|
|
2254
|
-
"8.5.2",
|
|
2497
|
+
"8.4.1-jdk11",
|
|
2498
|
+
"8.0.3",
|
|
2499
|
+
"8.0.3-jdk11",
|
|
2500
|
+
"8.0.3-ubuntu-jdk11",
|
|
2255
2501
|
"9.0",
|
|
2256
|
-
"7.19.1-jdk11",
|
|
2257
2502
|
"9.0.3-jdk17",
|
|
2258
|
-
"8.5.
|
|
2259
|
-
"
|
|
2260
|
-
"7.20.1-ubuntu-jdk11",
|
|
2261
|
-
"7.19.1",
|
|
2262
|
-
"8.9.6-jdk11",
|
|
2263
|
-
"9.0.3-ubuntu-jdk17",
|
|
2264
|
-
"8.3.2",
|
|
2503
|
+
"8.5.11-jdk17",
|
|
2504
|
+
"8.5.4-jdk11",
|
|
2265
2505
|
"8.5.2-jdk17",
|
|
2266
|
-
"
|
|
2267
|
-
"8.5.
|
|
2268
|
-
"
|
|
2506
|
+
"8.5.4-ubuntu-jdk11",
|
|
2507
|
+
"8.5.11",
|
|
2508
|
+
"7.19.15",
|
|
2509
|
+
"8.5.15-ubi9-jdk17",
|
|
2510
|
+
"7.19.15-ubuntu-jdk11",
|
|
2511
|
+
"8.5.15-ubi9",
|
|
2512
|
+
"7.19.20",
|
|
2269
2513
|
"7.19.20-ubuntu-jdk11",
|
|
2270
|
-
"
|
|
2271
|
-
"8.5.15-ubuntu-jdk11",
|
|
2272
|
-
"8.5.12",
|
|
2273
|
-
"8.9.0-jdk11",
|
|
2274
|
-
"8.5.1-ubuntu-jdk11",
|
|
2275
|
-
"8.9.2-ubi9",
|
|
2276
|
-
"8.5.3-jdk17",
|
|
2277
|
-
"8.9.6-ubi9",
|
|
2278
|
-
"7.20.1-jdk11",
|
|
2279
|
-
"8.6.1-ubuntu-jdk11",
|
|
2280
|
-
"7.20.2-jdk11",
|
|
2514
|
+
"8.5.0-jdk11",
|
|
2281
2515
|
"8.5.0-ubuntu-jdk11",
|
|
2282
|
-
"8.
|
|
2283
|
-
"
|
|
2284
|
-
"8.
|
|
2285
|
-
"
|
|
2516
|
+
"8.9.2-ubi9",
|
|
2517
|
+
"7.19.20-jdk11",
|
|
2518
|
+
"8.5.2",
|
|
2519
|
+
"8.5.8",
|
|
2520
|
+
"8.5.11-ubuntu-jdk17",
|
|
2521
|
+
"8.5.8-ubuntu-jdk17",
|
|
2522
|
+
"8.5.10-ubi9",
|
|
2523
|
+
"7.19.15-jdk11",
|
|
2524
|
+
"8.5.7-ubi9",
|
|
2525
|
+
"8.5.2-ubuntu-jdk17",
|
|
2526
|
+
"8.5.7-ubi9-jdk17",
|
|
2286
2527
|
"7.19.5-ubuntu-jdk11",
|
|
2287
|
-
"7.19.27",
|
|
2288
2528
|
"7.19.5",
|
|
2529
|
+
"7.19.1",
|
|
2530
|
+
"8.5.8-jdk17",
|
|
2289
2531
|
"8.5.10-ubi9-jdk17",
|
|
2290
|
-
"
|
|
2291
|
-
"8.
|
|
2292
|
-
"
|
|
2293
|
-
"
|
|
2532
|
+
"8.9.7-ubi9-jdk17",
|
|
2533
|
+
"8.9.6-ubuntu-jdk11",
|
|
2534
|
+
"9.0.3-ubi9",
|
|
2535
|
+
"7.19.1-ubuntu-jdk11",
|
|
2536
|
+
"8.9.7-ubi9",
|
|
2537
|
+
"9.0.2-ubuntu-jdk21",
|
|
2538
|
+
"9.0.2-jdk21",
|
|
2539
|
+
"8.8",
|
|
2540
|
+
"8.8-ubuntu-jdk17",
|
|
2541
|
+
"7.19.27",
|
|
2542
|
+
"8.9.6-jdk11",
|
|
2543
|
+
"7.19.1-jdk11",
|
|
2544
|
+
"9.0.3-ubi9-jdk17",
|
|
2545
|
+
"8.4.4",
|
|
2546
|
+
"7.19.5-jdk11",
|
|
2294
2547
|
"8.2.1-jdk11",
|
|
2548
|
+
"8.3.3",
|
|
2549
|
+
"8.0-ubuntu-jdk11",
|
|
2550
|
+
"8.6.2-ubi9-jdk17",
|
|
2551
|
+
"8.6.2-ubi9",
|
|
2552
|
+
"8.8.1-jdk17",
|
|
2553
|
+
"8.5.15-ubuntu-jdk11",
|
|
2554
|
+
"8.8.1-ubuntu-jdk17",
|
|
2555
|
+
"8.3.2-jdk11",
|
|
2556
|
+
"8.8.1-ubi9",
|
|
2557
|
+
"8.8.1-ubi9-jdk17",
|
|
2558
|
+
"9.0.3-ubi9-jdk21",
|
|
2559
|
+
"8.8-jdk17",
|
|
2295
2560
|
"7.19.27-ubuntu-jdk11",
|
|
2296
|
-
"8.
|
|
2297
|
-
"8.
|
|
2561
|
+
"8.5.12-jdk17",
|
|
2562
|
+
"8.5.1-jdk11",
|
|
2563
|
+
"8.3.3-jdk17",
|
|
2564
|
+
"8.4.4-ubuntu-jdk17",
|
|
2565
|
+
"7.20.2-jdk11",
|
|
2566
|
+
"8.5.15-jdk11",
|
|
2298
2567
|
"8.6.1-jdk11",
|
|
2299
|
-
"
|
|
2568
|
+
"8.8.1",
|
|
2300
2569
|
"7.20.2",
|
|
2301
|
-
"
|
|
2302
|
-
"8.
|
|
2303
|
-
"8.8.0-ubi9",
|
|
2304
|
-
"9.0.2-ubi9-jdk17",
|
|
2305
|
-
"8.2.1-ubuntu-jdk11",
|
|
2570
|
+
"7.20.2-ubuntu-jdk11",
|
|
2571
|
+
"8.5.5-jdk11",
|
|
2306
2572
|
"8.3.2-ubuntu-jdk11",
|
|
2307
|
-
"8.8.0-ubuntu-jdk17",
|
|
2308
|
-
"8.4.4",
|
|
2309
|
-
"8.3.3",
|
|
2310
|
-
"8.0-jdk11",
|
|
2311
|
-
"8.3.3-jdk17",
|
|
2312
|
-
"8.6.1-ubi9-jdk17",
|
|
2313
|
-
"8.0.4-jdk11",
|
|
2314
|
-
"8.5.9-jdk17",
|
|
2315
|
-
"8.0.4",
|
|
2316
2573
|
"8.4.4-jdk17",
|
|
2317
|
-
"7.19.
|
|
2318
|
-
"
|
|
2319
|
-
"
|
|
2320
|
-
"
|
|
2321
|
-
"8.5.12
|
|
2322
|
-
"8.
|
|
2323
|
-
"8.8.1-ubuntu-jdk17",
|
|
2324
|
-
"8.0-ubuntu-jdk11",
|
|
2325
|
-
"8.8-jdk17",
|
|
2326
|
-
"8.9.6-ubi9-jdk17",
|
|
2327
|
-
"8.9.0-ubuntu-jdk11",
|
|
2328
|
-
"8.5.9",
|
|
2574
|
+
"7.19.27-jdk11",
|
|
2575
|
+
"8.3.3-ubuntu-jdk17",
|
|
2576
|
+
"8.6.1-ubuntu-jdk11",
|
|
2577
|
+
"latest",
|
|
2578
|
+
"8.5.12",
|
|
2579
|
+
"8.9.4",
|
|
2329
2580
|
"8.0.4-ubuntu-jdk11",
|
|
2330
|
-
"8.
|
|
2331
|
-
"8.
|
|
2332
|
-
"8.
|
|
2333
|
-
"8.
|
|
2581
|
+
"8.2.1-ubuntu-jdk11",
|
|
2582
|
+
"8.0.4",
|
|
2583
|
+
"8.0",
|
|
2584
|
+
"8.5.12-ubuntu-jdk17",
|
|
2585
|
+
"8.2.1",
|
|
2334
2586
|
"7.19.21-ubuntu-jdk11",
|
|
2335
|
-
"
|
|
2336
|
-
"8.
|
|
2337
|
-
"7.19.
|
|
2587
|
+
"8.0.4-jdk11",
|
|
2588
|
+
"8.0-jdk11",
|
|
2589
|
+
"7.19.21",
|
|
2338
2590
|
"8.4.2-ubuntu-jdk11",
|
|
2339
|
-
"8.5.10-ubi9",
|
|
2340
|
-
"8.5.3-ubuntu-jdk17",
|
|
2341
|
-
"8.5.5-jdk11",
|
|
2342
|
-
"8.4.2-jdk11",
|
|
2343
2591
|
"8.5.9-ubuntu-jdk17",
|
|
2344
|
-
"8.6-ubuntu-jdk11",
|
|
2345
|
-
"9.1.0-jdk17",
|
|
2346
|
-
"8.3.3-jdk11",
|
|
2347
|
-
"7.19.16",
|
|
2348
|
-
"7.19.16-jdk11",
|
|
2349
|
-
"7.19.10-ubuntu-jdk11",
|
|
2350
2592
|
"8.5.5-ubuntu-jdk11",
|
|
2351
|
-
"8.
|
|
2352
|
-
"8.5.
|
|
2353
|
-
"7.19.10-jdk11",
|
|
2354
|
-
"8.2.2-jdk17",
|
|
2355
|
-
"7.19.21",
|
|
2356
|
-
"8.9.7-jdk11",
|
|
2357
|
-
"7.19.21-jdk11",
|
|
2358
|
-
"8.5.7-ubi9",
|
|
2359
|
-
"9.1.0-ubuntu-jdk17",
|
|
2360
|
-
"9.1.0",
|
|
2361
|
-
"8.9.7-ubuntu-jdk11",
|
|
2362
|
-
"9.0.3-ubi9-jdk17",
|
|
2593
|
+
"8.4.2-jdk11",
|
|
2594
|
+
"8.5.1-ubuntu-jdk11",
|
|
2363
2595
|
"8.9.4-jdk17",
|
|
2364
|
-
"8.0.3-jdk17",
|
|
2365
|
-
"8.1.3-jdk17",
|
|
2366
2596
|
"8.9.4-ubuntu-jdk17",
|
|
2367
|
-
"
|
|
2368
|
-
"
|
|
2369
|
-
"7.19.
|
|
2370
|
-
"
|
|
2371
|
-
"8.
|
|
2372
|
-
"
|
|
2373
|
-
"8.
|
|
2374
|
-
"8.
|
|
2375
|
-
"9.0.2-jdk21",
|
|
2376
|
-
"8.8-ubuntu-jdk17",
|
|
2377
|
-
"7.19.28-jdk11",
|
|
2378
|
-
"8.4.3-jdk11",
|
|
2379
|
-
"8.3.3-ubuntu-jdk11",
|
|
2380
|
-
"7.19.28-ubuntu-jdk11",
|
|
2381
|
-
"8.8",
|
|
2382
|
-
"8.6.2-ubuntu-jdk11",
|
|
2383
|
-
"8.9.3-ubi9",
|
|
2384
|
-
"8.5.7-ubi9-jdk17",
|
|
2597
|
+
"7.19.21-jdk11",
|
|
2598
|
+
"7.19.6",
|
|
2599
|
+
"7.19.10",
|
|
2600
|
+
"8.5.9",
|
|
2601
|
+
"8.5.16-ubi9",
|
|
2602
|
+
"7.19.10-jdk11",
|
|
2603
|
+
"8.9.0-jdk11",
|
|
2604
|
+
"8.9.0-ubuntu-jdk11",
|
|
2385
2605
|
"8.9.3-ubi9-jdk17",
|
|
2386
|
-
"8.
|
|
2387
|
-
"9.
|
|
2388
|
-
"
|
|
2389
|
-
"8.
|
|
2390
|
-
"8.4.3-ubuntu-jdk11",
|
|
2391
|
-
"8.8.1-jdk17",
|
|
2392
|
-
"8.5.16-ubuntu-jdk11",
|
|
2393
|
-
"8.1.0-jdk17",
|
|
2394
|
-
"8.4.5",
|
|
2395
|
-
"8.4-ubuntu-jdk17",
|
|
2396
|
-
"8.4",
|
|
2397
|
-
"8.2.2",
|
|
2398
|
-
"7.19.28",
|
|
2399
|
-
"8.4-jdk17",
|
|
2400
|
-
"8.9.1-jdk11",
|
|
2401
|
-
"8.3.4",
|
|
2402
|
-
"8.9.5-ubuntu-jdk17",
|
|
2403
|
-
"8.8.1-ubi9-jdk17",
|
|
2404
|
-
"8.3.4-jdk17",
|
|
2606
|
+
"8.5.3",
|
|
2607
|
+
"8.9.3-ubi9",
|
|
2608
|
+
"7.19.10-ubuntu-jdk11",
|
|
2609
|
+
"8.9.7-jdk11",
|
|
2405
2610
|
"8.5.16-ubi9-jdk17",
|
|
2406
|
-
"8.
|
|
2407
|
-
"8.
|
|
2408
|
-
"
|
|
2409
|
-
"
|
|
2611
|
+
"8.5.9-jdk17",
|
|
2612
|
+
"8.5.3-jdk17",
|
|
2613
|
+
"7.19.16-ubuntu-jdk11",
|
|
2614
|
+
"7.19.16",
|
|
2615
|
+
"9.0.3-jdk21",
|
|
2616
|
+
"8.5.3-ubuntu-jdk17",
|
|
2617
|
+
"7.19.6-ubuntu-jdk11",
|
|
2618
|
+
"8.5.8-ubi9",
|
|
2619
|
+
"7.19.16-jdk11",
|
|
2620
|
+
"9-jdk21",
|
|
2621
|
+
"8.9.7-ubuntu-jdk11",
|
|
2622
|
+
"8.5.8-ubi9-jdk17",
|
|
2623
|
+
"7.19.28-jdk11",
|
|
2410
2624
|
"8.4.5-ubuntu-jdk17",
|
|
2411
|
-
"
|
|
2412
|
-
"8.6.0",
|
|
2413
|
-
"7.19.11",
|
|
2414
|
-
"7.19.17",
|
|
2625
|
+
"7.19.6-jdk11",
|
|
2415
2626
|
"8.4.5-jdk17",
|
|
2416
|
-
"8.
|
|
2417
|
-
"
|
|
2627
|
+
"8.4",
|
|
2628
|
+
"9.1.0-jdk17",
|
|
2629
|
+
"8.5.11-ubi9-jdk17",
|
|
2630
|
+
"7.20-ubuntu-jdk11",
|
|
2418
2631
|
"7-ubuntu-jdk11",
|
|
2419
|
-
"7.
|
|
2632
|
+
"7.19.28-ubuntu-jdk11",
|
|
2633
|
+
"8.5.11-ubi9",
|
|
2634
|
+
"7.20.3-jdk11",
|
|
2635
|
+
"8.4-ubuntu-jdk17",
|
|
2636
|
+
"7.19.28",
|
|
2637
|
+
"8.4.5",
|
|
2638
|
+
"8.6.2-ubuntu-jdk11",
|
|
2639
|
+
"9.0-jdk21",
|
|
2640
|
+
"9.0-ubuntu-jdk21",
|
|
2641
|
+
"9.1.1",
|
|
2642
|
+
"8.5.16-ubuntu-jdk11",
|
|
2643
|
+
"jdk21",
|
|
2644
|
+
"9",
|
|
2645
|
+
"9.1",
|
|
2646
|
+
"8.1.3-ubuntu-jdk17",
|
|
2647
|
+
"8.9.8-ubi9-jdk17",
|
|
2648
|
+
"8.2.2-ubuntu-jdk17",
|
|
2649
|
+
"8.2.2-jdk11",
|
|
2650
|
+
"8.5.16-jdk11",
|
|
2651
|
+
"8.4-jdk17",
|
|
2652
|
+
"9.0.3-ubuntu-jdk21",
|
|
2653
|
+
"9.1.0-ubuntu-jdk17",
|
|
2654
|
+
"9.1.0",
|
|
2655
|
+
"9.1-jdk21",
|
|
2656
|
+
"9.1.1-jdk21",
|
|
2657
|
+
"9.1-ubuntu-jdk21",
|
|
2658
|
+
"9-ubuntu-jdk21",
|
|
2659
|
+
"ubuntu-jdk21",
|
|
2660
|
+
"9.1.1-ubuntu-jdk21",
|
|
2661
|
+
"8.1.3-jdk17",
|
|
2662
|
+
"8.6.2-jdk11",
|
|
2420
2663
|
"7-jdk11",
|
|
2421
|
-
"
|
|
2664
|
+
"8.6-jdk11",
|
|
2665
|
+
"8.7.1-ubi9-jdk17",
|
|
2422
2666
|
"8.5.10-jdk11",
|
|
2423
2667
|
"7.20-jdk11",
|
|
2424
|
-
"8.3",
|
|
2425
|
-
"8.
|
|
2426
|
-
"8.9.
|
|
2427
|
-
"8.
|
|
2428
|
-
"8.
|
|
2429
|
-
"7.20.3-jdk11",
|
|
2668
|
+
"8.4.3-ubuntu-jdk11",
|
|
2669
|
+
"8.4.3-jdk11",
|
|
2670
|
+
"8.9.8-ubi9",
|
|
2671
|
+
"8.7.1-ubi9",
|
|
2672
|
+
"8.9.1-jdk11",
|
|
2430
2673
|
"8.5.10-ubuntu-jdk11",
|
|
2431
|
-
"8.2.
|
|
2432
|
-
"8.
|
|
2433
|
-
"8.
|
|
2434
|
-
"
|
|
2674
|
+
"8.2.2-ubuntu-jdk11",
|
|
2675
|
+
"8.2.2",
|
|
2676
|
+
"8.3.4-jdk17",
|
|
2677
|
+
"8.9.1-ubuntu-jdk11",
|
|
2678
|
+
"8.3",
|
|
2679
|
+
"8.3.4",
|
|
2435
2680
|
"7",
|
|
2681
|
+
"8.9.0",
|
|
2682
|
+
"8.9.0-ubuntu-jdk17",
|
|
2683
|
+
"7.20.3-ubuntu-jdk11",
|
|
2684
|
+
"8.9.0-jdk17",
|
|
2685
|
+
"8.6-ubuntu-jdk11",
|
|
2436
2686
|
"7.20.3",
|
|
2437
|
-
"
|
|
2438
|
-
"7.
|
|
2439
|
-
"8.
|
|
2440
|
-
"8.
|
|
2441
|
-
"
|
|
2442
|
-
"8.
|
|
2443
|
-
"
|
|
2444
|
-
"8.
|
|
2445
|
-
"
|
|
2687
|
+
"9.1.0-ubi9-jdk17",
|
|
2688
|
+
"7.20",
|
|
2689
|
+
"8.1.0",
|
|
2690
|
+
"8.3.3-ubuntu-jdk11",
|
|
2691
|
+
"9.1.0-ubuntu-jdk21",
|
|
2692
|
+
"8.0.3-ubuntu-jdk17",
|
|
2693
|
+
"8.9.5-jdk17",
|
|
2694
|
+
"8.5.14",
|
|
2695
|
+
"9.1.0-jdk21",
|
|
2446
2696
|
"8.5.14-ubuntu-jdk17",
|
|
2447
|
-
"7.19.22-ubuntu-jdk11",
|
|
2448
|
-
"8.9.7-ubi9",
|
|
2449
2697
|
"7.19.22-jdk11",
|
|
2450
|
-
"
|
|
2451
|
-
"
|
|
2452
|
-
"8.5-ubuntu-
|
|
2453
|
-
"
|
|
2698
|
+
"8.1.0-ubuntu-jdk11",
|
|
2699
|
+
"9.1.0-ubi9-jdk21",
|
|
2700
|
+
"8.5.4-ubuntu-jdk17",
|
|
2701
|
+
"8.3-ubuntu-jdk17",
|
|
2702
|
+
"8.1.0-jdk11",
|
|
2454
2703
|
"8.5.6-jdk11",
|
|
2704
|
+
"8.2.2-jdk17",
|
|
2705
|
+
"8.3-jdk17",
|
|
2706
|
+
"8.3.4-ubuntu-jdk17",
|
|
2707
|
+
"9.1.0-ubi9",
|
|
2708
|
+
"8.9.5",
|
|
2709
|
+
"8.9.5-ubuntu-jdk17",
|
|
2710
|
+
"7.19.17",
|
|
2711
|
+
"7.19.17-ubuntu-jdk11",
|
|
2455
2712
|
"8.5.4",
|
|
2456
2713
|
"8.5.6-ubuntu-jdk11",
|
|
2457
|
-
"8.
|
|
2458
|
-
"ubuntu-
|
|
2459
|
-
"8.
|
|
2460
|
-
"8.
|
|
2461
|
-
"
|
|
2462
|
-
"8.
|
|
2714
|
+
"8.5.12-ubi9-jdk17",
|
|
2715
|
+
"8.6.0-ubuntu-jdk17",
|
|
2716
|
+
"8.9.0-ubi9-jdk17",
|
|
2717
|
+
"8.3.3-jdk11",
|
|
2718
|
+
"8.9.4-ubi9",
|
|
2719
|
+
"8.9.0-ubi9",
|
|
2720
|
+
"8.9.4-ubi9-jdk17",
|
|
2721
|
+
"7.19.22-ubuntu-jdk11",
|
|
2722
|
+
"8.0.3-jdk17",
|
|
2723
|
+
"8.5.17-ubi9",
|
|
2724
|
+
"7.19.22",
|
|
2725
|
+
"8.1.0-jdk17",
|
|
2726
|
+
"8.6.0-jdk17",
|
|
2727
|
+
"8.5.17-ubi9-jdk17",
|
|
2728
|
+
"7.19.17-jdk11",
|
|
2729
|
+
"8.5.4-jdk17",
|
|
2730
|
+
"8.5.9-ubi9",
|
|
2731
|
+
"7.19.11-jdk11",
|
|
2732
|
+
"8.5.14-jdk17",
|
|
2733
|
+
"8.5.12-ubi9",
|
|
2734
|
+
"8.2.0-ubuntu-jdk17",
|
|
2735
|
+
"9.0.1-ubi9-jdk21",
|
|
2736
|
+
"7.19.7",
|
|
2737
|
+
"7.19.11-ubuntu-jdk11",
|
|
2738
|
+
"7.19.7-jdk11",
|
|
2739
|
+
"8.5.9-ubi9-jdk17",
|
|
2740
|
+
"8.6.0",
|
|
2463
2741
|
"7.19.7-ubuntu-jdk11",
|
|
2464
|
-
"8.
|
|
2465
|
-
"
|
|
2466
|
-
"9.0.
|
|
2467
|
-
"8.
|
|
2468
|
-
"
|
|
2469
|
-
"8.5.11-ubi9-jdk17",
|
|
2470
|
-
"8.9-jdk11",
|
|
2471
|
-
"8-ubuntu-jdk11",
|
|
2472
|
-
"8-jdk11",
|
|
2473
|
-
"7.19-jdk11",
|
|
2474
|
-
"8.9-ubuntu-jdk11",
|
|
2475
|
-
"8.5.8-ubi9-jdk17",
|
|
2476
|
-
"jdk17",
|
|
2742
|
+
"8.1.0-ubuntu-jdk17",
|
|
2743
|
+
"7.19.11",
|
|
2744
|
+
"9.0.1-ubi9",
|
|
2745
|
+
"8.2.0-jdk17",
|
|
2746
|
+
"9-jdk17",
|
|
2477
2747
|
"9.1.1-ubuntu-jdk17",
|
|
2478
|
-
"8.5.17-jdk11",
|
|
2479
2748
|
"8.9.8-ubuntu-jdk11",
|
|
2480
|
-
"8
|
|
2481
|
-
"
|
|
2482
|
-
"8.1.4-ubuntu-jdk17",
|
|
2483
|
-
"8.1.4-jdk17",
|
|
2749
|
+
"8-ubuntu-jdk11",
|
|
2750
|
+
"ubuntu-jdk17",
|
|
2484
2751
|
"8.9.8-jdk11",
|
|
2485
|
-
"8.2.3-jdk17",
|
|
2486
|
-
"7.19.29-jdk11",
|
|
2487
|
-
"9-jdk17",
|
|
2488
|
-
"9.1-ubuntu-jdk21",
|
|
2489
|
-
"8.0-jdk17",
|
|
2490
2752
|
"9.1-ubuntu-jdk17",
|
|
2491
|
-
"8.
|
|
2492
|
-
"
|
|
2493
|
-
"9.1.1-jdk21",
|
|
2494
|
-
"8.3-ubuntu-jdk11",
|
|
2495
|
-
"9-jdk21",
|
|
2496
|
-
"7.19.29",
|
|
2497
|
-
"9-ubuntu-jdk21",
|
|
2498
|
-
"9.1",
|
|
2499
|
-
"jdk21",
|
|
2500
|
-
"7.19-ubuntu-jdk11",
|
|
2501
|
-
"8.9.0",
|
|
2502
|
-
"9.0-ubuntu-jdk21",
|
|
2503
|
-
"7.19",
|
|
2504
|
-
"9.1-jdk21",
|
|
2505
|
-
"8.2.3-jdk11",
|
|
2506
|
-
"8.2-jdk17",
|
|
2507
|
-
"8.2-jdk11",
|
|
2508
|
-
"9.1.1-ubuntu-jdk21",
|
|
2509
|
-
"9.0-jdk21",
|
|
2510
|
-
"8.2-ubuntu-jdk11",
|
|
2511
|
-
"8.3-jdk11",
|
|
2512
|
-
"ubuntu-jdk17",
|
|
2753
|
+
"8.9-ubuntu-jdk11",
|
|
2754
|
+
"9.1.1-jdk17",
|
|
2513
2755
|
"9-ubuntu-jdk17",
|
|
2514
|
-
"7.19.29-ubuntu-jdk11",
|
|
2515
|
-
"8.2",
|
|
2516
2756
|
"9.1-jdk17",
|
|
2517
|
-
"9
|
|
2518
|
-
"8.
|
|
2519
|
-
"9.1.1",
|
|
2520
|
-
"9.0.3-ubuntu-jdk21",
|
|
2521
|
-
"8.5.8-ubi9",
|
|
2522
|
-
"8.0-ubuntu-jdk17",
|
|
2523
|
-
"8.9.2-jdk11",
|
|
2524
|
-
"8.2-ubuntu-jdk17",
|
|
2525
|
-
"8.9.0-jdk17",
|
|
2757
|
+
"8.9-jdk11",
|
|
2758
|
+
"8.1.4-ubuntu-jdk17",
|
|
2526
2759
|
"8.1-jdk17",
|
|
2527
|
-
"8.
|
|
2528
|
-
"
|
|
2760
|
+
"8.2-jdk17",
|
|
2761
|
+
"7.19.29-jdk11",
|
|
2762
|
+
"8.2.3-jdk11",
|
|
2763
|
+
"8-jdk11",
|
|
2764
|
+
"jdk17",
|
|
2765
|
+
"8.2.3-ubuntu-jdk17",
|
|
2766
|
+
"7.19.29-ubuntu-jdk11",
|
|
2767
|
+
"8.2-ubuntu-jdk17",
|
|
2768
|
+
"7.19.29",
|
|
2529
2769
|
"8.1-ubuntu-jdk17",
|
|
2530
|
-
"8.
|
|
2531
|
-
"8.
|
|
2532
|
-
"
|
|
2533
|
-
"
|
|
2770
|
+
"8.1.4-jdk17",
|
|
2771
|
+
"8.2-ubuntu-jdk11",
|
|
2772
|
+
"8.5.17-ubuntu-jdk11",
|
|
2773
|
+
"7.19.23-ubuntu-jdk11",
|
|
2774
|
+
"8.9.6",
|
|
2775
|
+
"8.2.3-jdk17",
|
|
2776
|
+
"8.2.3",
|
|
2777
|
+
"8.0.1-ubuntu-jdk17",
|
|
2778
|
+
"8.2.3-ubuntu-jdk11",
|
|
2779
|
+
"8.0-jdk17",
|
|
2780
|
+
"8.0.4-jdk17",
|
|
2781
|
+
"8.5.17-jdk11",
|
|
2782
|
+
"8.2",
|
|
2783
|
+
"8.2-jdk11",
|
|
2784
|
+
"8.3.4-ubuntu-jdk11",
|
|
2785
|
+
"8.7.2-ubi9",
|
|
2786
|
+
"8.7.2-ubi9-jdk17",
|
|
2787
|
+
"8.9.6-jdk17",
|
|
2788
|
+
"8.3-ubuntu-jdk11",
|
|
2789
|
+
"8.3-jdk11",
|
|
2790
|
+
"8.4.4-jdk11",
|
|
2791
|
+
"8.0-ubuntu-jdk17",
|
|
2792
|
+
"8.0.4-ubuntu-jdk17",
|
|
2793
|
+
"9.1.1-ubi9",
|
|
2794
|
+
"9.1.1-ubi9-jdk21",
|
|
2795
|
+
"8.3.4-jdk11",
|
|
2796
|
+
"ubi9-jdk21",
|
|
2797
|
+
"8.5.15-jdk17",
|
|
2798
|
+
"8.5.15-ubuntu-jdk17",
|
|
2534
2799
|
"8.5.15",
|
|
2535
|
-
"8.
|
|
2536
|
-
"8.
|
|
2537
|
-
"
|
|
2538
|
-
"
|
|
2539
|
-
"7.19.23-ubuntu-jdk11",
|
|
2540
|
-
"8.0.0-jdk11",
|
|
2541
|
-
"8.7.1-jdk11",
|
|
2542
|
-
"8.9.4-ubi9-jdk17",
|
|
2543
|
-
"8.7.1-ubuntu-jdk11",
|
|
2544
|
-
"8.1.1",
|
|
2545
|
-
"7.19.18-ubuntu-jdk11",
|
|
2546
|
-
"7.19.18",
|
|
2547
|
-
"9.1.0-ubi9-jdk21",
|
|
2548
|
-
"8.5.17-ubi9",
|
|
2549
|
-
"8.1.1-ubuntu-jdk11",
|
|
2800
|
+
"8.4.4-ubuntu-jdk11",
|
|
2801
|
+
"8.9.6-ubuntu-jdk17",
|
|
2802
|
+
"8.5.0-ubuntu-jdk17",
|
|
2803
|
+
"8.5.0",
|
|
2550
2804
|
"7.19.23-jdk11",
|
|
2551
|
-
"
|
|
2805
|
+
"8.5.7-ubuntu-jdk11",
|
|
2806
|
+
"ubi9",
|
|
2807
|
+
"8.1.1",
|
|
2808
|
+
"8.9.2-jdk11",
|
|
2809
|
+
"8.5.11-ubuntu-jdk11",
|
|
2810
|
+
"8.5.5-jdk17",
|
|
2811
|
+
"8.5.5-ubuntu-jdk17",
|
|
2552
2812
|
"8.1.1-jdk11",
|
|
2553
|
-
"
|
|
2813
|
+
"8.5.5",
|
|
2814
|
+
"8.1.1-ubuntu-jdk11",
|
|
2554
2815
|
"8.0.1-jdk17",
|
|
2555
|
-
"8.5.
|
|
2816
|
+
"8.5.0-jdk17",
|
|
2817
|
+
"7.19.23",
|
|
2818
|
+
"8.5.7-jdk11",
|
|
2819
|
+
"8.4.0",
|
|
2556
2820
|
"8.9.2-ubuntu-jdk11",
|
|
2557
|
-
"8.5.0",
|
|
2558
|
-
"9.1.0-ubi9",
|
|
2559
|
-
"8.5.15-jdk17",
|
|
2560
|
-
"9.1.0-jdk21",
|
|
2561
|
-
"8.9.0-ubuntu-jdk17",
|
|
2562
|
-
"8.4.4-jdk11",
|
|
2563
|
-
"7.19.8",
|
|
2564
|
-
"8.0.1-ubuntu-jdk17",
|
|
2565
|
-
"7.19.12-jdk11",
|
|
2566
|
-
"7.19.12-ubuntu-jdk11",
|
|
2567
|
-
"8.2.1-jdk17",
|
|
2568
|
-
"8.5.11-ubuntu-jdk11",
|
|
2569
|
-
"8.2.1-ubuntu-jdk17",
|
|
2570
|
-
"8.0.0-ubuntu-jdk11",
|
|
2571
|
-
"8.9.8-ubi9-jdk17",
|
|
2572
|
-
"9.0.1-ubi9-jdk21",
|
|
2573
2821
|
"8.0.0-ubuntu-jdk17",
|
|
2574
|
-
"8.5.7-ubuntu-jdk11",
|
|
2575
|
-
"8.0.0",
|
|
2576
|
-
"8.4.4-ubuntu-jdk11",
|
|
2577
|
-
"8.5.0-ubuntu-jdk17",
|
|
2578
|
-
"8.9.0-ubi9-jdk17",
|
|
2579
|
-
"7.19.18-jdk11",
|
|
2580
|
-
"8.4.0-jdk17",
|
|
2581
|
-
"8.5.5-jdk17",
|
|
2582
|
-
"8.4.0",
|
|
2583
|
-
"8.5.0-jdk17",
|
|
2584
|
-
"8.5.5-ubuntu-jdk17",
|
|
2585
|
-
"8.7.1-ubi9-jdk17",
|
|
2586
|
-
"8.0.2-ubuntu-jdk17",
|
|
2587
|
-
"8.0.2-jdk17",
|
|
2588
2822
|
"8.0.0-jdk17",
|
|
2823
|
+
"ubi9-jdk17",
|
|
2824
|
+
"8.2.1-jdk17",
|
|
2825
|
+
"9.1.1-ubi9-jdk17",
|
|
2826
|
+
"8.7.1-jdk11",
|
|
2827
|
+
"8.7.1-ubuntu-jdk11",
|
|
2828
|
+
"8.5.11-jdk11",
|
|
2829
|
+
"8.4.0-jdk17",
|
|
2589
2830
|
"7.19.8-ubuntu-jdk11",
|
|
2590
|
-
"8.
|
|
2591
|
-
"8.
|
|
2831
|
+
"8.0.0",
|
|
2832
|
+
"8.6.1-ubuntu-jdk17",
|
|
2833
|
+
"8.0.0-jdk11",
|
|
2834
|
+
"8.6.1-jdk17",
|
|
2835
|
+
"8.0.0-ubuntu-jdk11",
|
|
2592
2836
|
"8.4.0-ubuntu-jdk17",
|
|
2837
|
+
"8.1.1-jdk17",
|
|
2838
|
+
"7.19.12-ubuntu-jdk11",
|
|
2839
|
+
"8.2.1-ubuntu-jdk17",
|
|
2593
2840
|
"7.19.8-jdk11",
|
|
2594
|
-
"
|
|
2841
|
+
"7.19.12-jdk11",
|
|
2842
|
+
"8.0.2-jdk17",
|
|
2843
|
+
"8.6.0-ubi9",
|
|
2844
|
+
"7.19.18",
|
|
2595
2845
|
"8.1.1-ubuntu-jdk17",
|
|
2596
|
-
"
|
|
2597
|
-
"8.5.12-ubi9",
|
|
2598
|
-
"8.9.6-ubuntu-jdk17",
|
|
2599
|
-
"8.9.8-ubi9",
|
|
2600
|
-
"8.5.9-ubi9",
|
|
2601
|
-
"9.1.1-ubi9-jdk17",
|
|
2602
|
-
"8.9.6",
|
|
2603
|
-
"9.1.1-ubi9-jdk21",
|
|
2604
|
-
"9.1.1-ubi9",
|
|
2605
|
-
"8.7.1-ubi9",
|
|
2606
|
-
"8.9.6-jdk17",
|
|
2607
|
-
"8.9.0-ubi9",
|
|
2608
|
-
"ubi9-jdk21",
|
|
2846
|
+
"7.19.18-ubuntu-jdk11",
|
|
2609
2847
|
"8.9.5-ubi9",
|
|
2610
|
-
"8.
|
|
2611
|
-
"9.0.2-ubi9-jdk21",
|
|
2612
|
-
"8.7.2-ubi9",
|
|
2848
|
+
"8.6.1",
|
|
2613
2849
|
"8.9.5-ubi9-jdk17",
|
|
2614
|
-
"ubi9",
|
|
2615
|
-
"
|
|
2616
|
-
"
|
|
2617
|
-
"
|
|
2850
|
+
"8.6.0-ubi9-jdk17",
|
|
2851
|
+
"7.19.8",
|
|
2852
|
+
"7.19.18-jdk11",
|
|
2853
|
+
"7.19.12",
|
|
2854
|
+
"9.0.2-ubi9-jdk21",
|
|
2855
|
+
"8.0.2-ubuntu-jdk17",
|
|
2618
2856
|
"8.5.14-ubi9",
|
|
2619
2857
|
"8.5.14-ubi9-jdk17",
|
|
2620
|
-
"8.6
|
|
2621
|
-
"9.0.1-ubi9-jdk17",
|
|
2622
|
-
"8.9.1-ubi9-jdk17",
|
|
2623
|
-
"8.9.1-ubi9",
|
|
2858
|
+
"8.5.6-ubi9-jdk17",
|
|
2624
2859
|
"8.5.6-ubi9",
|
|
2625
|
-
"8.
|
|
2860
|
+
"8.9.1-ubi9",
|
|
2861
|
+
"8.9.1-ubi9-jdk17",
|
|
2862
|
+
"9.0.1-ubi9-jdk17",
|
|
2626
2863
|
"9.2.0-beta3-ubuntu-jdk17",
|
|
2627
2864
|
"9.2.0-beta3-jdk17",
|
|
2628
|
-
"eap-ubuntu-jdk17",
|
|
2629
|
-
"eap",
|
|
2630
2865
|
"9.2.0-beta3",
|
|
2631
|
-
"eap-jdk17",
|
|
2632
2866
|
"9.2.0-beta3-jdk21",
|
|
2633
2867
|
"9.2.0-beta3-ubuntu-jdk21",
|
|
2634
2868
|
"9.2.0-beta3-ubi9",
|
|
@@ -7438,6 +7672,10 @@ var bitbucket = [
|
|
|
7438
7672
|
];
|
|
7439
7673
|
var mysql = [
|
|
7440
7674
|
"latest",
|
|
7675
|
+
"8.0.40-debian",
|
|
7676
|
+
"8.0.40-bookworm",
|
|
7677
|
+
"8.0-debian",
|
|
7678
|
+
"8.0-bookworm",
|
|
7441
7679
|
"oraclelinux9",
|
|
7442
7680
|
"oracle",
|
|
7443
7681
|
"lts-oraclelinux9",
|
|
@@ -7470,10 +7708,6 @@ var mysql = [
|
|
|
7470
7708
|
"8-oraclelinux9",
|
|
7471
7709
|
"8-oracle",
|
|
7472
7710
|
"8",
|
|
7473
|
-
"8.0.40-debian",
|
|
7474
|
-
"8.0.40-bookworm",
|
|
7475
|
-
"8.0-debian",
|
|
7476
|
-
"8.0-bookworm",
|
|
7477
7711
|
"8.0.39-debian",
|
|
7478
7712
|
"8.0.39-bookworm",
|
|
7479
7713
|
"9.0.1-oraclelinux9",
|
|
@@ -7719,82 +7953,82 @@ var mysql = [
|
|
|
7719
7953
|
];
|
|
7720
7954
|
var postgresql = [
|
|
7721
7955
|
"latest",
|
|
7722
|
-
"
|
|
7723
|
-
"
|
|
7724
|
-
"
|
|
7725
|
-
"
|
|
7956
|
+
"bullseye",
|
|
7957
|
+
"bookworm",
|
|
7958
|
+
"17.2-bullseye",
|
|
7959
|
+
"17.2-bookworm",
|
|
7960
|
+
"17.2",
|
|
7961
|
+
"17-bullseye",
|
|
7962
|
+
"17-bookworm",
|
|
7963
|
+
"17",
|
|
7964
|
+
"16.6-bullseye",
|
|
7965
|
+
"16.6-bookworm",
|
|
7966
|
+
"16.6",
|
|
7967
|
+
"16-bullseye",
|
|
7968
|
+
"16-bookworm",
|
|
7969
|
+
"16",
|
|
7970
|
+
"15.10-bullseye",
|
|
7726
7971
|
"15.10-bookworm",
|
|
7727
7972
|
"15.10",
|
|
7973
|
+
"15-bullseye",
|
|
7728
7974
|
"15-bookworm",
|
|
7729
7975
|
"15",
|
|
7976
|
+
"14.15-bullseye",
|
|
7730
7977
|
"14.15-bookworm",
|
|
7731
|
-
"14.15-alpine3.20",
|
|
7732
|
-
"14.15-alpine",
|
|
7733
7978
|
"14.15",
|
|
7979
|
+
"14-bullseye",
|
|
7734
7980
|
"14-bookworm",
|
|
7735
|
-
"14-alpine3.20",
|
|
7736
|
-
"14-alpine",
|
|
7737
7981
|
"14",
|
|
7738
7982
|
"13.18-bullseye",
|
|
7739
7983
|
"13.18-bookworm",
|
|
7740
|
-
"13.18-alpine3.20",
|
|
7741
|
-
"13.18-alpine3.19",
|
|
7742
|
-
"13.18-alpine",
|
|
7743
7984
|
"13.18",
|
|
7744
7985
|
"13-bullseye",
|
|
7745
7986
|
"13-bookworm",
|
|
7987
|
+
"13",
|
|
7988
|
+
"12.22-bullseye",
|
|
7989
|
+
"12.22-bookworm",
|
|
7990
|
+
"12.22",
|
|
7991
|
+
"12-bullseye",
|
|
7992
|
+
"12-bookworm",
|
|
7993
|
+
"12",
|
|
7994
|
+
"14.15-alpine3.20",
|
|
7995
|
+
"14.15-alpine",
|
|
7996
|
+
"14-alpine3.20",
|
|
7997
|
+
"14-alpine",
|
|
7998
|
+
"13.18-alpine3.20",
|
|
7999
|
+
"13.18-alpine3.19",
|
|
8000
|
+
"13.18-alpine",
|
|
7746
8001
|
"13-alpine3.20",
|
|
7747
8002
|
"13-alpine3.19",
|
|
7748
8003
|
"13-alpine",
|
|
7749
|
-
"13",
|
|
7750
|
-
"12.22-bullseye",
|
|
7751
8004
|
"12.22-alpine3.20",
|
|
7752
8005
|
"12.22-alpine3.19",
|
|
7753
8006
|
"12.22-alpine",
|
|
7754
|
-
"12-bullseye",
|
|
7755
8007
|
"12-alpine3.20",
|
|
7756
8008
|
"12-alpine3.19",
|
|
7757
8009
|
"12-alpine",
|
|
7758
|
-
"bullseye",
|
|
7759
|
-
"bookworm",
|
|
7760
8010
|
"alpine3.20",
|
|
7761
8011
|
"alpine3.19",
|
|
7762
8012
|
"alpine",
|
|
7763
|
-
"17.2-bullseye",
|
|
7764
|
-
"17.2-bookworm",
|
|
7765
8013
|
"17.2-alpine3.20",
|
|
7766
8014
|
"17.2-alpine3.19",
|
|
7767
8015
|
"17.2-alpine",
|
|
7768
|
-
"17.2",
|
|
7769
|
-
"17-bullseye",
|
|
7770
|
-
"17-bookworm",
|
|
7771
8016
|
"17-alpine3.20",
|
|
7772
8017
|
"17-alpine3.19",
|
|
7773
8018
|
"17-alpine",
|
|
7774
|
-
"17",
|
|
7775
|
-
"16.6-bullseye",
|
|
7776
|
-
"16.6-bookworm",
|
|
7777
8019
|
"16.6-alpine3.20",
|
|
7778
8020
|
"16.6-alpine3.19",
|
|
7779
8021
|
"16.6-alpine",
|
|
7780
|
-
"16.6",
|
|
7781
|
-
"16-bullseye",
|
|
7782
|
-
"16-bookworm",
|
|
7783
8022
|
"16-alpine3.20",
|
|
7784
8023
|
"16-alpine3.19",
|
|
7785
8024
|
"16-alpine",
|
|
7786
|
-
"16",
|
|
7787
|
-
"15.10-bullseye",
|
|
7788
8025
|
"15.10-alpine3.20",
|
|
7789
8026
|
"15.10-alpine3.19",
|
|
7790
8027
|
"15.10-alpine",
|
|
7791
|
-
"15-bullseye",
|
|
7792
8028
|
"15-alpine3.20",
|
|
7793
8029
|
"15-alpine3.19",
|
|
7794
8030
|
"15-alpine",
|
|
7795
|
-
"14.15-bullseye",
|
|
7796
8031
|
"14.15-alpine3.19",
|
|
7797
|
-
"14-bullseye",
|
|
7798
8032
|
"14-alpine3.19",
|
|
7799
8033
|
"12.21-bookworm",
|
|
7800
8034
|
"12.21",
|
|
@@ -9315,36 +9549,6 @@ const copy = async (sourcePath, destinationPath) => {
|
|
|
9315
9549
|
});
|
|
9316
9550
|
};
|
|
9317
9551
|
|
|
9318
|
-
const isOfType = (obj, property) => {
|
|
9319
|
-
return obj !== null && typeof obj === 'object' && property in obj;
|
|
9320
|
-
};
|
|
9321
|
-
|
|
9322
|
-
const uploadToUPM = async (baseUrl, path, username, password, verbose = true) => {
|
|
9323
|
-
const credentials = username && password ? Buffer.from(`${username}:${password}`).toString('base64') : null;
|
|
9324
|
-
const response = await axios.get(`${baseUrl}/rest/plugins/1.0/?os_authType=basic`, credentials ? {
|
|
9325
|
-
headers: { 'Authorization': `Basic ${credentials}` }
|
|
9326
|
-
} : undefined).catch(err => {
|
|
9327
|
-
verbose && console.log('Failed to upload plugin archive file to UPM, unable to retrieve token', err);
|
|
9328
|
-
return null;
|
|
9329
|
-
});
|
|
9330
|
-
if (response) {
|
|
9331
|
-
const token = response.headers['upm-token'];
|
|
9332
|
-
if (token) {
|
|
9333
|
-
const formData = new FormData();
|
|
9334
|
-
formData.append('plugin', createReadStream(path));
|
|
9335
|
-
await axios.post(`${baseUrl}/rest/plugins/1.0/?token=${token}`, formData, { headers: {
|
|
9336
|
-
...formData.getHeaders(),
|
|
9337
|
-
...credentials ? { 'Authorization': `Basic ${credentials}` } : {}
|
|
9338
|
-
} })
|
|
9339
|
-
.then(() => verbose && console.log('Finished uploading plugin archive to UPM'))
|
|
9340
|
-
.catch(err => verbose && console.log('Failed to upload plugin archive file to UPM', err));
|
|
9341
|
-
}
|
|
9342
|
-
else {
|
|
9343
|
-
verbose && console.log('Failed to upload plugin archive file to UPM, unable to retrieve token from headers:', JSON.stringify(response.headers, null, 2));
|
|
9344
|
-
}
|
|
9345
|
-
}
|
|
9346
|
-
};
|
|
9347
|
-
|
|
9348
9552
|
const Installer = async (name, path, options) => {
|
|
9349
9553
|
const containerIds = await getRunningContainerIds(name);
|
|
9350
9554
|
if (!containerIds || containerIds.length <= 0) {
|
|
@@ -9359,7 +9563,7 @@ const Installer = async (name, path, options) => {
|
|
|
9359
9563
|
if (containerId) {
|
|
9360
9564
|
if (options.obr) {
|
|
9361
9565
|
console.log(`Found updated plugin, uploading it to UPM on running instances of ${name}`);
|
|
9362
|
-
const hostUrl =
|
|
9566
|
+
const hostUrl = options.port ? `localhost:${options.port}` : `localhost`;
|
|
9363
9567
|
const baseUrl = options.username && options.password ? `http://${options.username}:${options.password}@${hostUrl}` : `http://${hostUrl}`;
|
|
9364
9568
|
uploadToUPM(resolve(options.cwd || cwd(), path), baseUrl);
|
|
9365
9569
|
}
|
|
@@ -9444,33 +9648,44 @@ const Command = () => {
|
|
|
9444
9648
|
cwd: options.cwd,
|
|
9445
9649
|
profiles: options.activateProfiles?.split(',') || []
|
|
9446
9650
|
});
|
|
9447
|
-
if (
|
|
9448
|
-
|
|
9449
|
-
|
|
9450
|
-
|
|
9451
|
-
|
|
9452
|
-
|
|
9453
|
-
|
|
9454
|
-
|
|
9455
|
-
if (!version) {
|
|
9456
|
-
throw new Error('Failed to determine version from AMPS and no product version provided (--tag)');
|
|
9457
|
-
}
|
|
9458
|
-
else if (!versions[name].includes(version)) {
|
|
9459
|
-
throw new Error(`Product version '${version}' is invalid. Allowed choices are ${versions[name].join(', ')}.`);
|
|
9460
|
-
}
|
|
9461
|
-
if (options.obr && !options.username) {
|
|
9462
|
-
throw new InvalidOptionArgumentError('Missing argument "--username", required for installing OBR artifacts');
|
|
9463
|
-
}
|
|
9464
|
-
else if (options.obr && !options.password) {
|
|
9465
|
-
throw new InvalidOptionArgumentError('Missing argument "--password", required for installing OBR artifacts');
|
|
9651
|
+
if (options.mpac) {
|
|
9652
|
+
if (!options.baseUrl) {
|
|
9653
|
+
throw new InvalidOptionArgumentError('Missing argument "--baseUrl", required for installing from the Atlassian Marketplace');
|
|
9654
|
+
}
|
|
9655
|
+
else if (!options.appKey) {
|
|
9656
|
+
throw new InvalidOptionArgumentError('Missing argument "--appKey", required for installing from the Atlassian Marketplace');
|
|
9657
|
+
}
|
|
9658
|
+
await installApp(options.baseUrl, options.appKey, undefined, true);
|
|
9466
9659
|
}
|
|
9467
|
-
|
|
9468
|
-
|
|
9660
|
+
else {
|
|
9661
|
+
if (!amps.isAtlassianPlugin()) {
|
|
9662
|
+
throw new Error('Unable to find an Atlassian Plugin project in the current directory 🤔');
|
|
9663
|
+
}
|
|
9664
|
+
const name = amps.getApplication();
|
|
9665
|
+
if (!name) {
|
|
9666
|
+
throw new Error('The Atlassian Plugin project does not contain an AMPS configuration, unable to detect product 😰');
|
|
9667
|
+
}
|
|
9668
|
+
const version = amps.getApplicationVersion();
|
|
9669
|
+
if (!version) {
|
|
9670
|
+
throw new Error('Failed to determine version from AMPS and no product version provided (--tag)');
|
|
9671
|
+
}
|
|
9672
|
+
else if (!versions[name].includes(version)) {
|
|
9673
|
+
throw new Error(`Product version '${version}' is invalid. Allowed choices are ${versions[name].join(', ')}.`);
|
|
9674
|
+
}
|
|
9675
|
+
if (options.obr && !options.username) {
|
|
9676
|
+
throw new InvalidOptionArgumentError('Missing argument "--username", required for installing OBR artifacts');
|
|
9677
|
+
}
|
|
9678
|
+
else if (options.obr && !options.password) {
|
|
9679
|
+
throw new InvalidOptionArgumentError('Missing argument "--password", required for installing OBR artifacts');
|
|
9680
|
+
}
|
|
9681
|
+
if (options.watch) {
|
|
9682
|
+
quickReload = FileWatcher(name, options, [], true);
|
|
9683
|
+
}
|
|
9684
|
+
const outputDirectory = options.outputDirectory || 'target';
|
|
9685
|
+
const deliverableExtension = options.obr ? 'obr' : 'jar';
|
|
9686
|
+
const files = await glob(`${outputDirectory}/*.${deliverableExtension}`, { cwd: resolve(options.cwd || cwd()) });
|
|
9687
|
+
await Promise.all(files.map(path => Installer(name, path, options)));
|
|
9469
9688
|
}
|
|
9470
|
-
const outputDirectory = options.outputDirectory || 'target';
|
|
9471
|
-
const deliverableExtension = options.obr ? 'obr' : 'jar';
|
|
9472
|
-
const files = await glob(`${outputDirectory}/*.${deliverableExtension}`, { cwd: resolve(options.cwd || cwd()) });
|
|
9473
|
-
await Promise.all(files.map(path => Installer(name, path, options)));
|
|
9474
9689
|
},
|
|
9475
9690
|
errorHandler: async () => {
|
|
9476
9691
|
if (quickReload) {
|
|
@@ -9488,10 +9703,13 @@ If there is a running instance, it will try to install the plugin using QuickRel
|
|
|
9488
9703
|
.showHelpAfterError(true)
|
|
9489
9704
|
.addOption(new Option('-w, --watch', 'Watch for filesystem changes to JAR or OBR files in the current working directory').default(false))
|
|
9490
9705
|
.addOption(new Option('-o, --outputDirectory <directory>', 'Output directory where to look for generated JAR or OBR files (defaults to `target`)'))
|
|
9491
|
-
.addOption(new Option('--obr', 'Upload generated OBR file instead of JAR file when installing the app
|
|
9706
|
+
.addOption(new Option('--obr', 'Upload generated OBR file instead of JAR file when installing the app').default(false))
|
|
9492
9707
|
.addOption(new Option('--username <username>', 'The username of the administrator (required with --obr)'))
|
|
9493
9708
|
.addOption(new Option('--password <password>', 'The password of the administrator (required with --obr)'))
|
|
9494
9709
|
.addOption(new Option('-P, --activate-profiles <arg>', 'Comma-delimited list of profiles to activate'))
|
|
9710
|
+
.addOption(new Option('--mpac', 'Install the app from the Atlassian Marketplace'))
|
|
9711
|
+
.addOption(new Option('--baseUrl <url>', 'URL of the instance (required with --mpac)'))
|
|
9712
|
+
.addOption(new Option('--appKey <key>', 'The key of the app to be installed (required with --mpac)'))
|
|
9495
9713
|
.addOption(new Option('--cwd <directory>', 'Specify the working directory where to find the AMPS configuration'))
|
|
9496
9714
|
.action(options => ActionHandler(program, Command(), { ...options, install: true }));
|
|
9497
9715
|
program.parseAsync(process.argv).catch(() => gracefulExit(1));
|
|
@@ -9499,4 +9717,4 @@ process.on('SIGINT', () => {
|
|
|
9499
9717
|
console.log(`Received term signal, trying to stop gracefully 💪`);
|
|
9500
9718
|
gracefulExit(1);
|
|
9501
9719
|
});
|
|
9502
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9BY3Rpb25IYW5kbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvRGF0YWJhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9BcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvYW1wcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvaXNSZWN1cnNpdmVCdWlsZC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQ3VzdG9tQnVpbGRlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZG9ja2VyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9pc09mVHlwZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdXBtLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9JbnN0YWxsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0ZpbGVXYXRjaGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9pbnN0YWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzeW5jRXhpdEhvb2ssIGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmV4cG9ydCBjb25zdCBBY3Rpb25IYW5kbGVyID0gYXN5bmMgKHByb2dyYW0sIHsgYWN0aW9uLCBlcnJvckhhbmRsZXIgfSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IG9wcyA9IG9wdGlvbnMgfHwgcHJvZ3JhbS5vcHRzKCk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIGFzeW5jRXhpdEhvb2soYXN5bmMgKGNvZGUpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXJyb3JIYW5kbGVyKG9wcykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZS50cmltKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHJlamVjdGluZyB0aGUgcHJvbWlzZSB0byBhdm9pZCB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gXCJDYWxsaW5nIHByb2Nlc3MuZXhpdFwiIGxvZyBtZXNzYWdlIGZyb20gZXhpdC1ob29rXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBlcnI7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICB3YWl0OiA2MCAqIDEgKiAxMDAwXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ob3BzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgwKTtcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlzc3Vlcy5mb3JFYWNoKGlzc3VlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBVbmFibGUgdG8gcGFyc2Ugb3B0aW9uICR7aXNzdWUucGF0aC5qb2luKCcsJyl9OiAke2lzc3VlLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UsXG4gICAgICAgICAgICAvLyB3ZSBjYW4gYXNzdW1lIGEgY2xlYW4gZXhpdFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyA9IHouZW51bShbXG4gICAgJ3Bvc3RncmVzcWwnLFxuICAgICdteXNxbCcsXG4gICAgJ21zc3FsJ1xuXSk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkTVNTUUxFZGl0aW9ucyA9IHouZW51bShbXG4gICAgJ0RldmVsb3BlcicsXG4gICAgJ0V4cHJlc3MnLFxuICAgICdTdGFuZGFyZCcsXG4gICAgJ0VudGVycHJpc2UnLFxuICAgICdFbnRlcnByaXNlQ29yZSdcbl0pO1xuZXhwb3J0IGNvbnN0IERhdGFiYXNlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLFxuICAgIGRhdGFiYXNlOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgdmVyYm9zZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpXG59KTtcbmV4cG9ydCBjb25zdCBQb3N0Z3JlU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoNTQzMiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKS5kZWZhdWx0KCdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTXlTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgzMzA2KSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpLmRlZmF1bHQoJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNU1NRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGVkaXRpb246IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuZGVmYXVsdCgnRGV2ZWxvcGVyJyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMTQzMyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ3NhJykuZGVmYXVsdCgnc2EnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdEYXRhQ2VudGVyRFghJyksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpLmRlZmF1bHQoJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJylcbn0pO1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgPSB6LmVudW0oW1xuICAgICdqaXJhJyxcbiAgICAnY29uZmx1ZW5jZScsXG4gICAgJ2JpdGJ1Y2tldCcsXG4gICAgJ2JhbWJvbydcbl0pO1xuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMsXG4gICAgdGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGRhdGFiYXNlOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuZGVmYXVsdCgncG9zdGdyZXNxbCcpLFxuICAgIGRhdGFiYXNlVGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKS5kZWZhdWx0KCc4MCcpLFxuICAgIGNvbnRleHRQYXRoOiB6LnN0cmluZygpLFxuICAgIHhtczogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHhteDogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHdhdGNoOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBleHQ6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgaW5zdGFsbDogei5ib29sZWFuKCksXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB6LnN0cmluZygpLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHouc3RyaW5nKCksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkZWJ1Zzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbnRleHRQYXRoOiB0cnVlLFxuICAgIGV4dDogdHJ1ZSxcbiAgICBpbnN0YWxsOiB0cnVlLFxuICAgIG91dHB1dERpcmVjdG9yeTogdHJ1ZSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyBET01QYXJzZXIsIFhNTFNlcmlhbGl6ZXIgfSBmcm9tICdAeG1sZG9tL3htbGRvbSc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHhwYXRoIGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjbGFzcyBBTVBTIHtcbiAgICBvcHRpb25zO1xuICAgIG1hdmVuID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge1xuICAgICAgICBwcm9maWxlczogW11cbiAgICB9KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBzcGF3bignbXZuJywgWydwYWNrYWdlJywgLi4uYXJnc10sIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIHRoaXMubWF2ZW4ub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8IGNvZGUgPT09IDEzMCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBNYXZlbiBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0F0bGFzc2lhblBsdWdpbiA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwYWNrYWdpbmdcXCddJyk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZXMuc29tZShpdGVtID0+IGl0ZW0udGV4dENvbnRlbnQgPT09ICdhdGxhc3NpYW4tcGx1Z2luJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBnZXRBcHBsaWNhdGlvblZlcnNpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdmVyc2lvbl0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwnZ3JvdXBJZFxcJyBhbmQgdGV4dCgpPVxcJ2NvbS5hdGxhc3NpYW4ubWF2ZW4ucGx1Z2luc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCdhbXBzLW1hdmVuLXBsdWdpbicgPT09IHBsdWdpbj8uYXJ0aWZhY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvZHVjdCB9ID0gY29uZmlndXJhdGlvbj8ucHJvZHVjdHMgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwbHVnaW4/LmFydGlmYWN0SWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRWZXJzaW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28pKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRWZXJzaW9uKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocGx1Z2luLmNvbmZpZ3VyYXRpb24ucHJvZHVjdFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykgPyBjb25maWd1cmF0aW9uPy5wcm9kdWN0c1swXSA6IGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMucHJvZHVjdDtcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRvUHJvcGVydHlSZXBsYWNlbWVudCh2YWx1ZSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJvZmlsZSwgcmVwbGFjZSBwcm9maWxlIHByb3BlcnRpZXMgZmlyc3QgYXMgdGhleSB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgY29uc3QgcHJvZmlsZVByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvZmlsZVByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3Byb3BlcnRpZXNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gdGhpcy50b09iamVjdChub2RlKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gcmVzdWx0W2tleV0gPSB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXROb2RlcyhleHByZXNzaW9uLCBzaW5nbGUpIHtcbiAgICAgICAgY29uc3QgcG9tRmlsZVBhdGggPSBqb2luKHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCAnLi9wb20ueG1sJyk7XG4gICAgICAgIGNvbnN0IGhhc1BvbUZpbGUgPSBleGlzdHNTeW5jKHBvbUZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGhhc1BvbUZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHhtbCA9IHJlYWRGaWxlU3luYyhwb21GaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoeG1sLCAndGV4dC94bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2luZ2xlID8geHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgdHJ1ZSkgOiB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0b09iamVjdChub2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnROb2RlIH0gPSBub2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBwYXJlbnROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZVBhcmVudE5vZGUgPSB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKCdwcm9maWxlJywgbm9kZSk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVOb2RlID0gcHJvZmlsZVBhcmVudE5vZGUgPyB0aGlzLnRvT2JqZWN0KHByb2ZpbGVQYXJlbnROb2RlKSA6IG51bGw7XG4gICAgICAgIGlmICghcHJvZmlsZU5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb2ZpbGVOb2RlICYmIChwcm9maWxlTm9kZS5hY3RpdmVCeURlZmF1bHQgPT09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnMucHJvZmlsZXMuaW5jbHVkZXMocHJvZmlsZU5vZGUucHJvZmlsZS5pZCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBpc1JlY3Vyc2l2ZUJ1aWxkID0gKGxhc3RCdWlsZENvbXBsZXRlZCkgPT4gbGFzdEJ1aWxkQ29tcGxldGVkID4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gNSAqIDEwMDApO1xuIiwiZXhwb3J0IGNvbnN0IHNob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcgPSAob3V0cHV0RGlyZWN0b3J5KSA9PiB7XG4gICAgY29uc29sZS5sb2coYFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZWN1cnNpdmUgYnVpbGQgdHJpZ2dlciBkZXRlY3RlZC4gVGhlIGxhc3QgYnVpbGQgY29tcGxldGVkIGxhc3QgdGhhbiA1IHNlY29uZHMgYWdvXG5UaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBidWlsZCBjaGFuZ2VzIGZpbGVzIG91dHNpZGUgb2YgdGhlIG91dHB1dCBkaXJlY3RvcnlcbkFsdGVybmF0aXZlbHksIE1hdmVuIGlzIHVzaW5nIGEgZGlmZmVyZW50IG91dHB1dCBkaXJlY3RvcnkgdGhhbiBjb25maWd1cmVkOlxuJyR7b3V0cHV0RGlyZWN0b3J5fSdcblxuUGxlYXNlIG1ha2Ugc3VyZSB0byBjaGVjayB5b3VyIGJ1aWxkIHByb2Nlc3MgYW5kL29yIHNwZWNpZnkgYSBkaWZmZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB1c2luZyB0aGUgJy1vJyBvcHRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PWApO1xufTtcbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmV4cG9ydCBjbGFzcyBDdXN0b21CdWlsZGVyIHtcbiAgICBvcHRpb25zO1xuICAgIHByb2MgPSBudWxsO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5wcm9jLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBidWlsZCBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9jKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5wcm9jLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBidWlsZCBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXhlY1N5bmModGhpcy5vcHRpb25zLmNtZCwgeyBjd2Q6IHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEJ1aWxkIGV4aXRlZCB3aXRoIGNvZGUgJHtzdGF0dXN9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IERvY2tlcm9kZSBmcm9tICdkb2NrZXJvZGUnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5jb25zdCBkb2NrZXIgPSBuZXcgRG9ja2Vyb2RlKCk7XG5leHBvcnQgY29uc3QgZ2V0UnVubmluZ0NvbnRhaW5lcklkcyA9IGFzeW5jIChhcHBsaWNhdGlvbikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBhd2FpdCBkb2NrZXIubGlzdENvbnRhaW5lcnMoeyBmaWx0ZXJzOiB7XG4gICAgICAgICAgICBzdGF0dXM6IFsncnVubmluZyddLFxuICAgICAgICAgICAgbGFiZWw6IFtgY29tLmRvY2tlci5jb21wb3NlLnNlcnZpY2U9JHthcHBsaWNhdGlvbn1gXVxuICAgICAgICB9IH0pO1xuICAgIHJldHVybiBjb250YWluZXJzLm1hcChpdGVtID0+IGl0ZW0uSWQpO1xufTtcbmV4cG9ydCBjb25zdCBjb3B5ID0gYXN5bmMgKHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2NwJywgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoXSwgeyBjd2Q6IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICBkb2NrZXIub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgIH0pO1xufTtcbiIsImV4cG9ydCBjb25zdCBpc09mVHlwZSA9IChvYmosIHByb3BlcnR5KSA9PiB7XG4gICAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBwcm9wZXJ0eSBpbiBvYmo7XG59O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBGb3JtRGF0YSBmcm9tICdmb3JtLWRhdGEnO1xuaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSB9IGZyb20gJ2ZzJztcbmV4cG9ydCBjb25zdCB1cGxvYWRUb1VQTSA9IGFzeW5jIChiYXNlVXJsLCBwYXRoLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8/b3NfYXV0aFR5cGU9YmFzaWNgLCBjcmVkZW50aWFscyA/IHtcbiAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgIH0gOiB1bmRlZmluZWQpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgcGx1Z2luIGFyY2hpdmUgZmlsZSB0byBVUE0sIHVuYWJsZSB0byByZXRyaWV2ZSB0b2tlbicsIGVycik7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHJlc3BvbnNlLmhlYWRlcnNbJ3VwbS10b2tlbiddO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3BsdWdpbicsIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCkpO1xuICAgICAgICAgICAgYXdhaXQgYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGaW5pc2hlZCB1cGxvYWRpbmcgcGx1Z2luIGFyY2hpdmUgdG8gVVBNJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5leHBvcnQgY29uc3Qgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkID0gYXN5bmMgKGFwcEtleSwgYmFzZVVybCwgdXNlcm5hbWUsIHBhc3N3b3JkLCB2ZXJib3NlID0gdHJ1ZSkgPT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdXNlcm5hbWUgJiYgcGFzc3dvcmQgPyBCdWZmZXIuZnJvbShgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0JykgOiBudWxsO1xuICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHBsdWdpbiB0byBiZWNvbWUgZW5hYmxlZCcpO1xuICAgIGxldCBpc0VuYWJsZWQgPSBmYWxzZTtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIHdoaWxlICghaXNFbmFibGVkICYmIGNvdW50IDwgMTIwKSB7XG4gICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coYFdhaXRpbmcgZm9yIHBsdWdpbiB0byBiZWNvbWUgZW5hYmxlZC4uLiAke2NvdW50fXNgKTtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5YCwgY3JlZGVudGlhbHMgPyB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgICAgIH0gOiB1bmRlZmluZWQpLmNhdGNoKCgpID0+ICh7IGRhdGE6IHsgZW5hYmxlZDogZmFsc2UgfSB9KSk7XG4gICAgICAgIGlzRW5hYmxlZCA9IGRhdGE/LmVuYWJsZWQ7XG4gICAgICAgIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBpc0VuYWJsZWQ7XG59O1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyTGljZW5zZSA9IGFzeW5jIChhcHBLZXksIGxpY2Vuc2UsIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLyR7YXBwS2V5fS1rZXkvbGljZW5zZWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ1gtQXRsYXNzaWFuLVRva2VuJzogJ25vLWNoZWNrJyxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgLi4uY3JlZGVudGlhbHMgPyB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9IDoge31cbiAgICAgICAgfVxuICAgIH0pLmNhdGNoKCgpID0+ICh7IGRhdGE6IHt9IH0pKTtcbiAgICBjb25zdCB7IHJhd0xpY2Vuc2UgfSA9IGRhdGE7XG4gICAgaWYgKCFyYXdMaWNlbnNlIHx8IHJhd0xpY2Vuc2UgIT09IGxpY2Vuc2UpIHtcbiAgICAgICAgYXdhaXQgYXhpb3MucHV0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleS9saWNlbnNlYCwgYHsgXCJyYXdMaWNlbnNlXCI6IFwiJHtsaWNlbnNlfVwiIH1gLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ1gtQXRsYXNzaWFuLVRva2VuJzogJ25vLWNoZWNrJyxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJykpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBEb2NrZXIgZnJvbSAnLi9kb2NrZXInO1xuaW1wb3J0IHsgaXNPZlR5cGUgfSBmcm9tICcuL2lzT2ZUeXBlJztcbmltcG9ydCB7IHVwbG9hZFRvVVBNIH0gZnJvbSAnLi91cG0nO1xuZXhwb3J0IGNvbnN0IEluc3RhbGxlciA9IGFzeW5jIChuYW1lLCBwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVySWRzID0gYXdhaXQgRG9ja2VyLmdldFJ1bm5pbmdDb250YWluZXJJZHMobmFtZSk7XG4gICAgaWYgKCFjb250YWluZXJJZHMgfHwgY29udGFpbmVySWRzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGVyZSBhcmUgbm8gcnVubmluZyBpbnN0YW5jZSBvZiAke25hbWV9LCB1bmFibGUgdG8gaW5zdGFsbCBwbHVnaW4g8J+klGApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnRhaW5lcklkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGVyZSBhcmUgbXVsdHBsZSBydW5uaW5nIGluc3RhbmNlIG9mICR7bmFtZX0sIHVuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggb25lIHRvIHVzZSDwn6SUYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVySWQgPSBjb250YWluZXJJZHNbMF07XG4gICAgaWYgKGNvbnRhaW5lcklkKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm9icikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHVwZGF0ZWQgcGx1Z2luLCB1cGxvYWRpbmcgaXQgdG8gVVBNIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IGhvc3RVcmwgPSBpc09mVHlwZShvcHRpb25zLCAncG9ydCcpID8gYGxvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gIDogYGxvY2FsaG9zdGA7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gb3B0aW9ucy51c2VybmFtZSAmJiBvcHRpb25zLnBhc3N3b3JkID8gYGh0dHA6Ly8ke29wdGlvbnMudXNlcm5hbWV9OiR7b3B0aW9ucy5wYXNzd29yZH1AJHtob3N0VXJsfWAgOiBgaHR0cDovLyR7aG9zdFVybH1gO1xuICAgICAgICAgICAgdXBsb2FkVG9VUE0ocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBiYXNlVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFF1aWNrUmVsb2FkIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IERvY2tlci5jb3B5KHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYCR7Y29udGFpbmVySWR9Oi9vcHQvcXVpY2tyZWxvYWQvYClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFF1aWNrUmVsb2FkJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFF1aWNrUmVsb2FkJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICdjaG9raWRhcic7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGlzUmVjdXJzaXZlQnVpbGQgfSBmcm9tICcuLi9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQnO1xuaW1wb3J0IHsgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyc7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9JbnN0YWxsZXInO1xuZXhwb3J0IGNvbnN0IEZpbGVXYXRjaGVyID0gKG5hbWUsIG9wdGlvbnMsIG1hdmVuT3B0cywgaW5zdGFsbE9ubHkgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeSB8fCAndGFyZ2V0JztcbiAgICBjb25zdCBwYXR0ZXJucyA9IG9wdGlvbnMuZXh0IHx8IFsnKiovKiddO1xuICAgIGNvbnNvbGUubG9nKGBXYXRjaGluZyBmaWxlc3lzdGVtIGZvciBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcyAoJHtwYXR0ZXJucy5qb2luKCcsICcpfSlgKTtcbiAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgfSk7XG4gICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICcub2JyJyA6ICcuamFyJztcbiAgICByZXR1cm4gd2F0Y2gocGF0dGVybnMsIHtcbiAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgaW50ZXJ2YWw6IDIgKiAxMDAwLFxuICAgICAgICBiaW5hcnlJbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGF3YWl0V3JpdGVGaW5pc2g6IHRydWUsXG4gICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgIGF0b21pYzogdHJ1ZVxuICAgIH0pLm9uKCdjaGFuZ2UnLCBhc3luYyAocGF0aCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsICYmIHBhdGguc3RhcnRzV2l0aChvdXRwdXREaXJlY3RvcnkpICYmIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChkZWxpdmVyYWJsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGF3YWl0IEluc3RhbGxlcihuYW1lLCBwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgIWluc3RhbGxPbmx5KSB7XG4gICAgICAgICAgICBpZiAoaXNSZWN1cnNpdmVCdWlsZChsYXN0QnVpbGRDb21wbGV0ZWQpKSB7XG4gICAgICAgICAgICAgICAgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyhvdXRwdXREaXJlY3RvcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RldGVjdGVkIGZpbGUgY2hhbmdlLCByZWJ1aWxkaW5nIEF0bGFzaWFuIERhdGEgQ2VudGVyIHBsdWdpbicpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGFtcHMuYnVpbGQobWF2ZW5PcHRzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBidWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkqpgKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBidWlsZCBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfmLBgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IEN1c3RvbUJ1aWxkZXIoeyBjbWQ6IG9wdGlvbnMuZXhlYywgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdEJ1aWxkQ29tcGxldGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBDb21tYW5kIGFzIENvbW1hbmRlciwgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZ2xvYiB9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGVscGVycy9BY3Rpb25IYW5kbGVyJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuLi9oZWxwZXJzL2FtcHMnO1xuaW1wb3J0IHsgRmlsZVdhdGNoZXIgfSBmcm9tICcuLi9oZWxwZXJzL0ZpbGVXYXRjaGVyJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBJbnN0YWxsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0luc3RhbGxlcic7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgcXVpY2tSZWxvYWQgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgZG9lcyBub3QgY29udGFpbiBhbiBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZXRlY3QgcHJvZHVjdCDwn5iwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gYW1wcy5nZXRBcHBsaWNhdGlvblZlcnNpb24oKTtcbiAgICAgICAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSB2ZXJzaW9uIGZyb20gQU1QUyBhbmQgbm8gcHJvZHVjdCB2ZXJzaW9uIHByb3ZpZGVkICgtLXRhZyknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF2ZXJzaW9uc1tuYW1lXS5pbmNsdWRlcyh2ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZHVjdCB2ZXJzaW9uICcke3ZlcnNpb259JyBpcyBpbnZhbGlkLiBBbGxvd2VkIGNob2ljZXMgYXJlICR7dmVyc2lvbnNbbmFtZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXCItLXVzZXJuYW1lXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIE9CUiBhcnRpZmFjdHMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMub2JyICYmICFvcHRpb25zLnBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1wYXNzd29yZFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgIHF1aWNrUmVsb2FkID0gRmlsZVdhdGNoZXIobmFtZSwgb3B0aW9ucywgW10sIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb3V0cHV0RGlyZWN0b3J5ID0gb3B0aW9ucy5vdXRwdXREaXJlY3RvcnkgfHwgJ3RhcmdldCc7XG4gICAgICAgICAgICBjb25zdCBkZWxpdmVyYWJsZUV4dGVuc2lvbiA9IG9wdGlvbnMub2JyID8gJ29icicgOiAnamFyJztcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYihgJHtvdXRwdXREaXJlY3Rvcnl9LyouJHtkZWxpdmVyYWJsZUV4dGVuc2lvbn1gLCB7IGN3ZDogcmVzb2x2ZShvcHRpb25zLmN3ZCB8fCBjd2QoKSkgfSk7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAocGF0aCA9PiBJbnN0YWxsZXIobmFtZSwgcGF0aCwgb3B0aW9ucykpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAocXVpY2tSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgZmlsZXN5c3RlbSB3YXRjaGVyLi4uIOKPs2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHF1aWNrUmVsb2FkLmNsb3NlKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IHN0b3BwZWQgYWxsIHJ1bm5pbmcgcHJvY2Vzc2VzIPCfkqpgKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IGluc3RhbGwnKVxuICAgIC5kZXNjcmlwdGlvbihgSW5zdGFsbCB0aGUgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiB1c2luZyB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbklmIHRoZXJlIGlzIGEgcnVubmluZyBpbnN0YW5jZSwgaXQgd2lsbCB0cnkgdG8gaW5zdGFsbCB0aGUgcGx1Z2luIHVzaW5nIFF1aWNrUmVsb2FkIG9yIHRoZSBVUE0gKGZvciBPQlIpLmApXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXcsIC0td2F0Y2gnLCAnV2F0Y2ggZm9yIGZpbGVzeXN0ZW0gY2hhbmdlcyB0byBKQVIgb3IgT0JSIGZpbGVzIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctbywgLS1vdXRwdXREaXJlY3RvcnkgPGRpcmVjdG9yeT4nLCAnT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0byBsb29rIGZvciBnZW5lcmF0ZWQgSkFSIG9yIE9CUiBmaWxlcyAoZGVmYXVsdHMgdG8gYHRhcmdldGApJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLW9icicsICdVcGxvYWQgZ2VuZXJhdGVkIE9CUiBmaWxlIGluc3RlYWQgb2YgSkFSIGZpbGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBhcHAgKG9ubHkgYXZhaWxhYmxlIHdpdGggLS1pbnN0YWxsKScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS11c2VybmFtZSA8dXNlcm5hbWU+JywgJ1RoZSB1c2VybmFtZSBvZiB0aGUgYWRtaW5pc3RyYXRvciAocmVxdWlyZWQgd2l0aCAtLW9iciknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdUaGUgcGFzc3dvcmQgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgQU1QUyBjb25maWd1cmF0aW9uJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIGluc3RhbGw6IHRydWUgfSkpO1xucHJvZ3JhbS5wYXJzZUFzeW5jKHByb2Nlc3MuYXJndikuY2F0Y2goKCkgPT4gZ3JhY2VmdWxFeGl0KDEpKTtcbnByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgdGVybSBzaWduYWwsIHRyeWluZyB0byBzdG9wIGdyYWNlZnVsbHkg8J+SqmApO1xuICAgIGdyYWNlZnVsRXhpdCgxKTtcbn0pO1xuIl0sIm5hbWVzIjpbInZlcnNpb25zIiwiRG9ja2VyLmdldFJ1bm5pbmdDb250YWluZXJJZHMiLCJyZXNvbHZlUGF0aCIsIkRvY2tlci5jb3B5IiwiQ29tbWFuZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLE9BQU8sS0FBSztBQUNuRixJQUFJLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSztBQUNyQyxRQUFRLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUM5QixRQUFRLGFBQWEsQ0FBQyxPQUFPLElBQUksS0FBSztBQUN0QyxZQUFZLElBQUk7QUFDaEIsZ0JBQWdCLElBQUksSUFBSSxLQUFLLENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
9720
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9saWNlbmNlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdXBtLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXB0L2hlbHBlcnMvaW5zdGFsbEFwcC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvSW5zdGFsbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9GaWxlV2F0Y2hlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGguanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvY29tbWFuZHMvaW5zdGFsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSAnZnMnO1xuZXhwb3J0IGNvbnN0IHVwbG9hZFRvVVBNID0gYXN5bmMgKGJhc2VVcmwsIHBhdGgsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz9vc19hdXRoVHlwZT1iYXNpY2AsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgfSA6IHVuZGVmaW5lZCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTSwgdW5hYmxlIHRvIHJldHJpZXZlIHRva2VuJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2UuaGVhZGVyc1sndXBtLXRva2VuJ107XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGx1Z2luJywgY3JlYXRlUmVhZFN0cmVhbShwYXRoKSk7XG4gICAgICAgICAgICBhd2FpdCBheGlvcy5wb3N0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvP3Rva2VuPSR7dG9rZW59YCwgZm9ybURhdGEsIHsgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtRGF0YS5nZXRIZWFkZXJzKCksXG4gICAgICAgICAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgICAgICAgICAgfSB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZpbmlzaGVkIHVwbG9hZGluZyBwbHVnaW4gYXJjaGl2ZSB0byBVUE0nKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgcGx1Z2luIGFyY2hpdmUgZmlsZSB0byBVUE0nLCBlcnIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgcGx1Z2luIGFyY2hpdmUgZmlsZSB0byBVUE0sIHVuYWJsZSB0byByZXRyaWV2ZSB0b2tlbiBmcm9tIGhlYWRlcnM6JywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuaGVhZGVycywgbnVsbCwgMikpO1xuICAgICAgICB9XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCB3YWl0Rm9yUGx1Z2luVG9CZUVuYWJsZWQgPSBhc3luYyAoYXBwS2V5LCBiYXNlVXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgcGx1Z2luIHRvIGJlY29tZSBlbmFibGVkJyk7XG4gICAgbGV0IGlzRW5hYmxlZCA9IGZhbHNlO1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgd2hpbGUgKCFpc0VuYWJsZWQgJiYgY291bnQgPCAzMDApIHtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgcGx1Z2luIHRvIGJlY29tZSBlbmFibGVkLi4uICR7Y291bnR9c2ApO1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLyR7YXBwS2V5fS1rZXlgLCBjcmVkZW50aWFscyA/IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH1cbiAgICAgICAgfSA6IHVuZGVmaW5lZCkuY2F0Y2goKCkgPT4gKHsgZGF0YTogeyBlbmFibGVkOiBmYWxzZSB9IH0pKTtcbiAgICAgICAgaXNFbmFibGVkID0gZGF0YT8uZW5hYmxlZDtcbiAgICAgICAgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGlzRW5hYmxlZDtcbn07XG5leHBvcnQgY29uc3QgcmVnaXN0ZXJMaWNlbnNlID0gYXN5bmMgKGFwcEtleSwgbGljZW5zZSwgYmFzZVVybCwgdXNlcm5hbWUsIHBhc3N3b3JkLCB2ZXJib3NlID0gdHJ1ZSkgPT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdXNlcm5hbWUgJiYgcGFzc3dvcmQgPyBCdWZmZXIuZnJvbShgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0JykgOiBudWxsO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleS9saWNlbnNlYCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nOiAnbm8tY2hlY2snLFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi92bmQuYXRsLnBsdWdpbnMranNvbicsXG4gICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICB9XG4gICAgfSkuY2F0Y2goKCkgPT4gKHsgZGF0YToge30gfSkpO1xuICAgIGNvbnN0IHsgcmF3TGljZW5zZSB9ID0gZGF0YTtcbiAgICBpZiAoIXJhd0xpY2Vuc2UgfHwgcmF3TGljZW5zZSAhPT0gbGljZW5zZSkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCBgeyBcInJhd0xpY2Vuc2VcIjogXCIke2xpY2Vuc2V9XCIgfWAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nOiAnbm8tY2hlY2snLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGaW5pc2hlZCB1cGxvYWRpbmcgbGljZW5zZSB0byBVUE0nKSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBsaWNlbnNlIHRvIFVQTScsIGVycikpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyBjb25maXJtLCBpbnB1dCwgc2VsZWN0IH0gZnJvbSAnQGlucXVpcmVyL3Byb21wdHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFByZXNldHMsIFNpbmdsZUJhciB9IGZyb20gJ2NsaS1wcm9ncmVzcyc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ2NvbnRlbnQtZGlzcG9zaXRpb24nO1xuaW1wb3J0IHsgY3JlYXRlV3JpdGVTdHJlYW0sIG1rZGlyU3luYywgcm1TeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ29zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGFwcDNob3VyIH0gZnJvbSAnLi4vLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyByZWdpc3RlckxpY2Vuc2UsIHVwbG9hZFRvVVBNLCB3YWl0Rm9yUGx1Z2luVG9CZUVuYWJsZWQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3VwbSc7XG5jb25zdCBwcm9ncmVzc0JhciA9IG5ldyBTaW5nbGVCYXIoe1xuICAgIGZvcm1hdDogJyAgW3tiYXJ9XSB7cGVyY2VudGFnZX0lIHwgRVRBOiB7cmVtYWluaW5nfW0nLFxuICAgIGhpZGVDdXJzb3I6IHRydWVcbn0sIFByZXNldHMubGVnYWN5KTtcbmNvbnN0IHJvdW5kID0gKHZhbHVlLCBzdGVwKSA9PiB7XG4gICAgc3RlcCB8fCAoc3RlcCA9IDEuMCk7XG4gICAgY29uc3QgaW52ID0gMS4wIC8gc3RlcDtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGludikgLyBpbnY7XG59O1xuY29uc3QgZG93bmxvYWQgPSBhc3luYyAoYWRkb25LZXkpID0+IHtcbiAgICBjb25zdCB0bXBEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4JywgJ3RtcCcpO1xuICAgIGxldCB0bXBGaWxlID0gam9pbih0bXBEaXIsIGFkZG9uS2V5KTtcbiAgICBta2RpclN5bmModG1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgIHVybDogYGh0dHBzOi8vbWFya2V0cGxhY2UuYXRsYXNzaWFuLmNvbS9kb3dubG9hZC9wbHVnaW5zLyR7YWRkb25LZXl9YCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnc3RyZWFtJ1xuICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCBkaXNwb3NpdGlvbiA9IHBhcnNlKHJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSk7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gZGlzcG9zaXRpb24/LnBhcmFtZXRlcnM/LmZpbGVuYW1lIHx8IGFkZG9uS2V5O1xuICAgICAgICB0bXBGaWxlID0gZmlsZW5hbWU7XG4gICAgICAgIHJlc3BvbnNlLmRhdGEucGlwZShjcmVhdGVXcml0ZVN0cmVhbSh0bXBGaWxlKSk7XG4gICAgfSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgcmV0dXJuIHRtcEZpbGU7XG59O1xuZXhwb3J0IGNvbnN0IGluc3RhbGxBcHAgPSBhc3luYyAoYmFzZVVybCwgYXBwS2V5LCBsaWNlbnNlID0gYXBwM2hvdXIsIGZvcmNlKSA9PiB7XG4gICAgLy8gSWYgd2UgYXJlIGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlLCB3ZSB3aWxsIGRvd25sb2FkIGl0IGZyb20gTVBBQ1xuICAgIGlmIChmb3JjZSkge1xuICAgICAgICAvLyBJbiBvcmRlciB0byBkbyBzbywgd2UgbmVlZCBhbiBhcHBrZXkuIElmIHRoaXMgaXMgbm90IHByb3ZpZGVkLCB0aHJvdyBhIGhpc3N5IGZpdFxuICAgICAgICBpZiAoIWFwcEtleSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIGFwcCBpbnRvIGNsdXN0ZXIsIGBhcHBLZXlgIHdhcyBub3QgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgXG4gIEluc3RhbGxpbmcgdGhlIGFwcCAoJHthcHBLZXl9KSBpbnRvIHRoZSBjbHVzdGVyIHVzaW5nIHRoZSBVbml2ZXJzYWwgUGx1Z2luIE1hbmFnZXIgUkVTVCBBUElgKTtcbiAgICAgICAgLy8gU2hvdyBhIHByb2dyZXNzIGJhclxuICAgICAgICBwcm9ncmVzc0Jhci5zdGFydCgzMDAsIDAsIHsgcmVtYWluaW5nOiA1IH0pO1xuICAgICAgICBjb25zdCB0aW1lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2dyZXNzQmFyLmdldFByb2dyZXNzKCkgPj0gMzAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCBhcHAgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVW5pdmVyc2FsIFBsdWdpbiBNYW5hZ2VyIFJFU1QgQVBJJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9ncmVzc0Jhci5pbmNyZW1lbnQoMSwgeyByZW1haW5pbmc6IHJvdW5kKChwcm9ncmVzc0Jhci5nZXRUb3RhbCgpIC0gcHJvZ3Jlc3NCYXIuZ2V0UHJvZ3Jlc3MoKSkgLyA2MCwgMC41KSB9KTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIC8vIERvd25sb2FkIHRoZSBmaWxlIGZyb20gTVBBQ1xuICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZG93bmxvYWQoYXBwS2V5KTtcbiAgICAgICAgLy8gVXBsb2FkIGl0IGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVQTSBSRVNUIEFQSVxuICAgICAgICBhd2FpdCB1cGxvYWRUb1VQTShiYXNlVXJsLCBmaWxlLCAnYWRtaW4nLCAnYWRtaW4nLCBmYWxzZSk7XG4gICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwbHVnaW4gdG8gYmUgZW5hYmxlZFxuICAgICAgICBhd2FpdCB3YWl0Rm9yUGx1Z2luVG9CZUVuYWJsZWQoYXBwS2V5LCBiYXNlVXJsLCAnYWRtaW4nLCAnYWRtaW4nLCBmYWxzZSk7XG4gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBsaWNlbnNlICh1c2UgdGhlIDMgaG91ciB0aW1lYm9tYiBpbiBub24taW50ZXJhY3RpdmUgbW9kZSlcbiAgICAgICAgYXdhaXQgcmVnaXN0ZXJMaWNlbnNlKGFwcEtleSwgbGljZW5zZSwgYmFzZVVybCwgJ2FkbWluJywgJ2FkbWluJywgZmFsc2UpO1xuICAgICAgICAvLyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBmaWxlXG4gICAgICAgIHJtU3luYyhmaWxlLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAvLyBTdG9wIHRoZSBwcm9ncmVzcyBiYXJcbiAgICAgICAgcHJvZ3Jlc3NCYXIuc3RvcCgpO1xuICAgICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgICAgICAvLyBUZWxsIHRoZW0gd2Ugc3VjY2VlZGVkXG4gICAgICAgIGNvbnNvbGUubG9nKGDinJQgRmluaXNoZWQgaW5zdGFsbGluZyB0aGUgYXBwICgke2FwcEtleX0pYCk7XG4gICAgICAgIC8vIElmIHdlJ3JlIGluIGludGVyYWN0aXZlIG1vZGUsIGxldCdzIGJlIG5pY2VcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFRlbGwgdGhlIHVzZXIgdGhleSBoYXZlIG9wdGlvbnNcbiAgICAgICAgY29uc29sZS5sb2coYFxuICBJdCBpcyBub3cgcmVxdWlyZWQgdG8gaW5zdGFsbCB0aGUgYXBwIGludG8gdGhlIEppcmEgY2x1c3Rlci5cbiAgV2UgY2FuIGluc3RhbGwgaXQgZnJvbSB0aGUgQXRsYXNzaWFuIE1hcmtldHBsYWNlIG9yIHlvdSBjYW4gaW5zdGFsbCBpdCBtYW51YWxseS5cbmApO1xuICAgICAgICAvLyBBc2sgdGhlbSBpZiB0aGV5IHByZWZlciBhdXRvbWF0aW9uIG9yIHRlZGlvdXMgbWFudWFsIHRhc2tzXG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IGF3YWl0IHNlbGVjdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgSG93IGRvIHlvdSB3YW50IHRvIGluc3RhbGwgdGhlIGFwcD9gLFxuICAgICAgICAgICAgZGVmYXVsdDogJ21wYWMnLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICAgIHsgbmFtZTogJ01hcmtldHBsYWNlJywgdmFsdWU6ICdtcGFjJyB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ01hbnVhbCcsIHZhbHVlOiAnbWFudWFsJyB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBJZiB0aGV5IGNob3NlIGF1dG9tYXRpb24sIGxldCdzIGF1dG9tYXRlIVxuICAgICAgICBpZiAobWV0aG9kID09PSAnbXBhYycpIHtcbiAgICAgICAgICAgIC8vIEFzayB0aGVtIG5pY2VseSBmb3IgdGhlIGFwcCBrZXlcbiAgICAgICAgICAgIGNvbnN0IGFkZG9uS2V5ID0gYXdhaXQgaW5wdXQoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgcHJvdmlkZSB0aGUga2V5IG9mIHRoZSBhcHAgdG8gYmUgaW5zdGFsbGVkJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBhcHBLZXksXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXNrIHRoZW0gbmljZWx5IGZvciB0aGUgYXBwIGxpY2Vuc2UgdG8gYmUgdXNlZFxuICAgICAgICAgICAgY29uc3QgYXBwTGljZW5zZSA9IGF3YWl0IGlucHV0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgTGljZW5zZWAsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogbGljZW5zZSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUZWxsIHRoZW0gd2UgYXJlIHN0YXJ0aW5nXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgXG4gIEluc3RhbGxpbmcgdGhlIGFwcCAoJHthZGRvbktleX0pIGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVuaXZlcnNhbCBQbHVnaW4gTWFuYWdlciBSRVNUIEFQSWApO1xuICAgICAgICAgICAgLy8gU2hvdyBhIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgcHJvZ3Jlc3NCYXIuc3RhcnQoMzAwLCAwLCB7IHJlbWFpbmluZzogNSB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzQmFyLmdldFByb2dyZXNzKCkgPj0gMzAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVuaXZlcnNhbCBQbHVnaW4gTWFuYWdlciBSRVNUIEFQSScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9ncmVzc0Jhci5pbmNyZW1lbnQoMSwgeyByZW1haW5pbmc6IHJvdW5kKChwcm9ncmVzc0Jhci5nZXRUb3RhbCgpIC0gcHJvZ3Jlc3NCYXIuZ2V0UHJvZ3Jlc3MoKSkgLyA2MCwgMC41KSB9KTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgLy8gRG93bmxvYWQgdGhlIGZpbGUgZnJvbSBNUEFDXG4gICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZG93bmxvYWQoYWRkb25LZXkpO1xuICAgICAgICAgICAgLy8gVXBsb2FkIGl0IGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVQTSBSRVNUIEFQSVxuICAgICAgICAgICAgYXdhaXQgdXBsb2FkVG9VUE0oYmFzZVVybCwgZmlsZSwgJ2FkbWluJywgJ2FkbWluJywgZmFsc2UpO1xuICAgICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHBsdWdpbiB0byBiZSBlbmFibGVkXG4gICAgICAgICAgICBhd2FpdCB3YWl0Rm9yUGx1Z2luVG9CZUVuYWJsZWQoYWRkb25LZXksIGJhc2VVcmwsICdhZG1pbicsICdhZG1pbicsIGZhbHNlKTtcbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBwcm92aWRlZCBsaWNlbnNlXG4gICAgICAgICAgICBhd2FpdCByZWdpc3RlckxpY2Vuc2UoYWRkb25LZXksIGFwcExpY2Vuc2UsIGJhc2VVcmwsICdhZG1pbicsICdhZG1pbicsIGZhbHNlKTtcbiAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgdGVtcG9yYXJ5IGZpbGVcbiAgICAgICAgICAgIHJtU3luYyhmaWxlLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAgICAgLy8gU3RvcCB0aGUgcHJvZ3Jlc3MgYmFyXG4gICAgICAgICAgICBwcm9ncmVzc0Jhci5zdG9wKCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgICAgICAgICAgLy8gVGVsbCB0aGVtIHdlIHN1Y2NlZWRlZFxuICAgICAgICAgICAgY29uc29sZS5sb2coYOKclCBGaW5pc2hlZCBpbnN0YWxsaW5nIHRoZSBhcHAgKCR7YWRkb25LZXl9KWApO1xuICAgICAgICAgICAgLy8gVGhleSBjaG9zZSB2aW9sZW5jZVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gUnViIGl0IGluIHRoZWlyIGZhY2VcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBcbiAgWW91IGNhbiBub3cgaW5zdGFsbCB0aGUgYXBwIG1hbnVhbGx5IGludG8gdGhlIGNsdXN0ZXIuXG4gIFBsZWFzZSBnbyB0byB0aGUgZm9sbG93aW5nIHBhZ2UgKGxvZ2luIHdpdGggJ2FkbWluJy8nYWRtaW4nKTpcbiAgICBcbiAgJHtiYXNlVXJsfS9wbHVnaW5zL3NlcnZsZXQvdXBtP3NvdXJjZT1zaWRlX25hdl9tYW5hZ2VfYWRkb25zXG5gKTtcbiAgICAgICAgICAgIC8vIE1ha2UgdGhlbSBncm92ZWxcbiAgICAgICAgICAgIGNvbnN0IGlzSW5zdGFsbGVkTWFudWFsbHkgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgUGxlYXNlIGNvbmZpcm0gdGhhdCB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIGFwcCBtYW51YWxseWBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGFwcCBhaW4ndCBpbnN0YWxsZWQsIHdlIGFpbid0IGRvaW5nIG5vdGhpbicuIFNvIHdlIGJldHRlciB0aHJvdyBhIGhpc3N5IGZpdFxuICAgICAgICAgICAgaWYgKCFpc0luc3RhbGxlZE1hbnVhbGx5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJdCBpcyByZXF1aXJlZCB0byBpbnN0YWxsIHRoZSBhcHAgdG8gcnVuIHRoZSBzZWNvbmQgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiB0ZXN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDApO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnIuaXNzdWVzLmZvckVhY2goaXNzdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gYFVuYWJsZSB0byBwYXJzZSBvcHRpb24gJHtpc3N1ZS5wYXRoLmpvaW4oJywnKX06ICR7aXNzdWUubWVzc2FnZX1cXG5gO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2gobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwcm9ncmFtLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZSxcbiAgICAgICAgICAgIC8vIHdlIGNhbiBhc3N1bWUgYSBjbGVhbiBleGl0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB2ZXJzaW9ucyBmcm9tICcuLi8uLi9hc3NldHMvdmVyc2lvbnMuanNvbic7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzID0gei5lbnVtKFtcbiAgICAncG9zdGdyZXNxbCcsXG4gICAgJ215c3FsJyxcbiAgICAnbXNzcWwnXG5dKTtcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zID0gei5lbnVtKFtcbiAgICAnRGV2ZWxvcGVyJyxcbiAgICAnRXhwcmVzcycsXG4gICAgJ1N0YW5kYXJkJyxcbiAgICAnRW50ZXJwcmlzZScsXG4gICAgJ0VudGVycHJpc2VDb3JlJ1xuXSk7XG5leHBvcnQgY29uc3QgRGF0YWJhc2VPcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSksXG4gICAgZGF0YWJhc2U6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB2ZXJib3NlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKClcbn0pO1xuZXhwb3J0IGNvbnN0IFBvc3RncmVTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCg1NDMyKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpLmRlZmF1bHQoJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNeVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDMzMDYpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm15c3FsLmpkYmMuRHJpdmVyJykuZGVmYXVsdCgnY29tLm15c3FsLmpkYmMuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE1TU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZWRpdGlvbjogU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5kZWZhdWx0KCdEZXZlbG9wZXInKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgxNDMzKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnc2EnKS5kZWZhdWx0KCdzYScpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ0RhdGFDZW50ZXJEWCEnKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJykuZGVmYXVsdCgnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4vRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyA9IHouZW51bShbXG4gICAgJ2ppcmEnLFxuICAgICdjb25mbHVlbmNlJyxcbiAgICAnYml0YnVja2V0JyxcbiAgICAnYmFtYm9vJ1xuXSk7XG5leHBvcnQgY29uc3QgQXBwbGljYXRpb25PcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyxcbiAgICB0YWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZGF0YWJhc2U6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5kZWZhdWx0KCdwb3N0Z3Jlc3FsJyksXG4gICAgZGF0YWJhc2VUYWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpLmRlZmF1bHQoJzgwJyksXG4gICAgY29udGV4dFBhdGg6IHouc3RyaW5nKCksXG4gICAgeG1zOiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgeG14OiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgd2F0Y2g6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGV4dDogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICBpbnN0YWxsOiB6LmJvb2xlYW4oKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHouc3RyaW5nKCksXG4gICAgYWN0aXZhdGVQcm9maWxlczogei5zdHJpbmcoKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRlYnVnOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIGN3ZDogei5zdHJpbmcoKVxufSkucGFydGlhbCh7XG4gICAgY29udGV4dFBhdGg6IHRydWUsXG4gICAgZXh0OiB0cnVlLFxuICAgIGluc3RhbGw6IHRydWUsXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB0cnVlLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHRydWUsXG4gICAgY3dkOiB0cnVlXG59KTtcbiIsImltcG9ydCB7IERPTVBhcnNlciwgWE1MU2VyaWFsaXplciB9IGZyb20gJ0B4bWxkb20veG1sZG9tJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBYTUxQYXJzZXIgfSBmcm9tICdmYXN0LXhtbC1wYXJzZXInO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeHBhdGggZnJvbSAneHBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuZXhwb3J0IGNsYXNzIEFNUFMge1xuICAgIG9wdGlvbnM7XG4gICAgbWF2ZW4gPSBudWxsO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7XG4gICAgICAgIHByb2ZpbGVzOiBbXVxuICAgIH0pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMubWF2ZW4ua2lsbCgwKTtcbiAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIE1hdmVuIHByb2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBidWlsZChhcmdzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMubWF2ZW4ua2lsbCgwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIE1hdmVuIHByb2Nlc3MnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tYXZlbiA9IHNwYXduKCdtdm4nLCBbJ3BhY2thZ2UnLCAuLi5hcmdzXSwgeyBjd2Q6IHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgdGhpcy5tYXZlbi5vbignZXhpdCcsIChjb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXZlbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDAgfHwgY29kZSA9PT0gMTMwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE1hdmVuIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzQXRsYXNzaWFuUGx1Z2luID0gKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3BhY2thZ2luZ1xcJ10nKTtcbiAgICAgICAgICAgIHJldHVybiBub2Rlcy5zb21lKGl0ZW0gPT4gaXRlbS50ZXh0Q29udGVudCA9PT0gJ2F0bGFzc2lhbi1wbHVnaW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGdldEFwcGxpY2F0aW9uVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbLCB2ZXJzaW9uXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0QXBwbGljYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgW25hbWVdID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0QXBwbGljYXRpb25zKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdncm91cElkXFwnIGFuZCB0ZXh0KCk9XFwnY29tLmF0bGFzc2lhbi5tYXZlbi5wbHVnaW5zXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoJ2FtcHMtbWF2ZW4tcGx1Z2luJyA9PT0gcGx1Z2luPy5hcnRpZmFjdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pZCkgfHwgdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0Lmluc3RhbmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcm9kdWN0IH0gPSBjb25maWd1cmF0aW9uPy5wcm9kdWN0cyB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pZCkgfHwgdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0Lmluc3RhbmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHBsdWdpbj8uYXJ0aWZhY3RJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24obm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24odmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmEpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbykpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldFZlcnNpb24obm9kZSkge1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0VmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwbHVnaW4uY29uZmlndXJhdGlvbi5wcm9kdWN0VmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSA/IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzWzBdIDogY29uZmlndXJhdGlvbi5wcm9kdWN0cy5wcm9kdWN0O1xuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0ICYmIHByb2R1Y3QudmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHZhbHVlKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwcm9maWxlLCByZXBsYWNlIHByb2ZpbGUgcHJvcGVydGllcyBmaXJzdCBhcyB0aGV5IHRha2UgcHJlY2VkZW5jZVxuICAgICAgICBjb25zdCBwcm9maWxlUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9maWxlUHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VBbGwoYCRcXHske3Byb3BlcnR5S2V5fX1gLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VBbGwoYCRcXHske3Byb3BlcnR5S2V5fX1gLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncHJvcGVydGllc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSB0aGlzLnRvT2JqZWN0KG5vZGUpO1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiByZXN1bHRba2V5XSA9IHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldE5vZGVzKGV4cHJlc3Npb24sIHNpbmdsZSkge1xuICAgICAgICBjb25zdCBwb21GaWxlUGF0aCA9IGpvaW4odGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksICcuL3BvbS54bWwnKTtcbiAgICAgICAgY29uc3QgaGFzUG9tRmlsZSA9IGV4aXN0c1N5bmMocG9tRmlsZVBhdGgpO1xuICAgICAgICBpZiAoaGFzUG9tRmlsZSkge1xuICAgICAgICAgICAgY29uc3QgeG1sID0gcmVhZEZpbGVTeW5jKHBvbUZpbGVQYXRoLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh4bWwsICd0ZXh0L3htbCcpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBzaW5nbGUgPyB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCB0cnVlKSA6IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHRvT2JqZWN0KG5vZGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2UobmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhub2RlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgbm9kZSkge1xuICAgICAgICBjb25zdCB7IHBhcmVudE5vZGUgfSA9IG5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIHBhcmVudE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkge1xuICAgICAgICBjb25zdCBwcm9maWxlUGFyZW50Tm9kZSA9IHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUoJ3Byb2ZpbGUnLCBub2RlKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZU5vZGUgPSBwcm9maWxlUGFyZW50Tm9kZSA/IHRoaXMudG9PYmplY3QocHJvZmlsZVBhcmVudE5vZGUpIDogbnVsbDtcbiAgICAgICAgaWYgKCFwcm9maWxlTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvZmlsZU5vZGUgJiYgKHByb2ZpbGVOb2RlLmFjdGl2ZUJ5RGVmYXVsdCA9PT0gJ3RydWUnIHx8IHRoaXMub3B0aW9ucy5wcm9maWxlcy5pbmNsdWRlcyhwcm9maWxlTm9kZS5wcm9maWxlLmlkKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IGlzUmVjdXJzaXZlQnVpbGQgPSAobGFzdEJ1aWxkQ29tcGxldGVkKSA9PiBsYXN0QnVpbGRDb21wbGV0ZWQgPiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSA1ICogMTAwMCk7XG4iLCJleHBvcnQgY29uc3Qgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyA9IChvdXRwdXREaXJlY3RvcnkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJlY3Vyc2l2ZSBidWlsZCB0cmlnZ2VyIGRldGVjdGVkLiBUaGUgbGFzdCBidWlsZCBjb21wbGV0ZWQgbGFzdCB0aGFuIDUgc2Vjb25kcyBhZ29cblRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIGJ1aWxkIGNoYW5nZXMgZmlsZXMgb3V0c2lkZSBvZiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuQWx0ZXJuYXRpdmVseSwgTWF2ZW4gaXMgdXNpbmcgYSBkaWZmZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB0aGFuIGNvbmZpZ3VyZWQ6XG4nJHtvdXRwdXREaXJlY3Rvcnl9J1xuXG5QbGVhc2UgbWFrZSBzdXJlIHRvIGNoZWNrIHlvdXIgYnVpbGQgcHJvY2VzcyBhbmQvb3Igc3BlY2lmeSBhIGRpZmZlcmVudCBvdXRwdXQgZGlyZWN0b3J5IHVzaW5nIHRoZSAnLW8nIG9wdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09YCk7XG59O1xuIiwiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuZXhwb3J0IGNsYXNzIEN1c3RvbUJ1aWxkZXIge1xuICAgIG9wdGlvbnM7XG4gICAgcHJvYyA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9jKSB7XG4gICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLnByb2Mua2lsbCgwKTtcbiAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIGJ1aWxkIHByb2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBidWlsZCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLnByb2Mua2lsbCgwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gdGVybWluYXRlIGV4aXN0aW5nIGJ1aWxkIHByb2Nlc3MnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBleGVjU3luYyh0aGlzLm9wdGlvbnMuY21kLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhdHVzIH0gPSBlcnI7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQnVpbGQgZXhpdGVkIHdpdGggY29kZSAke3N0YXR1c31gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgRG9ja2Vyb2RlIGZyb20gJ2RvY2tlcm9kZSc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmNvbnN0IGRvY2tlciA9IG5ldyBEb2NrZXJvZGUoKTtcbmV4cG9ydCBjb25zdCBnZXRSdW5uaW5nQ29udGFpbmVySWRzID0gYXN5bmMgKGFwcGxpY2F0aW9uKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVycyA9IGF3YWl0IGRvY2tlci5saXN0Q29udGFpbmVycyh7IGZpbHRlcnM6IHtcbiAgICAgICAgICAgIHN0YXR1czogWydydW5uaW5nJ10sXG4gICAgICAgICAgICBsYWJlbDogW2Bjb20uZG9ja2VyLmNvbXBvc2Uuc2VydmljZT0ke2FwcGxpY2F0aW9ufWBdXG4gICAgICAgIH0gfSk7XG4gICAgcmV0dXJuIGNvbnRhaW5lcnMubWFwKGl0ZW0gPT4gaXRlbS5JZCk7XG59O1xuZXhwb3J0IGNvbnN0IGNvcHkgPSBhc3luYyAoc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnY3AnLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGhdLCB7IGN3ZDogY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgIGRvY2tlci5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBEb2NrZXIgZnJvbSAnLi9kb2NrZXInO1xuaW1wb3J0IHsgdXBsb2FkVG9VUE0gfSBmcm9tICcuL3VwbSc7XG5leHBvcnQgY29uc3QgSW5zdGFsbGVyID0gYXN5bmMgKG5hbWUsIHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBjb250YWluZXJJZHMgPSBhd2FpdCBEb2NrZXIuZ2V0UnVubmluZ0NvbnRhaW5lcklkcyhuYW1lKTtcbiAgICBpZiAoIWNvbnRhaW5lcklkcyB8fCBjb250YWluZXJJZHMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIGFyZSBubyBydW5uaW5nIGluc3RhbmNlIG9mICR7bmFtZX0sIHVuYWJsZSB0byBpbnN0YWxsIHBsdWdpbiDwn6SUYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udGFpbmVySWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIGFyZSBtdWx0cGxlIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgJHtuYW1lfSwgdW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBvbmUgdG8gdXNlIPCfpJRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJJZCA9IGNvbnRhaW5lcklkc1swXTtcbiAgICBpZiAoY29udGFpbmVySWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgdXBkYXRlZCBwbHVnaW4sIHVwbG9hZGluZyBpdCB0byBVUE0gb24gcnVubmluZyBpbnN0YW5jZXMgb2YgJHtuYW1lfWApO1xuICAgICAgICAgICAgY29uc3QgaG9zdFVybCA9IG9wdGlvbnMucG9ydCA/IGBsb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCA6IGBsb2NhbGhvc3RgO1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IG9wdGlvbnMudXNlcm5hbWUgJiYgb3B0aW9ucy5wYXNzd29yZCA/IGBodHRwOi8vJHtvcHRpb25zLnVzZXJuYW1lfToke29wdGlvbnMucGFzc3dvcmR9QCR7aG9zdFVybH1gIDogYGh0dHA6Ly8ke2hvc3RVcmx9YDtcbiAgICAgICAgICAgIHVwbG9hZFRvVVBNKHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYmFzZVVybCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgdXBkYXRlZCBwbHVnaW4sIHVwbG9hZGluZyBpdCB0byBRdWlja1JlbG9hZCBvbiBydW5uaW5nIGluc3RhbmNlcyBvZiAke25hbWV9YCk7XG4gICAgICAgICAgICBhd2FpdCBEb2NrZXIuY29weShyZXNvbHZlUGF0aChvcHRpb25zLmN3ZCB8fCBjd2QoKSwgcGF0aCksIGAke2NvbnRhaW5lcklkfTovb3B0L3F1aWNrcmVsb2FkL2ApXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coJ0ZpbmlzaGVkIHVwbG9hZGluZyBwbHVnaW4gYXJjaGl2ZSB0byBRdWlja1JlbG9hZCcpKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgcGx1Z2luIGFyY2hpdmUgZmlsZSB0byBRdWlja1JlbG9hZCcsIGVycikpO1xuICAgICAgICB9XG4gICAgfVxufTtcbiIsImltcG9ydCB7IHdhdGNoIH0gZnJvbSAnY2hva2lkYXInO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBpc1JlY3Vyc2l2ZUJ1aWxkIH0gZnJvbSAnLi4vaGVscGVycy9pc1JlY3Vyc2l2ZUJ1aWxkJztcbmltcG9ydCB7IHNob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcnO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4vYW1wcyc7XG5pbXBvcnQgeyBDdXN0b21CdWlsZGVyIH0gZnJvbSAnLi9DdXN0b21CdWlsZGVyJztcbmltcG9ydCB7IEluc3RhbGxlciB9IGZyb20gJy4vSW5zdGFsbGVyJztcbmV4cG9ydCBjb25zdCBGaWxlV2F0Y2hlciA9IChuYW1lLCBvcHRpb25zLCBtYXZlbk9wdHMsIGluc3RhbGxPbmx5ID0gZmFsc2UpID0+IHtcbiAgICBsZXQgbGFzdEJ1aWxkQ29tcGxldGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3Qgb3V0cHV0RGlyZWN0b3J5ID0gb3B0aW9ucy5vdXRwdXREaXJlY3RvcnkgfHwgJ3RhcmdldCc7XG4gICAgY29uc3QgcGF0dGVybnMgPSBvcHRpb25zLmV4dCB8fCBbJyoqLyonXTtcbiAgICBjb25zb2xlLmxvZyhgV2F0Y2hpbmcgZmlsZXN5c3RlbSBmb3IgY2hhbmdlcyB0byBzb3VyY2UgZmlsZXMgKCR7cGF0dGVybnMuam9pbignLCAnKX0pYCk7XG4gICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgcHJvZmlsZXM6IG9wdGlvbnMuYWN0aXZhdGVQcm9maWxlcz8uc3BsaXQoJywnKSB8fCBbXVxuICAgIH0pO1xuICAgIGNvbnN0IGRlbGl2ZXJhYmxlRXh0ZW5zaW9uID0gb3B0aW9ucy5vYnIgPyAnLm9icicgOiAnLmphcic7XG4gICAgcmV0dXJuIHdhdGNoKHBhdHRlcm5zLCB7XG4gICAgICAgIGN3ZDogb3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgIHVzZVBvbGxpbmc6IHRydWUsXG4gICAgICAgIGludGVydmFsOiAyICogMTAwMCxcbiAgICAgICAgYmluYXJ5SW50ZXJ2YWw6IDIgKiAxMDAwLFxuICAgICAgICBhd2FpdFdyaXRlRmluaXNoOiB0cnVlLFxuICAgICAgICBwZXJzaXN0ZW50OiB0cnVlLFxuICAgICAgICBhdG9taWM6IHRydWVcbiAgICB9KS5vbignY2hhbmdlJywgYXN5bmMgKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW5zdGFsbCAmJiBwYXRoLnN0YXJ0c1dpdGgob3V0cHV0RGlyZWN0b3J5KSAmJiBwYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZGVsaXZlcmFibGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICBhd2FpdCBJbnN0YWxsZXIobmFtZSwgcGF0aCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXBhdGguc3RhcnRzV2l0aChvdXRwdXREaXJlY3RvcnkpICYmICFpbnN0YWxsT25seSkge1xuICAgICAgICAgICAgaWYgKGlzUmVjdXJzaXZlQnVpbGQobGFzdEJ1aWxkQ29tcGxldGVkKSkge1xuICAgICAgICAgICAgICAgIHNob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcob3V0cHV0RGlyZWN0b3J5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEZXRlY3RlZCBmaWxlIGNoYW5nZSwgcmVidWlsZGluZyBBdGxhc2lhbiBEYXRhIENlbnRlciBwbHVnaW4nKTtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuZXhlYykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBhbXBzLmJ1aWxkKG1hdmVuT3B0cykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gYnVpbGQgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5iwYCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDdXN0b21CdWlsZGVyKHsgY21kOiBvcHRpb25zLmV4ZWMsIGN3ZDogb3B0aW9ucy5jd2QgfHwgY3dkKCkgfSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBidWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkqpgKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBidWlsZCBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfmLBgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhc3RCdWlsZENvbXBsZXRlZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuZXhwb3J0IGNvbnN0IHRvQWJzb2x1dGVQYXRoID0gKHJlbGF0aXZlUGF0aCkgPT4ge1xuICAgIGNvbnN0IFssIGZpbGVQYXRoXSA9IHByb2Nlc3MuYXJndjtcbiAgICBjb25zdCBleGVjdXRhYmxlRmlsZURpciA9IGRpcm5hbWUocmVhbHBhdGhTeW5jKGZpbGVQYXRoKSk7XG4gICAgY29uc3QgYmFzZWRpciA9IGV4ZWN1dGFibGVGaWxlRGlyLnN1YnN0cmluZygwLCBleGVjdXRhYmxlRmlsZURpci5pbmRleE9mKCdkY2R4JykgKyA0KTtcbiAgICByZXR1cm4gam9pbihiYXNlZGlyLCByZWxhdGl2ZVBhdGgucmVwbGFjZUFsbCgnLi4vJywgJycpKTtcbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGdsb2IgfSBmcm9tICdnbG9iJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgaW5zdGFsbEFwcCB9IGZyb20gJy4uL2FwdC9oZWxwZXJzL2luc3RhbGxBcHAnO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvQWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi4vaGVscGVycy9hbXBzJztcbmltcG9ydCB7IEZpbGVXYXRjaGVyIH0gZnJvbSAnLi4vaGVscGVycy9GaWxlV2F0Y2hlcic7XG5pbXBvcnQgeyBnZXRWZXJzaW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0VmVyc2lvbnMnO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi4vaGVscGVycy9JbnN0YWxsZXInO1xuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kZXIoKTtcbmNvbnN0IHZlcnNpb25zID0gZ2V0VmVyc2lvbnMoKTtcbmNvbnN0IENvbW1hbmQgPSAoKSA9PiB7XG4gICAgbGV0IHF1aWNrUmVsb2FkID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb246IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICAgICAgICAgIGN3ZDogb3B0aW9ucy5jd2QsXG4gICAgICAgICAgICAgICAgcHJvZmlsZXM6IG9wdGlvbnMuYWN0aXZhdGVQcm9maWxlcz8uc3BsaXQoJywnKSB8fCBbXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5tcGFjKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmJhc2VVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1iYXNlVXJsXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIGZyb20gdGhlIEF0bGFzc2lhbiBNYXJrZXRwbGFjZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghb3B0aW9ucy5hcHBLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1hcHBLZXlcIiwgcmVxdWlyZWQgZm9yIGluc3RhbGxpbmcgZnJvbSB0aGUgQXRsYXNzaWFuIE1hcmtldHBsYWNlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IGluc3RhbGxBcHAob3B0aW9ucy5iYXNlVXJsLCBvcHRpb25zLmFwcEtleSwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgYW4gQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSDwn6SUJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IGFtcHMuZ2V0QXBwbGljYXRpb25WZXJzaW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSB2ZXJzaW9uIGZyb20gQU1QUyBhbmQgbm8gcHJvZHVjdCB2ZXJzaW9uIHByb3ZpZGVkICgtLXRhZyknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXZlcnNpb25zW25hbWVdLmluY2x1ZGVzKHZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZHVjdCB2ZXJzaW9uICcke3ZlcnNpb259JyBpcyBpbnZhbGlkLiBBbGxvd2VkIGNob2ljZXMgYXJlICR7dmVyc2lvbnNbbmFtZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9iciAmJiAhb3B0aW9ucy51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXCItLXVzZXJuYW1lXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIE9CUiBhcnRpZmFjdHMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1wYXNzd29yZFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1aWNrUmVsb2FkID0gRmlsZVdhdGNoZXIobmFtZSwgb3B0aW9ucywgW10sIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeSB8fCAndGFyZ2V0JztcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxpdmVyYWJsZUV4dGVuc2lvbiA9IG9wdGlvbnMub2JyID8gJ29icicgOiAnamFyJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2IoYCR7b3V0cHV0RGlyZWN0b3J5fS8qLiR7ZGVsaXZlcmFibGVFeHRlbnNpb259YCwgeyBjd2Q6IHJlc29sdmUob3B0aW9ucy5jd2QgfHwgY3dkKCkpIH0pO1xuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcChwYXRoID0+IEluc3RhbGxlcihuYW1lLCBwYXRoLCBvcHRpb25zKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvckhhbmRsZXI6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChxdWlja1JlbG9hZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9wcGluZyBmaWxlc3lzdGVtIHdhdGNoZXIuLi4g4o+zYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgcXVpY2tSZWxvYWQuY2xvc2UoKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgc3RvcHBlZCBhbGwgcnVubmluZyBwcm9jZXNzZXMg8J+SqmApO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5wcm9ncmFtXG4gICAgLm5hbWUoJ2RjZHggaW5zdGFsbCcpXG4gICAgLmRlc2NyaXB0aW9uKGBJbnN0YWxsIHRoZSBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIHVzaW5nIHRoZSBBdGxhc3NpYW4gTWF2ZW4gUGx1Z2luIFN1aXRlIChBTVBTKSBjb25maWd1cmF0aW9uLlxuSWYgdGhlcmUgaXMgYSBydW5uaW5nIGluc3RhbmNlLCBpdCB3aWxsIHRyeSB0byBpbnN0YWxsIHRoZSBwbHVnaW4gdXNpbmcgUXVpY2tSZWxvYWQgb3IgdGhlIFVQTSAoZm9yIE9CUikuYClcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdywgLS13YXRjaCcsICdXYXRjaCBmb3IgZmlsZXN5c3RlbSBjaGFuZ2VzIHRvIEpBUiBvciBPQlIgZmlsZXMgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnknKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1vLCAtLW91dHB1dERpcmVjdG9yeSA8ZGlyZWN0b3J5PicsICdPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRvIGxvb2sgZm9yIGdlbmVyYXRlZCBKQVIgb3IgT0JSIGZpbGVzIChkZWZhdWx0cyB0byBgdGFyZ2V0YCknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tb2JyJywgJ1VwbG9hZCBnZW5lcmF0ZWQgT0JSIGZpbGUgaW5zdGVhZCBvZiBKQVIgZmlsZSB3aGVuIGluc3RhbGxpbmcgdGhlIGFwcCcpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS11c2VybmFtZSA8dXNlcm5hbWU+JywgJ1RoZSB1c2VybmFtZSBvZiB0aGUgYWRtaW5pc3RyYXRvciAocmVxdWlyZWQgd2l0aCAtLW9iciknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdUaGUgcGFzc3dvcmQgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1tcGFjJywgJ0luc3RhbGwgdGhlIGFwcCBmcm9tIHRoZSBBdGxhc3NpYW4gTWFya2V0cGxhY2UnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tYmFzZVVybCA8dXJsPicsICdVUkwgb2YgdGhlIGluc3RhbmNlIChyZXF1aXJlZCB3aXRoIC0tbXBhYyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tYXBwS2V5IDxrZXk+JywgJ1RoZSBrZXkgb2YgdGhlIGFwcCB0byBiZSBpbnN0YWxsZWQgKHJlcXVpcmVkIHdpdGggLS1tcGFjKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgQU1QUyBjb25maWd1cmF0aW9uJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIGluc3RhbGw6IHRydWUgfSkpO1xucHJvZ3JhbS5wYXJzZUFzeW5jKHByb2Nlc3MuYXJndikuY2F0Y2goKCkgPT4gZ3JhY2VmdWxFeGl0KDEpKTtcbnByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgdGVybSBzaWduYWwsIHRyeWluZyB0byBzdG9wIGdyYWNlZnVsbHkg8J+SqmApO1xuICAgIGdyYWNlZnVsRXhpdCgxKTtcbn0pO1xuIl0sIm5hbWVzIjpbInZlcnNpb25zIiwiRG9ja2VyLmdldFJ1bm5pbmdDb250YWluZXJJZHMiLCJyZXNvbHZlUGF0aCIsIkRvY2tlci5jb3B5IiwiQ29tbWFuZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNTyxNQUFNLFFBQVEsR0FBRywyYUFBMmE7O0FDSDViLE1BQU0sV0FBVyxHQUFHLE9BQU8sT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sR0FBRyxJQUFJLEtBQUs7QUFDeEYsSUFBSSxNQUFNLFdBQVcsR0FBRyxRQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDaEgsSUFBSSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLFdBQVcsR0FBRztBQUNyRyxRQUFRLE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFO0FBQzVELEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJO0FBQ2hDLFFBQVEsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUVBQXVFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0csUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEIsUUFBUSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcs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QUMsT0FBTyxJQUFJO0FBQ3hCLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzlCLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|