israeli-bank-scrapers-core 6.3.1 → 6.3.2
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/lib/helpers/fetch.d.ts +2 -2
- package/lib/helpers/fetch.js +47 -35
- package/lib/scrapers/base-isracard-amex.js +19 -26
- package/lib/scrapers/max.js +5 -5
- package/lib/scrapers/mizrahi.js +2 -2
- package/package.json +1 -2
package/lib/helpers/fetch.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { type Page } from 'puppeteer-core';
|
|
|
2
2
|
export declare function fetchGet<TResult>(url: string, extraHeaders: Record<string, any>): Promise<TResult>;
|
|
3
3
|
export declare function fetchPost(url: string, data: Record<string, any>, extraHeaders?: Record<string, any>): Promise<any>;
|
|
4
4
|
export declare function fetchGraphql<TResult>(url: string, query: string, variables?: Record<string, unknown>, extraHeaders?: Record<string, any>): Promise<TResult>;
|
|
5
|
-
export declare function fetchGetWithinPage<TResult>(page: Page, url: string): Promise<TResult | null>;
|
|
6
|
-
export declare function fetchPostWithinPage<TResult>(page: Page, url: string, data: Record<string, any>, extraHeaders?: Record<string, any
|
|
5
|
+
export declare function fetchGetWithinPage<TResult>(page: Page, url: string, ignoreErrors?: boolean): Promise<TResult | null>;
|
|
6
|
+
export declare function fetchPostWithinPage<TResult>(page: Page, url: string, data: Record<string, any>, extraHeaders?: Record<string, any>, ignoreErrors?: boolean): Promise<TResult | null>;
|
package/lib/helpers/fetch.js
CHANGED
|
@@ -55,45 +55,57 @@ async function fetchGraphql(url, query, variables = {}, extraHeaders = {}) {
|
|
|
55
55
|
}
|
|
56
56
|
return result.data;
|
|
57
57
|
}
|
|
58
|
-
function fetchGetWithinPage(page, url) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
async function fetchGetWithinPage(page, url, ignoreErrors = false) {
|
|
59
|
+
const [result, status] = await page.evaluate(async innerUrl => {
|
|
60
|
+
let response;
|
|
61
|
+
try {
|
|
62
|
+
response = await fetch(innerUrl, {
|
|
62
63
|
credentials: 'include'
|
|
63
|
-
}).then(result => {
|
|
64
|
-
if (result.status === 204) {
|
|
65
|
-
resolve(null);
|
|
66
|
-
} else {
|
|
67
|
-
resolve(result.json());
|
|
68
|
-
}
|
|
69
|
-
}).catch(e => {
|
|
70
|
-
reject(e);
|
|
71
64
|
});
|
|
72
|
-
|
|
65
|
+
if (response.status === 204) {
|
|
66
|
+
return [null, response.status];
|
|
67
|
+
}
|
|
68
|
+
return [await response.text(), response.status];
|
|
69
|
+
} catch (e) {
|
|
70
|
+
throw new Error(`fetchGetWithinPage error: ${e instanceof Error ? `${e.message}\n${e.stack}` : String(e)}, url: ${innerUrl}, status: ${response?.status}`);
|
|
71
|
+
}
|
|
73
72
|
}, url);
|
|
73
|
+
if (result !== null) {
|
|
74
|
+
try {
|
|
75
|
+
return JSON.parse(result);
|
|
76
|
+
} catch (e) {
|
|
77
|
+
if (!ignoreErrors) {
|
|
78
|
+
throw new Error(`fetchGetWithinPage parse error: ${e instanceof Error ? `${e.message}\n${e.stack}` : String(e)}, url: ${url}, result: ${result}, status: ${status}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
74
83
|
}
|
|
75
|
-
function fetchPostWithinPage(page, url, data, extraHeaders = {}) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}, innerExtraHeaders)
|
|
86
|
-
}).then(result => {
|
|
87
|
-
if (result.status === 204) {
|
|
88
|
-
// No content response
|
|
89
|
-
resolve(null);
|
|
90
|
-
} else {
|
|
91
|
-
resolve(result.json());
|
|
92
|
-
}
|
|
93
|
-
}).catch(e => {
|
|
94
|
-
reject(e);
|
|
95
|
-
});
|
|
84
|
+
async function fetchPostWithinPage(page, url, data, extraHeaders = {}, ignoreErrors = false) {
|
|
85
|
+
const result = await page.evaluate(async (innerUrl, innerData, innerExtraHeaders) => {
|
|
86
|
+
const response = await fetch(innerUrl, {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
body: JSON.stringify(innerData),
|
|
89
|
+
credentials: 'include',
|
|
90
|
+
// eslint-disable-next-line prefer-object-spread
|
|
91
|
+
headers: Object.assign({
|
|
92
|
+
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
|
93
|
+
}, innerExtraHeaders)
|
|
96
94
|
});
|
|
95
|
+
if (response.status === 204) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return response.text();
|
|
97
99
|
}, url, data, extraHeaders);
|
|
100
|
+
try {
|
|
101
|
+
if (result !== null) {
|
|
102
|
+
return JSON.parse(result);
|
|
103
|
+
}
|
|
104
|
+
} catch (e) {
|
|
105
|
+
if (!ignoreErrors) {
|
|
106
|
+
throw new Error(`fetchPostWithinPage parse error: ${e instanceof Error ? `${e.message}\n${e.stack}` : String(e)}, url: ${url}, data: ${JSON.stringify(data)}, extraHeaders: ${JSON.stringify(extraHeaders)}, result: ${result}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
98
110
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGhlbiIsImNhdGNoIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImlubmVyRGF0YSIsImlubmVyRXh0cmFIZWFkZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvZmV0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vZGVGZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcblxuY29uc3QgSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbic7XG5cbmZ1bmN0aW9uIGdldEpzb25IZWFkZXJzKCkge1xuICByZXR1cm4ge1xuICAgIEFjY2VwdDogSlNPTl9DT05URU5UX1RZUEUsXG4gICAgJ0NvbnRlbnQtVHlwZSc6IEpTT05fQ09OVEVOVF9UWVBFLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHZXQ8VFJlc3VsdD4odXJsOiBzdHJpbmcsIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBsZXQgaGVhZGVycyA9IGdldEpzb25IZWFkZXJzKCk7XG4gIGlmIChleHRyYUhlYWRlcnMpIHtcbiAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBleHRyYUhlYWRlcnMpO1xuICB9XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9O1xuICBjb25zdCBmZXRjaFJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuXG4gIGlmIChmZXRjaFJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIGluc3RpdHV0ZSBzZXJ2ZXIgcmV0dXJuZWQgd2l0aCBzdGF0dXMgY29kZSAke2ZldGNoUmVzdWx0LnN0YXR1c31gKTtcbiAgfVxuXG4gIHJldHVybiBmZXRjaFJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBvc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAuLi5nZXRKc29uSGVhZGVycygpLCAuLi5leHRyYUhlYWRlcnMgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG4gIHJldHVybiByZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHcmFwaHFsPFRSZXN1bHQ+KFxuICB1cmw6IHN0cmluZyxcbiAgcXVlcnk6IHN0cmluZyxcbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3QodXJsLCB7IG9wZXJhdGlvbk5hbWU6IG51bGwsIHF1ZXJ5LCB2YXJpYWJsZXMgfSwgZXh0cmFIZWFkZXJzKTtcbiAgaWYgKHJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3JzWzBdLm1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiByZXN1bHQuZGF0YSBhcyBQcm9taXNlPFRSZXN1bHQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hHZXRXaXRoaW5QYWdlPFRSZXN1bHQ+KHBhZ2U6IFBhZ2UsIHVybDogc3RyaW5nKTogUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4ge1xuICByZXR1cm4gcGFnZS5ldmFsdWF0ZShpbm5lclVybCA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRSZXN1bHQgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmZXRjaChpbm5lclVybCwge1xuICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaFBvc3RXaXRoaW5QYWdlPFRSZXN1bHQ+KFxuICBwYWdlOiBQYWdlLFxuICB1cmw6IHN0cmluZyxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4pOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIHJldHVybiBwYWdlLmV2YWx1YXRlKFxuICAgIChpbm5lclVybDogc3RyaW5nLCBpbm5lckRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlubmVyRXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8VFJlc3VsdCB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZmV0Y2goaW5uZXJVcmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShpbm5lckRhdGEpLFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICAgICAgaGVhZGVyczogT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnIH0sXG4gICAgICAgICAgICBpbm5lckV4dHJhSGVhZGVycyxcbiAgICAgICAgICApLFxuICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICAgIC8vIE5vIGNvbnRlbnQgcmVzcG9uc2VcbiAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb24oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVybCxcbiAgICBkYXRhLFxuICAgIGV4dHJhSGVhZGVycyxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFtQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUduQyxNQUFNRyxpQkFBaUIsR0FBRyxrQkFBa0I7QUFFNUMsU0FBU0MsY0FBY0EsQ0FBQSxFQUFHO0VBQ3hCLE9BQU87SUFDTEMsTUFBTSxFQUFFRixpQkFBaUI7SUFDekIsY0FBYyxFQUFFQTtFQUNsQixDQUFDO0FBQ0g7QUFFTyxlQUFlRyxRQUFRQSxDQUFVQyxHQUFXLEVBQUVDLFlBQWlDLEVBQW9CO0VBQ3hHLElBQUlDLE9BQU8sR0FBR0wsY0FBYyxDQUFDLENBQUM7RUFDOUIsSUFBSUksWUFBWSxFQUFFO0lBQ2hCQyxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDRixPQUFPLEVBQUVELFlBQVksQ0FBQztFQUNoRDtFQUNBLE1BQU1JLE9BQU8sR0FBRztJQUNkQyxNQUFNLEVBQUUsS0FBSztJQUNiSjtFQUNGLENBQUM7RUFDRCxNQUFNSyxXQUFXLEdBQUcsTUFBTSxJQUFBQyxrQkFBUyxFQUFDUixHQUFHLEVBQUVLLE9BQU8sQ0FBQztFQUVqRCxJQUFJRSxXQUFXLENBQUNFLE1BQU0sS0FBSyxHQUFHLEVBQUU7SUFDOUIsTUFBTSxJQUFJQyxLQUFLLENBQUMsdUVBQXVFSCxXQUFXLENBQUNFLE1BQU0sRUFBRSxDQUFDO0VBQzlHO0VB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
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJpZ25vcmVFcnJvcnMiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwicmVzcG9uc2UiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGV4dCIsInN0YWNrIiwiU3RyaW5nIiwicGFyc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiaW5uZXJEYXRhIiwiaW5uZXJFeHRyYUhlYWRlcnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9mZXRjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9kZUZldGNoIGZyb20gJ25vZGUtZmV0Y2gnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuXG5jb25zdCBKU09OX0NPTlRFTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuZnVuY3Rpb24gZ2V0SnNvbkhlYWRlcnMoKSB7XG4gIHJldHVybiB7XG4gICAgQWNjZXB0OiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgICAnQ29udGVudC1UeXBlJzogSlNPTl9DT05URU5UX1RZUEUsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEdldDxUUmVzdWx0Pih1cmw6IHN0cmluZywgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gIGxldCBoZWFkZXJzID0gZ2V0SnNvbkhlYWRlcnMoKTtcbiAgaWYgKGV4dHJhSGVhZGVycykge1xuICAgIGhlYWRlcnMgPSBPYmplY3QuYXNzaWduKGhlYWRlcnMsIGV4dHJhSGVhZGVycyk7XG4gIH1cbiAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnMsXG4gIH07XG4gIGNvbnN0IGZldGNoUmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG5cbiAgaWYgKGZldGNoUmVzdWx0LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzZW5kaW5nIGEgcmVxdWVzdCB0byB0aGUgaW5zdGl0dXRlIHNlcnZlciByZXR1cm5lZCB3aXRoIHN0YXR1cyBjb2RlICR7ZmV0Y2hSZXN1bHQuc3RhdHVzfWApO1xuICB9XG5cbiAgcmV0dXJuIGZldGNoUmVzdWx0Lmpzb24oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUG9zdCh1cmw6IHN0cmluZywgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiwgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcbiAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7IC4uLmdldEpzb25IZWFkZXJzKCksIC4uLmV4dHJhSGVhZGVycyB9LFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICB9O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBub2RlRmV0Y2godXJsLCByZXF1ZXN0KTtcbiAgcmV0dXJuIHJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEdyYXBocWw8VFJlc3VsdD4oXG4gIHVybDogc3RyaW5nLFxuICBxdWVyeTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuKTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdCh1cmwsIHsgb3BlcmF0aW9uTmFtZTogbnVsbCwgcXVlcnksIHZhcmlhYmxlcyB9LCBleHRyYUhlYWRlcnMpO1xuICBpZiAocmVzdWx0LmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5kYXRhIGFzIFByb21pc2U8VFJlc3VsdD47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEdldFdpdGhpblBhZ2U8VFJlc3VsdD4oXG4gIHBhZ2U6IFBhZ2UsXG4gIHVybDogc3RyaW5nLFxuICBpZ25vcmVFcnJvcnMgPSBmYWxzZSxcbik6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgY29uc3QgW3Jlc3VsdCwgc3RhdHVzXSA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUoYXN5bmMgaW5uZXJVcmwgPT4ge1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaW5uZXJVcmwsIHsgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyB9KTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICByZXR1cm4gW251bGwsIHJlc3BvbnNlLnN0YXR1c10gYXMgY29uc3Q7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2F3YWl0IHJlc3BvbnNlLnRleHQoKSwgcmVzcG9uc2Uuc3RhdHVzXSBhcyBjb25zdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBmZXRjaEdldFdpdGhpblBhZ2UgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gYCR7ZS5tZXNzYWdlfVxcbiR7ZS5zdGFja31gIDogU3RyaW5nKGUpfSwgdXJsOiAke2lubmVyVXJsfSwgc3RhdHVzOiAke3Jlc3BvbnNlPy5zdGF0dXN9YCxcbiAgICAgICk7XG4gICAgfVxuICB9LCB1cmwpO1xuICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFpZ25vcmVFcnJvcnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBmZXRjaEdldFdpdGhpblBhZ2UgcGFyc2UgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gYCR7ZS5tZXNzYWdlfVxcbiR7ZS5zdGFja31gIDogU3RyaW5nKGUpfSwgdXJsOiAke3VybH0sIHJlc3VsdDogJHtyZXN1bHR9LCBzdGF0dXM6ICR7c3RhdHVzfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3N0V2l0aGluUGFnZTxUUmVzdWx0PihcbiAgcGFnZTogUGFnZSxcbiAgdXJsOiBzdHJpbmcsXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICBpZ25vcmVFcnJvcnMgPSBmYWxzZSxcbik6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnZS5ldmFsdWF0ZShcbiAgICBhc3luYyAoaW5uZXJVcmw6IHN0cmluZywgaW5uZXJEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbm5lckV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChpbm5lclVybCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaW5uZXJEYXRhKSxcbiAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCcgfSxcbiAgICAgICAgICBpbm5lckV4dHJhSGVhZGVycyxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbiAgICB9LFxuICAgIHVybCxcbiAgICBkYXRhLFxuICAgIGV4dHJhSGVhZGVycyxcbiAgKTtcblxuICB0cnkge1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFpZ25vcmVFcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGZldGNoUG9zdFdpdGhpblBhZ2UgcGFyc2UgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gYCR7ZS5tZXNzYWdlfVxcbiR7ZS5zdGFja31gIDogU3RyaW5nKGUpfSwgdXJsOiAke3VybH0sIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9LCBleHRyYUhlYWRlcnM6ICR7SlNPTi5zdHJpbmdpZnkoZXh0cmFIZWFkZXJzKX0sIHJlc3Vs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
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _buildUrl = _interopRequireDefault(require("build-url"));
|
|
8
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
8
|
var _moment = _interopRequireDefault(require("moment"));
|
|
10
9
|
var _constants = require("../constants");
|
|
@@ -26,14 +25,12 @@ const DATE_FORMAT = 'DD/MM/YYYY';
|
|
|
26
25
|
const debug = (0, _debug.getDebug)('base-isracard-amex');
|
|
27
26
|
function getAccountsUrl(servicesUrl, monthMoment) {
|
|
28
27
|
const billingDate = monthMoment.format('YYYY-MM-DD');
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
});
|
|
28
|
+
const url = new URL(servicesUrl);
|
|
29
|
+
url.searchParams.set('reqName', 'DashboardMonth');
|
|
30
|
+
url.searchParams.set('actionCode', '0');
|
|
31
|
+
url.searchParams.set('billingDate', billingDate);
|
|
32
|
+
url.searchParams.set('format', 'Json');
|
|
33
|
+
return url.toString();
|
|
37
34
|
}
|
|
38
35
|
async function fetchAccounts(page, servicesUrl, monthMoment) {
|
|
39
36
|
const dataUrl = getAccountsUrl(servicesUrl, monthMoment);
|
|
@@ -58,14 +55,12 @@ function getTransactionsUrl(servicesUrl, monthMoment) {
|
|
|
58
55
|
const month = monthMoment.month() + 1;
|
|
59
56
|
const year = monthMoment.year();
|
|
60
57
|
const monthStr = month < 10 ? `0${month}` : month.toString();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
});
|
|
58
|
+
const url = new URL(servicesUrl);
|
|
59
|
+
url.searchParams.set('reqName', 'CardsTransactionsList');
|
|
60
|
+
url.searchParams.set('month', monthStr);
|
|
61
|
+
url.searchParams.set('year', `${year}`);
|
|
62
|
+
url.searchParams.set('requiredDate', 'N');
|
|
63
|
+
return url.toString();
|
|
69
64
|
}
|
|
70
65
|
function convertCurrency(currencyStr) {
|
|
71
66
|
if (currencyStr === _constants.SHEKEL_CURRENCY_KEYWORD || currencyStr === _constants.ALT_SHEKEL_CURRENCY) {
|
|
@@ -152,14 +147,12 @@ async function fetchTransactions(page, options, companyServiceOptions, startMome
|
|
|
152
147
|
}
|
|
153
148
|
function getTransactionExtraDetails(servicesUrl, month, accountIndex, transaction) {
|
|
154
149
|
const moedChiuv = month.format('MMYYYY');
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
});
|
|
150
|
+
const url = new URL(servicesUrl);
|
|
151
|
+
url.searchParams.set('reqName', 'PirteyIska_204');
|
|
152
|
+
url.searchParams.set('CardIndex', accountIndex.toString());
|
|
153
|
+
url.searchParams.set('shovarRatz', transaction.identifier.toString());
|
|
154
|
+
url.searchParams.set('moedChiuv', moedChiuv);
|
|
155
|
+
return url.toString();
|
|
163
156
|
}
|
|
164
157
|
async function getExtraScrapTransaction(page, options, month, accountIndex, transaction) {
|
|
165
158
|
const dataUrl = getTransactionExtraDetails(options.servicesUrl, month, accountIndex, transaction);
|
|
@@ -315,4 +308,4 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
|
|
|
315
308
|
}
|
|
316
309
|
}
|
|
317
310
|
var _default = exports.default = IsracardAmexBaseScraper;
|
|
318
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsImJ1aWxkVXJsIiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJDYXJkSW5kZXgiLCJzaG92YXJSYXR6IiwiZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uIiwiZGF0YSIsInJhd0NhdGVnb3J5IiwiY2F0ZWdvcnkiLCJ0cmltIiwiZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyIsImFjY291bnRXaXRoSW5kZXgiLCJwcm9taXNlcyIsInQiLCJQcm9taXNlIiwiYWxsIiwiZ2V0RXh0cmFTY3JhcEFjY291bnQiLCJhY2NvdW50TWFwIiwiT2JqZWN0Iiwia2V5cyIsImEiLCJyZWR1Y2UiLCJtIiwieCIsImdldEV4dHJhU2NyYXAiLCJhY2NvdW50c1dpdGhJbmRleCIsImFsbE1vbnRocyIsImFjdGlvbnMiLCJpIiwicnVuU2VyaWFsIiwiZmV0Y2hBbGxUcmFuc2FjdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImdldEFsbE1vbnRoTW9tZW50cyIsInJlc3VsdHMiLCJmaW5hbFJlc3VsdCIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwiY29tYmluZWRUeG5zIiwidHhuc0ZvckFjY291bnQiLCJ0b0JlQWRkZWRUeG5zIiwic3VjY2VzcyIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsImNvbXBhbnlDb2RlIiwibG9naW4iLCJjcmVkZW50aWFscyIsInNldFJlcXVlc3RJbnRlcmNlcHRpb24iLCJvbiIsInJlcXVlc3QiLCJ1cmwiLCJhYm9ydCIsImludGVyY2VwdGlvblByaW9yaXRpZXMiLCJjb250aW51ZSIsIm1hc2tIZWFkbGVzc1VzZXJBZ2VudCIsIm5hdmlnYXRlVG8iLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkxvZ2dpbmdJbiIsInZhbGlkYXRlVXJsIiwidmFsaWRhdGVSZXF1ZXN0IiwiaWQiLCJjYXJkU3VmZml4IiwiY2FyZDZEaWdpdHMiLCJjb3VudHJ5Q29kZSIsImlkVHlwZSIsImNoZWNrTGV2ZWwiLCJ2YWxpZGF0ZVJlc3VsdCIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmFzZS1pc3JhY2FyZC1hbWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgQUxUX1NIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMsIGZpeEluc3RhbGxtZW50cyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHJ1blNlcmlhbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXInO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG50eXBlIENvbXBhbnlTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn07XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBjdXJyZW50UGF5bWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBQaXJ0ZXlJc2thXzIwNEJlYW4/OiB7XG4gICAgc2VjdG9yOiBzdHJpbmc7XG4gIH07XG5cbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICAgIH1cbiAgPjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ0Rhc2hib2FyZE1vbnRoJyxcbiAgICAgIGFjdGlvbkNvZGU6ICcwJyxcbiAgICAgIGJpbGxpbmdEYXRlLFxuICAgICAgZm9ybWF0OiAnSnNvbicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoY2FyZENoYXJnZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGNhcmRDaGFyZ2UuY2FyZEluZGV4LCAxMCksXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZENoYXJnZS5jYXJkTnVtYmVyLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudChjYXJkQ2hhcmdlLmJpbGxpbmdEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IG1vbnRoU3RyID0gbW9udGggPCAxMCA/IGAwJHttb250aH1gIDogbW9udGgudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdDYXJkc1RyYW5zYWN0aW9uc0xpc3QnLFxuICAgICAgbW9udGg6IG1vbnRoU3RyLFxuICAgICAgeWVhcjogYCR7eWVhcn1gLFxuICAgICAgcmVxdWlyZWREYXRlOiAnTicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDdXJyZW5jeShjdXJyZW5jeVN0cjogc3RyaW5nKSB7XG4gIGlmIChjdXJyZW5jeVN0ciA9PT0gU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfHwgY3VycmVuY3lTdHIgPT09IEFMVF9TSEVLRUxfQ1VSUkVOQ1kpIHtcbiAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICB9XG4gIHJldHVybiBjdXJyZW5jeVN0cjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0eG4ubW9yZUluZm8gfHwgIXR4bi5tb3JlSW5mby5pbmNsdWRlcyhJTlNUQUxMTUVOVFNfS0VZV09SRCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB0eG4ubW9yZUluZm8ubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgcmV0dXJuIGdldEluc3RhbGxtZW50c0luZm8odHhuKSA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHByb2Nlc3NlZERhdGU6IHN0cmluZyk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBmaWx0ZXJlZFR4bnMgPSB0eG5zLmZpbHRlcihcbiAgICB0eG4gPT5cbiAgICAgIHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnLFxuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZFR4bnMubWFwKHR4biA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZVxuICAgICAgPyBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKClcbiAgICAgIDogcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW50UGF5bWVudEN1cnJlbmN5ID8/IHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4gIG1vbnRoTW9tZW50OiBNb21lbnQsXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4pIHtcbiAgICBjb25zdCBhY2NvdW50VHhuczogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0ge307XG4gICAgYWNjb3VudHMuZm9yRWFjaChhY2NvdW50ID0+IHtcbiAgICAgIGNvbnN0IHR4bkdyb3VwczogU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zW10gfCB1bmRlZmluZWQgPSBfLmdldChcbiAgICAgICAgZGF0YVJlc3VsdCxcbiAgICAgICAgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCxcbiAgICAgICk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKHR4bkdyb3VwID0+IHtcbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuSXNyYWVsKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5Jc3JhZWwsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5BYnJvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bkFicm9hZCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpeEluc3RhbGxtZW50cyhhbGxUeG5zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKFxuICBzZXJ2aWNlc1VybDogc3RyaW5nLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9lZENoaXV2ID0gbW9udGguZm9ybWF0KCdNTVlZWVknKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdQaXJ0ZXlJc2thXzIwNCcsXG4gICAgICBDYXJkSW5kZXg6IGFjY291bnRJbmRleC50b1N0cmluZygpLFxuICAgICAgc2hvdmFyUmF0ejogdHJhbnNhY3Rpb24uaWRlbnRpZmllciEudG9TdHJpbmcoKSxcbiAgICAgIG1vZWRDaGl1dixcbiAgICB9LFxuICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMob3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGgsIGFjY291bnRJbmRleCwgdHJhbnNhY3Rpb24pO1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKSA/PyAnJztcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zKFxuICBhY2NvdW50V2l0aEluZGV4OiBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IG1vbWVudC5Nb21lbnQsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBhY2NvdW50V2l0aEluZGV4LnR4bnMubWFwKHQgPT5cbiAgICBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZSwgb3B0aW9ucywgbW9udGgsIGFjY291bnRXaXRoSW5kZXguaW5kZXgsIHQpLFxuICApO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhhY2NvdW50TWFwKS5tYXAoYXN5bmMgYSA9PiAoe1xuICAgIC4uLmFjY291bnRNYXBbYV0sXG4gICAgdHhuczogYXdhaXQgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhhY2NvdW50TWFwW2FdLCBwYWdlLCBvcHRpb25zLCBtb250aCksXG4gIH0pKTtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoXG4gIGFjY291bnRzV2l0aEluZGV4OiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSxcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgY29uc3QgYWN0aW9ucyA9IGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSk7XG4gIHJldHVybiBydW5TZXJpYWwoYWN0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4pIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGFsbE1vbnRocy5tYXAoYXN5bmMgbW9udGhNb21lbnQgPT4ge1xuICAgICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgc3RhcnRNb21lbnQsIG1vbnRoTW9tZW50KTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IG9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb25cbiAgICA/IGF3YWl0IGdldEV4dHJhU2NyYXAocmVzdWx0cywgcGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLCBhbGxNb250aHMpXG4gICAgOiByZXN1bHRzO1xuXG4gIGNvbnN0IGNvbWJpbmVkVHhuczogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcblxuICBmaW5hbFJlc3VsdC5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgbGV0IHR4bnNGb3JBY2NvdW50ID0gY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdO1xuICAgICAgaWYgKCF0eG5zRm9yQWNjb3VudCkge1xuICAgICAgICB0eG5zRm9yQWNjb3VudCA9IFtdO1xuICAgICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0gPSB0eG5zRm9yQWNjb3VudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvQmVBZGRlZFR4bnMgPSByZXN1bHRbYWNjb3VudE51bWJlcl0udHhucztcbiAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnRvQmVBZGRlZFR4bnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKGNvbWJpbmVkVHhucykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgY2FyZDZEaWdpdHM6IHN0cmluZyB9O1xuY2xhc3MgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcGFueUNvZGU6IHN0cmluZztcblxuICBwcml2YXRlIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMsIGJhc2VVcmw6IHN0cmluZywgY29tcGFueUNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmNvbXBhbnlDb2RlID0gY29tcGFueUNvZGU7XG4gICAgdGhpcy5zZXJ2aWNlc1VybCA9IGAke2Jhc2VVcmx9L3NlcnZpY2VzL1Byb3h5UmVxdWVzdEhhbmRsZXIuYXNoeGA7XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS5zZXRSZXF1ZXN0SW50ZXJjZXB0aW9uKHRydWUpO1xuICAgIHRoaXMucGFnZS5vbigncmVxdWVzdCcsIHJlcXVlc3QgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICB2b2lkIHJlcXVlc3QuYWJvcnQodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmFib3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgcmVxdWVzdC5jb250aW51ZSh1bmRlZmluZWQsIGludGVyY2VwdGlvblByaW9yaXRpZXMuY29udGludWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgbWFza0hlYWRsZXNzVXNlckFnZW50KHRoaXMucGFnZSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oYCR7dGhpcy5iYXNlVXJsfS9wZXJzb25hbGFyZWEvTG9naW5gKTtcblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9VmFsaWRhdGVJZERhdGFgO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHtcbiAgICAgIGlkOiBjcmVkZW50aWFscy5pZCxcbiAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIGNoZWNrTGV2ZWw6ICcxJyxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRMb2dpblZhbGlkYXRpb24+KHRoaXMucGFnZSwgdmFsaWRhdGVVcmwsIHZhbGlkYXRlUmVxdWVzdCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlUmVzdWx0IHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuSGVhZGVyIHx8XG4gICAgICB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHxcbiAgICAgICF2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBlcnJvciBkdXJpbmcgbG9naW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVJldHVybkNvZGUgPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW4ucmV0dXJuQ29kZTtcbiAgICBkZWJ1ZyhgdXNlciB2YWxpZGF0ZSB3aXRoIHJldHVybiBjb2RlICcke3ZhbGlkYXRlUmV0dXJuQ29kZX0nYCk7XG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW47XG5cbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7dGhpcy5zZXJ2aWNlc1VybH0/cmVxTmFtZT1wZXJmb3JtTG9nb25JYDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIEtvZE1pc2h0YW1lc2g6IHVzZXJOYW1lLFxuICAgICAgICBNaXNwYXJaaWh1eTogY3JlZGVudGlhbHMuaWQsXG4gICAgICAgIFNpc21hOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgICAgY2FyZFN1ZmZpeDogY3JlZGVudGlhbHMuY2FyZDZEaWdpdHMsXG4gICAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIH07XG4gICAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8eyBzdGF0dXM6IHN0cmluZyB9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICAgICAgdGhpcy5wYWdlLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgICB9LFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsY0FBQSxHQUFBVixPQUFBO0FBT0EsSUFBQVcsdUJBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLE9BQUEsR0FBQVosT0FBQTtBQUVBLElBQUFh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
|
|
311
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsInRvU3RyaW5nIiwiZmV0Y2hBY2NvdW50cyIsInBhZ2UiLCJkYXRhVXJsIiwiZGF0YVJlc3VsdCIsImZldGNoR2V0V2l0aGluUGFnZSIsIl8iLCJnZXQiLCJEYXNoYm9hcmRNb250aEJlYW4iLCJjYXJkc0NoYXJnZXMiLCJtYXAiLCJjYXJkQ2hhcmdlIiwiaW5kZXgiLCJwYXJzZUludCIsImNhcmRJbmRleCIsImFjY291bnROdW1iZXIiLCJjYXJkTnVtYmVyIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInRvSVNPU3RyaW5nIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGgiLCJ5ZWFyIiwibW9udGhTdHIiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJydW5TZXJpYWwiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsImFib3J0IiwiaW50ZXJjZXB0aW9uUHJpb3JpdGllcyIsImNvbnRpbnVlIiwibWFza0hlYWRsZXNzVXNlckFnZW50IiwibmF2aWdhdGVUbyIsImVtaXRQcm9ncmVzcyIsIlNjcmFwZXJQcm9ncmVzc1R5cGVzIiwiTG9nZ2luZ0luIiwidmFsaWRhdGVVcmwiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJpZCIsImNhcmRTdWZmaXgiLCJjYXJkNkRpZ2l0cyIsImNvdW50cnlDb2RlIiwiaWRUeXBlIiwiY2hlY2tMZXZlbCIsInZhbGlkYXRlUmVzdWx0IiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsIkhlYWRlciIsIlN0YXR1cyIsIlZhbGlkYXRlSWREYXRhQmVhbiIsIkVycm9yIiwidmFsaWRhdGVSZXR1cm5Db2RlIiwicmV0dXJuQ29kZSIsInVzZXJOYW1lIiwibG9naW5VcmwiLCJLb2RNaXNodGFtZXNoIiwiTWlzcGFyWmlodXkiLCJTaXNtYSIsInBhc3N3b3JkIiwibG9naW5SZXN1bHQiLCJMb2dpblN1Y2Nlc3MiLCJDaGFuZ2VQYXNzd29yZCIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiTG9naW5GYWlsZWQiLCJJbnZhbGlkUGFzc3dvcmQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgQUxUX1NIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMsIGZpeEluc3RhbGxtZW50cyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHJ1blNlcmlhbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXInO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG50eXBlIENvbXBhbnlTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn07XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBjdXJyZW50UGF5bWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBQaXJ0ZXlJc2thXzIwNEJlYW4/OiB7XG4gICAgc2VjdG9yOiBzdHJpbmc7XG4gIH07XG5cbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICAgIH1cbiAgPjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnRGFzaGJvYXJkTW9udGgnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2FjdGlvbkNvZGUnLCAnMCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnYmlsbGluZ0RhdGUnLCBiaWxsaW5nRGF0ZSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdmb3JtYXQnLCAnSnNvbicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoY2FyZENoYXJnZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGNhcmRDaGFyZ2UuY2FyZEluZGV4LCAxMCksXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZENoYXJnZS5jYXJkTnVtYmVyLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudChjYXJkQ2hhcmdlLmJpbGxpbmdEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IG1vbnRoU3RyID0gbW9udGggPCAxMCA/IGAwJHttb250aH1gIDogbW9udGgudG9TdHJpbmcoKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ0NhcmRzVHJhbnNhY3Rpb25zTGlzdCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnbW9udGgnLCBtb250aFN0cik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd5ZWFyJywgYCR7eWVhcn1gKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcXVpcmVkRGF0ZScsICdOJyk7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEN1cnJlbmN5KGN1cnJlbmN5U3RyOiBzdHJpbmcpIHtcbiAgaWYgKGN1cnJlbmN5U3RyID09PSBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB8fCBjdXJyZW5jeVN0ciA9PT0gQUxUX1NIRUtFTF9DVVJSRU5DWSkge1xuICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbmN5U3RyO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgfCB1bmRlZmluZWQge1xuICBpZiAoIXR4bi5tb3JlSW5mbyB8fCAhdHhuLm1vcmVJbmZvLmluY2x1ZGVzKElOU1RBTExNRU5UU19LRVlXT1JEKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHR4bi5tb3JlSW5mby5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQobWF0Y2hlc1swXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICByZXR1cm4gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IGZpbHRlcmVkVHhucyA9IHR4bnMuZmlsdGVyKFxuICAgIHR4biA9PlxuICAgICAgdHhuLmRlYWxTdW1UeXBlICE9PSAnMScgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6ICE9PSAnMDAwMDAwMDAwJyAmJiB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCAhPT0gJzAwMDAwMDAwMCcsXG4gICk7XG5cbiAgcmV0dXJuIGZpbHRlcmVkVHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBpc091dGJvdW5kID0gdHhuLmRlYWxTdW1PdXRib3VuZDtcbiAgICBjb25zdCB0eG5EYXRlU3RyID0gaXNPdXRib3VuZCA/IHR4bi5mdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQgOiB0eG4uZnVsbFB1cmNoYXNlRGF0ZTtcbiAgICBjb25zdCB0eG5Nb21lbnQgPSBtb21lbnQodHhuRGF0ZVN0ciwgREFURV9GT1JNQVQpO1xuXG4gICAgY29uc3QgY3VycmVudFByb2Nlc3NlZERhdGUgPSB0eG4uZnVsbFBheW1lbnREYXRlXG4gICAgICA/IG1vbWVudCh0eG4uZnVsbFBheW1lbnREYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKVxuICAgICAgOiBwcm9jZXNzZWREYXRlO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUodHhuKSxcbiAgICAgIGlkZW50aWZpZXI6IHBhcnNlSW50KGlzT3V0Ym91bmQgPyB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCA6IHR4bi52b3VjaGVyTnVtYmVyUmF0eiwgMTApLFxuICAgICAgZGF0ZTogdHhuTW9tZW50LnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBjdXJyZW50UHJvY2Vzc2VkRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5kZWFsU3VtT3V0Ym91bmQgOiAtdHhuLmRlYWxTdW0sXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBjb252ZXJ0Q3VycmVuY3kodHhuLmN1cnJlbnRQYXltZW50Q3VycmVuY3kgPz8gdHhuLmN1cnJlbmN5SWQpLFxuICAgICAgY2hhcmdlZEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4ucGF5bWVudFN1bU91dGJvdW5kIDogLXR4bi5wYXltZW50U3VtLFxuICAgICAgY2hhcmdlZEN1cnJlbmN5OiBjb252ZXJ0Q3VycmVuY3kodHhuLmN1cnJlbmN5SWQpLFxuICAgICAgZGVzY3JpcHRpb246IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kIDogdHhuLmZ1bGxTdXBwbGllck5hbWVIZWIsXG4gICAgICBtZW1vOiB0eG4ubW9yZUluZm8gfHwgJycsXG4gICAgICBpbnN0YWxsbWVudHM6IGdldEluc3RhbGxtZW50c0luZm8odHhuKSB8fCB1bmRlZmluZWQsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLFxuICBjb21wYW55U2VydmljZU9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgc3RhcnRNb21lbnQ6IE1vbWVudCxcbiAgbW9udGhNb21lbnQ6IE1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hBY2NvdW50cyhwYWdlLCBjb21wYW55U2VydmljZU9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uc1VybChjb21wYW55U2VydmljZU9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKGFjY291bnQgPT4ge1xuICAgICAgY29uc3QgdHhuR3JvdXBzOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXSB8IHVuZGVmaW5lZCA9IF8uZ2V0KFxuICAgICAgICBkYXRhUmVzdWx0LFxuICAgICAgICBgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbi5JbmRleCR7YWNjb3VudC5pbmRleH0uQ3VycmVudENhcmRUcmFuc2FjdGlvbnNgLFxuICAgICAgKTtcbiAgICAgIGlmICh0eG5Hcm91cHMpIHtcbiAgICAgICAgbGV0IGFsbFR4bnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgICAgICAgdHhuR3JvdXBzLmZvckVhY2godHhuR3JvdXAgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhbGxUeG5zLCBzdGFydE1vbWVudCwgb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBhY2NvdW50VHhuc1thY2NvdW50LmFjY291bnROdW1iZXJdID0ge1xuICAgICAgICAgIGFjY291bnROdW1iZXI6IGFjY291bnQuYWNjb3VudE51bWJlcixcbiAgICAgICAgICBpbmRleDogYWNjb3VudC5pbmRleCxcbiAgICAgICAgICB0eG5zOiBhbGxUeG5zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY2NvdW50VHhucztcbiAgfVxuXG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMoXG4gIHNlcnZpY2VzVXJsOiBzdHJpbmcsXG4gIG1vbnRoOiBNb21lbnQsXG4gIGFjY291bnRJbmRleDogbnVtYmVyLFxuICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBtb2VkQ2hpdXYgPSBtb250aC5mb3JtYXQoJ01NWVlZWScpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnUGlydGV5SXNrYV8yMDQnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ0NhcmRJbmRleCcsIGFjY291bnRJbmRleC50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Nob3ZhclJhdHonLCB0cmFuc2FjdGlvbi5pZGVudGlmaWVyIS50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vZWRDaGl1dicsIG1vZWRDaGl1dik7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMob3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGgsIGFjY291bnRJbmRleCwgdHJhbnNhY3Rpb24pO1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKSA/PyAnJztcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zKFxuICBhY2NvdW50V2l0aEluZGV4OiBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IG1vbWVudC5Nb21lbnQsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBhY2NvdW50V2l0aEluZGV4LnR4bnMubWFwKHQgPT5cbiAgICBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZSwgb3B0aW9ucywgbW9udGgsIGFjY291bnRXaXRoSW5kZXguaW5kZXgsIHQpLFxuICApO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhhY2NvdW50TWFwKS5tYXAoYXN5bmMgYSA9PiAoe1xuICAgIC4uLmFjY291bnRNYXBbYV0sXG4gICAgdHhuczogYXdhaXQgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhhY2NvdW50TWFwW2FdLCBwYWdlLCBvcHRpb25zLCBtb250aCksXG4gIH0pKTtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoXG4gIGFjY291bnRzV2l0aEluZGV4OiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSxcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgY29uc3QgYWN0aW9ucyA9IGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSk7XG4gIHJldHVybiBydW5TZXJpYWwoYWN0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4pIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGFsbE1vbnRocy5tYXAoYXN5bmMgbW9udGhNb21lbnQgPT4ge1xuICAgICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgc3RhcnRNb21lbnQsIG1vbnRoTW9tZW50KTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IG9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb25cbiAgICA/IGF3YWl0IGdldEV4dHJhU2NyYXAocmVzdWx0cywgcGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLCBhbGxNb250aHMpXG4gICAgOiByZXN1bHRzO1xuXG4gIGNvbnN0IGNvbWJpbmVkVHhuczogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcblxuICBmaW5hbFJlc3VsdC5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgbGV0IHR4bnNGb3JBY2NvdW50ID0gY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdO1xuICAgICAgaWYgKCF0eG5zRm9yQWNjb3VudCkge1xuICAgICAgICB0eG5zRm9yQWNjb3VudCA9IFtdO1xuICAgICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0gPSB0eG5zRm9yQWNjb3VudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvQmVBZGRlZFR4bnMgPSByZXN1bHRbYWNjb3VudE51bWJlcl0udHhucztcbiAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnRvQmVBZGRlZFR4bnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKGNvbWJpbmVkVHhucykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgY2FyZDZEaWdpdHM6IHN0cmluZyB9O1xuY2xhc3MgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcGFueUNvZGU6IHN0cmluZztcblxuICBwcml2YXRlIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMsIGJhc2VVcmw6IHN0cmluZywgY29tcGFueUNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmNvbXBhbnlDb2RlID0gY29tcGFueUNvZGU7XG4gICAgdGhpcy5zZXJ2aWNlc1VybCA9IGAke2Jhc2VVcmx9L3NlcnZpY2VzL1Byb3h5UmVxdWVzdEhhbmRsZXIuYXNoeGA7XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS5zZXRSZXF1ZXN0SW50ZXJjZXB0aW9uKHRydWUpO1xuICAgIHRoaXMucGFnZS5vbigncmVxdWVzdCcsIHJlcXVlc3QgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICB2b2lkIHJlcXVlc3QuYWJvcnQodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmFib3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgcmVxdWVzdC5jb250aW51ZSh1bmRlZmluZWQsIGludGVyY2VwdGlvblByaW9yaXRpZXMuY29udGludWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgbWFza0hlYWRsZXNzVXNlckFnZW50KHRoaXMucGFnZSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oYCR7dGhpcy5iYXNlVXJsfS9wZXJzb25hbGFyZWEvTG9naW5gKTtcblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9VmFsaWRhdGVJZERhdGFgO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHtcbiAgICAgIGlkOiBjcmVkZW50aWFscy5pZCxcbiAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIGNoZWNrTGV2ZWw6ICcxJyxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRMb2dpblZhbGlkYXRpb24+KHRoaXMucGFnZSwgdmFsaWRhdGVVcmwsIHZhbGlkYXRlUmVxdWVzdCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlUmVzdWx0IHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuSGVhZGVyIHx8XG4gICAgICB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHxcbiAgICAgICF2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBlcnJvciBkdXJpbmcgbG9naW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVJldHVybkNvZGUgPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW4ucmV0dXJuQ29kZTtcbiAgICBkZWJ1ZyhgdXNlciB2YWxpZGF0ZSB3aXRoIHJldHVybiBjb2RlICcke3ZhbGlkYXRlUmV0dXJuQ29kZX0nYCk7XG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW47XG5cbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7dGhpcy5zZXJ2aWNlc1VybH0/cmVxTmFtZT1wZXJmb3JtTG9nb25JYDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIEtvZE1pc2h0YW1lc2g6IHVzZXJOYW1lLFxuICAgICAgICBNaXNwYXJaaWh1eTogY3JlZGVudGlhbHMuaWQsXG4gICAgICAgIFNpc21hOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgICAgY2FyZFN1ZmZpeDogY3JlZGVudGlhbHMuY2FyZDZEaWdpdHMsXG4gICAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIH07XG4gICAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8eyBzdGF0dXM6IHN0cmluZyB9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICAgICAgdGhpcy5wYWdlLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgICB9LFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFB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
|
package/lib/scrapers/max.js
CHANGED
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.getMemo = getMemo;
|
|
8
|
-
var _buildUrl = _interopRequireDefault(require("build-url"));
|
|
9
8
|
var _moment = _interopRequireDefault(require("moment"));
|
|
10
9
|
var _constants = require("../constants");
|
|
11
10
|
var _dates = _interopRequireDefault(require("../helpers/dates"));
|
|
@@ -65,9 +64,10 @@ function getTransactionsUrl(monthMoment) {
|
|
|
65
64
|
* cardIndex: -1 for all cards under the account
|
|
66
65
|
* all other query params are static, beside the date which changes for request per month
|
|
67
66
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
const url = new URL(`${BASE_API_ACTIONS_URL}/api/registered/transactionDetails/getTransactionsAndGraphs`);
|
|
68
|
+
url.searchParams.set('filterData', `{"userIndex":-1,"cardIndex":-1,"monthView":true,"date":"${date}","dates":{"startDate":"0","endDate":"0"},"bankAccount":{"bankAccountIndex":-1,"cards":null}}`);
|
|
69
|
+
url.searchParams.set('firstCallCardIndex', '-1');
|
|
70
|
+
return url.toString();
|
|
71
71
|
}
|
|
72
72
|
async function loadCategories(page) {
|
|
73
73
|
debug('Loading categories');
|
|
@@ -296,4 +296,4 @@ class MaxScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
var _default = exports.default = MaxScraper;
|
|
299
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tb21lbnQiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwiYnVpbGRVcmwiLCJwYXRoIiwibG9hZENhdGVnb3JpZXMiLCJyZXMiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaWQiLCJuYW1lIiwic2V0IiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwicGxhbk5hbWUiLCJwbGFuVHlwZUlkIiwiY2xlYW5lZFVwVHhuVHlwZVN0ciIsInJlcGxhY2UiLCJ0cmltIiwiSW1tZWRpYXRlQ2hhcmdlIiwiTm9ybWFsIiwiTW9udGhseUNoYXJnZSIsIk9uZU1vbnRoUG9zdHBvbmVkIiwiTW9udGhseVBvc3Rwb25lZCIsIkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nIiwiTW9udGhseVBheW1lbnQiLCJNb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzIiwiVGhpcnR5RGF5c1BsdXMiLCJUd29Nb250aHNQb3N0cG9uZWQiLCJUd29Nb250aHNQb3N0cG9uZWQyIiwiQWNjdW11bGF0aW5nQmFza2V0IiwiSW50ZXJuZXRTaG9wcGluZyIsIk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QiLCJQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIlJlcGxhY2VtZW50Q2FyZCIsIkVhcmx5UmVwYXltZW50IiwiTW9udGhseUNhcmRGZWUiLCJDdXJyZW5jeVBvY2tldCIsIlRyYW5zYWN0aW9uVHlwZXMiLCJJbnN0YWxsbWVudHMiLCJDcmVkaXQiLCJDcmVkaXRPdXRzaWRlVGhlTGltaXQiLCJFcnJvciIsImdldEluc3RhbGxtZW50c0luZm8iLCJjb21tZW50cyIsInVuZGVmaW5lZCIsIm1hdGNoZXMiLCJtYXRjaCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJnZXRDaGFyZ2VkQ3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZIiwiRVVST19DVVJSRU5DWSIsImdldE1lbW8iLCJmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyIiwiZnVuZHNUcmFuc2ZlckNvbW1lbnQiLCJtZW1vIiwibWFwVHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsImlzUGVuZGluZyIsInBheW1lbnREYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInB1cmNoYXNlRGF0ZSIsInRvSVNPU3RyaW5nIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJpbnN0YWxsbWVudHMiLCJpZGVudGlmaWVyIiwiZGVhbERhdGEiLCJhcm4iLCJ0eXBlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImFjdHVhbFBheW1lbnRBbW91bnQiLCJjaGFyZ2VkQ3VycmVuY3kiLCJwYXltZW50Q3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsImNhdGVnb3J5IiwiZ2V0IiwiY2F0ZWdvcnlJZCIsImZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgiLCJ1cmwiLCJkYXRhIiwidHJhbnNhY3Rpb25zQnlBY2NvdW50IiwidHJhbnNhY3Rpb25zIiwiZmlsdGVyIiwidHJhbnNhY3Rpb24iLCJzaG9ydENhcmROdW1iZXIiLCJtYXBwZWRUcmFuc2FjdGlvbiIsInB1c2giLCJhZGRSZXN1bHQiLCJhbGxSZXN1bHRzIiwiY2xvbmVkUmVzdWx0cyIsIk9iamVjdCIsImtleXMiLCJhY2NvdW50TnVtYmVyIiwicHJlcGFyZVRyYW5zYWN0aW9ucyIsInR4bnMiLCJzdGFydE1vbWVudCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjbG9uZWRUeG5zIiwiZnJvbSIsImZpeEluc3RhbGxtZW50cyIsInNvcnRUcmFuc2FjdGlvbnNCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJmZXRjaFRyYW5zYWN0aW9ucyIsIm9wdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnRNb21lbnRMaW1pdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsImFsbE1vbnRocyIsImdldEFsbE1vbnRoTW9tZW50cyIsImkiLCJvdXRwdXREYXRhIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkNoYW5nZVBhc3N3b3JkIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJNYXhTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwcmVBY3Rpb24iLCJjbGlja0J1dHRvbiIsImNoZWNrUmVhZGluZXNzIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsIndhaXRVbnRpbCIsImZldGNoRGF0YSIsInJlc3VsdHMiLCJhY2NvdW50cyIsIm1hcCIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWF4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBMb2dpbk9wdGlvbnMsXG4gIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMsXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS93ZWxjb21lYDtcbmNvbnN0IFBBU1NXT1JEX0VYUElSRURfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vcmVuZXctcGFzc3dvcmRgO1xuY29uc3QgU1VDQ0VTU19VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS9wZXJzb25hbGA7XG5cbmVudW0gTWF4UGxhbk5hbWUge1xuICBOb3JtYWwgPSAn16jXkteZ15zXlCcsXG4gIEltbWVkaWF0ZUNoYXJnZSA9ICfXl9eZ15XXkSDXoteh16fXldeqINee15nXmdeT15knLFxuICBJbnRlcm5ldFNob3BwaW5nID0gJ9eQ15nXoNeY16jXoNeYL9eX15VcItecJyxcbiAgSW5zdGFsbG1lbnRzID0gJ9eq16nXnNeV157XmdedJyxcbiAgTW9udGhseUNoYXJnZSA9ICfXl9eZ15XXkSDXl9eV15PXqdeZJyxcbiAgT25lTW9udGhQb3N0cG9uZWQgPSAn15PXl9eV15kg15fXldeT16knLFxuICBNb250aGx5UG9zdHBvbmVkID0gJ9eT15fXldeZINec15fXmdeV15Eg15TXl9eV15PXqdeZJyxcbiAgTW9udGhseVBheW1lbnQgPSAn16rXqdec15XXnSDXl9eV15PXqdeZJyxcbiAgRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmcgPSAn157Xmdee15XXnyDXnNeo15vXmdep15Qg16LXqteZ15PXmdeqJyxcbiAgTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50cyA9ICfXk9eX15XXmSDXl9eV15PXqSDXqtep15zXldee15nXnScsXG4gIFRoaXJ0eURheXNQbHVzID0gJ9ei16HXp9eqIDMwINek15zXldehJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9ep15nXmdedJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkMiA9IFwi15PXl9eV15kgMiDXlycg16rXqdec15XXnteZ151cIixcbiAgTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCA9ICfXl9eV15PXqdeZICsg16jXmdeR15nXqicsXG4gIENyZWRpdCA9ICfXp9eo15PXmdeYJyxcbiAgQ3JlZGl0T3V0c2lkZVRoZUxpbWl0ID0gJ9en16jXk9eZ15gt157Xl9eV16Ug15zXnteh15LXqNeqJyxcbiAgQWNjdW11bGF0aW5nQmFza2V0ID0gJ9eh15wg157XpteY15HXqCcsXG4gIFBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzID0gJ9ek16jXmdeh16og15TXoteh16fXlCDXlNeT15fXldeZ15QnLFxuICBSZXBsYWNlbWVudENhcmQgPSAn15vXqNeY15nXoSDXl9ec15nXpNeZJyxcbiAgRWFybHlSZXBheW1lbnQgPSAn16TXqNei15XXnyDXnteV16fXk9edJyxcbiAgTW9udGhseUNhcmRGZWUgPSAn15PXnteZINeb16jXmNeZ16EnLFxuICBDdXJyZW5jeVBvY2tldCA9ICfXl9eZ15XXkSDXkNeo16DXpyDXnteY15cnLFxufVxuXG5jb25zdCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IgPSAnI3BvcHVwV3JvbmdEZXRhaWxzJztcbmNvbnN0IExPR0lOX0VSUk9SX1NFTEVDVE9SID0gJyNwb3B1cENhcmRIb2xkZXJzTG9naW5FcnJvcic7XG5cbmNvbnN0IGNhdGVnb3JpZXMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdEZvclJlZGlyZWN0KHBhZ2UsIDIwMDAwLCBmYWxzZSwgW0JBU0VfV0VMQ09NRV9VUkwsIGAke0JBU0VfV0VMQ09NRV9VUkx9L2BdKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IsIHRydWUpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYDtcblxuICAvKipcbiAgICogdXJsIGV4cGxhbmF0aW9uOlxuICAgKiB1c2VySW5kZXg6IC0xIGZvciBhbGwgYWNjb3VudCBvd25lcnNcbiAgICogY2FyZEluZGV4OiAtMSBmb3IgYWxsIGNhcmRzIHVuZGVyIHRoZSBhY2NvdW50XG4gICAqIGFsbCBvdGhlciBxdWVyeSBwYXJhbXMgYXJlIHN0YXRpYywgYmVzaWRlIHRoZSBkYXRlIHdoaWNoIGNoYW5nZXMgZm9yIHJlcXVlc3QgcGVyIG1vbnRoXG4gICAqL1xuICByZXR1cm4gYnVpbGRVcmwoQkFTRV9BUElfQUNUSU9OU19VUkwsIHtcbiAgICBwYXRoOiBgL2FwaS9yZWdpc3RlcmVkL3RyYW5zYWN0aW9uRGV0YWlscy9nZXRUcmFuc2FjdGlvbnNBbmRHcmFwaHM/ZmlsdGVyRGF0YT17XCJ1c2VySW5kZXhcIjotMSxcImNhcmRJbmRleFwiOi0xLFwibW9udGhWaWV3XCI6dHJ1ZSxcImRhdGVcIjpcIiR7ZGF0ZX1cIixcImRhdGVzXCI6e1wic3RhcnREYXRlXCI6XCIwXCIsXCJlbmREYXRlXCI6XCIwXCJ9LFwiYmFua0FjY291bnRcIjp7XCJiYW5rQWNjb3VudEluZGV4XCI6LTEsXCJjYXJkc1wiOm51bGx9fSZmaXJzdENhbGxDYXJkSW5kZXg9LTFgLFxuICB9KTtcbn1cblxuaW50ZXJmYWNlIEZldGNoQ2F0ZWdvcnlSZXN1bHQge1xuICByZXN1bHQ/OiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQ2F0ZWdvcmllcyhwYWdlOiBQYWdlKSB7XG4gIGRlYnVnKCdMb2FkaW5nIGNhdGVnb3JpZXMnKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoQ2F0ZWdvcnlSZXN1bHQ+KHBhZ2UsIGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvY29udGVudHMvZ2V0Q2F0ZWdvcmllc2ApO1xuICBpZiAocmVzICYmIEFycmF5LmlzQXJyYXkocmVzLnJlc3VsdCkpIHtcbiAgICBkZWJ1ZyhgJHtyZXMucmVzdWx0Lmxlbmd0aH0gY2F0ZWdvcmllcyBsb2FkZWRgKTtcbiAgICByZXMucmVzdWx0Py5mb3JFYWNoKCh7IGlkLCBuYW1lIH0pID0+IGNhdGVnb3JpZXMuc2V0KGlkLCBuYW1lKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHBsYW5OYW1lOiBzdHJpbmcsIHBsYW5UeXBlSWQ6IG51bWJlcikge1xuICBjb25zdCBjbGVhbmVkVXBUeG5UeXBlU3RyID0gcGxhbk5hbWUucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCkgYXMgTWF4UGxhbk5hbWU7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW1tZWRpYXRlQ2hhcmdlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTm9ybWFsOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk9uZU1vbnRoUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBheW1lbnQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVGhpcnR5RGF5c1BsdXM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQyOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQWNjdW11bGF0aW5nQmFza2V0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW50ZXJuZXRTaG9wcGluZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3Q6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Qb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlJlcGxhY2VtZW50Q2FyZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkVhcmx5UmVwYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNhcmRGZWU6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DdXJyZW5jeVBvY2tldDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdE91dHNpZGVUaGVMaW1pdDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICBkZWZhdWx0OlxuICAgICAgc3dpdGNoIChwbGFuVHlwZUlkKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHIgYXMgc3RyaW5nfWApO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8oY29tbWVudHM6IHN0cmluZykge1xuICBpZiAoIWNvbW1lbnRzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gY29tbWVudHMubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDaGFyZ2VkQ3VycmVuY3koY3VycmVuY3lJZDogbnVtYmVyIHwgbnVsbCkge1xuICBzd2l0Y2ggKGN1cnJlbmN5SWQpIHtcbiAgICBjYXNlIDM3NjpcbiAgICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gICAgY2FzZSA4NDA6XG4gICAgICByZXR1cm4gRE9MTEFSX0NVUlJFTkNZO1xuICAgIGNhc2UgOTc4OlxuICAgICAgcmV0dXJuIEVVUk9fQ1VSUkVOQ1k7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbW8oe1xuICBjb21tZW50cyxcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcixcbiAgZnVuZHNUcmFuc2ZlckNvbW1lbnQsXG59OiBQaWNrPFNjcmFwZWRUcmFuc2FjdGlvbiwgJ2NvbW1lbnRzJyB8ICdmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyJyB8ICdmdW5kc1RyYW5zZmVyQ29tbWVudCc+KSB7XG4gIGlmIChmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyKSB7XG4gICAgY29uc3QgbWVtbyA9IGNvbW1lbnRzID8gYCR7Y29tbWVudHN9ICR7ZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcn1gIDogZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcjtcbiAgICByZXR1cm4gZnVuZHNUcmFuc2ZlckNvbW1lbnQgPyBgJHttZW1vfTogJHtmdW5kc1RyYW5zZmVyQ29tbWVudH1gIDogbWVtbztcbiAgfVxuXG4gIHJldHVybiBjb21tZW50cztcbn1cblxuZnVuY3Rpb24gbWFwVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgaXNQZW5kaW5nID0gcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUgPT09IG51bGw7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGUgPSBtb21lbnQoaXNQZW5kaW5nID8gcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDogcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHN0YXR1cyA9IGlzUGVuZGluZyA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkO1xuXG4gIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldEluc3RhbGxtZW50c0luZm8ocmF3VHJhbnNhY3Rpb24uY29tbWVudHMpO1xuICBjb25zdCBpZGVudGlmaWVyID0gaW5zdGFsbG1lbnRzXG4gICAgPyBgJHtyYXdUcmFuc2FjdGlvbi5kZWFsRGF0YT8uYXJufV8ke2luc3RhbGxtZW50cy5udW1iZXJ9YFxuICAgIDogcmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybjtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZShyYXdUcmFuc2FjdGlvbi5wbGFuTmFtZSwgcmF3VHJhbnNhY3Rpb24ucGxhblR5cGVJZCksXG4gICAgZGF0ZTogbW9tZW50KHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICBwcm9jZXNzZWREYXRlLFxuICAgIG9yaWdpbmFsQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxBbW91bnQsXG4gICAgb3JpZ2luYWxDdXJyZW5jeTogcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxDdXJyZW5jeSxcbiAgICBjaGFyZ2VkQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24uYWN0dWFsUGF5bWVudEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6IGdldENoYXJnZWRDdXJyZW5jeShyYXdUcmFuc2FjdGlvbi5wYXltZW50Q3VycmVuY3kpLFxuICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5tZXJjaGFudE5hbWUudHJpbSgpLFxuICAgIG1lbW86IGdldE1lbW8ocmF3VHJhbnNhY3Rpb24pLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yaWVzLmdldChyYXdUcmFuc2FjdGlvbj8uY2F0ZWdvcnlJZCksXG4gICAgaW5zdGFsbG1lbnRzLFxuICAgIGlkZW50aWZpZXIsXG4gICAgc3RhdHVzLFxuICB9O1xufVxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICByZXN1bHQ/OiB7XG4gICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aChwYWdlOiBQYWdlLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudCk7XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0PihwYWdlLCB1cmwpO1xuICBjb25zdCB0cmFuc2FjdGlvbnNCeUFjY291bnQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgaWYgKCFkYXRhIHx8ICFkYXRhLnJlc3VsdCkgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcblxuICBkYXRhLnJlc3VsdC50cmFuc2FjdGlvbnNcbiAgICAvLyBGaWx0ZXIgb3V0IG5vbi10cmFuc2FjdGlvbnMgd2l0aG91dCBhIHBsYW4gdHlwZSwgZS5nLiBzdW1tYXJ5IHJvd3NcbiAgICAuZmlsdGVyKHRyYW5zYWN0aW9uID0+ICEhdHJhbnNhY3Rpb24ucGxhbk5hbWUpXG4gICAgLmZvckVhY2goKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0pIHtcbiAgICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkVHJhbnNhY3Rpb24gPSBtYXBUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXS5wdXNoKG1hcHBlZFRyYW5zYWN0aW9uKTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBhZGRSZXN1bHQoYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4sIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4pIHtcbiAgY29uc3QgY2xvbmVkUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7IC4uLmFsbFJlc3VsdHMgfTtcbiAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGlmICghY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSkge1xuICAgICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IFtdO1xuICAgIH1cbiAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdLnB1c2goLi4ucmVzdWx0W2FjY291bnROdW1iZXJdKTtcbiAgfSk7XG4gIHJldHVybiBjbG9uZWRSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHJhbnNhY3Rpb25zKFxuICB0eG5zOiBUcmFuc2FjdGlvbltdLFxuICBzdGFydE1vbWVudDogbW9tZW50Lk1vbWVudCxcbiAgY29tYmluZUluc3RhbGxtZW50czogYm9vbGVhbixcbiAgZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlOiBib29sZWFuLFxuKSB7XG4gIGxldCBjbG9uZWRUeG5zID0gQXJyYXkuZnJvbSh0eG5zKTtcbiAgaWYgKCFjb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgY2xvbmVkVHhucyA9IGZpeEluc3RhbGxtZW50cyhjbG9uZWRUeG5zKTtcbiAgfVxuICBjbG9uZWRUeG5zID0gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZShjbG9uZWRUeG5zKTtcbiAgY2xvbmVkVHhucyA9IGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZVxuICAgID8gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGNsb25lZFR4bnMsIHN0YXJ0TW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKVxuICAgIDogY2xvbmVkVHhucztcbiAgcmV0dXJuIGNsb25lZFR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnRNb21lbnRMaW1pdCA9IG1vbWVudCgpLnN1YnRyYWN0KDQsICd5ZWFycycpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChzdGFydE1vbWVudExpbWl0LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuXG4gIGF3YWl0IGxvYWRDYXRlZ29yaWVzKHBhZ2UpO1xuXG4gIGxldCBhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE1vbnRocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZSwgYWxsTW9udGhzW2ldKTtcbiAgICBhbGxSZXN1bHRzID0gYWRkUmVzdWx0KGFsbFJlc3VsdHMsIHJlc3VsdCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhhbGxSZXN1bHRzKS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGxldCB0eG5zID0gYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXTtcbiAgICB0eG5zID0gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgICAgIHR4bnMsXG4gICAgICBzdGFydE1vbWVudCxcbiAgICAgIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSxcbiAgICAgIG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUsXG4gICAgKTtcbiAgICBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdID0gdHhucztcbiAgfSk7XG5cbiAgcmV0dXJuIGFsbFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1NVQ0NFU1NfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1BBU1NXT1JEX0VYUElSRURfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgICB9LFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3JdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlci1uYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1heFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2FwcC11c2VyLWxvZ2luLWZvcm0gLmdlbmVyYWwtYnV0dG9uLnNlbmQtbWUtY29kZScsXG4gICAgICBwcmVBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHRoaXMucGFnZSwgJyNjbG9zZVBvcHVwJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJyk7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJywgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJyk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQudGFiLXBhbmUuYWN0aXZlIGFwcC11c2VyLWxvZ2luLWZvcm0nLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnLnBlcnNvbmFsLWFyZWEgPiBhLmdvLXRvLXBlcnNvbmFsLWFyZWEnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgICB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhyZXN1bHRzKS5tYXAoYWNjb3VudE51bWJlciA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgICB0eG5zOiByZXN1bHRzW2FjY291bnROdW1iZXJdLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXhTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUsscUJBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGNBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLHVCQUFBLEdBQUFWLE9BQUE7QUFLcUMsU0FBQUQsdUJBQUFZLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHckMsTUFBTUcsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxLQUFLLENBQUM7QUFzQjdCLE1BQU1DLG9CQUFvQixHQUFHLCtCQUErQjtBQUM1RCxNQUFNQyxnQkFBZ0IsR0FBRyx1QkFBdUI7QUFFaEQsTUFBTUMsU0FBUyxHQUFHLEdBQUdELGdCQUFnQixtQkFBbUI7QUFDeEQsTUFBTUUsb0JBQW9CLEdBQUcsR0FBR0YsZ0JBQWdCLGlCQUFpQjtBQUNqRSxNQUFNRyxXQUFXLEdBQUcsR0FBR0gsZ0JBQWdCLG9CQUFvQjtBQUFDLElBRXZESSxXQUFXLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUEsRUFBWEEsV0FBVztBQXlCaEIsTUFBTUMsd0JBQXdCLEdBQUcsb0JBQW9CO0FBQ3JELE1BQU1DLG9CQUFvQixHQUFHLDZCQUE2QjtBQUUxRCxNQUFNQyxVQUFVLEdBQUcsSUFBSUMsR0FBRyxDQUFpQixDQUFDO0FBRTVDLFNBQVNDLGdCQUFnQkEsQ0FBQ0MsSUFBVSxFQUFFO0VBQ3BDLE9BQU9DLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQ2xCLElBQUFDLDJCQUFlLEVBQUNILElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUNWLGdCQUFnQixFQUFFLEdBQUdBLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUMvRSxJQUFBYywyQ0FBcUIsRUFBQ0osSUFBSSxFQUFFTCx3QkFBd0IsRUFBRSxJQUFJLENBQUMsRUFDM0QsSUFBQVMsMkNBQXFCLEVBQUNKLElBQUksRUFBRUosb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQ3hELENBQUM7QUFDSjtBQUVBLFNBQVNTLGtCQUFrQkEsQ0FBQ0MsV0FBbUIsRUFBRTtFQUMvQyxNQUFNQyxLQUFLLEdBQUdELFdBQVcsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0VBQ3JDLE1BQU1DLElBQUksR0FBR0YsV0FBVyxDQUFDRSxJQUFJLENBQUMsQ0FBQztFQUMvQixNQUFNQyxJQUFJLEdBQUcsR0FBR0QsSUFBSSxJQUFJRCxLQUFLLEtBQUs7O0VBRWxDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLE9BQU8sSUFBQUcsaUJBQVEsRUFBQ3JCLG9CQUFvQixFQUFFO0lBQ3BDc0IsSUFBSSxFQUFFLGtJQUFrSUYsSUFBSTtFQUM5SSxDQUFDLENBQUM7QUFDSjtBQVNBLGVBQWVHLGNBQWNBLENBQUNaLElBQVUsRUFBRTtFQUN4Q2IsS0FBSyxDQUFDLG9CQUFvQixDQUFDO0VBQzNCLE1BQU0wQixHQUFHLEdBQUcsTUFBTSxJQUFBQyx5QkFBa0IsRUFBc0JkLElBQUksRUFBRSxHQUFHWCxvQkFBb0IsNkJBQTZCLENBQUM7RUFDckgsSUFBSXdCLEdBQUcsSUFBSUUsS0FBSyxDQUFDQyxPQUFPLENBQUNILEdBQUcsQ0FBQ0ksTUFBTSxDQUFDLEVBQUU7SUFDcEM5QixLQUFLLENBQUMsR0FBRzBCLEdBQUcsQ0FBQ0ksTUFBTSxDQUFDQyxNQUFNLG9CQUFvQixDQUFDO0lBQy9DTCxHQUFHLENBQUNJLE1BQU0sRUFBRUUsT0FBTyxDQUFDLENBQUM7TUFBRUMsRUFBRTtNQUFFQztJQUFLLENBQUMsS0FBS3hCLFVBQVUsQ0FBQ3lCLEdBQUcsQ0FBQ0YsRUFBRSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUNqRTtBQUNGO0FBRUEsU0FBU0Usa0JBQWtCQSxDQUFDQyxRQUFnQixFQUFFQyxVQUFrQixFQUFFO0VBQ2hFLE1BQU1DLG1CQUFtQixHQUFHRixRQUFRLENBQUNHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFnQjtFQUM3RSxRQUFRRixtQkFBbUI7SUFDekIsS0FBS2hDLFdBQVcsQ0FBQ21DLGVBQWU7SUFDaEMsS0FBS25DLFdBQVcsQ0FBQ29DLE1BQU07SUFDdkIsS0FBS3BDLFdBQVcsQ0FBQ3FDLGFBQWE7SUFDOUIsS0FBS3JDLFdBQVcsQ0FBQ3NDLGlCQUFpQjtJQUNsQyxLQUFLdEMsV0FBVyxDQUFDdUMsZ0JBQWdCO0lBQ2pDLEtBQUt2QyxXQUFXLENBQUN3Qyx1QkFBdUI7SUFDeEMsS0FBS3hDLFdBQVcsQ0FBQ3lDLGNBQWM7SUFDL0IsS0FBS3pDLFdBQVcsQ0FBQzBDLDRCQUE0QjtJQUM3QyxLQUFLMUMsV0FBVyxDQUFDMkMsY0FBYztJQUMvQixLQUFLM0MsV0FBVyxDQUFDNEMsa0JBQWtCO0lBQ25DLEtBQUs1QyxXQUFXLENBQUM2QyxtQkFBbUI7SUFDcEMsS0FBSzdDLFdBQVcsQ0FBQzhDLGtCQUFrQjtJQUNuQyxLQUFLOUMsV0FBVyxDQUFDK0MsZ0JBQWdCO0lBQ2pDLEtBQUsvQyxXQUFXLENBQUNnRCx5QkFBeUI7SUFDMUMsS0FBS2hELFdBQVcsQ0FBQ2lELGdDQUFnQztJQUNqRCxLQUFLakQsV0FBVyxDQUFDa0QsZUFBZTtJQUNoQyxLQUFLbEQsV0FBVyxDQUFDbUQsY0FBYztJQUMvQixLQUFLbkQsV0FBVyxDQUFDb0QsY0FBYztJQUMvQixLQUFLcEQsV0FBVyxDQUFDcUQsY0FBYztNQUM3QixPQUFPQywrQkFBZ0IsQ0FBQ2xCLE1BQU07SUFDaEMsS0FBS3BDLFdBQVcsQ0FBQ3VELFlBQVk7SUFDN0IsS0FBS3ZELFdBQVcsQ0FBQ3dELE1BQU07SUFDdkIsS0FBS3hELFdBQVcsQ0FBQ3lELHFCQUFxQjtNQUNwQyxPQUFPSCwrQkFBZ0IsQ0FBQ0MsWUFBWTtJQUN0QztNQUNFLFFBQVF4QixVQUFVO1FBQ2hCLEtBQUssQ0FBQztRQUNOLEtBQUssQ0FBQztVQUNKLE9BQU91QiwrQkFBZ0IsQ0FBQ0MsWUFBWTtRQUN0QyxLQUFLLENBQUM7VUFDSixPQUFPRCwrQkFBZ0IsQ0FBQ2xCLE1BQU07UUFDaEM7VUFDRSxNQUFNLElBQUlzQixLQUFLLENBQUMsNEJBQTRCMUIsbUJBQW1CLEVBQVksQ0FBQztNQUNoRjtFQUNKO0FBQ0Y7QUFFQSxTQUFTMkIsbUJBQW1CQSxDQUFDQyxRQUFnQixFQUFFO0VBQzdDLElBQUksQ0FBQ0EsUUFBUSxFQUFFO0lBQ2IsT0FBT0MsU0FBUztFQUNsQjtFQUNBLE1BQU1DLE9BQU8sR0FBR0YsUUFBUSxDQUFDRyxLQUFLLENBQUMsTUFBTSxDQUFDO0VBQ3RDLElBQUksQ0FBQ0QsT0FBTyxJQUFJQSxPQUFPLENBQUN0QyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ2xDLE9BQU9xQyxTQUFTO0VBQ2xCO0VBRUEsT0FBTztJQUNMRyxNQUFNLEVBQUVDLFFBQVEsQ0FBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoQ0ksS0FBSyxFQUFFRCxRQUFRLENBQUNILE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0VBQ2hDLENBQUM7QUFDSDtBQUVBLFNBQVNLLGtCQUFrQkEsQ0FBQ0MsVUFBeUIsRUFBRTtFQUNyRCxRQUFRQSxVQUFVO0lBQ2hCLEtBQUssR0FBRztNQUNOLE9BQU9DLDBCQUFlO0lBQ3hCLEtBQUssR0FBRztNQUNOLE9BQU9DLDBCQUFlO0lBQ3hCLEtBQUssR0FBRztNQUNOLE9BQU9DLHdCQUFhO0lBQ3RCO01BQ0UsT0FBT1YsU0FBUztFQUNwQjtBQUNGO0FBRU8sU0FBU1csT0FBT0EsQ0FBQztFQUN0QlosUUFBUTtFQUNSYSwrQkFBK0I7RUFDL0JDO0FBQ2lHLENBQUMsRUFBRTtFQUNwRyxJQUFJRCwrQkFBK0IsRUFBRTtJQUNuQyxNQUFNRSxJQUFJLEdBQUdmLFFBQVEsR0FBRyxHQUFHQSxRQUFRLElBQUlhLCtCQUErQixFQUFFLEdBQUdBLCtCQUErQjtJQUMxRyxPQUFPQyxvQkFBb0IsR0FBRyxHQUFHQyxJQUFJLEtBQUtELG9CQUFvQixFQUFFLEdBQUdDLElBQUk7RUFDekU7RUFFQSxPQUFPZixRQUFRO0FBQ2pCO0FBRUEsU0FBU2dCLGNBQWNBLENBQUNDLGNBQWtDLEVBQWU7RUFDdkUsTUFBTUMsU0FBUyxHQUFHRCxjQUFjLENBQUNFLFdBQVcsS0FBSyxJQUFJO0VBQ3JELE1BQU1DLGFBQWEsR0FBRyxJQUFBQyxlQUFNLEVBQUNILFNBQVMsR0FBR0QsY0FBYyxDQUFDSyxZQUFZLEdBQUdMLGNBQWMsQ0FBQ0UsV0FBVyxDQUFDLENBQUNJLFdBQVcsQ0FBQyxDQUFDO0VBQ2hILE1BQU1DLE1BQU0sR0FBR04sU0FBUyxHQUFHTyxrQ0FBbUIsQ0FBQ0MsT0FBTyxHQUFHRCxrQ0FBbUIsQ0FBQ0UsU0FBUztFQUV0RixNQUFNQyxZQUFZLEdBQUc3QixtQkFBbUIsQ0FBQ2tCLGNBQWMsQ0FBQ2pCLFFBQVEsQ0FBQztFQUNqRSxNQUFNNkIsVUFBVSxHQUFHRCxZQUFZLEdBQzNCLEdBQUdYLGNBQWMsQ0FBQ2EsUUFBUSxFQUFFQyxHQUFHLElBQUlILFlBQVksQ0FBQ3hCLE1BQU0sRUFBRSxHQUN4RGEsY0FBYyxDQUFDYSxRQUFRLEVBQUVDLEdBQUc7RUFFaEMsT0FBTztJQUNMQyxJQUFJLEVBQUUvRCxrQkFBa0IsQ0FBQ2dELGNBQWMsQ0FBQy9DLFFBQVEsRUFBRStDLGNBQWMsQ0FBQzlDLFVBQVUsQ0FBQztJQUM1RWhCLElBQUksRUFBRSxJQUFBa0UsZUFBTSxFQUFDSixjQUFjLENBQUNLLFlBQVksQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQztJQUN2REgsYUFBYTtJQUNiYSxjQUFjLEVBQUUsQ0FBQ2hCLGNBQWMsQ0FBQ2dCLGNBQWM7SUFDOUNDLGdCQUFnQixFQUFFakIsY0FBYyxDQUFDaUIsZ0JBQWdCO0lBQ2pEQyxhQUFhLEVBQUUsQ0FBQ2xCLGNBQWMsQ0FBQ21CLG1CQUFtQjtJQUNsREMsZUFBZSxFQUFFOUIsa0JBQWtCLENBQUNVLGNBQWMsQ0FBQ3FCLGVBQWUsQ0FBQztJQUNuRUMsV0FBVyxFQUFFdEIsY0FBYyxDQUFDdUIsWUFBWSxDQUFDbEUsSUFBSSxDQUFDLENBQUM7SUFDL0N5QyxJQUFJLEVBQUVILE9BQU8sQ0FBQ0ssY0FBYyxDQUFDO0lBQzdCd0IsUUFBUSxFQUFFbEcsVUFBVSxDQUFDbUcsR0FBRyxDQUFDekIsY0FBYyxFQUFFMEIsVUFBVSxDQUFDO0lBQ3BEZixZQUFZO0lBQ1pDLFVBQVU7SUFDVkw7RUFDRixDQUFDO0FBQ0g7QUFPQSxlQUFlb0IseUJBQXlCQSxDQUFDbEcsSUFBVSxFQUFFTSxXQUFtQixFQUFFO0VBQ3hFLE1BQU02RixHQUFHLEdBQUc5RixrQkFBa0IsQ0FBQ0MsV0FBVyxDQUFDO0VBRTNDLE1BQU04RixJQUFJLEdBQUcsTUFBTSxJQUFBdEYseUJBQWtCLEVBQTRCZCxJQUFJLEVBQUVtRyxHQUFHLENBQUM7RUFDM0UsTUFBTUUscUJBQW9ELEdBQUcsQ0FBQyxDQUFDO0VBRS9ELElBQUksQ0FBQ0QsSUFBSSxJQUFJLENBQUNBLElBQUksQ0FBQ25GLE1BQU0sRUFBRSxPQUFPb0YscUJBQXFCO0VBRXZERCxJQUFJLENBQUNuRixNQUFNLENBQUNxRjtFQUNWO0VBQUEsQ0FDQ0MsTUFBTSxDQUFDQyxXQUFXLElBQUksQ0FBQyxDQUFDQSxXQUFXLENBQUNoRixRQUFRLENBQUMsQ0FDN0NMLE9BQU8sQ0FBRXFGLFdBQStCLElBQUs7SUFDNUMsSUFBSSxDQUFDSCxxQkFBcUIsQ0FBQ0csV0FBVyxDQUFDQyxlQUFlLENBQUMsRUFBRTtNQUN2REoscUJBQXFCLENBQUNHLFdBQVcsQ0FBQ0MsZUFBZSxDQUFDLEdBQUcsRUFBRTtJQUN6RDtJQUVBLE1BQU1DLGlCQUFpQixHQUFHcEMsY0FBYyxDQUFDa0MsV0FBVyxDQUFDO0lBQ3JESCxxQkFBcUIsQ0FBQ0csV0FBVyxDQUFDQyxlQUFlLENBQUMsQ0FBQ0UsSUFBSSxDQUFDRCxpQkFBaUIsQ0FBQztFQUM1RSxDQUFDLENBQUM7RUFFSixPQUFPTCxxQkFBcUI7QUFDOUI7QUFFQSxTQUFTTyxTQUFTQSxDQUFDQyxVQUF5QyxFQUFFNUYsTUFBcUMsRUFBRTtFQUNuRyxNQUFNNkYsYUFBNEMsR0FBRztJQUFFLEdBQUdEO0VBQVcsQ0FBQztFQUN0RUUsTUFBTSxDQUFDQyxJQUFJLENBQUMvRixNQUFNLENBQUMsQ0FBQ0UsT0FBTyxDQUFDOEYsYUFBYSxJQUFJO0lBQzNDLElBQUksQ0FBQ0gsYUFBYSxDQUFDRyxhQUFhLENBQUMsRUFBRTtNQUNqQ0gsYUFBYSxDQUFDRyxhQUFhLENBQUMsR0FBRyxFQUFFO0lBQ25DO0lBQ0FILGFBQWEsQ0FBQ0csYUFBYSxDQUFDLENBQUNOLElBQUksQ0FBQyxHQUFHMUYsTUFBTSxDQUFDZ0csYUFBYSxDQUFDLENBQUM7RUFDN0QsQ0FBQyxDQUFDO0VBQ0YsT0FBT0gsYUFBYTtBQUN0QjtBQUVBLFNBQVNJLG1CQUFtQkEsQ0FDMUJDLElBQW1CLEVBQ25CQyxXQUEwQixFQUMxQkMsbUJBQTRCLEVBQzVCQyw4QkFBdUMsRUFDdkM7RUFDQSxJQUFJQyxVQUFVLEdBQUd4RyxLQUFLLENBQUN5RyxJQUFJLENBQUNMLElBQUksQ0FBQztFQUNqQyxJQUFJLENBQUNFLG1CQUFtQixFQUFFO0lBQ3hCRSxVQUFVLEdBQUcsSUFBQUUsNkJBQWUsRUFBQ0YsVUFBVSxDQUFDO0VBQzFDO0VBQ0FBLFVBQVUsR0FBRyxJQUFBRyxvQ0FBc0IsRUFBQ0gsVUFBVSxDQUFDO0VBQy9DQSxVQUFVLEdBQUdELDhCQUE4QixHQUN2QyxJQUFBSyxtQ0FBcUIsRUFBQ0osVUFBVSxFQUFFSCxXQUFXLEVBQUVDLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxHQUM1RUUsVUFBVTtFQUNkLE9BQU9BLFVBQVU7QUFDbkI7QUFFQSxlQUFlSyxpQkFBaUJBLENBQUM1SCxJQUFVLEVBQUU2SCxPQUF1QixFQUFFO0VBQ3BFLE1BQU1DLG9CQUFvQixHQUFHRCxPQUFPLENBQUNDLG9CQUFvQixJQUFJLENBQUM7RUFDOUQsTUFBTUMsa0JBQWtCLEdBQUcsSUFBQXBELGVBQU0sRUFBQyxDQUFDLENBQUNxRCxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztFQUN4RCxNQUFNQyxnQkFBZ0IsR0FBRyxJQUFBdEQsZUFBTSxFQUFDLENBQUMsQ0FBQ3FELFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0VBQ3RELE1BQU1FLFNBQVMsR0FBR0wsT0FBTyxDQUFDSyxTQUFTLElBQUlILGtCQUFrQixDQUFDSSxNQUFNLENBQUMsQ0FBQztFQUNsRSxNQUFNZixXQUFXLEdBQUd6QyxlQUFNLENBQUN5RCxHQUFHLENBQUNILGdCQUFnQixFQUFFLElBQUF0RCxlQUFNLEVBQUN1RCxTQUFTLENBQUMsQ0FBQztFQUNuRSxNQUFNRyxTQUFTLEdBQUcsSUFBQUMsY0FBa0IsRUFBQ2xCLFdBQVcsRUFBRVUsb0JBQW9CLENBQUM7RUFFdkUsTUFBTWxILGNBQWMsQ0FBQ1osSUFBSSxDQUFDO0VBRTFCLElBQUk2RyxVQUF5QyxHQUFHLENBQUMsQ0FBQztFQUNsRCxLQUFLLElBQUkwQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLFNBQVMsQ0FBQ25ILE1BQU0sRUFBRXFILENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDNUMsTUFBTXRILE1BQU0sR0FBRyxNQUFNaUYseUJBQXlCLENBQUNsRyxJQUFJLEVBQUVxSSxTQUFTLENBQUNFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFMUIsVUFBVSxHQUFHRCxTQUFTLENBQUNDLFVBQVUsRUFBRTVGLE1BQU0sQ0FBQztFQUM1QztFQUVBOEYsTUFBTSxDQUFDQyxJQUFJLENBQUNILFVBQVUsQ0FBQyxDQUFDMUYsT0FBTyxDQUFDOEYsYUFBYSxJQUFJO0lBQy9DLElBQUlFLElBQUksR0FBR04sVUFBVSxDQUFDSSxhQUFhLENBQUM7SUFDcENFLElBQUksR0FBR0QsbUJBQW1CLENBQ3hCQyxJQUFJLEVBQ0pDLFdBQVcsRUFDWFMsT0FBTyxDQUFDUixtQkFBbUIsSUFBSSxLQUFLLEVBQ3BDUSxPQUFPLENBQUNXLFVBQVUsRUFBRWxCLDhCQUE4QixJQUFJLElBQ3hELENBQUM7SUFDRFQsVUFBVSxDQUFDSSxhQUFhLENBQUMsR0FBR0UsSUFBSTtFQUNsQyxDQUFDLENBQUM7RUFFRixPQUFPTixVQUFVO0FBQ25CO0FBRUEsU0FBUzRCLHVCQUF1QkEsQ0FBQ3pJLElBQVUsRUFBd0I7RUFDakUsTUFBTTBJLElBQTBCLEdBQUcsQ0FBQyxDQUFDO0VBQ3JDQSxJQUFJLENBQUNDLG9DQUFZLENBQUNDLE9BQU8sQ0FBQyxHQUFHLENBQUNuSixXQUFXLENBQUM7RUFDMUNpSixJQUFJLENBQUNDLG9DQUFZLENBQUNFLGNBQWMsQ0FBQyxHQUFHLENBQUNySixvQkFBb0IsQ0FBQztFQUMxRGtKLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0csZUFBZSxDQUFDLEdBQUcsQ0FDbkMsWUFBWTtJQUNWLE9BQU8sSUFBQUMsMENBQW9CLEVBQUMvSSxJQUFJLEVBQUVMLHdCQUF3QixDQUFDO0VBQzdELENBQUMsQ0FDRjtFQUNEK0ksSUFBSSxDQUFDQyxvQ0FBWSxDQUFDSyxZQUFZLENBQUMsR0FBRyxDQUNoQyxZQUFZO0lBQ1YsT0FBTyxJQUFBRCwwQ0FBb0IsRUFBQy9JLElBQUksRUFBRUosb0JBQW9CLENBQUM7RUFDekQsQ0FBQyxDQUNGO0VBQ0QsT0FBTzhJLElBQUk7QUFDYjtBQUVBLFNBQVNPLGlCQUFpQkEsQ0FBQ0MsV0FBdUMsRUFBRTtFQUNsRSxPQUFPLENBQ0w7SUFBRUMsUUFBUSxFQUFFLFlBQVk7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNHO0VBQVMsQ0FBQyxFQUN2RDtJQUFFRixRQUFRLEVBQUUsV0FBVztJQUFFQyxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0k7RUFBUyxDQUFDLENBQ3ZEO0FBQ0g7QUFJQSxNQUFNQyxVQUFVLFNBQVNDLDhDQUFzQixDQUE2QjtFQUMxRUMsZUFBZUEsQ0FBQ1AsV0FBdUMsRUFBZ0I7SUFDckUsT0FBTztNQUNMUSxRQUFRLEVBQUVuSyxTQUFTO01BQ25Cb0ssTUFBTSxFQUFFVixpQkFBaUIsQ0FBQ0MsV0FBVyxDQUFDO01BQ3RDVSxvQkFBb0IsRUFBRSxrREFBa0Q7TUFDeEVDLFNBQVMsRUFBRSxNQUFBQSxDQUFBLEtBQVk7UUFDckIsSUFBSSxNQUFNLElBQUFkLDBDQUFvQixFQUFDLElBQUksQ0FBQy9JLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRTtVQUN4RCxNQUFNLElBQUE4SixpQ0FBVyxFQUFDLElBQUksQ0FBQzlKLElBQUksRUFBRSxhQUFhLENBQUM7UUFDN0M7UUFDQSxNQUFNLElBQUE4SixpQ0FBVyxFQUFDLElBQUksQ0FBQzlKLElBQUksRUFBRSx3Q0FBd0MsQ0FBQztRQUN0RSxJQUFJLE1BQU0sSUFBQStJLDBDQUFvQixFQUFDLElBQUksQ0FBQy9JLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO1VBQ2hFLE1BQU0sSUFBQThKLGlDQUFXLEVBQUMsSUFBSSxDQUFDOUosSUFBSSxFQUFFLHFCQUFxQixDQUFDO1FBQ3JEO1FBQ0EsTUFBTSxJQUFBSSwyQ0FBcUIsRUFBQyxJQUFJLENBQUNKLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLENBQUM7UUFDcEUsTUFBTSxJQUFBOEosaUNBQVcsRUFBQyxJQUFJLENBQUM5SixJQUFJLEVBQUUsc0JBQXNCLENBQUM7UUFDcEQsTUFBTSxJQUFBSSwyQ0FBcUIsRUFBQyxJQUFJLENBQUNKLElBQUksRUFBRSxxREFBcUQsRUFBRSxJQUFJLENBQUM7TUFDckcsQ0FBQztNQUNEK0osY0FBYyxFQUFFLE1BQUFBLENBQUEsS0FBWTtRQUMxQixNQUFNLElBQUEzSiwyQ0FBcUIsRUFBQyxJQUFJLENBQUNKLElBQUksRUFBRSx3Q0FBd0MsRUFBRSxJQUFJLENBQUM7TUFDeEYsQ0FBQztNQUNEZ0ssVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWWpLLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsSUFBSSxDQUFDO01BQ25EaUssZUFBZSxFQUFFeEIsdUJBQXVCLENBQUMsSUFBSSxDQUFDekksSUFBSSxDQUFDO01BQ25Ea0ssU0FBUyxFQUFFO0lBQ2IsQ0FBQztFQUNIO0VBRUEsTUFBTUMsU0FBU0EsQ0FBQSxFQUFHO0lBQ2hCLE1BQU1DLE9BQU8sR0FBRyxNQUFNeEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDNUgsSUFBSSxFQUFFLElBQUksQ0FBQzZILE9BQU8sQ0FBQztJQUNoRSxNQUFNd0MsUUFBUSxHQUFHdEQsTUFBTSxDQUFDQyxJQUFJLENBQUNvRCxPQUFPLENBQUMsQ0FBQ0UsR0FBRyxDQUFDckQsYUFBYSxJQUFJO01BQ3pELE9BQU87UUFDTEEsYUFBYTtRQUNiRSxJQUFJLEVBQUVpRCxPQUFPLENBQUNuRCxhQUFhO01BQzdCLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPO01BQ0xzRCxPQUFPLEVBQUUsSUFBSTtNQUNiRjtJQUNGLENBQUM7RUFDSDtBQUNGO0FBQUMsSUFBQUcsUUFBQSxHQUFBQyxPQUFBLENBQUF2TCxPQUFBLEdBRWNxSyxVQUFVIiwiaWdub3JlTGlzdCI6W119
|
|
299
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwidXJsIiwiVVJMIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJsb2FkQ2F0ZWdvcmllcyIsInJlcyIsImZldGNoR2V0V2l0aGluUGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImxlbmd0aCIsImZvckVhY2giLCJpZCIsIm5hbWUiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJwbGFuTmFtZSIsInBsYW5UeXBlSWQiLCJjbGVhbmVkVXBUeG5UeXBlU3RyIiwicmVwbGFjZSIsInRyaW0iLCJJbW1lZGlhdGVDaGFyZ2UiLCJOb3JtYWwiLCJNb250aGx5Q2hhcmdlIiwiT25lTW9udGhQb3N0cG9uZWQiLCJNb250aGx5UG9zdHBvbmVkIiwiRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmciLCJNb250aGx5UGF5bWVudCIsIk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMiLCJUaGlydHlEYXlzUGx1cyIsIlR3b01vbnRoc1Bvc3Rwb25lZCIsIlR3b01vbnRoc1Bvc3Rwb25lZDIiLCJBY2N1bXVsYXRpbmdCYXNrZXQiLCJJbnRlcm5ldFNob3BwaW5nIiwiTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCIsIlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIiwiUmVwbGFjZW1lbnRDYXJkIiwiRWFybHlSZXBheW1lbnQiLCJNb250aGx5Q2FyZEZlZSIsIkN1cnJlbmN5UG9ja2V0IiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIkNyZWRpdCIsIkNyZWRpdE91dHNpZGVUaGVMaW1pdCIsIkVycm9yIiwiZ2V0SW5zdGFsbG1lbnRzSW5mbyIsImNvbW1lbnRzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b3RhbCIsImdldENoYXJnZWRDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1kiLCJFVVJPX0NVUlJFTkNZIiwiZ2V0TWVtbyIsImZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIiLCJmdW5kc1RyYW5zZmVyQ29tbWVudCIsIm1lbW8iLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaXNQZW5kaW5nIiwicGF5bWVudERhdGUiLCJwcm9jZXNzZWREYXRlIiwibW9tZW50IiwicHVyY2hhc2VEYXRlIiwidG9JU09TdHJpbmciLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImluc3RhbGxtZW50cyIsImlkZW50aWZpZXIiLCJkZWFsRGF0YSIsImFybiIsInR5cGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiYWN0dWFsUGF5bWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsInBheW1lbnRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwiY2F0ZWdvcnkiLCJnZXQiLCJjYXRlZ29yeUlkIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aCIsImRhdGEiLCJ0cmFuc2FjdGlvbnNCeUFjY291bnQiLCJ0cmFuc2FjdGlvbnMiLCJmaWx0ZXIiLCJ0cmFuc2FjdGlvbiIsInNob3J0Q2FyZE51bWJlciIsIm1hcHBlZFRyYW5zYWN0aW9uIiwicHVzaCIsImFkZFJlc3VsdCIsImFsbFJlc3VsdHMiLCJjbG9uZWRSZXN1bHRzIiwiT2JqZWN0Iiwia2V5cyIsImFjY291bnROdW1iZXIiLCJwcmVwYXJlVHJhbnNhY3Rpb25zIiwidHhucyIsInN0YXJ0TW9tZW50IiwiY29tYmluZUluc3RhbGxtZW50cyIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImNsb25lZFR4bnMiLCJmcm9tIiwiZml4SW5zdGFsbG1lbnRzIiwic29ydFRyYW5zYWN0aW9uc0J5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydE1vbWVudExpbWl0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwibWF4IiwiYWxsTW9udGhzIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwiaSIsIm91dHB1dERhdGEiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsIlVua25vd25FcnJvciIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIk1heFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInByZUFjdGlvbiIsImNsaWNrQnV0dG9uIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwid2FpdFVudGlsIiwiZmV0Y2hEYXRhIiwicmVzdWx0cyIsImFjY291bnRzIiwibWFwIiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBMb2dpbk9wdGlvbnMsXG4gIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMsXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS93ZWxjb21lYDtcbmNvbnN0IFBBU1NXT1JEX0VYUElSRURfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vcmVuZXctcGFzc3dvcmRgO1xuY29uc3QgU1VDQ0VTU19VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS9wZXJzb25hbGA7XG5cbmVudW0gTWF4UGxhbk5hbWUge1xuICBOb3JtYWwgPSAn16jXkteZ15zXlCcsXG4gIEltbWVkaWF0ZUNoYXJnZSA9ICfXl9eZ15XXkSDXoteh16fXldeqINee15nXmdeT15knLFxuICBJbnRlcm5ldFNob3BwaW5nID0gJ9eQ15nXoNeY16jXoNeYL9eX15VcItecJyxcbiAgSW5zdGFsbG1lbnRzID0gJ9eq16nXnNeV157XmdedJyxcbiAgTW9udGhseUNoYXJnZSA9ICfXl9eZ15XXkSDXl9eV15PXqdeZJyxcbiAgT25lTW9udGhQb3N0cG9uZWQgPSAn15PXl9eV15kg15fXldeT16knLFxuICBNb250aGx5UG9zdHBvbmVkID0gJ9eT15fXldeZINec15fXmdeV15Eg15TXl9eV15PXqdeZJyxcbiAgTW9udGhseVBheW1lbnQgPSAn16rXqdec15XXnSDXl9eV15PXqdeZJyxcbiAgRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmcgPSAn157Xmdee15XXnyDXnNeo15vXmdep15Qg16LXqteZ15PXmdeqJyxcbiAgTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50cyA9ICfXk9eX15XXmSDXl9eV15PXqSDXqtep15zXldee15nXnScsXG4gIFRoaXJ0eURheXNQbHVzID0gJ9ei16HXp9eqIDMwINek15zXldehJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9ep15nXmdedJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkMiA9IFwi15PXl9eV15kgMiDXlycg16rXqdec15XXnteZ151cIixcbiAgTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCA9ICfXl9eV15PXqdeZICsg16jXmdeR15nXqicsXG4gIENyZWRpdCA9ICfXp9eo15PXmdeYJyxcbiAgQ3JlZGl0T3V0c2lkZVRoZUxpbWl0ID0gJ9en16jXk9eZ15gt157Xl9eV16Ug15zXnteh15LXqNeqJyxcbiAgQWNjdW11bGF0aW5nQmFza2V0ID0gJ9eh15wg157XpteY15HXqCcsXG4gIFBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzID0gJ9ek16jXmdeh16og15TXoteh16fXlCDXlNeT15fXldeZ15QnLFxuICBSZXBsYWNlbWVudENhcmQgPSAn15vXqNeY15nXoSDXl9ec15nXpNeZJyxcbiAgRWFybHlSZXBheW1lbnQgPSAn16TXqNei15XXnyDXnteV16fXk9edJyxcbiAgTW9udGhseUNhcmRGZWUgPSAn15PXnteZINeb16jXmNeZ16EnLFxuICBDdXJyZW5jeVBvY2tldCA9ICfXl9eZ15XXkSDXkNeo16DXpyDXnteY15cnLFxufVxuXG5jb25zdCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IgPSAnI3BvcHVwV3JvbmdEZXRhaWxzJztcbmNvbnN0IExPR0lOX0VSUk9SX1NFTEVDVE9SID0gJyNwb3B1cENhcmRIb2xkZXJzTG9naW5FcnJvcic7XG5cbmNvbnN0IGNhdGVnb3JpZXMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdEZvclJlZGlyZWN0KHBhZ2UsIDIwMDAwLCBmYWxzZSwgW0JBU0VfV0VMQ09NRV9VUkwsIGAke0JBU0VfV0VMQ09NRV9VUkx9L2BdKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IsIHRydWUpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYDtcblxuICAvKipcbiAgICogdXJsIGV4cGxhbmF0aW9uOlxuICAgKiB1c2VySW5kZXg6IC0xIGZvciBhbGwgYWNjb3VudCBvd25lcnNcbiAgICogY2FyZEluZGV4OiAtMSBmb3IgYWxsIGNhcmRzIHVuZGVyIHRoZSBhY2NvdW50XG4gICAqIGFsbCBvdGhlciBxdWVyeSBwYXJhbXMgYXJlIHN0YXRpYywgYmVzaWRlIHRoZSBkYXRlIHdoaWNoIGNoYW5nZXMgZm9yIHJlcXVlc3QgcGVyIG1vbnRoXG4gICAqL1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvcmVnaXN0ZXJlZC90cmFuc2FjdGlvbkRldGFpbHMvZ2V0VHJhbnNhY3Rpb25zQW5kR3JhcGhzYCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFxuICAgICdmaWx0ZXJEYXRhJyxcbiAgICBge1widXNlckluZGV4XCI6LTEsXCJjYXJkSW5kZXhcIjotMSxcIm1vbnRoVmlld1wiOnRydWUsXCJkYXRlXCI6XCIke2RhdGV9XCIsXCJkYXRlc1wiOntcInN0YXJ0RGF0ZVwiOlwiMFwiLFwiZW5kRGF0ZVwiOlwiMFwifSxcImJhbmtBY2NvdW50XCI6e1wiYmFua0FjY291bnRJbmRleFwiOi0xLFwiY2FyZHNcIjpudWxsfX1gLFxuICApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZmlyc3RDYWxsQ2FyZEluZGV4JywgJy0xJyk7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuaW50ZXJmYWNlIEZldGNoQ2F0ZWdvcnlSZXN1bHQge1xuICByZXN1bHQ/OiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQ2F0ZWdvcmllcyhwYWdlOiBQYWdlKSB7XG4gIGRlYnVnKCdMb2FkaW5nIGNhdGVnb3JpZXMnKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoQ2F0ZWdvcnlSZXN1bHQ+KHBhZ2UsIGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvY29udGVudHMvZ2V0Q2F0ZWdvcmllc2ApO1xuICBpZiAocmVzICYmIEFycmF5LmlzQXJyYXkocmVzLnJlc3VsdCkpIHtcbiAgICBkZWJ1ZyhgJHtyZXMucmVzdWx0Lmxlbmd0aH0gY2F0ZWdvcmllcyBsb2FkZWRgKTtcbiAgICByZXMucmVzdWx0Py5mb3JFYWNoKCh7IGlkLCBuYW1lIH0pID0+IGNhdGVnb3JpZXMuc2V0KGlkLCBuYW1lKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHBsYW5OYW1lOiBzdHJpbmcsIHBsYW5UeXBlSWQ6IG51bWJlcikge1xuICBjb25zdCBjbGVhbmVkVXBUeG5UeXBlU3RyID0gcGxhbk5hbWUucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCkgYXMgTWF4UGxhbk5hbWU7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW1tZWRpYXRlQ2hhcmdlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTm9ybWFsOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk9uZU1vbnRoUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBheW1lbnQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVGhpcnR5RGF5c1BsdXM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQyOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQWNjdW11bGF0aW5nQmFza2V0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW50ZXJuZXRTaG9wcGluZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3Q6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Qb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlJlcGxhY2VtZW50Q2FyZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkVhcmx5UmVwYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNhcmRGZWU6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DdXJyZW5jeVBvY2tldDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdE91dHNpZGVUaGVMaW1pdDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICBkZWZhdWx0OlxuICAgICAgc3dpdGNoIChwbGFuVHlwZUlkKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHIgYXMgc3RyaW5nfWApO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8oY29tbWVudHM6IHN0cmluZykge1xuICBpZiAoIWNvbW1lbnRzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gY29tbWVudHMubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDaGFyZ2VkQ3VycmVuY3koY3VycmVuY3lJZDogbnVtYmVyIHwgbnVsbCkge1xuICBzd2l0Y2ggKGN1cnJlbmN5SWQpIHtcbiAgICBjYXNlIDM3NjpcbiAgICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gICAgY2FzZSA4NDA6XG4gICAgICByZXR1cm4gRE9MTEFSX0NVUlJFTkNZO1xuICAgIGNhc2UgOTc4OlxuICAgICAgcmV0dXJuIEVVUk9fQ1VSUkVOQ1k7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbW8oe1xuICBjb21tZW50cyxcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcixcbiAgZnVuZHNUcmFuc2ZlckNvbW1lbnQsXG59OiBQaWNrPFNjcmFwZWRUcmFuc2FjdGlvbiwgJ2NvbW1lbnRzJyB8ICdmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyJyB8ICdmdW5kc1RyYW5zZmVyQ29tbWVudCc+KSB7XG4gIGlmIChmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyKSB7XG4gICAgY29uc3QgbWVtbyA9IGNvbW1lbnRzID8gYCR7Y29tbWVudHN9ICR7ZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcn1gIDogZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcjtcbiAgICByZXR1cm4gZnVuZHNUcmFuc2ZlckNvbW1lbnQgPyBgJHttZW1vfTogJHtmdW5kc1RyYW5zZmVyQ29tbWVudH1gIDogbWVtbztcbiAgfVxuXG4gIHJldHVybiBjb21tZW50cztcbn1cblxuZnVuY3Rpb24gbWFwVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgaXNQZW5kaW5nID0gcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUgPT09IG51bGw7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGUgPSBtb21lbnQoaXNQZW5kaW5nID8gcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDogcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHN0YXR1cyA9IGlzUGVuZGluZyA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkO1xuXG4gIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldEluc3RhbGxtZW50c0luZm8ocmF3VHJhbnNhY3Rpb24uY29tbWVudHMpO1xuICBjb25zdCBpZGVudGlmaWVyID0gaW5zdGFsbG1lbnRzXG4gICAgPyBgJHtyYXdUcmFuc2FjdGlvbi5kZWFsRGF0YT8uYXJufV8ke2luc3RhbGxtZW50cy5udW1iZXJ9YFxuICAgIDogcmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybjtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZShyYXdUcmFuc2FjdGlvbi5wbGFuTmFtZSwgcmF3VHJhbnNhY3Rpb24ucGxhblR5cGVJZCksXG4gICAgZGF0ZTogbW9tZW50KHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICBwcm9jZXNzZWREYXRlLFxuICAgIG9yaWdpbmFsQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxBbW91bnQsXG4gICAgb3JpZ2luYWxDdXJyZW5jeTogcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxDdXJyZW5jeSxcbiAgICBjaGFyZ2VkQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24uYWN0dWFsUGF5bWVudEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6IGdldENoYXJnZWRDdXJyZW5jeShyYXdUcmFuc2FjdGlvbi5wYXltZW50Q3VycmVuY3kpLFxuICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5tZXJjaGFudE5hbWUudHJpbSgpLFxuICAgIG1lbW86IGdldE1lbW8ocmF3VHJhbnNhY3Rpb24pLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yaWVzLmdldChyYXdUcmFuc2FjdGlvbj8uY2F0ZWdvcnlJZCksXG4gICAgaW5zdGFsbG1lbnRzLFxuICAgIGlkZW50aWZpZXIsXG4gICAgc3RhdHVzLFxuICB9O1xufVxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICByZXN1bHQ/OiB7XG4gICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aChwYWdlOiBQYWdlLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudCk7XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0PihwYWdlLCB1cmwpO1xuICBjb25zdCB0cmFuc2FjdGlvbnNCeUFjY291bnQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgaWYgKCFkYXRhIHx8ICFkYXRhLnJlc3VsdCkgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcblxuICBkYXRhLnJlc3VsdC50cmFuc2FjdGlvbnNcbiAgICAvLyBGaWx0ZXIgb3V0IG5vbi10cmFuc2FjdGlvbnMgd2l0aG91dCBhIHBsYW4gdHlwZSwgZS5nLiBzdW1tYXJ5IHJvd3NcbiAgICAuZmlsdGVyKHRyYW5zYWN0aW9uID0+ICEhdHJhbnNhY3Rpb24ucGxhbk5hbWUpXG4gICAgLmZvckVhY2goKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0pIHtcbiAgICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkVHJhbnNhY3Rpb24gPSBtYXBUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXS5wdXNoKG1hcHBlZFRyYW5zYWN0aW9uKTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBhZGRSZXN1bHQoYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4sIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4pIHtcbiAgY29uc3QgY2xvbmVkUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7IC4uLmFsbFJlc3VsdHMgfTtcbiAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGlmICghY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSkge1xuICAgICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IFtdO1xuICAgIH1cbiAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdLnB1c2goLi4ucmVzdWx0W2FjY291bnROdW1iZXJdKTtcbiAgfSk7XG4gIHJldHVybiBjbG9uZWRSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHJhbnNhY3Rpb25zKFxuICB0eG5zOiBUcmFuc2FjdGlvbltdLFxuICBzdGFydE1vbWVudDogbW9tZW50Lk1vbWVudCxcbiAgY29tYmluZUluc3RhbGxtZW50czogYm9vbGVhbixcbiAgZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlOiBib29sZWFuLFxuKSB7XG4gIGxldCBjbG9uZWRUeG5zID0gQXJyYXkuZnJvbSh0eG5zKTtcbiAgaWYgKCFjb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgY2xvbmVkVHhucyA9IGZpeEluc3RhbGxtZW50cyhjbG9uZWRUeG5zKTtcbiAgfVxuICBjbG9uZWRUeG5zID0gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZShjbG9uZWRUeG5zKTtcbiAgY2xvbmVkVHhucyA9IGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZVxuICAgID8gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGNsb25lZFR4bnMsIHN0YXJ0TW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKVxuICAgIDogY2xvbmVkVHhucztcbiAgcmV0dXJuIGNsb25lZFR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnRNb21lbnRMaW1pdCA9IG1vbWVudCgpLnN1YnRyYWN0KDQsICd5ZWFycycpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChzdGFydE1vbWVudExpbWl0LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuXG4gIGF3YWl0IGxvYWRDYXRlZ29yaWVzKHBhZ2UpO1xuXG4gIGxldCBhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE1vbnRocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZSwgYWxsTW9udGhzW2ldKTtcbiAgICBhbGxSZXN1bHRzID0gYWRkUmVzdWx0KGFsbFJlc3VsdHMsIHJlc3VsdCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhhbGxSZXN1bHRzKS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGxldCB0eG5zID0gYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXTtcbiAgICB0eG5zID0gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgICAgIHR4bnMsXG4gICAgICBzdGFydE1vbWVudCxcbiAgICAgIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSxcbiAgICAgIG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUsXG4gICAgKTtcbiAgICBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdID0gdHhucztcbiAgfSk7XG5cbiAgcmV0dXJuIGFsbFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1NVQ0NFU1NfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1BBU1NXT1JEX0VYUElSRURfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgICB9LFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3JdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlci1uYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1heFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2FwcC11c2VyLWxvZ2luLWZvcm0gLmdlbmVyYWwtYnV0dG9uLnNlbmQtbWUtY29kZScsXG4gICAgICBwcmVBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHRoaXMucGFnZSwgJyNjbG9zZVBvcHVwJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJyk7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJywgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJyk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQudGFiLXBhbmUuYWN0aXZlIGFwcC11c2VyLWxvZ2luLWZvcm0nLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnLnBlcnNvbmFsLWFyZWEgPiBhLmdvLXRvLXBlcnNvbmFsLWFyZWEnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgICB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhyZXN1bHRzKS5tYXAoYWNjb3VudE51bWJlciA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgICB0eG5zOiByZXN1bHRzW2FjY291bnROdW1iZXJdLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXhTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNB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
|
package/lib/scrapers/mizrahi.js
CHANGED
|
@@ -143,7 +143,7 @@ async function extractPendingTransactions(page) {
|
|
|
143
143
|
});
|
|
144
144
|
return pendingTxn.map(([dateStr, description, incomeAmountStr, amountStr]) => ({
|
|
145
145
|
date: (0, _moment.default)(dateStr, 'DD/MM/YY').toISOString(),
|
|
146
|
-
amount:
|
|
146
|
+
amount: parseFloat(amountStr.replaceAll(',', '')),
|
|
147
147
|
description,
|
|
148
148
|
incomeAmountStr // TODO: handle incomeAmountStr once we know the sign of it
|
|
149
149
|
})).filter(txn => txn.date).map(({
|
|
@@ -262,4 +262,4 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
var _default = exports.default = MizrahiScraper;
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInR4biIsInBvc3RMb2dpbiIsInJhY2UiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJ3YWl0Rm9yVXJsIiwiTWl6cmFoaVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJjaGVja1JlYWRpbmVzcyIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiJGV2YWwiLCJlbCIsImNsaWNrIiwibnVtT2ZBY2NvdW50cyIsInJlc3VsdHMiLCJpIiwicHVzaCIsImZldGNoQWNjb3VudCIsInN1Y2Nlc3MiLCJhY2NvdW50cyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJnZXRQZW5kaW5nVHJhbnNhY3Rpb25zIiwiZnJhbWUiLCJ3YWl0VW50aWxJZnJhbWVGb3VuZCIsImYiLCJ1cmwiLCJpbmNsdWRlcyIsImlzUGVuZGluZyIsInRoZW4iLCJjYXRjaCIsIndhaXRGb3JTZWxlY3RvciIsImFjY291bnROdW1iZXJFbGVtZW50IiwiYWNjb3VudE51bWJlckhhbmRsZSIsImdldFByb3BlcnR5IiwiYWNjb3VudE51bWJlciIsImpzb25WYWx1ZSIsIkVycm9yIiwiYW55Iiwid2FpdEZvclJlcXVlc3QiLCJoZWFkZXIiLCJtZXNzYWdlcyIsInRleHQiLCJyZWxldmFudFJvd3MiLCJyb3dzIiwiUmVjVHlwZVNwZWNpZmllZCIsIm9zaFR4biIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwicmVzb2x2ZSIsIm9wdEluRmVhdHVyZXMiLCJzaG91bGRNYXJrQXNQZW5kaW5nIiwiZm9yRWFjaCIsInN0YXJ0TW9tZW50Iiwib3NoVHhuQWZ0ZXJTdGFydERhdGUiLCJpc1NhbWVPckFmdGVyIiwiYWxsVHhuIiwiY29uY2F0IiwiYmFsYW5jZSIsIllpdHJhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21penJhaGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBGcmFtZSwgdHlwZSBIVFRQUmVxdWVzdCwgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHdhaXRVbnRpbElmcmFtZUZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yVXJsIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtaXpyYWhpJyk7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBSZWNUeXBlU3BlY2lmaWVkOiBib29sZWFuO1xuICBNQzAyUGV1bGFUYWFFWjogc3RyaW5nO1xuICBNQzAyU2NodW1FWjogbnVtYmVyO1xuICBNQzAyQXNtYWh0YU1la29yaXRFWjogc3RyaW5nO1xuICBNQzAyVG51YVRldXJFWjogc3RyaW5nO1xuICBJc1RvZGF5VHJhbnNhY3Rpb246IGJvb2xlYW47XG4gIE1DMDJFcmVoVGFhRVo6IHN0cmluZztcbiAgTUMwMlNob3dEZXRhaWxzRVo/OiBzdHJpbmc7XG4gIE1DMDJLb2RHb3JlbUVaOiBhbnk7XG4gIE1DMDJTdWdUbnVhS2FzcGl0RVo6IGFueTtcbiAgTUMwMkFnaWRFWjogYW55O1xuICBNQzAyU2VpZk1hcmFsRVo6IGFueTtcbiAgTUMwMk5vc2VNYXJhbEVaOiBhbnk7XG4gIFRyYW5zYWN0aW9uTnVtYmVyOiBhbnk7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0IHtcbiAgaGVhZGVyOiB7XG4gICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICBtZXNzYWdlczogeyB0ZXh0OiBzdHJpbmcgfVtdO1xuICB9O1xuICBib2R5OiB7XG4gICAgZmllbGRzOiB7XG4gICAgICBZaXRyYTogc3RyaW5nO1xuICAgIH07XG4gICAgdGFibGU6IHtcbiAgICAgIHJvd3M6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbnR5cGUgTW9yZURldGFpbHNSZXNwb25zZSA9IHtcbiAgYm9keToge1xuICAgIGZpZWxkczogW1xuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgUmVjb3JkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBGaWVsZHM6IEFycmF5PHtcbiAgICAgICAgICAgICAgICBMYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIFZhbHVlOiBzdHJpbmc7XG4gICAgICAgICAgICAgIH0+O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgXSxcbiAgICBdO1xuICB9O1xufTtcblxudHlwZSBNb3JlRGV0YWlscyA9IHtcbiAgZW50cmllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgbWVtbzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuY29uc3QgQkFTRV9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUJTSVRFX1VSTH0vbG9naW4vaW5kZXguaHRtbCMvYXV0aC1wYWdlLWhlYDtcbmNvbnN0IEJBU0VfQVBQX1VSTCA9ICdodHRwczovL210by5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgQUZURVJfTE9HSU5fQkFTRV9VUkwgPSAvaHR0cHM6XFwvXFwvbXRvXFwubWl6cmFoaS10ZWZhaG90XFwuY29cXC5pbFxcL09ubGluZUFwcFxcLy4qLztcbmNvbnN0IE9TSF9QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtTWFpbic7XG5jb25zdCBUUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9yb290LW1haW4tb3NoLXA0MjhOZXcnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMUyA9IFtcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmVQaWxvdC9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL1NreU9TSC9nZXQ0MjhJbmRleGAsXG5dO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9sZWdhY3ktT3NoLXA0MjAnO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FID0gJ3A0MjAuYXNweCc7XG5jb25zdCBNT1JFX0RFVEFJTFNfVVJMID0gYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL09TSC9nZXRNYWhlckJlcnVyaW1TTUZgO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX1VSTCA9IC9odHRwczpcXC9cXC93d3dcXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvbG9naW5cXC9pbmRleFxcLmh0bWwjXFwvY2hhbmdlLXBhc3MvO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBNQVhfUk9XU19QRVJfUkVRVUVTVCA9IDEwMDAwMDAwMDAwO1xuXG5jb25zdCB1c2VybmFtZVNlbGVjdG9yID0gJyN1c2VyTnVtYmVyRGVza3RvcEhlYic7XG5jb25zdCBwYXNzd29yZFNlbGVjdG9yID0gJyNwYXNzd29yZERlc2t0b3BIZWInO1xuY29uc3Qgc3VibWl0QnV0dG9uU2VsZWN0b3IgPSAnYnV0dG9uLmJ0bi5idG4tcHJpbWFyeSc7XG5jb25zdCBpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciA9ICdhW2hyZWYqPVwiaHR0cHM6Ly9zYy5taXpyYWhpLXRlZmFob3QuY28uaWwvU0NTZXJ2aWNlcy9TQy9QMDEwLmFzcHhcIl0nO1xuY29uc3QgYWZ0ZXJMb2dpblNlbGVjdG9yID0gJyNkcm9wZG93bkJhc2ljJztcbmNvbnN0IGxvZ2luU3Bpbm5lclNlbGVjdG9yID0gJ2Rpdi5uZ3gtb3ZlcmxheS5sb2FkaW5nLWZvcmVncm91bmQnO1xuY29uc3QgYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yID0gJyNBY2NvdW50UGlja2VyIC5pdGVtJztcbmNvbnN0IHBlbmRpbmdUcnhJZGVudGlmaWVySWQgPSAnI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjJfcGFuZWwxJztcbmNvbnN0IGNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUgPSAn16LXldeR16gg15XXqdeRJztcbmNvbnN0IGNoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lID0gJ0NoZWNraW5nIEFjY291bnQnO1xuY29uc3QgZ2VuZXJpY0Rlc2NyaXB0aW9ucyA9IFsn15TXoteR16jXqiDXmdeV157XnyDXnNeR16DXpyDXlteoINee16HXoNeZ16Mg15bXqCddO1xuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiB1c2VybmFtZVNlbGVjdG9yLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiBwYXNzd29yZFNlbGVjdG9yLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNMb2dnZWRJbihvcHRpb25zOiB7IHBhZ2U/OiBQYWdlIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFvcHRpb25zPy5wYWdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG9zaFhQYXRoID0gYC8vYS8vc3Bhbltjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZX1cIikgb3IgY29udGFpbnMoLiwgXCIke2NoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lfVwiKV1gO1xuICBjb25zdCBvc2hUYWIgPSBhd2FpdCBvcHRpb25zLnBhZ2UuJCQoYHhwYXRoJHtvc2hYUGF0aH1gKTtcbiAgcmV0dXJuIG9zaFRhYi5sZW5ndGggPiAwO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICByZXR1cm4ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtBRlRFUl9MT0dJTl9CQVNFX1VSTCwgaXNMb2dnZWRJbl0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKCkgPT4gISEoYXdhaXQgcGFnZS4kKGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSldLFxuICAgIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbQ0hBTkdFX1BBU1NXT1JEX1VSTF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnNTdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICByZXR1cm4gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHBhZ2U6IFBhZ2UsXG4gIGl0ZW06IFNjcmFwZWRUcmFuc2FjdGlvbixcbiAgYXBpSGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFByb21pc2U8TW9yZURldGFpbHM+IHtcbiAgdHJ5IHtcbiAgICBkZWJ1ZygnZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHMgZm9yIGl0ZW06JywgaXRlbSk7XG4gICAgaWYgKGl0ZW0uTUMwMlNob3dEZXRhaWxzRVogPT09ICcxJykge1xuICAgICAgY29uc3QgdGFyUGV1bGEgPSBtb21lbnQoaXRlbS5NQzAyUGV1bGFUYWFFWik7XG4gICAgICBjb25zdCB0YXJFcmVjaCA9IG1vbWVudChpdGVtLk1DMDJFcmVoVGFhRVopO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIGluS29kR29yZW06IGl0ZW0uTUMwMktvZEdvcmVtRVosXG4gICAgICAgIGluQXNtYWNodGE6IGl0ZW0uTUMwMkFzbWFodGFNZWtvcml0RVosXG4gICAgICAgIGluU2NodW06IGl0ZW0uTUMwMlNjaHVtRVosXG4gICAgICAgIGluTmFrdmFuaXQ6IGl0ZW0uTUMwMktvZEdvcmVtRVosXG4gICAgICAgIGluU3VnVG51YTogaXRlbS5NQzAyU3VnVG51YUthc3BpdEVaLFxuICAgICAgICBpbkFnaWQ6IGl0ZW0uTUMwMkFnaWRFWixcbiAgICAgICAgaW5UYXJQZXVsYUZvcm1hdHRlZDogdGFyUGV1bGEuZm9ybWF0KERBVEVfRk9STUFUKSxcbiAgICAgICAgaW5UYXJFcmVjaEZvcm1hdHRlZDogKHRhckVyZWNoLnllYXIoKSA+IDIwMDAgPyB0YXJFcmVjaCA6IHRhclBldWxhKS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpbktvZE5vc2U6IGl0ZW0uTUMwMlNlaWZNYXJhbEVaLFxuICAgICAgICBpbktvZFRhdE5vc2U6IGl0ZW0uTUMwMk5vc2VNYXJhbEVaLFxuICAgICAgICBpblRyYW5zYWN0aW9uTnVtYmVyOiBpdGVtLlRyYW5zYWN0aW9uTnVtYmVyLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPE1vcmVEZXRhaWxzUmVzcG9uc2U+KHBhZ2UsIE1PUkVfREVUQUlMU19VUkwsIHBhcmFtcywgYXBpSGVhZGVycyk7XG4gICAgICBjb25zdCBkZXRhaWxzID0gcmVzcG9uc2U/LmJvZHkuZmllbGRzPy5bMF0/LlswXT8uUmVjb3Jkcz8uWzBdLkZpZWxkcztcbiAgICAgIGRlYnVnKCdmZXRjaCBkZXRhaWxzIGZvcicsIHBhcmFtcywgJ2RldGFpbHM6JywgZGV0YWlscyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXRhaWxzKSAmJiBkZXRhaWxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGRldGFpbHMubWFwKHJlY29yZCA9PiBbcmVjb3JkLkxhYmVsLnRyaW0oKSwgcmVjb3JkLlZhbHVlLnRyaW0oKV0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudHJpZXM6IE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSxcbiAgICAgICAgICBtZW1vOiBlbnRyaWVzXG4gICAgICAgICAgICAuZmlsdGVyKChbbGFiZWxdKSA9PiBbJ9ep150nLCAn157XlNeV16onLCAn15fXqdeR15XXnyddLnNvbWUoa2V5ID0+IGxhYmVsLnN0YXJ0c1dpdGgoa2V5KSkpXG4gICAgICAgICAgICAubWFwKChbbGFiZWwsIHZhbHVlXSkgPT4gYCR7bGFiZWx9ICR7dmFsdWV9YClcbiAgICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBkZWJ1ZygnRXJyb3IgZmV0Y2hpbmcgZXh0cmEgdHJhbnNhY3Rpb24gZGV0YWlsczonLCBlcnJvcik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVudHJpZXM6IHt9LFxuICAgIG1lbW86IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGF0YUZyb21SZXF1ZXN0KHJlcXVlc3Q6IEhUVFBSZXF1ZXN0LCBvcHRpb25zU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QucG9zdERhdGEoKSB8fCAne30nKTtcblxuICBkYXRhLmluRnJvbURhdGUgPSBnZXRTdGFydE1vbWVudChvcHRpb25zU3RhcnREYXRlKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLmluVG9EYXRlID0gbW9tZW50KCkuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgZGF0YS50YWJsZS5tYXhSb3cgPSBNQVhfUk9XU19QRVJfUkVRVUVTVDtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0KHJlcXVlc3Q6IEhUVFBSZXF1ZXN0KSB7XG4gIHJldHVybiB7XG4gICAgbWl6cmFoaXhzcmZ0b2tlbjogcmVxdWVzdC5oZWFkZXJzKCkubWl6cmFoaXhzcmZ0b2tlbixcbiAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5oZWFkZXJzKClbJ2NvbnRlbnQtdHlwZSddLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSxcbiAgZ2V0TW9yZURldGFpbHM6IChyb3c6IFNjcmFwZWRUcmFuc2FjdGlvbikgPT4gUHJvbWlzZTxNb3JlRGV0YWlscz4sXG4gIHBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdHhucy5tYXAoYXN5bmMgcm93ID0+IHtcbiAgICAgIGNvbnN0IG1vcmVEZXRhaWxzID0gYXdhaXQgZ2V0TW9yZURldGFpbHMocm93KTtcblxuICAgICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudChyb3cuTUMwMlBldWxhVGFhRVosIG1vbWVudC5IVE1MNV9GTVQuREFURVRJTUVfTE9DQUxfU0VDT05EUykudG9JU09TdHJpbmcoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIGlkZW50aWZpZXI6IHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiA/IHBhcnNlSW50KHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgICBvcmlnaW5hbEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICAgIGNoYXJnZWRBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgZGVzY3JpcHRpb246IHJvdy5NQzAyVG51YVRldXJFWixcbiAgICAgICAgbWVtbzogbW9yZURldGFpbHM/Lm1lbW8sXG4gICAgICAgIHN0YXR1czpcbiAgICAgICAgICBwZW5kaW5nSWZUb2RheVRyYW5zYWN0aW9uICYmIHJvdy5Jc1RvZGF5VHJhbnNhY3Rpb25cbiAgICAgICAgICAgID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nXG4gICAgICAgICAgICA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFBlbmRpbmdUcmFuc2FjdGlvbnMocGFnZTogRnJhbWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICd0ci5yZ1JvdywgdHIucmdBbHRSb3cnLCBbXSwgdHJzID0+IHtcbiAgICByZXR1cm4gdHJzLm1hcCh0ciA9PiBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyksIHRkID0+IHRkLnRleHRDb250ZW50IHx8ICcnKSk7XG4gIH0pO1xuXG4gIHJldHVybiBwZW5kaW5nVHhuXG4gICAgLm1hcCgoW2RhdGVTdHIsIGRlc2NyaXB0aW9uLCBpbmNvbWVBbW91bnRTdHIsIGFtb3VudFN0cl0pID0+ICh7XG4gICAgICBkYXRlOiBtb21lbnQoZGF0ZVN0ciwgJ0REL01NL1lZJykudG9JU09TdHJpbmcoKSxcbiAgICAgIGFtb3VudDogcGFyc2VJbnQoYW1vdW50U3RyLCAxMCksXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGluY29tZUFtb3VudFN0ciwgLy8gVE9ETzogaGFuZGxlIGluY29tZUFtb3VudFN0ciBvbmNlIHdlIGtub3cgdGhlIHNpZ24gb2YgaXRcbiAgICB9KSlcbiAgICAuZmlsdGVyKHR4biA9PiB0eG4uZGF0ZSlcbiAgICAubWFwKCh7IGRhdGUsIGRlc2NyaXB0aW9uLCBhbW91bnQgfSkgPT4gKHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgZGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGRhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogYW1vdW50LFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyxcbiAgICB9KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBvc3RMb2dpbihwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGFmdGVyTG9naW5TZWxlY3RvciksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSxcbiAgICB3YWl0Rm9yVXJsKHBhZ2UsIENIQU5HRV9QQVNTV09SRF9VUkwpLFxuICBdKTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNaXpyYWhpU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcixcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHRoaXMucGFnZSwgbG9naW5TcGlubmVyU2VsZWN0b3IpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoJyNkcm9wZG93bkJhc2ljLCAuaXRlbScsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG5cbiAgICBjb25zdCBudW1PZkFjY291bnRzID0gKGF3YWl0IHRoaXMucGFnZS4kJChhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IpKS5sZW5ndGg7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtT2ZBY2NvdW50czsgaSArPSAxKSB7XG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgJHthY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3J9Om50aC1jaGlsZCgke2kgKyAxfSlgLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICByZXN1bHRzLnB1c2goYXdhaXQgdGhpcy5mZXRjaEFjY291bnQoKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGFjY291bnRzOiByZXN1bHRzLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IChlIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCB3YWl0VW50aWxJZnJhbWVGb3VuZCh0aGlzLnBhZ2UsIGYgPT4gZi51cmwoKS5pbmNsdWRlcyhQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUpKTtcbiAgICBjb25zdCBpc1BlbmRpbmcgPSBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsIHBlbmRpbmdUcnhJZGVudGlmaWVySWQpXG4gICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgICBpZiAoIWlzUGVuZGluZykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhmcmFtZSk7XG4gICAgcmV0dXJuIHBlbmRpbmdUeG47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQWNjb3VudCgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclNlbGVjdG9yKGBhW2hyZWYqPVwiJHtPU0hfUEFHRX1cIl1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgYGFbaHJlZio9XCIke1RSQU5TQUNUSU9OU19QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IGFjY291bnROdW1iZXJFbGVtZW50ID0gYXdhaXQgdGhpcy5wYWdlLiQoJyNkcm9wZG93bkJhc2ljIGIgc3BhbicpO1xuICAgIGNvbnN0IGFjY291bnROdW1iZXJIYW5kbGUgPSBhd2FpdCBhY2NvdW50TnVtYmVyRWxlbWVudD8uZ2V0UHJvcGVydHkoJ3RpdGxlJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlciA9IChhd2FpdCBhY2NvdW50TnVtYmVySGFuZGxlPy5qc29uVmFsdWUoKSkgYXMgc3RyaW5nO1xuICAgIGlmICghYWNjb3VudE51bWJlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY2NvdW50IG51bWJlciBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBbcmVzcG9uc2UsIGFwaUhlYWRlcnNdID0gYXdhaXQgUHJvbWlzZS5hbnkoXG4gICAgICBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTLm1hcChhc3luYyB1cmwgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5wYWdlLndhaXRGb3JSZXF1ZXN0KHVybCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdCwgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdCk7XG5cbiAgICAgICAgcmV0dXJuIFthd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQ+KHRoaXMucGFnZSwgdXJsLCBkYXRhLCBoZWFkZXJzKSwgaGVhZGVyc10gYXMgY29uc3Q7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5oZWFkZXIuc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uLiBSZXNwb25zZSBtZXNzYWdlOiAke3Jlc3BvbnNlID8gcmVzcG9uc2UuaGVhZGVyLm1lc3NhZ2VzWzBdLnRleHQgOiAnJ31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxldmFudFJvd3MgPSByZXNwb25zZS5ib2R5LnRhYmxlLnJvd3MuZmlsdGVyKHJvdyA9PiByb3cuUmVjVHlwZVNwZWNpZmllZCk7XG4gICAgY29uc3Qgb3NoVHhuID0gYXdhaXQgY29udmVydFRyYW5zYWN0aW9ucyhcbiAgICAgIHJlbGV2YW50Um93cyxcbiAgICAgIHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvblxuICAgICAgICA/IHJvdyA9PiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyh0aGlzLnBhZ2UsIHJvdywgYXBpSGVhZGVycylcbiAgICAgICAgOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyBlbnRyaWVzOiB7fSwgbWVtbzogdW5kZWZpbmVkIH0pLFxuICAgICAgdGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24nKSxcbiAgICApO1xuXG4gICAgb3NoVHhuXG4gICAgICAuZmlsdGVyKHR4biA9PiB0aGlzLnNob3VsZE1hcmtBc1BlbmRpbmcodHhuKSlcbiAgICAgIC5mb3JFYWNoKHR4biA9PiB7XG4gICAgICAgIHR4bi5zdGF0dXMgPSBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmc7XG4gICAgICB9KTtcblxuICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIHdoaWNoIHRoZSBiYW5rJ3MgQVBJIHJldHVybnMgdHJhbnNhY3Rpb25zIGJlZm9yZSB0aGUgcmVxdWVzdGVkIHN0YXJ0IGRhdGVcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IGdldFN0YXJ0TW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpO1xuICAgIGNvbnN0IG9zaFR4bkFmdGVyU3RhcnREYXRlID0gb3NoVHhuLmZpbHRlcih0eG4gPT4gbW9tZW50KHR4bi5kYXRlKS5pc1NhbWVPckFmdGVyKHN0YXJ0TW9tZW50KSk7XG5cbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgdGhpcy5nZXRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7XG4gICAgY29uc3QgYWxsVHhuID0gb3NoVHhuQWZ0ZXJTdGFydERhdGUuY29uY2F0KHBlbmRpbmdUeG4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBhbGxUeG4sXG4gICAgICBiYWxhbmNlOiArcmVzcG9uc2UuYm9keS5maWVsZHM/LllpdHJhLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE1hcmtBc1BlbmRpbmcodHhuOiBUcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmTm9JZGVudGlmaWVyJykgJiYgIXR4bi5pZGVudGlmaWVyKSB7XG4gICAgICBkZWJ1ZyhgTWFya2luZyB0cmFuc2FjdGlvbiAnJHt0eG4uZGVzY3JpcHRpb259JyBhcyBwZW5kaW5nIGR1ZSB0byBubyBpZGVudGlmaWVyLmApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbicpICYmXG4gICAgICBnZW5lcmljRGVzY3JpcHRpb25zLmluY2x1ZGVzKHR4bi5kZXNjcmlwdGlvbilcbiAgICApIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIGdlbmVyaWMgZGVzY3JpcHRpb24uYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWl6cmFoaVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFB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RUFBRXRCLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FDMUUsQ0FBQztJQUVEbUIsTUFBTSxDQUNIckgsTUFBTSxDQUFDZ0UsR0FBRyxJQUFJLElBQUksQ0FBQ3lELG1CQUFtQixDQUFDekQsR0FBRyxDQUFDLENBQUMsQ0FDNUMwRCxPQUFPLENBQUMxRCxHQUFHLElBQUk7TUFDZEEsR0FBRyxDQUFDbEIsTUFBTSxHQUFHRSxpQ0FBbUIsQ0FBQ0MsT0FBTztJQUMxQyxDQUFDLENBQUM7O0lBRUo7SUFDQSxNQUFNMEUsV0FBVyxHQUFHbkwsY0FBYyxDQUFDLElBQUksQ0FBQ1osT0FBTyxDQUFDaUIsU0FBUyxDQUFDO0lBQzFELE1BQU0rSyxvQkFBb0IsR0FBR1AsTUFBTSxDQUFDckgsTUFBTSxDQUFDZ0UsR0FBRyxJQUFJLElBQUFySCxlQUFNLEVBQUNxSCxHQUFHLENBQUMxQixJQUFJLENBQUMsQ0FBQ3VGLGFBQWEsQ0FBQ0YsV0FBVyxDQUFDLENBQUM7SUFFOUYsTUFBTXZFLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQ3lDLHNCQUFzQixDQUFDLENBQUM7SUFDdEQsTUFBTWlDLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNHLE1BQU0sQ0FBQzNFLFVBQVUsQ0FBQztJQUV0RCxPQUFPO01BQ0xzRCxhQUFhO01BQ2JwRixJQUFJLEVBQUV3RyxNQUFNO01BQ1pFLE9BQU8sRUFBRSxDQUFDbEosUUFBUSxDQUFDRyxJQUFJLENBQUNDLE1BQU0sRUFBRStJO0lBQ2xDLENBQUM7RUFDSDtFQUVRUixtQkFBbUJBLENBQUN6RCxHQUFnQixFQUFXO0lBQ3JELElBQUksSUFBSSxDQUFDcEksT0FBTyxDQUFDNEwsYUFBYSxFQUFFdEIsUUFBUSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQ2xDLEdBQUcsQ0FBQzVCLFVBQVUsRUFBRTtNQUM1RnpJLEtBQUssQ0FBQyx3QkFBd0JxSyxHQUFHLENBQUNwQixXQUFXLG9DQUFvQyxDQUFDO01BQ2xGLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFDRSxJQUFJLENBQUNoSCxPQUFPLENBQUM0TCxhQUFhLEVBQUV0QixRQUFRLENBQUMsd0NBQXdDLENBQUMsSUFDOUU5SyxtQkFBbUIsQ0FBQzhLLFFBQVEsQ0FBQ2xDLEdBQUcsQ0FBQ3BCLFdBQVcsQ0FBQyxFQUM3QztNQUNBakosS0FBSyxDQUFDLHdCQUF3QnFLLEdBQUcsQ0FBQ3BCLFdBQVcsMENBQTBDLENBQUM7TUFDeEYsT0FBTyxJQUFJO0lBQ2I7SUFFQSxPQUFPLEtBQUs7RUFDZDtBQUNGO0FBQUMsSUFBQXNGLFFBQUEsR0FBQUMsT0FBQSxDQUFBek8sT0FBQSxHQUVjMkssY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJyZXBsYWNlQWxsIiwidHhuIiwicG9zdExvZ2luIiwicmFjZSIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsIndhaXRGb3JVcmwiLCJNaXpyYWhpU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwid2FpdFVudGlsRWxlbWVudERpc2FwcGVhciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCIkZXZhbCIsImVsIiwiY2xpY2siLCJudW1PZkFjY291bnRzIiwicmVzdWx0cyIsImkiLCJwdXNoIiwiZmV0Y2hBY2NvdW50Iiwic3VjY2VzcyIsImFjY291bnRzIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJHZW5lcmljIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImdldFBlbmRpbmdUcmFuc2FjdGlvbnMiLCJmcmFtZSIsIndhaXRVbnRpbElmcmFtZUZvdW5kIiwiZiIsInVybCIsImluY2x1ZGVzIiwiaXNQZW5kaW5nIiwidGhlbiIsImNhdGNoIiwid2FpdEZvclNlbGVjdG9yIiwiYWNjb3VudE51bWJlckVsZW1lbnQiLCJhY2NvdW50TnVtYmVySGFuZGxlIiwiZ2V0UHJvcGVydHkiLCJhY2NvdW50TnVtYmVyIiwianNvblZhbHVlIiwiRXJyb3IiLCJhbnkiLCJ3YWl0Rm9yUmVxdWVzdCIsImhlYWRlciIsIm1lc3NhZ2VzIiwidGV4dCIsInJlbGV2YW50Um93cyIsInJvd3MiLCJSZWNUeXBlU3BlY2lmaWVkIiwib3NoVHhuIiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJyZXNvbHZlIiwib3B0SW5GZWF0dXJlcyIsInNob3VsZE1hcmtBc1BlbmRpbmciLCJmb3JFYWNoIiwic3RhcnRNb21lbnQiLCJvc2hUeG5BZnRlclN0YXJ0RGF0ZSIsImlzU2FtZU9yQWZ0ZXIiLCJhbGxUeG4iLCJjb25jYXQiLCJiYWxhbmNlIiwiWWl0cmEiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWl6cmFoaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEZyYW1lLCB0eXBlIEhUVFBSZXF1ZXN0LCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgcGFnZUV2YWxBbGwsXG4gIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsXG4gIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbiAgd2FpdFVudGlsSWZyYW1lRm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ21penJhaGknKTtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIFJlY1R5cGVTcGVjaWZpZWQ6IGJvb2xlYW47XG4gIE1DMDJQZXVsYVRhYUVaOiBzdHJpbmc7XG4gIE1DMDJTY2h1bUVaOiBudW1iZXI7XG4gIE1DMDJBc21haHRhTWVrb3JpdEVaOiBzdHJpbmc7XG4gIE1DMDJUbnVhVGV1ckVaOiBzdHJpbmc7XG4gIElzVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbjtcbiAgTUMwMkVyZWhUYWFFWjogc3RyaW5nO1xuICBNQzAyU2hvd0RldGFpbHNFWj86IHN0cmluZztcbiAgTUMwMktvZEdvcmVtRVo6IGFueTtcbiAgTUMwMlN1Z1RudWFLYXNwaXRFWjogYW55O1xuICBNQzAyQWdpZEVaOiBhbnk7XG4gIE1DMDJTZWlmTWFyYWxFWjogYW55O1xuICBNQzAyTm9zZU1hcmFsRVo6IGFueTtcbiAgVHJhbnNhY3Rpb25OdW1iZXI6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICBoZWFkZXI6IHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiB7IHRleHQ6IHN0cmluZyB9W107XG4gIH07XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFlpdHJhOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxudHlwZSBNb3JlRGV0YWlsc1Jlc3BvbnNlID0ge1xuICBib2R5OiB7XG4gICAgZmllbGRzOiBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZWNvcmRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZpZWxkczogQXJyYXk8e1xuICAgICAgICAgICAgICAgIExhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgfT47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG4gIH07XG59O1xuXG50eXBlIE1vcmVEZXRhaWxzID0ge1xuICBlbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBCQVNFX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3Lm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFQlNJVEVfVVJMfS9sb2dpbi9pbmRleC5odG1sIy9hdXRoLXBhZ2UtaGVgO1xuY29uc3QgQkFTRV9BUFBfVVJMID0gJ2h0dHBzOi8vbXRvLm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBBRlRFUl9MT0dJTl9CQVNFX1VSTCA9IC9odHRwczpcXC9cXC9tdG9cXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvT25saW5lQXBwXFwvLiovO1xuY29uc3QgT1NIX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1NYWluJztcbmNvbnN0IFRSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L3Jvb3QtbWFpbi1vc2gtcDQyOE5ldyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTID0gW1xuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZVBpbG90L2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbl07XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtcDQyMCc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUgPSAncDQyMC5hc3B4JztcbmNvbnN0IE1PUkVfREVUQUlMU19VUkwgPSBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvT1NIL2dldE1haGVyQmVydXJpbVNNRmA7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL2luZGV4XFwuaHRtbCNcXC9jaGFuZ2UtcGFzcy87XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE1BWF9ST1dTX1BFUl9SRVFVRVNUID0gMTAwMDAwMDAwMDA7XG5cbmNvbnN0IHVzZXJuYW1lU2VsZWN0b3IgPSAnI3VzZXJOdW1iZXJEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkRGVza3RvcEhlYic7XG5jb25zdCBzdWJtaXRCdXR0b25TZWxlY3RvciA9ICdidXR0b24uYnRuLmJ0bi1wcmltYXJ5JztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5jb25zdCBnZW5lcmljRGVzY3JpcHRpb25zID0gWyfXlNei15HXqNeqINeZ15XXntefINec15HXoNenINeW16gg157Xodeg15nXoyDXlteoJ107XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0xvZ2dlZEluKG9wdGlvbnM6IHsgcGFnZT86IFBhZ2UgfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkge1xuICBpZiAoIW9wdGlvbnM/LnBhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb3NoWFBhdGggPSBgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWA7XG4gIGNvbnN0IG9zaFRhYiA9IGF3YWl0IG9wdGlvbnMucGFnZS4kJChgeHBhdGgke29zaFhQYXRofWApO1xuICByZXR1cm4gb3NoVGFiLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBpc0xvZ2dlZEluXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcGFnZTogUGFnZSxcbiAgaXRlbTogU2NyYXBlZFRyYW5zYWN0aW9uLFxuICBhcGlIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUHJvbWlzZTxNb3JlRGV0YWlscz4ge1xuICB0cnkge1xuICAgIGRlYnVnKCdnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyBmb3IgaXRlbTonLCBpdGVtKTtcbiAgICBpZiAoaXRlbS5NQzAyU2hvd0RldGFpbHNFWiA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB0YXJQZXVsYSA9IG1vbWVudChpdGVtLk1DMDJQZXVsYVRhYUVaKTtcbiAgICAgIGNvbnN0IHRhckVyZWNoID0gbW9tZW50KGl0ZW0uTUMwMkVyZWhUYWFFWik7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgaW5Lb2RHb3JlbTogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5Bc21hY2h0YTogaXRlbS5NQzAyQXNtYWh0YU1la29yaXRFWixcbiAgICAgICAgaW5TY2h1bTogaXRlbS5NQzAyU2NodW1FWixcbiAgICAgICAgaW5OYWt2YW5pdDogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5TdWdUbnVhOiBpdGVtLk1DMDJTdWdUbnVhS2FzcGl0RVosXG4gICAgICAgIGluQWdpZDogaXRlbS5NQzAyQWdpZEVaLFxuICAgICAgICBpblRhclBldWxhRm9ybWF0dGVkOiB0YXJQZXVsYS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpblRhckVyZWNoRm9ybWF0dGVkOiAodGFyRXJlY2gueWVhcigpID4gMjAwMCA/IHRhckVyZWNoIDogdGFyUGV1bGEpLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluS29kTm9zZTogaXRlbS5NQzAyU2VpZk1hcmFsRVosXG4gICAgICAgIGluS29kVGF0Tm9zZTogaXRlbS5NQzAyTm9zZU1hcmFsRVosXG4gICAgICAgIGluVHJhbnNhY3Rpb25OdW1iZXI6IGl0ZW0uVHJhbnNhY3Rpb25OdW1iZXIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8TW9yZURldGFpbHNSZXNwb25zZT4ocGFnZSwgTU9SRV9ERVRBSUxTX1VSTCwgcGFyYW1zLCBhcGlIZWFkZXJzKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSByZXNwb25zZT8uYm9keS5maWVsZHM/LlswXT8uWzBdPy5SZWNvcmRzPy5bMF0uRmllbGRzO1xuICAgICAgZGVidWcoJ2ZldGNoIGRldGFpbHMgZm9yJywgcGFyYW1zLCAnZGV0YWlsczonLCBkZXRhaWxzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbHMpICYmIGRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGV0YWlscy5tYXAocmVjb3JkID0+IFtyZWNvcmQuTGFiZWwudHJpbSgpLCByZWNvcmQuVmFsdWUudHJpbSgpXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50cmllczogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIG1lbW86IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKFtsYWJlbF0pID0+IFsn16nXnScsICfXnteU15XXqicsICfXl9ep15HXldefJ10uc29tZShrZXkgPT4gbGFiZWwuc3RhcnRzV2l0aChrZXkpKSlcbiAgICAgICAgICAgIC5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiBgJHtsYWJlbH0gJHt2YWx1ZX1gKVxuICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBleHRyYSB0cmFuc2FjdGlvbiBkZXRhaWxzOicsIGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50cmllczoge30sXG4gICAgbWVtbzogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QpIHtcbiAgcmV0dXJuIHtcbiAgICBtaXpyYWhpeHNyZnRva2VuOiByZXF1ZXN0LmhlYWRlcnMoKS5taXpyYWhpeHNyZnRva2VuLFxuICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmhlYWRlcnMoKVsnY29udGVudC10eXBlJ10sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gIHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLFxuICBnZXRNb3JlRGV0YWlsczogKHJvdzogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiBQcm9taXNlPE1vcmVEZXRhaWxzPixcbiAgcGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICB0eG5zLm1hcChhc3luYyByb3cgPT4ge1xuICAgICAgY29uc3QgbW9yZURldGFpbHMgPSBhd2FpdCBnZXRNb3JlRGV0YWlscyhyb3cpO1xuXG4gICAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHJvdy5NQzAyUGV1bGFUYWFFWiwgbW9tZW50LkhUTUw1X0ZNVC5EQVRFVElNRV9MT0NBTF9TRUNPTkRTKS50b0lTT1N0cmluZygpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgICAgaWRlbnRpZmllcjogcm93Lk1DMDJBc21haHRhTWVrb3JpdEVaID8gcGFyc2VJbnQocm93Lk1DMDJBc21haHRhTWVrb3JpdEVaLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGU6IHR4bkRhdGUsXG4gICAgICAgIHByb2Nlc3NlZERhdGU6IHR4bkRhdGUsXG4gICAgICAgIG9yaWdpbmFsQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgICAgY2hhcmdlZEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBkZXNjcmlwdGlvbjogcm93Lk1DMDJUbnVhVGV1ckVaLFxuICAgICAgICBtZW1vOiBtb3JlRGV0YWlscz8ubWVtbyxcbiAgICAgICAgc3RhdHVzOlxuICAgICAgICAgIHBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24gJiYgcm93LklzVG9kYXlUcmFuc2FjdGlvblxuICAgICAgICAgICAgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmdcbiAgICAgICAgICAgIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93LCB0ci5yZ0FsdFJvdycsIFtdLCB0cnMgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKHRyID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgdGQgPT4gdGQudGV4dENvbnRlbnQgfHwgJycpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBlbmRpbmdUeG5cbiAgICAubWFwKChbZGF0ZVN0ciwgZGVzY3JpcHRpb24sIGluY29tZUFtb3VudFN0ciwgYW1vdW50U3RyXSkgPT4gKHtcbiAgICAgIGRhdGU6IG1vbWVudChkYXRlU3RyLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpLFxuICAgICAgYW1vdW50OiBwYXJzZUZsb2F0KGFtb3VudFN0ci5yZXBsYWNlQWxsKCcsJywgJycpKSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgaW5jb21lQW1vdW50U3RyLCAvLyBUT0RPOiBoYW5kbGUgaW5jb21lQW1vdW50U3RyIG9uY2Ugd2Uga25vdyB0aGUgc2lnbiBvZiBpdFxuICAgIH0pKVxuICAgIC5maWx0ZXIodHhuID0+IHR4bi5kYXRlKVxuICAgIC5tYXAoKHsgZGF0ZSwgZGVzY3JpcHRpb24sIGFtb3VudCB9KSA9PiAoe1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGAke2FjY291bnREcm9wRG93bkl0ZW1TZWxlY3Rvcn06bnRoLWNoaWxkKCR7aSArIDF9KWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaChhd2FpdCB0aGlzLmZldGNoQWNjb3VudCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgZiA9PiBmLnVybCgpLmluY2x1ZGVzKFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSkpO1xuICAgIGNvbnN0IGlzUGVuZGluZyA9IGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgcGVuZGluZ1RyeElkZW50aWZpZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIGlmICghaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKGZyYW1lKTtcbiAgICByZXR1cm4gcGVuZGluZ1R4bjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yU2VsZWN0b3IoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgYWNjb3VudE51bWJlckVsZW1lbnQgPSBhd2FpdCB0aGlzLnBhZ2UuJCgnI2Ryb3Bkb3duQmFzaWMgYiBzcGFuJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlckhhbmRsZSA9IGF3YWl0IGFjY291bnROdW1iZXJFbGVtZW50Py5nZXRQcm9wZXJ0eSgndGl0bGUnKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gKGF3YWl0IGFjY291bnROdW1iZXJIYW5kbGU/Lmpzb25WYWx1ZSgpKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjY291bnQgbnVtYmVyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNwb25zZSwgYXBpSGVhZGVyc10gPSBhd2FpdCBQcm9taXNlLmFueShcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMubWFwKGFzeW5jIHVybCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclJlcXVlc3QodXJsKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICByZXR1cm4gW2F3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4odGhpcy5wYWdlLCB1cmwsIGRhdGEsIGhlYWRlcnMpLCBoZWFkZXJzXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24uIFJlc3BvbnNlIG1lc3NhZ2U6ICR7cmVzcG9uc2UgPyByZXNwb25zZS5oZWFkZXIubWVzc2FnZXNbMF0udGV4dCA6ICcnfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGV2YW50Um93cyA9IHJlc3BvbnNlLmJvZHkudGFibGUucm93cy5maWx0ZXIocm93ID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBhd2FpdCBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgICAgcmVsZXZhbnRSb3dzLFxuICAgICAgdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgICAgID8gcm93ID0+IGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKHRoaXMucGFnZSwgcm93LCBhcGlIZWFkZXJzKVxuICAgICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSh7IGVudHJpZXM6IHt9LCBtZW1vOiB1bmRlZmluZWQgfSksXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbicpLFxuICAgICk7XG5cbiAgICBvc2hUeG5cbiAgICAgIC5maWx0ZXIodHhuID0+IHRoaXMuc2hvdWxkTWFya0FzUGVuZGluZyh0eG4pKVxuICAgICAgLmZvckVhY2godHhuID0+IHtcbiAgICAgICAgdHhuLnN0YXR1cyA9IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZztcbiAgICAgIH0pO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgYSBidWcgd2hpY2ggdGhlIGJhbmsncyBBUEkgcmV0dXJucyB0cmFuc2FjdGlvbnMgYmVmb3JlIHRoZSByZXF1ZXN0ZWQgc3RhcnQgZGF0ZVxuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gZ2V0U3RhcnRNb21lbnQodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgY29uc3Qgb3NoVHhuQWZ0ZXJTdGFydERhdGUgPSBvc2hUeG4uZmlsdGVyKHR4biA9PiBtb21lbnQodHhuLmRhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnRNb21lbnQpKTtcblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCB0aGlzLmdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTtcbiAgICBjb25zdCBhbGxUeG4gPSBvc2hUeG5BZnRlclN0YXJ0RGF0ZS5jb25jYXQocGVuZGluZ1R4bik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGFsbFR4bixcbiAgICAgIGJhbGFuY2U6ICtyZXNwb25zZS5ib2R5LmZpZWxkcz8uWWl0cmEsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTWFya0FzUGVuZGluZyh0eG46IFRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcHRJbkZlYXR1cmVzPy5pbmNsdWRlcygnbWl6cmFoaTpwZW5kaW5nSWZOb0lkZW50aWZpZXInKSAmJiAhdHhuLmlkZW50aWZpZXIpIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIG5vIGlkZW50aWZpZXIuYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmSGFzR2VuZXJpY0Rlc2NyaXB0aW9uJykgJiZcbiAgICAgIGdlbmVyaWNEZXNjcmlwdGlvbnMuaW5jbHVkZXModHhuLmRlc2NyaXB0aW9uKVxuICAgICkge1xuICAgICAgZGVidWcoYE1hcmtpbmcgdHJhbnNhY3Rpb24gJyR7dHhuLmRlc2NyaXB0aW9ufScgYXMgcGVuZGluZyBkdWUgdG8gZ2VuZXJpYyBkZXNjcmlwdGlvbi5gKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNaXpyYWhpU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "israeli-bank-scrapers-core",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Provide scrapers for all major Israeli banks and credit card companies",
|
|
6
6
|
"engines": {
|
|
@@ -75,7 +75,6 @@
|
|
|
75
75
|
"typescript": "^4.7.4"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"build-url": "^2.0.0",
|
|
79
78
|
"core-js": "^3.1.4",
|
|
80
79
|
"debug": "^4.3.2",
|
|
81
80
|
"lodash": "^4.17.10",
|