@xpr-agents/sdk 0.2.4 → 0.2.5
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/dist/EscrowRegistry.js +15 -13
- package/package.json +1 -1
package/dist/EscrowRegistry.js
CHANGED
|
@@ -38,22 +38,23 @@ class EscrowRegistry {
|
|
|
38
38
|
* List jobs for a client
|
|
39
39
|
*/
|
|
40
40
|
async listJobsByClient(client, options = {}) {
|
|
41
|
-
const { limit = 100
|
|
41
|
+
const { limit = 100 } = options;
|
|
42
|
+
// Use secondary index with client name as bounds to efficiently query
|
|
43
|
+
// only rows for this client, instead of scanning from index position 0.
|
|
42
44
|
const result = await this.rpc.get_table_rows({
|
|
43
45
|
json: true,
|
|
44
46
|
code: this.contract,
|
|
45
47
|
scope: this.contract,
|
|
46
48
|
table: 'jobs',
|
|
47
49
|
index_position: 2, // byClient index
|
|
48
|
-
key_type: '
|
|
49
|
-
lower_bound:
|
|
50
|
+
key_type: 'name',
|
|
51
|
+
lower_bound: client,
|
|
52
|
+
upper_bound: client,
|
|
50
53
|
limit: limit + 1,
|
|
51
54
|
});
|
|
52
55
|
const hasMore = result.rows.length > limit;
|
|
53
56
|
const rows = hasMore ? result.rows.slice(0, limit) : result.rows;
|
|
54
|
-
let jobs = rows
|
|
55
|
-
.filter(row => row.client === client)
|
|
56
|
-
.map(row => this.parseJob(row));
|
|
57
|
+
let jobs = rows.map(row => this.parseJob(row));
|
|
57
58
|
if (options.state) {
|
|
58
59
|
jobs = jobs.filter(j => j.state === options.state);
|
|
59
60
|
}
|
|
@@ -67,22 +68,23 @@ class EscrowRegistry {
|
|
|
67
68
|
* List jobs for an agent
|
|
68
69
|
*/
|
|
69
70
|
async listJobsByAgent(agent, options = {}) {
|
|
70
|
-
const { limit = 100
|
|
71
|
+
const { limit = 100 } = options;
|
|
72
|
+
// Use secondary index with agent name as bounds to efficiently query
|
|
73
|
+
// only rows for this agent, instead of scanning from index position 0.
|
|
71
74
|
const result = await this.rpc.get_table_rows({
|
|
72
75
|
json: true,
|
|
73
76
|
code: this.contract,
|
|
74
77
|
scope: this.contract,
|
|
75
78
|
table: 'jobs',
|
|
76
79
|
index_position: 3, // byAgent index
|
|
77
|
-
key_type: '
|
|
78
|
-
lower_bound:
|
|
80
|
+
key_type: 'name',
|
|
81
|
+
lower_bound: agent,
|
|
82
|
+
upper_bound: agent,
|
|
79
83
|
limit: limit + 1,
|
|
80
84
|
});
|
|
81
85
|
const hasMore = result.rows.length > limit;
|
|
82
86
|
const rows = hasMore ? result.rows.slice(0, limit) : result.rows;
|
|
83
|
-
let jobs = rows
|
|
84
|
-
.filter(row => row.agent === agent)
|
|
85
|
-
.map(row => this.parseJob(row));
|
|
87
|
+
let jobs = rows.map(row => this.parseJob(row));
|
|
86
88
|
if (options.state) {
|
|
87
89
|
jobs = jobs.filter(j => j.state === options.state);
|
|
88
90
|
}
|
|
@@ -899,4 +901,4 @@ class EscrowRegistry {
|
|
|
899
901
|
}
|
|
900
902
|
}
|
|
901
903
|
exports.EscrowRegistry = EscrowRegistry;
|
|
902
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXNjcm93UmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRXNjcm93UmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsbUNBQXVDO0FBaUt2QywrQ0FBK0M7QUFFL0MsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxVQUFVLEdBQWU7SUFDN0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWTtJQUM3QyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWTtDQUMvRCxDQUFDO0FBQ0YsTUFBTSxnQkFBZ0IsR0FBcUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1RixNQUFNLG1CQUFtQixHQUF3QixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRW5HLE1BQWEsY0FBYztJQUt6QixZQUFZLEdBQVksRUFBRSxPQUF1QixFQUFFLFFBQWlCO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGdCQUFnQixDQUFDO0lBQy9DLENBQUM7SUFFRCxnREFBZ0Q7SUFFaEQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBUztZQUNuRCxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDcEIsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixX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QUFXLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFTyxRQUFRLENBQUMsR0FBVztRQUMxQixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUEsb0JBQVksRUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsTUFBTSxFQUFFLElBQUEsb0JBQVksRUFBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ2hDLFFBQVEsRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsVUFBVSxFQUFFLElBQUEsb0JBQVksRUFBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1NBQ3pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0L0JELHdDQXMvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKc29uUnBjLFxuICBQcm90b25TZXNzaW9uLFxuICBUcmFuc2FjdGlvblJlc3VsdCxcbiAgUGFnaW5hdGVkUmVzdWx0LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHNhZmVQYXJzZUludCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PSBFc2Nyb3cgVHlwZXMgPT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBKb2Ige1xuICBpZDogbnVtYmVyO1xuICBjbGllbnQ6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZGVsaXZlcmFibGVzOiBzdHJpbmdbXTtcbiAgYW1vdW50OiBudW1iZXI7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBmdW5kZWRfYW1vdW50OiBudW1iZXI7XG4gIHJlbGVhc2VkX2Ftb3VudDogbnVtYmVyO1xuICBzdGF0ZTogSm9iU3RhdGU7XG4gIGRlYWRsaW5lOiBudW1iZXI7XG4gIGFyYml0cmF0b3I6IHN0cmluZztcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgY3JlYXRlZF9hdDogbnVtYmVyO1xuICB1cGRhdGVkX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9iUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgY2xpZW50OiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlbGl2ZXJhYmxlczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgc3ltYm9sOiBzdHJpbmc7XG4gIGZ1bmRlZF9hbW91bnQ6IHN0cmluZztcbiAgcmVsZWFzZWRfYW1vdW50OiBzdHJpbmc7XG4gIHN0YXRlOiBudW1iZXI7XG4gIGRlYWRsaW5lOiBzdHJpbmc7XG4gIGFyYml0cmF0b3I6IHN0cmluZztcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICB1cGRhdGVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEpvYlN0YXRlID1cbiAgfCAnY3JlYXRlZCdcbiAgfCAnZnVuZGVkJ1xuICB8ICdhY2NlcHRlZCdcbiAgfCAnaW5wcm9ncmVzcydcbiAgfCAnZGVsaXZlcmVkJ1xuICB8ICdkaXNwdXRlZCdcbiAgfCAnY29tcGxldGVkJ1xuICB8ICdyZWZ1bmRlZCdcbiAgfCAnYXJiaXRyYXRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlsZXN0b25lIHtcbiAgaWQ6IG51bWJlcjtcbiAgam9iX2lkOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xuICBzdGF0ZTogTWlsZXN0b25lU3RhdGU7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBzdWJtaXR0ZWRfYXQ6IG51bWJlcjtcbiAgYXBwcm92ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaWxlc3RvbmVSYXcge1xuICBpZDogc3RyaW5nO1xuICBqb2JfaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIHN0YXRlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBzdWJtaXR0ZWRfYXQ6IHN0cmluZztcbiAgYXBwcm92ZWRfYXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWlsZXN0b25lU3RhdGUgPSAncGVuZGluZycgfCAnc3VibWl0dGVkJyB8ICdhcHByb3ZlZCcgfCAnZGlzcHV0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVzY3Jvd0Rpc3B1dGUge1xuICBpZDogbnVtYmVyO1xuICBqb2JfaWQ6IG51bWJlcjtcbiAgcmFpc2VkX2J5OiBzdHJpbmc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgY2xpZW50X2Ftb3VudDogbnVtYmVyO1xuICBhZ2VudF9hbW91bnQ6IG51bWJlcjtcbiAgcmVzb2x1dGlvbjogRGlzcHV0ZVJlc29sdXRpb247XG4gIHJlc29sdmVyOiBzdHJpbmc7XG4gIHJlc29sdXRpb25fbm90ZXM6IHN0cmluZztcbiAgY3JlYXRlZF9hdDogbnVtYmVyO1xuICByZXNvbHZlZF9hdDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBEaXNwdXRlUmVzb2x1dGlvbiA9ICdwZW5kaW5nJyB8ICdjbGllbnRfd2lucycgfCAnYWdlbnRfd2lucycgfCAnc3BsaXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFyYml0cmF0b3Ige1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIHN0YWtlOiBudW1iZXI7XG4gIGZlZV9wZXJjZW50OiBudW1iZXI7XG4gIHRvdGFsX2Nhc2VzOiBudW1iZXI7XG4gIHN1Y2Nlc3NmdWxfY2FzZXM6IG51bWJlcjtcbiAgYWN0aXZlX2Rpc3B1dGVzOiBudW1iZXI7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaWQge1xuICBpZDogbnVtYmVyO1xuICBqb2JfaWQ6IG51bWJlcjtcbiAgYWdlbnQ6IHN0cmluZztcbiAgYW1vdW50OiBudW1iZXI7XG4gIHRpbWVsaW5lOiBudW1iZXI7XG4gIHByb3Bvc2FsOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaWRSYXcge1xuICBpZDogc3RyaW5nO1xuICBqb2JfaWQ6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHRpbWVsaW5lOiBzdHJpbmc7XG4gIHByb3Bvc2FsOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVKb2JEYXRhIHtcbiAgYWdlbnQ/OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlbGl2ZXJhYmxlczogc3RyaW5nW107XG4gIGFtb3VudDogbnVtYmVyO1xuICBzeW1ib2w/OiBzdHJpbmc7XG4gIGRlYWRsaW5lPzogbnVtYmVyO1xuICBhcmJpdHJhdG9yPzogc3RyaW5nO1xuICBqb2JfaGFzaD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJtaXRCaWREYXRhIHtcbiAgam9iX2lkOiBudW1iZXI7XG4gIGFtb3VudDogbnVtYmVyO1xuICB0aW1lbGluZTogbnVtYmVyO1xuICBwcm9wb3NhbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE1pbGVzdG9uZURhdGEge1xuICBqb2JfaWQ6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYW1vdW50OiBudW1iZXI7XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9iTGlzdE9wdGlvbnMge1xuICBsaW1pdD86IG51bWJlcjtcbiAgY3Vyc29yPzogc3RyaW5nO1xuICBzdGF0ZT86IEpvYlN0YXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PSBSZWdpc3RyeSBDbGFzcyA9PT09PT09PT09PT09PVxuXG5jb25zdCBERUZBVUxUX0NPTlRSQUNUID0gJ2FnZW50ZXNjcm93JztcbmNvbnN0IEpPQl9TVEFURVM6IEpvYlN0YXRlW10gPSBbXG4gICdjcmVhdGVkJywgJ2Z1bmRlZCcsICdhY2NlcHRlZCcsICdpbnByb2dyZXNzJyxcbiAgJ2RlbGl2ZXJlZCcsICdkaXNwdXRlZCcsICdjb21wbGV0ZWQnLCAncmVmdW5kZWQnLCAnYXJiaXRyYXRlZCdcbl07XG5jb25zdCBNSUxFU1RPTkVfU1RBVEVTOiBNaWxlc3RvbmVTdGF0ZVtdID0gWydwZW5kaW5nJywgJ3N1Ym1pdHRlZCcsICdhcHByb3ZlZCcsICdkaXNwdXRlZCddO1xuY29uc3QgRElTUFVURV9SRVNPTFVUSU9OUzogRGlzcHV0ZVJlc29sdXRpb25bXSA9IFsncGVuZGluZycsICdjbGllbnRfd2lucycsICdhZ2VudF93aW5zJywgJ3NwbGl0J107XG5cbmV4cG9ydCBjbGFzcyBFc2Nyb3dSZWdpc3RyeSB7XG4gIHByaXZhdGUgcnBjOiBKc29uUnBjO1xuICBwcml2YXRlIHNlc3Npb246IFByb3RvblNlc3Npb24gfCBudWxsO1xuICBwcml2YXRlIGNvbnRyYWN0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocnBjOiBKc29uUnBjLCBzZXNzaW9uPzogUHJvdG9uU2Vzc2lvbiwgY29udHJhY3Q/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJwYyA9IHJwYztcbiAgICB0aGlzLnNlc3Npb24gPSBzZXNzaW9uIHx8IG51bGw7XG4gICAgdGhpcy5jb250cmFjdCA9IGNvbnRyYWN0IHx8IERFRkFVTFRfQ09OVFJBQ1Q7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PSBSRUFEIE9QRVJBVElPTlMgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IGEgam9iIGJ5IElEXG4gICAqL1xuICBhc3luYyBnZXRKb2IoaWQ6IG51bWJlcik6IFByb21pc2U8Sm9iIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEpvYlJhdz4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnam9icycsXG4gICAgICBsb3dlcl9ib3VuZDogU3RyaW5nKGlkKSxcbiAgICAgIHVwcGVyX2JvdW5kOiBTdHJpbmcoaWQpLFxuICAgICAgbGltaXQ6IDEsXG4gICAgfSk7XG5cbiAgICBpZiAocmVzdWx0LnJvd3MubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUpvYihyZXN1bHQucm93c1swXSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBqb2JzIGZvciBhIGNsaWVudFxuICAgKi9cbiAgYXN5bmMgbGlzdEpvYnNCeUNsaWVudChjbGllbnQ6IHN0cmluZywgb3B0aW9uczogSm9iTGlzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PEpvYj4+IHtcbiAgICBjb25zdCB7IGxpbWl0ID0gMTAwLCBjdXJzb3IgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDIsIC8vIGJ5Q2xpZW50IGluZGV4XG4gICAgICBrZXlfdHlwZTogJ2k2NCcsXG4gICAgICBsb3dlcl9ib3VuZDogY3Vyc29yLFxuICAgICAgbGltaXQ6IGxpbWl0ICsgMSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhc01vcmUgPSByZXN1bHQucm93cy5sZW5ndGggPiBsaW1pdDtcbiAgICBjb25zdCByb3dzID0gaGFzTW9yZSA/IHJlc3VsdC5yb3dzLnNsaWNlKDAsIGxpbWl0KSA6IHJlc3VsdC5yb3dzO1xuICAgIGxldCBqb2JzID0gcm93c1xuICAgICAgLmZpbHRlcihyb3cgPT4gcm93LmNsaWVudCA9PT0gY2xpZW50KVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKTtcblxuICAgIGlmIChvcHRpb25zLnN0YXRlKSB7XG4gICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLnN0YXRlID09PSBvcHRpb25zLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IGpvYnMsXG4gICAgICBoYXNNb3JlLFxuICAgICAgbmV4dEN1cnNvcjogaGFzTW9yZSAmJiByb3dzLmxlbmd0aCA+IDAgPyByb3dzW3Jvd3MubGVuZ3RoIC0gMV0uaWQgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGpvYnMgZm9yIGFuIGFnZW50XG4gICAqL1xuICBhc3luYyBsaXN0Sm9ic0J5QWdlbnQoYWdlbnQ6IHN0cmluZywgb3B0aW9uczogSm9iTGlzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PEpvYj4+IHtcbiAgICBjb25zdCB7IGxpbWl0ID0gMTAwLCBjdXJzb3IgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDMsIC8vIGJ5QWdlbnQgaW5kZXhcbiAgICAgIGtleV90eXBlOiAnaTY0JyxcbiAgICAgIGxvd2VyX2JvdW5kOiBjdXJzb3IsXG4gICAgICBsaW1pdDogbGltaXQgKyAxLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFzTW9yZSA9IHJlc3VsdC5yb3dzLmxlbmd0aCA+IGxpbWl0O1xuICAgIGNvbnN0IHJvd3MgPSBoYXNNb3JlID8gcmVzdWx0LnJvd3Muc2xpY2UoMCwgbGltaXQpIDogcmVzdWx0LnJvd3M7XG4gICAgbGV0IGpvYnMgPSByb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiByb3cuYWdlbnQgPT09IGFnZW50KVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKTtcblxuICAgIGlmIChvcHRpb25zLnN0YXRlKSB7XG4gICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLnN0YXRlID09PSBvcHRpb25zLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IGpvYnMsXG4gICAgICBoYXNNb3JlLFxuICAgICAgbmV4dEN1cnNvcjogaGFzTW9yZSAmJiByb3dzLmxlbmd0aCA+IDAgPyByb3dzW3Jvd3MubGVuZ3RoIC0gMV0uaWQgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWlsZXN0b25lcyBmb3IgYSBqb2JcbiAgICovXG4gIGFzeW5jIGdldEpvYk1pbGVzdG9uZXMoam9iSWQ6IG51bWJlcik6IFByb21pc2U8TWlsZXN0b25lW10+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxNaWxlc3RvbmVSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ21pbGVzdG9uZXMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDIsIC8vIGJ5Sm9iIGluZGV4XG4gICAgICBrZXlfdHlwZTogJ2k2NCcsXG4gICAgICBsaW1pdDogMTAwLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiBzYWZlUGFyc2VJbnQocm93LmpvYl9pZCkgPT09IGpvYklkKVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZU1pbGVzdG9uZShyb3cpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlzcHV0ZSBmb3IgYSBqb2JcbiAgICovXG4gIGFzeW5jIGdldEpvYkRpc3B1dGUoam9iSWQ6IG51bWJlcik6IFByb21pc2U8RXNjcm93RGlzcHV0ZSB8IG51bGw+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czx7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgam9iX2lkOiBzdHJpbmc7XG4gICAgICByYWlzZWRfYnk6IHN0cmluZztcbiAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gICAgICBjbGllbnRfYW1vdW50OiBzdHJpbmc7XG4gICAgICBhZ2VudF9hbW91bnQ6IHN0cmluZztcbiAgICAgIHJlc29sdXRpb246IG51bWJlcjtcbiAgICAgIHJlc29sdmVyOiBzdHJpbmc7XG4gICAgICByZXNvbHV0aW9uX25vdGVzOiBzdHJpbmc7XG4gICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICByZXNvbHZlZF9hdDogc3RyaW5nO1xuICAgIH0+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2Rpc3B1dGVzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAyLCAvLyBieUpvYiBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbGltaXQ6IDEwMCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRpc3B1dGUgPSByZXN1bHQucm93cy5maW5kKHJvdyA9PiBzYWZlUGFyc2VJbnQocm93LmpvYl9pZCkgPT09IGpvYklkKTtcbiAgICBpZiAoIWRpc3B1dGUpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5pZCksXG4gICAgICBqb2JfaWQ6IHNhZmVQYXJzZUludChkaXNwdXRlLmpvYl9pZCksXG4gICAgICByYWlzZWRfYnk6IGRpc3B1dGUucmFpc2VkX2J5LFxuICAgICAgcmVhc29uOiBkaXNwdXRlLnJlYXNvbixcbiAgICAgIGV2aWRlbmNlX3VyaTogZGlzcHV0ZS5ldmlkZW5jZV91cmksXG4gICAgICBjbGllbnRfYW1vdW50OiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5jbGllbnRfYW1vdW50KSxcbiAgICAgIGFnZW50X2Ftb3VudDogc2FmZVBhcnNlSW50KGRpc3B1dGUuYWdlbnRfYW1vdW50KSxcbiAgICAgIHJlc29sdXRpb246IERJU1BVVEVfUkVTT0xVVElPTlNbZGlzcHV0ZS5yZXNvbHV0aW9uXSxcbiAgICAgIHJlc29sdmVyOiBkaXNwdXRlLnJlc29sdmVyLFxuICAgICAgcmVzb2x1dGlvbl9ub3RlczogZGlzcHV0ZS5yZXNvbHV0aW9uX25vdGVzLFxuICAgICAgY3JlYXRlZF9hdDogc2FmZVBhcnNlSW50KGRpc3B1dGUuY3JlYXRlZF9hdCksXG4gICAgICByZXNvbHZlZF9hdDogc2FmZVBhcnNlSW50KGRpc3B1dGUucmVzb2x2ZWRfYXQpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhdmFpbGFibGUgYXJiaXRyYXRvcnNcbiAgICovXG4gIGFzeW5jIGxpc3RBcmJpdHJhdG9ycygpOiBQcm9taXNlPEFyYml0cmF0b3JbXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPHtcbiAgICAgIGFjY291bnQ6IHN0cmluZztcbiAgICAgIHN0YWtlOiBzdHJpbmc7XG4gICAgICBmZWVfcGVyY2VudDogc3RyaW5nO1xuICAgICAgdG90YWxfY2FzZXM6IHN0cmluZztcbiAgICAgIHN1Y2Nlc3NmdWxfY2FzZXM6IHN0cmluZztcbiAgICAgIGFjdGl2ZV9kaXNwdXRlczogc3RyaW5nO1xuICAgICAgYWN0aXZlOiBudW1iZXI7XG4gICAgfT4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnYXJiaXRyYXRvcnMnLFxuICAgICAgbGltaXQ6IDEwMCxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1xuICAgICAgLmZpbHRlcihyb3cgPT4gcm93LmFjdGl2ZSA9PT0gMSlcbiAgICAgIC5tYXAocm93ID0+ICh7XG4gICAgICAgIGFjY291bnQ6IHJvdy5hY2NvdW50LFxuICAgICAgICBzdGFrZTogc2FmZVBhcnNlSW50KHJvdy5zdGFrZSksXG4gICAgICAgIGZlZV9wZXJjZW50OiBzYWZlUGFyc2VJbnQocm93LmZlZV9wZXJjZW50KSxcbiAgICAgICAgdG90YWxfY2FzZXM6IHNhZmVQYXJzZUludChyb3cudG90YWxfY2FzZXMpLFxuICAgICAgICBzdWNjZXNzZnVsX2Nhc2VzOiBzYWZlUGFyc2VJbnQocm93LnN1Y2Nlc3NmdWxfY2FzZXMpLFxuICAgICAgICBhY3RpdmVfZGlzcHV0ZXM6IHNhZmVQYXJzZUludChyb3cuYWN0aXZlX2Rpc3B1dGVzKSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgfSkpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gV1JJVEUgT1BFUkFUSU9OUyA9PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgam9iXG4gICAqL1xuICBhc3luYyBjcmVhdGVKb2IoZGF0YTogQ3JlYXRlSm9iRGF0YSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjcmVhdGVqb2InLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYWdlbnQ6IGRhdGEuYWdlbnQgfHwgJycsXG4gICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgZGVsaXZlcmFibGVzOiBKU09OLnN0cmluZ2lmeShkYXRhLmRlbGl2ZXJhYmxlcyksXG4gICAgICAgICAgYW1vdW50OiBkYXRhLmFtb3VudCxcbiAgICAgICAgICBzeW1ib2w6IGRhdGEuc3ltYm9sIHx8ICdYUFInLFxuICAgICAgICAgIGRlYWRsaW5lOiBkYXRhLmRlYWRsaW5lIHx8IDAsXG4gICAgICAgICAgYXJiaXRyYXRvcjogZGF0YS5hcmJpdHJhdG9yIHx8ICcnLFxuICAgICAgICAgIGpvYl9oYXNoOiBkYXRhLmpvYl9oYXNoIHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuZCBhIGpvYlxuICAgKi9cbiAgYXN5bmMgZnVuZEpvYihqb2JJZDogbnVtYmVyLCBhbW91bnQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6ICdlb3Npby50b2tlbicsXG4gICAgICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmcm9tOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgdG86IHRoaXMuY29udHJhY3QsXG4gICAgICAgICAgcXVhbnRpdHk6IGFtb3VudCxcbiAgICAgICAgICBtZW1vOiBgZnVuZDoke2pvYklkfWAsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgYSBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgYWNjZXB0Sm9iKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYWNjZXB0am9iJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHdvcmtpbmcgb24gYSBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgc3RhcnRKb2Ioam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdzdGFydGpvYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhZ2VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxpdmVyIGEgam9iIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIGRlbGl2ZXJKb2Ioam9iSWQ6IG51bWJlciwgZXZpZGVuY2VVcmk6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdkZWxpdmVyJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgICBldmlkZW5jZV91cmk6IGV2aWRlbmNlVXJpLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBkZWxpdmVyeSAoYXMgY2xpZW50KVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZURlbGl2ZXJ5KGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYXBwcm92ZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbWlsZXN0b25lIHRvIGEgam9iXG4gICAqL1xuICBhc3luYyBhZGRNaWxlc3RvbmUoZGF0YTogQWRkTWlsZXN0b25lRGF0YSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhZGRtaWxlc3RvbmUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBkYXRhLmpvYl9pZCxcbiAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgIG9yZGVyOiBkYXRhLm9yZGVyLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGEgbWlsZXN0b25lIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIHN1Ym1pdE1pbGVzdG9uZShtaWxlc3RvbmVJZDogbnVtYmVyLCBldmlkZW5jZVVyaTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3N1Ym1pdG1pbGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBtaWxlc3RvbmVfaWQ6IG1pbGVzdG9uZUlkLFxuICAgICAgICAgIGV2aWRlbmNlX3VyaTogZXZpZGVuY2VVcmksXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIGEgbWlsZXN0b25lIChhcyBjbGllbnQpXG4gICAqL1xuICBhc3luYyBhcHByb3ZlTWlsZXN0b25lKG1pbGVzdG9uZUlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYXBwcm92ZW1pbGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgbWlsZXN0b25lX2lkOiBtaWxlc3RvbmVJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJhaXNlIGEgZGlzcHV0ZVxuICAgKi9cbiAgYXN5bmMgcmFpc2VEaXNwdXRlKGpvYklkOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCBldmlkZW5jZVVyaT86IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdkaXNwdXRlJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJhaXNlZF9ieTogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgICAgcmVhc29uLFxuICAgICAgICAgIGV2aWRlbmNlX3VyaTogZXZpZGVuY2VVcmkgfHwgJycsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgYSBqb2IgKGFzIGNsaWVudClcbiAgICovXG4gIGFzeW5jIGNhbmNlbEpvYihqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NhbmNlbCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xhaW0gdGltZW91dCAocmVmdW5kIG9yIGF1dG8tYXBwcm92ZSlcbiAgICovXG4gIGFzeW5jIGNsYWltVGltZW91dChqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3RpbWVvdXQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xhaW1lcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFpbSBhY2NlcHRhbmNlIHRpbWVvdXQgcmVmdW5kIChhcyBjbGllbnQpXG4gICAqL1xuICBhc3luYyBjbGFpbUFjY2VwdGFuY2VUaW1lb3V0KGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYWNjcHR0aW1lb3V0JyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09IEJJRERJTkcgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTGlzdCBvcGVuIGpvYnMgKGFnZW50IG5vdCBhc3NpZ25lZClcbiAgICovXG4gIGFzeW5jIGxpc3RPcGVuSm9icyhvcHRpb25zOiBKb2JMaXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXN1bHQ8Sm9iPj4ge1xuICAgIGNvbnN0IHsgbGltaXQgPSAxMDAsIGN1cnNvciB9ID0gb3B0aW9ucztcblxuICAgIC8vIE9wZW4gam9icyBhcmUgc3BhcnNlIGluIHRoZSB0YWJsZSDigJQgd2UgbXVzdCBwYWdpbmF0ZSB0aHJvdWdoIGFsbCByb3dzXG4gICAgLy8gdG8gZmluZCBlbm91Z2ggb3BlbiBqb2JzIChhZ2VudCBpcyBlbXB0eSksIG5vdCBqdXN0IGZldGNoIGBsaW1pdGAgcm93cy5cbiAgICBjb25zdCBCQVRDSF9TSVpFID0gMTAwO1xuICAgIGxldCBsb3dlckJvdW5kID0gY3Vyc29yO1xuICAgIGxldCBvcGVuSm9iczogSm9iW10gPSBbXTtcbiAgICBsZXQgdGFibGVIYXNNb3JlID0gdHJ1ZTtcblxuICAgIHdoaWxlIChvcGVuSm9icy5sZW5ndGggPCBsaW1pdCAmJiB0YWJsZUhhc01vcmUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEpvYlJhdz4oe1xuICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgICAgdGFibGU6ICdqb2JzJyxcbiAgICAgICAgbG93ZXJfYm91bmQ6IGxvd2VyQm91bmQsXG4gICAgICAgIGxpbWl0OiBCQVRDSF9TSVpFLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQucm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGFibGVIYXNNb3JlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0YWJsZUhhc01vcmUgPSByZXN1bHQucm93cy5sZW5ndGggPT09IEJBVENIX1NJWkU7XG4gICAgICBsb3dlckJvdW5kID0gcmVzdWx0LnJvd3NbcmVzdWx0LnJvd3MubGVuZ3RoIC0gMV0uaWQgKyAxO1xuXG4gICAgICAvLyBGaWx0ZXIgZm9yIGVtcHR5IGFnZW50IEFORCBvbmx5IENSRUFURUQgc3RhdGUgKDApIGJ5IGRlZmF1bHQuXG4gICAgICAvLyBSZWZ1bmRlZC9jb21wbGV0ZWQgam9icyB3aXRoIGVtcHR5IGFnZW50IGFyZSBub3QgdHJ1bHkgXCJvcGVuXCIuXG4gICAgICBjb25zdCB0YXJnZXRTdGF0ZSA9IG9wdGlvbnMuc3RhdGUgPz8gJ2NyZWF0ZWQnO1xuICAgICAgbGV0IGJhdGNoID0gcmVzdWx0LnJvd3NcbiAgICAgICAgLmZpbHRlcihyb3cgPT4gcm93LmFnZW50ID09PSAnJyB8fCByb3cuYWdlbnQgPT09ICcuLi4uLi4uLi4uLi4uJylcbiAgICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKVxuICAgICAgICAuZmlsdGVyKGogPT4gai5zdGF0ZSA9PT0gdGFyZ2V0U3RhdGUpO1xuXG4gICAgICBvcGVuSm9icy5wdXNoKC4uLmJhdGNoKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNNb3JlID0gb3BlbkpvYnMubGVuZ3RoID4gbGltaXQgfHwgdGFibGVIYXNNb3JlO1xuICAgIGNvbnN0IGl0ZW1zID0gb3BlbkpvYnMuc2xpY2UoMCwgbGltaXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zLFxuICAgICAgaGFzTW9yZSxcbiAgICAgIG5leHRDdXJzb3I6IGhhc01vcmUgJiYgaXRlbXMubGVuZ3RoID4gMCA/IFN0cmluZyhpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5pZCArIDEpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGV2aWRlbmNlIFVSSSBmb3IgYSBkZWxpdmVyZWQgam9iIChzdG9yZWQgaW4gc2VwYXJhdGUgam9iZXZpZGVuY2UgdGFibGUpXG4gICAqL1xuICBhc3luYyBnZXRKb2JFdmlkZW5jZShqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8eyBqb2JfaWQ6IHN0cmluZzsgZXZpZGVuY2VfdXJpOiBzdHJpbmcgfT4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnam9iZXZpZGVuY2UnLFxuICAgICAgbG93ZXJfYm91bmQ6IFN0cmluZyhqb2JJZCksXG4gICAgICB1cHBlcl9ib3VuZDogU3RyaW5nKGpvYklkKSxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3VsdC5yb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiByZXN1bHQucm93c1swXS5ldmlkZW5jZV91cmk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYmlkcyBmb3IgYSBqb2JcbiAgICovXG4gIGFzeW5jIGxpc3RCaWRzRm9ySm9iKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPEJpZFtdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8QmlkUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdiaWRzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAyLCAvLyBieUpvYiBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbG93ZXJfYm91bmQ6IFN0cmluZyhqb2JJZCksXG4gICAgICBsaW1pdDogMTAwLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiBzYWZlUGFyc2VJbnQocm93LmpvYl9pZCkgPT09IGpvYklkKVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUJpZChyb3cpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBiaWRcbiAgICovXG4gIGFzeW5jIGdldEJpZChpZDogbnVtYmVyKTogUHJvbWlzZTxCaWQgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8QmlkUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdiaWRzJyxcbiAgICAgIGxvd2VyX2JvdW5kOiBTdHJpbmcoaWQpLFxuICAgICAgdXBwZXJfYm91bmQ6IFN0cmluZyhpZCksXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcblxuICAgIGlmIChyZXN1bHQucm93cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLnBhcnNlQmlkKHJlc3VsdC5yb3dzWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgYSBiaWQgb24gYW4gb3BlbiBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgc3VibWl0QmlkKGRhdGE6IFN1Ym1pdEJpZERhdGEpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnc3VibWl0YmlkJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBkYXRhLmpvYl9pZCxcbiAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgIHRpbWVsaW5lOiBkYXRhLnRpbWVsaW5lLFxuICAgICAgICAgIHByb3Bvc2FsOiBkYXRhLnByb3Bvc2FsLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGEgYmlkIChhcyBjbGllbnQpIOKAlCBhc3NpZ25zIHRoZSBhZ2VudCB0byB0aGUgam9iXG4gICAqL1xuICBhc3luYyBzZWxlY3RCaWQoYmlkSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdzZWxlY3RiaWQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYmlkX2lkOiBiaWRJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpdGhkcmF3IGEgYmlkIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIHdpdGhkcmF3QmlkKGJpZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnd2l0aGRyYXdiaWQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBiaWRfaWQ6IGJpZElkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PSBBUkJJVFJBVE9SIE1BTkFHRU1FTlQgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYXMgYW4gYXJiaXRyYXRvclxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXJBcmJpdHJhdG9yKGZlZVBlcmNlbnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdyZWdhcmInLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWNjb3VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGZlZV9wZXJjZW50OiBmZWVQZXJjZW50LFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Rha2UgWFBSIGFzIGFyYml0cmF0b3IgKHZpYSB0b2tlbiB0cmFuc2ZlcilcbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCAtIEFtb3VudCBzdHJpbmcgKGUuZy4sIFwiMTAwMC4wMDAwIFhQUlwiKVxuICAgKi9cbiAgYXN5bmMgc3Rha2VBcmJpdHJhdG9yKGFtb3VudDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogJ2Vvc2lvLnRva2VuJyxcbiAgICAgICAgbmFtZTogJ3RyYW5zZmVyJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGZyb206IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICB0bzogdGhpcy5jb250cmFjdCxcbiAgICAgICAgICBxdWFudGl0eTogYW1vdW50LFxuICAgICAgICAgIG1lbW86ICdhcmJzdGFrZScsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcmJpdHJhdGUgYSBkaXNwdXRlXG4gICAqXG4gICAqIEBwYXJhbSBkaXNwdXRlSWQgLSBUaGUgZGlzcHV0ZSB0byByZXNvbHZlXG4gICAqIEBwYXJhbSBjbGllbnRQZXJjZW50IC0gUGVyY2VudGFnZSBvZiByZW1haW5pbmcgZnVuZHMgdG8gZ2l2ZSB0byBjbGllbnQgKDAtMTAwKVxuICAgKiBAcGFyYW0gcmVzb2x1dGlvbk5vdGVzIC0gRXhwbGFuYXRpb24gb2YgdGhlIHJlc29sdXRpb25cbiAgICovXG4gIGFzeW5jIGFyYml0cmF0ZShcbiAgICBkaXNwdXRlSWQ6IG51bWJlcixcbiAgICBjbGllbnRQZXJjZW50OiBudW1iZXIsXG4gICAgcmVzb2x1dGlvbk5vdGVzOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FyYml0cmF0ZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhcmJpdHJhdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgZGlzcHV0ZV9pZDogZGlzcHV0ZUlkLFxuICAgICAgICAgIGNsaWVudF9wZXJjZW50OiBjbGllbnRQZXJjZW50LFxuICAgICAgICAgIHJlc29sdXRpb25fbm90ZXM6IHJlc29sdXRpb25Ob3RlcyxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBkaXNwdXRlIGFmdGVyIHRpbWVvdXQgKG93bmVyLW9ubHkgZmFsbGJhY2spLlxuICAgKiBDYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXIgMTQgZGF5cyBzaW5jZSBkaXNwdXRlIGNyZWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGlzcHV0ZUlkIC0gVGhlIGRpc3B1dGUgdG8gcmVzb2x2ZVxuICAgKiBAcGFyYW0gY2xpZW50UGVyY2VudCAtIFBlcmNlbnRhZ2Ugb2YgcmVtYWluaW5nIGZ1bmRzIHRvIGdpdmUgdG8gY2xpZW50ICgwLTEwMClcbiAgICogQHBhcmFtIHJlc29sdXRpb25Ob3RlcyAtIEV4cGxhbmF0aW9uIG9mIHRoZSByZXNvbHV0aW9uXG4gICAqL1xuICBhc3luYyByZXNvbHZlVGltZW91dChcbiAgICBkaXNwdXRlSWQ6IG51bWJlcixcbiAgICBjbGllbnRQZXJjZW50OiBudW1iZXIsXG4gICAgcmVzb2x1dGlvbk5vdGVzOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3Jlc29sdmV0bW91dCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBkaXNwdXRlX2lkOiBkaXNwdXRlSWQsXG4gICAgICAgICAgY2xpZW50X3BlcmNlbnQ6IGNsaWVudFBlcmNlbnQsXG4gICAgICAgICAgcmVzb2x1dGlvbl9ub3RlczogcmVzb2x1dGlvbk5vdGVzLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYXJiaXRyYXRvciAobXVzdCBoYXZlIHN1ZmZpY2llbnQgc3Rha2UpXG4gICAqL1xuICBhc3luYyBhY3RpdmF0ZUFyYml0cmF0b3IoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FjdGl2YXRlYXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgYXJiaXRyYXRvciAoc3RvcCBhY2NlcHRpbmcgbmV3IGNhc2VzKVxuICAgKi9cbiAgYXN5bmMgZGVhY3RpdmF0ZUFyYml0cmF0b3IoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2RlYWN0YXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgdG8gdW5zdGFrZSBhcmJpdHJhdG9yIGZ1bmRzICg3LWRheSBkZWxheSkuXG4gICAqIE11c3QgYmUgZGVhY3RpdmF0ZWQgYW5kIGhhdmUgbm8gcGVuZGluZyBkaXNwdXRlcyBmaXJzdC5cbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCAtIEFtb3VudCB0byB1bnN0YWtlIGluIHNtYWxsZXN0IHVuaXRzIChlLmcuLCAxMDAwMCA9IDEuMDAwMCBYUFIpXG4gICAqL1xuICBhc3luYyB1bnN0YWtlQXJiaXRyYXRvcihhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICd1bnN0YWtlYXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXRoZHJhdyB1bnN0YWtlZCBhcmJpdHJhdG9yIGZ1bmRzIChhZnRlciA3LWRheSBkZWxheSlcbiAgICovXG4gIGFzeW5jIHdpdGhkcmF3QXJiaXRyYXRvclN0YWtlKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICd3aXRoZHJhd2FyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgYSBwZW5kaW5nIHVuc3Rha2UgcmVxdWVzdCAocmV0dXJucyBmdW5kcyB0byBhY3RpdmUgc3Rha2UpXG4gICAqL1xuICBhc3luYyBjYW5jZWxBcmJpdHJhdG9yVW5zdGFrZSgpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnY2FuY2VsdW5zdGsnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWNjb3VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgY29tcGxldGVkIGpvYnMgKHBlcm1pc3Npb25sZXNzKVxuICAgKi9cbiAgYXN5bmMgY2xlYW5Kb2JzKG1heEFnZTogbnVtYmVyLCBtYXhEZWxldGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjbGVhbmpvYnMnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbWF4X2FnZTogbWF4QWdlLFxuICAgICAgICAgIG1heF9kZWxldGU6IG1heERlbGV0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIHJlc29sdmVkIGRpc3B1dGVzIChwZXJtaXNzaW9ubGVzcylcbiAgICovXG4gIGFzeW5jIGNsZWFuRGlzcHV0ZXMobWF4QWdlOiBudW1iZXIsIG1heERlbGV0ZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NsZWFuZGlzcHMnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbWF4X2FnZTogbWF4QWdlLFxuICAgICAgICAgIG1heF9kZWxldGU6IG1heERlbGV0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gSEVMUEVSUyA9PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVxdWlyZVNlc3Npb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvbiByZXF1aXJlZCBmb3Igd3JpdGUgb3BlcmF0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VKb2IocmF3OiBKb2JSYXcpOiBKb2Ige1xuICAgIGxldCBkZWxpdmVyYWJsZXM6IHN0cmluZ1tdID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGRlbGl2ZXJhYmxlcyA9IEpTT04ucGFyc2UocmF3LmRlbGl2ZXJhYmxlcyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBkZWxpdmVyYWJsZXMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNhZmVQYXJzZUludChyYXcuaWQpLFxuICAgICAgY2xpZW50OiByYXcuY2xpZW50LFxuICAgICAgYWdlbnQ6IHJhdy5hZ2VudCxcbiAgICAgIHRpdGxlOiByYXcudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogcmF3LmRlc2NyaXB0aW9uLFxuICAgICAgZGVsaXZlcmFibGVzLFxuICAgICAgYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LmFtb3VudCksXG4gICAgICBzeW1ib2w6IHJhdy5zeW1ib2wsXG4gICAgICBmdW5kZWRfYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LmZ1bmRlZF9hbW91bnQpLFxuICAgICAgcmVsZWFzZWRfYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LnJlbGVhc2VkX2Ftb3VudCksXG4gICAgICBzdGF0ZTogSk9CX1NUQVRFU1tyYXcuc3RhdGVdIHx8ICdjcmVhdGVkJyxcbiAgICAgIGRlYWRsaW5lOiBzYWZlUGFyc2VJbnQocmF3LmRlYWRsaW5lKSxcbiAgICAgIGFyYml0cmF0b3I6IHJhdy5hcmJpdHJhdG9yLFxuICAgICAgam9iX2hhc2g6IHJhdy5qb2JfaGFzaCxcbiAgICAgIGNyZWF0ZWRfYXQ6IHNhZmVQYXJzZUludChyYXcuY3JlYXRlZF9hdCksXG4gICAgICB1cGRhdGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LnVwZGF0ZWRfYXQpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTWlsZXN0b25lKHJhdzogTWlsZXN0b25lUmF3KTogTWlsZXN0b25lIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNhZmVQYXJzZUludChyYXcuaWQpLFxuICAgICAgam9iX2lkOiBzYWZlUGFyc2VJbnQocmF3LmpvYl9pZCksXG4gICAgICB0aXRsZTogcmF3LnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IHJhdy5kZXNjcmlwdGlvbixcbiAgICAgIGFtb3VudDogc2FmZVBhcnNlSW50KHJhdy5hbW91bnQpLFxuICAgICAgb3JkZXI6IHJhdy5vcmRlcixcbiAgICAgIHN0YXRlOiBNSUxFU1RPTkVfU1RBVEVTW3Jhdy5zdGF0ZV0gfHwgJ3BlbmRpbmcnLFxuICAgICAgZXZpZGVuY2VfdXJpOiByYXcuZXZpZGVuY2VfdXJpLFxuICAgICAgc3VibWl0dGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LnN1Ym1pdHRlZF9hdCksXG4gICAgICBhcHByb3ZlZF9hdDogc2FmZVBhcnNlSW50KHJhdy5hcHByb3ZlZF9hdCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWQocmF3OiBCaWRSYXcpOiBCaWQge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2FmZVBhcnNlSW50KHJhdy5pZCksXG4gICAgICBqb2JfaWQ6IHNhZmVQYXJzZUludChyYXcuam9iX2lkKSxcbiAgICAgIGFnZW50OiByYXcuYWdlbnQsXG4gICAgICBhbW91bnQ6IHNhZmVQYXJzZUludChyYXcuYW1vdW50KSxcbiAgICAgIHRpbWVsaW5lOiBzYWZlUGFyc2VJbnQocmF3LnRpbWVsaW5lKSxcbiAgICAgIHByb3Bvc2FsOiByYXcucHJvcG9zYWwsXG4gICAgICBjcmVhdGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LmNyZWF0ZWRfYXQpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
904
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXNjcm93UmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRXNjcm93UmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsbUNBQXVDO0FBaUt2QywrQ0FBK0M7QUFFL0MsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxVQUFVLEdBQWU7SUFDN0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWTtJQUM3QyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWTtDQUMvRCxDQUFDO0FBQ0YsTUFBTSxnQkFBZ0IsR0FBcUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1RixNQUFNLG1CQUFtQixHQUF3QixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRW5HLE1BQWEsY0FBYztJQUt6QixZQUFZLEdBQVksRUFBRSxPQUF1QixFQUFFLFFBQWlCO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGdCQUFnQixDQUFDO0lBQy9DLENBQUM7SUFFRCxnREFBZ0Q7SUFFaEQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBUztZQUNuRCxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDcEIsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixX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T0FBTztZQUNMLEVBQUUsRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEVBQUUsSUFBQSxvQkFBWSxFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDaEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxRQUFRLEVBQUUsSUFBQSxvQkFBWSxFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDcEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLFVBQVUsRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeC9CRCx3Q0F3L0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSnNvblJwYyxcbiAgUHJvdG9uU2Vzc2lvbixcbiAgVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFBhZ2luYXRlZFJlc3VsdCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYWZlUGFyc2VJbnQgfSBmcm9tICcuL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT0gRXNjcm93IFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9iIHtcbiAgaWQ6IG51bWJlcjtcbiAgY2xpZW50OiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlbGl2ZXJhYmxlczogc3RyaW5nW107XG4gIGFtb3VudDogbnVtYmVyO1xuICBzeW1ib2w6IHN0cmluZztcbiAgZnVuZGVkX2Ftb3VudDogbnVtYmVyO1xuICByZWxlYXNlZF9hbW91bnQ6IG51bWJlcjtcbiAgc3RhdGU6IEpvYlN0YXRlO1xuICBkZWFkbGluZTogbnVtYmVyO1xuICBhcmJpdHJhdG9yOiBzdHJpbmc7XG4gIGpvYl9oYXNoOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgdXBkYXRlZF9hdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvYlJhdyB7XG4gIGlkOiBzdHJpbmc7XG4gIGNsaWVudDogc3RyaW5nO1xuICBhZ2VudDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxpdmVyYWJsZXM6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBmdW5kZWRfYW1vdW50OiBzdHJpbmc7XG4gIHJlbGVhc2VkX2Ftb3VudDogc3RyaW5nO1xuICBzdGF0ZTogbnVtYmVyO1xuICBkZWFkbGluZTogc3RyaW5nO1xuICBhcmJpdHJhdG9yOiBzdHJpbmc7XG4gIGpvYl9oYXNoOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgdXBkYXRlZF9hdDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBKb2JTdGF0ZSA9XG4gIHwgJ2NyZWF0ZWQnXG4gIHwgJ2Z1bmRlZCdcbiAgfCAnYWNjZXB0ZWQnXG4gIHwgJ2lucHJvZ3Jlc3MnXG4gIHwgJ2RlbGl2ZXJlZCdcbiAgfCAnZGlzcHV0ZWQnXG4gIHwgJ2NvbXBsZXRlZCdcbiAgfCAncmVmdW5kZWQnXG4gIHwgJ2FyYml0cmF0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pbGVzdG9uZSB7XG4gIGlkOiBudW1iZXI7XG4gIGpvYl9pZDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgb3JkZXI6IG51bWJlcjtcbiAgc3RhdGU6IE1pbGVzdG9uZVN0YXRlO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgc3VibWl0dGVkX2F0OiBudW1iZXI7XG4gIGFwcHJvdmVkX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlsZXN0b25lUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgam9iX2lkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xuICBzdGF0ZTogbnVtYmVyO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgc3VibWl0dGVkX2F0OiBzdHJpbmc7XG4gIGFwcHJvdmVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE1pbGVzdG9uZVN0YXRlID0gJ3BlbmRpbmcnIHwgJ3N1Ym1pdHRlZCcgfCAnYXBwcm92ZWQnIHwgJ2Rpc3B1dGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBFc2Nyb3dEaXNwdXRlIHtcbiAgaWQ6IG51bWJlcjtcbiAgam9iX2lkOiBudW1iZXI7XG4gIHJhaXNlZF9ieTogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIGNsaWVudF9hbW91bnQ6IG51bWJlcjtcbiAgYWdlbnRfYW1vdW50OiBudW1iZXI7XG4gIHJlc29sdXRpb246IERpc3B1dGVSZXNvbHV0aW9uO1xuICByZXNvbHZlcjogc3RyaW5nO1xuICByZXNvbHV0aW9uX25vdGVzOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgcmVzb2x2ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGlzcHV0ZVJlc29sdXRpb24gPSAncGVuZGluZycgfCAnY2xpZW50X3dpbnMnIHwgJ2FnZW50X3dpbnMnIHwgJ3NwbGl0JztcblxuZXhwb3J0IGludGVyZmFjZSBBcmJpdHJhdG9yIHtcbiAgYWNjb3VudDogc3RyaW5nO1xuICBzdGFrZTogbnVtYmVyO1xuICBmZWVfcGVyY2VudDogbnVtYmVyO1xuICB0b3RhbF9jYXNlczogbnVtYmVyO1xuICBzdWNjZXNzZnVsX2Nhc2VzOiBudW1iZXI7XG4gIGFjdGl2ZV9kaXNwdXRlczogbnVtYmVyO1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlkIHtcbiAgaWQ6IG51bWJlcjtcbiAgam9iX2lkOiBudW1iZXI7XG4gIGFnZW50OiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyO1xuICB0aW1lbGluZTogbnVtYmVyO1xuICBwcm9wb3NhbDogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlkUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgam9iX2lkOiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICB0aW1lbGluZTogc3RyaW5nO1xuICBwcm9wb3NhbDogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlSm9iRGF0YSB7XG4gIGFnZW50Pzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxpdmVyYWJsZXM6IHN0cmluZ1tdO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgc3ltYm9sPzogc3RyaW5nO1xuICBkZWFkbGluZT86IG51bWJlcjtcbiAgYXJiaXRyYXRvcj86IHN0cmluZztcbiAgam9iX2hhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibWl0QmlkRGF0YSB7XG4gIGpvYl9pZDogbnVtYmVyO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgdGltZWxpbmU6IG51bWJlcjtcbiAgcHJvcG9zYWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRNaWxlc3RvbmVEYXRhIHtcbiAgam9iX2lkOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvYkxpc3RPcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgc3RhdGU/OiBKb2JTdGF0ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT0gUmVnaXN0cnkgQ2xhc3MgPT09PT09PT09PT09PT1cblxuY29uc3QgREVGQVVMVF9DT05UUkFDVCA9ICdhZ2VudGVzY3Jvdyc7XG5jb25zdCBKT0JfU1RBVEVTOiBKb2JTdGF0ZVtdID0gW1xuICAnY3JlYXRlZCcsICdmdW5kZWQnLCAnYWNjZXB0ZWQnLCAnaW5wcm9ncmVzcycsXG4gICdkZWxpdmVyZWQnLCAnZGlzcHV0ZWQnLCAnY29tcGxldGVkJywgJ3JlZnVuZGVkJywgJ2FyYml0cmF0ZWQnXG5dO1xuY29uc3QgTUlMRVNUT05FX1NUQVRFUzogTWlsZXN0b25lU3RhdGVbXSA9IFsncGVuZGluZycsICdzdWJtaXR0ZWQnLCAnYXBwcm92ZWQnLCAnZGlzcHV0ZWQnXTtcbmNvbnN0IERJU1BVVEVfUkVTT0xVVElPTlM6IERpc3B1dGVSZXNvbHV0aW9uW10gPSBbJ3BlbmRpbmcnLCAnY2xpZW50X3dpbnMnLCAnYWdlbnRfd2lucycsICdzcGxpdCddO1xuXG5leHBvcnQgY2xhc3MgRXNjcm93UmVnaXN0cnkge1xuICBwcml2YXRlIHJwYzogSnNvblJwYztcbiAgcHJpdmF0ZSBzZXNzaW9uOiBQcm90b25TZXNzaW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBjb250cmFjdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHJwYzogSnNvblJwYywgc2Vzc2lvbj86IFByb3RvblNlc3Npb24sIGNvbnRyYWN0Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5ycGMgPSBycGM7XG4gICAgdGhpcy5zZXNzaW9uID0gc2Vzc2lvbiB8fCBudWxsO1xuICAgIHRoaXMuY29udHJhY3QgPSBjb250cmFjdCB8fCBERUZBVUxUX0NPTlRSQUNUO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gUkVBRCBPUEVSQVRJT05TID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCBhIGpvYiBieSBJRFxuICAgKi9cbiAgYXN5bmMgZ2V0Sm9iKGlkOiBudW1iZXIpOiBQcm9taXNlPEpvYiB8IG51bGw+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgbG93ZXJfYm91bmQ6IFN0cmluZyhpZCksXG4gICAgICB1cHBlcl9ib3VuZDogU3RyaW5nKGlkKSxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3VsdC5yb3dzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VKb2IocmVzdWx0LnJvd3NbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgam9icyBmb3IgYSBjbGllbnRcbiAgICovXG4gIGFzeW5jIGxpc3RKb2JzQnlDbGllbnQoY2xpZW50OiBzdHJpbmcsIG9wdGlvbnM6IEpvYkxpc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3VsdDxKb2I+PiB7XG4gICAgY29uc3QgeyBsaW1pdCA9IDEwMCB9ID0gb3B0aW9ucztcblxuICAgIC8vIFVzZSBzZWNvbmRhcnkgaW5kZXggd2l0aCBjbGllbnQgbmFtZSBhcyBib3VuZHMgdG8gZWZmaWNpZW50bHkgcXVlcnlcbiAgICAvLyBvbmx5IHJvd3MgZm9yIHRoaXMgY2xpZW50LCBpbnN0ZWFkIG9mIHNjYW5uaW5nIGZyb20gaW5kZXggcG9zaXRpb24gMC5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDIsIC8vIGJ5Q2xpZW50IGluZGV4XG4gICAgICBrZXlfdHlwZTogJ25hbWUnLFxuICAgICAgbG93ZXJfYm91bmQ6IGNsaWVudCxcbiAgICAgIHVwcGVyX2JvdW5kOiBjbGllbnQsXG4gICAgICBsaW1pdDogbGltaXQgKyAxLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFzTW9yZSA9IHJlc3VsdC5yb3dzLmxlbmd0aCA+IGxpbWl0O1xuICAgIGNvbnN0IHJvd3MgPSBoYXNNb3JlID8gcmVzdWx0LnJvd3Muc2xpY2UoMCwgbGltaXQpIDogcmVzdWx0LnJvd3M7XG4gICAgbGV0IGpvYnMgPSByb3dzLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKTtcblxuICAgIGlmIChvcHRpb25zLnN0YXRlKSB7XG4gICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLnN0YXRlID09PSBvcHRpb25zLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IGpvYnMsXG4gICAgICBoYXNNb3JlLFxuICAgICAgbmV4dEN1cnNvcjogaGFzTW9yZSAmJiByb3dzLmxlbmd0aCA+IDAgPyByb3dzW3Jvd3MubGVuZ3RoIC0gMV0uaWQgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGpvYnMgZm9yIGFuIGFnZW50XG4gICAqL1xuICBhc3luYyBsaXN0Sm9ic0J5QWdlbnQoYWdlbnQ6IHN0cmluZywgb3B0aW9uczogSm9iTGlzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PEpvYj4+IHtcbiAgICBjb25zdCB7IGxpbWl0ID0gMTAwIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gVXNlIHNlY29uZGFyeSBpbmRleCB3aXRoIGFnZW50IG5hbWUgYXMgYm91bmRzIHRvIGVmZmljaWVudGx5IHF1ZXJ5XG4gICAgLy8gb25seSByb3dzIGZvciB0aGlzIGFnZW50LCBpbnN0ZWFkIG9mIHNjYW5uaW5nIGZyb20gaW5kZXggcG9zaXRpb24gMC5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDMsIC8vIGJ5QWdlbnQgaW5kZXhcbiAgICAgIGtleV90eXBlOiAnbmFtZScsXG4gICAgICBsb3dlcl9ib3VuZDogYWdlbnQsXG4gICAgICB1cHBlcl9ib3VuZDogYWdlbnQsXG4gICAgICBsaW1pdDogbGltaXQgKyAxLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFzTW9yZSA9IHJlc3VsdC5yb3dzLmxlbmd0aCA+IGxpbWl0O1xuICAgIGNvbnN0IHJvd3MgPSBoYXNNb3JlID8gcmVzdWx0LnJvd3Muc2xpY2UoMCwgbGltaXQpIDogcmVzdWx0LnJvd3M7XG4gICAgbGV0IGpvYnMgPSByb3dzLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKTtcblxuICAgIGlmIChvcHRpb25zLnN0YXRlKSB7XG4gICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLnN0YXRlID09PSBvcHRpb25zLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IGpvYnMsXG4gICAgICBoYXNNb3JlLFxuICAgICAgbmV4dEN1cnNvcjogaGFzTW9yZSAmJiByb3dzLmxlbmd0aCA+IDAgPyByb3dzW3Jvd3MubGVuZ3RoIC0gMV0uaWQgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWlsZXN0b25lcyBmb3IgYSBqb2JcbiAgICovXG4gIGFzeW5jIGdldEpvYk1pbGVzdG9uZXMoam9iSWQ6IG51bWJlcik6IFByb21pc2U8TWlsZXN0b25lW10+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxNaWxlc3RvbmVSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ21pbGVzdG9uZXMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDIsIC8vIGJ5Sm9iIGluZGV4XG4gICAgICBrZXlfdHlwZTogJ2k2NCcsXG4gICAgICBsaW1pdDogMTAwLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiBzYWZlUGFyc2VJbnQocm93LmpvYl9pZCkgPT09IGpvYklkKVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZU1pbGVzdG9uZShyb3cpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlzcHV0ZSBmb3IgYSBqb2JcbiAgICovXG4gIGFzeW5jIGdldEpvYkRpc3B1dGUoam9iSWQ6IG51bWJlcik6IFByb21pc2U8RXNjcm93RGlzcHV0ZSB8IG51bGw+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czx7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgam9iX2lkOiBzdHJpbmc7XG4gICAgICByYWlzZWRfYnk6IHN0cmluZztcbiAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gICAgICBjbGllbnRfYW1vdW50OiBzdHJpbmc7XG4gICAgICBhZ2VudF9hbW91bnQ6IHN0cmluZztcbiAgICAgIHJlc29sdXRpb246IG51bWJlcjtcbiAgICAgIHJlc29sdmVyOiBzdHJpbmc7XG4gICAgICByZXNvbHV0aW9uX25vdGVzOiBzdHJpbmc7XG4gICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICByZXNvbHZlZF9hdDogc3RyaW5nO1xuICAgIH0+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2Rpc3B1dGVzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAyLCAvLyBieUpvYiBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbGltaXQ6IDEwMCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRpc3B1dGUgPSByZXN1bHQucm93cy5maW5kKHJvdyA9PiBzYWZlUGFyc2VJbnQocm93LmpvYl9pZCkgPT09IGpvYklkKTtcbiAgICBpZiAoIWRpc3B1dGUpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5pZCksXG4gICAgICBqb2JfaWQ6IHNhZmVQYXJzZUludChkaXNwdXRlLmpvYl9pZCksXG4gICAgICByYWlzZWRfYnk6IGRpc3B1dGUucmFpc2VkX2J5LFxuICAgICAgcmVhc29uOiBkaXNwdXRlLnJlYXNvbixcbiAgICAgIGV2aWRlbmNlX3VyaTogZGlzcHV0ZS5ldmlkZW5jZV91cmksXG4gICAgICBjbGllbnRfYW1vdW50OiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5jbGllbnRfYW1vdW50KSxcbiAgICAgIGFnZW50X2Ftb3VudDogc2FmZVBhcnNlSW50KGRpc3B1dGUuYWdlbnRfYW1vdW50KSxcbiAgICAgIHJlc29sdXRpb246IERJU1BVVEVfUkVTT0xVVElPTlNbZGlzcHV0ZS5yZXNvbHV0aW9uXSxcbiAgICAgIHJlc29sdmVyOiBkaXNwdXRlLnJlc29sdmVyLFxuICAgICAgcmVzb2x1dGlvbl9ub3RlczogZGlzcHV0ZS5yZXNvbHV0aW9uX25vdGVzLFxuICAgICAgY3JlYXRlZF9hdDogc2FmZVBhcnNlSW50KGRpc3B1dGUuY3JlYXRlZF9hdCksXG4gICAgICByZXNvbHZlZF9hdDogc2FmZVBhcnNlSW50KGRpc3B1dGUucmVzb2x2ZWRfYXQpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhdmFpbGFibGUgYXJiaXRyYXRvcnNcbiAgICovXG4gIGFzeW5jIGxpc3RBcmJpdHJhdG9ycygpOiBQcm9taXNlPEFyYml0cmF0b3JbXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPHtcbiAgICAgIGFjY291bnQ6IHN0cmluZztcbiAgICAgIHN0YWtlOiBzdHJpbmc7XG4gICAgICBmZWVfcGVyY2VudDogc3RyaW5nO1xuICAgICAgdG90YWxfY2FzZXM6IHN0cmluZztcbiAgICAgIHN1Y2Nlc3NmdWxfY2FzZXM6IHN0cmluZztcbiAgICAgIGFjdGl2ZV9kaXNwdXRlczogc3RyaW5nO1xuICAgICAgYWN0aXZlOiBudW1iZXI7XG4gICAgfT4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnYXJiaXRyYXRvcnMnLFxuICAgICAgbGltaXQ6IDEwMCxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1xuICAgICAgLmZpbHRlcihyb3cgPT4gcm93LmFjdGl2ZSA9PT0gMSlcbiAgICAgIC5tYXAocm93ID0+ICh7XG4gICAgICAgIGFjY291bnQ6IHJvdy5hY2NvdW50LFxuICAgICAgICBzdGFrZTogc2FmZVBhcnNlSW50KHJvdy5zdGFrZSksXG4gICAgICAgIGZlZV9wZXJjZW50OiBzYWZlUGFyc2VJbnQocm93LmZlZV9wZXJjZW50KSxcbiAgICAgICAgdG90YWxfY2FzZXM6IHNhZmVQYXJzZUludChyb3cudG90YWxfY2FzZXMpLFxuICAgICAgICBzdWNjZXNzZnVsX2Nhc2VzOiBzYWZlUGFyc2VJbnQocm93LnN1Y2Nlc3NmdWxfY2FzZXMpLFxuICAgICAgICBhY3RpdmVfZGlzcHV0ZXM6IHNhZmVQYXJzZUludChyb3cuYWN0aXZlX2Rpc3B1dGVzKSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgfSkpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gV1JJVEUgT1BFUkFUSU9OUyA9PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgam9iXG4gICAqL1xuICBhc3luYyBjcmVhdGVKb2IoZGF0YTogQ3JlYXRlSm9iRGF0YSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjcmVhdGVqb2InLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYWdlbnQ6IGRhdGEuYWdlbnQgfHwgJycsXG4gICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgZGVsaXZlcmFibGVzOiBKU09OLnN0cmluZ2lmeShkYXRhLmRlbGl2ZXJhYmxlcyksXG4gICAgICAgICAgYW1vdW50OiBkYXRhLmFtb3VudCxcbiAgICAgICAgICBzeW1ib2w6IGRhdGEuc3ltYm9sIHx8ICdYUFInLFxuICAgICAgICAgIGRlYWRsaW5lOiBkYXRhLmRlYWRsaW5lIHx8IDAsXG4gICAgICAgICAgYXJiaXRyYXRvcjogZGF0YS5hcmJpdHJhdG9yIHx8ICcnLFxuICAgICAgICAgIGpvYl9oYXNoOiBkYXRhLmpvYl9oYXNoIHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuZCBhIGpvYlxuICAgKi9cbiAgYXN5bmMgZnVuZEpvYihqb2JJZDogbnVtYmVyLCBhbW91bnQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6ICdlb3Npby50b2tlbicsXG4gICAgICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmcm9tOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgdG86IHRoaXMuY29udHJhY3QsXG4gICAgICAgICAgcXVhbnRpdHk6IGFtb3VudCxcbiAgICAgICAgICBtZW1vOiBgZnVuZDoke2pvYklkfWAsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgYSBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgYWNjZXB0Sm9iKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYWNjZXB0am9iJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHdvcmtpbmcgb24gYSBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgc3RhcnRKb2Ioam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdzdGFydGpvYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhZ2VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxpdmVyIGEgam9iIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIGRlbGl2ZXJKb2Ioam9iSWQ6IG51bWJlciwgZXZpZGVuY2VVcmk6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdkZWxpdmVyJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgICBldmlkZW5jZV91cmk6IGV2aWRlbmNlVXJpLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBkZWxpdmVyeSAoYXMgY2xpZW50KVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZURlbGl2ZXJ5KGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYXBwcm92ZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbWlsZXN0b25lIHRvIGEgam9iXG4gICAqL1xuICBhc3luYyBhZGRNaWxlc3RvbmUoZGF0YTogQWRkTWlsZXN0b25lRGF0YSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhZGRtaWxlc3RvbmUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBkYXRhLmpvYl9pZCxcbiAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgIG9yZGVyOiBkYXRhLm9yZGVyLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGEgbWlsZXN0b25lIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIHN1Ym1pdE1pbGVzdG9uZShtaWxlc3RvbmVJZDogbnVtYmVyLCBldmlkZW5jZVVyaTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3N1Ym1pdG1pbGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBtaWxlc3RvbmVfaWQ6IG1pbGVzdG9uZUlkLFxuICAgICAgICAgIGV2aWRlbmNlX3VyaTogZXZpZGVuY2VVcmksXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIGEgbWlsZXN0b25lIChhcyBjbGllbnQpXG4gICAqL1xuICBhc3luYyBhcHByb3ZlTWlsZXN0b25lKG1pbGVzdG9uZUlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYXBwcm92ZW1pbGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgbWlsZXN0b25lX2lkOiBtaWxlc3RvbmVJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJhaXNlIGEgZGlzcHV0ZVxuICAgKi9cbiAgYXN5bmMgcmFpc2VEaXNwdXRlKGpvYklkOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCBldmlkZW5jZVVyaT86IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdkaXNwdXRlJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJhaXNlZF9ieTogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgICAgcmVhc29uLFxuICAgICAgICAgIGV2aWRlbmNlX3VyaTogZXZpZGVuY2VVcmkgfHwgJycsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgYSBqb2IgKGFzIGNsaWVudClcbiAgICovXG4gIGFzeW5jIGNhbmNlbEpvYihqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NhbmNlbCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xhaW0gdGltZW91dCAocmVmdW5kIG9yIGF1dG8tYXBwcm92ZSlcbiAgICovXG4gIGFzeW5jIGNsYWltVGltZW91dChqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3RpbWVvdXQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xhaW1lcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFpbSBhY2NlcHRhbmNlIHRpbWVvdXQgcmVmdW5kIChhcyBjbGllbnQpXG4gICAqL1xuICBhc3luYyBjbGFpbUFjY2VwdGFuY2VUaW1lb3V0KGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYWNjcHR0aW1lb3V0JyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09IEJJRERJTkcgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTGlzdCBvcGVuIGpvYnMgKGFnZW50IG5vdCBhc3NpZ25lZClcbiAgICovXG4gIGFzeW5jIGxpc3RPcGVuSm9icyhvcHRpb25zOiBKb2JMaXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXN1bHQ8Sm9iPj4ge1xuICAgIGNvbnN0IHsgbGltaXQgPSAxMDAsIGN1cnNvciB9ID0gb3B0aW9ucztcblxuICAgIC8vIE9wZW4gam9icyBhcmUgc3BhcnNlIGluIHRoZSB0YWJsZSDigJQgd2UgbXVzdCBwYWdpbmF0ZSB0aHJvdWdoIGFsbCByb3dzXG4gICAgLy8gdG8gZmluZCBlbm91Z2ggb3BlbiBqb2JzIChhZ2VudCBpcyBlbXB0eSksIG5vdCBqdXN0IGZldGNoIGBsaW1pdGAgcm93cy5cbiAgICBjb25zdCBCQVRDSF9TSVpFID0gMTAwO1xuICAgIGxldCBsb3dlckJvdW5kID0gY3Vyc29yO1xuICAgIGxldCBvcGVuSm9iczogSm9iW10gPSBbXTtcbiAgICBsZXQgdGFibGVIYXNNb3JlID0gdHJ1ZTtcblxuICAgIHdoaWxlIChvcGVuSm9icy5sZW5ndGggPCBsaW1pdCAmJiB0YWJsZUhhc01vcmUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEpvYlJhdz4oe1xuICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgICAgdGFibGU6ICdqb2JzJyxcbiAgICAgICAgbG93ZXJfYm91bmQ6IGxvd2VyQm91bmQsXG4gICAgICAgIGxpbWl0OiBCQVRDSF9TSVpFLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQucm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGFibGVIYXNNb3JlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0YWJsZUhhc01vcmUgPSByZXN1bHQucm93cy5sZW5ndGggPT09IEJBVENIX1NJWkU7XG4gICAgICBsb3dlckJvdW5kID0gcmVzdWx0LnJvd3NbcmVzdWx0LnJvd3MubGVuZ3RoIC0gMV0uaWQgKyAxO1xuXG4gICAgICAvLyBGaWx0ZXIgZm9yIGVtcHR5IGFnZW50IEFORCBvbmx5IENSRUFURUQgc3RhdGUgKDApIGJ5IGRlZmF1bHQuXG4gICAgICAvLyBSZWZ1bmRlZC9jb21wbGV0ZWQgam9icyB3aXRoIGVtcHR5IGFnZW50IGFyZSBub3QgdHJ1bHkgXCJvcGVuXCIuXG4gICAgICBjb25zdCB0YXJnZXRTdGF0ZSA9IG9wdGlvbnMuc3RhdGUgPz8gJ2NyZWF0ZWQnO1xuICAgICAgbGV0IGJhdGNoID0gcmVzdWx0LnJvd3NcbiAgICAgICAgLmZpbHRlcihyb3cgPT4gcm93LmFnZW50ID09PSAnJyB8fCByb3cuYWdlbnQgPT09ICcuLi4uLi4uLi4uLi4uJylcbiAgICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKVxuICAgICAgICAuZmlsdGVyKGogPT4gai5zdGF0ZSA9PT0gdGFyZ2V0U3RhdGUpO1xuXG4gICAgICBvcGVuSm9icy5wdXNoKC4uLmJhdGNoKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNNb3JlID0gb3BlbkpvYnMubGVuZ3RoID4gbGltaXQgfHwgdGFibGVIYXNNb3JlO1xuICAgIGNvbnN0IGl0ZW1zID0gb3BlbkpvYnMuc2xpY2UoMCwgbGltaXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zLFxuICAgICAgaGFzTW9yZSxcbiAgICAgIG5leHRDdXJzb3I6IGhhc01vcmUgJiYgaXRlbXMubGVuZ3RoID4gMCA/IFN0cmluZyhpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5pZCArIDEpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGV2aWRlbmNlIFVSSSBmb3IgYSBkZWxpdmVyZWQgam9iIChzdG9yZWQgaW4gc2VwYXJhdGUgam9iZXZpZGVuY2UgdGFibGUpXG4gICAqL1xuICBhc3luYyBnZXRKb2JFdmlkZW5jZShqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8eyBqb2JfaWQ6IHN0cmluZzsgZXZpZGVuY2VfdXJpOiBzdHJpbmcgfT4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnam9iZXZpZGVuY2UnLFxuICAgICAgbG93ZXJfYm91bmQ6IFN0cmluZyhqb2JJZCksXG4gICAgICB1cHBlcl9ib3VuZDogU3RyaW5nKGpvYklkKSxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3VsdC5yb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiByZXN1bHQucm93c1swXS5ldmlkZW5jZV91cmk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYmlkcyBmb3IgYSBqb2JcbiAgICovXG4gIGFzeW5jIGxpc3RCaWRzRm9ySm9iKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPEJpZFtdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8QmlkUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdiaWRzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAyLCAvLyBieUpvYiBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbG93ZXJfYm91bmQ6IFN0cmluZyhqb2JJZCksXG4gICAgICBsaW1pdDogMTAwLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiBzYWZlUGFyc2VJbnQocm93LmpvYl9pZCkgPT09IGpvYklkKVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUJpZChyb3cpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBiaWRcbiAgICovXG4gIGFzeW5jIGdldEJpZChpZDogbnVtYmVyKTogUHJvbWlzZTxCaWQgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8QmlkUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdiaWRzJyxcbiAgICAgIGxvd2VyX2JvdW5kOiBTdHJpbmcoaWQpLFxuICAgICAgdXBwZXJfYm91bmQ6IFN0cmluZyhpZCksXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcblxuICAgIGlmIChyZXN1bHQucm93cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLnBhcnNlQmlkKHJlc3VsdC5yb3dzWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgYSBiaWQgb24gYW4gb3BlbiBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgc3VibWl0QmlkKGRhdGE6IFN1Ym1pdEJpZERhdGEpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnc3VibWl0YmlkJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBkYXRhLmpvYl9pZCxcbiAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgIHRpbWVsaW5lOiBkYXRhLnRpbWVsaW5lLFxuICAgICAgICAgIHByb3Bvc2FsOiBkYXRhLnByb3Bvc2FsLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGEgYmlkIChhcyBjbGllbnQpIOKAlCBhc3NpZ25zIHRoZSBhZ2VudCB0byB0aGUgam9iXG4gICAqL1xuICBhc3luYyBzZWxlY3RCaWQoYmlkSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdzZWxlY3RiaWQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYmlkX2lkOiBiaWRJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpdGhkcmF3IGEgYmlkIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIHdpdGhkcmF3QmlkKGJpZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnd2l0aGRyYXdiaWQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBiaWRfaWQ6IGJpZElkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PSBBUkJJVFJBVE9SIE1BTkFHRU1FTlQgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYXMgYW4gYXJiaXRyYXRvclxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXJBcmJpdHJhdG9yKGZlZVBlcmNlbnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdyZWdhcmInLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWNjb3VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGZlZV9wZXJjZW50OiBmZWVQZXJjZW50LFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Rha2UgWFBSIGFzIGFyYml0cmF0b3IgKHZpYSB0b2tlbiB0cmFuc2ZlcilcbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCAtIEFtb3VudCBzdHJpbmcgKGUuZy4sIFwiMTAwMC4wMDAwIFhQUlwiKVxuICAgKi9cbiAgYXN5bmMgc3Rha2VBcmJpdHJhdG9yKGFtb3VudDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogJ2Vvc2lvLnRva2VuJyxcbiAgICAgICAgbmFtZTogJ3RyYW5zZmVyJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGZyb206IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICB0bzogdGhpcy5jb250cmFjdCxcbiAgICAgICAgICBxdWFudGl0eTogYW1vdW50LFxuICAgICAgICAgIG1lbW86ICdhcmJzdGFrZScsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcmJpdHJhdGUgYSBkaXNwdXRlXG4gICAqXG4gICAqIEBwYXJhbSBkaXNwdXRlSWQgLSBUaGUgZGlzcHV0ZSB0byByZXNvbHZlXG4gICAqIEBwYXJhbSBjbGllbnRQZXJjZW50IC0gUGVyY2VudGFnZSBvZiByZW1haW5pbmcgZnVuZHMgdG8gZ2l2ZSB0byBjbGllbnQgKDAtMTAwKVxuICAgKiBAcGFyYW0gcmVzb2x1dGlvbk5vdGVzIC0gRXhwbGFuYXRpb24gb2YgdGhlIHJlc29sdXRpb25cbiAgICovXG4gIGFzeW5jIGFyYml0cmF0ZShcbiAgICBkaXNwdXRlSWQ6IG51bWJlcixcbiAgICBjbGllbnRQZXJjZW50OiBudW1iZXIsXG4gICAgcmVzb2x1dGlvbk5vdGVzOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FyYml0cmF0ZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhcmJpdHJhdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgZGlzcHV0ZV9pZDogZGlzcHV0ZUlkLFxuICAgICAgICAgIGNsaWVudF9wZXJjZW50OiBjbGllbnRQZXJjZW50LFxuICAgICAgICAgIHJlc29sdXRpb25fbm90ZXM6IHJlc29sdXRpb25Ob3RlcyxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBkaXNwdXRlIGFmdGVyIHRpbWVvdXQgKG93bmVyLW9ubHkgZmFsbGJhY2spLlxuICAgKiBDYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXIgMTQgZGF5cyBzaW5jZSBkaXNwdXRlIGNyZWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGlzcHV0ZUlkIC0gVGhlIGRpc3B1dGUgdG8gcmVzb2x2ZVxuICAgKiBAcGFyYW0gY2xpZW50UGVyY2VudCAtIFBlcmNlbnRhZ2Ugb2YgcmVtYWluaW5nIGZ1bmRzIHRvIGdpdmUgdG8gY2xpZW50ICgwLTEwMClcbiAgICogQHBhcmFtIHJlc29sdXRpb25Ob3RlcyAtIEV4cGxhbmF0aW9uIG9mIHRoZSByZXNvbHV0aW9uXG4gICAqL1xuICBhc3luYyByZXNvbHZlVGltZW91dChcbiAgICBkaXNwdXRlSWQ6IG51bWJlcixcbiAgICBjbGllbnRQZXJjZW50OiBudW1iZXIsXG4gICAgcmVzb2x1dGlvbk5vdGVzOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3Jlc29sdmV0bW91dCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBkaXNwdXRlX2lkOiBkaXNwdXRlSWQsXG4gICAgICAgICAgY2xpZW50X3BlcmNlbnQ6IGNsaWVudFBlcmNlbnQsXG4gICAgICAgICAgcmVzb2x1dGlvbl9ub3RlczogcmVzb2x1dGlvbk5vdGVzLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYXJiaXRyYXRvciAobXVzdCBoYXZlIHN1ZmZpY2llbnQgc3Rha2UpXG4gICAqL1xuICBhc3luYyBhY3RpdmF0ZUFyYml0cmF0b3IoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FjdGl2YXRlYXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgYXJiaXRyYXRvciAoc3RvcCBhY2NlcHRpbmcgbmV3IGNhc2VzKVxuICAgKi9cbiAgYXN5bmMgZGVhY3RpdmF0ZUFyYml0cmF0b3IoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2RlYWN0YXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgdG8gdW5zdGFrZSBhcmJpdHJhdG9yIGZ1bmRzICg3LWRheSBkZWxheSkuXG4gICAqIE11c3QgYmUgZGVhY3RpdmF0ZWQgYW5kIGhhdmUgbm8gcGVuZGluZyBkaXNwdXRlcyBmaXJzdC5cbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCAtIEFtb3VudCB0byB1bnN0YWtlIGluIHNtYWxsZXN0IHVuaXRzIChlLmcuLCAxMDAwMCA9IDEuMDAwMCBYUFIpXG4gICAqL1xuICBhc3luYyB1bnN0YWtlQXJiaXRyYXRvcihhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICd1bnN0YWtlYXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXRoZHJhdyB1bnN0YWtlZCBhcmJpdHJhdG9yIGZ1bmRzIChhZnRlciA3LWRheSBkZWxheSlcbiAgICovXG4gIGFzeW5jIHdpdGhkcmF3QXJiaXRyYXRvclN0YWtlKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICd3aXRoZHJhd2FyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgYSBwZW5kaW5nIHVuc3Rha2UgcmVxdWVzdCAocmV0dXJucyBmdW5kcyB0byBhY3RpdmUgc3Rha2UpXG4gICAqL1xuICBhc3luYyBjYW5jZWxBcmJpdHJhdG9yVW5zdGFrZSgpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnY2FuY2VsdW5zdGsnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWNjb3VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgY29tcGxldGVkIGpvYnMgKHBlcm1pc3Npb25sZXNzKVxuICAgKi9cbiAgYXN5bmMgY2xlYW5Kb2JzKG1heEFnZTogbnVtYmVyLCBtYXhEZWxldGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjbGVhbmpvYnMnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbWF4X2FnZTogbWF4QWdlLFxuICAgICAgICAgIG1heF9kZWxldGU6IG1heERlbGV0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIHJlc29sdmVkIGRpc3B1dGVzIChwZXJtaXNzaW9ubGVzcylcbiAgICovXG4gIGFzeW5jIGNsZWFuRGlzcHV0ZXMobWF4QWdlOiBudW1iZXIsIG1heERlbGV0ZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NsZWFuZGlzcHMnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbWF4X2FnZTogbWF4QWdlLFxuICAgICAgICAgIG1heF9kZWxldGU6IG1heERlbGV0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gSEVMUEVSUyA9PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVxdWlyZVNlc3Npb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvbiByZXF1aXJlZCBmb3Igd3JpdGUgb3BlcmF0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VKb2IocmF3OiBKb2JSYXcpOiBKb2Ige1xuICAgIGxldCBkZWxpdmVyYWJsZXM6IHN0cmluZ1tdID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGRlbGl2ZXJhYmxlcyA9IEpTT04ucGFyc2UocmF3LmRlbGl2ZXJhYmxlcyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBkZWxpdmVyYWJsZXMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNhZmVQYXJzZUludChyYXcuaWQpLFxuICAgICAgY2xpZW50OiByYXcuY2xpZW50LFxuICAgICAgYWdlbnQ6IHJhdy5hZ2VudCxcbiAgICAgIHRpdGxlOiByYXcudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogcmF3LmRlc2NyaXB0aW9uLFxuICAgICAgZGVsaXZlcmFibGVzLFxuICAgICAgYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LmFtb3VudCksXG4gICAgICBzeW1ib2w6IHJhdy5zeW1ib2wsXG4gICAgICBmdW5kZWRfYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LmZ1bmRlZF9hbW91bnQpLFxuICAgICAgcmVsZWFzZWRfYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LnJlbGVhc2VkX2Ftb3VudCksXG4gICAgICBzdGF0ZTogSk9CX1NUQVRFU1tyYXcuc3RhdGVdIHx8ICdjcmVhdGVkJyxcbiAgICAgIGRlYWRsaW5lOiBzYWZlUGFyc2VJbnQocmF3LmRlYWRsaW5lKSxcbiAgICAgIGFyYml0cmF0b3I6IHJhdy5hcmJpdHJhdG9yLFxuICAgICAgam9iX2hhc2g6IHJhdy5qb2JfaGFzaCxcbiAgICAgIGNyZWF0ZWRfYXQ6IHNhZmVQYXJzZUludChyYXcuY3JlYXRlZF9hdCksXG4gICAgICB1cGRhdGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LnVwZGF0ZWRfYXQpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTWlsZXN0b25lKHJhdzogTWlsZXN0b25lUmF3KTogTWlsZXN0b25lIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNhZmVQYXJzZUludChyYXcuaWQpLFxuICAgICAgam9iX2lkOiBzYWZlUGFyc2VJbnQocmF3LmpvYl9pZCksXG4gICAgICB0aXRsZTogcmF3LnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IHJhdy5kZXNjcmlwdGlvbixcbiAgICAgIGFtb3VudDogc2FmZVBhcnNlSW50KHJhdy5hbW91bnQpLFxuICAgICAgb3JkZXI6IHJhdy5vcmRlcixcbiAgICAgIHN0YXRlOiBNSUxFU1RPTkVfU1RBVEVTW3Jhdy5zdGF0ZV0gfHwgJ3BlbmRpbmcnLFxuICAgICAgZXZpZGVuY2VfdXJpOiByYXcuZXZpZGVuY2VfdXJpLFxuICAgICAgc3VibWl0dGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LnN1Ym1pdHRlZF9hdCksXG4gICAgICBhcHByb3ZlZF9hdDogc2FmZVBhcnNlSW50KHJhdy5hcHByb3ZlZF9hdCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWQocmF3OiBCaWRSYXcpOiBCaWQge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2FmZVBhcnNlSW50KHJhdy5pZCksXG4gICAgICBqb2JfaWQ6IHNhZmVQYXJzZUludChyYXcuam9iX2lkKSxcbiAgICAgIGFnZW50OiByYXcuYWdlbnQsXG4gICAgICBhbW91bnQ6IHNhZmVQYXJzZUludChyYXcuYW1vdW50KSxcbiAgICAgIHRpbWVsaW5lOiBzYWZlUGFyc2VJbnQocmF3LnRpbWVsaW5lKSxcbiAgICAgIHByb3Bvc2FsOiByYXcucHJvcG9zYWwsXG4gICAgICBjcmVhdGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LmNyZWF0ZWRfYXQpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xpr-agents/sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "TypeScript SDK for XPR Network Trustless Agent Registry - register agents, submit feedback, validate outputs, and manage escrow jobs",
|
|
5
5
|
"author": "XPR Network",
|
|
6
6
|
"license": "MIT",
|