@xpr-agents/sdk 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/A2AClient.d.ts +53 -0
- package/dist/A2AClient.js +117 -0
- package/dist/EscrowRegistry.d.ts +50 -1
- package/dist/EscrowRegistry.js +140 -2
- package/dist/eosio-auth.d.ts +41 -0
- package/dist/eosio-auth.js +64 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -2
- package/dist/types.d.ts +81 -0
- package/dist/types.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) JSON-RPC 2.0 client.
|
|
3
|
+
*
|
|
4
|
+
* Compatible with Google's A2A spec, with XPR Network extensions
|
|
5
|
+
* for on-chain identity, trust scores, and escrow job linking.
|
|
6
|
+
*/
|
|
7
|
+
import type { A2ATask, A2AMessage, XprAgentCard } from './types';
|
|
8
|
+
export declare class A2AError extends Error {
|
|
9
|
+
code: number;
|
|
10
|
+
data?: unknown | undefined;
|
|
11
|
+
constructor(message: string, code: number, data?: unknown | undefined);
|
|
12
|
+
static fromRpcError(error: {
|
|
13
|
+
code: number;
|
|
14
|
+
message: string;
|
|
15
|
+
data?: unknown;
|
|
16
|
+
}): A2AError;
|
|
17
|
+
}
|
|
18
|
+
export interface A2AClientOptions {
|
|
19
|
+
/** XPR account name of the caller, injected as xpr:callerAccount in requests */
|
|
20
|
+
callerAccount?: string;
|
|
21
|
+
/** WIF private key for signing A2A requests (e.g. "5K...") */
|
|
22
|
+
signingKey?: string;
|
|
23
|
+
/** Request timeout in milliseconds (default: 30000) */
|
|
24
|
+
timeout?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface SendMessageOptions {
|
|
27
|
+
/** Existing task ID to continue a conversation */
|
|
28
|
+
taskId?: string;
|
|
29
|
+
/** Context ID for grouping related tasks */
|
|
30
|
+
contextId?: string;
|
|
31
|
+
/** XPR escrow job ID to link this interaction to */
|
|
32
|
+
jobId?: number;
|
|
33
|
+
/** Additional metadata to include */
|
|
34
|
+
metadata?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export declare class A2AClient {
|
|
37
|
+
private endpoint;
|
|
38
|
+
private callerAccount?;
|
|
39
|
+
private signingKey?;
|
|
40
|
+
private timeout;
|
|
41
|
+
constructor(endpoint: string, options?: A2AClientOptions);
|
|
42
|
+
/** Fetch the agent's A2A Agent Card from /.well-known/agent.json */
|
|
43
|
+
getAgentCard(): Promise<XprAgentCard>;
|
|
44
|
+
/** Send a message to the agent, creating or continuing a task */
|
|
45
|
+
sendMessage(message: A2AMessage, options?: SendMessageOptions): Promise<A2ATask>;
|
|
46
|
+
/** Get the current state of a task */
|
|
47
|
+
getTask(taskId: string): Promise<A2ATask>;
|
|
48
|
+
/** Cancel a running task */
|
|
49
|
+
cancelTask(taskId: string): Promise<A2ATask>;
|
|
50
|
+
/** Send a JSON-RPC 2.0 request */
|
|
51
|
+
private rpc;
|
|
52
|
+
private fetchWithTimeout;
|
|
53
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A2A (Agent-to-Agent) JSON-RPC 2.0 client.
|
|
4
|
+
*
|
|
5
|
+
* Compatible with Google's A2A spec, with XPR Network extensions
|
|
6
|
+
* for on-chain identity, trust scores, and escrow job linking.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.A2AClient = exports.A2AError = void 0;
|
|
10
|
+
const eosio_auth_1 = require("./eosio-auth");
|
|
11
|
+
class A2AError extends Error {
|
|
12
|
+
constructor(message, code, data) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
this.data = data;
|
|
16
|
+
this.name = 'A2AError';
|
|
17
|
+
}
|
|
18
|
+
static fromRpcError(error) {
|
|
19
|
+
return new A2AError(error.message, error.code, error.data);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.A2AError = A2AError;
|
|
23
|
+
let rpcIdCounter = 0;
|
|
24
|
+
class A2AClient {
|
|
25
|
+
constructor(endpoint, options = {}) {
|
|
26
|
+
this.endpoint = endpoint.replace(/\/$/, '');
|
|
27
|
+
this.callerAccount = options.callerAccount;
|
|
28
|
+
this.signingKey = options.signingKey;
|
|
29
|
+
this.timeout = options.timeout ?? 30000;
|
|
30
|
+
}
|
|
31
|
+
/** Fetch the agent's A2A Agent Card from /.well-known/agent.json */
|
|
32
|
+
async getAgentCard() {
|
|
33
|
+
const url = `${this.endpoint}/.well-known/agent.json`;
|
|
34
|
+
const response = await this.fetchWithTimeout(url);
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
throw new A2AError(`Failed to fetch agent card: ${response.status} ${response.statusText}`, -32000);
|
|
37
|
+
}
|
|
38
|
+
return response.json();
|
|
39
|
+
}
|
|
40
|
+
/** Send a message to the agent, creating or continuing a task */
|
|
41
|
+
async sendMessage(message, options = {}) {
|
|
42
|
+
const params = { message };
|
|
43
|
+
if (options.taskId)
|
|
44
|
+
params.id = options.taskId;
|
|
45
|
+
if (options.contextId)
|
|
46
|
+
params.contextId = options.contextId;
|
|
47
|
+
if (options.metadata || options.jobId) {
|
|
48
|
+
params.metadata = {
|
|
49
|
+
...options.metadata,
|
|
50
|
+
...(options.jobId != null ? { 'xpr:jobId': options.jobId } : {}),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return this.rpc('message/send', params);
|
|
54
|
+
}
|
|
55
|
+
/** Get the current state of a task */
|
|
56
|
+
async getTask(taskId) {
|
|
57
|
+
return this.rpc('tasks/get', { id: taskId });
|
|
58
|
+
}
|
|
59
|
+
/** Cancel a running task */
|
|
60
|
+
async cancelTask(taskId) {
|
|
61
|
+
return this.rpc('tasks/cancel', { id: taskId });
|
|
62
|
+
}
|
|
63
|
+
/** Send a JSON-RPC 2.0 request */
|
|
64
|
+
async rpc(method, params) {
|
|
65
|
+
const id = ++rpcIdCounter;
|
|
66
|
+
const body = {
|
|
67
|
+
jsonrpc: '2.0',
|
|
68
|
+
id,
|
|
69
|
+
method,
|
|
70
|
+
params: {
|
|
71
|
+
...params,
|
|
72
|
+
...(this.callerAccount ? { 'xpr:callerAccount': this.callerAccount } : {}),
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
const bodyStr = JSON.stringify(body);
|
|
76
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
77
|
+
if (this.signingKey && this.callerAccount) {
|
|
78
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
79
|
+
const bodyDigest = (0, eosio_auth_1.hashBody)(bodyStr);
|
|
80
|
+
const signature = (0, eosio_auth_1.signA2ARequest)(this.signingKey, this.callerAccount, timestamp, bodyDigest);
|
|
81
|
+
headers['X-XPR-Account'] = this.callerAccount;
|
|
82
|
+
headers['X-XPR-Timestamp'] = String(timestamp);
|
|
83
|
+
headers['X-XPR-Signature'] = signature;
|
|
84
|
+
}
|
|
85
|
+
const response = await this.fetchWithTimeout(`${this.endpoint}/a2a`, {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
headers,
|
|
88
|
+
body: bodyStr,
|
|
89
|
+
});
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
throw new A2AError(`HTTP error: ${response.status} ${response.statusText}`, -32000);
|
|
92
|
+
}
|
|
93
|
+
const json = (await response.json());
|
|
94
|
+
if (json.error) {
|
|
95
|
+
throw A2AError.fromRpcError(json.error);
|
|
96
|
+
}
|
|
97
|
+
return json.result;
|
|
98
|
+
}
|
|
99
|
+
async fetchWithTimeout(url, init) {
|
|
100
|
+
const controller = new AbortController();
|
|
101
|
+
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
102
|
+
try {
|
|
103
|
+
return await fetch(url, { ...init, signal: controller.signal });
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
if (err.name === 'AbortError') {
|
|
107
|
+
throw new A2AError('Request timed out', -32000);
|
|
108
|
+
}
|
|
109
|
+
throw new A2AError(`Network error: ${err.message}`, -32000);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
clearTimeout(timer);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.A2AClient = A2AClient;
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQTJBQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0EyQUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7OztBQVFILDZDQUF3RDtBQUV4RCxNQUFhLFFBQVMsU0FBUSxLQUFLO0lBQ2pDLFlBQ0UsT0FBZSxFQUNSLElBQVksRUFDWixJQUFjO1FBRXJCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhSLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixTQUFJLEdBQUosSUFBSSxDQUFVO1FBR3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQXdEO1FBQzFFLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFiRCw0QkFhQztBQXNCRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckIsTUFBYSxTQUFTO0lBTXBCLFlBQVksUUFBZ0IsRUFBRSxVQUE0QixFQUFFO1FBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsS0FBSyxDQUFDLFlBQVk7UUFDaEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSx5QkFBeUIsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElB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QyxDQUFDO1FBQ2xFLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxNQUFNLElBQUksUUFBUSxDQUFDLGtCQUFrQixHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDO2dCQUFTLENBQUM7WUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQS9HRCw4QkErR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEyQSAoQWdlbnQtdG8tQWdlbnQpIEpTT04tUlBDIDIuMCBjbGllbnQuXG4gKlxuICogQ29tcGF0aWJsZSB3aXRoIEdvb2dsZSdzIEEyQSBzcGVjLCB3aXRoIFhQUiBOZXR3b3JrIGV4dGVuc2lvbnNcbiAqIGZvciBvbi1jaGFpbiBpZGVudGl0eSwgdHJ1c3Qgc2NvcmVzLCBhbmQgZXNjcm93IGpvYiBsaW5raW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQTJBVGFzayxcbiAgQTJBTWVzc2FnZSxcbiAgQTJBSnNvblJwY1Jlc3BvbnNlLFxuICBYcHJBZ2VudENhcmQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgc2lnbkEyQVJlcXVlc3QsIGhhc2hCb2R5IH0gZnJvbSAnLi9lb3Npby1hdXRoJztcblxuZXhwb3J0IGNsYXNzIEEyQUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIGNvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgZGF0YT86IHVua25vd24sXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdBMkFFcnJvcic7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJwY0Vycm9yKGVycm9yOiB7IGNvZGU6IG51bWJlcjsgbWVzc2FnZTogc3RyaW5nOyBkYXRhPzogdW5rbm93biB9KTogQTJBRXJyb3Ige1xuICAgIHJldHVybiBuZXcgQTJBRXJyb3IoZXJyb3IubWVzc2FnZSwgZXJyb3IuY29kZSwgZXJyb3IuZGF0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBMkFDbGllbnRPcHRpb25zIHtcbiAgLyoqIFhQUiBhY2NvdW50IG5hbWUgb2YgdGhlIGNhbGxlciwgaW5qZWN0ZWQgYXMgeHByOmNhbGxlckFjY291bnQgaW4gcmVxdWVzdHMgKi9cbiAgY2FsbGVyQWNjb3VudD86IHN0cmluZztcbiAgLyoqIFdJRiBwcml2YXRlIGtleSBmb3Igc2lnbmluZyBBMkEgcmVxdWVzdHMgKGUuZy4gXCI1Sy4uLlwiKSAqL1xuICBzaWduaW5nS2V5Pzogc3RyaW5nO1xuICAvKiogUmVxdWVzdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogMzAwMDApICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZE1lc3NhZ2VPcHRpb25zIHtcbiAgLyoqIEV4aXN0aW5nIHRhc2sgSUQgdG8gY29udGludWUgYSBjb252ZXJzYXRpb24gKi9cbiAgdGFza0lkPzogc3RyaW5nO1xuICAvKiogQ29udGV4dCBJRCBmb3IgZ3JvdXBpbmcgcmVsYXRlZCB0YXNrcyAqL1xuICBjb250ZXh0SWQ/OiBzdHJpbmc7XG4gIC8qKiBYUFIgZXNjcm93IGpvYiBJRCB0byBsaW5rIHRoaXMgaW50ZXJhY3Rpb24gdG8gKi9cbiAgam9iSWQ/OiBudW1iZXI7XG4gIC8qKiBBZGRpdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgKi9cbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxubGV0IHJwY0lkQ291bnRlciA9IDA7XG5cbmV4cG9ydCBjbGFzcyBBMkFDbGllbnQge1xuICBwcml2YXRlIGVuZHBvaW50OiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGVyQWNjb3VudD86IHN0cmluZztcbiAgcHJpdmF0ZSBzaWduaW5nS2V5Pzogc3RyaW5nO1xuICBwcml2YXRlIHRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihlbmRwb2ludDogc3RyaW5nLCBvcHRpb25zOiBBMkFDbGllbnRPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmVuZHBvaW50ID0gZW5kcG9pbnQucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgICB0aGlzLmNhbGxlckFjY291bnQgPSBvcHRpb25zLmNhbGxlckFjY291bnQ7XG4gICAgdGhpcy5zaWduaW5nS2V5ID0gb3B0aW9ucy5zaWduaW5nS2V5O1xuICAgIHRoaXMudGltZW91dCA9IG9wdGlvbnMudGltZW91dCA/PyAzMDAwMDtcbiAgfVxuXG4gIC8qKiBGZXRjaCB0aGUgYWdlbnQncyBBMkEgQWdlbnQgQ2FyZCBmcm9tIC8ud2VsbC1rbm93bi9hZ2VudC5qc29uICovXG4gIGFzeW5jIGdldEFnZW50Q2FyZCgpOiBQcm9taXNlPFhwckFnZW50Q2FyZD4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW5kcG9pbnR9Ly53ZWxsLWtub3duL2FnZW50Lmpzb25gO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KHVybCk7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEEyQUVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGZldGNoIGFnZW50IGNhcmQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCxcbiAgICAgICAgLTMyMDAwLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKSBhcyBQcm9taXNlPFhwckFnZW50Q2FyZD47XG4gIH1cblxuICAvKiogU2VuZCBhIG1lc3NhZ2UgdG8gdGhlIGFnZW50LCBjcmVhdGluZyBvciBjb250aW51aW5nIGEgdGFzayAqL1xuICBhc3luYyBzZW5kTWVzc2FnZShtZXNzYWdlOiBBMkFNZXNzYWdlLCBvcHRpb25zOiBTZW5kTWVzc2FnZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8QTJBVGFzaz4ge1xuICAgIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IG1lc3NhZ2UgfTtcbiAgICBpZiAob3B0aW9ucy50YXNrSWQpIHBhcmFtcy5pZCA9IG9wdGlvbnMudGFza0lkO1xuICAgIGlmIChvcHRpb25zLmNvbnRleHRJZCkgcGFyYW1zLmNvbnRleHRJZCA9IG9wdGlvbnMuY29udGV4dElkO1xuICAgIGlmIChvcHRpb25zLm1ldGFkYXRhIHx8IG9wdGlvbnMuam9iSWQpIHtcbiAgICAgIHBhcmFtcy5tZXRhZGF0YSA9IHtcbiAgICAgICAgLi4ub3B0aW9ucy5tZXRhZGF0YSxcbiAgICAgICAgLi4uKG9wdGlvbnMuam9iSWQgIT0gbnVsbCA/IHsgJ3hwcjpqb2JJZCc6IG9wdGlvbnMuam9iSWQgfSA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJwYzxBMkFUYXNrPignbWVzc2FnZS9zZW5kJywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSB0YXNrICovXG4gIGFzeW5jIGdldFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPEEyQVRhc2s+IHtcbiAgICByZXR1cm4gdGhpcy5ycGM8QTJBVGFzaz4oJ3Rhc2tzL2dldCcsIHsgaWQ6IHRhc2tJZCB9KTtcbiAgfVxuXG4gIC8qKiBDYW5jZWwgYSBydW5uaW5nIHRhc2sgKi9cbiAgYXN5bmMgY2FuY2VsVGFzayh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8QTJBVGFzaz4ge1xuICAgIHJldHVybiB0aGlzLnJwYzxBMkFUYXNrPigndGFza3MvY2FuY2VsJywgeyBpZDogdGFza0lkIH0pO1xuICB9XG5cbiAgLyoqIFNlbmQgYSBKU09OLVJQQyAyLjAgcmVxdWVzdCAqL1xuICBwcml2YXRlIGFzeW5jIHJwYzxUPihtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBpZCA9ICsrcnBjSWRDb3VudGVyO1xuICAgIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICBpZCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIC4uLih0aGlzLmNhbGxlckFjY291bnQgPyB7ICd4cHI6Y2FsbGVyQWNjb3VudCc6IHRoaXMuY2FsbGVyQWNjb3VudCB9IDoge30pLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfTtcblxuICAgIGlmICh0aGlzLnNpZ25pbmdLZXkgJiYgdGhpcy5jYWxsZXJBY2NvdW50KSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgICAgIGNvbnN0IGJvZHlEaWdlc3QgPSBoYXNoQm9keShib2R5U3RyKTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHNpZ25BMkFSZXF1ZXN0KHRoaXMuc2lnbmluZ0tleSwgdGhpcy5jYWxsZXJBY2NvdW50LCB0aW1lc3RhbXAsIGJvZHlEaWdlc3QpO1xuICAgICAgaGVhZGVyc1snWC1YUFItQWNjb3VudCddID0gdGhpcy5jYWxsZXJBY2NvdW50O1xuICAgICAgaGVhZGVyc1snWC1YUFItVGltZXN0YW1wJ10gPSBTdHJpbmcodGltZXN0YW1wKTtcbiAgICAgIGhlYWRlcnNbJ1gtWFBSLVNpZ25hdHVyZSddID0gc2lnbmF0dXJlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KGAke3RoaXMuZW5kcG9pbnR9L2EyYWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IGJvZHlTdHIsXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgQTJBRXJyb3IoXG4gICAgICAgIGBIVFRQIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICAgIC0zMjAwMCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QganNvbiA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIEEyQUpzb25ScGNSZXNwb25zZTxUPjtcblxuICAgIGlmIChqc29uLmVycm9yKSB7XG4gICAgICB0aHJvdyBBMkFFcnJvci5mcm9tUnBjRXJyb3IoanNvbi5lcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb24ucmVzdWx0IGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoV2l0aFRpbWVvdXQodXJsOiBzdHJpbmcsIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHRoaXMudGltZW91dCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmZXRjaCh1cmwsIHsgLi4uaW5pdCwgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEEyQUVycm9yKCdSZXF1ZXN0IHRpbWVkIG91dCcsIC0zMjAwMCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgQTJBRXJyb3IoYE5ldHdvcmsgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCwgLTMyMDAwKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/dist/EscrowRegistry.d.ts
CHANGED
|
@@ -85,8 +85,26 @@ export interface Arbitrator {
|
|
|
85
85
|
active_disputes: number;
|
|
86
86
|
active: boolean;
|
|
87
87
|
}
|
|
88
|
-
export interface
|
|
88
|
+
export interface Bid {
|
|
89
|
+
id: number;
|
|
90
|
+
job_id: number;
|
|
91
|
+
agent: string;
|
|
92
|
+
amount: number;
|
|
93
|
+
timeline: number;
|
|
94
|
+
proposal: string;
|
|
95
|
+
created_at: number;
|
|
96
|
+
}
|
|
97
|
+
export interface BidRaw {
|
|
98
|
+
id: string;
|
|
99
|
+
job_id: string;
|
|
89
100
|
agent: string;
|
|
101
|
+
amount: string;
|
|
102
|
+
timeline: string;
|
|
103
|
+
proposal: string;
|
|
104
|
+
created_at: string;
|
|
105
|
+
}
|
|
106
|
+
export interface CreateJobData {
|
|
107
|
+
agent?: string;
|
|
90
108
|
title: string;
|
|
91
109
|
description: string;
|
|
92
110
|
deliverables: string[];
|
|
@@ -96,6 +114,12 @@ export interface CreateJobData {
|
|
|
96
114
|
arbitrator?: string;
|
|
97
115
|
job_hash?: string;
|
|
98
116
|
}
|
|
117
|
+
export interface SubmitBidData {
|
|
118
|
+
job_id: number;
|
|
119
|
+
amount: number;
|
|
120
|
+
timeline: number;
|
|
121
|
+
proposal: string;
|
|
122
|
+
}
|
|
99
123
|
export interface AddMilestoneData {
|
|
100
124
|
job_id: number;
|
|
101
125
|
title: string;
|
|
@@ -189,6 +213,30 @@ export declare class EscrowRegistry {
|
|
|
189
213
|
* Claim acceptance timeout refund (as client)
|
|
190
214
|
*/
|
|
191
215
|
claimAcceptanceTimeout(jobId: number): Promise<TransactionResult>;
|
|
216
|
+
/**
|
|
217
|
+
* List open jobs (agent not assigned)
|
|
218
|
+
*/
|
|
219
|
+
listOpenJobs(options?: JobListOptions): Promise<PaginatedResult<Job>>;
|
|
220
|
+
/**
|
|
221
|
+
* List bids for a job
|
|
222
|
+
*/
|
|
223
|
+
listBidsForJob(jobId: number): Promise<Bid[]>;
|
|
224
|
+
/**
|
|
225
|
+
* Get a specific bid
|
|
226
|
+
*/
|
|
227
|
+
getBid(id: number): Promise<Bid | null>;
|
|
228
|
+
/**
|
|
229
|
+
* Submit a bid on an open job (as agent)
|
|
230
|
+
*/
|
|
231
|
+
submitBid(data: SubmitBidData): Promise<TransactionResult>;
|
|
232
|
+
/**
|
|
233
|
+
* Select a bid (as client) — assigns the agent to the job
|
|
234
|
+
*/
|
|
235
|
+
selectBid(bidId: number): Promise<TransactionResult>;
|
|
236
|
+
/**
|
|
237
|
+
* Withdraw a bid (as agent)
|
|
238
|
+
*/
|
|
239
|
+
withdrawBid(bidId: number): Promise<TransactionResult>;
|
|
192
240
|
/**
|
|
193
241
|
* Register as an arbitrator
|
|
194
242
|
*/
|
|
@@ -250,4 +298,5 @@ export declare class EscrowRegistry {
|
|
|
250
298
|
private requireSession;
|
|
251
299
|
private parseJob;
|
|
252
300
|
private parseMilestone;
|
|
301
|
+
private parseBid;
|
|
253
302
|
}
|
package/dist/EscrowRegistry.js
CHANGED
|
@@ -180,7 +180,7 @@ class EscrowRegistry {
|
|
|
180
180
|
}],
|
|
181
181
|
data: {
|
|
182
182
|
client: this.session.auth.actor,
|
|
183
|
-
agent: data.agent,
|
|
183
|
+
agent: data.agent || '',
|
|
184
184
|
title: data.title,
|
|
185
185
|
description: data.description,
|
|
186
186
|
deliverables: JSON.stringify(data.deliverables),
|
|
@@ -443,6 +443,133 @@ class EscrowRegistry {
|
|
|
443
443
|
}],
|
|
444
444
|
});
|
|
445
445
|
}
|
|
446
|
+
// ============== BIDDING ==============
|
|
447
|
+
/**
|
|
448
|
+
* List open jobs (agent not assigned)
|
|
449
|
+
*/
|
|
450
|
+
async listOpenJobs(options = {}) {
|
|
451
|
+
const { limit = 100, cursor } = options;
|
|
452
|
+
const result = await this.rpc.get_table_rows({
|
|
453
|
+
json: true,
|
|
454
|
+
code: this.contract,
|
|
455
|
+
scope: this.contract,
|
|
456
|
+
table: 'jobs',
|
|
457
|
+
lower_bound: cursor,
|
|
458
|
+
limit: limit + 1,
|
|
459
|
+
});
|
|
460
|
+
const hasMore = result.rows.length > limit;
|
|
461
|
+
const rows = hasMore ? result.rows.slice(0, limit) : result.rows;
|
|
462
|
+
// Open jobs have empty agent name
|
|
463
|
+
let jobs = rows
|
|
464
|
+
.filter(row => row.agent === '' || row.agent === '.............')
|
|
465
|
+
.map(row => this.parseJob(row));
|
|
466
|
+
if (options.state) {
|
|
467
|
+
jobs = jobs.filter(j => j.state === options.state);
|
|
468
|
+
}
|
|
469
|
+
return {
|
|
470
|
+
items: jobs,
|
|
471
|
+
hasMore,
|
|
472
|
+
nextCursor: hasMore && rows.length > 0 ? rows[rows.length - 1].id : undefined,
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* List bids for a job
|
|
477
|
+
*/
|
|
478
|
+
async listBidsForJob(jobId) {
|
|
479
|
+
const result = await this.rpc.get_table_rows({
|
|
480
|
+
json: true,
|
|
481
|
+
code: this.contract,
|
|
482
|
+
scope: this.contract,
|
|
483
|
+
table: 'bids',
|
|
484
|
+
index_position: 2, // byJob index
|
|
485
|
+
key_type: 'i64',
|
|
486
|
+
lower_bound: String(jobId),
|
|
487
|
+
limit: 100,
|
|
488
|
+
});
|
|
489
|
+
return result.rows
|
|
490
|
+
.filter(row => (0, utils_1.safeParseInt)(row.job_id) === jobId)
|
|
491
|
+
.map(row => this.parseBid(row));
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Get a specific bid
|
|
495
|
+
*/
|
|
496
|
+
async getBid(id) {
|
|
497
|
+
const result = await this.rpc.get_table_rows({
|
|
498
|
+
json: true,
|
|
499
|
+
code: this.contract,
|
|
500
|
+
scope: this.contract,
|
|
501
|
+
table: 'bids',
|
|
502
|
+
lower_bound: String(id),
|
|
503
|
+
upper_bound: String(id),
|
|
504
|
+
limit: 1,
|
|
505
|
+
});
|
|
506
|
+
if (result.rows.length === 0)
|
|
507
|
+
return null;
|
|
508
|
+
return this.parseBid(result.rows[0]);
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Submit a bid on an open job (as agent)
|
|
512
|
+
*/
|
|
513
|
+
async submitBid(data) {
|
|
514
|
+
this.requireSession();
|
|
515
|
+
return this.session.link.transact({
|
|
516
|
+
actions: [{
|
|
517
|
+
account: this.contract,
|
|
518
|
+
name: 'submitbid',
|
|
519
|
+
authorization: [{
|
|
520
|
+
actor: this.session.auth.actor,
|
|
521
|
+
permission: this.session.auth.permission,
|
|
522
|
+
}],
|
|
523
|
+
data: {
|
|
524
|
+
agent: this.session.auth.actor,
|
|
525
|
+
job_id: data.job_id,
|
|
526
|
+
amount: data.amount,
|
|
527
|
+
timeline: data.timeline,
|
|
528
|
+
proposal: data.proposal,
|
|
529
|
+
},
|
|
530
|
+
}],
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Select a bid (as client) — assigns the agent to the job
|
|
535
|
+
*/
|
|
536
|
+
async selectBid(bidId) {
|
|
537
|
+
this.requireSession();
|
|
538
|
+
return this.session.link.transact({
|
|
539
|
+
actions: [{
|
|
540
|
+
account: this.contract,
|
|
541
|
+
name: 'selectbid',
|
|
542
|
+
authorization: [{
|
|
543
|
+
actor: this.session.auth.actor,
|
|
544
|
+
permission: this.session.auth.permission,
|
|
545
|
+
}],
|
|
546
|
+
data: {
|
|
547
|
+
client: this.session.auth.actor,
|
|
548
|
+
bid_id: bidId,
|
|
549
|
+
},
|
|
550
|
+
}],
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Withdraw a bid (as agent)
|
|
555
|
+
*/
|
|
556
|
+
async withdrawBid(bidId) {
|
|
557
|
+
this.requireSession();
|
|
558
|
+
return this.session.link.transact({
|
|
559
|
+
actions: [{
|
|
560
|
+
account: this.contract,
|
|
561
|
+
name: 'withdrawbid',
|
|
562
|
+
authorization: [{
|
|
563
|
+
actor: this.session.auth.actor,
|
|
564
|
+
permission: this.session.auth.permission,
|
|
565
|
+
}],
|
|
566
|
+
data: {
|
|
567
|
+
agent: this.session.auth.actor,
|
|
568
|
+
bid_id: bidId,
|
|
569
|
+
},
|
|
570
|
+
}],
|
|
571
|
+
});
|
|
572
|
+
}
|
|
446
573
|
// ============== ARBITRATOR MANAGEMENT ==============
|
|
447
574
|
/**
|
|
448
575
|
* Register as an arbitrator
|
|
@@ -726,6 +853,17 @@ class EscrowRegistry {
|
|
|
726
853
|
approved_at: (0, utils_1.safeParseInt)(raw.approved_at),
|
|
727
854
|
};
|
|
728
855
|
}
|
|
856
|
+
parseBid(raw) {
|
|
857
|
+
return {
|
|
858
|
+
id: (0, utils_1.safeParseInt)(raw.id),
|
|
859
|
+
job_id: (0, utils_1.safeParseInt)(raw.job_id),
|
|
860
|
+
agent: raw.agent,
|
|
861
|
+
amount: (0, utils_1.safeParseInt)(raw.amount),
|
|
862
|
+
timeline: (0, utils_1.safeParseInt)(raw.timeline),
|
|
863
|
+
proposal: raw.proposal,
|
|
864
|
+
created_at: (0, utils_1.safeParseInt)(raw.created_at),
|
|
865
|
+
};
|
|
866
|
+
}
|
|
729
867
|
}
|
|
730
868
|
exports.EscrowRegistry = EscrowRegistry;
|
|
731
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXNjcm93UmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRXNjcm93UmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsbUNBQXVDO0FBc0l2QywrQ0FBK0M7QUFFL0MsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxVQUFVLEdBQWU7SUFDN0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWTtJQUM3QyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWTtDQUMvRCxDQUFDO0FBQ0YsTUFBTSxnQkFBZ0IsR0FBcUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1RixNQUFNLG1CQUFtQixHQUF3QixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRW5HLE1BQWEsY0FBYztJQUt6QixZQUFZLEdBQVksRUFBRSxPQUF1QixFQUFFLFFBQWlCO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGdCQUFnQixDQUFDO0lBQy9DLENBQUM7SUFFRCxnREFBZ0Q7SUFFaEQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBUztZQUNuRCxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDcEIsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixX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QUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJ6QkQsd0NBcXpCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEpzb25ScGMsXG4gIFByb3RvblNlc3Npb24sXG4gIFRyYW5zYWN0aW9uUmVzdWx0LFxuICBQYWdpbmF0ZWRSZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgc2FmZVBhcnNlSW50IH0gZnJvbSAnLi91dGlscyc7XG5cbi8vID09PT09PT09PT09PT09IEVzY3JvdyBUeXBlcyA9PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvYiB7XG4gIGlkOiBudW1iZXI7XG4gIGNsaWVudDogc3RyaW5nO1xuICBhZ2VudDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxpdmVyYWJsZXM6IHN0cmluZ1tdO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgc3ltYm9sOiBzdHJpbmc7XG4gIGZ1bmRlZF9hbW91bnQ6IG51bWJlcjtcbiAgcmVsZWFzZWRfYW1vdW50OiBudW1iZXI7XG4gIHN0YXRlOiBKb2JTdGF0ZTtcbiAgZGVhZGxpbmU6IG51bWJlcjtcbiAgYXJiaXRyYXRvcjogc3RyaW5nO1xuICBqb2JfaGFzaDogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gIHVwZGF0ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2JSYXcge1xuICBpZDogc3RyaW5nO1xuICBjbGllbnQ6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZGVsaXZlcmFibGVzOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBzeW1ib2w6IHN0cmluZztcbiAgZnVuZGVkX2Ftb3VudDogc3RyaW5nO1xuICByZWxlYXNlZF9hbW91bnQ6IHN0cmluZztcbiAgc3RhdGU6IG51bWJlcjtcbiAgZGVhZGxpbmU6IHN0cmluZztcbiAgYXJiaXRyYXRvcjogc3RyaW5nO1xuICBqb2JfaGFzaDogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gIHVwZGF0ZWRfYXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSm9iU3RhdGUgPVxuICB8ICdjcmVhdGVkJ1xuICB8ICdmdW5kZWQnXG4gIHwgJ2FjY2VwdGVkJ1xuICB8ICdpbnByb2dyZXNzJ1xuICB8ICdkZWxpdmVyZWQnXG4gIHwgJ2Rpc3B1dGVkJ1xuICB8ICdjb21wbGV0ZWQnXG4gIHwgJ3JlZnVuZGVkJ1xuICB8ICdhcmJpdHJhdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWxlc3RvbmUge1xuICBpZDogbnVtYmVyO1xuICBqb2JfaWQ6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYW1vdW50OiBudW1iZXI7XG4gIG9yZGVyOiBudW1iZXI7XG4gIHN0YXRlOiBNaWxlc3RvbmVTdGF0ZTtcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIHN1Ym1pdHRlZF9hdDogbnVtYmVyO1xuICBhcHByb3ZlZF9hdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbGVzdG9uZVJhdyB7XG4gIGlkOiBzdHJpbmc7XG4gIGpvYl9pZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgc3RhdGU6IG51bWJlcjtcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIHN1Ym1pdHRlZF9hdDogc3RyaW5nO1xuICBhcHByb3ZlZF9hdDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBNaWxlc3RvbmVTdGF0ZSA9ICdwZW5kaW5nJyB8ICdzdWJtaXR0ZWQnIHwgJ2FwcHJvdmVkJyB8ICdkaXNwdXRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXNjcm93RGlzcHV0ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGpvYl9pZDogbnVtYmVyO1xuICByYWlzZWRfYnk6IHN0cmluZztcbiAgcmVhc29uOiBzdHJpbmc7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBjbGllbnRfYW1vdW50OiBudW1iZXI7XG4gIGFnZW50X2Ftb3VudDogbnVtYmVyO1xuICByZXNvbHV0aW9uOiBEaXNwdXRlUmVzb2x1dGlvbjtcbiAgcmVzb2x2ZXI6IHN0cmluZztcbiAgcmVzb2x1dGlvbl9ub3Rlczogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gIHJlc29sdmVkX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIERpc3B1dGVSZXNvbHV0aW9uID0gJ3BlbmRpbmcnIHwgJ2NsaWVudF93aW5zJyB8ICdhZ2VudF93aW5zJyB8ICdzcGxpdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJiaXRyYXRvciB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgc3Rha2U6IG51bWJlcjtcbiAgZmVlX3BlcmNlbnQ6IG51bWJlcjtcbiAgdG90YWxfY2FzZXM6IG51bWJlcjtcbiAgc3VjY2Vzc2Z1bF9jYXNlczogbnVtYmVyO1xuICBhY3RpdmVfZGlzcHV0ZXM6IG51bWJlcjtcbiAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUpvYkRhdGEge1xuICBhZ2VudDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxpdmVyYWJsZXM6IHN0cmluZ1tdO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgc3ltYm9sPzogc3RyaW5nO1xuICBkZWFkbGluZT86IG51bWJlcjtcbiAgYXJiaXRyYXRvcj86IHN0cmluZztcbiAgam9iX2hhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTWlsZXN0b25lRGF0YSB7XG4gIGpvYl9pZDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2JMaXN0T3B0aW9ucyB7XG4gIGxpbWl0PzogbnVtYmVyO1xuICBjdXJzb3I/OiBzdHJpbmc7XG4gIHN0YXRlPzogSm9iU3RhdGU7XG59XG5cbi8vID09PT09PT09PT09PT09IFJlZ2lzdHJ5IENsYXNzID09PT09PT09PT09PT09XG5cbmNvbnN0IERFRkFVTFRfQ09OVFJBQ1QgPSAnYWdlbnRlc2Nyb3cnO1xuY29uc3QgSk9CX1NUQVRFUzogSm9iU3RhdGVbXSA9IFtcbiAgJ2NyZWF0ZWQnLCAnZnVuZGVkJywgJ2FjY2VwdGVkJywgJ2lucHJvZ3Jlc3MnLFxuICAnZGVsaXZlcmVkJywgJ2Rpc3B1dGVkJywgJ2NvbXBsZXRlZCcsICdyZWZ1bmRlZCcsICdhcmJpdHJhdGVkJ1xuXTtcbmNvbnN0IE1JTEVTVE9ORV9TVEFURVM6IE1pbGVzdG9uZVN0YXRlW10gPSBbJ3BlbmRpbmcnLCAnc3VibWl0dGVkJywgJ2FwcHJvdmVkJywgJ2Rpc3B1dGVkJ107XG5jb25zdCBESVNQVVRFX1JFU09MVVRJT05TOiBEaXNwdXRlUmVzb2x1dGlvbltdID0gWydwZW5kaW5nJywgJ2NsaWVudF93aW5zJywgJ2FnZW50X3dpbnMnLCAnc3BsaXQnXTtcblxuZXhwb3J0IGNsYXNzIEVzY3Jvd1JlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBycGM6IEpzb25ScGM7XG4gIHByaXZhdGUgc2Vzc2lvbjogUHJvdG9uU2Vzc2lvbiB8IG51bGw7XG4gIHByaXZhdGUgY29udHJhY3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihycGM6IEpzb25ScGMsIHNlc3Npb24/OiBQcm90b25TZXNzaW9uLCBjb250cmFjdD86IHN0cmluZykge1xuICAgIHRoaXMucnBjID0gcnBjO1xuICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb24gfHwgbnVsbDtcbiAgICB0aGlzLmNvbnRyYWN0ID0gY29udHJhY3QgfHwgREVGQVVMVF9DT05UUkFDVDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09IFJFQUQgT1BFUkFUSU9OUyA9PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgYSBqb2IgYnkgSURcbiAgICovXG4gIGFzeW5jIGdldEpvYihpZDogbnVtYmVyKTogUHJvbWlzZTxKb2IgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8Sm9iUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdqb2JzJyxcbiAgICAgIGxvd2VyX2JvdW5kOiBTdHJpbmcoaWQpLFxuICAgICAgdXBwZXJfYm91bmQ6IFN0cmluZyhpZCksXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcblxuICAgIGlmIChyZXN1bHQucm93cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLnBhcnNlSm9iKHJlc3VsdC5yb3dzWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGpvYnMgZm9yIGEgY2xpZW50XG4gICAqL1xuICBhc3luYyBsaXN0Sm9ic0J5Q2xpZW50KGNsaWVudDogc3RyaW5nLCBvcHRpb25zOiBKb2JMaXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXN1bHQ8Sm9iPj4ge1xuICAgIGNvbnN0IHsgbGltaXQgPSAxMDAsIGN1cnNvciB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEpvYlJhdz4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnam9icycsXG4gICAgICBpbmRleF9wb3NpdGlvbjogMiwgLy8gYnlDbGllbnQgaW5kZXhcbiAgICAgIGtleV90eXBlOiAnaTY0JyxcbiAgICAgIGxvd2VyX2JvdW5kOiBjdXJzb3IsXG4gICAgICBsaW1pdDogbGltaXQgKyAxLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFzTW9yZSA9IHJlc3VsdC5yb3dzLmxlbmd0aCA+IGxpbWl0O1xuICAgIGNvbnN0IHJvd3MgPSBoYXNNb3JlID8gcmVzdWx0LnJvd3Muc2xpY2UoMCwgbGltaXQpIDogcmVzdWx0LnJvd3M7XG4gICAgbGV0IGpvYnMgPSByb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiByb3cuY2xpZW50ID09PSBjbGllbnQpXG4gICAgICAubWFwKHJvdyA9PiB0aGlzLnBhcnNlSm9iKHJvdykpO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RhdGUpIHtcbiAgICAgIGpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGouc3RhdGUgPT09IG9wdGlvbnMuc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogam9icyxcbiAgICAgIGhhc01vcmUsXG4gICAgICBuZXh0Q3Vyc29yOiBoYXNNb3JlICYmIHJvd3MubGVuZ3RoID4gMCA/IHJvd3Nbcm93cy5sZW5ndGggLSAxXS5pZCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgam9icyBmb3IgYW4gYWdlbnRcbiAgICovXG4gIGFzeW5jIGxpc3RKb2JzQnlBZ2VudChhZ2VudDogc3RyaW5nLCBvcHRpb25zOiBKb2JMaXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXN1bHQ8Sm9iPj4ge1xuICAgIGNvbnN0IHsgbGltaXQgPSAxMDAsIGN1cnNvciB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEpvYlJhdz4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnam9icycsXG4gICAgICBpbmRleF9wb3NpdGlvbjogMywgLy8gYnlBZ2VudCBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbG93ZXJfYm91bmQ6IGN1cnNvcixcbiAgICAgIGxpbWl0OiBsaW1pdCArIDEsXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYXNNb3JlID0gcmVzdWx0LnJvd3MubGVuZ3RoID4gbGltaXQ7XG4gICAgY29uc3Qgcm93cyA9IGhhc01vcmUgPyByZXN1bHQucm93cy5zbGljZSgwLCBsaW1pdCkgOiByZXN1bHQucm93cztcbiAgICBsZXQgam9icyA9IHJvd3NcbiAgICAgIC5maWx0ZXIocm93ID0+IHJvdy5hZ2VudCA9PT0gYWdlbnQpXG4gICAgICAubWFwKHJvdyA9PiB0aGlzLnBhcnNlSm9iKHJvdykpO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RhdGUpIHtcbiAgICAgIGpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGouc3RhdGUgPT09IG9wdGlvbnMuc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogam9icyxcbiAgICAgIGhhc01vcmUsXG4gICAgICBuZXh0Q3Vyc29yOiBoYXNNb3JlICYmIHJvd3MubGVuZ3RoID4gMCA/IHJvd3Nbcm93cy5sZW5ndGggLSAxXS5pZCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBtaWxlc3RvbmVzIGZvciBhIGpvYlxuICAgKi9cbiAgYXN5bmMgZ2V0Sm9iTWlsZXN0b25lcyhqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxNaWxlc3RvbmVbXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPE1pbGVzdG9uZVJhdz4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnbWlsZXN0b25lcycsXG4gICAgICBpbmRleF9wb3NpdGlvbjogMiwgLy8gYnlKb2IgaW5kZXhcbiAgICAgIGtleV90eXBlOiAnaTY0JyxcbiAgICAgIGxpbWl0OiAxMDAsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnJvd3NcbiAgICAgIC5maWx0ZXIocm93ID0+IHNhZmVQYXJzZUludChyb3cuam9iX2lkKSA9PT0gam9iSWQpXG4gICAgICAubWFwKHJvdyA9PiB0aGlzLnBhcnNlTWlsZXN0b25lKHJvdykpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkaXNwdXRlIGZvciBhIGpvYlxuICAgKi9cbiAgYXN5bmMgZ2V0Sm9iRGlzcHV0ZShqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxFc2Nyb3dEaXNwdXRlIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBqb2JfaWQ6IHN0cmluZztcbiAgICAgIHJhaXNlZF9ieTogc3RyaW5nO1xuICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgICAgIGNsaWVudF9hbW91bnQ6IHN0cmluZztcbiAgICAgIGFnZW50X2Ftb3VudDogc3RyaW5nO1xuICAgICAgcmVzb2x1dGlvbjogbnVtYmVyO1xuICAgICAgcmVzb2x2ZXI6IHN0cmluZztcbiAgICAgIHJlc29sdXRpb25fbm90ZXM6IHN0cmluZztcbiAgICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICAgIHJlc29sdmVkX2F0OiBzdHJpbmc7XG4gICAgfT4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnZGlzcHV0ZXMnLFxuICAgICAgaW5kZXhfcG9zaXRpb246IDIsIC8vIGJ5Sm9iIGluZGV4XG4gICAgICBrZXlfdHlwZTogJ2k2NCcsXG4gICAgICBsaW1pdDogMTAwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGlzcHV0ZSA9IHJlc3VsdC5yb3dzLmZpbmQocm93ID0+IHNhZmVQYXJzZUludChyb3cuam9iX2lkKSA9PT0gam9iSWQpO1xuICAgIGlmICghZGlzcHV0ZSkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNhZmVQYXJzZUludChkaXNwdXRlLmlkKSxcbiAgICAgIGpvYl9pZDogc2FmZVBhcnNlSW50KGRpc3B1dGUuam9iX2lkKSxcbiAgICAgIHJhaXNlZF9ieTogZGlzcHV0ZS5yYWlzZWRfYnksXG4gICAgICByZWFzb246IGRpc3B1dGUucmVhc29uLFxuICAgICAgZXZpZGVuY2VfdXJpOiBkaXNwdXRlLmV2aWRlbmNlX3VyaSxcbiAgICAgIGNsaWVudF9hbW91bnQ6IHNhZmVQYXJzZUludChkaXNwdXRlLmNsaWVudF9hbW91bnQpLFxuICAgICAgYWdlbnRfYW1vdW50OiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5hZ2VudF9hbW91bnQpLFxuICAgICAgcmVzb2x1dGlvbjogRElTUFVURV9SRVNPTFVUSU9OU1tkaXNwdXRlLnJlc29sdXRpb25dLFxuICAgICAgcmVzb2x2ZXI6IGRpc3B1dGUucmVzb2x2ZXIsXG4gICAgICByZXNvbHV0aW9uX25vdGVzOiBkaXNwdXRlLnJlc29sdXRpb25fbm90ZXMsXG4gICAgICBjcmVhdGVkX2F0OiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5jcmVhdGVkX2F0KSxcbiAgICAgIHJlc29sdmVkX2F0OiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5yZXNvbHZlZF9hdCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGF2YWlsYWJsZSBhcmJpdHJhdG9yc1xuICAgKi9cbiAgYXN5bmMgbGlzdEFyYml0cmF0b3JzKCk6IFByb21pc2U8QXJiaXRyYXRvcltdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8e1xuICAgICAgYWNjb3VudDogc3RyaW5nO1xuICAgICAgc3Rha2U6IHN0cmluZztcbiAgICAgIGZlZV9wZXJjZW50OiBzdHJpbmc7XG4gICAgICB0b3RhbF9jYXNlczogc3RyaW5nO1xuICAgICAgc3VjY2Vzc2Z1bF9jYXNlczogc3RyaW5nO1xuICAgICAgYWN0aXZlX2Rpc3B1dGVzOiBzdHJpbmc7XG4gICAgICBhY3RpdmU6IG51bWJlcjtcbiAgICB9Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdhcmJpdHJhdG9ycycsXG4gICAgICBsaW1pdDogMTAwLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiByb3cuYWN0aXZlID09PSAxKVxuICAgICAgLm1hcChyb3cgPT4gKHtcbiAgICAgICAgYWNjb3VudDogcm93LmFjY291bnQsXG4gICAgICAgIHN0YWtlOiBzYWZlUGFyc2VJbnQocm93LnN0YWtlKSxcbiAgICAgICAgZmVlX3BlcmNlbnQ6IHNhZmVQYXJzZUludChyb3cuZmVlX3BlcmNlbnQpLFxuICAgICAgICB0b3RhbF9jYXNlczogc2FmZVBhcnNlSW50KHJvdy50b3RhbF9jYXNlcyksXG4gICAgICAgIHN1Y2Nlc3NmdWxfY2FzZXM6IHNhZmVQYXJzZUludChyb3cuc3VjY2Vzc2Z1bF9jYXNlcyksXG4gICAgICAgIGFjdGl2ZV9kaXNwdXRlczogc2FmZVBhcnNlSW50KHJvdy5hY3RpdmVfZGlzcHV0ZXMpLFxuICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICB9KSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PSBXUklURSBPUEVSQVRJT05TID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBqb2JcbiAgICovXG4gIGFzeW5jIGNyZWF0ZUpvYihkYXRhOiBDcmVhdGVKb2JEYXRhKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NyZWF0ZWpvYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBhZ2VudDogZGF0YS5hZ2VudCxcbiAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBkZWxpdmVyYWJsZXM6IEpTT04uc3RyaW5naWZ5KGRhdGEuZGVsaXZlcmFibGVzKSxcbiAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgIHN5bWJvbDogZGF0YS5zeW1ib2wgfHwgJ1hQUicsXG4gICAgICAgICAgZGVhZGxpbmU6IGRhdGEuZGVhZGxpbmUgfHwgMCxcbiAgICAgICAgICBhcmJpdHJhdG9yOiBkYXRhLmFyYml0cmF0b3IgfHwgJycsXG4gICAgICAgICAgam9iX2hhc2g6IGRhdGEuam9iX2hhc2ggfHwgJycsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5kIGEgam9iXG4gICAqL1xuICBhc3luYyBmdW5kSm9iKGpvYklkOiBudW1iZXIsIGFtb3VudDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogJ2Vvc2lvLnRva2VuJyxcbiAgICAgICAgbmFtZTogJ3RyYW5zZmVyJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGZyb206IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICB0bzogdGhpcy5jb250cmFjdCxcbiAgICAgICAgICBxdWFudGl0eTogYW1vdW50LFxuICAgICAgICAgIG1lbW86IGBmdW5kOiR7am9iSWR9YCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2VwdCBhIGpvYiAoYXMgYWdlbnQpXG4gICAqL1xuICBhc3luYyBhY2NlcHRKb2Ioam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhY2NlcHRqb2InLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgd29ya2luZyBvbiBhIGpvYiAoYXMgYWdlbnQpXG4gICAqL1xuICBhc3luYyBzdGFydEpvYihqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3N0YXJ0am9iJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGl2ZXIgYSBqb2IgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgZGVsaXZlckpvYihqb2JJZDogbnVtYmVyLCBldmlkZW5jZVVyaTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2RlbGl2ZXInLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICAgIGV2aWRlbmNlX3VyaTogZXZpZGVuY2VVcmksXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIGRlbGl2ZXJ5IChhcyBjbGllbnQpXG4gICAqL1xuICBhc3luYyBhcHByb3ZlRGVsaXZlcnkoam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhcHByb3ZlJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBtaWxlc3RvbmUgdG8gYSBqb2JcbiAgICovXG4gIGFzeW5jIGFkZE1pbGVzdG9uZShkYXRhOiBBZGRNaWxlc3RvbmVEYXRhKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FkZG1pbGVzdG9uZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGRhdGEuam9iX2lkLFxuICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGFtb3VudDogZGF0YS5hbW91bnQsXG4gICAgICAgICAgb3JkZXI6IGRhdGEub3JkZXIsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgYSBtaWxlc3RvbmUgKGFzIGFnZW50KVxuICAgKi9cbiAgYXN5bmMgc3VibWl0TWlsZXN0b25lKG1pbGVzdG9uZUlkOiBudW1iZXIsIGV2aWRlbmNlVXJpOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnc3VibWl0bWlsZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhZ2VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIG1pbGVzdG9uZV9pZDogbWlsZXN0b25lSWQsXG4gICAgICAgICAgZXZpZGVuY2VfdXJpOiBldmlkZW5jZVVyaSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcHJvdmUgYSBtaWxlc3RvbmUgKGFzIGNsaWVudClcbiAgICovXG4gIGFzeW5jIGFwcHJvdmVNaWxlc3RvbmUobWlsZXN0b25lSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhcHByb3ZlbWlsZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBtaWxlc3RvbmVfaWQ6IG1pbGVzdG9uZUlkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmFpc2UgYSBkaXNwdXRlXG4gICAqL1xuICBhc3luYyByYWlzZURpc3B1dGUoam9iSWQ6IG51bWJlciwgcmVhc29uOiBzdHJpbmcsIGV2aWRlbmNlVXJpPzogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2Rpc3B1dGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmFpc2VkX2J5OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgICByZWFzb24sXG4gICAgICAgICAgZXZpZGVuY2VfdXJpOiBldmlkZW5jZVVyaSB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhIGpvYiAoYXMgY2xpZW50KVxuICAgKi9cbiAgYXN5bmMgY2FuY2VsSm9iKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnY2FuY2VsJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFpbSB0aW1lb3V0IChyZWZ1bmQgb3IgYXV0by1hcHByb3ZlKVxuICAgKi9cbiAgYXN5bmMgY2xhaW1UaW1lb3V0KGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAndGltZW91dCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGFpbWVyOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYWltIGFjY2VwdGFuY2UgdGltZW91dCByZWZ1bmQgKGFzIGNsaWVudClcbiAgICovXG4gIGFzeW5jIGNsYWltQWNjZXB0YW5jZVRpbWVvdXQoam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhY2NwdHRpbWVvdXQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gQVJCSVRSQVRPUiBNQU5BR0VNRU5UID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFzIGFuIGFyYml0cmF0b3JcbiAgICovXG4gIGFzeW5jIHJlZ2lzdGVyQXJiaXRyYXRvcihmZWVQZXJjZW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAncmVnYXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBmZWVfcGVyY2VudDogZmVlUGVyY2VudCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YWtlIFhQUiBhcyBhcmJpdHJhdG9yICh2aWEgdG9rZW4gdHJhbnNmZXIpXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgc3RyaW5nIChlLmcuLCBcIjEwMDAuMDAwMCBYUFJcIilcbiAgICovXG4gIGFzeW5jIHN0YWtlQXJiaXRyYXRvcihhbW91bnQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6ICdlb3Npby50b2tlbicsXG4gICAgICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmcm9tOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgdG86IHRoaXMuY29udHJhY3QsXG4gICAgICAgICAgcXVhbnRpdHk6IGFtb3VudCxcbiAgICAgICAgICBtZW1vOiAnYXJic3Rha2UnLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXJiaXRyYXRlIGEgZGlzcHV0ZVxuICAgKlxuICAgKiBAcGFyYW0gZGlzcHV0ZUlkIC0gVGhlIGRpc3B1dGUgdG8gcmVzb2x2ZVxuICAgKiBAcGFyYW0gY2xpZW50UGVyY2VudCAtIFBlcmNlbnRhZ2Ugb2YgcmVtYWluaW5nIGZ1bmRzIHRvIGdpdmUgdG8gY2xpZW50ICgwLTEwMClcbiAgICogQHBhcmFtIHJlc29sdXRpb25Ob3RlcyAtIEV4cGxhbmF0aW9uIG9mIHRoZSByZXNvbHV0aW9uXG4gICAqL1xuICBhc3luYyBhcmJpdHJhdGUoXG4gICAgZGlzcHV0ZUlkOiBudW1iZXIsXG4gICAgY2xpZW50UGVyY2VudDogbnVtYmVyLFxuICAgIHJlc29sdXRpb25Ob3Rlczogc3RyaW5nXG4gICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhcmJpdHJhdGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYXJiaXRyYXRvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGRpc3B1dGVfaWQ6IGRpc3B1dGVJZCxcbiAgICAgICAgICBjbGllbnRfcGVyY2VudDogY2xpZW50UGVyY2VudCxcbiAgICAgICAgICByZXNvbHV0aW9uX25vdGVzOiByZXNvbHV0aW9uTm90ZXMsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgZGlzcHV0ZSBhZnRlciB0aW1lb3V0IChvd25lci1vbmx5IGZhbGxiYWNrKS5cbiAgICogQ2FuIG9ubHkgYmUgY2FsbGVkIGFmdGVyIDE0IGRheXMgc2luY2UgZGlzcHV0ZSBjcmVhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGRpc3B1dGVJZCAtIFRoZSBkaXNwdXRlIHRvIHJlc29sdmVcbiAgICogQHBhcmFtIGNsaWVudFBlcmNlbnQgLSBQZXJjZW50YWdlIG9mIHJlbWFpbmluZyBmdW5kcyB0byBnaXZlIHRvIGNsaWVudCAoMC0xMDApXG4gICAqIEBwYXJhbSByZXNvbHV0aW9uTm90ZXMgLSBFeHBsYW5hdGlvbiBvZiB0aGUgcmVzb2x1dGlvblxuICAgKi9cbiAgYXN5bmMgcmVzb2x2ZVRpbWVvdXQoXG4gICAgZGlzcHV0ZUlkOiBudW1iZXIsXG4gICAgY2xpZW50UGVyY2VudDogbnVtYmVyLFxuICAgIHJlc29sdXRpb25Ob3Rlczogc3RyaW5nXG4gICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdyZXNvbHZldG1vdXQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZGlzcHV0ZV9pZDogZGlzcHV0ZUlkLFxuICAgICAgICAgIGNsaWVudF9wZXJjZW50OiBjbGllbnRQZXJjZW50LFxuICAgICAgICAgIHJlc29sdXRpb25fbm90ZXM6IHJlc29sdXRpb25Ob3RlcyxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGFyYml0cmF0b3IgKG11c3QgaGF2ZSBzdWZmaWNpZW50IHN0YWtlKVxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGVBcmJpdHJhdG9yKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhY3RpdmF0ZWFyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGFyYml0cmF0b3IgKHN0b3AgYWNjZXB0aW5nIG5ldyBjYXNlcylcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGVBcmJpdHJhdG9yKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdkZWFjdGFyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IHRvIHVuc3Rha2UgYXJiaXRyYXRvciBmdW5kcyAoNy1kYXkgZGVsYXkpLlxuICAgKiBNdXN0IGJlIGRlYWN0aXZhdGVkIGFuZCBoYXZlIG5vIHBlbmRpbmcgZGlzcHV0ZXMgZmlyc3QuXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgdG8gdW5zdGFrZSBpbiBzbWFsbGVzdCB1bml0cyAoZS5nLiwgMTAwMDAgPSAxLjAwMDAgWFBSKVxuICAgKi9cbiAgYXN5bmMgdW5zdGFrZUFyYml0cmF0b3IoYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAndW5zdGFrZWFyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2l0aGRyYXcgdW5zdGFrZWQgYXJiaXRyYXRvciBmdW5kcyAoYWZ0ZXIgNy1kYXkgZGVsYXkpXG4gICAqL1xuICBhc3luYyB3aXRoZHJhd0FyYml0cmF0b3JTdGFrZSgpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnd2l0aGRyYXdhcmInLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWNjb3VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIGEgcGVuZGluZyB1bnN0YWtlIHJlcXVlc3QgKHJldHVybnMgZnVuZHMgdG8gYWN0aXZlIHN0YWtlKVxuICAgKi9cbiAgYXN5bmMgY2FuY2VsQXJiaXRyYXRvclVuc3Rha2UoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NhbmNlbHVuc3RrJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIGNvbXBsZXRlZCBqb2JzIChwZXJtaXNzaW9ubGVzcylcbiAgICovXG4gIGFzeW5jIGNsZWFuSm9icyhtYXhBZ2U6IG51bWJlciwgbWF4RGVsZXRlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnY2xlYW5qb2JzJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG1heF9hZ2U6IG1heEFnZSxcbiAgICAgICAgICBtYXhfZGVsZXRlOiBtYXhEZWxldGUsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCByZXNvbHZlZCBkaXNwdXRlcyAocGVybWlzc2lvbmxlc3MpXG4gICAqL1xuICBhc3luYyBjbGVhbkRpc3B1dGVzKG1heEFnZTogbnVtYmVyLCBtYXhEZWxldGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjbGVhbmRpc3BzJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG1heF9hZ2U6IG1heEFnZSxcbiAgICAgICAgICBtYXhfZGVsZXRlOiBtYXhEZWxldGUsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09IEhFTFBFUlMgPT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlcXVpcmVTZXNzaW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb24gcmVxdWlyZWQgZm9yIHdyaXRlIG9wZXJhdGlvbnMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSm9iKHJhdzogSm9iUmF3KTogSm9iIHtcbiAgICBsZXQgZGVsaXZlcmFibGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBkZWxpdmVyYWJsZXMgPSBKU09OLnBhcnNlKHJhdy5kZWxpdmVyYWJsZXMpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgZGVsaXZlcmFibGVzID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzYWZlUGFyc2VJbnQocmF3LmlkKSxcbiAgICAgIGNsaWVudDogcmF3LmNsaWVudCxcbiAgICAgIGFnZW50OiByYXcuYWdlbnQsXG4gICAgICB0aXRsZTogcmF3LnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IHJhdy5kZXNjcmlwdGlvbixcbiAgICAgIGRlbGl2ZXJhYmxlcyxcbiAgICAgIGFtb3VudDogc2FmZVBhcnNlSW50KHJhdy5hbW91bnQpLFxuICAgICAgc3ltYm9sOiByYXcuc3ltYm9sLFxuICAgICAgZnVuZGVkX2Ftb3VudDogc2FmZVBhcnNlSW50KHJhdy5mdW5kZWRfYW1vdW50KSxcbiAgICAgIHJlbGVhc2VkX2Ftb3VudDogc2FmZVBhcnNlSW50KHJhdy5yZWxlYXNlZF9hbW91bnQpLFxuICAgICAgc3RhdGU6IEpPQl9TVEFURVNbcmF3LnN0YXRlXSB8fCAnY3JlYXRlZCcsXG4gICAgICBkZWFkbGluZTogc2FmZVBhcnNlSW50KHJhdy5kZWFkbGluZSksXG4gICAgICBhcmJpdHJhdG9yOiByYXcuYXJiaXRyYXRvcixcbiAgICAgIGpvYl9oYXNoOiByYXcuam9iX2hhc2gsXG4gICAgICBjcmVhdGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LmNyZWF0ZWRfYXQpLFxuICAgICAgdXBkYXRlZF9hdDogc2FmZVBhcnNlSW50KHJhdy51cGRhdGVkX2F0KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1pbGVzdG9uZShyYXc6IE1pbGVzdG9uZVJhdyk6IE1pbGVzdG9uZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzYWZlUGFyc2VJbnQocmF3LmlkKSxcbiAgICAgIGpvYl9pZDogc2FmZVBhcnNlSW50KHJhdy5qb2JfaWQpLFxuICAgICAgdGl0bGU6IHJhdy50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByYXcuZGVzY3JpcHRpb24sXG4gICAgICBhbW91bnQ6IHNhZmVQYXJzZUludChyYXcuYW1vdW50KSxcbiAgICAgIG9yZGVyOiByYXcub3JkZXIsXG4gICAgICBzdGF0ZTogTUlMRVNUT05FX1NUQVRFU1tyYXcuc3RhdGVdIHx8ICdwZW5kaW5nJyxcbiAgICAgIGV2aWRlbmNlX3VyaTogcmF3LmV2aWRlbmNlX3VyaSxcbiAgICAgIHN1Ym1pdHRlZF9hdDogc2FmZVBhcnNlSW50KHJhdy5zdWJtaXR0ZWRfYXQpLFxuICAgICAgYXBwcm92ZWRfYXQ6IHNhZmVQYXJzZUludChyYXcuYXBwcm92ZWRfYXQpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
869
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXNjcm93UmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRXNjcm93UmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsbUNBQXVDO0FBaUt2QywrQ0FBK0M7QUFFL0MsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxVQUFVLEdBQWU7SUFDN0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWTtJQUM3QyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWTtDQUMvRCxDQUFDO0FBQ0YsTUFBTSxnQkFBZ0IsR0FBcUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1RixNQUFNLG1CQUFtQixHQUF3QixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRW5HLE1BQWEsY0FBYztJQUt6QixZQUFZLEdBQVksRUFBRSxPQUF1QixFQUFFLFFBQWlCO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGdCQUFnQixDQUFDO0lBQy9DLENBQUM7SUFFRCxnREFBZ0Q7SUFFaEQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBUztZQUNuRCxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDcEIsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixX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RU8sUUFBUSxDQUFDLEdBQVc7UUFDMUIsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEVBQUUsSUFBQSxvQkFBWSxFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDaEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxRQUFRLEVBQUUsSUFBQSxvQkFBWSxFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDcEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLFVBQVUsRUFBRSxJQUFBLG9CQUFZLEVBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBLzhCRCx3Q0ErOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSnNvblJwYyxcbiAgUHJvdG9uU2Vzc2lvbixcbiAgVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFBhZ2luYXRlZFJlc3VsdCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYWZlUGFyc2VJbnQgfSBmcm9tICcuL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT0gRXNjcm93IFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9iIHtcbiAgaWQ6IG51bWJlcjtcbiAgY2xpZW50OiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlbGl2ZXJhYmxlczogc3RyaW5nW107XG4gIGFtb3VudDogbnVtYmVyO1xuICBzeW1ib2w6IHN0cmluZztcbiAgZnVuZGVkX2Ftb3VudDogbnVtYmVyO1xuICByZWxlYXNlZF9hbW91bnQ6IG51bWJlcjtcbiAgc3RhdGU6IEpvYlN0YXRlO1xuICBkZWFkbGluZTogbnVtYmVyO1xuICBhcmJpdHJhdG9yOiBzdHJpbmc7XG4gIGpvYl9oYXNoOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgdXBkYXRlZF9hdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvYlJhdyB7XG4gIGlkOiBzdHJpbmc7XG4gIGNsaWVudDogc3RyaW5nO1xuICBhZ2VudDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxpdmVyYWJsZXM6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBmdW5kZWRfYW1vdW50OiBzdHJpbmc7XG4gIHJlbGVhc2VkX2Ftb3VudDogc3RyaW5nO1xuICBzdGF0ZTogbnVtYmVyO1xuICBkZWFkbGluZTogc3RyaW5nO1xuICBhcmJpdHJhdG9yOiBzdHJpbmc7XG4gIGpvYl9oYXNoOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgdXBkYXRlZF9hdDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBKb2JTdGF0ZSA9XG4gIHwgJ2NyZWF0ZWQnXG4gIHwgJ2Z1bmRlZCdcbiAgfCAnYWNjZXB0ZWQnXG4gIHwgJ2lucHJvZ3Jlc3MnXG4gIHwgJ2RlbGl2ZXJlZCdcbiAgfCAnZGlzcHV0ZWQnXG4gIHwgJ2NvbXBsZXRlZCdcbiAgfCAncmVmdW5kZWQnXG4gIHwgJ2FyYml0cmF0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pbGVzdG9uZSB7XG4gIGlkOiBudW1iZXI7XG4gIGpvYl9pZDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgb3JkZXI6IG51bWJlcjtcbiAgc3RhdGU6IE1pbGVzdG9uZVN0YXRlO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgc3VibWl0dGVkX2F0OiBudW1iZXI7XG4gIGFwcHJvdmVkX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlsZXN0b25lUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgam9iX2lkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xuICBzdGF0ZTogbnVtYmVyO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgc3VibWl0dGVkX2F0OiBzdHJpbmc7XG4gIGFwcHJvdmVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE1pbGVzdG9uZVN0YXRlID0gJ3BlbmRpbmcnIHwgJ3N1Ym1pdHRlZCcgfCAnYXBwcm92ZWQnIHwgJ2Rpc3B1dGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBFc2Nyb3dEaXNwdXRlIHtcbiAgaWQ6IG51bWJlcjtcbiAgam9iX2lkOiBudW1iZXI7XG4gIHJhaXNlZF9ieTogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIGNsaWVudF9hbW91bnQ6IG51bWJlcjtcbiAgYWdlbnRfYW1vdW50OiBudW1iZXI7XG4gIHJlc29sdXRpb246IERpc3B1dGVSZXNvbHV0aW9uO1xuICByZXNvbHZlcjogc3RyaW5nO1xuICByZXNvbHV0aW9uX25vdGVzOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgcmVzb2x2ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGlzcHV0ZVJlc29sdXRpb24gPSAncGVuZGluZycgfCAnY2xpZW50X3dpbnMnIHwgJ2FnZW50X3dpbnMnIHwgJ3NwbGl0JztcblxuZXhwb3J0IGludGVyZmFjZSBBcmJpdHJhdG9yIHtcbiAgYWNjb3VudDogc3RyaW5nO1xuICBzdGFrZTogbnVtYmVyO1xuICBmZWVfcGVyY2VudDogbnVtYmVyO1xuICB0b3RhbF9jYXNlczogbnVtYmVyO1xuICBzdWNjZXNzZnVsX2Nhc2VzOiBudW1iZXI7XG4gIGFjdGl2ZV9kaXNwdXRlczogbnVtYmVyO1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlkIHtcbiAgaWQ6IG51bWJlcjtcbiAgam9iX2lkOiBudW1iZXI7XG4gIGFnZW50OiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyO1xuICB0aW1lbGluZTogbnVtYmVyO1xuICBwcm9wb3NhbDogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlkUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgam9iX2lkOiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICB0aW1lbGluZTogc3RyaW5nO1xuICBwcm9wb3NhbDogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlSm9iRGF0YSB7XG4gIGFnZW50Pzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxpdmVyYWJsZXM6IHN0cmluZ1tdO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgc3ltYm9sPzogc3RyaW5nO1xuICBkZWFkbGluZT86IG51bWJlcjtcbiAgYXJiaXRyYXRvcj86IHN0cmluZztcbiAgam9iX2hhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibWl0QmlkRGF0YSB7XG4gIGpvYl9pZDogbnVtYmVyO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgdGltZWxpbmU6IG51bWJlcjtcbiAgcHJvcG9zYWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRNaWxlc3RvbmVEYXRhIHtcbiAgam9iX2lkOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvYkxpc3RPcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgc3RhdGU/OiBKb2JTdGF0ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT0gUmVnaXN0cnkgQ2xhc3MgPT09PT09PT09PT09PT1cblxuY29uc3QgREVGQVVMVF9DT05UUkFDVCA9ICdhZ2VudGVzY3Jvdyc7XG5jb25zdCBKT0JfU1RBVEVTOiBKb2JTdGF0ZVtdID0gW1xuICAnY3JlYXRlZCcsICdmdW5kZWQnLCAnYWNjZXB0ZWQnLCAnaW5wcm9ncmVzcycsXG4gICdkZWxpdmVyZWQnLCAnZGlzcHV0ZWQnLCAnY29tcGxldGVkJywgJ3JlZnVuZGVkJywgJ2FyYml0cmF0ZWQnXG5dO1xuY29uc3QgTUlMRVNUT05FX1NUQVRFUzogTWlsZXN0b25lU3RhdGVbXSA9IFsncGVuZGluZycsICdzdWJtaXR0ZWQnLCAnYXBwcm92ZWQnLCAnZGlzcHV0ZWQnXTtcbmNvbnN0IERJU1BVVEVfUkVTT0xVVElPTlM6IERpc3B1dGVSZXNvbHV0aW9uW10gPSBbJ3BlbmRpbmcnLCAnY2xpZW50X3dpbnMnLCAnYWdlbnRfd2lucycsICdzcGxpdCddO1xuXG5leHBvcnQgY2xhc3MgRXNjcm93UmVnaXN0cnkge1xuICBwcml2YXRlIHJwYzogSnNvblJwYztcbiAgcHJpdmF0ZSBzZXNzaW9uOiBQcm90b25TZXNzaW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBjb250cmFjdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHJwYzogSnNvblJwYywgc2Vzc2lvbj86IFByb3RvblNlc3Npb24sIGNvbnRyYWN0Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5ycGMgPSBycGM7XG4gICAgdGhpcy5zZXNzaW9uID0gc2Vzc2lvbiB8fCBudWxsO1xuICAgIHRoaXMuY29udHJhY3QgPSBjb250cmFjdCB8fCBERUZBVUxUX0NPTlRSQUNUO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gUkVBRCBPUEVSQVRJT05TID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCBhIGpvYiBieSBJRFxuICAgKi9cbiAgYXN5bmMgZ2V0Sm9iKGlkOiBudW1iZXIpOiBQcm9taXNlPEpvYiB8IG51bGw+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgbG93ZXJfYm91bmQ6IFN0cmluZyhpZCksXG4gICAgICB1cHBlcl9ib3VuZDogU3RyaW5nKGlkKSxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3VsdC5yb3dzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VKb2IocmVzdWx0LnJvd3NbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgam9icyBmb3IgYSBjbGllbnRcbiAgICovXG4gIGFzeW5jIGxpc3RKb2JzQnlDbGllbnQoY2xpZW50OiBzdHJpbmcsIG9wdGlvbnM6IEpvYkxpc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3VsdDxKb2I+PiB7XG4gICAgY29uc3QgeyBsaW1pdCA9IDEwMCwgY3Vyc29yIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8Sm9iUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdqb2JzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAyLCAvLyBieUNsaWVudCBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbG93ZXJfYm91bmQ6IGN1cnNvcixcbiAgICAgIGxpbWl0OiBsaW1pdCArIDEsXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYXNNb3JlID0gcmVzdWx0LnJvd3MubGVuZ3RoID4gbGltaXQ7XG4gICAgY29uc3Qgcm93cyA9IGhhc01vcmUgPyByZXN1bHQucm93cy5zbGljZSgwLCBsaW1pdCkgOiByZXN1bHQucm93cztcbiAgICBsZXQgam9icyA9IHJvd3NcbiAgICAgIC5maWx0ZXIocm93ID0+IHJvdy5jbGllbnQgPT09IGNsaWVudClcbiAgICAgIC5tYXAocm93ID0+IHRoaXMucGFyc2VKb2Iocm93KSk7XG5cbiAgICBpZiAob3B0aW9ucy5zdGF0ZSkge1xuICAgICAgam9icyA9IGpvYnMuZmlsdGVyKGogPT4gai5zdGF0ZSA9PT0gb3B0aW9ucy5zdGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiBqb2JzLFxuICAgICAgaGFzTW9yZSxcbiAgICAgIG5leHRDdXJzb3I6IGhhc01vcmUgJiYgcm93cy5sZW5ndGggPiAwID8gcm93c1tyb3dzLmxlbmd0aCAtIDFdLmlkIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBqb2JzIGZvciBhbiBhZ2VudFxuICAgKi9cbiAgYXN5bmMgbGlzdEpvYnNCeUFnZW50KGFnZW50OiBzdHJpbmcsIG9wdGlvbnM6IEpvYkxpc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3VsdDxKb2I+PiB7XG4gICAgY29uc3QgeyBsaW1pdCA9IDEwMCwgY3Vyc29yIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8Sm9iUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdqb2JzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAzLCAvLyBieUFnZW50IGluZGV4XG4gICAgICBrZXlfdHlwZTogJ2k2NCcsXG4gICAgICBsb3dlcl9ib3VuZDogY3Vyc29yLFxuICAgICAgbGltaXQ6IGxpbWl0ICsgMSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhc01vcmUgPSByZXN1bHQucm93cy5sZW5ndGggPiBsaW1pdDtcbiAgICBjb25zdCByb3dzID0gaGFzTW9yZSA/IHJlc3VsdC5yb3dzLnNsaWNlKDAsIGxpbWl0KSA6IHJlc3VsdC5yb3dzO1xuICAgIGxldCBqb2JzID0gcm93c1xuICAgICAgLmZpbHRlcihyb3cgPT4gcm93LmFnZW50ID09PSBhZ2VudClcbiAgICAgIC5tYXAocm93ID0+IHRoaXMucGFyc2VKb2Iocm93KSk7XG5cbiAgICBpZiAob3B0aW9ucy5zdGF0ZSkge1xuICAgICAgam9icyA9IGpvYnMuZmlsdGVyKGogPT4gai5zdGF0ZSA9PT0gb3B0aW9ucy5zdGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiBqb2JzLFxuICAgICAgaGFzTW9yZSxcbiAgICAgIG5leHRDdXJzb3I6IGhhc01vcmUgJiYgcm93cy5sZW5ndGggPiAwID8gcm93c1tyb3dzLmxlbmd0aCAtIDFdLmlkIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1pbGVzdG9uZXMgZm9yIGEgam9iXG4gICAqL1xuICBhc3luYyBnZXRKb2JNaWxlc3RvbmVzKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPE1pbGVzdG9uZVtdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8TWlsZXN0b25lUmF3Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdtaWxlc3RvbmVzJyxcbiAgICAgIGluZGV4X3Bvc2l0aW9uOiAyLCAvLyBieUpvYiBpbmRleFxuICAgICAga2V5X3R5cGU6ICdpNjQnLFxuICAgICAgbGltaXQ6IDEwMCxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1xuICAgICAgLmZpbHRlcihyb3cgPT4gc2FmZVBhcnNlSW50KHJvdy5qb2JfaWQpID09PSBqb2JJZClcbiAgICAgIC5tYXAocm93ID0+IHRoaXMucGFyc2VNaWxlc3RvbmUocm93KSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRpc3B1dGUgZm9yIGEgam9iXG4gICAqL1xuICBhc3luYyBnZXRKb2JEaXNwdXRlKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPEVzY3Jvd0Rpc3B1dGUgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ycGMuZ2V0X3RhYmxlX3Jvd3M8e1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGpvYl9pZDogc3RyaW5nO1xuICAgICAgcmFpc2VkX2J5OiBzdHJpbmc7XG4gICAgICByZWFzb246IHN0cmluZztcbiAgICAgIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICAgICAgY2xpZW50X2Ftb3VudDogc3RyaW5nO1xuICAgICAgYWdlbnRfYW1vdW50OiBzdHJpbmc7XG4gICAgICByZXNvbHV0aW9uOiBudW1iZXI7XG4gICAgICByZXNvbHZlcjogc3RyaW5nO1xuICAgICAgcmVzb2x1dGlvbl9ub3Rlczogc3RyaW5nO1xuICAgICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgICAgcmVzb2x2ZWRfYXQ6IHN0cmluZztcbiAgICB9Pih7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY29kZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHNjb3BlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgdGFibGU6ICdkaXNwdXRlcycsXG4gICAgICBpbmRleF9wb3NpdGlvbjogMiwgLy8gYnlKb2IgaW5kZXhcbiAgICAgIGtleV90eXBlOiAnaTY0JyxcbiAgICAgIGxpbWl0OiAxMDAsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkaXNwdXRlID0gcmVzdWx0LnJvd3MuZmluZChyb3cgPT4gc2FmZVBhcnNlSW50KHJvdy5qb2JfaWQpID09PSBqb2JJZCk7XG4gICAgaWYgKCFkaXNwdXRlKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogc2FmZVBhcnNlSW50KGRpc3B1dGUuaWQpLFxuICAgICAgam9iX2lkOiBzYWZlUGFyc2VJbnQoZGlzcHV0ZS5qb2JfaWQpLFxuICAgICAgcmFpc2VkX2J5OiBkaXNwdXRlLnJhaXNlZF9ieSxcbiAgICAgIHJlYXNvbjogZGlzcHV0ZS5yZWFzb24sXG4gICAgICBldmlkZW5jZV91cmk6IGRpc3B1dGUuZXZpZGVuY2VfdXJpLFxuICAgICAgY2xpZW50X2Ftb3VudDogc2FmZVBhcnNlSW50KGRpc3B1dGUuY2xpZW50X2Ftb3VudCksXG4gICAgICBhZ2VudF9hbW91bnQ6IHNhZmVQYXJzZUludChkaXNwdXRlLmFnZW50X2Ftb3VudCksXG4gICAgICByZXNvbHV0aW9uOiBESVNQVVRFX1JFU09MVVRJT05TW2Rpc3B1dGUucmVzb2x1dGlvbl0sXG4gICAgICByZXNvbHZlcjogZGlzcHV0ZS5yZXNvbHZlcixcbiAgICAgIHJlc29sdXRpb25fbm90ZXM6IGRpc3B1dGUucmVzb2x1dGlvbl9ub3RlcyxcbiAgICAgIGNyZWF0ZWRfYXQ6IHNhZmVQYXJzZUludChkaXNwdXRlLmNyZWF0ZWRfYXQpLFxuICAgICAgcmVzb2x2ZWRfYXQ6IHNhZmVQYXJzZUludChkaXNwdXRlLnJlc29sdmVkX2F0KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYXZhaWxhYmxlIGFyYml0cmF0b3JzXG4gICAqL1xuICBhc3luYyBsaXN0QXJiaXRyYXRvcnMoKTogUHJvbWlzZTxBcmJpdHJhdG9yW10+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czx7XG4gICAgICBhY2NvdW50OiBzdHJpbmc7XG4gICAgICBzdGFrZTogc3RyaW5nO1xuICAgICAgZmVlX3BlcmNlbnQ6IHN0cmluZztcbiAgICAgIHRvdGFsX2Nhc2VzOiBzdHJpbmc7XG4gICAgICBzdWNjZXNzZnVsX2Nhc2VzOiBzdHJpbmc7XG4gICAgICBhY3RpdmVfZGlzcHV0ZXM6IHN0cmluZztcbiAgICAgIGFjdGl2ZTogbnVtYmVyO1xuICAgIH0+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2FyYml0cmF0b3JzJyxcbiAgICAgIGxpbWl0OiAxMDAsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnJvd3NcbiAgICAgIC5maWx0ZXIocm93ID0+IHJvdy5hY3RpdmUgPT09IDEpXG4gICAgICAubWFwKHJvdyA9PiAoe1xuICAgICAgICBhY2NvdW50OiByb3cuYWNjb3VudCxcbiAgICAgICAgc3Rha2U6IHNhZmVQYXJzZUludChyb3cuc3Rha2UpLFxuICAgICAgICBmZWVfcGVyY2VudDogc2FmZVBhcnNlSW50KHJvdy5mZWVfcGVyY2VudCksXG4gICAgICAgIHRvdGFsX2Nhc2VzOiBzYWZlUGFyc2VJbnQocm93LnRvdGFsX2Nhc2VzKSxcbiAgICAgICAgc3VjY2Vzc2Z1bF9jYXNlczogc2FmZVBhcnNlSW50KHJvdy5zdWNjZXNzZnVsX2Nhc2VzKSxcbiAgICAgICAgYWN0aXZlX2Rpc3B1dGVzOiBzYWZlUGFyc2VJbnQocm93LmFjdGl2ZV9kaXNwdXRlcyksXG4gICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09IFdSSVRFIE9QRVJBVElPTlMgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGpvYlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlSm9iKGRhdGE6IENyZWF0ZUpvYkRhdGEpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnY3JlYXRlam9iJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGFnZW50OiBkYXRhLmFnZW50IHx8ICcnLFxuICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGRlbGl2ZXJhYmxlczogSlNPTi5zdHJpbmdpZnkoZGF0YS5kZWxpdmVyYWJsZXMpLFxuICAgICAgICAgIGFtb3VudDogZGF0YS5hbW91bnQsXG4gICAgICAgICAgc3ltYm9sOiBkYXRhLnN5bWJvbCB8fCAnWFBSJyxcbiAgICAgICAgICBkZWFkbGluZTogZGF0YS5kZWFkbGluZSB8fCAwLFxuICAgICAgICAgIGFyYml0cmF0b3I6IGRhdGEuYXJiaXRyYXRvciB8fCAnJyxcbiAgICAgICAgICBqb2JfaGFzaDogZGF0YS5qb2JfaGFzaCB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmQgYSBqb2JcbiAgICovXG4gIGFzeW5jIGZ1bmRKb2Ioam9iSWQ6IG51bWJlciwgYW1vdW50OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiAnZW9zaW8udG9rZW4nLFxuICAgICAgICBuYW1lOiAndHJhbnNmZXInLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZnJvbTogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHRvOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICAgIHF1YW50aXR5OiBhbW91bnQsXG4gICAgICAgICAgbWVtbzogYGZ1bmQ6JHtqb2JJZH1gLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0IGEgam9iIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIGFjY2VwdEpvYihqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FjY2VwdGpvYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhZ2VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB3b3JraW5nIG9uIGEgam9iIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIHN0YXJ0Sm9iKGpvYklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnc3RhcnRqb2InLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWdlbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsaXZlciBhIGpvYiAoYXMgYWdlbnQpXG4gICAqL1xuICBhc3luYyBkZWxpdmVySm9iKGpvYklkOiBudW1iZXIsIGV2aWRlbmNlVXJpOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnZGVsaXZlcicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhZ2VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogam9iSWQsXG4gICAgICAgICAgZXZpZGVuY2VfdXJpOiBldmlkZW5jZVVyaSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcHJvdmUgZGVsaXZlcnkgKGFzIGNsaWVudClcbiAgICovXG4gIGFzeW5jIGFwcHJvdmVEZWxpdmVyeShqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FwcHJvdmUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG1pbGVzdG9uZSB0byBhIGpvYlxuICAgKi9cbiAgYXN5bmMgYWRkTWlsZXN0b25lKGRhdGE6IEFkZE1pbGVzdG9uZURhdGEpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnYWRkbWlsZXN0b25lJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogZGF0YS5qb2JfaWQsXG4gICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgYW1vdW50OiBkYXRhLmFtb3VudCxcbiAgICAgICAgICBvcmRlcjogZGF0YS5vcmRlcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBhIG1pbGVzdG9uZSAoYXMgYWdlbnQpXG4gICAqL1xuICBhc3luYyBzdWJtaXRNaWxlc3RvbmUobWlsZXN0b25lSWQ6IG51bWJlciwgZXZpZGVuY2VVcmk6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdzdWJtaXRtaWxlJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgbWlsZXN0b25lX2lkOiBtaWxlc3RvbmVJZCxcbiAgICAgICAgICBldmlkZW5jZV91cmk6IGV2aWRlbmNlVXJpLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBhIG1pbGVzdG9uZSAoYXMgY2xpZW50KVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZU1pbGVzdG9uZShtaWxlc3RvbmVJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FwcHJvdmVtaWxlJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIG1pbGVzdG9uZV9pZDogbWlsZXN0b25lSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSYWlzZSBhIGRpc3B1dGVcbiAgICovXG4gIGFzeW5jIHJhaXNlRGlzcHV0ZShqb2JJZDogbnVtYmVyLCByZWFzb246IHN0cmluZywgZXZpZGVuY2VVcmk/OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnZGlzcHV0ZScsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByYWlzZWRfYnk6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICAgIHJlYXNvbixcbiAgICAgICAgICBldmlkZW5jZV91cmk6IGV2aWRlbmNlVXJpIHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIGEgam9iIChhcyBjbGllbnQpXG4gICAqL1xuICBhc3luYyBjYW5jZWxKb2Ioam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjYW5jZWwnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY2xpZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgam9iX2lkOiBqb2JJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYWltIHRpbWVvdXQgKHJlZnVuZCBvciBhdXRvLWFwcHJvdmUpXG4gICAqL1xuICBhc3luYyBjbGFpbVRpbWVvdXQoam9iSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICd0aW1lb3V0JyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsYWltZXI6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xhaW0gYWNjZXB0YW5jZSB0aW1lb3V0IHJlZnVuZCAoYXMgY2xpZW50KVxuICAgKi9cbiAgYXN5bmMgY2xhaW1BY2NlcHRhbmNlVGltZW91dChqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2FjY3B0dGltZW91dCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjbGllbnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBqb2JfaWQ6IGpvYklkLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PSBCSURESU5HID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIExpc3Qgb3BlbiBqb2JzIChhZ2VudCBub3QgYXNzaWduZWQpXG4gICAqL1xuICBhc3luYyBsaXN0T3BlbkpvYnMob3B0aW9uczogSm9iTGlzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PEpvYj4+IHtcbiAgICBjb25zdCB7IGxpbWl0ID0gMTAwLCBjdXJzb3IgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJwYy5nZXRfdGFibGVfcm93czxKb2JSYXc+KHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjb2RlOiB0aGlzLmNvbnRyYWN0LFxuICAgICAgc2NvcGU6IHRoaXMuY29udHJhY3QsXG4gICAgICB0YWJsZTogJ2pvYnMnLFxuICAgICAgbG93ZXJfYm91bmQ6IGN1cnNvcixcbiAgICAgIGxpbWl0OiBsaW1pdCArIDEsXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYXNNb3JlID0gcmVzdWx0LnJvd3MubGVuZ3RoID4gbGltaXQ7XG4gICAgY29uc3Qgcm93cyA9IGhhc01vcmUgPyByZXN1bHQucm93cy5zbGljZSgwLCBsaW1pdCkgOiByZXN1bHQucm93cztcbiAgICAvLyBPcGVuIGpvYnMgaGF2ZSBlbXB0eSBhZ2VudCBuYW1lXG4gICAgbGV0IGpvYnMgPSByb3dzXG4gICAgICAuZmlsdGVyKHJvdyA9PiByb3cuYWdlbnQgPT09ICcnIHx8IHJvdy5hZ2VudCA9PT0gJy4uLi4uLi4uLi4uLi4nKVxuICAgICAgLm1hcChyb3cgPT4gdGhpcy5wYXJzZUpvYihyb3cpKTtcblxuICAgIGlmIChvcHRpb25zLnN0YXRlKSB7XG4gICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLnN0YXRlID09PSBvcHRpb25zLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IGpvYnMsXG4gICAgICBoYXNNb3JlLFxuICAgICAgbmV4dEN1cnNvcjogaGFzTW9yZSAmJiByb3dzLmxlbmd0aCA+IDAgPyByb3dzW3Jvd3MubGVuZ3RoIC0gMV0uaWQgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGJpZHMgZm9yIGEgam9iXG4gICAqL1xuICBhc3luYyBsaXN0Qmlkc0ZvckpvYihqb2JJZDogbnVtYmVyKTogUHJvbWlzZTxCaWRbXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEJpZFJhdz4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnYmlkcycsXG4gICAgICBpbmRleF9wb3NpdGlvbjogMiwgLy8gYnlKb2IgaW5kZXhcbiAgICAgIGtleV90eXBlOiAnaTY0JyxcbiAgICAgIGxvd2VyX2JvdW5kOiBTdHJpbmcoam9iSWQpLFxuICAgICAgbGltaXQ6IDEwMCxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1xuICAgICAgLmZpbHRlcihyb3cgPT4gc2FmZVBhcnNlSW50KHJvdy5qb2JfaWQpID09PSBqb2JJZClcbiAgICAgIC5tYXAocm93ID0+IHRoaXMucGFyc2VCaWQocm93KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3BlY2lmaWMgYmlkXG4gICAqL1xuICBhc3luYyBnZXRCaWQoaWQ6IG51bWJlcik6IFByb21pc2U8QmlkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnBjLmdldF90YWJsZV9yb3dzPEJpZFJhdz4oe1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGNvZGU6IHRoaXMuY29udHJhY3QsXG4gICAgICBzY29wZTogdGhpcy5jb250cmFjdCxcbiAgICAgIHRhYmxlOiAnYmlkcycsXG4gICAgICBsb3dlcl9ib3VuZDogU3RyaW5nKGlkKSxcbiAgICAgIHVwcGVyX2JvdW5kOiBTdHJpbmcoaWQpLFxuICAgICAgbGltaXQ6IDEsXG4gICAgfSk7XG5cbiAgICBpZiAocmVzdWx0LnJvd3MubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUJpZChyZXN1bHQucm93c1swXSk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGEgYmlkIG9uIGFuIG9wZW4gam9iIChhcyBhZ2VudClcbiAgICovXG4gIGFzeW5jIHN1Ym1pdEJpZChkYXRhOiBTdWJtaXRCaWREYXRhKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3N1Ym1pdGJpZCcsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhZ2VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGpvYl9pZDogZGF0YS5qb2JfaWQsXG4gICAgICAgICAgYW1vdW50OiBkYXRhLmFtb3VudCxcbiAgICAgICAgICB0aW1lbGluZTogZGF0YS50aW1lbGluZSxcbiAgICAgICAgICBwcm9wb3NhbDogZGF0YS5wcm9wb3NhbCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhIGJpZCAoYXMgY2xpZW50KSDigJQgYXNzaWducyB0aGUgYWdlbnQgdG8gdGhlIGpvYlxuICAgKi9cbiAgYXN5bmMgc2VsZWN0QmlkKGJpZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnc2VsZWN0YmlkJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNsaWVudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGJpZF9pZDogYmlkSWQsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXRoZHJhdyBhIGJpZCAoYXMgYWdlbnQpXG4gICAqL1xuICBhc3luYyB3aXRoZHJhd0JpZChiaWRJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ3dpdGhkcmF3YmlkJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFnZW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYmlkX2lkOiBiaWRJZCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT0gQVJCSVRSQVRPUiBNQU5BR0VNRU5UID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFzIGFuIGFyYml0cmF0b3JcbiAgICovXG4gIGFzeW5jIHJlZ2lzdGVyQXJiaXRyYXRvcihmZWVQZXJjZW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAncmVnYXJiJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBmZWVfcGVyY2VudDogZmVlUGVyY2VudCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YWtlIFhQUiBhcyBhcmJpdHJhdG9yICh2aWEgdG9rZW4gdHJhbnNmZXIpXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgc3RyaW5nIChlLmcuLCBcIjEwMDAuMDAwMCBYUFJcIilcbiAgICovXG4gIGFzeW5jIHN0YWtlQXJiaXRyYXRvcihhbW91bnQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6ICdlb3Npby50b2tlbicsXG4gICAgICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmcm9tOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgdG86IHRoaXMuY29udHJhY3QsXG4gICAgICAgICAgcXVhbnRpdHk6IGFtb3VudCxcbiAgICAgICAgICBtZW1vOiAnYXJic3Rha2UnLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXJiaXRyYXRlIGEgZGlzcHV0ZVxuICAgKlxuICAgKiBAcGFyYW0gZGlzcHV0ZUlkIC0gVGhlIGRpc3B1dGUgdG8gcmVzb2x2ZVxuICAgKiBAcGFyYW0gY2xpZW50UGVyY2VudCAtIFBlcmNlbnRhZ2Ugb2YgcmVtYWluaW5nIGZ1bmRzIHRvIGdpdmUgdG8gY2xpZW50ICgwLTEwMClcbiAgICogQHBhcmFtIHJlc29sdXRpb25Ob3RlcyAtIEV4cGxhbmF0aW9uIG9mIHRoZSByZXNvbHV0aW9uXG4gICAqL1xuICBhc3luYyBhcmJpdHJhdGUoXG4gICAgZGlzcHV0ZUlkOiBudW1iZXIsXG4gICAgY2xpZW50UGVyY2VudDogbnVtYmVyLFxuICAgIHJlc29sdXRpb25Ob3Rlczogc3RyaW5nXG4gICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhcmJpdHJhdGUnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYXJiaXRyYXRvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIGRpc3B1dGVfaWQ6IGRpc3B1dGVJZCxcbiAgICAgICAgICBjbGllbnRfcGVyY2VudDogY2xpZW50UGVyY2VudCxcbiAgICAgICAgICByZXNvbHV0aW9uX25vdGVzOiByZXNvbHV0aW9uTm90ZXMsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgZGlzcHV0ZSBhZnRlciB0aW1lb3V0IChvd25lci1vbmx5IGZhbGxiYWNrKS5cbiAgICogQ2FuIG9ubHkgYmUgY2FsbGVkIGFmdGVyIDE0IGRheXMgc2luY2UgZGlzcHV0ZSBjcmVhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGRpc3B1dGVJZCAtIFRoZSBkaXNwdXRlIHRvIHJlc29sdmVcbiAgICogQHBhcmFtIGNsaWVudFBlcmNlbnQgLSBQZXJjZW50YWdlIG9mIHJlbWFpbmluZyBmdW5kcyB0byBnaXZlIHRvIGNsaWVudCAoMC0xMDApXG4gICAqIEBwYXJhbSByZXNvbHV0aW9uTm90ZXMgLSBFeHBsYW5hdGlvbiBvZiB0aGUgcmVzb2x1dGlvblxuICAgKi9cbiAgYXN5bmMgcmVzb2x2ZVRpbWVvdXQoXG4gICAgZGlzcHV0ZUlkOiBudW1iZXIsXG4gICAgY2xpZW50UGVyY2VudDogbnVtYmVyLFxuICAgIHJlc29sdXRpb25Ob3Rlczogc3RyaW5nXG4gICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdyZXNvbHZldG1vdXQnLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZGlzcHV0ZV9pZDogZGlzcHV0ZUlkLFxuICAgICAgICAgIGNsaWVudF9wZXJjZW50OiBjbGllbnRQZXJjZW50LFxuICAgICAgICAgIHJlc29sdXRpb25fbm90ZXM6IHJlc29sdXRpb25Ob3RlcyxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGFyYml0cmF0b3IgKG11c3QgaGF2ZSBzdWZmaWNpZW50IHN0YWtlKVxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGVBcmJpdHJhdG9yKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdhY3RpdmF0ZWFyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGFyYml0cmF0b3IgKHN0b3AgYWNjZXB0aW5nIG5ldyBjYXNlcylcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGVBcmJpdHJhdG9yKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdkZWFjdGFyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IHRvIHVuc3Rha2UgYXJiaXRyYXRvciBmdW5kcyAoNy1kYXkgZGVsYXkpLlxuICAgKiBNdXN0IGJlIGRlYWN0aXZhdGVkIGFuZCBoYXZlIG5vIHBlbmRpbmcgZGlzcHV0ZXMgZmlyc3QuXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgdG8gdW5zdGFrZSBpbiBzbWFsbGVzdCB1bml0cyAoZS5nLiwgMTAwMDAgPSAxLjAwMDAgWFBSKVxuICAgKi9cbiAgYXN5bmMgdW5zdGFrZUFyYml0cmF0b3IoYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAndW5zdGFrZWFyYicsXG4gICAgICAgIGF1dGhvcml6YXRpb246IFt7XG4gICAgICAgICAgYWN0b3I6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLnNlc3Npb24hLmF1dGgucGVybWlzc2lvbixcbiAgICAgICAgfV0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2l0aGRyYXcgdW5zdGFrZWQgYXJiaXRyYXRvciBmdW5kcyAoYWZ0ZXIgNy1kYXkgZGVsYXkpXG4gICAqL1xuICBhc3luYyB3aXRoZHJhd0FyYml0cmF0b3JTdGFrZSgpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnd2l0aGRyYXdhcmInLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBbe1xuICAgICAgICAgIGFjdG9yOiB0aGlzLnNlc3Npb24hLmF1dGguYWN0b3IsXG4gICAgICAgICAgcGVybWlzc2lvbjogdGhpcy5zZXNzaW9uIS5hdXRoLnBlcm1pc3Npb24sXG4gICAgICAgIH1dLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYWNjb3VudDogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICB9LFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIGEgcGVuZGluZyB1bnN0YWtlIHJlcXVlc3QgKHJldHVybnMgZnVuZHMgdG8gYWN0aXZlIHN0YWtlKVxuICAgKi9cbiAgYXN5bmMgY2FuY2VsQXJiaXRyYXRvclVuc3Rha2UoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIHRoaXMucmVxdWlyZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24hLmxpbmsudHJhbnNhY3Qoe1xuICAgICAgYWN0aW9uczogW3tcbiAgICAgICAgYWNjb3VudDogdGhpcy5jb250cmFjdCxcbiAgICAgICAgbmFtZTogJ2NhbmNlbHVuc3RrJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjY291bnQ6IHRoaXMuc2Vzc2lvbiEuYXV0aC5hY3RvcixcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIGNvbXBsZXRlZCBqb2JzIChwZXJtaXNzaW9ubGVzcylcbiAgICovXG4gIGFzeW5jIGNsZWFuSm9icyhtYXhBZ2U6IG51bWJlciwgbWF4RGVsZXRlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiEubGluay50cmFuc2FjdCh7XG4gICAgICBhY3Rpb25zOiBbe1xuICAgICAgICBhY2NvdW50OiB0aGlzLmNvbnRyYWN0LFxuICAgICAgICBuYW1lOiAnY2xlYW5qb2JzJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG1heF9hZ2U6IG1heEFnZSxcbiAgICAgICAgICBtYXhfZGVsZXRlOiBtYXhEZWxldGUsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCByZXNvbHZlZCBkaXNwdXRlcyAocGVybWlzc2lvbmxlc3MpXG4gICAqL1xuICBhc3luYyBjbGVhbkRpc3B1dGVzKG1heEFnZTogbnVtYmVyLCBtYXhEZWxldGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICB0aGlzLnJlcXVpcmVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uIS5saW5rLnRyYW5zYWN0KHtcbiAgICAgIGFjdGlvbnM6IFt7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuY29udHJhY3QsXG4gICAgICAgIG5hbWU6ICdjbGVhbmRpc3BzJyxcbiAgICAgICAgYXV0aG9yaXphdGlvbjogW3tcbiAgICAgICAgICBhY3RvcjogdGhpcy5zZXNzaW9uIS5hdXRoLmFjdG9yLFxuICAgICAgICAgIHBlcm1pc3Npb246IHRoaXMuc2Vzc2lvbiEuYXV0aC5wZXJtaXNzaW9uLFxuICAgICAgICB9XSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG1heF9hZ2U6IG1heEFnZSxcbiAgICAgICAgICBtYXhfZGVsZXRlOiBtYXhEZWxldGUsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09IEhFTFBFUlMgPT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlcXVpcmVTZXNzaW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb24gcmVxdWlyZWQgZm9yIHdyaXRlIG9wZXJhdGlvbnMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSm9iKHJhdzogSm9iUmF3KTogSm9iIHtcbiAgICBsZXQgZGVsaXZlcmFibGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBkZWxpdmVyYWJsZXMgPSBKU09OLnBhcnNlKHJhdy5kZWxpdmVyYWJsZXMpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgZGVsaXZlcmFibGVzID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzYWZlUGFyc2VJbnQocmF3LmlkKSxcbiAgICAgIGNsaWVudDogcmF3LmNsaWVudCxcbiAgICAgIGFnZW50OiByYXcuYWdlbnQsXG4gICAgICB0aXRsZTogcmF3LnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IHJhdy5kZXNjcmlwdGlvbixcbiAgICAgIGRlbGl2ZXJhYmxlcyxcbiAgICAgIGFtb3VudDogc2FmZVBhcnNlSW50KHJhdy5hbW91bnQpLFxuICAgICAgc3ltYm9sOiByYXcuc3ltYm9sLFxuICAgICAgZnVuZGVkX2Ftb3VudDogc2FmZVBhcnNlSW50KHJhdy5mdW5kZWRfYW1vdW50KSxcbiAgICAgIHJlbGVhc2VkX2Ftb3VudDogc2FmZVBhcnNlSW50KHJhdy5yZWxlYXNlZF9hbW91bnQpLFxuICAgICAgc3RhdGU6IEpPQl9TVEFURVNbcmF3LnN0YXRlXSB8fCAnY3JlYXRlZCcsXG4gICAgICBkZWFkbGluZTogc2FmZVBhcnNlSW50KHJhdy5kZWFkbGluZSksXG4gICAgICBhcmJpdHJhdG9yOiByYXcuYXJiaXRyYXRvcixcbiAgICAgIGpvYl9oYXNoOiByYXcuam9iX2hhc2gsXG4gICAgICBjcmVhdGVkX2F0OiBzYWZlUGFyc2VJbnQocmF3LmNyZWF0ZWRfYXQpLFxuICAgICAgdXBkYXRlZF9hdDogc2FmZVBhcnNlSW50KHJhdy51cGRhdGVkX2F0KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1pbGVzdG9uZShyYXc6IE1pbGVzdG9uZVJhdyk6IE1pbGVzdG9uZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzYWZlUGFyc2VJbnQocmF3LmlkKSxcbiAgICAgIGpvYl9pZDogc2FmZVBhcnNlSW50KHJhdy5qb2JfaWQpLFxuICAgICAgdGl0bGU6IHJhdy50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByYXcuZGVzY3JpcHRpb24sXG4gICAgICBhbW91bnQ6IHNhZmVQYXJzZUludChyYXcuYW1vdW50KSxcbiAgICAgIG9yZGVyOiByYXcub3JkZXIsXG4gICAgICBzdGF0ZTogTUlMRVNUT05FX1NUQVRFU1tyYXcuc3RhdGVdIHx8ICdwZW5kaW5nJyxcbiAgICAgIGV2aWRlbmNlX3VyaTogcmF3LmV2aWRlbmNlX3VyaSxcbiAgICAgIHN1Ym1pdHRlZF9hdDogc2FmZVBhcnNlSW50KHJhdy5zdWJtaXR0ZWRfYXQpLFxuICAgICAgYXBwcm92ZWRfYXQ6IHNhZmVQYXJzZUludChyYXcuYXBwcm92ZWRfYXQpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlQmlkKHJhdzogQmlkUmF3KTogQmlkIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNhZmVQYXJzZUludChyYXcuaWQpLFxuICAgICAgam9iX2lkOiBzYWZlUGFyc2VJbnQocmF3LmpvYl9pZCksXG4gICAgICBhZ2VudDogcmF3LmFnZW50LFxuICAgICAgYW1vdW50OiBzYWZlUGFyc2VJbnQocmF3LmFtb3VudCksXG4gICAgICB0aW1lbGluZTogc2FmZVBhcnNlSW50KHJhdy50aW1lbGluZSksXG4gICAgICBwcm9wb3NhbDogcmF3LnByb3Bvc2FsLFxuICAgICAgY3JlYXRlZF9hdDogc2FmZVBhcnNlSW50KHJhdy5jcmVhdGVkX2F0KSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EOSIO signature authentication utilities for A2A requests.
|
|
3
|
+
*
|
|
4
|
+
* Signing (caller side):
|
|
5
|
+
* digest = SHA256(account + "\n" + timestamp + "\n" + SHA256(requestBody))
|
|
6
|
+
* signature = PrivateKey.sign(digest)
|
|
7
|
+
*
|
|
8
|
+
* Verification (server side):
|
|
9
|
+
* Recover public key from signature + digest, compare against on-chain keys.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Create the digest that is signed for A2A authentication.
|
|
13
|
+
*
|
|
14
|
+
* Format: SHA256(account + "\n" + timestamp + "\n" + bodyHash)
|
|
15
|
+
* where bodyHash = SHA256(requestBody)
|
|
16
|
+
*/
|
|
17
|
+
export declare function createA2ADigest(account: string, timestamp: number, bodyHash: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Hash a request body for use in A2A authentication.
|
|
20
|
+
*/
|
|
21
|
+
export declare function hashBody(body: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Sign an A2A request.
|
|
24
|
+
*
|
|
25
|
+
* @param privateKeyWif - WIF-encoded private key (e.g. "5K...")
|
|
26
|
+
* @param account - XPR account name of the signer
|
|
27
|
+
* @param timestamp - Unix timestamp (seconds)
|
|
28
|
+
* @param bodyHash - SHA256 hash of the request body
|
|
29
|
+
* @returns SIG_K1_... signature string
|
|
30
|
+
*/
|
|
31
|
+
export declare function signA2ARequest(privateKeyWif: string, account: string, timestamp: number, bodyHash: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Recover the public key from a signed A2A request.
|
|
34
|
+
*
|
|
35
|
+
* @param signature - SIG_K1_... signature string
|
|
36
|
+
* @param account - XPR account name claimed by the signer
|
|
37
|
+
* @param timestamp - Unix timestamp from the request
|
|
38
|
+
* @param bodyHash - SHA256 hash of the request body
|
|
39
|
+
* @returns PUB_K1_... public key string
|
|
40
|
+
*/
|
|
41
|
+
export declare function recoverA2APublicKey(signature: string, account: string, timestamp: number, bodyHash: string): string;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EOSIO signature authentication utilities for A2A requests.
|
|
4
|
+
*
|
|
5
|
+
* Signing (caller side):
|
|
6
|
+
* digest = SHA256(account + "\n" + timestamp + "\n" + SHA256(requestBody))
|
|
7
|
+
* signature = PrivateKey.sign(digest)
|
|
8
|
+
*
|
|
9
|
+
* Verification (server side):
|
|
10
|
+
* Recover public key from signature + digest, compare against on-chain keys.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.createA2ADigest = createA2ADigest;
|
|
14
|
+
exports.hashBody = hashBody;
|
|
15
|
+
exports.signA2ARequest = signA2ARequest;
|
|
16
|
+
exports.recoverA2APublicKey = recoverA2APublicKey;
|
|
17
|
+
const js_1 = require("@proton/js");
|
|
18
|
+
/**
|
|
19
|
+
* Create the digest that is signed for A2A authentication.
|
|
20
|
+
*
|
|
21
|
+
* Format: SHA256(account + "\n" + timestamp + "\n" + bodyHash)
|
|
22
|
+
* where bodyHash = SHA256(requestBody)
|
|
23
|
+
*/
|
|
24
|
+
function createA2ADigest(account, timestamp, bodyHash) {
|
|
25
|
+
const preimage = `${account}\n${timestamp}\n${bodyHash}`;
|
|
26
|
+
return (0, js_1.sha256)(preimage);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Hash a request body for use in A2A authentication.
|
|
30
|
+
*/
|
|
31
|
+
function hashBody(body) {
|
|
32
|
+
return (0, js_1.sha256)(body);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sign an A2A request.
|
|
36
|
+
*
|
|
37
|
+
* @param privateKeyWif - WIF-encoded private key (e.g. "5K...")
|
|
38
|
+
* @param account - XPR account name of the signer
|
|
39
|
+
* @param timestamp - Unix timestamp (seconds)
|
|
40
|
+
* @param bodyHash - SHA256 hash of the request body
|
|
41
|
+
* @returns SIG_K1_... signature string
|
|
42
|
+
*/
|
|
43
|
+
function signA2ARequest(privateKeyWif, account, timestamp, bodyHash) {
|
|
44
|
+
const digest = createA2ADigest(account, timestamp, bodyHash);
|
|
45
|
+
const privateKey = js_1.Key.PrivateKey.fromString(privateKeyWif);
|
|
46
|
+
const signature = privateKey.sign(Buffer.from(digest, 'hex'));
|
|
47
|
+
return signature.toString();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recover the public key from a signed A2A request.
|
|
51
|
+
*
|
|
52
|
+
* @param signature - SIG_K1_... signature string
|
|
53
|
+
* @param account - XPR account name claimed by the signer
|
|
54
|
+
* @param timestamp - Unix timestamp from the request
|
|
55
|
+
* @param bodyHash - SHA256 hash of the request body
|
|
56
|
+
* @returns PUB_K1_... public key string
|
|
57
|
+
*/
|
|
58
|
+
function recoverA2APublicKey(signature, account, timestamp, bodyHash) {
|
|
59
|
+
const digest = createA2ADigest(account, timestamp, bodyHash);
|
|
60
|
+
const sig = js_1.Key.Signature.fromString(signature);
|
|
61
|
+
const publicKey = sig.recover(Buffer.from(digest, 'hex'));
|
|
62
|
+
return publicKey.toString();
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW9zaW8tYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lb3Npby1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7O0FBVUgsMENBR0M7QUFLRCw0QkFFQztBQVdELHdDQVVDO0FBV0Qsa0RBVUM7QUE1REQsbUNBQXlDO0FBRXpDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWUsRUFBRSxTQUFpQixFQUFFLFFBQWdCO0lBQ2xGLE1BQU0sUUFBUSxHQUFHLEdBQUcsT0FBTyxLQUFLLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztJQUN6RCxPQUFPLElBQUEsV0FBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxJQUFZO0lBQ25DLE9BQU8sSUFBQSxXQUFNLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixhQUFxQixFQUNyQixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsUUFBZ0I7SUFFaEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0QsTUFBTSxVQUFVLEdBQUcsUUFBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELE9BQU8sU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxTQUFpQixFQUNqQixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsUUFBZ0I7SUFFaEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0QsTUFBTSxHQUFHLEdBQUcsUUFBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVPU0lPIHNpZ25hdHVyZSBhdXRoZW50aWNhdGlvbiB1dGlsaXRpZXMgZm9yIEEyQSByZXF1ZXN0cy5cbiAqXG4gKiBTaWduaW5nIChjYWxsZXIgc2lkZSk6XG4gKiAgIGRpZ2VzdCA9IFNIQTI1NihhY2NvdW50ICsgXCJcXG5cIiArIHRpbWVzdGFtcCArIFwiXFxuXCIgKyBTSEEyNTYocmVxdWVzdEJvZHkpKVxuICogICBzaWduYXR1cmUgPSBQcml2YXRlS2V5LnNpZ24oZGlnZXN0KVxuICpcbiAqIFZlcmlmaWNhdGlvbiAoc2VydmVyIHNpZGUpOlxuICogICBSZWNvdmVyIHB1YmxpYyBrZXkgZnJvbSBzaWduYXR1cmUgKyBkaWdlc3QsIGNvbXBhcmUgYWdhaW5zdCBvbi1jaGFpbiBrZXlzLlxuICovXG5cbmltcG9ydCB7IEtleSwgc2hhMjU2IH0gZnJvbSAnQHByb3Rvbi9qcyc7XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBkaWdlc3QgdGhhdCBpcyBzaWduZWQgZm9yIEEyQSBhdXRoZW50aWNhdGlvbi5cbiAqXG4gKiBGb3JtYXQ6IFNIQTI1NihhY2NvdW50ICsgXCJcXG5cIiArIHRpbWVzdGFtcCArIFwiXFxuXCIgKyBib2R5SGFzaClcbiAqIHdoZXJlIGJvZHlIYXNoID0gU0hBMjU2KHJlcXVlc3RCb2R5KVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQTJBRGlnZXN0KGFjY291bnQ6IHN0cmluZywgdGltZXN0YW1wOiBudW1iZXIsIGJvZHlIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwcmVpbWFnZSA9IGAke2FjY291bnR9XFxuJHt0aW1lc3RhbXB9XFxuJHtib2R5SGFzaH1gO1xuICByZXR1cm4gc2hhMjU2KHByZWltYWdlKTtcbn1cblxuLyoqXG4gKiBIYXNoIGEgcmVxdWVzdCBib2R5IGZvciB1c2UgaW4gQTJBIGF1dGhlbnRpY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaEJvZHkoYm9keTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNoYTI1Nihib2R5KTtcbn1cblxuLyoqXG4gKiBTaWduIGFuIEEyQSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBwcml2YXRlS2V5V2lmIC0gV0lGLWVuY29kZWQgcHJpdmF0ZSBrZXkgKGUuZy4gXCI1Sy4uLlwiKVxuICogQHBhcmFtIGFjY291bnQgLSBYUFIgYWNjb3VudCBuYW1lIG9mIHRoZSBzaWduZXJcbiAqIEBwYXJhbSB0aW1lc3RhbXAgLSBVbml4IHRpbWVzdGFtcCAoc2Vjb25kcylcbiAqIEBwYXJhbSBib2R5SGFzaCAtIFNIQTI1NiBoYXNoIG9mIHRoZSByZXF1ZXN0IGJvZHlcbiAqIEByZXR1cm5zIFNJR19LMV8uLi4gc2lnbmF0dXJlIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkEyQVJlcXVlc3QoXG4gIHByaXZhdGVLZXlXaWY6IHN0cmluZyxcbiAgYWNjb3VudDogc3RyaW5nLFxuICB0aW1lc3RhbXA6IG51bWJlcixcbiAgYm9keUhhc2g6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUEyQURpZ2VzdChhY2NvdW50LCB0aW1lc3RhbXAsIGJvZHlIYXNoKTtcbiAgY29uc3QgcHJpdmF0ZUtleSA9IEtleS5Qcml2YXRlS2V5LmZyb21TdHJpbmcocHJpdmF0ZUtleVdpZik7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IHByaXZhdGVLZXkuc2lnbihCdWZmZXIuZnJvbShkaWdlc3QsICdoZXgnKSk7XG4gIHJldHVybiBzaWduYXR1cmUudG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBSZWNvdmVyIHRoZSBwdWJsaWMga2V5IGZyb20gYSBzaWduZWQgQTJBIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHNpZ25hdHVyZSAtIFNJR19LMV8uLi4gc2lnbmF0dXJlIHN0cmluZ1xuICogQHBhcmFtIGFjY291bnQgLSBYUFIgYWNjb3VudCBuYW1lIGNsYWltZWQgYnkgdGhlIHNpZ25lclxuICogQHBhcmFtIHRpbWVzdGFtcCAtIFVuaXggdGltZXN0YW1wIGZyb20gdGhlIHJlcXVlc3RcbiAqIEBwYXJhbSBib2R5SGFzaCAtIFNIQTI1NiBoYXNoIG9mIHRoZSByZXF1ZXN0IGJvZHlcbiAqIEByZXR1cm5zIFBVQl9LMV8uLi4gcHVibGljIGtleSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY292ZXJBMkFQdWJsaWNLZXkoXG4gIHNpZ25hdHVyZTogc3RyaW5nLFxuICBhY2NvdW50OiBzdHJpbmcsXG4gIHRpbWVzdGFtcDogbnVtYmVyLFxuICBib2R5SGFzaDogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlnZXN0ID0gY3JlYXRlQTJBRGlnZXN0KGFjY291bnQsIHRpbWVzdGFtcCwgYm9keUhhc2gpO1xuICBjb25zdCBzaWcgPSBLZXkuU2lnbmF0dXJlLmZyb21TdHJpbmcoc2lnbmF0dXJlKTtcbiAgY29uc3QgcHVibGljS2V5ID0gc2lnLnJlY292ZXIoQnVmZmVyLmZyb20oZGlnZXN0LCAnaGV4JykpO1xuICByZXR1cm4gcHVibGljS2V5LnRvU3RyaW5nKCk7XG59XG4iXX0=
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ export { AgentRegistry } from './AgentRegistry';
|
|
|
2
2
|
export { FeedbackRegistry } from './FeedbackRegistry';
|
|
3
3
|
export { ValidationRegistry } from './ValidationRegistry';
|
|
4
4
|
export { EscrowRegistry } from './EscrowRegistry';
|
|
5
|
-
export
|
|
5
|
+
export { A2AClient, A2AError } from './A2AClient';
|
|
6
|
+
export { createA2ADigest, hashBody, signA2ARequest, recoverA2APublicKey } from './eosio-auth';
|
|
7
|
+
export type { Job, JobState, Milestone, MilestoneState, EscrowDispute, DisputeResolution, Arbitrator, Bid, CreateJobData, SubmitBidData, AddMilestoneData, JobListOptions, } from './EscrowRegistry';
|
|
6
8
|
export * from './types';
|
|
7
9
|
export { calculateTrustScore, getTrustRating, formatXpr, parseXpr, formatTimestamp, isValidAccountName, isValidUrl, getKycWeight, } from './utils';
|
|
8
10
|
export declare const CONTRACTS: {
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.NETWORKS = exports.CONTRACTS = exports.getKycWeight = exports.isValidUrl = exports.isValidAccountName = exports.formatTimestamp = exports.parseXpr = exports.formatXpr = exports.getTrustRating = exports.calculateTrustScore = exports.EscrowRegistry = exports.ValidationRegistry = exports.FeedbackRegistry = exports.AgentRegistry = void 0;
|
|
17
|
+
exports.NETWORKS = exports.CONTRACTS = exports.getKycWeight = exports.isValidUrl = exports.isValidAccountName = exports.formatTimestamp = exports.parseXpr = exports.formatXpr = exports.getTrustRating = exports.calculateTrustScore = exports.recoverA2APublicKey = exports.signA2ARequest = exports.hashBody = exports.createA2ADigest = exports.A2AError = exports.A2AClient = exports.EscrowRegistry = exports.ValidationRegistry = exports.FeedbackRegistry = exports.AgentRegistry = void 0;
|
|
18
18
|
// Main SDK exports
|
|
19
19
|
var AgentRegistry_1 = require("./AgentRegistry");
|
|
20
20
|
Object.defineProperty(exports, "AgentRegistry", { enumerable: true, get: function () { return AgentRegistry_1.AgentRegistry; } });
|
|
@@ -24,6 +24,14 @@ var ValidationRegistry_1 = require("./ValidationRegistry");
|
|
|
24
24
|
Object.defineProperty(exports, "ValidationRegistry", { enumerable: true, get: function () { return ValidationRegistry_1.ValidationRegistry; } });
|
|
25
25
|
var EscrowRegistry_1 = require("./EscrowRegistry");
|
|
26
26
|
Object.defineProperty(exports, "EscrowRegistry", { enumerable: true, get: function () { return EscrowRegistry_1.EscrowRegistry; } });
|
|
27
|
+
var A2AClient_1 = require("./A2AClient");
|
|
28
|
+
Object.defineProperty(exports, "A2AClient", { enumerable: true, get: function () { return A2AClient_1.A2AClient; } });
|
|
29
|
+
Object.defineProperty(exports, "A2AError", { enumerable: true, get: function () { return A2AClient_1.A2AError; } });
|
|
30
|
+
var eosio_auth_1 = require("./eosio-auth");
|
|
31
|
+
Object.defineProperty(exports, "createA2ADigest", { enumerable: true, get: function () { return eosio_auth_1.createA2ADigest; } });
|
|
32
|
+
Object.defineProperty(exports, "hashBody", { enumerable: true, get: function () { return eosio_auth_1.hashBody; } });
|
|
33
|
+
Object.defineProperty(exports, "signA2ARequest", { enumerable: true, get: function () { return eosio_auth_1.signA2ARequest; } });
|
|
34
|
+
Object.defineProperty(exports, "recoverA2APublicKey", { enumerable: true, get: function () { return eosio_auth_1.recoverA2APublicKey; } });
|
|
27
35
|
// Type exports
|
|
28
36
|
__exportStar(require("./types"), exports);
|
|
29
37
|
// Utility exports
|
|
@@ -56,4 +64,4 @@ exports.NETWORKS = {
|
|
|
56
64
|
chainId: '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd',
|
|
57
65
|
},
|
|
58
66
|
};
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQkFBbUI7QUFDbkIsaURBQWdEO0FBQXZDLDhHQUFBLGFBQWEsT0FBQTtBQUN0Qix1REFBc0Q7QUFBN0Msb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLG1EQUFrRDtBQUF6QyxnSEFBQSxjQUFjLE9BQUE7QUFDdkIseUNBQWtEO0FBQXpDLHNHQUFBLFNBQVMsT0FBQTtBQUFFLHFHQUFBLFFBQVEsT0FBQTtBQUM1QiwyQ0FBOEY7QUFBckYsNkdBQUEsZUFBZSxPQUFBO0FBQUUsc0dBQUEsUUFBUSxPQUFBO0FBQUUsNEdBQUEsY0FBYyxPQUFBO0FBQUUsaUhBQUEsbUJBQW1CLE9BQUE7QUFrQnZFLGVBQWU7QUFDZiwwQ0FBd0I7QUFFeEIsa0JBQWtCO0FBQ2xCLGlDQVNpQjtBQVJmLDRHQUFBLG1CQUFtQixPQUFBO0FBQ25CLHVHQUFBLGNBQWMsT0FBQTtBQUNkLGtHQUFBLFNBQVMsT0FBQTtBQUNULGlHQUFBLFFBQVEsT0FBQTtBQUNSLHdHQUFBLGVBQWUsT0FBQTtBQUNmLDJHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1HQUFBLFVBQVUsT0FBQTtBQUNWLHFHQUFBLFlBQVksT0FBQTtBQUdkLHlCQUF5QjtBQUNaLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksRUFBRSxhQUFhO0NBQ25CLENBQUM7QUFFWCxvQkFBb0I7QUFDUCxRQUFBLFFBQVEsR0FBRztJQUN0QixPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsMEJBQTBCO1FBQy9CLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsT0FBTyxFQUFFLGtFQUFrRTtLQUM1RTtJQUNELE9BQU8sRUFBRTtRQUNQLEdBQUcsRUFBRSwwQkFBMEI7UUFDL0IsUUFBUSxFQUFFLGtDQUFrQztRQUM1QyxPQUFPLEVBQUUsa0VBQWtFO0tBQzVFO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1haW4gU0RLIGV4cG9ydHNcbmV4cG9ydCB7IEFnZW50UmVnaXN0cnkgfSBmcm9tICcuL0FnZW50UmVnaXN0cnknO1xuZXhwb3J0IHsgRmVlZGJhY2tSZWdpc3RyeSB9IGZyb20gJy4vRmVlZGJhY2tSZWdpc3RyeSc7XG5leHBvcnQgeyBWYWxpZGF0aW9uUmVnaXN0cnkgfSBmcm9tICcuL1ZhbGlkYXRpb25SZWdpc3RyeSc7XG5leHBvcnQgeyBFc2Nyb3dSZWdpc3RyeSB9IGZyb20gJy4vRXNjcm93UmVnaXN0cnknO1xuZXhwb3J0IHsgQTJBQ2xpZW50LCBBMkFFcnJvciB9IGZyb20gJy4vQTJBQ2xpZW50JztcbmV4cG9ydCB7IGNyZWF0ZUEyQURpZ2VzdCwgaGFzaEJvZHksIHNpZ25BMkFSZXF1ZXN0LCByZWNvdmVyQTJBUHVibGljS2V5IH0gZnJvbSAnLi9lb3Npby1hdXRoJztcblxuLy8gRXNjcm93IHR5cGVzIChleHBvcnRlZCBzZXBhcmF0ZWx5IHNpbmNlIHRoZXkncmUgZGVmaW5lZCBpbiB0aGUgcmVnaXN0cnkgZmlsZSlcbmV4cG9ydCB0eXBlIHtcbiAgSm9iLFxuICBKb2JTdGF0ZSxcbiAgTWlsZXN0b25lLFxuICBNaWxlc3RvbmVTdGF0ZSxcbiAgRXNjcm93RGlzcHV0ZSxcbiAgRGlzcHV0ZVJlc29sdXRpb24sXG4gIEFyYml0cmF0b3IsXG4gIEJpZCxcbiAgQ3JlYXRlSm9iRGF0YSxcbiAgU3VibWl0QmlkRGF0YSxcbiAgQWRkTWlsZXN0b25lRGF0YSxcbiAgSm9iTGlzdE9wdGlvbnMsXG59IGZyb20gJy4vRXNjcm93UmVnaXN0cnknO1xuXG4vLyBUeXBlIGV4cG9ydHNcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4vLyBVdGlsaXR5IGV4cG9ydHNcbmV4cG9ydCB7XG4gIGNhbGN1bGF0ZVRydXN0U2NvcmUsXG4gIGdldFRydXN0UmF0aW5nLFxuICBmb3JtYXRYcHIsXG4gIHBhcnNlWHByLFxuICBmb3JtYXRUaW1lc3RhbXAsXG4gIGlzVmFsaWRBY2NvdW50TmFtZSxcbiAgaXNWYWxpZFVybCxcbiAgZ2V0S3ljV2VpZ2h0LFxufSBmcm9tICcuL3V0aWxzJztcblxuLy8gRGVmYXVsdCBjb250cmFjdCBuYW1lc1xuZXhwb3J0IGNvbnN0IENPTlRSQUNUUyA9IHtcbiAgQUdFTlRfQ09SRTogJ2FnZW50Y29yZScsXG4gIEFHRU5UX0ZFRUQ6ICdhZ2VudGZlZWQnLFxuICBBR0VOVF9WQUxJRDogJ2FnZW50dmFsaWQnLFxuICBBR0VOVF9FU0NST1c6ICdhZ2VudGVzY3JvdycsXG59IGFzIGNvbnN0O1xuXG4vLyBOZXR3b3JrIGVuZHBvaW50c1xuZXhwb3J0IGNvbnN0IE5FVFdPUktTID0ge1xuICBNQUlOTkVUOiB7XG4gICAgcnBjOiAnaHR0cHM6Ly9wcm90b24uZW9zdXNhLmlvJyxcbiAgICBoeXBlcmlvbjogJ2h0dHBzOi8vcHJvdG9uLmVvc3VzYS5pbycsXG4gICAgY2hhaW5JZDogJzM4NGRhODg4MTEyMDI3ZjAzMjE4NTBhMTY5ZjczN2MzM2U1M2IzODhhYWQ0OGI1YWRhY2U0YmFiOTdmNDM3ZTAnLFxuICB9LFxuICBURVNUTkVUOiB7XG4gICAgcnBjOiAnaHR0cHM6Ly90bjEucHJvdG9ubnouY29tJyxcbiAgICBoeXBlcmlvbjogJ2h0dHBzOi8vcHJvdG9uLXRlc3RuZXQuZW9zdXNhLmlvJyxcbiAgICBjaGFpbklkOiAnNzFlZTgzYmNmNTIxNDJkNjEwMTlkOTVmOWNjNTQyN2JhNmEwZDdmZjhhY2NkOWUyMDg4YWUyYWJlYWYzZDNkZCcsXG4gIH0sXG59IGFzIGNvbnN0O1xuIl19
|
package/dist/types.d.ts
CHANGED
|
@@ -343,3 +343,84 @@ export interface GetTableRowsResult<T> {
|
|
|
343
343
|
more: boolean;
|
|
344
344
|
next_key?: string;
|
|
345
345
|
}
|
|
346
|
+
export type A2ATaskState = 'submitted' | 'working' | 'input-required' | 'completed' | 'failed' | 'canceled';
|
|
347
|
+
export interface A2AMessage {
|
|
348
|
+
role: 'user' | 'agent';
|
|
349
|
+
parts: A2APart[];
|
|
350
|
+
metadata?: Record<string, unknown>;
|
|
351
|
+
}
|
|
352
|
+
export type A2APart = {
|
|
353
|
+
type: 'text';
|
|
354
|
+
text: string;
|
|
355
|
+
} | {
|
|
356
|
+
type: 'file';
|
|
357
|
+
file: {
|
|
358
|
+
name?: string;
|
|
359
|
+
mimeType: string;
|
|
360
|
+
uri?: string;
|
|
361
|
+
bytes?: string;
|
|
362
|
+
};
|
|
363
|
+
} | {
|
|
364
|
+
type: 'data';
|
|
365
|
+
data: Record<string, unknown>;
|
|
366
|
+
};
|
|
367
|
+
export interface A2ATask {
|
|
368
|
+
id: string;
|
|
369
|
+
contextId?: string;
|
|
370
|
+
status: {
|
|
371
|
+
state: A2ATaskState;
|
|
372
|
+
message?: A2AMessage;
|
|
373
|
+
timestamp: string;
|
|
374
|
+
};
|
|
375
|
+
artifacts?: A2AArtifact[];
|
|
376
|
+
history?: A2AMessage[];
|
|
377
|
+
metadata?: Record<string, unknown>;
|
|
378
|
+
}
|
|
379
|
+
export interface A2AArtifact {
|
|
380
|
+
name?: string;
|
|
381
|
+
description?: string;
|
|
382
|
+
parts: A2APart[];
|
|
383
|
+
index: number;
|
|
384
|
+
lastChunk?: boolean;
|
|
385
|
+
}
|
|
386
|
+
export interface XprAgentCard {
|
|
387
|
+
name: string;
|
|
388
|
+
description: string;
|
|
389
|
+
url: string;
|
|
390
|
+
version: string;
|
|
391
|
+
capabilities: {
|
|
392
|
+
streaming: boolean;
|
|
393
|
+
pushNotifications: boolean;
|
|
394
|
+
stateTransitionHistory: boolean;
|
|
395
|
+
};
|
|
396
|
+
defaultInputModes: string[];
|
|
397
|
+
defaultOutputModes: string[];
|
|
398
|
+
skills: {
|
|
399
|
+
id: string;
|
|
400
|
+
name: string;
|
|
401
|
+
description: string;
|
|
402
|
+
tags: string[];
|
|
403
|
+
}[];
|
|
404
|
+
'xpr:account': string;
|
|
405
|
+
'xpr:protocol': string;
|
|
406
|
+
'xpr:trustScore'?: number;
|
|
407
|
+
'xpr:kycLevel'?: number;
|
|
408
|
+
'xpr:registeredAt': number;
|
|
409
|
+
'xpr:owner'?: string;
|
|
410
|
+
}
|
|
411
|
+
export interface A2AJsonRpcRequest {
|
|
412
|
+
jsonrpc: '2.0';
|
|
413
|
+
id: string | number;
|
|
414
|
+
method: string;
|
|
415
|
+
params?: Record<string, unknown>;
|
|
416
|
+
}
|
|
417
|
+
export interface A2AJsonRpcResponse<T = unknown> {
|
|
418
|
+
jsonrpc: '2.0';
|
|
419
|
+
id: string | number;
|
|
420
|
+
result?: T;
|
|
421
|
+
error?: {
|
|
422
|
+
code: number;
|
|
423
|
+
message: string;
|
|
424
|
+
data?: unknown;
|
|
425
|
+
};
|
|
426
|
+
}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// ============== Agent Types ==============
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09IEFnZW50IFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnQge1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIG93bmVyOiBzdHJpbmcgfCBudWxsOyAgICAgICAgICAgLy8gS1lDJ2QgaHVtYW4gd2hvIHNwb25zb3JzIHRoaXMgYWdlbnQgKG51bGwgaWYgdW5vd25lZClcbiAgcGVuZGluZ19vd25lcjogc3RyaW5nIHwgbnVsbDsgICAvLyBBcHByb3ZlZCBjbGFpbWFudCBhd2FpdGluZyBjb21wbGV0aW9uICgyLXN0ZXAgY2xhaW0pXG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgcHJvdG9jb2w6IHN0cmluZztcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbiAgdG90YWxfam9iczogbnVtYmVyO1xuICByZWdpc3RlcmVkX2F0OiBudW1iZXI7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgY2xhaW1fZGVwb3NpdDogbnVtYmVyOyAgICAgICAgICAvLyBSZWZ1bmRhYmxlIGRlcG9zaXQgcGFpZCB3aGVuIGNsYWltaW5nXG4gIGRlcG9zaXRfcGF5ZXI6IHN0cmluZyB8IG51bGw7ICAgLy8gV2hvIHBhaWQgdGhlIGRlcG9zaXQgKG11c3QgbWF0Y2ggY2xhaW1hbnQpXG4gIC8vIE5vdGU6IEFnZW50cyBzdGFrZSB2aWEgc3lzdGVtIHN0YWtpbmcgKGVvc2lvOjp2b3RlcnMpLCBub3QgY29udHJhY3QtbWFuYWdlZCBzdGFraW5nXG4gIC8vIFVzZSBnZXRTeXN0ZW1TdGFrZSgpIGZyb20gYWdlbnRjb3JlOjpnZXRhZ2VudGluZm8gdG8gcXVlcnkgc3Rha2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFJhdyB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgb3duZXI6IHN0cmluZztcbiAgcGVuZGluZ19vd25lcjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIHByb3RvY29sOiBzdHJpbmc7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nO1xuICB0b3RhbF9qb2JzOiBzdHJpbmc7XG4gIHJlZ2lzdGVyZWRfYXQ6IHN0cmluZztcbiAgYWN0aXZlOiBudW1iZXI7XG4gIGNsYWltX2RlcG9zaXQ6IHN0cmluZztcbiAgZGVwb3NpdF9wYXllcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjb250cmFjdDogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZztcbiAgc2NoZW1hOiBvYmplY3Q7XG4gIGNhdGVnb3J5OiBQbHVnaW5DYXRlZ29yeTtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIHZlcmlmaWVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJhdyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjb250cmFjdDogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZztcbiAgc2NoZW1hOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGF1dGhvcjogc3RyaW5nO1xuICB2ZXJpZmllZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50UGx1Z2luIHtcbiAgaWQ6IG51bWJlcjtcbiAgYWdlbnQ6IHN0cmluZztcbiAgcGx1Z2luX2lkOiBudW1iZXI7XG4gIGNvbmZpZzogb2JqZWN0O1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50UGx1Z2luUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgcGx1Z2luX2lkOiBzdHJpbmc7XG4gIGNvbmZpZzogc3RyaW5nO1xuICBlbmFibGVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5zdGFrZSB7XG4gIGlkOiBudW1iZXI7XG4gIHZhbGlkYXRvcjogc3RyaW5nOyAgLy8gSElHSCBGSVg6IENoYW5nZWQgZnJvbSAnYWdlbnQnIHRvIG1hdGNoIGFnZW50dmFsaWQ6OnVuc3Rha2VzIHRhYmxlXG4gIGFtb3VudDogbnVtYmVyO1xuICByZXF1ZXN0X3RpbWU6IG51bWJlcjtcbiAgYXZhaWxhYmxlX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb3JlQ29uZmlnIHtcbiAgb3duZXI6IHN0cmluZztcbiAgbWluX3N0YWtlOiBudW1iZXI7XG4gIHJlZ2lzdHJhdGlvbl9mZWU6IG51bWJlcjtcbiAgY2xhaW1fZmVlOiBudW1iZXI7ICAgICAgICAgICAgICAvLyBGZWUgdG8gY2xhaW0gYW4gYWdlbnQgKHJlZnVuZGFibGUgb24gcmVsZWFzZSlcbiAgZmVlZF9jb250cmFjdDogc3RyaW5nO1xuICB2YWxpZF9jb250cmFjdDogc3RyaW5nO1xuICBlc2Nyb3dfY29udHJhY3Q6IHN0cmluZztcbiAgcGF1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrQ29uZmlnIHtcbiAgb3duZXI6IHN0cmluZztcbiAgY29yZV9jb250cmFjdDogc3RyaW5nO1xuICBtaW5fc2NvcmU6IG51bWJlcjtcbiAgbWF4X3Njb3JlOiBudW1iZXI7XG4gIGRpc3B1dGVfd2luZG93OiBudW1iZXI7XG4gIGRlY2F5X3BlcmlvZDogbnVtYmVyO1xuICBkZWNheV9mbG9vcjogbnVtYmVyO1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIGZlZWRiYWNrX2ZlZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25Db25maWcge1xuICBvd25lcjogc3RyaW5nO1xuICBjb3JlX2NvbnRyYWN0OiBzdHJpbmc7XG4gIG1pbl9zdGFrZTogbnVtYmVyO1xuICBjaGFsbGVuZ2Vfc3Rha2U6IG51bWJlcjtcbiAgdW5zdGFrZV9kZWxheTogbnVtYmVyO1xuICBjaGFsbGVuZ2Vfd2luZG93OiBudW1iZXI7XG4gIHNsYXNoX3BlcmNlbnQ6IG51bWJlcjtcbiAgZGlzcHV0ZV9wZXJpb2Q6IG51bWJlcjtcbiAgZnVuZGVkX2NoYWxsZW5nZV90aW1lb3V0OiBudW1iZXI7XG4gIHBhdXNlZDogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbl9mZWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgUGx1Z2luQ2F0ZWdvcnkgPSAnY29tcHV0ZScgfCAnc3RvcmFnZScgfCAnb3JhY2xlJyB8ICdwYXltZW50JyB8ICdtZXNzYWdpbmcnIHwgJ2FpJztcblxuLy8gPT09PT09PT09PT09PT0gRmVlZGJhY2sgVHlwZXMgPT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBGZWVkYmFjayB7XG4gIGlkOiBudW1iZXI7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHJldmlld2VyOiBzdHJpbmc7XG4gIHJldmlld2VyX2t5Y19sZXZlbDogbnVtYmVyO1xuICBzY29yZTogbnVtYmVyO1xuICB0YWdzOiBzdHJpbmdbXTtcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIGFtb3VudF9wYWlkOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBkaXNwdXRlZDogYm9vbGVhbjtcbiAgcmVzb2x2ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZGJhY2tSYXcge1xuICBpZDogc3RyaW5nO1xuICBhZ2VudDogc3RyaW5nO1xuICByZXZpZXdlcjogc3RyaW5nO1xuICByZXZpZXdlcl9reWNfbGV2ZWw6IG51bWJlcjtcbiAgc2NvcmU6IG51bWJlcjtcbiAgdGFnczogc3RyaW5nO1xuICBqb2JfaGFzaDogc3RyaW5nO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgYW1vdW50X3BhaWQ6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGRpc3B1dGVkOiBudW1iZXI7XG4gIHJlc29sdmVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRTY29yZSB7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRvdGFsX3Njb3JlOiBudW1iZXI7XG4gIHRvdGFsX3dlaWdodDogbnVtYmVyO1xuICBmZWVkYmFja19jb3VudDogbnVtYmVyO1xuICBhdmdfc2NvcmU6IG51bWJlcjtcbiAgbGFzdF91cGRhdGVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRTY29yZVJhdyB7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRvdGFsX3Njb3JlOiBzdHJpbmc7XG4gIHRvdGFsX3dlaWdodDogc3RyaW5nO1xuICBmZWVkYmFja19jb3VudDogc3RyaW5nO1xuICBhdmdfc2NvcmU6IHN0cmluZztcbiAgbGFzdF91cGRhdGVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcHV0ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGZlZWRiYWNrX2lkOiBudW1iZXI7XG4gIGRpc3B1dGVyOiBzdHJpbmc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgc3RhdHVzOiBEaXNwdXRlU3RhdHVzO1xuICByZXNvbHZlcjogc3RyaW5nO1xuICByZXNvbHV0aW9uX25vdGVzOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgcmVzb2x2ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGlzcHV0ZVN0YXR1cyA9ICdwZW5kaW5nJyB8ICd1cGhlbGQnIHwgJ3JlamVjdGVkJyB8ICdjYW5jZWxsZWQnO1xuXG4vLyA9PT09PT09PT09PT09PSBWYWxpZGF0aW9uIFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yIHtcbiAgYWNjb3VudDogc3RyaW5nO1xuICBzdGFrZTogbnVtYmVyO1xuICBtZXRob2Q6IHN0cmluZztcbiAgc3BlY2lhbGl6YXRpb25zOiBzdHJpbmdbXTtcbiAgdG90YWxfdmFsaWRhdGlvbnM6IG51bWJlcjtcbiAgaW5jb3JyZWN0X3ZhbGlkYXRpb25zOiBudW1iZXI7XG4gIGFjY3VyYWN5X3Njb3JlOiBudW1iZXI7XG4gIHBlbmRpbmdfY2hhbGxlbmdlczogbnVtYmVyO1xuICByZWdpc3RlcmVkX2F0OiBudW1iZXI7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JSYXcge1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIHN0YWtlOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzcGVjaWFsaXphdGlvbnM6IHN0cmluZztcbiAgdG90YWxfdmFsaWRhdGlvbnM6IHN0cmluZztcbiAgaW5jb3JyZWN0X3ZhbGlkYXRpb25zOiBzdHJpbmc7XG4gIGFjY3VyYWN5X3Njb3JlOiBzdHJpbmc7XG4gIHBlbmRpbmdfY2hhbGxlbmdlczogc3RyaW5nO1xuICByZWdpc3RlcmVkX2F0OiBzdHJpbmc7XG4gIGFjdGl2ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb24ge1xuICBpZDogbnVtYmVyO1xuICB2YWxpZGF0b3I6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0O1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBjaGFsbGVuZ2VkOiBib29sZWFuO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgdmFsaWRhdG9yOiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIGpvYl9oYXNoOiBzdHJpbmc7XG4gIHJlc3VsdDogbnVtYmVyO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBjaGFsbGVuZ2VkOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0gJ2ZhaWwnIHwgJ3Bhc3MnIHwgJ3BhcnRpYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYWxsZW5nZSB7XG4gIGlkOiBudW1iZXI7XG4gIHZhbGlkYXRpb25faWQ6IG51bWJlcjtcbiAgY2hhbGxlbmdlcjogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIHN0YWtlOiBudW1iZXI7XG4gIHN0YXR1czogRGlzcHV0ZVN0YXR1cztcbiAgcmVzb2x2ZXI6IHN0cmluZztcbiAgcmVzb2x1dGlvbl9ub3Rlczogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gIHJlc29sdmVkX2F0OiBudW1iZXI7XG4gIGZ1bmRpbmdfZGVhZGxpbmU6IG51bWJlcjtcbiAgZnVuZGVkX2F0OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09IFRydXN0IFNjb3JlIFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJ1c3RTY29yZSB7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRvdGFsOiBudW1iZXI7XG4gIGJyZWFrZG93bjogVHJ1c3RTY29yZUJyZWFrZG93bjtcbiAgcmF0aW5nOiBUcnVzdFJhdGluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcnVzdFNjb3JlQnJlYWtkb3duIHtcbiAga3ljOiBudW1iZXI7XG4gIHN0YWtlOiBudW1iZXI7XG4gIHJlcHV0YXRpb246IG51bWJlcjtcbiAgbG9uZ2V2aXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRydXN0UmF0aW5nID0gJ3VudHJ1c3RlZCcgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ3ZlcmlmaWVkJztcblxuLy8gPT09PT09PT09PT09PT0gUGFnaW5hdGlvbiBUeXBlcyA9PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZFJlc3VsdDxUPiB7XG4gIGl0ZW1zOiBUW107XG4gIGhhc01vcmU6IGJvb2xlYW47XG4gIG5leHRDdXJzb3I/OiBzdHJpbmc7XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25PcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIGN1cnNvcj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT0gTGlzdCBPcHRpb25zID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9wdGlvbnMgZXh0ZW5kcyBQYWdpbmF0aW9uT3B0aW9ucyB7XG4gIGFjdGl2ZV9vbmx5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudExpc3RPcHRpb25zIGV4dGVuZHMgTGlzdE9wdGlvbnMge1xuICBjYXRlZ29yeT86IFBsdWdpbkNhdGVnb3J5O1xuICBtaW5fdHJ1c3Rfc2NvcmU/OiBudW1iZXI7XG4gIC8vIE5vdGU6IEFnZW50cyB1c2Ugc3lzdGVtIHN0YWtpbmcsIG5vdCBjb250cmFjdC1tYW5hZ2VkIHN0YWtpbmdcbiAgLy8gRmlsdGVyIGJ5IHN5c3RlbSBzdGFrZSB2aWEgc2VwYXJhdGUgcXVlcnkgdG8gZW9zaW86OnZvdGVycyB0YWJsZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrTGlzdE9wdGlvbnMgZXh0ZW5kcyBMaXN0T3B0aW9ucyB7XG4gIGFnZW50Pzogc3RyaW5nO1xuICByZXZpZXdlcj86IHN0cmluZztcbiAgbWluX3Njb3JlPzogbnVtYmVyO1xuICBtYXhfc2NvcmU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yTGlzdE9wdGlvbnMgZXh0ZW5kcyBMaXN0T3B0aW9ucyB7XG4gIG1pbl9zdGFrZT86IG51bWJlcjtcbiAgbWluX2FjY3VyYWN5PzogbnVtYmVyO1xuICBzcGVjaWFsaXphdGlvbj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT0gVHJhbnNhY3Rpb24gVHlwZXMgPT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblJlc3VsdCB7XG4gIHRyYW5zYWN0aW9uX2lkOiBzdHJpbmc7XG4gIHByb2Nlc3NlZDoge1xuICAgIGJsb2NrX251bTogbnVtYmVyO1xuICAgIGJsb2NrX3RpbWU6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckFnZW50RGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgcHJvdG9jb2w6IHN0cmluZztcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVBZ2VudERhdGEge1xuICBuYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHByb3RvY29sPzogc3RyaW5nO1xuICBjYXBhYmlsaXRpZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJtaXRGZWVkYmFja0RhdGEge1xuICBhZ2VudDogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xuICB0YWdzPzogc3RyaW5nW107XG4gIGpvYl9oYXNoPzogc3RyaW5nO1xuICBldmlkZW5jZV91cmk/OiBzdHJpbmc7XG4gIGFtb3VudF9wYWlkPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym1pdFZhbGlkYXRpb25EYXRhIHtcbiAgYWdlbnQ6IHN0cmluZztcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0O1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT0gU2Vzc2lvbiBUeXBlcyA9PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3RvblNlc3Npb24ge1xuICBhdXRoOiB7XG4gICAgYWN0b3I6IHN0cmluZztcbiAgICBwZXJtaXNzaW9uOiBzdHJpbmc7XG4gIH07XG4gIGxpbms6IHtcbiAgICB0cmFuc2FjdDogKGFyZ3M6IFRyYW5zYWN0QXJncykgPT4gUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3RBcmdzIHtcbiAgYWN0aW9uczogVHJhbnNhY3RBY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdEFjdGlvbiB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBhdXRob3JpemF0aW9uOiBBcnJheTx7XG4gICAgYWN0b3I6IHN0cmluZztcbiAgICBwZXJtaXNzaW9uOiBzdHJpbmc7XG4gIH0+O1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gPT09PT09PT09PT09PT0gUlBDIFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblJwYyB7XG4gIGdldF90YWJsZV9yb3dzPFQ+KHBhcmFtczogR2V0VGFibGVSb3dzUGFyYW1zKTogUHJvbWlzZTxHZXRUYWJsZVJvd3NSZXN1bHQ8VD4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRhYmxlUm93c1BhcmFtcyB7XG4gIGpzb246IGJvb2xlYW47XG4gIGNvZGU6IHN0cmluZztcbiAgc2NvcGU6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbG93ZXJfYm91bmQ/OiBzdHJpbmc7XG4gIHVwcGVyX2JvdW5kPzogc3RyaW5nO1xuICBsaW1pdD86IG51bWJlcjtcbiAga2V5X3R5cGU/OiBzdHJpbmc7XG4gIGluZGV4X3Bvc2l0aW9uPzogbnVtYmVyO1xuICByZXZlcnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUYWJsZVJvd3NSZXN1bHQ8VD4ge1xuICByb3dzOiBUW107XG4gIG1vcmU6IGJvb2xlYW47XG4gIG5leHRfa2V5Pzogc3RyaW5nO1xufVxuIl19
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09IEFnZW50IFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnQge1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIG93bmVyOiBzdHJpbmcgfCBudWxsOyAgICAgICAgICAgLy8gS1lDJ2QgaHVtYW4gd2hvIHNwb25zb3JzIHRoaXMgYWdlbnQgKG51bGwgaWYgdW5vd25lZClcbiAgcGVuZGluZ19vd25lcjogc3RyaW5nIHwgbnVsbDsgICAvLyBBcHByb3ZlZCBjbGFpbWFudCBhd2FpdGluZyBjb21wbGV0aW9uICgyLXN0ZXAgY2xhaW0pXG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgcHJvdG9jb2w6IHN0cmluZztcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbiAgdG90YWxfam9iczogbnVtYmVyO1xuICByZWdpc3RlcmVkX2F0OiBudW1iZXI7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgY2xhaW1fZGVwb3NpdDogbnVtYmVyOyAgICAgICAgICAvLyBSZWZ1bmRhYmxlIGRlcG9zaXQgcGFpZCB3aGVuIGNsYWltaW5nXG4gIGRlcG9zaXRfcGF5ZXI6IHN0cmluZyB8IG51bGw7ICAgLy8gV2hvIHBhaWQgdGhlIGRlcG9zaXQgKG11c3QgbWF0Y2ggY2xhaW1hbnQpXG4gIC8vIE5vdGU6IEFnZW50cyBzdGFrZSB2aWEgc3lzdGVtIHN0YWtpbmcgKGVvc2lvOjp2b3RlcnMpLCBub3QgY29udHJhY3QtbWFuYWdlZCBzdGFraW5nXG4gIC8vIFVzZSBnZXRTeXN0ZW1TdGFrZSgpIGZyb20gYWdlbnRjb3JlOjpnZXRhZ2VudGluZm8gdG8gcXVlcnkgc3Rha2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFJhdyB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgb3duZXI6IHN0cmluZztcbiAgcGVuZGluZ19vd25lcjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIHByb3RvY29sOiBzdHJpbmc7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nO1xuICB0b3RhbF9qb2JzOiBzdHJpbmc7XG4gIHJlZ2lzdGVyZWRfYXQ6IHN0cmluZztcbiAgYWN0aXZlOiBudW1iZXI7XG4gIGNsYWltX2RlcG9zaXQ6IHN0cmluZztcbiAgZGVwb3NpdF9wYXllcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjb250cmFjdDogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZztcbiAgc2NoZW1hOiBvYmplY3Q7XG4gIGNhdGVnb3J5OiBQbHVnaW5DYXRlZ29yeTtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIHZlcmlmaWVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJhdyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjb250cmFjdDogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZztcbiAgc2NoZW1hOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGF1dGhvcjogc3RyaW5nO1xuICB2ZXJpZmllZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50UGx1Z2luIHtcbiAgaWQ6IG51bWJlcjtcbiAgYWdlbnQ6IHN0cmluZztcbiAgcGx1Z2luX2lkOiBudW1iZXI7XG4gIGNvbmZpZzogb2JqZWN0O1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50UGx1Z2luUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgcGx1Z2luX2lkOiBzdHJpbmc7XG4gIGNvbmZpZzogc3RyaW5nO1xuICBlbmFibGVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5zdGFrZSB7XG4gIGlkOiBudW1iZXI7XG4gIHZhbGlkYXRvcjogc3RyaW5nOyAgLy8gSElHSCBGSVg6IENoYW5nZWQgZnJvbSAnYWdlbnQnIHRvIG1hdGNoIGFnZW50dmFsaWQ6OnVuc3Rha2VzIHRhYmxlXG4gIGFtb3VudDogbnVtYmVyO1xuICByZXF1ZXN0X3RpbWU6IG51bWJlcjtcbiAgYXZhaWxhYmxlX2F0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb3JlQ29uZmlnIHtcbiAgb3duZXI6IHN0cmluZztcbiAgbWluX3N0YWtlOiBudW1iZXI7XG4gIHJlZ2lzdHJhdGlvbl9mZWU6IG51bWJlcjtcbiAgY2xhaW1fZmVlOiBudW1iZXI7ICAgICAgICAgICAgICAvLyBGZWUgdG8gY2xhaW0gYW4gYWdlbnQgKHJlZnVuZGFibGUgb24gcmVsZWFzZSlcbiAgZmVlZF9jb250cmFjdDogc3RyaW5nO1xuICB2YWxpZF9jb250cmFjdDogc3RyaW5nO1xuICBlc2Nyb3dfY29udHJhY3Q6IHN0cmluZztcbiAgcGF1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrQ29uZmlnIHtcbiAgb3duZXI6IHN0cmluZztcbiAgY29yZV9jb250cmFjdDogc3RyaW5nO1xuICBtaW5fc2NvcmU6IG51bWJlcjtcbiAgbWF4X3Njb3JlOiBudW1iZXI7XG4gIGRpc3B1dGVfd2luZG93OiBudW1iZXI7XG4gIGRlY2F5X3BlcmlvZDogbnVtYmVyO1xuICBkZWNheV9mbG9vcjogbnVtYmVyO1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIGZlZWRiYWNrX2ZlZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25Db25maWcge1xuICBvd25lcjogc3RyaW5nO1xuICBjb3JlX2NvbnRyYWN0OiBzdHJpbmc7XG4gIG1pbl9zdGFrZTogbnVtYmVyO1xuICBjaGFsbGVuZ2Vfc3Rha2U6IG51bWJlcjtcbiAgdW5zdGFrZV9kZWxheTogbnVtYmVyO1xuICBjaGFsbGVuZ2Vfd2luZG93OiBudW1iZXI7XG4gIHNsYXNoX3BlcmNlbnQ6IG51bWJlcjtcbiAgZGlzcHV0ZV9wZXJpb2Q6IG51bWJlcjtcbiAgZnVuZGVkX2NoYWxsZW5nZV90aW1lb3V0OiBudW1iZXI7XG4gIHBhdXNlZDogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbl9mZWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgUGx1Z2luQ2F0ZWdvcnkgPSAnY29tcHV0ZScgfCAnc3RvcmFnZScgfCAnb3JhY2xlJyB8ICdwYXltZW50JyB8ICdtZXNzYWdpbmcnIHwgJ2FpJztcblxuLy8gPT09PT09PT09PT09PT0gRmVlZGJhY2sgVHlwZXMgPT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBGZWVkYmFjayB7XG4gIGlkOiBudW1iZXI7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHJldmlld2VyOiBzdHJpbmc7XG4gIHJldmlld2VyX2t5Y19sZXZlbDogbnVtYmVyO1xuICBzY29yZTogbnVtYmVyO1xuICB0YWdzOiBzdHJpbmdbXTtcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIGFtb3VudF9wYWlkOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBkaXNwdXRlZDogYm9vbGVhbjtcbiAgcmVzb2x2ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZGJhY2tSYXcge1xuICBpZDogc3RyaW5nO1xuICBhZ2VudDogc3RyaW5nO1xuICByZXZpZXdlcjogc3RyaW5nO1xuICByZXZpZXdlcl9reWNfbGV2ZWw6IG51bWJlcjtcbiAgc2NvcmU6IG51bWJlcjtcbiAgdGFnczogc3RyaW5nO1xuICBqb2JfaGFzaDogc3RyaW5nO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgYW1vdW50X3BhaWQ6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGRpc3B1dGVkOiBudW1iZXI7XG4gIHJlc29sdmVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRTY29yZSB7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRvdGFsX3Njb3JlOiBudW1iZXI7XG4gIHRvdGFsX3dlaWdodDogbnVtYmVyO1xuICBmZWVkYmFja19jb3VudDogbnVtYmVyO1xuICBhdmdfc2NvcmU6IG51bWJlcjtcbiAgbGFzdF91cGRhdGVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRTY29yZVJhdyB7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRvdGFsX3Njb3JlOiBzdHJpbmc7XG4gIHRvdGFsX3dlaWdodDogc3RyaW5nO1xuICBmZWVkYmFja19jb3VudDogc3RyaW5nO1xuICBhdmdfc2NvcmU6IHN0cmluZztcbiAgbGFzdF91cGRhdGVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcHV0ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGZlZWRiYWNrX2lkOiBudW1iZXI7XG4gIGRpc3B1dGVyOiBzdHJpbmc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBldmlkZW5jZV91cmk6IHN0cmluZztcbiAgc3RhdHVzOiBEaXNwdXRlU3RhdHVzO1xuICByZXNvbHZlcjogc3RyaW5nO1xuICByZXNvbHV0aW9uX25vdGVzOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgcmVzb2x2ZWRfYXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGlzcHV0ZVN0YXR1cyA9ICdwZW5kaW5nJyB8ICd1cGhlbGQnIHwgJ3JlamVjdGVkJyB8ICdjYW5jZWxsZWQnO1xuXG4vLyA9PT09PT09PT09PT09PSBWYWxpZGF0aW9uIFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yIHtcbiAgYWNjb3VudDogc3RyaW5nO1xuICBzdGFrZTogbnVtYmVyO1xuICBtZXRob2Q6IHN0cmluZztcbiAgc3BlY2lhbGl6YXRpb25zOiBzdHJpbmdbXTtcbiAgdG90YWxfdmFsaWRhdGlvbnM6IG51bWJlcjtcbiAgaW5jb3JyZWN0X3ZhbGlkYXRpb25zOiBudW1iZXI7XG4gIGFjY3VyYWN5X3Njb3JlOiBudW1iZXI7XG4gIHBlbmRpbmdfY2hhbGxlbmdlczogbnVtYmVyO1xuICByZWdpc3RlcmVkX2F0OiBudW1iZXI7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JSYXcge1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIHN0YWtlOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzcGVjaWFsaXphdGlvbnM6IHN0cmluZztcbiAgdG90YWxfdmFsaWRhdGlvbnM6IHN0cmluZztcbiAgaW5jb3JyZWN0X3ZhbGlkYXRpb25zOiBzdHJpbmc7XG4gIGFjY3VyYWN5X3Njb3JlOiBzdHJpbmc7XG4gIHBlbmRpbmdfY2hhbGxlbmdlczogc3RyaW5nO1xuICByZWdpc3RlcmVkX2F0OiBzdHJpbmc7XG4gIGFjdGl2ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb24ge1xuICBpZDogbnVtYmVyO1xuICB2YWxpZGF0b3I6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0O1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBjaGFsbGVuZ2VkOiBib29sZWFuO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUmF3IHtcbiAgaWQ6IHN0cmluZztcbiAgdmFsaWRhdG9yOiBzdHJpbmc7XG4gIGFnZW50OiBzdHJpbmc7XG4gIGpvYl9oYXNoOiBzdHJpbmc7XG4gIHJlc3VsdDogbnVtYmVyO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaTogc3RyaW5nO1xuICBjaGFsbGVuZ2VkOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0gJ2ZhaWwnIHwgJ3Bhc3MnIHwgJ3BhcnRpYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYWxsZW5nZSB7XG4gIGlkOiBudW1iZXI7XG4gIHZhbGlkYXRpb25faWQ6IG51bWJlcjtcbiAgY2hhbGxlbmdlcjogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbiAgZXZpZGVuY2VfdXJpOiBzdHJpbmc7XG4gIHN0YWtlOiBudW1iZXI7XG4gIHN0YXR1czogRGlzcHV0ZVN0YXR1cztcbiAgcmVzb2x2ZXI6IHN0cmluZztcbiAgcmVzb2x1dGlvbl9ub3Rlczogc3RyaW5nO1xuICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gIHJlc29sdmVkX2F0OiBudW1iZXI7XG4gIGZ1bmRpbmdfZGVhZGxpbmU6IG51bWJlcjtcbiAgZnVuZGVkX2F0OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09IFRydXN0IFNjb3JlIFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJ1c3RTY29yZSB7XG4gIGFnZW50OiBzdHJpbmc7XG4gIHRvdGFsOiBudW1iZXI7XG4gIGJyZWFrZG93bjogVHJ1c3RTY29yZUJyZWFrZG93bjtcbiAgcmF0aW5nOiBUcnVzdFJhdGluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcnVzdFNjb3JlQnJlYWtkb3duIHtcbiAga3ljOiBudW1iZXI7XG4gIHN0YWtlOiBudW1iZXI7XG4gIHJlcHV0YXRpb246IG51bWJlcjtcbiAgbG9uZ2V2aXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRydXN0UmF0aW5nID0gJ3VudHJ1c3RlZCcgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ3ZlcmlmaWVkJztcblxuLy8gPT09PT09PT09PT09PT0gUGFnaW5hdGlvbiBUeXBlcyA9PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZFJlc3VsdDxUPiB7XG4gIGl0ZW1zOiBUW107XG4gIGhhc01vcmU6IGJvb2xlYW47XG4gIG5leHRDdXJzb3I/OiBzdHJpbmc7XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25PcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIGN1cnNvcj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT0gTGlzdCBPcHRpb25zID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9wdGlvbnMgZXh0ZW5kcyBQYWdpbmF0aW9uT3B0aW9ucyB7XG4gIGFjdGl2ZV9vbmx5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudExpc3RPcHRpb25zIGV4dGVuZHMgTGlzdE9wdGlvbnMge1xuICBjYXRlZ29yeT86IFBsdWdpbkNhdGVnb3J5O1xuICBtaW5fdHJ1c3Rfc2NvcmU/OiBudW1iZXI7XG4gIC8vIE5vdGU6IEFnZW50cyB1c2Ugc3lzdGVtIHN0YWtpbmcsIG5vdCBjb250cmFjdC1tYW5hZ2VkIHN0YWtpbmdcbiAgLy8gRmlsdGVyIGJ5IHN5c3RlbSBzdGFrZSB2aWEgc2VwYXJhdGUgcXVlcnkgdG8gZW9zaW86OnZvdGVycyB0YWJsZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrTGlzdE9wdGlvbnMgZXh0ZW5kcyBMaXN0T3B0aW9ucyB7XG4gIGFnZW50Pzogc3RyaW5nO1xuICByZXZpZXdlcj86IHN0cmluZztcbiAgbWluX3Njb3JlPzogbnVtYmVyO1xuICBtYXhfc2NvcmU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yTGlzdE9wdGlvbnMgZXh0ZW5kcyBMaXN0T3B0aW9ucyB7XG4gIG1pbl9zdGFrZT86IG51bWJlcjtcbiAgbWluX2FjY3VyYWN5PzogbnVtYmVyO1xuICBzcGVjaWFsaXphdGlvbj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT0gVHJhbnNhY3Rpb24gVHlwZXMgPT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblJlc3VsdCB7XG4gIHRyYW5zYWN0aW9uX2lkOiBzdHJpbmc7XG4gIHByb2Nlc3NlZDoge1xuICAgIGJsb2NrX251bTogbnVtYmVyO1xuICAgIGJsb2NrX3RpbWU6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckFnZW50RGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgcHJvdG9jb2w6IHN0cmluZztcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVBZ2VudERhdGEge1xuICBuYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHByb3RvY29sPzogc3RyaW5nO1xuICBjYXBhYmlsaXRpZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJtaXRGZWVkYmFja0RhdGEge1xuICBhZ2VudDogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xuICB0YWdzPzogc3RyaW5nW107XG4gIGpvYl9oYXNoPzogc3RyaW5nO1xuICBldmlkZW5jZV91cmk/OiBzdHJpbmc7XG4gIGFtb3VudF9wYWlkPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym1pdFZhbGlkYXRpb25EYXRhIHtcbiAgYWdlbnQ6IHN0cmluZztcbiAgam9iX2hhc2g6IHN0cmluZztcbiAgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0O1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlX3VyaT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT0gU2Vzc2lvbiBUeXBlcyA9PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3RvblNlc3Npb24ge1xuICBhdXRoOiB7XG4gICAgYWN0b3I6IHN0cmluZztcbiAgICBwZXJtaXNzaW9uOiBzdHJpbmc7XG4gIH07XG4gIGxpbms6IHtcbiAgICB0cmFuc2FjdDogKGFyZ3M6IFRyYW5zYWN0QXJncykgPT4gUHJvbWlzZTxUcmFuc2FjdGlvblJlc3VsdD47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3RBcmdzIHtcbiAgYWN0aW9uczogVHJhbnNhY3RBY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdEFjdGlvbiB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBhdXRob3JpemF0aW9uOiBBcnJheTx7XG4gICAgYWN0b3I6IHN0cmluZztcbiAgICBwZXJtaXNzaW9uOiBzdHJpbmc7XG4gIH0+O1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gPT09PT09PT09PT09PT0gUlBDIFR5cGVzID09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblJwYyB7XG4gIGdldF90YWJsZV9yb3dzPFQ+KHBhcmFtczogR2V0VGFibGVSb3dzUGFyYW1zKTogUHJvbWlzZTxHZXRUYWJsZVJvd3NSZXN1bHQ8VD4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRhYmxlUm93c1BhcmFtcyB7XG4gIGpzb246IGJvb2xlYW47XG4gIGNvZGU6IHN0cmluZztcbiAgc2NvcGU6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbG93ZXJfYm91bmQ/OiBzdHJpbmc7XG4gIHVwcGVyX2JvdW5kPzogc3RyaW5nO1xuICBsaW1pdD86IG51bWJlcjtcbiAga2V5X3R5cGU/OiBzdHJpbmc7XG4gIGluZGV4X3Bvc2l0aW9uPzogbnVtYmVyO1xuICByZXZlcnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUYWJsZVJvd3NSZXN1bHQ8VD4ge1xuICByb3dzOiBUW107XG4gIG1vcmU6IGJvb2xlYW47XG4gIG5leHRfa2V5Pzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PSBBMkEgUHJvdG9jb2wgVHlwZXMgPT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgQTJBVGFza1N0YXRlID0gJ3N1Ym1pdHRlZCcgfCAnd29ya2luZycgfCAnaW5wdXQtcmVxdWlyZWQnIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJyB8ICdjYW5jZWxlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQTJBTWVzc2FnZSB7XG4gIHJvbGU6ICd1c2VyJyB8ICdhZ2VudCc7XG4gIHBhcnRzOiBBMkFQYXJ0W107XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCB0eXBlIEEyQVBhcnQgPVxuICB8IHsgdHlwZTogJ3RleHQnOyB0ZXh0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogJ2ZpbGUnOyBmaWxlOiB7IG5hbWU/OiBzdHJpbmc7IG1pbWVUeXBlOiBzdHJpbmc7IHVyaT86IHN0cmluZzsgYnl0ZXM/OiBzdHJpbmcgfSB9XG4gIHwgeyB0eXBlOiAnZGF0YSc7IGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQTJBVGFzayB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbnRleHRJZD86IHN0cmluZztcbiAgc3RhdHVzOiB7IHN0YXRlOiBBMkFUYXNrU3RhdGU7IG1lc3NhZ2U/OiBBMkFNZXNzYWdlOyB0aW1lc3RhbXA6IHN0cmluZyB9O1xuICBhcnRpZmFjdHM/OiBBMkFBcnRpZmFjdFtdO1xuICBoaXN0b3J5PzogQTJBTWVzc2FnZVtdO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEEyQUFydGlmYWN0IHtcbiAgbmFtZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHBhcnRzOiBBMkFQYXJ0W107XG4gIGluZGV4OiBudW1iZXI7XG4gIGxhc3RDaHVuaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWHByQWdlbnRDYXJkIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjYXBhYmlsaXRpZXM6IHtcbiAgICBzdHJlYW1pbmc6IGJvb2xlYW47XG4gICAgcHVzaE5vdGlmaWNhdGlvbnM6IGJvb2xlYW47XG4gICAgc3RhdGVUcmFuc2l0aW9uSGlzdG9yeTogYm9vbGVhbjtcbiAgfTtcbiAgZGVmYXVsdElucHV0TW9kZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0T3V0cHV0TW9kZXM6IHN0cmluZ1tdO1xuICBza2lsbHM6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nOyB0YWdzOiBzdHJpbmdbXSB9W107XG4gICd4cHI6YWNjb3VudCc6IHN0cmluZztcbiAgJ3hwcjpwcm90b2NvbCc6IHN0cmluZztcbiAgJ3hwcjp0cnVzdFNjb3JlJz86IG51bWJlcjtcbiAgJ3hwcjpreWNMZXZlbCc/OiBudW1iZXI7XG4gICd4cHI6cmVnaXN0ZXJlZEF0JzogbnVtYmVyO1xuICAneHByOm93bmVyJz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBMkFKc29uUnBjUmVxdWVzdCB7XG4gIGpzb25ycGM6ICcyLjAnO1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQTJBSnNvblJwY1Jlc3BvbnNlPFQgPSB1bmtub3duPiB7XG4gIGpzb25ycGM6ICcyLjAnO1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICByZXN1bHQ/OiBUO1xuICBlcnJvcj86IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmc7IGRhdGE/OiB1bmtub3duIH07XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xpr-agents/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
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",
|