israeli-bank-scrapers 6.3.1 → 6.3.3
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/discount.js +22 -18
- 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';
|
|
|
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGhlbiIsImNhdGNoIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImlubmVyRGF0YSIsImlubmVyRXh0cmFIZWFkZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvZmV0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vZGVGZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmNvbnN0IEpTT05fQ09OVEVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuXG5mdW5jdGlvbiBnZXRKc29uSGVhZGVycygpIHtcbiAgcmV0dXJuIHtcbiAgICBBY2NlcHQ6IEpTT05fQ09OVEVOVF9UWVBFLFxuICAgICdDb250ZW50LVR5cGUnOiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoR2V0PFRSZXN1bHQ+KHVybDogc3RyaW5nLCBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgbGV0IGhlYWRlcnMgPSBnZXRKc29uSGVhZGVycygpO1xuICBpZiAoZXh0cmFIZWFkZXJzKSB7XG4gICAgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oaGVhZGVycywgZXh0cmFIZWFkZXJzKTtcbiAgfVxuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVycyxcbiAgfTtcbiAgY29uc3QgZmV0Y2hSZXN1bHQgPSBhd2FpdCBub2RlRmV0Y2godXJsLCByZXF1ZXN0KTtcblxuICBpZiAoZmV0Y2hSZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSBpbnN0aXR1dGUgc2VydmVyIHJldHVybmVkIHdpdGggc3RhdHVzIGNvZGUgJHtmZXRjaFJlc3VsdC5zdGF0dXN9YCk7XG4gIH1cblxuICByZXR1cm4gZmV0Y2hSZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3N0KHVybDogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSkge1xuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IHsgLi4uZ2V0SnNvbkhlYWRlcnMoKSwgLi4uZXh0cmFIZWFkZXJzIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gIH07XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuICByZXR1cm4gcmVzdWx0Lmpzb24oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoR3JhcGhxbDxUUmVzdWx0PihcbiAgdXJsOiBzdHJpbmcsXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbiAgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4pOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0KHVybCwgeyBvcGVyYXRpb25OYW1lOiBudWxsLCBxdWVyeSwgdmFyaWFibGVzIH0sIGV4dHJhSGVhZGVycyk7XG4gIGlmIChyZXN1bHQuZXJyb3JzPy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yc1swXS5tZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmRhdGEgYXMgUHJvbWlzZTxUUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoR2V0V2l0aGluUGFnZTxUUmVzdWx0PihwYWdlOiBQYWdlLCB1cmw6IHN0cmluZyk6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgcmV0dXJuIHBhZ2UuZXZhbHVhdGUoaW5uZXJVcmwgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZmV0Y2goaW5uZXJVcmwsIHtcbiAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuanNvbigpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9LCB1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hQb3N0V2l0aGluUGFnZTxUUmVzdWx0PihcbiAgcGFnZTogUGFnZSxcbiAgdXJsOiBzdHJpbmcsXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuKTogUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4ge1xuICByZXR1cm4gcGFnZS5ldmFsdWF0ZShcbiAgICAoaW5uZXJVcmw6IHN0cmluZywgaW5uZXJEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbm5lckV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFRSZXN1bHQgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGZldGNoKGlubmVyVXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaW5uZXJEYXRhKSxcbiAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItb2JqZWN0LXNwcmVhZFxuICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04JyB9LFxuICAgICAgICAgICAgaW5uZXJFeHRyYUhlYWRlcnMsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcbiAgICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAgICAgICAvLyBObyBjb250ZW50IHJlc3BvbnNlXG4gICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB1cmwsXG4gICAgZGF0YSxcbiAgICBleHRyYUhlYWRlcnMsXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBbUMsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHbkMsTUFBTUcsaUJBQWlCLEdBQUcsa0JBQWtCO0FBRTVDLFNBQVNDLGNBQWNBLENBQUEsRUFBRztFQUN4QixPQUFPO0lBQ0xDLE1BQU0sRUFBRUYsaUJBQWlCO0lBQ3pCLGNBQWMsRUFBRUE7RUFDbEIsQ0FBQztBQUNIO0FBRU8sZUFBZUcsUUFBUUEsQ0FBVUMsR0FBVyxFQUFFQyxZQUFpQyxFQUFvQjtFQUN4RyxJQUFJQyxPQUFPLEdBQUdMLGNBQWMsQ0FBQyxDQUFDO0VBQzlCLElBQUlJLFlBQVksRUFBRTtJQUNoQkMsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0YsT0FBTyxFQUFFRCxZQUFZLENBQUM7RUFDaEQ7RUFDQSxNQUFNSSxPQUFPLEdBQUc7SUFDZEMsTUFBTSxFQUFFLEtBQUs7SUFDYko7RUFDRixDQUFDO0VBQ0QsTUFBTUssV0FBVyxHQUFHLE1BQU0sSUFBQUMsa0JBQVMsRUFBQ1IsR0FBRyxFQUFFSyxPQUFPLENBQUM7RUFFakQsSUFBSUUsV0FBVyxDQUFDRSxNQUFNLEtBQUssR0FBRyxFQUFFO0lBQzlCLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHVFQUF1RUgsV0FBVyxDQUFDRSxNQUFNLEVBQUUsQ0FBQztFQUM5RztFQUVBLE9BQU9GLFdBQVcsQ0FBQ0ksSUFBSSxDQUFDLENBQUM7QUFDM0I7QUFFTyxlQUFlQyxTQUFTQSxDQUFDWixHQUFXLEVBQUVhLElBQXlCLEVBQUVaLFlBQWlDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDOUcsTUFBTUksT0FBTyxHQUFHO0lBQ2RDLE1BQU0sRUFBRSxNQUFNO0lBQ2RKLE9BQU8sRUFBRTtNQUFFLEdBQUdMLGNBQWMsQ0FBQyxDQUFDO01BQUUsR0FBR0k7SUFBYSxDQUFDO0lBQ2pEYSxJQUFJLEVBQUVDLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxJQUFJO0VBQzNCLENBQUM7RUFDRCxNQUFNSSxNQUFNLEdBQUcsTUFBTSxJQUFBVCxrQkFBUyxFQUFDUixHQUFHLEVBQUVLLE9BQU8sQ0FBQztFQUM1QyxPQUFPWSxNQUFNLENBQUNOLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0FBRU8sZUFBZU8sWUFBWUEsQ0FDaENsQixHQUFXLEVBQ1htQixLQUFhLEVBQ2JDLFNBQWtDLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZDbkIsWUFBaUMsR0FBRyxDQUFDLENBQUMsRUFDcEI7RUFDbEIsTUFBTWdCLE1BQU0sR0FBRyxNQUFNTCxTQUFTLENBQUNaLEdBQUcsRUFBRTtJQUFFcUIsYUFBYSxFQUFFLElBQUk7SUFBRUYsS0FBSztJQUFFQztFQUFVLENBQUMsRUFBRW5CLFlBQVksQ0FBQztFQUM1RixJQUFJZ0IsTUFBTSxDQUFDSyxNQUFNLEVBQUVDLE1BQU0sRUFBRTtJQUN6QixNQUFNLElBQUliLEtBQUssQ0FBQ08sTUFBTSxDQUFDSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNFLE9BQU8sQ0FBQztFQUMzQztFQUNBLE9BQU9QLE1BQU0sQ0FBQ0osSUFBSTtBQUNwQjtBQUVPLFNBQVNZLGtCQUFrQkEsQ0FBVUMsSUFBVSxFQUFFMUIsR0FBVyxFQUEyQjtFQUM1RixPQUFPMEIsSUFBSSxDQUFDQyxRQUFRLENBQUNDLFFBQVEsSUFBSTtJQUMvQixPQUFPLElBQUlDLE9BQU8sQ0FBaUIsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7TUFDdERDLEtBQUssQ0FBQ0osUUFBUSxFQUFFO1FBQ2RLLFdBQVcsRUFBRTtNQUNmLENBQUMsQ0FBQyxDQUNDQyxJQUFJLENBQUNqQixNQUFNLElBQUk7UUFDZCxJQUFJQSxNQUFNLENBQUNSLE1BQU0sS0FBSyxHQUFHLEVBQUU7VUFDekJxQixPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxNQUFNO1VBQ0xBLE9BQU8sQ0FBQ2IsTUFBTSxDQUFDTixJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCO01BQ0YsQ0FBQyxDQUFDLENBQ0R3QixLQUFLLENBQUMxQyxDQUFDLElBQUk7UUFDVnNDLE1BQU0sQ0FBQ3RDLENBQUMsQ0FBQztNQUNYLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRU8sR0FBRyxDQUFDO0FBQ1Q7QUFFTyxTQUFTb0MsbUJBQW1CQSxDQUNqQ1YsSUFBVSxFQUNWMUIsR0FBVyxFQUNYYSxJQUF5QixFQUN6QlosWUFBaUMsR0FBRyxDQUFDLENBQUMsRUFDYjtFQUN6QixPQUFPeUIsSUFBSSxDQUFDQyxRQUFRLENBQ2xCLENBQUNDLFFBQWdCLEVBQUVTLFNBQThCLEVBQUVDLGlCQUFzQyxLQUFLO0lBQzVGLE9BQU8sSUFBSVQsT0FBTyxDQUFpQixDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztNQUN0REMsS0FBSyxDQUFDSixRQUFRLEVBQUU7UUFDZHRCLE1BQU0sRUFBRSxNQUFNO1FBQ2RRLElBQUksRUFBRUMsSUFBSSxDQUFDQyxTQUFTLENBQUNxQixTQUFTLENBQUM7UUFDL0JKLFdBQVcsRUFBRSxTQUFTO1FBQ3RCO1FBQ0EvQixPQUFPLEVBQUVDLE1BQU0sQ0FBQ0MsTUFBTSxDQUNwQjtVQUFFLGNBQWMsRUFBRTtRQUFtRCxDQUFDLEVBQ3RFa0MsaUJBQ0Y7TUFDRixDQUFDLENBQUMsQ0FDQ0osSUFBSSxDQUFDakIsTUFBTSxJQUFJO1FBQ2QsSUFBSUEsTUFBTSxDQUFDUixNQUFNLEtBQUssR0FBRyxFQUFFO1VBQ3pCO1VBQ0FxQixPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxNQUFNO1VBQ0xBLE9BQU8sQ0FBQ2IsTUFBTSxDQUFDTixJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCO01BQ0YsQ0FBQyxDQUFDLENBQ0R3QixLQUFLLENBQUMxQyxDQUFDLElBQUk7UUFDVnNDLE1BQU0sQ0FBQ3RDLENBQUMsQ0FBQztNQUNYLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztFQUNKLENBQUMsRUFDRE8sR0FBRyxFQUNIYSxJQUFJLEVBQ0paLFlBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJpZ25vcmVFcnJvcnMiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwicmVzcG9uc2UiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGV4dCIsInN0YWNrIiwiU3RyaW5nIiwicGFyc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiaW5uZXJEYXRhIiwiaW5uZXJFeHRyYUhlYWRlcnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9mZXRjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9kZUZldGNoIGZyb20gJ25vZGUtZmV0Y2gnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcblxuY29uc3QgSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbic7XG5cbmZ1bmN0aW9uIGdldEpzb25IZWFkZXJzKCkge1xuICByZXR1cm4ge1xuICAgIEFjY2VwdDogSlNPTl9DT05URU5UX1RZUEUsXG4gICAgJ0NvbnRlbnQtVHlwZSc6IEpTT05fQ09OVEVOVF9UWVBFLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHZXQ8VFJlc3VsdD4odXJsOiBzdHJpbmcsIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBsZXQgaGVhZGVycyA9IGdldEpzb25IZWFkZXJzKCk7XG4gIGlmIChleHRyYUhlYWRlcnMpIHtcbiAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBleHRyYUhlYWRlcnMpO1xuICB9XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9O1xuICBjb25zdCBmZXRjaFJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuXG4gIGlmIChmZXRjaFJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIGluc3RpdHV0ZSBzZXJ2ZXIgcmV0dXJuZWQgd2l0aCBzdGF0dXMgY29kZSAke2ZldGNoUmVzdWx0LnN0YXR1c31gKTtcbiAgfVxuXG4gIHJldHVybiBmZXRjaFJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBvc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAuLi5nZXRKc29uSGVhZGVycygpLCAuLi5leHRyYUhlYWRlcnMgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG4gIHJldHVybiByZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHcmFwaHFsPFRSZXN1bHQ+KFxuICB1cmw6IHN0cmluZyxcbiAgcXVlcnk6IHN0cmluZyxcbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3QodXJsLCB7IG9wZXJhdGlvbk5hbWU6IG51bGwsIHF1ZXJ5LCB2YXJpYWJsZXMgfSwgZXh0cmFIZWFkZXJzKTtcbiAgaWYgKHJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3JzWzBdLm1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiByZXN1bHQuZGF0YSBhcyBQcm9taXNlPFRSZXN1bHQ+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHZXRXaXRoaW5QYWdlPFRSZXN1bHQ+KFxuICBwYWdlOiBQYWdlLFxuICB1cmw6IHN0cmluZyxcbiAgaWdub3JlRXJyb3JzID0gZmFsc2UsXG4pOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIGNvbnN0IFtyZXN1bHQsIHN0YXR1c10gPSBhd2FpdCBwYWdlLmV2YWx1YXRlKGFzeW5jIGlubmVyVXJsID0+IHtcbiAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKGlubmVyVXJsLCB7IGNyZWRlbnRpYWxzOiAnaW5jbHVkZScgfSk7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgcmV0dXJuIFtudWxsLCByZXNwb25zZS5zdGF0dXNdIGFzIGNvbnN0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIFthd2FpdCByZXNwb25zZS50ZXh0KCksIHJlc3BvbnNlLnN0YXR1c10gYXMgY29uc3Q7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgZmV0Y2hHZXRXaXRoaW5QYWdlIGVycm9yOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGAke2UubWVzc2FnZX1cXG4ke2Uuc3RhY2t9YCA6IFN0cmluZyhlKX0sIHVybDogJHtpbm5lclVybH0sIHN0YXR1czogJHtyZXNwb25zZT8uc3RhdHVzfWAsXG4gICAgICApO1xuICAgIH1cbiAgfSwgdXJsKTtcbiAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghaWdub3JlRXJyb3JzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgZmV0Y2hHZXRXaXRoaW5QYWdlIHBhcnNlIGVycm9yOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGAke2UubWVzc2FnZX1cXG4ke2Uuc3RhY2t9YCA6IFN0cmluZyhlKX0sIHVybDogJHt1cmx9LCByZXN1bHQ6ICR7cmVzdWx0fSwgc3RhdHVzOiAke3N0YXR1c31gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUG9zdFdpdGhpblBhZ2U8VFJlc3VsdD4oXG4gIHBhZ2U6IFBhZ2UsXG4gIHVybDogc3RyaW5nLFxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgaWdub3JlRXJyb3JzID0gZmFsc2UsXG4pOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUoXG4gICAgYXN5bmMgKGlubmVyVXJsOiBzdHJpbmcsIGlubmVyRGF0YTogUmVjb3JkPHN0cmluZywgYW55PiwgaW5uZXJFeHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaW5uZXJVcmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGlubmVyRGF0YSksXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItb2JqZWN0LXNwcmVhZFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnIH0sXG4gICAgICAgICAgaW5uZXJFeHRyYUhlYWRlcnMsXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCk7XG4gICAgfSxcbiAgICB1cmwsXG4gICAgZGF0YSxcbiAgICBleHRyYUhlYWRlcnMsXG4gICk7XG5cbiAgdHJ5IHtcbiAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHQpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghaWdub3JlRXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBmZXRjaFBvc3RXaXRoaW5QYWdlIHBhcnNlIGVycm9yOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGAke2UubWVzc2FnZX1cXG4ke2Uuc3RhY2t9YCA6IFN0cmluZyhlKX0sIHVybDogJHt1cmx9LCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfSwgZXh0cmFIZWFkZXJzOiAke0pTT04uc3RyaW5naWZ5KGV4dHJhSGVhZGVycyl9LCByZXN1bHQ6ICR7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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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsImJ1aWxkVXJsIiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJDYXJkSW5kZXgiLCJzaG92YXJSYXR6IiwiZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uIiwiZGF0YSIsInJhd0NhdGVnb3J5IiwiY2F0ZWdvcnkiLCJ0cmltIiwiZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyIsImFjY291bnRXaXRoSW5kZXgiLCJwcm9taXNlcyIsInQiLCJQcm9taXNlIiwiYWxsIiwiZ2V0RXh0cmFTY3JhcEFjY291bnQiLCJhY2NvdW50TWFwIiwiT2JqZWN0Iiwia2V5cyIsImEiLCJyZWR1Y2UiLCJtIiwieCIsImdldEV4dHJhU2NyYXAiLCJhY2NvdW50c1dpdGhJbmRleCIsImFsbE1vbnRocyIsImFjdGlvbnMiLCJpIiwicnVuU2VyaWFsIiwiZmV0Y2hBbGxUcmFuc2FjdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImdldEFsbE1vbnRoTW9tZW50cyIsInJlc3VsdHMiLCJmaW5hbFJlc3VsdCIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwiY29tYmluZWRUeG5zIiwidHhuc0ZvckFjY291bnQiLCJ0b0JlQWRkZWRUeG5zIiwic3VjY2VzcyIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsImNvbXBhbnlDb2RlIiwibG9naW4iLCJjcmVkZW50aWFscyIsInNldFJlcXVlc3RJbnRlcmNlcHRpb24iLCJvbiIsInJlcXVlc3QiLCJ1cmwiLCJhYm9ydCIsImludGVyY2VwdGlvblByaW9yaXRpZXMiLCJjb250aW51ZSIsIm1hc2tIZWFkbGVzc1VzZXJBZ2VudCIsIm5hdmlnYXRlVG8iLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkxvZ2dpbmdJbiIsInZhbGlkYXRlVXJsIiwidmFsaWRhdGVSZXF1ZXN0IiwiaWQiLCJjYXJkU3VmZml4IiwiY2FyZDZEaWdpdHMiLCJjb3VudHJ5Q29kZSIsImlkVHlwZSIsImNoZWNrTGV2ZWwiLCJ2YWxpZGF0ZVJlc3VsdCIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmFzZS1pc3JhY2FyZC1hbWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEFMVF9TSEVLRUxfQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyYXBlclByb2dyZXNzVHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBydW5TZXJpYWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbixcbiAgdHlwZSBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaW50ZXJjZXB0aW9uUHJpb3JpdGllcywgbWFza0hlYWRsZXNzVXNlckFnZW50IH0gZnJvbSAnLi4vaGVscGVycy9icm93c2VyJztcblxuY29uc3QgQ09VTlRSWV9DT0RFID0gJzIxMic7XG5jb25zdCBJRF9UWVBFID0gJzEnO1xuY29uc3QgSU5TVEFMTE1FTlRTX0tFWVdPUkQgPSAn16rXqdec15XXnSc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiYXNlLWlzcmFjYXJkLWFtZXgnKTtcblxudHlwZSBDb21wYW55U2VydmljZU9wdGlvbnMgPSB7XG4gIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG4gIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG59O1xuXG50eXBlIFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleCA9IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uc0FjY291bnQgJiB7IGluZGV4OiBudW1iZXIgfT47XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkZWFsU3VtVHlwZTogc3RyaW5nO1xuICB2b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6OiBzdHJpbmc7XG4gIG1vcmVJbmZvPzogc3RyaW5nO1xuICBkZWFsU3VtT3V0Ym91bmQ6IGJvb2xlYW47XG4gIGN1cnJlbmN5SWQ6IHN0cmluZztcbiAgY3VycmVudFBheW1lbnRDdXJyZW5jeTogc3RyaW5nO1xuICBkZWFsU3VtOiBudW1iZXI7XG4gIGZ1bGxQYXltZW50RGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kPzogc3RyaW5nO1xuICBmdWxsU3VwcGxpZXJOYW1lSGViOiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVPdXRib3VuZDogc3RyaW5nO1xuICBwYXltZW50U3VtOiBudW1iZXI7XG4gIHBheW1lbnRTdW1PdXRib3VuZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnQge1xuICBpbmRleDogbnVtYmVyO1xuICBhY2NvdW50TnVtYmVyOiBzdHJpbmc7XG4gIHByb2Nlc3NlZERhdGU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRMb2dpblZhbGlkYXRpb24ge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgVmFsaWRhdGVJZERhdGFCZWFuPzoge1xuICAgIHVzZXJOYW1lPzogc3RyaW5nO1xuICAgIHJldHVybkNvZGU6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50c1dpdGhpblBhZ2VSZXNwb25zZSB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBEYXNoYm9hcmRNb250aEJlYW4/OiB7XG4gICAgY2FyZHNDaGFyZ2VzOiB7XG4gICAgICBjYXJkSW5kZXg6IHN0cmluZztcbiAgICAgIGNhcmROdW1iZXI6IHN0cmluZztcbiAgICAgIGJpbGxpbmdEYXRlOiBzdHJpbmc7XG4gICAgfVtdO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zIHtcbiAgdHhuSXNyYWVsPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIHR4bkFicm9hZD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uRGF0YSB7XG4gIEhlYWRlcj86IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgUGlydGV5SXNrYV8yMDRCZWFuPzoge1xuICAgIHNlY3Rvcjogc3RyaW5nO1xuICB9O1xuXG4gIENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXTtcbiAgICB9XG4gID47XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgYmlsbGluZ0RhdGUgPSBtb250aE1vbWVudC5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdEYXNoYm9hcmRNb250aCcsXG4gICAgICBhY3Rpb25Db2RlOiAnMCcsXG4gICAgICBiaWxsaW5nRGF0ZSxcbiAgICAgIGZvcm1hdDogJ0pzb24nLFxuICAgIH0sXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50W10+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuKSB7XG4gICAgY29uc3QgeyBjYXJkc0NoYXJnZXMgfSA9IGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuO1xuICAgIGlmIChjYXJkc0NoYXJnZXMpIHtcbiAgICAgIHJldHVybiBjYXJkc0NoYXJnZXMubWFwKGNhcmRDaGFyZ2UgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGluZGV4OiBwYXJzZUludChjYXJkQ2hhcmdlLmNhcmRJbmRleCwgMTApLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmRDaGFyZ2UuY2FyZE51bWJlcixcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQoY2FyZENoYXJnZS5iaWxsaW5nRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBtb250aCA9IG1vbnRoTW9tZW50Lm1vbnRoKCkgKyAxO1xuICBjb25zdCB5ZWFyID0gbW9udGhNb21lbnQueWVhcigpO1xuICBjb25zdCBtb250aFN0ciA9IG1vbnRoIDwgMTAgPyBgMCR7bW9udGh9YCA6IG1vbnRoLnRvU3RyaW5nKCk7XG4gIHJldHVybiBidWlsZFVybChzZXJ2aWNlc1VybCwge1xuICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICByZXFOYW1lOiAnQ2FyZHNUcmFuc2FjdGlvbnNMaXN0JyxcbiAgICAgIG1vbnRoOiBtb250aFN0cixcbiAgICAgIHllYXI6IGAke3llYXJ9YCxcbiAgICAgIHJlcXVpcmVkRGF0ZTogJ04nLFxuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Q3VycmVuY3koY3VycmVuY3lTdHI6IHN0cmluZykge1xuICBpZiAoY3VycmVuY3lTdHIgPT09IFNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIHx8IGN1cnJlbmN5U3RyID09PSBBTFRfU0hFS0VMX0NVUlJFTkNZKSB7XG4gICAgcmV0dXJuIFNIRUtFTF9DVVJSRU5DWTtcbiAgfVxuICByZXR1cm4gY3VycmVuY3lTdHI7XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8odHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHhuLm1vcmVJbmZvIHx8ICF0eG4ubW9yZUluZm8uaW5jbHVkZXMoSU5TVEFMTE1FTlRTX0tFWVdPUkQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gdHhuLm1vcmVJbmZvLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIHJldHVybiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgPyBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyA6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLCBwcm9jZXNzZWREYXRlOiBzdHJpbmcpOiBUcmFuc2FjdGlvbltdIHtcbiAgY29uc3QgZmlsdGVyZWRUeG5zID0gdHhucy5maWx0ZXIoXG4gICAgdHhuID0+XG4gICAgICB0eG4uZGVhbFN1bVR5cGUgIT09ICcxJyAmJiB0eG4udm91Y2hlck51bWJlclJhdHogIT09ICcwMDAwMDAwMDAnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kICE9PSAnMDAwMDAwMDAwJyxcbiAgKTtcblxuICByZXR1cm4gZmlsdGVyZWRUeG5zLm1hcCh0eG4gPT4ge1xuICAgIGNvbnN0IGlzT3V0Ym91bmQgPSB0eG4uZGVhbFN1bU91dGJvdW5kO1xuICAgIGNvbnN0IHR4bkRhdGVTdHIgPSBpc091dGJvdW5kID8gdHhuLmZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZCA6IHR4bi5mdWxsUHVyY2hhc2VEYXRlO1xuICAgIGNvbnN0IHR4bk1vbWVudCA9IG1vbWVudCh0eG5EYXRlU3RyLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBjb25zdCBjdXJyZW50UHJvY2Vzc2VkRGF0ZSA9IHR4bi5mdWxsUGF5bWVudERhdGVcbiAgICAgID8gbW9tZW50KHR4bi5mdWxsUGF5bWVudERhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpXG4gICAgICA6IHByb2Nlc3NlZERhdGU7XG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZSh0eG4pLFxuICAgICAgaWRlbnRpZmllcjogcGFyc2VJbnQoaXNPdXRib3VuZCA/IHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kIDogdHhuLnZvdWNoZXJOdW1iZXJSYXR6LCAxMCksXG4gICAgICBkYXRlOiB0eG5Nb21lbnQudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGN1cnJlbnRQcm9jZXNzZWREYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmRlYWxTdW1PdXRib3VuZCA6IC10eG4uZGVhbFN1bSxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IGNvbnZlcnRDdXJyZW5jeSh0eG4uY3VycmVudFBheW1lbnRDdXJyZW5jeSA/PyB0eG4uY3VycmVuY3lJZCksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5wYXltZW50U3VtT3V0Ym91bmQgOiAtdHhuLnBheW1lbnRTdW0sXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6IGNvbnZlcnRDdXJyZW5jeSh0eG4uY3VycmVuY3lJZCksXG4gICAgICBkZXNjcmlwdGlvbjogaXNPdXRib3VuZCA/IHR4bi5mdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQgOiB0eG4uZnVsbFN1cHBsaWVyTmFtZUhlYixcbiAgICAgIG1lbW86IHR4bi5tb3JlSW5mbyB8fCAnJyxcbiAgICAgIGluc3RhbGxtZW50czogZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pIHx8IHVuZGVmaW5lZCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGNvbXBhbnlTZXJ2aWNlT3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBzdGFydE1vbWVudDogTW9tZW50LFxuICBtb250aE1vbWVudDogTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHBhZ2UsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKGNvbXBhbnlTZXJ2aWNlT3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhUmVzdWx0ID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5DYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuKSB7XG4gICAgY29uc3QgYWNjb3VudFR4bnM6IFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleCA9IHt9O1xuICAgIGFjY291bnRzLmZvckVhY2goYWNjb3VudCA9PiB7XG4gICAgICBjb25zdCB0eG5Hcm91cHM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdIHwgdW5kZWZpbmVkID0gXy5nZXQoXG4gICAgICAgIGRhdGFSZXN1bHQsXG4gICAgICAgIGBDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuLkluZGV4JHthY2NvdW50LmluZGV4fS5DdXJyZW50Q2FyZFRyYW5zYWN0aW9uc2AsXG4gICAgICApO1xuICAgICAgaWYgKHR4bkdyb3Vwcykge1xuICAgICAgICBsZXQgYWxsVHhuczogVHJhbnNhY3Rpb25bXSA9IFtdO1xuICAgICAgICB0eG5Hcm91cHMuZm9yRWFjaCh0eG5Hcm91cCA9PiB7XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bklzcmFlbCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuSXNyYWVsLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuQWJyb2FkKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5BYnJvYWQsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cykge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoYWxsVHhucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGFsbFR4bnMsIHN0YXJ0TW9tZW50LCBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGFjY291bnRUeG5zW2FjY291bnQuYWNjb3VudE51bWJlcl0gPSB7XG4gICAgICAgICAgYWNjb3VudE51bWJlcjogYWNjb3VudC5hY2NvdW50TnVtYmVyLFxuICAgICAgICAgIGluZGV4OiBhY2NvdW50LmluZGV4LFxuICAgICAgICAgIHR4bnM6IGFsbFR4bnMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY291bnRUeG5zO1xuICB9XG5cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkV4dHJhRGV0YWlscyhcbiAgc2VydmljZXNVcmw6IHN0cmluZyxcbiAgbW9udGg6IE1vbWVudCxcbiAgYWNjb3VudEluZGV4OiBudW1iZXIsXG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1vZWRDaGl1diA9IG1vbnRoLmZvcm1hdCgnTU1ZWVlZJyk7XG4gIHJldHVybiBidWlsZFVybChzZXJ2aWNlc1VybCwge1xuICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICByZXFOYW1lOiAnUGlydGV5SXNrYV8yMDQnLFxuICAgICAgQ2FyZEluZGV4OiBhY2NvdW50SW5kZXgudG9TdHJpbmcoKSxcbiAgICAgIHNob3ZhclJhdHo6IHRyYW5zYWN0aW9uLmlkZW50aWZpZXIhLnRvU3RyaW5nKCksXG4gICAgICBtb2VkQ2hpdXYsXG4gICAgfSxcbiAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24oXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IE1vbWVudCxcbiAgYWNjb3VudEluZGV4OiBudW1iZXIsXG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbik6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoLCBhY2NvdW50SW5kZXgsIHRyYW5zYWN0aW9uKTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcblxuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH1cblxuICBjb25zdCByYXdDYXRlZ29yeSA9IF8uZ2V0KGRhdGEsICdQaXJ0ZXlJc2thXzIwNEJlYW4uc2VjdG9yJykgPz8gJyc7XG4gIHJldHVybiB7XG4gICAgLi4udHJhbnNhY3Rpb24sXG4gICAgY2F0ZWdvcnk6IHJhd0NhdGVnb3J5LnRyaW0oKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhcbiAgYWNjb3VudFdpdGhJbmRleDogVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9LFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHByb21pc2VzID0gYWNjb3VudFdpdGhJbmRleC50eG5zLm1hcCh0ID0+XG4gICAgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uKHBhZ2UsIG9wdGlvbnMsIG1vbnRoLCBhY2NvdW50V2l0aEluZGV4LmluZGV4LCB0KSxcbiAgKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcEFjY291bnQoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWNjb3VudE1hcDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4LFxuICBtb250aDogbW9tZW50Lk1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYWNjb3VudE1hcCkubWFwKGFzeW5jIGEgPT4gKHtcbiAgICAuLi5hY2NvdW50TWFwW2FdLFxuICAgIHR4bnM6IGF3YWl0IGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbnMoYWNjb3VudE1hcFthXSwgcGFnZSwgb3B0aW9ucywgbW9udGgpLFxuICB9KSk7XG4gIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICByZXR1cm4gYWNjb3VudHMucmVkdWNlKChtLCB4KSA9PiAoeyAuLi5tLCBbeC5hY2NvdW50TnVtYmVyXTogeCB9KSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwKFxuICBhY2NvdW50c1dpdGhJbmRleDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWxsTW9udGhzOiBtb21lbnQuTW9tZW50W10sXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtdPiB7XG4gIGNvbnN0IGFjdGlvbnMgPSBhY2NvdW50c1dpdGhJbmRleC5tYXAoKGEsIGkpID0+ICgpID0+IGdldEV4dHJhU2NyYXBBY2NvdW50KHBhZ2UsIG9wdGlvbnMsIGEsIGFsbE1vbnRoc1tpXSkpO1xuICByZXR1cm4gcnVuU2VyaWFsKGFjdGlvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGNvbXBhbnlTZXJ2aWNlT3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBzdGFydE1vbWVudDogTW9tZW50LFxuKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcbiAgY29uc3QgcmVzdWx0czogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxNb250aHMubWFwKGFzeW5jIG1vbnRoTW9tZW50ID0+IHtcbiAgICAgIHJldHVybiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlLCBvcHRpb25zLCBjb21wYW55U2VydmljZU9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gICAgfSksXG4gICk7XG5cbiAgY29uc3QgZmluYWxSZXN1bHQgPSBvcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgPyBhd2FpdCBnZXRFeHRyYVNjcmFwKHJlc3VsdHMsIHBhZ2UsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgYWxsTW9udGhzKVxuICAgIDogcmVzdWx0cztcblxuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgZmluYWxSZXN1bHQuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICAgIGxldCB0eG5zRm9yQWNjb3VudCA9IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXTtcbiAgICAgIGlmICghdHhuc0ZvckFjY291bnQpIHtcbiAgICAgICAgdHhuc0ZvckFjY291bnQgPSBbXTtcbiAgICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdID0gdHhuc0ZvckFjY291bnQ7XG4gICAgICB9XG4gICAgICBjb25zdCB0b0JlQWRkZWRUeG5zID0gcmVzdWx0W2FjY291bnROdW1iZXJdLnR4bnM7XG4gICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0ucHVzaCguLi50b0JlQWRkZWRUeG5zKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhjb21iaW5lZFR4bnMpLm1hcChhY2NvdW50TnVtYmVyID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfTtcbmNsYXNzIElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLCBiYXNlVXJsOiBzdHJpbmcsIGNvbXBhbnlDb2RlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5jb21wYW55Q29kZSA9IGNvbXBhbnlDb2RlO1xuICAgIHRoaXMuc2VydmljZXNVcmwgPSBgJHtiYXNlVXJsfS9zZXJ2aWNlcy9Qcm94eVJlcXVlc3RIYW5kbGVyLmFzaHhgO1xuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0UmVxdWVzdEludGVyY2VwdGlvbih0cnVlKTtcbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3QnLCByZXF1ZXN0ID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0LnVybCgpLmluY2x1ZGVzKCdkZXRlY3Rvci1kb20ubWluLmpzJykpIHtcbiAgICAgICAgZGVidWcoJ2ZvcmNlIGFib3J0IGZvciByZXF1ZXN0IGRvIGRvd25sb2FkIGRldGVjdG9yLWRvbS5taW4uanMgcmVzb3VyY2UnKTtcbiAgICAgICAgdm9pZCByZXF1ZXN0LmFib3J0KHVuZGVmaW5lZCwgaW50ZXJjZXB0aW9uUHJpb3JpdGllcy5hYm9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHJlcXVlc3QuY29udGludWUodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmNvbnRpbnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IG1hc2tIZWFkbGVzc1VzZXJBZ2VudCh0aGlzLnBhZ2UpO1xuXG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGAke3RoaXMuYmFzZVVybH0vcGVyc29uYWxhcmVhL0xvZ2luYCk7XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmIChcbiAgICAgICF2YWxpZGF0ZVJlc3VsdCB8fFxuICAgICAgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fFxuICAgICAgdmFsaWRhdGVSZXN1bHQuSGVhZGVyLlN0YXR1cyAhPT0gJzEnIHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZXJyb3IgZHVyaW5nIGxvZ2luJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVSZXR1cm5Db2RlID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuLnJldHVybkNvZGU7XG4gICAgZGVidWcoYHVzZXIgdmFsaWRhdGUgd2l0aCByZXR1cm4gY29kZSAnJHt2YWxpZGF0ZVJldHVybkNvZGV9J2ApO1xuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICcxJykge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSB9ID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuO1xuXG4gICAgICBjb25zdCBsb2dpblVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9cGVyZm9ybUxvZ29uSWA7XG4gICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICBLb2RNaXNodGFtZXNoOiB1c2VyTmFtZSxcbiAgICAgICAgTWlzcGFyWmlodXk6IGNyZWRlbnRpYWxzLmlkLFxuICAgICAgICBTaXNtYTogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgICBjb3VudHJ5Q29kZTogQ09VTlRSWV9DT0RFLFxuICAgICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICB9O1xuICAgICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPHsgc3RhdHVzOiBzdHJpbmcgfT4odGhpcy5wYWdlLCBsb2dpblVybCwgcmVxdWVzdCk7XG4gICAgICBkZWJ1ZyhgdXNlciBsb2dpbiB3aXRoIHN0YXR1cyAnJHtsb2dpblJlc3VsdD8uc3RhdHVzfSdgKTtcblxuICAgICAgaWYgKGxvZ2luUmVzdWx0ICYmIGxvZ2luUmVzdWx0LnN0YXR1cyA9PT0gJzEnKSB7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luU3VjY2Vzcyk7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxvZ2luUmVzdWx0ICYmIGxvZ2luUmVzdWx0LnN0YXR1cyA9PT0gJzMnKSB7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpbkZhaWxlZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5JbnZhbGlkUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICc0Jykge1xuICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIHJldHVybiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgICAgIHRoaXMucGFnZSxcbiAgICAgIHRoaXMub3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgc2VydmljZXNVcmw6IHRoaXMuc2VydmljZXNVcmwsXG4gICAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgICAgfSxcbiAgICAgIHN0YXJ0TW9tZW50LFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFFBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGNBQUEsR0FBQVYsT0FBQTtBQU9BLElBQUFXLHVCQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxPQUFBLEdBQUFaLE9BQUE7QUFFQSxJQUFBYSxRQUFB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
|
|
311
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsInRvU3RyaW5nIiwiZmV0Y2hBY2NvdW50cyIsInBhZ2UiLCJkYXRhVXJsIiwiZGF0YVJlc3VsdCIsImZldGNoR2V0V2l0aGluUGFnZSIsIl8iLCJnZXQiLCJEYXNoYm9hcmRNb250aEJlYW4iLCJjYXJkc0NoYXJnZXMiLCJtYXAiLCJjYXJkQ2hhcmdlIiwiaW5kZXgiLCJwYXJzZUludCIsImNhcmRJbmRleCIsImFjY291bnROdW1iZXIiLCJjYXJkTnVtYmVyIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInRvSVNPU3RyaW5nIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGgiLCJ5ZWFyIiwibW9udGhTdHIiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJydW5TZXJpYWwiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsImFib3J0IiwiaW50ZXJjZXB0aW9uUHJpb3JpdGllcyIsImNvbnRpbnVlIiwibWFza0hlYWRsZXNzVXNlckFnZW50IiwibmF2aWdhdGVUbyIsImVtaXRQcm9ncmVzcyIsIlNjcmFwZXJQcm9ncmVzc1R5cGVzIiwiTG9nZ2luZ0luIiwidmFsaWRhdGVVcmwiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJpZCIsImNhcmRTdWZmaXgiLCJjYXJkNkRpZ2l0cyIsImNvdW50cnlDb2RlIiwiaWRUeXBlIiwiY2hlY2tMZXZlbCIsInZhbGlkYXRlUmVzdWx0IiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsIkhlYWRlciIsIlN0YXR1cyIsIlZhbGlkYXRlSWREYXRhQmVhbiIsIkVycm9yIiwidmFsaWRhdGVSZXR1cm5Db2RlIiwicmV0dXJuQ29kZSIsInVzZXJOYW1lIiwibG9naW5VcmwiLCJLb2RNaXNodGFtZXNoIiwiTWlzcGFyWmlodXkiLCJTaXNtYSIsInBhc3N3b3JkIiwibG9naW5SZXN1bHQiLCJMb2dpblN1Y2Nlc3MiLCJDaGFuZ2VQYXNzd29yZCIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiTG9naW5GYWlsZWQiLCJJbnZhbGlkUGFzc3dvcmQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEFMVF9TSEVLRUxfQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyYXBlclByb2dyZXNzVHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBydW5TZXJpYWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbixcbiAgdHlwZSBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaW50ZXJjZXB0aW9uUHJpb3JpdGllcywgbWFza0hlYWRsZXNzVXNlckFnZW50IH0gZnJvbSAnLi4vaGVscGVycy9icm93c2VyJztcblxuY29uc3QgQ09VTlRSWV9DT0RFID0gJzIxMic7XG5jb25zdCBJRF9UWVBFID0gJzEnO1xuY29uc3QgSU5TVEFMTE1FTlRTX0tFWVdPUkQgPSAn16rXqdec15XXnSc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiYXNlLWlzcmFjYXJkLWFtZXgnKTtcblxudHlwZSBDb21wYW55U2VydmljZU9wdGlvbnMgPSB7XG4gIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG4gIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG59O1xuXG50eXBlIFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleCA9IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uc0FjY291bnQgJiB7IGluZGV4OiBudW1iZXIgfT47XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkZWFsU3VtVHlwZTogc3RyaW5nO1xuICB2b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6OiBzdHJpbmc7XG4gIG1vcmVJbmZvPzogc3RyaW5nO1xuICBkZWFsU3VtT3V0Ym91bmQ6IGJvb2xlYW47XG4gIGN1cnJlbmN5SWQ6IHN0cmluZztcbiAgY3VycmVudFBheW1lbnRDdXJyZW5jeTogc3RyaW5nO1xuICBkZWFsU3VtOiBudW1iZXI7XG4gIGZ1bGxQYXltZW50RGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kPzogc3RyaW5nO1xuICBmdWxsU3VwcGxpZXJOYW1lSGViOiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVPdXRib3VuZDogc3RyaW5nO1xuICBwYXltZW50U3VtOiBudW1iZXI7XG4gIHBheW1lbnRTdW1PdXRib3VuZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnQge1xuICBpbmRleDogbnVtYmVyO1xuICBhY2NvdW50TnVtYmVyOiBzdHJpbmc7XG4gIHByb2Nlc3NlZERhdGU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRMb2dpblZhbGlkYXRpb24ge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgVmFsaWRhdGVJZERhdGFCZWFuPzoge1xuICAgIHVzZXJOYW1lPzogc3RyaW5nO1xuICAgIHJldHVybkNvZGU6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50c1dpdGhpblBhZ2VSZXNwb25zZSB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBEYXNoYm9hcmRNb250aEJlYW4/OiB7XG4gICAgY2FyZHNDaGFyZ2VzOiB7XG4gICAgICBjYXJkSW5kZXg6IHN0cmluZztcbiAgICAgIGNhcmROdW1iZXI6IHN0cmluZztcbiAgICAgIGJpbGxpbmdEYXRlOiBzdHJpbmc7XG4gICAgfVtdO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zIHtcbiAgdHhuSXNyYWVsPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIHR4bkFicm9hZD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uRGF0YSB7XG4gIEhlYWRlcj86IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgUGlydGV5SXNrYV8yMDRCZWFuPzoge1xuICAgIHNlY3Rvcjogc3RyaW5nO1xuICB9O1xuXG4gIENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXTtcbiAgICB9XG4gID47XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgYmlsbGluZ0RhdGUgPSBtb250aE1vbWVudC5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ0Rhc2hib2FyZE1vbnRoJyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdhY3Rpb25Db2RlJywgJzAnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2JpbGxpbmdEYXRlJywgYmlsbGluZ0RhdGUpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZm9ybWF0JywgJ0pzb24nKTtcbiAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50W10+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuKSB7XG4gICAgY29uc3QgeyBjYXJkc0NoYXJnZXMgfSA9IGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuO1xuICAgIGlmIChjYXJkc0NoYXJnZXMpIHtcbiAgICAgIHJldHVybiBjYXJkc0NoYXJnZXMubWFwKGNhcmRDaGFyZ2UgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGluZGV4OiBwYXJzZUludChjYXJkQ2hhcmdlLmNhcmRJbmRleCwgMTApLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmRDaGFyZ2UuY2FyZE51bWJlcixcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQoY2FyZENoYXJnZS5iaWxsaW5nRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBtb250aCA9IG1vbnRoTW9tZW50Lm1vbnRoKCkgKyAxO1xuICBjb25zdCB5ZWFyID0gbW9udGhNb21lbnQueWVhcigpO1xuICBjb25zdCBtb250aFN0ciA9IG1vbnRoIDwgMTAgPyBgMCR7bW9udGh9YCA6IG1vbnRoLnRvU3RyaW5nKCk7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoc2VydmljZXNVcmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncmVxTmFtZScsICdDYXJkc1RyYW5zYWN0aW9uc0xpc3QnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vbnRoJywgbW9udGhTdHIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgneWVhcicsIGAke3llYXJ9YCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXF1aXJlZERhdGUnLCAnTicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDdXJyZW5jeShjdXJyZW5jeVN0cjogc3RyaW5nKSB7XG4gIGlmIChjdXJyZW5jeVN0ciA9PT0gU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfHwgY3VycmVuY3lTdHIgPT09IEFMVF9TSEVLRUxfQ1VSUkVOQ1kpIHtcbiAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICB9XG4gIHJldHVybiBjdXJyZW5jeVN0cjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0eG4ubW9yZUluZm8gfHwgIXR4bi5tb3JlSW5mby5pbmNsdWRlcyhJTlNUQUxMTUVOVFNfS0VZV09SRCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB0eG4ubW9yZUluZm8ubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgcmV0dXJuIGdldEluc3RhbGxtZW50c0luZm8odHhuKSA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHByb2Nlc3NlZERhdGU6IHN0cmluZyk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBmaWx0ZXJlZFR4bnMgPSB0eG5zLmZpbHRlcihcbiAgICB0eG4gPT5cbiAgICAgIHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnLFxuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZFR4bnMubWFwKHR4biA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZVxuICAgICAgPyBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKClcbiAgICAgIDogcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW50UGF5bWVudEN1cnJlbmN5ID8/IHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4gIG1vbnRoTW9tZW50OiBNb21lbnQsXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4pIHtcbiAgICBjb25zdCBhY2NvdW50VHhuczogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0ge307XG4gICAgYWNjb3VudHMuZm9yRWFjaChhY2NvdW50ID0+IHtcbiAgICAgIGNvbnN0IHR4bkdyb3VwczogU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zW10gfCB1bmRlZmluZWQgPSBfLmdldChcbiAgICAgICAgZGF0YVJlc3VsdCxcbiAgICAgICAgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCxcbiAgICAgICk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKHR4bkdyb3VwID0+IHtcbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuSXNyYWVsKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5Jc3JhZWwsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5BYnJvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bkFicm9hZCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpeEluc3RhbGxtZW50cyhhbGxUeG5zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKFxuICBzZXJ2aWNlc1VybDogc3RyaW5nLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9lZENoaXV2ID0gbW9udGguZm9ybWF0KCdNTVlZWVknKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ1BpcnRleUlza2FfMjA0Jyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdDYXJkSW5kZXgnLCBhY2NvdW50SW5kZXgudG9TdHJpbmcoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdzaG92YXJSYXR6JywgdHJhbnNhY3Rpb24uaWRlbnRpZmllciEudG9TdHJpbmcoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdtb2VkQ2hpdXYnLCBtb2VkQ2hpdXYpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24oXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IE1vbWVudCxcbiAgYWNjb3VudEluZGV4OiBudW1iZXIsXG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbik6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoLCBhY2NvdW50SW5kZXgsIHRyYW5zYWN0aW9uKTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcblxuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH1cblxuICBjb25zdCByYXdDYXRlZ29yeSA9IF8uZ2V0KGRhdGEsICdQaXJ0ZXlJc2thXzIwNEJlYW4uc2VjdG9yJykgPz8gJyc7XG4gIHJldHVybiB7XG4gICAgLi4udHJhbnNhY3Rpb24sXG4gICAgY2F0ZWdvcnk6IHJhd0NhdGVnb3J5LnRyaW0oKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhcbiAgYWNjb3VudFdpdGhJbmRleDogVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9LFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHByb21pc2VzID0gYWNjb3VudFdpdGhJbmRleC50eG5zLm1hcCh0ID0+XG4gICAgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uKHBhZ2UsIG9wdGlvbnMsIG1vbnRoLCBhY2NvdW50V2l0aEluZGV4LmluZGV4LCB0KSxcbiAgKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcEFjY291bnQoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWNjb3VudE1hcDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4LFxuICBtb250aDogbW9tZW50Lk1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYWNjb3VudE1hcCkubWFwKGFzeW5jIGEgPT4gKHtcbiAgICAuLi5hY2NvdW50TWFwW2FdLFxuICAgIHR4bnM6IGF3YWl0IGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbnMoYWNjb3VudE1hcFthXSwgcGFnZSwgb3B0aW9ucywgbW9udGgpLFxuICB9KSk7XG4gIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICByZXR1cm4gYWNjb3VudHMucmVkdWNlKChtLCB4KSA9PiAoeyAuLi5tLCBbeC5hY2NvdW50TnVtYmVyXTogeCB9KSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwKFxuICBhY2NvdW50c1dpdGhJbmRleDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWxsTW9udGhzOiBtb21lbnQuTW9tZW50W10sXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtdPiB7XG4gIGNvbnN0IGFjdGlvbnMgPSBhY2NvdW50c1dpdGhJbmRleC5tYXAoKGEsIGkpID0+ICgpID0+IGdldEV4dHJhU2NyYXBBY2NvdW50KHBhZ2UsIG9wdGlvbnMsIGEsIGFsbE1vbnRoc1tpXSkpO1xuICByZXR1cm4gcnVuU2VyaWFsKGFjdGlvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGNvbXBhbnlTZXJ2aWNlT3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBzdGFydE1vbWVudDogTW9tZW50LFxuKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcbiAgY29uc3QgcmVzdWx0czogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxNb250aHMubWFwKGFzeW5jIG1vbnRoTW9tZW50ID0+IHtcbiAgICAgIHJldHVybiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlLCBvcHRpb25zLCBjb21wYW55U2VydmljZU9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gICAgfSksXG4gICk7XG5cbiAgY29uc3QgZmluYWxSZXN1bHQgPSBvcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgPyBhd2FpdCBnZXRFeHRyYVNjcmFwKHJlc3VsdHMsIHBhZ2UsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgYWxsTW9udGhzKVxuICAgIDogcmVzdWx0cztcblxuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgZmluYWxSZXN1bHQuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICAgIGxldCB0eG5zRm9yQWNjb3VudCA9IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXTtcbiAgICAgIGlmICghdHhuc0ZvckFjY291bnQpIHtcbiAgICAgICAgdHhuc0ZvckFjY291bnQgPSBbXTtcbiAgICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdID0gdHhuc0ZvckFjY291bnQ7XG4gICAgICB9XG4gICAgICBjb25zdCB0b0JlQWRkZWRUeG5zID0gcmVzdWx0W2FjY291bnROdW1iZXJdLnR4bnM7XG4gICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0ucHVzaCguLi50b0JlQWRkZWRUeG5zKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhjb21iaW5lZFR4bnMpLm1hcChhY2NvdW50TnVtYmVyID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfTtcbmNsYXNzIElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLCBiYXNlVXJsOiBzdHJpbmcsIGNvbXBhbnlDb2RlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5jb21wYW55Q29kZSA9IGNvbXBhbnlDb2RlO1xuICAgIHRoaXMuc2VydmljZXNVcmwgPSBgJHtiYXNlVXJsfS9zZXJ2aWNlcy9Qcm94eVJlcXVlc3RIYW5kbGVyLmFzaHhgO1xuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0UmVxdWVzdEludGVyY2VwdGlvbih0cnVlKTtcbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3QnLCByZXF1ZXN0ID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0LnVybCgpLmluY2x1ZGVzKCdkZXRlY3Rvci1kb20ubWluLmpzJykpIHtcbiAgICAgICAgZGVidWcoJ2ZvcmNlIGFib3J0IGZvciByZXF1ZXN0IGRvIGRvd25sb2FkIGRldGVjdG9yLWRvbS5taW4uanMgcmVzb3VyY2UnKTtcbiAgICAgICAgdm9pZCByZXF1ZXN0LmFib3J0KHVuZGVmaW5lZCwgaW50ZXJjZXB0aW9uUHJpb3JpdGllcy5hYm9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHJlcXVlc3QuY29udGludWUodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmNvbnRpbnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IG1hc2tIZWFkbGVzc1VzZXJBZ2VudCh0aGlzLnBhZ2UpO1xuXG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGAke3RoaXMuYmFzZVVybH0vcGVyc29uYWxhcmVhL0xvZ2luYCk7XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmIChcbiAgICAgICF2YWxpZGF0ZVJlc3VsdCB8fFxuICAgICAgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fFxuICAgICAgdmFsaWRhdGVSZXN1bHQuSGVhZGVyLlN0YXR1cyAhPT0gJzEnIHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZXJyb3IgZHVyaW5nIGxvZ2luJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVSZXR1cm5Db2RlID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuLnJldHVybkNvZGU7XG4gICAgZGVidWcoYHVzZXIgdmFsaWRhdGUgd2l0aCByZXR1cm4gY29kZSAnJHt2YWxpZGF0ZVJldHVybkNvZGV9J2ApO1xuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICcxJykge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSB9ID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuO1xuXG4gICAgICBjb25zdCBsb2dpblVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9cGVyZm9ybUxvZ29uSWA7XG4gICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICBLb2RNaXNodGFtZXNoOiB1c2VyTmFtZSxcbiAgICAgICAgTWlzcGFyWmlodXk6IGNyZWRlbnRpYWxzLmlkLFxuICAgICAgICBTaXNtYTogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgICBjb3VudHJ5Q29kZTogQ09VTlRSWV9DT0RFLFxuICAgICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICB9O1xuICAgICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPHsgc3RhdHVzOiBzdHJpbmcgfT4odGhpcy5wYWdlLCBsb2dpblVybCwgcmVxdWVzdCk7XG4gICAgICBkZWJ1ZyhgdXNlciBsb2dpbiB3aXRoIHN0YXR1cyAnJHtsb2dpblJlc3VsdD8uc3RhdHVzfSdgKTtcblxuICAgICAgaWYgKGxvZ2luUmVzdWx0ICYmIGxvZ2luUmVzdWx0LnN0YXR1cyA9PT0gJzEnKSB7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luU3VjY2Vzcyk7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxvZ2luUmVzdWx0ICYmIGxvZ2luUmVzdWx0LnN0YXR1cyA9PT0gJzMnKSB7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpbkZhaWxlZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5JbnZhbGlkUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICc0Jykge1xuICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIHJldHVybiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgICAgIHRoaXMucGFnZSxcbiAgICAgIHRoaXMub3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgc2VydmljZXNVcmw6IHRoaXMuc2VydmljZXNVcmwsXG4gICAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgICAgfSxcbiAgICAgIHN0YXJ0TW9tZW50LFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVIsT0FB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
|
package/lib/scrapers/discount.js
CHANGED
|
@@ -44,30 +44,34 @@ async function fetchAccountData(page, options) {
|
|
|
44
44
|
errorMessage: 'failed to get account data'
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
-
const accountNumber = accountInfo.UserAccountsData.DefaultAccountNumber;
|
|
48
47
|
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(2, 'day');
|
|
49
48
|
const startDate = options.startDate || defaultStartMoment.toDate();
|
|
50
49
|
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
51
50
|
const startDateStr = startMoment.format(DATE_FORMAT);
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
const accounts = accountInfo.UserAccountsData.UserAccounts.map(acc => acc.NewAccountInfo.AccountID);
|
|
52
|
+
const accountsData = [];
|
|
53
|
+
for (const accountNumber of accounts) {
|
|
54
|
+
const txnsUrl = `${apiSiteUrl}/lastTransactions/${accountNumber}/Date?IsCategoryDescCode=True&IsTransactionDetails=True&IsEventNames=True&IsFutureTransactionFlag=True&FromDate=${startDateStr}`;
|
|
55
|
+
const txnsResult = await (0, _fetch.fetchGetWithinPage)(page, txnsUrl);
|
|
56
|
+
if (!txnsResult || txnsResult.Error || !txnsResult.CurrentAccountLastTransactions) {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
errorType: _errors.ScraperErrorTypes.Generic,
|
|
60
|
+
errorMessage: txnsResult && txnsResult.Error ? txnsResult.Error.MsgText : 'unknown error'
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const accountCompletedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed);
|
|
64
|
+
const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
|
|
65
|
+
const accountPendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending);
|
|
66
|
+
accountsData.push({
|
|
67
|
+
accountNumber,
|
|
68
|
+
balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
|
|
69
|
+
txns: [...accountCompletedTxns, ...accountPendingTxns]
|
|
70
|
+
});
|
|
60
71
|
}
|
|
61
|
-
const completedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed);
|
|
62
|
-
const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
|
|
63
|
-
const pendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending);
|
|
64
72
|
const accountData = {
|
|
65
73
|
success: true,
|
|
66
|
-
accounts:
|
|
67
|
-
accountNumber,
|
|
68
|
-
balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
|
|
69
|
-
txns: [...completedTxns, ...pendingTxns]
|
|
70
|
-
}]
|
|
74
|
+
accounts: accountsData
|
|
71
75
|
};
|
|
72
76
|
return accountData;
|
|
73
77
|
}
|
|
@@ -113,4 +117,4 @@ class DiscountScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
113
117
|
}
|
|
114
118
|
}
|
|
115
119
|
var _default = exports.default = DiscountScraper;
|
|
116
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImFjY291bnROdW1iZXIiLCJVc2VyQWNjb3VudHNEYXRhIiwiRGVmYXVsdEFjY291bnROdW1iZXIiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4Iiwic3RhcnREYXRlU3RyIiwiZm9ybWF0IiwidHhuc1VybCIsInR4bnNSZXN1bHQiLCJFcnJvciIsIkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucyIsIk1zZ1RleHQiLCJjb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJwZW5kaW5nVHhucyIsIlBlbmRpbmciLCJhY2NvdW50RGF0YSIsImFjY291bnRzIiwiYmFsYW5jZSIsIkN1cnJlbnRBY2NvdW50SW5mbyIsIkFjY291bnRCYWxhbmNlIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3N0YXJ0LnRlbGViYW5rLmNvLmlsJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIE9wZXJhdGlvbk51bWJlcjogbnVtYmVyO1xuICBPcGVyYXRpb25EYXRlOiBzdHJpbmc7XG4gIFZhbHVlRGF0ZTogc3RyaW5nO1xuICBPcGVyYXRpb25BbW91bnQ6IG51bWJlcjtcbiAgT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnJlbnRBY2NvdW50SW5mbyB7XG4gIEFjY291bnRCYWxhbmNlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudERhdGEge1xuICBVc2VyQWNjb3VudHNEYXRhOiB7XG4gICAgRGVmYXVsdEFjY291bnROdW1iZXI6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBFcnJvcj86IHsgTXNnVGV4dDogc3RyaW5nIH07XG4gIEN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucz86IHtcbiAgICBPcGVyYXRpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgQ3VycmVudEFjY291bnRJbmZvOiBDdXJyZW50QWNjb3VudEluZm87XG4gICAgRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2s6IHtcbiAgICAgIEZ1dHVyZVRyYW5zYWN0aW9uRW50cnk6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAoIXR4bnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLkRlZmF1bHRBY2NvdW50TnVtYmVyO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgyLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IHR4bnNVcmwgPSBgJHthcGlTaXRlVXJsfS9sYXN0VHJhbnNhY3Rpb25zLyR7YWNjb3VudE51bWJlcn0vRGF0ZT9Jc0NhdGVnb3J5RGVzY0NvZGU9VHJ1ZSZJc1RyYW5zYWN0aW9uRGV0YWlscz1UcnVlJklzRXZlbnROYW1lcz1UcnVlJklzRnV0dXJlVHJhbnNhY3Rpb25GbGFnPVRydWUmRnJvbURhdGU9JHtzdGFydERhdGVTdHJ9YDtcbiAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgaWYgKCF0eG5zUmVzdWx0IHx8IHR4bnNSZXN1bHQuRXJyb3IgfHwgIXR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgZXJyb3JNZXNzYWdlOiB0eG5zUmVzdWx0ICYmIHR4bnNSZXN1bHQuRXJyb3IgPyB0eG5zUmVzdWx0LkVycm9yLk1zZ1RleHQgOiAndW5rbm93biBlcnJvcicsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBsZXRlZFR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgIHR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLk9wZXJhdGlvbkVudHJ5LFxuICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICApO1xuICBjb25zdCByYXdGdXR1cmVUeG5zID0gXy5nZXQoXG4gICAgdHhuc1Jlc3VsdCxcbiAgICAnQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkZ1dHVyZVRyYW5zYWN0aW9uc0Jsb2NrLkZ1dHVyZVRyYW5zYWN0aW9uRW50cnknLFxuICApIGFzIFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICBjb25zdCBwZW5kaW5nVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMocmF3RnV0dXJlVHhucywgVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nKTtcblxuICBjb25zdCBhY2NvdW50RGF0YSA9IHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICAgIGJhbGFuY2U6IHR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkN1cnJlbnRBY2NvdW50SW5mby5BY2NvdW50QmFsYW5jZSxcbiAgICAgICAgdHhuczogWy4uLmNvbXBsZXRlZFR4bnMsIC4uLnBlbmRpbmdUeG5zXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICByZXR1cm4gYWNjb3VudERhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5hdmlnYXRlT3JFcnJvckxhYmVsKHBhZ2U6IFBhZ2UpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI2dlbmVyYWwtZXJyb3InLCBmYWxzZSwgMTAwKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1xuICAgIGAke0JBU0VfVVJMfS9hcG9sbG8vcmV0YWlsLyMvTVlfQUNDT1VOVF9IT01FUEFHRWAsXG4gICAgYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwyLyMvTVlfQUNDT1VOVF9IT01FUEFHRWAsXG4gIF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL0xPR0lOX1BBR0VgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW2Ake0JBU0VfVVJMfS9hcG9sbG8vY29yZS90ZW1wbGF0ZXMvbG9iYnkvbWFzdGVyUGFnZS5odG1sIy9QV0RfUkVORVdgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdHpJZCcsIHZhbHVlOiBjcmVkZW50aWFscy5pZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjdHpQYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjYWlkbnVtJywgdmFsdWU6IGNyZWRlbnRpYWxzLm51bSB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBudW06IHN0cmluZyB9O1xuXG5jbGFzcyBEaXNjb3VudFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0JBU0VfVVJMfS9sb2dpbi8jL0xPR0lOX1BBR0VgLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjdHpJZCcpLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJy5zZW5kQnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IG5hdmlnYXRlT3JFcnJvckxhYmVsKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICByZXR1cm4gZmV0Y2hBY2NvdW50RGF0YSh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGlzY291bnRTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sdUJBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUE2QyxTQUFBRCx1QkFBQVMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUc3QyxNQUFNRyxRQUFRLEdBQUcsOEJBQThCO0FBQy9DLE1BQU1DLFdBQVcsR0FBRyxVQUFVO0FBK0I5QixTQUFTQyxtQkFBbUJBLENBQUNDLElBQTBCLEVBQUVDLFNBQThCLEVBQWlCO0VBQ3RHLElBQUksQ0FBQ0QsSUFBSSxFQUFFO0lBQ1QsT0FBTyxFQUFFO0VBQ1g7RUFDQSxPQUFPQSxJQUFJLENBQUNFLEdBQUcsQ0FBQ0MsR0FBRyxJQUFJO0lBQ3JCLE9BQU87TUFDTEMsSUFBSSxFQUFFQyw4QkFBZ0IsQ0FBQ0MsTUFBTTtNQUM3QkMsVUFBVSxFQUFFSixHQUFHLENBQUNLLGVBQWU7TUFDL0JDLElBQUksRUFBRSxJQUFBQyxlQUFNLEVBQUNQLEdBQUcsQ0FBQ1EsYUFBYSxFQUFFYixXQUFXLENBQUMsQ0FBQ2MsV0FBVyxDQUFDLENBQUM7TUFDMURDLGFBQWEs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
|
|
120
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwiYWRkIiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJzdGFydERhdGVTdHIiLCJmb3JtYXQiLCJhY2NvdW50cyIsIlVzZXJBY2NvdW50c0RhdGEiLCJVc2VyQWNjb3VudHMiLCJhY2MiLCJOZXdBY2NvdW50SW5mbyIsIkFjY291bnRJRCIsImFjY291bnRzRGF0YSIsImFjY291bnROdW1iZXIiLCJ0eG5zVXJsIiwidHhuc1Jlc3VsdCIsIkVycm9yIiwiQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zIiwiTXNnVGV4dCIsImFjY291bnRDb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJhY2NvdW50UGVuZGluZ1R4bnMiLCJQZW5kaW5nIiwicHVzaCIsImJhbGFuY2UiLCJDdXJyZW50QWNjb3VudEluZm8iLCJBY2NvdW50QmFsYW5jZSIsImFjY291bnREYXRhIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3N0YXJ0LnRlbGViYW5rLmNvLmlsJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIE9wZXJhdGlvbk51bWJlcjogbnVtYmVyO1xuICBPcGVyYXRpb25EYXRlOiBzdHJpbmc7XG4gIFZhbHVlRGF0ZTogc3RyaW5nO1xuICBPcGVyYXRpb25BbW91bnQ6IG51bWJlcjtcbiAgT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnJlbnRBY2NvdW50SW5mbyB7XG4gIEFjY291bnRCYWxhbmNlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudERhdGEge1xuICBVc2VyQWNjb3VudHNEYXRhOiB7XG4gICAgRGVmYXVsdEFjY291bnROdW1iZXI6IHN0cmluZztcbiAgICBVc2VyQWNjb3VudHM6IEFycmF5PHtcbiAgICAgIE5ld0FjY291bnRJbmZvOiB7XG4gICAgICAgIEFjY291bnRJRDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9PjtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBFcnJvcj86IHsgTXNnVGV4dDogc3RyaW5nIH07XG4gIEN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucz86IHtcbiAgICBPcGVyYXRpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgQ3VycmVudEFjY291bnRJbmZvOiBDdXJyZW50QWNjb3VudEluZm87XG4gICAgRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2s6IHtcbiAgICAgIEZ1dHVyZVRyYW5zYWN0aW9uRW50cnk6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAoIXR4bnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDIsICdkYXknKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnRNb21lbnQuZm9ybWF0KERBVEVfRk9STUFUKTtcblxuICBjb25zdCBhY2NvdW50czogc3RyaW5nW10gPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLlVzZXJBY2NvdW50cy5tYXAoYWNjID0+IGFjYy5OZXdBY2NvdW50SW5mby5BY2NvdW50SUQpO1xuICBjb25zdCBhY2NvdW50c0RhdGE6IEFycmF5PHsgYWNjb3VudE51bWJlcjogc3RyaW5nOyBiYWxhbmNlOiBudW1iZXI7IHR4bnM6IFRyYW5zYWN0aW9uW10gfT4gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnROdW1iZXIgb2YgYWNjb3VudHMpIHtcbiAgICBjb25zdCB0eG5zVXJsID0gYCR7YXBpU2l0ZVVybH0vbGFzdFRyYW5zYWN0aW9ucy8ke2FjY291bnROdW1iZXJ9L0RhdGU/SXNDYXRlZ29yeURlc2NDb2RlPVRydWUmSXNUcmFuc2FjdGlvbkRldGFpbHM9VHJ1ZSZJc0V2ZW50TmFtZXM9VHJ1ZSZJc0Z1dHVyZVRyYW5zYWN0aW9uRmxhZz1UcnVlJkZyb21EYXRlPSR7c3RhcnREYXRlU3RyfWA7XG4gICAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgICBpZiAoIXR4bnNSZXN1bHQgfHwgdHhuc1Jlc3VsdC5FcnJvciB8fCAhdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogdHhuc1Jlc3VsdCAmJiB0eG5zUmVzdWx0LkVycm9yID8gdHhuc1Jlc3VsdC5FcnJvci5Nc2dUZXh0IDogJ3Vua25vd24gZXJyb3InLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50Q29tcGxldGVkVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zUmVzdWx0LkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucy5PcGVyYXRpb25FbnRyeSxcbiAgICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICk7XG4gICAgY29uc3QgcmF3RnV0dXJlVHhucyA9IF8uZ2V0KFxuICAgICAgdHhuc1Jlc3VsdCxcbiAgICAgICdDdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2suRnV0dXJlVHJhbnNhY3Rpb25FbnRyeScsXG4gICAgKSBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICBjb25zdCBhY2NvdW50UGVuZGluZ1R4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHJhd0Z1dHVyZVR4bnMsIFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyk7XG5cbiAgICBhY2NvdW50c0RhdGEucHVzaCh7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgYmFsYW5jZTogdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuQ3VycmVudEFjY291bnRJbmZvLkFjY291bnRCYWxhbmNlLFxuICAgICAgdHhuczogWy4uLmFjY291bnRDb21wbGV0ZWRUeG5zLCAuLi5hY2NvdW50UGVuZGluZ1R4bnNdLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgYWNjb3VudERhdGEgPSB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50czogYWNjb3VudHNEYXRhLFxuICB9O1xuXG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVPckVycm9yTGFiZWwocGFnZTogUGFnZSkge1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjZ2VuZXJhbC1lcnJvcicsIGZhbHNlLCAxMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbXG4gICAgYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYCxcbiAgICBgJHtCQVNFX1VSTH0vYXBvbGxvL3JldGFpbDIvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYCxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtgJHtCQVNFX1VSTH0vYXBvbGxvL2NvcmUvdGVtcGxhdGVzL2xvYmJ5L21hc3RlclBhZ2UuaHRtbCMvTE9HSU5fUEFHRWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL1BXRF9SRU5FV2BdO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN0eklkJywgdmFsdWU6IGNyZWRlbnRpYWxzLmlkIH0sXG4gICAgeyBzZWxlY3RvcjogJyN0elBhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gICAgeyBzZWxlY3RvcjogJyNhaWRudW0nLCB2YWx1ZTogY3JlZGVudGlhbHMubnVtIH0sXG4gIF07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH07XG5cbmNsYXNzIERpc2NvdW50U2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7QkFTRV9VUkx9L2xvZ2luLyMvTE9HSU5fUEFHRWAsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyN0eklkJyksXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnLnNlbmRCdG4nLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gbmF2aWdhdGVPckVycm9yTGFiZWwodGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIHJldHVybiBmZXRjaEFjY291bnREYXRhKHRoaXMucGFnZSwgdGhpcy5vcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEaXNjb3VudFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQTZDLFNBQUFELHVCQUFBUyxDQUFBLFdBQUFBLENBQUEs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QUNyQ0EsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxPQUFPLENBQUMsR0FBRyxDQUMzQixHQUFHL0UsUUFBUSxzQ0FBc0MsRUFDakQsR0FBR0EsUUFBUSx1Q0FBdUMsQ0FDbkQ7RUFDRDZFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0UsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHaEYsUUFBUSwwREFBMEQsQ0FBQztFQUM1RzZFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0csY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHakYsUUFBUSx5REFBeUQsQ0FBQztFQUMxRyxPQUFPNkUsSUFBSTtBQUNiO0FBRUEsU0FBU0ssaUJBQWlCQSxDQUFDQyxXQUF1QyxFQUFFO0VBQ2xFLE9BQU8sQ0FDTDtJQUFFQyxRQUFRLEVBQUUsT0FBTztJQUFFQyxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0c7RUFBRyxDQUFDLEVBQzVDO0lBQUVGLFFBQVEsRUFBRSxhQUFhO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDSTtFQUFTLENBQUMsRUFDeEQ7SUFBRUgsUUFBUSxFQUFFLFNBQVM7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNLO0VBQUksQ0FBQyxDQUNoRDtBQUNIO0FBSUEsTUFBTUMsZUFBZSxTQUFTQyw4Q0FBc0IsQ0FBNkI7RUFDL0VDLGVBQWVBLENBQUNSLFdBQXVDLEVBQUU7SUFDdkQsT0FBTztNQUNMUyxRQUFRLEVBQUUsR0FBRzVGLFFBQVEscUJBQXFCO01BQzFDNkYsY0FBYyxFQUFFLE1BQUFBLENBQUEsS0FBWSxJQUFBbEIsMkNBQXFCLEVBQUMsSUFBSSxDQUFDakQsSUFBSSxFQUFFLE9BQU8sQ0FBQztNQUNyRW9FLE1BQU0sRUFBRVosaUJBQWlCLENBQUNDLFdBQVcsQ0FBQztNQUN0Q1ksb0JBQW9CLEVBQUUsVUFBVTtNQUNoQ0MsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWXZCLG9CQUFvQixDQUFDLElBQUksQ0FBQy9DLElBQUksQ0FBQztNQUN2RHVFLGVBQWUsRUFBRXJCLHVCQUF1QixDQUFDO0lBQzNDLENBQUM7RUFDSDtFQUVBLE1BQU1zQixTQUFTQSxDQUFBLEVBQUc7SUFDaEIsT0FBT3pFLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsSUFBSSxFQUFFLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQyxJQUFBd0UsUUFBQSxHQUFBQyxPQUFBLENBQUFyRyxPQUFBLEdBRWMwRixlQUFlIiwiaWdub3JlTGlzdCI6W119
|
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tb21lbnQiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwiYnVpbGRVcmwiLCJwYXRoIiwibG9hZENhdGVnb3JpZXMiLCJyZXMiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaWQiLCJuYW1lIiwic2V0IiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwicGxhbk5hbWUiLCJwbGFuVHlwZUlkIiwiY2xlYW5lZFVwVHhuVHlwZVN0ciIsInJlcGxhY2UiLCJ0cmltIiwiSW1tZWRpYXRlQ2hhcmdlIiwiTm9ybWFsIiwiTW9udGhseUNoYXJnZSIsIk9uZU1vbnRoUG9zdHBvbmVkIiwiTW9udGhseVBvc3Rwb25lZCIsIkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nIiwiTW9udGhseVBheW1lbnQiLCJNb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzIiwiVGhpcnR5RGF5c1BsdXMiLCJUd29Nb250aHNQb3N0cG9uZWQiLCJUd29Nb250aHNQb3N0cG9uZWQyIiwiQWNjdW11bGF0aW5nQmFza2V0IiwiSW50ZXJuZXRTaG9wcGluZyIsIk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QiLCJQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIlJlcGxhY2VtZW50Q2FyZCIsIkVhcmx5UmVwYXltZW50IiwiTW9udGhseUNhcmRGZWUiLCJDdXJyZW5jeVBvY2tldCIsIlRyYW5zYWN0aW9uVHlwZXMiLCJJbnN0YWxsbWVudHMiLCJDcmVkaXQiLCJDcmVkaXRPdXRzaWRlVGhlTGltaXQiLCJFcnJvciIsImdldEluc3RhbGxtZW50c0luZm8iLCJjb21tZW50cyIsInVuZGVmaW5lZCIsIm1hdGNoZXMiLCJtYXRjaCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJnZXRDaGFyZ2VkQ3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZIiwiRVVST19DVVJSRU5DWSIsImdldE1lbW8iLCJmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyIiwiZnVuZHNUcmFuc2ZlckNvbW1lbnQiLCJtZW1vIiwibWFwVHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsImlzUGVuZGluZyIsInBheW1lbnREYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInB1cmNoYXNlRGF0ZSIsInRvSVNPU3RyaW5nIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJpbnN0YWxsbWVudHMiLCJpZGVudGlmaWVyIiwiZGVhbERhdGEiLCJhcm4iLCJ0eXBlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImFjdHVhbFBheW1lbnRBbW91bnQiLCJjaGFyZ2VkQ3VycmVuY3kiLCJwYXltZW50Q3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsImNhdGVnb3J5IiwiZ2V0IiwiY2F0ZWdvcnlJZCIsImZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgiLCJ1cmwiLCJkYXRhIiwidHJhbnNhY3Rpb25zQnlBY2NvdW50IiwidHJhbnNhY3Rpb25zIiwiZmlsdGVyIiwidHJhbnNhY3Rpb24iLCJzaG9ydENhcmROdW1iZXIiLCJtYXBwZWRUcmFuc2FjdGlvbiIsInB1c2giLCJhZGRSZXN1bHQiLCJhbGxSZXN1bHRzIiwiY2xvbmVkUmVzdWx0cyIsIk9iamVjdCIsImtleXMiLCJhY2NvdW50TnVtYmVyIiwicHJlcGFyZVRyYW5zYWN0aW9ucyIsInR4bnMiLCJzdGFydE1vbWVudCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjbG9uZWRUeG5zIiwiZnJvbSIsImZpeEluc3RhbGxtZW50cyIsInNvcnRUcmFuc2FjdGlvbnNCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJmZXRjaFRyYW5zYWN0aW9ucyIsIm9wdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnRNb21lbnRMaW1pdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsImFsbE1vbnRocyIsImdldEFsbE1vbnRoTW9tZW50cyIsImkiLCJvdXRwdXREYXRhIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkNoYW5nZVBhc3N3b3JkIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJNYXhTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwcmVBY3Rpb24iLCJjbGlja0J1dHRvbiIsImNoZWNrUmVhZGluZXNzIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsIndhaXRVbnRpbCIsImZldGNoRGF0YSIsInJlc3VsdHMiLCJhY2NvdW50cyIsIm1hcCIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWF4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgRE9MTEFSX0NVUlJFTkNZLCBFVVJPX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgd2FpdEZvclJlZGlyZWN0IH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucywgZml4SW5zdGFsbG1lbnRzLCBzb3J0VHJhbnNhY3Rpb25zQnlEYXRlIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBCYXNlU2NyYXBlcldpdGhCcm93c2VyLFxuICBMb2dpblJlc3VsdHMsXG4gIHR5cGUgTG9naW5PcHRpb25zLFxuICB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzLFxufSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWF4Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgc2hvcnRDYXJkTnVtYmVyOiBzdHJpbmc7XG4gIHBheW1lbnREYXRlPzogc3RyaW5nO1xuICBwdXJjaGFzZURhdGU6IHN0cmluZztcbiAgYWN0dWFsUGF5bWVudEFtb3VudDogc3RyaW5nO1xuICBwYXltZW50Q3VycmVuY3k6IG51bWJlciB8IG51bGw7XG4gIG9yaWdpbmFsQ3VycmVuY3k6IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IG51bWJlcjtcbiAgcGxhbk5hbWU6IHN0cmluZztcbiAgcGxhblR5cGVJZDogbnVtYmVyO1xuICBjb21tZW50czogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgY2F0ZWdvcnlJZDogbnVtYmVyO1xuICBmdW5kc1RyYW5zZmVyQ29tbWVudD86IHN0cmluZztcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcj86IHN0cmluZztcbiAgZGVhbERhdGE/OiB7XG4gICAgYXJuOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IEJBU0VfQVBJX0FDVElPTlNfVVJMID0gJ2h0dHBzOi8vb25saW5lbGNhcGkubWF4LmNvLmlsJztcbmNvbnN0IEJBU0VfV0VMQ09NRV9VUkwgPSAnaHR0cHM6Ly93d3cubWF4LmNvLmlsJztcblxuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2Uvd2VsY29tZWA7XG5jb25zdCBQQVNTV09SRF9FWFBJUkVEX1VSTCA9IGAke0JBU0VfV0VMQ09NRV9VUkx9L3JlbmV3LXBhc3N3b3JkYDtcbmNvbnN0IFNVQ0NFU1NfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2UvcGVyc29uYWxgO1xuXG5lbnVtIE1heFBsYW5OYW1lIHtcbiAgTm9ybWFsID0gJ9eo15LXmdec15QnLFxuICBJbW1lZGlhdGVDaGFyZ2UgPSAn15fXmdeV15Eg16LXoden15XXqiDXnteZ15nXk9eZJyxcbiAgSW50ZXJuZXRTaG9wcGluZyA9ICfXkNeZ16DXmNeo16DXmC/Xl9eVXCLXnCcsXG4gIEluc3RhbGxtZW50cyA9ICfXqtep15zXldee15nXnScsXG4gIE1vbnRobHlDaGFyZ2UgPSAn15fXmdeV15Eg15fXldeT16nXmScsXG4gIE9uZU1vbnRoUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9epJyxcbiAgTW9udGhseVBvc3Rwb25lZCA9ICfXk9eX15XXmSDXnNeX15nXldeRINeU15fXldeT16nXmScsXG4gIE1vbnRobHlQYXltZW50ID0gJ9eq16nXnNeV150g15fXldeT16nXmScsXG4gIEZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nID0gJ9ee15nXnteV158g15zXqNeb15nXqdeUINei16rXmdeT15nXqicsXG4gIE1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMgPSAn15PXl9eV15kg15fXldeT16kg16rXqdec15XXnteZ150nLFxuICBUaGlydHlEYXlzUGx1cyA9ICfXoteh16fXqiAzMCDXpNec15XXoScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZCA9ICfXk9eX15XXmSDXl9eV15PXqdeZ15nXnScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZDIgPSBcIteT15fXldeZIDIg15cnINeq16nXnNeV157XmdedXCIsXG4gIE1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QgPSAn15fXldeT16nXmSArINeo15nXkdeZ16onLFxuICBDcmVkaXQgPSAn16fXqNeT15nXmCcsXG4gIENyZWRpdE91dHNpZGVUaGVMaW1pdCA9ICfXp9eo15PXmdeYLdee15fXldelINec157XodeS16jXqicsXG4gIEFjY3VtdWxhdGluZ0Jhc2tldCA9ICfXodecINee16bXmNeR16gnLFxuICBQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyA9ICfXpNeo15nXodeqINeU16LXoden15Qg15TXk9eX15XXmdeUJyxcbiAgUmVwbGFjZW1lbnRDYXJkID0gJ9eb16jXmNeZ16Eg15fXnNeZ16TXmScsXG4gIEVhcmx5UmVwYXltZW50ID0gJ9ek16jXoteV158g157Xlden15PXnScsXG4gIE1vbnRobHlDYXJkRmVlID0gJ9eT157XmSDXm9eo15jXmdehJyxcbiAgQ3VycmVuY3lQb2NrZXQgPSAn15fXmdeV15Eg15DXqNeg16cg157XmNeXJyxcbn1cblxuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJyNwb3B1cFdyb25nRGV0YWlscyc7XG5jb25zdCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiA9ICcjcG9wdXBDYXJkSG9sZGVyc0xvZ2luRXJyb3InO1xuXG5jb25zdCBjYXRlZ29yaWVzID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuZnVuY3Rpb24gcmVkaXJlY3RPckRpYWxvZyhwYWdlOiBQYWdlKSB7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRGb3JSZWRpcmVjdChwYWdlLCAyMDAwMCwgZmFsc2UsIFtCQVNFX1dFTENPTUVfVVJMLCBgJHtCQVNFX1dFTENPTUVfVVJMfS9gXSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIExPR0lOX0VSUk9SX1NFTEVDVE9SLCB0cnVlKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IGRhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0wMWA7XG5cbiAgLyoqXG4gICAqIHVybCBleHBsYW5hdGlvbjpcbiAgICogdXNlckluZGV4OiAtMSBmb3IgYWxsIGFjY291bnQgb3duZXJzXG4gICAqIGNhcmRJbmRleDogLTEgZm9yIGFsbCBjYXJkcyB1bmRlciB0aGUgYWNjb3VudFxuICAgKiBhbGwgb3RoZXIgcXVlcnkgcGFyYW1zIGFyZSBzdGF0aWMsIGJlc2lkZSB0aGUgZGF0ZSB3aGljaCBjaGFuZ2VzIGZvciByZXF1ZXN0IHBlciBtb250aFxuICAgKi9cbiAgcmV0dXJuIGJ1aWxkVXJsKEJBU0VfQVBJX0FDVElPTlNfVVJMLCB7XG4gICAgcGF0aDogYC9hcGkvcmVnaXN0ZXJlZC90cmFuc2FjdGlvbkRldGFpbHMvZ2V0VHJhbnNhY3Rpb25zQW5kR3JhcGhzP2ZpbHRlckRhdGE9e1widXNlckluZGV4XCI6LTEsXCJjYXJkSW5kZXhcIjotMSxcIm1vbnRoVmlld1wiOnRydWUsXCJkYXRlXCI6XCIke2RhdGV9XCIsXCJkYXRlc1wiOntcInN0YXJ0RGF0ZVwiOlwiMFwiLFwiZW5kRGF0ZVwiOlwiMFwifSxcImJhbmtBY2NvdW50XCI6e1wiYmFua0FjY291bnRJbmRleFwiOi0xLFwiY2FyZHNcIjpudWxsfX0mZmlyc3RDYWxsQ2FyZEluZGV4PS0xYCxcbiAgfSk7XG59XG5cbmludGVyZmFjZSBGZXRjaENhdGVnb3J5UmVzdWx0IHtcbiAgcmVzdWx0PzogQXJyYXk8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9Pjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMocGFnZTogUGFnZSkge1xuICBkZWJ1ZygnTG9hZGluZyBjYXRlZ29yaWVzJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaENhdGVnb3J5UmVzdWx0PihwYWdlLCBgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL2NvbnRlbnRzL2dldENhdGVnb3JpZXNgKTtcbiAgaWYgKHJlcyAmJiBBcnJheS5pc0FycmF5KHJlcy5yZXN1bHQpKSB7XG4gICAgZGVidWcoYCR7cmVzLnJlc3VsdC5sZW5ndGh9IGNhdGVnb3JpZXMgbG9hZGVkYCk7XG4gICAgcmVzLnJlc3VsdD8uZm9yRWFjaCgoeyBpZCwgbmFtZSB9KSA9PiBjYXRlZ29yaWVzLnNldChpZCwgbmFtZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZShwbGFuTmFtZTogc3RyaW5nLCBwbGFuVHlwZUlkOiBudW1iZXIpIHtcbiAgY29uc3QgY2xlYW5lZFVwVHhuVHlwZVN0ciA9IHBsYW5OYW1lLnJlcGxhY2UoJ1xcdCcsICcgJykudHJpbSgpIGFzIE1heFBsYW5OYW1lO1xuICBzd2l0Y2ggKGNsZWFuZWRVcFR4blR5cGVTdHIpIHtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkltbWVkaWF0ZUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk5vcm1hbDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2U6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5PbmVNb250aFBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5GdXR1cmVQdXJjaGFzZUZpbmFuY2luZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlRoaXJ0eURheXNQbHVzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkMjpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkFjY3VtdWxhdGluZ0Jhc2tldDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkludGVybmV0U2hvcHBpbmc6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5Q2hhcmdlUGx1c0ludGVyZXN0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuUG9zdHBvbmVkVHJhbnNhY3Rpb25JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5SZXBsYWNlbWVudENhcmQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5FYXJseVJlcGF5bWVudDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDYXJkRmVlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQ3VycmVuY3lQb2NrZXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXRPdXRzaWRlVGhlTGltaXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAocGxhblR5cGVJZCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRyYW5zYWN0aW9uIHR5cGUgJHtjbGVhbmVkVXBUeG5UeXBlU3RyIGFzIHN0cmluZ31gKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKGNvbW1lbnRzOiBzdHJpbmcpIHtcbiAgaWYgKCFjb21tZW50cykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IGNvbW1lbnRzLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmdlZEN1cnJlbmN5KGN1cnJlbmN5SWQ6IG51bWJlciB8IG51bGwpIHtcbiAgc3dpdGNoIChjdXJyZW5jeUlkKSB7XG4gICAgY2FzZSAzNzY6XG4gICAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICAgIGNhc2UgODQwOlxuICAgICAgcmV0dXJuIERPTExBUl9DVVJSRU5DWTtcbiAgICBjYXNlIDk3ODpcbiAgICAgIHJldHVybiBFVVJPX0NVUlJFTkNZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW1vKHtcbiAgY29tbWVudHMsXG4gIGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIsXG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50LFxufTogUGljazxTY3JhcGVkVHJhbnNhY3Rpb24sICdjb21tZW50cycgfCAnZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcicgfCAnZnVuZHNUcmFuc2ZlckNvbW1lbnQnPikge1xuICBpZiAoZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcikge1xuICAgIGNvbnN0IG1lbW8gPSBjb21tZW50cyA/IGAke2NvbW1lbnRzfSAke2Z1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXJ9YCA6IGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXI7XG4gICAgcmV0dXJuIGZ1bmRzVHJhbnNmZXJDb21tZW50ID8gYCR7bWVtb306ICR7ZnVuZHNUcmFuc2ZlckNvbW1lbnR9YCA6IG1lbW87XG4gIH1cblxuICByZXR1cm4gY29tbWVudHM7XG59XG5cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlID09PSBudWxsO1xuICBjb25zdCBwcm9jZXNzZWREYXRlID0gbW9tZW50KGlzUGVuZGluZyA/IHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSA6IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlKS50b0lTT1N0cmluZygpO1xuICBjb25zdCBzdGF0dXMgPSBpc1BlbmRpbmcgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZDtcblxuICBjb25zdCBpbnN0YWxsbWVudHMgPSBnZXRJbnN0YWxsbWVudHNJbmZvKHJhd1RyYW5zYWN0aW9uLmNvbW1lbnRzKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IGluc3RhbGxtZW50c1xuICAgID8gYCR7cmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybn1fJHtpbnN0YWxsbWVudHMubnVtYmVyfWBcbiAgICA6IHJhd1RyYW5zYWN0aW9uLmRlYWxEYXRhPy5hcm47XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUocmF3VHJhbnNhY3Rpb24ucGxhbk5hbWUsIHJhd1RyYW5zYWN0aW9uLnBsYW5UeXBlSWQpLFxuICAgIGRhdGU6IG1vbWVudChyYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJvY2Vzc2VkRGF0ZSxcbiAgICBvcmlnaW5hbEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQW1vdW50LFxuICAgIG9yaWdpbmFsQ3VycmVuY3k6IHJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQ3VycmVuY3ksXG4gICAgY2hhcmdlZEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLmFjdHVhbFBheW1lbnRBbW91bnQsXG4gICAgY2hhcmdlZEN1cnJlbmN5OiBnZXRDaGFyZ2VkQ3VycmVuY3kocmF3VHJhbnNhY3Rpb24ucGF5bWVudEN1cnJlbmN5KSxcbiAgICBkZXNjcmlwdGlvbjogcmF3VHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLnRyaW0oKSxcbiAgICBtZW1vOiBnZXRNZW1vKHJhd1RyYW5zYWN0aW9uKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcmllcy5nZXQocmF3VHJhbnNhY3Rpb24/LmNhdGVnb3J5SWQpLFxuICAgIGluc3RhbGxtZW50cyxcbiAgICBpZGVudGlmaWVyLFxuICAgIHN0YXR1cyxcbiAgfTtcbn1cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0IHtcbiAgcmVzdWx0Pzoge1xuICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZTogUGFnZSwgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4ocGFnZSwgdXJsKTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQnlBY2NvdW50OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGlmICghZGF0YSB8fCAhZGF0YS5yZXN1bHQpIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG5cbiAgZGF0YS5yZXN1bHQudHJhbnNhY3Rpb25zXG4gICAgLy8gRmlsdGVyIG91dCBub24tdHJhbnNhY3Rpb25zIHdpdGhvdXQgYSBwbGFuIHR5cGUsIGUuZy4gc3VtbWFyeSByb3dzXG4gICAgLmZpbHRlcih0cmFuc2FjdGlvbiA9PiAhIXRyYW5zYWN0aW9uLnBsYW5OYW1lKVxuICAgIC5mb3JFYWNoKCh0cmFuc2FjdGlvbjogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdID0gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcHBlZFRyYW5zYWN0aW9uID0gbWFwVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0ucHVzaChtYXBwZWRUcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcbn1cblxuZnVuY3Rpb24gYWRkUmVzdWx0KGFsbFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+LCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+KSB7XG4gIGNvbnN0IGNsb25lZFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0geyAuLi5hbGxSZXN1bHRzIH07XG4gIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBpZiAoIWNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0pIHtcbiAgICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSBbXTtcbiAgICB9XG4gICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnJlc3VsdFthY2NvdW50TnVtYmVyXSk7XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgdHhuczogVHJhbnNhY3Rpb25bXSxcbiAgc3RhcnRNb21lbnQ6IG1vbWVudC5Nb21lbnQsXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM6IGJvb2xlYW4sXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZTogYm9vbGVhbixcbikge1xuICBsZXQgY2xvbmVkVHhucyA9IEFycmF5LmZyb20odHhucyk7XG4gIGlmICghY29tYmluZUluc3RhbGxtZW50cykge1xuICAgIGNsb25lZFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoY2xvbmVkVHhucyk7XG4gIH1cbiAgY2xvbmVkVHhucyA9IHNvcnRUcmFuc2FjdGlvbnNCeURhdGUoY2xvbmVkVHhucyk7XG4gIGNsb25lZFR4bnMgPSBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGVcbiAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhjbG9uZWRUeG5zLCBzdGFydE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSlcbiAgICA6IGNsb25lZFR4bnM7XG4gIHJldHVybiBjbG9uZWRUeG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IG9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50TGltaXQgPSBtb21lbnQoKS5zdWJ0cmFjdCg0LCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoc3RhcnRNb21lbnRMaW1pdCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcblxuICBhd2FpdCBsb2FkQ2F0ZWdvcmllcyhwYWdlKTtcblxuICBsZXQgYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxNb250aHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2UsIGFsbE1vbnRoc1tpXSk7XG4gICAgYWxsUmVzdWx0cyA9IGFkZFJlc3VsdChhbGxSZXN1bHRzLCByZXN1bHQpO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoYWxsUmVzdWx0cykuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBsZXQgdHhucyA9IGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl07XG4gICAgdHhucyA9IHByZXBhcmVUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zLFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgICBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UsXG4gICAgICBvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlLFxuICAgICk7XG4gICAgYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IHR4bnM7XG4gIH0pO1xuXG4gIHJldHVybiBhbGxSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtTVUNDRVNTX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtQQVNTV09SRF9FWFBJUkVEX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IpO1xuICAgIH0sXG4gIF07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXItbmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNYXhTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogTG9naW5PcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdhcHAtdXNlci1sb2dpbi1mb3JtIC5nZW5lcmFsLWJ1dHRvbi5zZW5kLW1lLWNvZGUnLFxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2Nsb3NlUG9wdXAnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScpO1xuICAgICAgICBpZiAoYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UodGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycsIHRydWUpO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLnRhYi1wYW5lLmFjdGl2ZSBhcHAtdXNlci1sb2dpbi1mb3JtJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgICAgd2FpdFVudGlsOiAnZG9tY29udGVudGxvYWRlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICAgIGNvbnN0IGFjY291bnRzID0gT2JqZWN0LmtleXMocmVzdWx0cykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgdHhuczogcmVzdWx0c1thY2NvdW50TnVtYmVyXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWF4U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLHFCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxjQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFB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
|
|
299
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwidXJsIiwiVVJMIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJsb2FkQ2F0ZWdvcmllcyIsInJlcyIsImZldGNoR2V0V2l0aGluUGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImxlbmd0aCIsImZvckVhY2giLCJpZCIsIm5hbWUiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJwbGFuTmFtZSIsInBsYW5UeXBlSWQiLCJjbGVhbmVkVXBUeG5UeXBlU3RyIiwicmVwbGFjZSIsInRyaW0iLCJJbW1lZGlhdGVDaGFyZ2UiLCJOb3JtYWwiLCJNb250aGx5Q2hhcmdlIiwiT25lTW9udGhQb3N0cG9uZWQiLCJNb250aGx5UG9zdHBvbmVkIiwiRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmciLCJNb250aGx5UGF5bWVudCIsIk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMiLCJUaGlydHlEYXlzUGx1cyIsIlR3b01vbnRoc1Bvc3Rwb25lZCIsIlR3b01vbnRoc1Bvc3Rwb25lZDIiLCJBY2N1bXVsYXRpbmdCYXNrZXQiLCJJbnRlcm5ldFNob3BwaW5nIiwiTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCIsIlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIiwiUmVwbGFjZW1lbnRDYXJkIiwiRWFybHlSZXBheW1lbnQiLCJNb250aGx5Q2FyZEZlZSIsIkN1cnJlbmN5UG9ja2V0IiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIkNyZWRpdCIsIkNyZWRpdE91dHNpZGVUaGVMaW1pdCIsIkVycm9yIiwiZ2V0SW5zdGFsbG1lbnRzSW5mbyIsImNvbW1lbnRzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b3RhbCIsImdldENoYXJnZWRDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1kiLCJFVVJPX0NVUlJFTkNZIiwiZ2V0TWVtbyIsImZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIiLCJmdW5kc1RyYW5zZmVyQ29tbWVudCIsIm1lbW8iLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaXNQZW5kaW5nIiwicGF5bWVudERhdGUiLCJwcm9jZXNzZWREYXRlIiwibW9tZW50IiwicHVyY2hhc2VEYXRlIiwidG9JU09TdHJpbmciLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImluc3RhbGxtZW50cyIsImlkZW50aWZpZXIiLCJkZWFsRGF0YSIsImFybiIsInR5cGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiYWN0dWFsUGF5bWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsInBheW1lbnRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwiY2F0ZWdvcnkiLCJnZXQiLCJjYXRlZ29yeUlkIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aCIsImRhdGEiLCJ0cmFuc2FjdGlvbnNCeUFjY291bnQiLCJ0cmFuc2FjdGlvbnMiLCJmaWx0ZXIiLCJ0cmFuc2FjdGlvbiIsInNob3J0Q2FyZE51bWJlciIsIm1hcHBlZFRyYW5zYWN0aW9uIiwicHVzaCIsImFkZFJlc3VsdCIsImFsbFJlc3VsdHMiLCJjbG9uZWRSZXN1bHRzIiwiT2JqZWN0Iiwia2V5cyIsImFjY291bnROdW1iZXIiLCJwcmVwYXJlVHJhbnNhY3Rpb25zIiwidHhucyIsInN0YXJ0TW9tZW50IiwiY29tYmluZUluc3RhbGxtZW50cyIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImNsb25lZFR4bnMiLCJmcm9tIiwiZml4SW5zdGFsbG1lbnRzIiwic29ydFRyYW5zYWN0aW9uc0J5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydE1vbWVudExpbWl0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwibWF4IiwiYWxsTW9udGhzIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwiaSIsIm91dHB1dERhdGEiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsIlVua25vd25FcnJvciIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIk1heFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInByZUFjdGlvbiIsImNsaWNrQnV0dG9uIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwid2FpdFVudGlsIiwiZmV0Y2hEYXRhIiwicmVzdWx0cyIsImFjY291bnRzIiwibWFwIiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgRE9MTEFSX0NVUlJFTkNZLCBFVVJPX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgd2FpdEZvclJlZGlyZWN0IH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucywgZml4SW5zdGFsbG1lbnRzLCBzb3J0VHJhbnNhY3Rpb25zQnlEYXRlIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBCYXNlU2NyYXBlcldpdGhCcm93c2VyLFxuICBMb2dpblJlc3VsdHMsXG4gIHR5cGUgTG9naW5PcHRpb25zLFxuICB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzLFxufSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWF4Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgc2hvcnRDYXJkTnVtYmVyOiBzdHJpbmc7XG4gIHBheW1lbnREYXRlPzogc3RyaW5nO1xuICBwdXJjaGFzZURhdGU6IHN0cmluZztcbiAgYWN0dWFsUGF5bWVudEFtb3VudDogc3RyaW5nO1xuICBwYXltZW50Q3VycmVuY3k6IG51bWJlciB8IG51bGw7XG4gIG9yaWdpbmFsQ3VycmVuY3k6IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IG51bWJlcjtcbiAgcGxhbk5hbWU6IHN0cmluZztcbiAgcGxhblR5cGVJZDogbnVtYmVyO1xuICBjb21tZW50czogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgY2F0ZWdvcnlJZDogbnVtYmVyO1xuICBmdW5kc1RyYW5zZmVyQ29tbWVudD86IHN0cmluZztcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcj86IHN0cmluZztcbiAgZGVhbERhdGE/OiB7XG4gICAgYXJuOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IEJBU0VfQVBJX0FDVElPTlNfVVJMID0gJ2h0dHBzOi8vb25saW5lbGNhcGkubWF4LmNvLmlsJztcbmNvbnN0IEJBU0VfV0VMQ09NRV9VUkwgPSAnaHR0cHM6Ly93d3cubWF4LmNvLmlsJztcblxuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2Uvd2VsY29tZWA7XG5jb25zdCBQQVNTV09SRF9FWFBJUkVEX1VSTCA9IGAke0JBU0VfV0VMQ09NRV9VUkx9L3JlbmV3LXBhc3N3b3JkYDtcbmNvbnN0IFNVQ0NFU1NfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2UvcGVyc29uYWxgO1xuXG5lbnVtIE1heFBsYW5OYW1lIHtcbiAgTm9ybWFsID0gJ9eo15LXmdec15QnLFxuICBJbW1lZGlhdGVDaGFyZ2UgPSAn15fXmdeV15Eg16LXoden15XXqiDXnteZ15nXk9eZJyxcbiAgSW50ZXJuZXRTaG9wcGluZyA9ICfXkNeZ16DXmNeo16DXmC/Xl9eVXCLXnCcsXG4gIEluc3RhbGxtZW50cyA9ICfXqtep15zXldee15nXnScsXG4gIE1vbnRobHlDaGFyZ2UgPSAn15fXmdeV15Eg15fXldeT16nXmScsXG4gIE9uZU1vbnRoUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9epJyxcbiAgTW9udGhseVBvc3Rwb25lZCA9ICfXk9eX15XXmSDXnNeX15nXldeRINeU15fXldeT16nXmScsXG4gIE1vbnRobHlQYXltZW50ID0gJ9eq16nXnNeV150g15fXldeT16nXmScsXG4gIEZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nID0gJ9ee15nXnteV158g15zXqNeb15nXqdeUINei16rXmdeT15nXqicsXG4gIE1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMgPSAn15PXl9eV15kg15fXldeT16kg16rXqdec15XXnteZ150nLFxuICBUaGlydHlEYXlzUGx1cyA9ICfXoteh16fXqiAzMCDXpNec15XXoScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZCA9ICfXk9eX15XXmSDXl9eV15PXqdeZ15nXnScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZDIgPSBcIteT15fXldeZIDIg15cnINeq16nXnNeV157XmdedXCIsXG4gIE1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QgPSAn15fXldeT16nXmSArINeo15nXkdeZ16onLFxuICBDcmVkaXQgPSAn16fXqNeT15nXmCcsXG4gIENyZWRpdE91dHNpZGVUaGVMaW1pdCA9ICfXp9eo15PXmdeYLdee15fXldelINec157XodeS16jXqicsXG4gIEFjY3VtdWxhdGluZ0Jhc2tldCA9ICfXodecINee16bXmNeR16gnLFxuICBQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyA9ICfXpNeo15nXodeqINeU16LXoden15Qg15TXk9eX15XXmdeUJyxcbiAgUmVwbGFjZW1lbnRDYXJkID0gJ9eb16jXmNeZ16Eg15fXnNeZ16TXmScsXG4gIEVhcmx5UmVwYXltZW50ID0gJ9ek16jXoteV158g157Xlden15PXnScsXG4gIE1vbnRobHlDYXJkRmVlID0gJ9eT157XmSDXm9eo15jXmdehJyxcbiAgQ3VycmVuY3lQb2NrZXQgPSAn15fXmdeV15Eg15DXqNeg16cg157XmNeXJyxcbn1cblxuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJyNwb3B1cFdyb25nRGV0YWlscyc7XG5jb25zdCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiA9ICcjcG9wdXBDYXJkSG9sZGVyc0xvZ2luRXJyb3InO1xuXG5jb25zdCBjYXRlZ29yaWVzID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuZnVuY3Rpb24gcmVkaXJlY3RPckRpYWxvZyhwYWdlOiBQYWdlKSB7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRGb3JSZWRpcmVjdChwYWdlLCAyMDAwMCwgZmFsc2UsIFtCQVNFX1dFTENPTUVfVVJMLCBgJHtCQVNFX1dFTENPTUVfVVJMfS9gXSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIExPR0lOX0VSUk9SX1NFTEVDVE9SLCB0cnVlKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IGRhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0wMWA7XG5cbiAgLyoqXG4gICAqIHVybCBleHBsYW5hdGlvbjpcbiAgICogdXNlckluZGV4OiAtMSBmb3IgYWxsIGFjY291bnQgb3duZXJzXG4gICAqIGNhcmRJbmRleDogLTEgZm9yIGFsbCBjYXJkcyB1bmRlciB0aGUgYWNjb3VudFxuICAgKiBhbGwgb3RoZXIgcXVlcnkgcGFyYW1zIGFyZSBzdGF0aWMsIGJlc2lkZSB0aGUgZGF0ZSB3aGljaCBjaGFuZ2VzIGZvciByZXF1ZXN0IHBlciBtb250aFxuICAgKi9cbiAgY29uc3QgdXJsID0gbmV3IFVSTChgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL3JlZ2lzdGVyZWQvdHJhbnNhY3Rpb25EZXRhaWxzL2dldFRyYW5zYWN0aW9uc0FuZEdyYXBoc2ApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAnZmlsdGVyRGF0YScsXG4gICAgYHtcInVzZXJJbmRleFwiOi0xLFwiY2FyZEluZGV4XCI6LTEsXCJtb250aFZpZXdcIjp0cnVlLFwiZGF0ZVwiOlwiJHtkYXRlfVwiLFwiZGF0ZXNcIjp7XCJzdGFydERhdGVcIjpcIjBcIixcImVuZERhdGVcIjpcIjBcIn0sXCJiYW5rQWNjb3VudFwiOntcImJhbmtBY2NvdW50SW5kZXhcIjotMSxcImNhcmRzXCI6bnVsbH19YCxcbiAgKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ZpcnN0Q2FsbENhcmRJbmRleCcsICctMScpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmludGVyZmFjZSBGZXRjaENhdGVnb3J5UmVzdWx0IHtcbiAgcmVzdWx0PzogQXJyYXk8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9Pjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMocGFnZTogUGFnZSkge1xuICBkZWJ1ZygnTG9hZGluZyBjYXRlZ29yaWVzJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaENhdGVnb3J5UmVzdWx0PihwYWdlLCBgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL2NvbnRlbnRzL2dldENhdGVnb3JpZXNgKTtcbiAgaWYgKHJlcyAmJiBBcnJheS5pc0FycmF5KHJlcy5yZXN1bHQpKSB7XG4gICAgZGVidWcoYCR7cmVzLnJlc3VsdC5sZW5ndGh9IGNhdGVnb3JpZXMgbG9hZGVkYCk7XG4gICAgcmVzLnJlc3VsdD8uZm9yRWFjaCgoeyBpZCwgbmFtZSB9KSA9PiBjYXRlZ29yaWVzLnNldChpZCwgbmFtZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZShwbGFuTmFtZTogc3RyaW5nLCBwbGFuVHlwZUlkOiBudW1iZXIpIHtcbiAgY29uc3QgY2xlYW5lZFVwVHhuVHlwZVN0ciA9IHBsYW5OYW1lLnJlcGxhY2UoJ1xcdCcsICcgJykudHJpbSgpIGFzIE1heFBsYW5OYW1lO1xuICBzd2l0Y2ggKGNsZWFuZWRVcFR4blR5cGVTdHIpIHtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkltbWVkaWF0ZUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk5vcm1hbDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2U6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5PbmVNb250aFBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5GdXR1cmVQdXJjaGFzZUZpbmFuY2luZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlRoaXJ0eURheXNQbHVzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkMjpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkFjY3VtdWxhdGluZ0Jhc2tldDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkludGVybmV0U2hvcHBpbmc6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5Q2hhcmdlUGx1c0ludGVyZXN0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuUG9zdHBvbmVkVHJhbnNhY3Rpb25JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5SZXBsYWNlbWVudENhcmQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5FYXJseVJlcGF5bWVudDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDYXJkRmVlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQ3VycmVuY3lQb2NrZXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXRPdXRzaWRlVGhlTGltaXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAocGxhblR5cGVJZCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRyYW5zYWN0aW9uIHR5cGUgJHtjbGVhbmVkVXBUeG5UeXBlU3RyIGFzIHN0cmluZ31gKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKGNvbW1lbnRzOiBzdHJpbmcpIHtcbiAgaWYgKCFjb21tZW50cykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IGNvbW1lbnRzLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmdlZEN1cnJlbmN5KGN1cnJlbmN5SWQ6IG51bWJlciB8IG51bGwpIHtcbiAgc3dpdGNoIChjdXJyZW5jeUlkKSB7XG4gICAgY2FzZSAzNzY6XG4gICAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICAgIGNhc2UgODQwOlxuICAgICAgcmV0dXJuIERPTExBUl9DVVJSRU5DWTtcbiAgICBjYXNlIDk3ODpcbiAgICAgIHJldHVybiBFVVJPX0NVUlJFTkNZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW1vKHtcbiAgY29tbWVudHMsXG4gIGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIsXG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50LFxufTogUGljazxTY3JhcGVkVHJhbnNhY3Rpb24sICdjb21tZW50cycgfCAnZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcicgfCAnZnVuZHNUcmFuc2ZlckNvbW1lbnQnPikge1xuICBpZiAoZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcikge1xuICAgIGNvbnN0IG1lbW8gPSBjb21tZW50cyA/IGAke2NvbW1lbnRzfSAke2Z1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXJ9YCA6IGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXI7XG4gICAgcmV0dXJuIGZ1bmRzVHJhbnNmZXJDb21tZW50ID8gYCR7bWVtb306ICR7ZnVuZHNUcmFuc2ZlckNvbW1lbnR9YCA6IG1lbW87XG4gIH1cblxuICByZXR1cm4gY29tbWVudHM7XG59XG5cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlID09PSBudWxsO1xuICBjb25zdCBwcm9jZXNzZWREYXRlID0gbW9tZW50KGlzUGVuZGluZyA/IHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSA6IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlKS50b0lTT1N0cmluZygpO1xuICBjb25zdCBzdGF0dXMgPSBpc1BlbmRpbmcgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZDtcblxuICBjb25zdCBpbnN0YWxsbWVudHMgPSBnZXRJbnN0YWxsbWVudHNJbmZvKHJhd1RyYW5zYWN0aW9uLmNvbW1lbnRzKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IGluc3RhbGxtZW50c1xuICAgID8gYCR7cmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybn1fJHtpbnN0YWxsbWVudHMubnVtYmVyfWBcbiAgICA6IHJhd1RyYW5zYWN0aW9uLmRlYWxEYXRhPy5hcm47XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUocmF3VHJhbnNhY3Rpb24ucGxhbk5hbWUsIHJhd1RyYW5zYWN0aW9uLnBsYW5UeXBlSWQpLFxuICAgIGRhdGU6IG1vbWVudChyYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJvY2Vzc2VkRGF0ZSxcbiAgICBvcmlnaW5hbEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQW1vdW50LFxuICAgIG9yaWdpbmFsQ3VycmVuY3k6IHJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQ3VycmVuY3ksXG4gICAgY2hhcmdlZEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLmFjdHVhbFBheW1lbnRBbW91bnQsXG4gICAgY2hhcmdlZEN1cnJlbmN5OiBnZXRDaGFyZ2VkQ3VycmVuY3kocmF3VHJhbnNhY3Rpb24ucGF5bWVudEN1cnJlbmN5KSxcbiAgICBkZXNjcmlwdGlvbjogcmF3VHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLnRyaW0oKSxcbiAgICBtZW1vOiBnZXRNZW1vKHJhd1RyYW5zYWN0aW9uKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcmllcy5nZXQocmF3VHJhbnNhY3Rpb24/LmNhdGVnb3J5SWQpLFxuICAgIGluc3RhbGxtZW50cyxcbiAgICBpZGVudGlmaWVyLFxuICAgIHN0YXR1cyxcbiAgfTtcbn1cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0IHtcbiAgcmVzdWx0Pzoge1xuICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZTogUGFnZSwgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4ocGFnZSwgdXJsKTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQnlBY2NvdW50OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGlmICghZGF0YSB8fCAhZGF0YS5yZXN1bHQpIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG5cbiAgZGF0YS5yZXN1bHQudHJhbnNhY3Rpb25zXG4gICAgLy8gRmlsdGVyIG91dCBub24tdHJhbnNhY3Rpb25zIHdpdGhvdXQgYSBwbGFuIHR5cGUsIGUuZy4gc3VtbWFyeSByb3dzXG4gICAgLmZpbHRlcih0cmFuc2FjdGlvbiA9PiAhIXRyYW5zYWN0aW9uLnBsYW5OYW1lKVxuICAgIC5mb3JFYWNoKCh0cmFuc2FjdGlvbjogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdID0gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcHBlZFRyYW5zYWN0aW9uID0gbWFwVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0ucHVzaChtYXBwZWRUcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcbn1cblxuZnVuY3Rpb24gYWRkUmVzdWx0KGFsbFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+LCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+KSB7XG4gIGNvbnN0IGNsb25lZFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0geyAuLi5hbGxSZXN1bHRzIH07XG4gIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBpZiAoIWNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0pIHtcbiAgICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSBbXTtcbiAgICB9XG4gICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnJlc3VsdFthY2NvdW50TnVtYmVyXSk7XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgdHhuczogVHJhbnNhY3Rpb25bXSxcbiAgc3RhcnRNb21lbnQ6IG1vbWVudC5Nb21lbnQsXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM6IGJvb2xlYW4sXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZTogYm9vbGVhbixcbikge1xuICBsZXQgY2xvbmVkVHhucyA9IEFycmF5LmZyb20odHhucyk7XG4gIGlmICghY29tYmluZUluc3RhbGxtZW50cykge1xuICAgIGNsb25lZFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoY2xvbmVkVHhucyk7XG4gIH1cbiAgY2xvbmVkVHhucyA9IHNvcnRUcmFuc2FjdGlvbnNCeURhdGUoY2xvbmVkVHhucyk7XG4gIGNsb25lZFR4bnMgPSBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGVcbiAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhjbG9uZWRUeG5zLCBzdGFydE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSlcbiAgICA6IGNsb25lZFR4bnM7XG4gIHJldHVybiBjbG9uZWRUeG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IG9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50TGltaXQgPSBtb21lbnQoKS5zdWJ0cmFjdCg0LCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoc3RhcnRNb21lbnRMaW1pdCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcblxuICBhd2FpdCBsb2FkQ2F0ZWdvcmllcyhwYWdlKTtcblxuICBsZXQgYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxNb250aHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2UsIGFsbE1vbnRoc1tpXSk7XG4gICAgYWxsUmVzdWx0cyA9IGFkZFJlc3VsdChhbGxSZXN1bHRzLCByZXN1bHQpO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoYWxsUmVzdWx0cykuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBsZXQgdHhucyA9IGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl07XG4gICAgdHhucyA9IHByZXBhcmVUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zLFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgICBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UsXG4gICAgICBvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlLFxuICAgICk7XG4gICAgYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IHR4bnM7XG4gIH0pO1xuXG4gIHJldHVybiBhbGxSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtTVUNDRVNTX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtQQVNTV09SRF9FWFBJUkVEX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IpO1xuICAgIH0sXG4gIF07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXItbmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNYXhTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogTG9naW5PcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdhcHAtdXNlci1sb2dpbi1mb3JtIC5nZW5lcmFsLWJ1dHRvbi5zZW5kLW1lLWNvZGUnLFxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2Nsb3NlUG9wdXAnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScpO1xuICAgICAgICBpZiAoYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UodGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycsIHRydWUpO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLnRhYi1wYW5lLmFjdGl2ZSBhcHAtdXNlci1sb2dpbi1mb3JtJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgICAgd2FpdFVudGlsOiAnZG9tY29udGVudGxvYWRlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICAgIGNvbnN0IGFjY291bnRzID0gT2JqZWN0LmtleXMocmVzdWx0cykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgdHhuczogcmVzdWx0c1thY2NvdW50TnVtYmVyXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWF4U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdB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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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInR4biIsInBvc3RMb2dpbiIsInJhY2UiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJ3YWl0Rm9yVXJsIiwiTWl6cmFoaVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJjaGVja1JlYWRpbmVzcyIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiJGV2YWwiLCJlbCIsImNsaWNrIiwibnVtT2ZBY2NvdW50cyIsInJlc3VsdHMiLCJpIiwicHVzaCIsImZldGNoQWNjb3VudCIsInN1Y2Nlc3MiLCJhY2NvdW50cyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJnZXRQZW5kaW5nVHJhbnNhY3Rpb25zIiwiZnJhbWUiLCJ3YWl0VW50aWxJZnJhbWVGb3VuZCIsImYiLCJ1cmwiLCJpbmNsdWRlcyIsImlzUGVuZGluZyIsInRoZW4iLCJjYXRjaCIsIndhaXRGb3JTZWxlY3RvciIsImFjY291bnROdW1iZXJFbGVtZW50IiwiYWNjb3VudE51bWJlckhhbmRsZSIsImdldFByb3BlcnR5IiwiYWNjb3VudE51bWJlciIsImpzb25WYWx1ZSIsIkVycm9yIiwiYW55Iiwid2FpdEZvclJlcXVlc3QiLCJoZWFkZXIiLCJtZXNzYWdlcyIsInRleHQiLCJyZWxldmFudFJvd3MiLCJyb3dzIiwiUmVjVHlwZVNwZWNpZmllZCIsIm9zaFR4biIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwicmVzb2x2ZSIsIm9wdEluRmVhdHVyZXMiLCJzaG91bGRNYXJrQXNQZW5kaW5nIiwiZm9yRWFjaCIsInN0YXJ0TW9tZW50Iiwib3NoVHhuQWZ0ZXJTdGFydERhdGUiLCJpc1NhbWVPckFmdGVyIiwiYWxsVHhuIiwiY29uY2F0IiwiYmFsYW5jZSIsIllpdHJhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21penJhaGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBGcmFtZSwgdHlwZSBIVFRQUmVxdWVzdCwgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBwYWdlRXZhbEFsbCxcbiAgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICB3YWl0VW50aWxJZnJhbWVGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgd2FpdEZvclVybCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWl6cmFoaScpO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgUmVjVHlwZVNwZWNpZmllZDogYm9vbGVhbjtcbiAgTUMwMlBldWxhVGFhRVo6IHN0cmluZztcbiAgTUMwMlNjaHVtRVo6IG51bWJlcjtcbiAgTUMwMkFzbWFodGFNZWtvcml0RVo6IHN0cmluZztcbiAgTUMwMlRudWFUZXVyRVo6IHN0cmluZztcbiAgSXNUb2RheVRyYW5zYWN0aW9uOiBib29sZWFuO1xuICBNQzAyRXJlaFRhYUVaOiBzdHJpbmc7XG4gIE1DMDJTaG93RGV0YWlsc0VaPzogc3RyaW5nO1xuICBNQzAyS29kR29yZW1FWjogYW55O1xuICBNQzAyU3VnVG51YUthc3BpdEVaOiBhbnk7XG4gIE1DMDJBZ2lkRVo6IGFueTtcbiAgTUMwMlNlaWZNYXJhbEVaOiBhbnk7XG4gIE1DMDJOb3NlTWFyYWxFWjogYW55O1xuICBUcmFuc2FjdGlvbk51bWJlcjogYW55O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdCB7XG4gIGhlYWRlcjoge1xuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IHsgdGV4dDogc3RyaW5nIH1bXTtcbiAgfTtcbiAgYm9keToge1xuICAgIGZpZWxkczoge1xuICAgICAgWWl0cmE6IHN0cmluZztcbiAgICB9O1xuICAgIHRhYmxlOiB7XG4gICAgICByb3dzOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICB9O1xuICB9O1xufVxuXG50eXBlIE1vcmVEZXRhaWxzUmVzcG9uc2UgPSB7XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IFtcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFJlY29yZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgRmllbGRzOiBBcnJheTx7XG4gICAgICAgICAgICAgICAgTGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgICAgICBWYWx1ZTogc3RyaW5nO1xuICAgICAgICAgICAgICB9PjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXTtcbiAgfTtcbn07XG5cbnR5cGUgTW9yZURldGFpbHMgPSB7XG4gIGVudHJpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIG1lbW86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IEJBU0VfV0VCU0lURV9VUkwgPSAnaHR0cHM6Ly93d3cubWl6cmFoaS10ZWZhaG90LmNvLmlsJztcbmNvbnN0IExPR0lOX1VSTCA9IGAke0JBU0VfV0VCU0lURV9VUkx9L2xvZ2luL2luZGV4Lmh0bWwjL2F1dGgtcGFnZS1oZWA7XG5jb25zdCBCQVNFX0FQUF9VUkwgPSAnaHR0cHM6Ly9tdG8ubWl6cmFoaS10ZWZhaG90LmNvLmlsJztcbmNvbnN0IEFGVEVSX0xPR0lOX0JBU0VfVVJMID0gL2h0dHBzOlxcL1xcL210b1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9PbmxpbmVBcHBcXC8uKi87XG5jb25zdCBPU0hfUEFHRSA9ICcvb3NoL2xlZ2FjeS9sZWdhY3ktT3NoLU1haW4nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1BBR0UgPSAnL29zaC9sZWdhY3kvcm9vdC1tYWluLW9zaC1wNDI4TmV3JztcbmNvbnN0IFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMgPSBbXG4gIGAke0JBU0VfQVBQX1VSTH0vT25saW5lUGlsb3QvYXBpL1NreU9TSC9nZXQ0MjhJbmRleGAsXG4gIGAke0JBU0VfQVBQX1VSTH0vT25saW5lL2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuXTtcbmNvbnN0IFBFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1wNDIwJztcbmNvbnN0IFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSA9ICdwNDIwLmFzcHgnO1xuY29uc3QgTU9SRV9ERVRBSUxTX1VSTCA9IGAke0JBU0VfQVBQX1VSTH0vT25saW5lL2FwaS9PU0gvZ2V0TWFoZXJCZXJ1cmltU01GYDtcbmNvbnN0IENIQU5HRV9QQVNTV09SRF9VUkwgPSAvaHR0cHM6XFwvXFwvd3d3XFwubWl6cmFoaS10ZWZhaG90XFwuY29cXC5pbFxcL2xvZ2luXFwvaW5kZXhcXC5odG1sI1xcL2NoYW5nZS1wYXNzLztcbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuY29uc3QgTUFYX1JPV1NfUEVSX1JFUVVFU1QgPSAxMDAwMDAwMDAwMDtcblxuY29uc3QgdXNlcm5hbWVTZWxlY3RvciA9ICcjdXNlck51bWJlckRlc2t0b3BIZWInO1xuY29uc3QgcGFzc3dvcmRTZWxlY3RvciA9ICcjcGFzc3dvcmREZXNrdG9wSGViJztcbmNvbnN0IHN1Ym1pdEJ1dHRvblNlbGVjdG9yID0gJ2J1dHRvbi5idG4uYnRuLXByaW1hcnknO1xuY29uc3QgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IgPSAnYVtocmVmKj1cImh0dHBzOi8vc2MubWl6cmFoaS10ZWZhaG90LmNvLmlsL1NDU2VydmljZXMvU0MvUDAxMC5hc3B4XCJdJztcbmNvbnN0IGFmdGVyTG9naW5TZWxlY3RvciA9ICcjZHJvcGRvd25CYXNpYyc7XG5jb25zdCBsb2dpblNwaW5uZXJTZWxlY3RvciA9ICdkaXYubmd4LW92ZXJsYXkubG9hZGluZy1mb3JlZ3JvdW5kJztcbmNvbnN0IGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvciA9ICcjQWNjb3VudFBpY2tlciAuaXRlbSc7XG5jb25zdCBwZW5kaW5nVHJ4SWRlbnRpZmllcklkID0gJyNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIyX3BhbmVsMSc7XG5jb25zdCBjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lID0gJ9ei15XXkdeoINeV16nXkSc7XG5jb25zdCBjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSA9ICdDaGVja2luZyBBY2NvdW50JztcbmNvbnN0IGdlbmVyaWNEZXNjcmlwdGlvbnMgPSBbJ9eU16LXkdeo16og15nXldee158g15zXkdeg16cg15bXqCDXnteh16DXmdejINeW16gnXTtcblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogdXNlcm5hbWVTZWxlY3RvciwgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogcGFzc3dvcmRTZWxlY3RvciwgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzTG9nZ2VkSW4ob3B0aW9uczogeyBwYWdlPzogUGFnZSB8IHVuZGVmaW5lZCB9IHwgdW5kZWZpbmVkKSB7XG4gIGlmICghb3B0aW9ucz8ucGFnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBvc2hYUGF0aCA9IGAvL2EvL3NwYW5bY29udGFpbnMoLiwgXCIke2NoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWV9XCIpIG9yIGNvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZX1cIildYDtcbiAgY29uc3Qgb3NoVGFiID0gYXdhaXQgb3B0aW9ucy5wYWdlLiQkKGB4cGF0aCR7b3NoWFBhdGh9YCk7XG4gIHJldHVybiBvc2hUYWIubGVuZ3RoID4gMDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgcmV0dXJuIHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbQUZURVJfTE9HSU5fQkFTRV9VUkwsIGlzTG9nZ2VkSW5dLFxuICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogW2FzeW5jICgpID0+ICEhKGF3YWl0IHBhZ2UuJChpbnZhbGlkUGFzc3dvcmRTZWxlY3RvcikpXSxcbiAgICBbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXTogW0NIQU5HRV9QQVNTV09SRF9VUkxdLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTdGFydE1vbWVudChvcHRpb25zU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zU3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgcmV0dXJuIG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKFxuICBwYWdlOiBQYWdlLFxuICBpdGVtOiBTY3JhcGVkVHJhbnNhY3Rpb24sXG4gIGFwaUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pOiBQcm9taXNlPE1vcmVEZXRhaWxzPiB7XG4gIHRyeSB7XG4gICAgZGVidWcoJ2dldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzIGZvciBpdGVtOicsIGl0ZW0pO1xuICAgIGlmIChpdGVtLk1DMDJTaG93RGV0YWlsc0VaID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHRhclBldWxhID0gbW9tZW50KGl0ZW0uTUMwMlBldWxhVGFhRVopO1xuICAgICAgY29uc3QgdGFyRXJlY2ggPSBtb21lbnQoaXRlbS5NQzAyRXJlaFRhYUVaKTtcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBpbktvZEdvcmVtOiBpdGVtLk1DMDJLb2RHb3JlbUVaLFxuICAgICAgICBpbkFzbWFjaHRhOiBpdGVtLk1DMDJBc21haHRhTWVrb3JpdEVaLFxuICAgICAgICBpblNjaHVtOiBpdGVtLk1DMDJTY2h1bUVaLFxuICAgICAgICBpbk5ha3Zhbml0OiBpdGVtLk1DMDJLb2RHb3JlbUVaLFxuICAgICAgICBpblN1Z1RudWE6IGl0ZW0uTUMwMlN1Z1RudWFLYXNwaXRFWixcbiAgICAgICAgaW5BZ2lkOiBpdGVtLk1DMDJBZ2lkRVosXG4gICAgICAgIGluVGFyUGV1bGFGb3JtYXR0ZWQ6IHRhclBldWxhLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluVGFyRXJlY2hGb3JtYXR0ZWQ6ICh0YXJFcmVjaC55ZWFyKCkgPiAyMDAwID8gdGFyRXJlY2ggOiB0YXJQZXVsYSkuZm9ybWF0KERBVEVfRk9STUFUKSxcbiAgICAgICAgaW5Lb2ROb3NlOiBpdGVtLk1DMDJTZWlmTWFyYWxFWixcbiAgICAgICAgaW5Lb2RUYXROb3NlOiBpdGVtLk1DMDJOb3NlTWFyYWxFWixcbiAgICAgICAgaW5UcmFuc2FjdGlvbk51bWJlcjogaXRlbS5UcmFuc2FjdGlvbk51bWJlcixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxNb3JlRGV0YWlsc1Jlc3BvbnNlPihwYWdlLCBNT1JFX0RFVEFJTFNfVVJMLCBwYXJhbXMsIGFwaUhlYWRlcnMpO1xuICAgICAgY29uc3QgZGV0YWlscyA9IHJlc3BvbnNlPy5ib2R5LmZpZWxkcz8uWzBdPy5bMF0/LlJlY29yZHM/LlswXS5GaWVsZHM7XG4gICAgICBkZWJ1ZygnZmV0Y2ggZGV0YWlscyBmb3InLCBwYXJhbXMsICdkZXRhaWxzOicsIGRldGFpbHMpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlscykgJiYgZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBkZXRhaWxzLm1hcChyZWNvcmQgPT4gW3JlY29yZC5MYWJlbC50cmltKCksIHJlY29yZC5WYWx1ZS50cmltKCldKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbnRyaWVzOiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyksXG4gICAgICAgICAgbWVtbzogZW50cmllc1xuICAgICAgICAgICAgLmZpbHRlcigoW2xhYmVsXSkgPT4gWyfXqdedJywgJ9ee15TXldeqJywgJ9eX16nXkdeV158nXS5zb21lKGtleSA9PiBsYWJlbC5zdGFydHNXaXRoKGtleSkpKVxuICAgICAgICAgICAgLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+IGAke2xhYmVsfSAke3ZhbHVlfWApXG4gICAgICAgICAgICAuam9pbignLCAnKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZGVidWcoJ0Vycm9yIGZldGNoaW5nIGV4dHJhIHRyYW5zYWN0aW9uIGRldGFpbHM6JywgZXJyb3IpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnRyaWVzOiB7fSxcbiAgICBtZW1vOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0OiBIVFRQUmVxdWVzdCwgb3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0LnBvc3REYXRhKCkgfHwgJ3t9Jyk7XG5cbiAgZGF0YS5pbkZyb21EYXRlID0gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZSkuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgZGF0YS5pblRvRGF0ZSA9IG1vbWVudCgpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEudGFibGUubWF4Um93ID0gTUFYX1JPV1NfUEVSX1JFUVVFU1Q7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0OiBIVFRQUmVxdWVzdCkge1xuICByZXR1cm4ge1xuICAgIG1penJhaGl4c3JmdG9rZW46IHJlcXVlc3QuaGVhZGVycygpLm1penJhaGl4c3JmdG9rZW4sXG4gICAgJ0NvbnRlbnQtVHlwZSc6IHJlcXVlc3QuaGVhZGVycygpWydjb250ZW50LXR5cGUnXSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyhcbiAgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sXG4gIGdldE1vcmVEZXRhaWxzOiAocm93OiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IFByb21pc2U8TW9yZURldGFpbHM+LFxuICBwZW5kaW5nSWZUb2RheVRyYW5zYWN0aW9uOiBib29sZWFuID0gZmFsc2UsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIHR4bnMubWFwKGFzeW5jIHJvdyA9PiB7XG4gICAgICBjb25zdCBtb3JlRGV0YWlscyA9IGF3YWl0IGdldE1vcmVEZXRhaWxzKHJvdyk7XG5cbiAgICAgIGNvbnN0IHR4bkRhdGUgPSBtb21lbnQocm93Lk1DMDJQZXVsYVRhYUVaLCBtb21lbnQuSFRNTDVfRk1ULkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgICBpZGVudGlmaWVyOiByb3cuTUMwMkFzbWFodGFNZWtvcml0RVogPyBwYXJzZUludChyb3cuTUMwMkFzbWFodGFNZWtvcml0RVosIDEwKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0ZTogdHhuRGF0ZSxcbiAgICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuRGF0ZSxcbiAgICAgICAgb3JpZ2luYWxBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgICBjaGFyZ2VkQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICAgIGRlc2NyaXB0aW9uOiByb3cuTUMwMlRudWFUZXVyRVosXG4gICAgICAgIG1lbW86IG1vcmVEZXRhaWxzPy5tZW1vLFxuICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgcGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbiAmJiByb3cuSXNUb2RheVRyYW5zYWN0aW9uXG4gICAgICAgICAgICA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZ1xuICAgICAgICAgICAgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIH07XG4gICAgfSksXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKHBhZ2U6IEZyYW1lKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCAndHIucmdSb3csIHRyLnJnQWx0Um93JywgW10sIHRycyA9PiB7XG4gICAgcmV0dXJuIHRycy5tYXAodHIgPT4gQXJyYXkuZnJvbSh0ci5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpLCB0ZCA9PiB0ZC50ZXh0Q29udGVudCB8fCAnJykpO1xuICB9KTtcblxuICByZXR1cm4gcGVuZGluZ1R4blxuICAgIC5tYXAoKFtkYXRlU3RyLCBkZXNjcmlwdGlvbiwgaW5jb21lQW1vdW50U3RyLCBhbW91bnRTdHJdKSA9PiAoe1xuICAgICAgZGF0ZTogbW9tZW50KGRhdGVTdHIsICdERC9NTS9ZWScpLnRvSVNPU3RyaW5nKCksXG4gICAgICBhbW91bnQ6IHBhcnNlSW50KGFtb3VudFN0ciwgMTApLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBpbmNvbWVBbW91bnRTdHIsIC8vIFRPRE86IGhhbmRsZSBpbmNvbWVBbW91bnRTdHIgb25jZSB3ZSBrbm93IHRoZSBzaWduIG9mIGl0XG4gICAgfSkpXG4gICAgLmZpbHRlcih0eG4gPT4gdHhuLmRhdGUpXG4gICAgLm1hcCgoeyBkYXRlLCBkZXNjcmlwdGlvbiwgYW1vdW50IH0pID0+ICh7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIGRhdGUsXG4gICAgICBwcm9jZXNzZWREYXRlOiBkYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcsXG4gICAgfSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwb3N0TG9naW4ocGFnZTogUGFnZSkge1xuICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBhZnRlckxvZ2luU2VsZWN0b3IpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciksXG4gICAgd2FpdEZvclVybChwYWdlLCBDSEFOR0VfUEFTU1dPUkRfVVJMKSxcbiAgXSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgTWl6cmFoaVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3IsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcih0aGlzLnBhZ2UsIGxvZ2luU3Bpbm5lclNlbGVjdG9yKSxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHBvc3RMb2dpbih0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgbnVtT2ZBY2NvdW50cyA9IChhd2FpdCB0aGlzLnBhZ2UuJCQoYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yKSkubGVuZ3RoO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bU9mQWNjb3VudHM7IGkgKz0gMSkge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoJyNkcm9wZG93bkJhc2ljLCAuaXRlbScsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYCR7YWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yfTpudGgtY2hpbGQoJHtpICsgMX0pYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHRoaXMuZmV0Y2hBY2NvdW50KCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBhY2NvdW50czogcmVzdWx0cyxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAoZSBhcyBFcnJvcikubWVzc2FnZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQZW5kaW5nVHJhbnNhY3Rpb25zKCk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7UEVORElOR19UUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgd2FpdFVudGlsSWZyYW1lRm91bmQodGhpcy5wYWdlLCBmID0+IGYudXJsKCkuaW5jbHVkZXMoUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FKSk7XG4gICAgY29uc3QgaXNQZW5kaW5nID0gYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCBwZW5kaW5nVHJ4SWRlbnRpZmllcklkKVxuICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgaWYgKCFpc1BlbmRpbmcpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgZXh0cmFjdFBlbmRpbmdUcmFuc2FjdGlvbnMoZnJhbWUpO1xuICAgIHJldHVybiBwZW5kaW5nVHhuO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFjY291bnQoKSB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLndhaXRGb3JTZWxlY3RvcihgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtPU0hfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1RSQU5TQUNUSU9OU19QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG5cbiAgICBjb25zdCBhY2NvdW50TnVtYmVyRWxlbWVudCA9IGF3YWl0IHRoaXMucGFnZS4kKCcjZHJvcGRvd25CYXNpYyBiIHNwYW4nKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVySGFuZGxlID0gYXdhaXQgYWNjb3VudE51bWJlckVsZW1lbnQ/LmdldFByb3BlcnR5KCd0aXRsZScpO1xuICAgIGNvbnN0IGFjY291bnROdW1iZXIgPSAoYXdhaXQgYWNjb3VudE51bWJlckhhbmRsZT8uanNvblZhbHVlKCkpIGFzIHN0cmluZztcbiAgICBpZiAoIWFjY291bnROdW1iZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQWNjb3VudCBudW1iZXIgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgY29uc3QgW3Jlc3BvbnNlLCBhcGlIZWFkZXJzXSA9IGF3YWl0IFByb21pc2UuYW55KFxuICAgICAgVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMUy5tYXAoYXN5bmMgdXJsID0+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yUmVxdWVzdCh1cmwpO1xuICAgICAgICBjb25zdCBkYXRhID0gY3JlYXRlRGF0YUZyb21SZXF1ZXN0KHJlcXVlc3QsIHRoaXMub3B0aW9ucy5zdGFydERhdGUpO1xuICAgICAgICBjb25zdCBoZWFkZXJzID0gY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0KHJlcXVlc3QpO1xuXG4gICAgICAgIHJldHVybiBbYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0Pih0aGlzLnBhZ2UsIHVybCwgZGF0YSwgaGVhZGVycyksIGhlYWRlcnNdIGFzIGNvbnN0O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGlmICghcmVzcG9uc2UgfHwgcmVzcG9uc2UuaGVhZGVyLnN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbi4gUmVzcG9uc2UgbWVzc2FnZTogJHtyZXNwb25zZSA/IHJlc3BvbnNlLmhlYWRlci5tZXNzYWdlc1swXS50ZXh0IDogJyd9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZXZhbnRSb3dzID0gcmVzcG9uc2UuYm9keS50YWJsZS5yb3dzLmZpbHRlcihyb3cgPT4gcm93LlJlY1R5cGVTcGVjaWZpZWQpO1xuICAgIGNvbnN0IG9zaFR4biA9IGF3YWl0IGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gICAgICByZWxldmFudFJvd3MsXG4gICAgICB0aGlzLm9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb25cbiAgICAgICAgPyByb3cgPT4gZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHModGhpcy5wYWdlLCByb3csIGFwaUhlYWRlcnMpXG4gICAgICAgIDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHsgZW50cmllczoge30sIG1lbW86IHVuZGVmaW5lZCB9KSxcbiAgICAgIHRoaXMub3B0aW9ucy5vcHRJbkZlYXR1cmVzPy5pbmNsdWRlcygnbWl6cmFoaTpwZW5kaW5nSWZUb2RheVRyYW5zYWN0aW9uJyksXG4gICAgKTtcblxuICAgIG9zaFR4blxuICAgICAgLmZpbHRlcih0eG4gPT4gdGhpcy5zaG91bGRNYXJrQXNQZW5kaW5nKHR4bikpXG4gICAgICAuZm9yRWFjaCh0eG4gPT4ge1xuICAgICAgICB0eG4uc3RhdHVzID0gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nO1xuICAgICAgfSk7XG5cbiAgICAvLyB3b3JrYXJvdW5kIGZvciBhIGJ1ZyB3aGljaCB0aGUgYmFuaydzIEFQSSByZXR1cm5zIHRyYW5zYWN0aW9ucyBiZWZvcmUgdGhlIHJlcXVlc3RlZCBzdGFydCBkYXRlXG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBnZXRTdGFydE1vbWVudCh0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICBjb25zdCBvc2hUeG5BZnRlclN0YXJ0RGF0ZSA9IG9zaFR4bi5maWx0ZXIodHhuID0+IG1vbWVudCh0eG4uZGF0ZSkuaXNTYW1lT3JBZnRlcihzdGFydE1vbWVudCkpO1xuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IHRoaXMuZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpO1xuICAgIGNvbnN0IGFsbFR4biA9IG9zaFR4bkFmdGVyU3RhcnREYXRlLmNvbmNhdChwZW5kaW5nVHhuKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogYWxsVHhuLFxuICAgICAgYmFsYW5jZTogK3Jlc3BvbnNlLmJvZHkuZmllbGRzPy5ZaXRyYSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRNYXJrQXNQZW5kaW5nKHR4bjogVHJhbnNhY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZk5vSWRlbnRpZmllcicpICYmICF0eG4uaWRlbnRpZmllcikge1xuICAgICAgZGVidWcoYE1hcmtpbmcgdHJhbnNhY3Rpb24gJyR7dHhuLmRlc2NyaXB0aW9ufScgYXMgcGVuZGluZyBkdWUgdG8gbm8gaWRlbnRpZmllci5gKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9ucy5vcHRJbkZlYXR1cmVzPy5pbmNsdWRlcygnbWl6cmFoaTpwZW5kaW5nSWZIYXNHZW5lcmljRGVzY3JpcHRpb24nKSAmJlxuICAgICAgZ2VuZXJpY0Rlc2NyaXB0aW9ucy5pbmNsdWRlcyh0eG4uZGVzY3JpcHRpb24pXG4gICAgKSB7XG4gICAgICBkZWJ1ZyhgTWFya2luZyB0cmFuc2FjdGlvbiAnJHt0eG4uZGVzY3JpcHRpb259JyBhcyBwZW5kaW5nIGR1ZSB0byBnZW5lcmljIGRlc2NyaXB0aW9uLmApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1penJhaGlTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBTUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sdUJB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
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJyZXBsYWNlQWxsIiwidHhuIiwicG9zdExvZ2luIiwicmFjZSIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsIndhaXRGb3JVcmwiLCJNaXpyYWhpU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwid2FpdFVudGlsRWxlbWVudERpc2FwcGVhciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCIkZXZhbCIsImVsIiwiY2xpY2siLCJudW1PZkFjY291bnRzIiwicmVzdWx0cyIsImkiLCJwdXNoIiwiZmV0Y2hBY2NvdW50Iiwic3VjY2VzcyIsImFjY291bnRzIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJHZW5lcmljIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImdldFBlbmRpbmdUcmFuc2FjdGlvbnMiLCJmcmFtZSIsIndhaXRVbnRpbElmcmFtZUZvdW5kIiwiZiIsInVybCIsImluY2x1ZGVzIiwiaXNQZW5kaW5nIiwidGhlbiIsImNhdGNoIiwid2FpdEZvclNlbGVjdG9yIiwiYWNjb3VudE51bWJlckVsZW1lbnQiLCJhY2NvdW50TnVtYmVySGFuZGxlIiwiZ2V0UHJvcGVydHkiLCJhY2NvdW50TnVtYmVyIiwianNvblZhbHVlIiwiRXJyb3IiLCJhbnkiLCJ3YWl0Rm9yUmVxdWVzdCIsImhlYWRlciIsIm1lc3NhZ2VzIiwidGV4dCIsInJlbGV2YW50Um93cyIsInJvd3MiLCJSZWNUeXBlU3BlY2lmaWVkIiwib3NoVHhuIiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJyZXNvbHZlIiwib3B0SW5GZWF0dXJlcyIsInNob3VsZE1hcmtBc1BlbmRpbmciLCJmb3JFYWNoIiwic3RhcnRNb21lbnQiLCJvc2hUeG5BZnRlclN0YXJ0RGF0ZSIsImlzU2FtZU9yQWZ0ZXIiLCJhbGxUeG4iLCJjb25jYXQiLCJiYWxhbmNlIiwiWWl0cmEiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWl6cmFoaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEZyYW1lLCB0eXBlIEhUVFBSZXF1ZXN0LCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHdhaXRVbnRpbElmcmFtZUZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yVXJsIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtaXpyYWhpJyk7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBSZWNUeXBlU3BlY2lmaWVkOiBib29sZWFuO1xuICBNQzAyUGV1bGFUYWFFWjogc3RyaW5nO1xuICBNQzAyU2NodW1FWjogbnVtYmVyO1xuICBNQzAyQXNtYWh0YU1la29yaXRFWjogc3RyaW5nO1xuICBNQzAyVG51YVRldXJFWjogc3RyaW5nO1xuICBJc1RvZGF5VHJhbnNhY3Rpb246IGJvb2xlYW47XG4gIE1DMDJFcmVoVGFhRVo6IHN0cmluZztcbiAgTUMwMlNob3dEZXRhaWxzRVo/OiBzdHJpbmc7XG4gIE1DMDJLb2RHb3JlbUVaOiBhbnk7XG4gIE1DMDJTdWdUbnVhS2FzcGl0RVo6IGFueTtcbiAgTUMwMkFnaWRFWjogYW55O1xuICBNQzAyU2VpZk1hcmFsRVo6IGFueTtcbiAgTUMwMk5vc2VNYXJhbEVaOiBhbnk7XG4gIFRyYW5zYWN0aW9uTnVtYmVyOiBhbnk7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0IHtcbiAgaGVhZGVyOiB7XG4gICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICBtZXNzYWdlczogeyB0ZXh0OiBzdHJpbmcgfVtdO1xuICB9O1xuICBib2R5OiB7XG4gICAgZmllbGRzOiB7XG4gICAgICBZaXRyYTogc3RyaW5nO1xuICAgIH07XG4gICAgdGFibGU6IHtcbiAgICAgIHJvd3M6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbnR5cGUgTW9yZURldGFpbHNSZXNwb25zZSA9IHtcbiAgYm9keToge1xuICAgIGZpZWxkczogW1xuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgUmVjb3JkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBGaWVsZHM6IEFycmF5PHtcbiAgICAgICAgICAgICAgICBMYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIFZhbHVlOiBzdHJpbmc7XG4gICAgICAgICAgICAgIH0+O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgXSxcbiAgICBdO1xuICB9O1xufTtcblxudHlwZSBNb3JlRGV0YWlscyA9IHtcbiAgZW50cmllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgbWVtbzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuY29uc3QgQkFTRV9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUJTSVRFX1VSTH0vbG9naW4vaW5kZXguaHRtbCMvYXV0aC1wYWdlLWhlYDtcbmNvbnN0IEJBU0VfQVBQX1VSTCA9ICdodHRwczovL210by5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgQUZURVJfTE9HSU5fQkFTRV9VUkwgPSAvaHR0cHM6XFwvXFwvbXRvXFwubWl6cmFoaS10ZWZhaG90XFwuY29cXC5pbFxcL09ubGluZUFwcFxcLy4qLztcbmNvbnN0IE9TSF9QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtTWFpbic7XG5jb25zdCBUUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9yb290LW1haW4tb3NoLXA0MjhOZXcnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMUyA9IFtcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmVQaWxvdC9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL1NreU9TSC9nZXQ0MjhJbmRleGAsXG5dO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9sZWdhY3ktT3NoLXA0MjAnO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FID0gJ3A0MjAuYXNweCc7XG5jb25zdCBNT1JFX0RFVEFJTFNfVVJMID0gYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL09TSC9nZXRNYWhlckJlcnVyaW1TTUZgO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX1VSTCA9IC9odHRwczpcXC9cXC93d3dcXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvbG9naW5cXC9pbmRleFxcLmh0bWwjXFwvY2hhbmdlLXBhc3MvO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBNQVhfUk9XU19QRVJfUkVRVUVTVCA9IDEwMDAwMDAwMDAwO1xuXG5jb25zdCB1c2VybmFtZVNlbGVjdG9yID0gJyN1c2VyTnVtYmVyRGVza3RvcEhlYic7XG5jb25zdCBwYXNzd29yZFNlbGVjdG9yID0gJyNwYXNzd29yZERlc2t0b3BIZWInO1xuY29uc3Qgc3VibWl0QnV0dG9uU2VsZWN0b3IgPSAnYnV0dG9uLmJ0bi5idG4tcHJpbWFyeSc7XG5jb25zdCBpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciA9ICdhW2hyZWYqPVwiaHR0cHM6Ly9zYy5taXpyYWhpLXRlZmFob3QuY28uaWwvU0NTZXJ2aWNlcy9TQy9QMDEwLmFzcHhcIl0nO1xuY29uc3QgYWZ0ZXJMb2dpblNlbGVjdG9yID0gJyNkcm9wZG93bkJhc2ljJztcbmNvbnN0IGxvZ2luU3Bpbm5lclNlbGVjdG9yID0gJ2Rpdi5uZ3gtb3ZlcmxheS5sb2FkaW5nLWZvcmVncm91bmQnO1xuY29uc3QgYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yID0gJyNBY2NvdW50UGlja2VyIC5pdGVtJztcbmNvbnN0IHBlbmRpbmdUcnhJZGVudGlmaWVySWQgPSAnI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjJfcGFuZWwxJztcbmNvbnN0IGNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUgPSAn16LXldeR16gg15XXqdeRJztcbmNvbnN0IGNoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lID0gJ0NoZWNraW5nIEFjY291bnQnO1xuY29uc3QgZ2VuZXJpY0Rlc2NyaXB0aW9ucyA9IFsn15TXoteR16jXqiDXmdeV157XnyDXnNeR16DXpyDXlteoINee16HXoNeZ16Mg15bXqCddO1xuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiB1c2VybmFtZVNlbGVjdG9yLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiBwYXNzd29yZFNlbGVjdG9yLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNMb2dnZWRJbihvcHRpb25zOiB7IHBhZ2U/OiBQYWdlIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFvcHRpb25zPy5wYWdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG9zaFhQYXRoID0gYC8vYS8vc3Bhbltjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZX1cIikgb3IgY29udGFpbnMoLiwgXCIke2NoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lfVwiKV1gO1xuICBjb25zdCBvc2hUYWIgPSBhd2FpdCBvcHRpb25zLnBhZ2UuJCQoYHhwYXRoJHtvc2hYUGF0aH1gKTtcbiAgcmV0dXJuIG9zaFRhYi5sZW5ndGggPiAwO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICByZXR1cm4ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtBRlRFUl9MT0dJTl9CQVNFX1VSTCwgaXNMb2dnZWRJbl0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKCkgPT4gISEoYXdhaXQgcGFnZS4kKGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSldLFxuICAgIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbQ0hBTkdFX1BBU1NXT1JEX1VSTF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnNTdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICByZXR1cm4gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHBhZ2U6IFBhZ2UsXG4gIGl0ZW06IFNjcmFwZWRUcmFuc2FjdGlvbixcbiAgYXBpSGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFByb21pc2U8TW9yZURldGFpbHM+IHtcbiAgdHJ5IHtcbiAgICBkZWJ1ZygnZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHMgZm9yIGl0ZW06JywgaXRlbSk7XG4gICAgaWYgKGl0ZW0uTUMwMlNob3dEZXRhaWxzRVogPT09ICcxJykge1xuICAgICAgY29uc3QgdGFyUGV1bGEgPSBtb21lbnQoaXRlbS5NQzAyUGV1bGFUYWFFWik7XG4gICAgICBjb25zdCB0YXJFcmVjaCA9IG1vbWVudChpdGVtLk1DMDJFcmVoVGFhRVopO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIGluS29kR29yZW06IGl0ZW0uTUMwMktvZEdvcmVtRVosXG4gICAgICAgIGluQXNtYWNodGE6IGl0ZW0uTUMwMkFzbWFodGFNZWtvcml0RVosXG4gICAgICAgIGluU2NodW06IGl0ZW0uTUMwMlNjaHVtRVosXG4gICAgICAgIGluTmFrdmFuaXQ6IGl0ZW0uTUMwMktvZEdvcmVtRVosXG4gICAgICAgIGluU3VnVG51YTogaXRlbS5NQzAyU3VnVG51YUthc3BpdEVaLFxuICAgICAgICBpbkFnaWQ6IGl0ZW0uTUMwMkFnaWRFWixcbiAgICAgICAgaW5UYXJQZXVsYUZvcm1hdHRlZDogdGFyUGV1bGEuZm9ybWF0KERBVEVfRk9STUFUKSxcbiAgICAgICAgaW5UYXJFcmVjaEZvcm1hdHRlZDogKHRhckVyZWNoLnllYXIoKSA+IDIwMDAgPyB0YXJFcmVjaCA6IHRhclBldWxhKS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpbktvZE5vc2U6IGl0ZW0uTUMwMlNlaWZNYXJhbEVaLFxuICAgICAgICBpbktvZFRhdE5vc2U6IGl0ZW0uTUMwMk5vc2VNYXJhbEVaLFxuICAgICAgICBpblRyYW5zYWN0aW9uTnVtYmVyOiBpdGVtLlRyYW5zYWN0aW9uTnVtYmVyLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPE1vcmVEZXRhaWxzUmVzcG9uc2U+KHBhZ2UsIE1PUkVfREVUQUlMU19VUkwsIHBhcmFtcywgYXBpSGVhZGVycyk7XG4gICAgICBjb25zdCBkZXRhaWxzID0gcmVzcG9uc2U/LmJvZHkuZmllbGRzPy5bMF0/LlswXT8uUmVjb3Jkcz8uWzBdLkZpZWxkcztcbiAgICAgIGRlYnVnKCdmZXRjaCBkZXRhaWxzIGZvcicsIHBhcmFtcywgJ2RldGFpbHM6JywgZGV0YWlscyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXRhaWxzKSAmJiBkZXRhaWxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGRldGFpbHMubWFwKHJlY29yZCA9PiBbcmVjb3JkLkxhYmVsLnRyaW0oKSwgcmVjb3JkLlZhbHVlLnRyaW0oKV0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudHJpZXM6IE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSxcbiAgICAgICAgICBtZW1vOiBlbnRyaWVzXG4gICAgICAgICAgICAuZmlsdGVyKChbbGFiZWxdKSA9PiBbJ9ep150nLCAn157XlNeV16onLCAn15fXqdeR15XXnyddLnNvbWUoa2V5ID0+IGxhYmVsLnN0YXJ0c1dpdGgoa2V5KSkpXG4gICAgICAgICAgICAubWFwKChbbGFiZWwsIHZhbHVlXSkgPT4gYCR7bGFiZWx9ICR7dmFsdWV9YClcbiAgICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBkZWJ1ZygnRXJyb3IgZmV0Y2hpbmcgZXh0cmEgdHJhbnNhY3Rpb24gZGV0YWlsczonLCBlcnJvcik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVudHJpZXM6IHt9LFxuICAgIG1lbW86IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGF0YUZyb21SZXF1ZXN0KHJlcXVlc3Q6IEhUVFBSZXF1ZXN0LCBvcHRpb25zU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QucG9zdERhdGEoKSB8fCAne30nKTtcblxuICBkYXRhLmluRnJvbURhdGUgPSBnZXRTdGFydE1vbWVudChvcHRpb25zU3RhcnREYXRlKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLmluVG9EYXRlID0gbW9tZW50KCkuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgZGF0YS50YWJsZS5tYXhSb3cgPSBNQVhfUk9XU19QRVJfUkVRVUVTVDtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0KHJlcXVlc3Q6IEhUVFBSZXF1ZXN0KSB7XG4gIHJldHVybiB7XG4gICAgbWl6cmFoaXhzcmZ0b2tlbjogcmVxdWVzdC5oZWFkZXJzKCkubWl6cmFoaXhzcmZ0b2tlbixcbiAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5oZWFkZXJzKClbJ2NvbnRlbnQtdHlwZSddLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSxcbiAgZ2V0TW9yZURldGFpbHM6IChyb3c6IFNjcmFwZWRUcmFuc2FjdGlvbikgPT4gUHJvbWlzZTxNb3JlRGV0YWlscz4sXG4gIHBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdHhucy5tYXAoYXN5bmMgcm93ID0+IHtcbiAgICAgIGNvbnN0IG1vcmVEZXRhaWxzID0gYXdhaXQgZ2V0TW9yZURldGFpbHMocm93KTtcblxuICAgICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudChyb3cuTUMwMlBldWxhVGFhRVosIG1vbWVudC5IVE1MNV9GTVQuREFURVRJTUVfTE9DQUxfU0VDT05EUykudG9JU09TdHJpbmcoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIGlkZW50aWZpZXI6IHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiA/IHBhcnNlSW50KHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgICBvcmlnaW5hbEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICAgIGNoYXJnZWRBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgZGVzY3JpcHRpb246IHJvdy5NQzAyVG51YVRldXJFWixcbiAgICAgICAgbWVtbzogbW9yZURldGFpbHM/Lm1lbW8sXG4gICAgICAgIHN0YXR1czpcbiAgICAgICAgICBwZW5kaW5nSWZUb2RheVRyYW5zYWN0aW9uICYmIHJvdy5Jc1RvZGF5VHJhbnNhY3Rpb25cbiAgICAgICAgICAgID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nXG4gICAgICAgICAgICA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFBlbmRpbmdUcmFuc2FjdGlvbnMocGFnZTogRnJhbWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICd0ci5yZ1JvdywgdHIucmdBbHRSb3cnLCBbXSwgdHJzID0+IHtcbiAgICByZXR1cm4gdHJzLm1hcCh0ciA9PiBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyksIHRkID0+IHRkLnRleHRDb250ZW50IHx8ICcnKSk7XG4gIH0pO1xuXG4gIHJldHVybiBwZW5kaW5nVHhuXG4gICAgLm1hcCgoW2RhdGVTdHIsIGRlc2NyaXB0aW9uLCBpbmNvbWVBbW91bnRTdHIsIGFtb3VudFN0cl0pID0+ICh7XG4gICAgICBkYXRlOiBtb21lbnQoZGF0ZVN0ciwgJ0REL01NL1lZJykudG9JU09TdHJpbmcoKSxcbiAgICAgIGFtb3VudDogcGFyc2VGbG9hdChhbW91bnRTdHIucmVwbGFjZUFsbCgnLCcsICcnKSksXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGluY29tZUFtb3VudFN0ciwgLy8gVE9ETzogaGFuZGxlIGluY29tZUFtb3VudFN0ciBvbmNlIHdlIGtub3cgdGhlIHNpZ24gb2YgaXRcbiAgICB9KSlcbiAgICAuZmlsdGVyKHR4biA9PiB0eG4uZGF0ZSlcbiAgICAubWFwKCh7IGRhdGUsIGRlc2NyaXB0aW9uLCBhbW91bnQgfSkgPT4gKHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgZGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGRhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogYW1vdW50LFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyxcbiAgICB9KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBvc3RMb2dpbihwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGFmdGVyTG9naW5TZWxlY3RvciksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSxcbiAgICB3YWl0Rm9yVXJsKHBhZ2UsIENIQU5HRV9QQVNTV09SRF9VUkwpLFxuICBdKTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNaXpyYWhpU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcixcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHRoaXMucGFnZSwgbG9naW5TcGlubmVyU2VsZWN0b3IpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoJyNkcm9wZG93bkJhc2ljLCAuaXRlbScsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG5cbiAgICBjb25zdCBudW1PZkFjY291bnRzID0gKGF3YWl0IHRoaXMucGFnZS4kJChhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IpKS5sZW5ndGg7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtT2ZBY2NvdW50czsgaSArPSAxKSB7XG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgJHthY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3J9Om50aC1jaGlsZCgke2kgKyAxfSlgLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICByZXN1bHRzLnB1c2goYXdhaXQgdGhpcy5mZXRjaEFjY291bnQoKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGFjY291bnRzOiByZXN1bHRzLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IChlIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCB3YWl0VW50aWxJZnJhbWVGb3VuZCh0aGlzLnBhZ2UsIGYgPT4gZi51cmwoKS5pbmNsdWRlcyhQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUpKTtcbiAgICBjb25zdCBpc1BlbmRpbmcgPSBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsIHBlbmRpbmdUcnhJZGVudGlmaWVySWQpXG4gICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgICBpZiAoIWlzUGVuZGluZykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhmcmFtZSk7XG4gICAgcmV0dXJuIHBlbmRpbmdUeG47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQWNjb3VudCgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclNlbGVjdG9yKGBhW2hyZWYqPVwiJHtPU0hfUEFHRX1cIl1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgYGFbaHJlZio9XCIke1RSQU5TQUNUSU9OU19QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IGFjY291bnROdW1iZXJFbGVtZW50ID0gYXdhaXQgdGhpcy5wYWdlLiQoJyNkcm9wZG93bkJhc2ljIGIgc3BhbicpO1xuICAgIGNvbnN0IGFjY291bnROdW1iZXJIYW5kbGUgPSBhd2FpdCBhY2NvdW50TnVtYmVyRWxlbWVudD8uZ2V0UHJvcGVydHkoJ3RpdGxlJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlciA9IChhd2FpdCBhY2NvdW50TnVtYmVySGFuZGxlPy5qc29uVmFsdWUoKSkgYXMgc3RyaW5nO1xuICAgIGlmICghYWNjb3VudE51bWJlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY2NvdW50IG51bWJlciBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBbcmVzcG9uc2UsIGFwaUhlYWRlcnNdID0gYXdhaXQgUHJvbWlzZS5hbnkoXG4gICAgICBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTLm1hcChhc3luYyB1cmwgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5wYWdlLndhaXRGb3JSZXF1ZXN0KHVybCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdCwgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdCk7XG5cbiAgICAgICAgcmV0dXJuIFthd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQ+KHRoaXMucGFnZSwgdXJsLCBkYXRhLCBoZWFkZXJzKSwgaGVhZGVyc10gYXMgY29uc3Q7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5oZWFkZXIuc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uLiBSZXNwb25zZSBtZXNzYWdlOiAke3Jlc3BvbnNlID8gcmVzcG9uc2UuaGVhZGVyLm1lc3NhZ2VzWzBdLnRleHQgOiAnJ31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxldmFudFJvd3MgPSByZXNwb25zZS5ib2R5LnRhYmxlLnJvd3MuZmlsdGVyKHJvdyA9PiByb3cuUmVjVHlwZVNwZWNpZmllZCk7XG4gICAgY29uc3Qgb3NoVHhuID0gYXdhaXQgY29udmVydFRyYW5zYWN0aW9ucyhcbiAgICAgIHJlbGV2YW50Um93cyxcbiAgICAgIHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvblxuICAgICAgICA/IHJvdyA9PiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyh0aGlzLnBhZ2UsIHJvdywgYXBpSGVhZGVycylcbiAgICAgICAgOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyBlbnRyaWVzOiB7fSwgbWVtbzogdW5kZWZpbmVkIH0pLFxuICAgICAgdGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24nKSxcbiAgICApO1xuXG4gICAgb3NoVHhuXG4gICAgICAuZmlsdGVyKHR4biA9PiB0aGlzLnNob3VsZE1hcmtBc1BlbmRpbmcodHhuKSlcbiAgICAgIC5mb3JFYWNoKHR4biA9PiB7XG4gICAgICAgIHR4bi5zdGF0dXMgPSBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmc7XG4gICAgICB9KTtcblxuICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIHdoaWNoIHRoZSBiYW5rJ3MgQVBJIHJldHVybnMgdHJhbnNhY3Rpb25zIGJlZm9yZSB0aGUgcmVxdWVzdGVkIHN0YXJ0IGRhdGVcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IGdldFN0YXJ0TW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpO1xuICAgIGNvbnN0IG9zaFR4bkFmdGVyU3RhcnREYXRlID0gb3NoVHhuLmZpbHRlcih0eG4gPT4gbW9tZW50KHR4bi5kYXRlKS5pc1NhbWVPckFmdGVyKHN0YXJ0TW9tZW50KSk7XG5cbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgdGhpcy5nZXRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7XG4gICAgY29uc3QgYWxsVHhuID0gb3NoVHhuQWZ0ZXJTdGFydERhdGUuY29uY2F0KHBlbmRpbmdUeG4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBhbGxUeG4sXG4gICAgICBiYWxhbmNlOiArcmVzcG9uc2UuYm9keS5maWVsZHM/LllpdHJhLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE1hcmtBc1BlbmRpbmcodHhuOiBUcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmTm9JZGVudGlmaWVyJykgJiYgIXR4bi5pZGVudGlmaWVyKSB7XG4gICAgICBkZWJ1ZyhgTWFya2luZyB0cmFuc2FjdGlvbiAnJHt0eG4uZGVzY3JpcHRpb259JyBhcyBwZW5kaW5nIGR1ZSB0byBubyBpZGVudGlmaWVyLmApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbicpICYmXG4gICAgICBnZW5lcmljRGVzY3JpcHRpb25zLmluY2x1ZGVzKHR4bi5kZXNjcmlwdGlvbilcbiAgICApIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIGdlbmVyaWMgZGVzY3JpcHRpb24uYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWl6cmFoaVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9B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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "israeli-bank-scrapers",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.3",
|
|
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",
|