@wavemaker/app-ng-runtime 11.11.0-rc.6106 → 11.11.0-rc.6109
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/build-task/bundles/index.umd.js +1 -1
- package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +2 -2
- package/build-task/fesm2022/index.mjs +1 -1
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/base/bundles/index.umd.js +11 -7
- package/components/base/esm2022/pipes/custom-pipes.mjs +3 -2
- package/components/base/esm2022/utils/form-utils.mjs +3 -2
- package/components/base/fesm2022/index.mjs +7 -4
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +1 -1
- package/components/chart/bundles/index.umd.js +4 -2
- package/components/chart/esm2022/chart.utils.mjs +3 -2
- package/components/chart/fesm2022/index.mjs +2 -1
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/bundles/index.umd.js +1 -1
- package/components/containers/wizard/esm2022/wizard.component.mjs +2 -2
- package/components/containers/wizard/fesm2022/index.mjs +1 -1
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +4 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +3 -2
- package/components/data/table/fesm2022/index.mjs +2 -1
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/bundles/index.umd.js +5 -3
- package/components/input/calendar/esm2022/calendar.component.mjs +4 -3
- package/components/input/calendar/fesm2022/index.mjs +3 -2
- package/components/input/calendar/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/bundles/index.umd.js +45 -39
- package/components/input/epoch/esm2022/base-date-time.component.mjs +3 -2
- package/components/input/epoch/esm2022/date/imaskUtil.mjs +3 -2
- package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +4 -3
- package/components/input/epoch/esm2022/time/time.component.mjs +4 -3
- package/components/input/epoch/fesm2022/index.mjs +43 -38
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +6 -4
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/utils.mjs +3 -2
- package/core/fesm2022/index.mjs +2 -1
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/types/types.d.ts +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +4 -2
- package/oAuth/esm2022/oAuth.utils.mjs +3 -2
- package/oAuth/fesm2022/index.mjs +2 -1
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +12 -4
- package/runtime/base/esm2022/services/app.service.mjs +8 -1
- package/runtime/base/esm2022/services/i18n.service.mjs +3 -2
- package/runtime/base/fesm2022/index.mjs +8 -1
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/services/app.service.d.ts +1 -0
- package/variables/bundles/index.umd.js +5 -2
- package/variables/esm2022/util/variable/variables.utils.mjs +3 -2
- package/variables/fesm2022/index.mjs +2 -1
- package/variables/fesm2022/index.mjs.map +1 -1
|
@@ -57,7 +57,7 @@ export declare class CustomPipe implements PipeTransform {
|
|
|
57
57
|
static ɵpipe: i0.ɵɵPipeDeclaration<CustomPipe, "custom", true>;
|
|
58
58
|
}
|
|
59
59
|
export declare class TimeFromNowPipe implements PipeTransform {
|
|
60
|
-
transform(data: any):
|
|
60
|
+
transform(data: any): any;
|
|
61
61
|
static ɵfac: i0.ɵɵFactoryDeclaration<TimeFromNowPipe, never>;
|
|
62
62
|
static ɵpipe: i0.ɵɵPipeDeclaration<TimeFromNowPipe, "timeFromNow", true>;
|
|
63
63
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@wm/components/base'), require('@wm/components/basic'), require('@angular/core'), require('@wm/core'), require('lodash-es'), require('moment')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', '@angular/common', '@wm/components/base', '@wm/components/basic', '@angular/core', '@wm/core', 'lodash-es', 'moment'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.chart = {}), global.ng.common, global.wm.components.base, global.wm.components.basic, global.ng.core, global.wm.core, global._, global.
|
|
5
|
-
})(this, (function (exports, i2, base, basic, i0, i1, lodashEs,
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.chart = {}), global.ng.common, global.wm.components.base, global.wm.components.basic, global.ng.core, global.wm.core, global._, global.momentLib));
|
|
5
|
+
})(this, (function (exports, i2, base, basic, i0, i1, lodashEs, momentLib) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
var n = Object.create(null);
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
var i2__namespace = /*#__PURE__*/_interopNamespaceDefault(i2);
|
|
25
25
|
var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
|
|
26
26
|
var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
|
|
27
|
+
var momentLib__namespace = /*#__PURE__*/_interopNamespaceDefault(momentLib);
|
|
27
28
|
|
|
28
29
|
const registerProps = () => {
|
|
29
30
|
base.register('wm-chart', new Map([
|
|
@@ -91,6 +92,7 @@
|
|
|
91
92
|
]));
|
|
92
93
|
};
|
|
93
94
|
|
|
95
|
+
const moment = momentLib__namespace.default || window['moment'];
|
|
94
96
|
const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'], allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];
|
|
95
97
|
const dateList = ['01/01/2001', '01/01/2002', '01/01/2003'], themes = {
|
|
96
98
|
'Terrestrial': {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isEmptyObject, prettifyLabels } from '@wm/core';
|
|
2
2
|
import { forEach, includes, invert, isArray, isFinite, isString, isUndefined, split } from "lodash-es";
|
|
3
|
-
import
|
|
3
|
+
import * as momentLib from 'moment';
|
|
4
|
+
const moment = momentLib.default || window['moment'];
|
|
4
5
|
export const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'], allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];
|
|
5
6
|
const dateList = ['01/01/2001', '01/01/2002', '01/01/2003'], themes = {
|
|
6
7
|
'Terrestrial': {
|
|
@@ -719,4 +720,4 @@ export const postPlotChartProcess = (widgetContext, isPreview) => {
|
|
|
719
720
|
};
|
|
720
721
|
// @ts-ignore
|
|
721
722
|
export const getDateList = () => dateList;
|
|
722
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSXJHLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUc1QixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFDcEcsU0FBUyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUV6RixNQUFNLFFBQVEsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQ3ZELE1BQU0sR0FBRztJQUNMLGFBQWEsRUFBRTtRQUNYLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7UUFDcE8sT0FBTyxFQUFFO1lBQ0wsaUJBQWlCLEVBQUUsU0FBUztZQUM1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LGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFVLEVBQUUsRUFBRTtJQUM5RCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUNoRCxtRkFBbUY7SUFDbkYsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxlQUFlLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsMERBQTBEO0lBQzFELGtDQUFrQztJQUNsQyx5RUFBeUU7SUFDekUsSUFBSTtBQUNSLENBQUMsQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0VtcHR5T2JqZWN0LCBwcmV0dGlmeUxhYmVsc30gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtmb3JFYWNoLCBpbmNsdWRlcywgaW52ZXJ0LCBpc0FycmF5LCBpc0Zpbml0ZSwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBzcGxpdH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmRlY2xhcmUgY29uc3QgZDMsIG52O1xuXG5leHBvcnQgY29uc3QgY2hhcnRUeXBlcyA9IFsnQ29sdW1uJywgJ0xpbmUnLCAnQXJlYScsICdDdW11bGF0aXZlIExpbmUnLCAnQmFyJywgJ1BpZScsICdEb251dCcsICdCdWJibGUnXSxcbiAgICBhbGxTaGFwZXMgPSBbJ2NpcmNsZScsICdzcXVhcmUnLCAnZGlhbW9uZCcsICdjcm9zcycsICd0cmlhbmdsZS11cCcsICd0cmlhbmdsZS1kb3duJ107XG5cbmNvbnN0IGRhdGVMaXN0ID0gWycwMS8wMS8yMDAxJywgJzAxLzAxLzIwMDInLCAnMDEvMDEvMjAwMyddLFxuICAgIHRoZW1lcyA9IHtcbiAgICAgICAgJ1RlcnJlc3RyaWFsJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMxZjc3YjQnLCAnI2FlYzdlOCcsICcjZmY3ZjBlJywgJyNmZmJiNzgnLCAnIzJjYTAyYycsICcjOThkZjhhJywgJyNkNjI3MjgnLCAnI2ZmOTg5NicsICcjOTQ2N2JkJywgJyNjNWIwZDUnLCAnIzhjNTY0YicsICcjYzQ5Yzk0JywgJyNlMzc3YzInLCAnI2Y3YjZkMicsICcjN2Y3ZjdmJywgJyNjN2M3YzcnLCAnI2JjYmQyMicsICcjZGJkYjhkJywgJyMxN2JlY2YnLCAnIzllZGFlNSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnI2RlN2QyOCcsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQW5uYWJlbGxlJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzOTNiNzknLCAnIzUyNTRhMycsICcjNmI2ZWNmJywgJyM5YzllZGUnLCAnIzYzNzkzOScsICcjOGNhMjUyJywgJyNiNWNmNmInLCAnI2NlZGI5YycsICcjOGM2ZDMxJywgJyNiZDllMzknLCAnI2U3YmE1MicsICcjZTdjYjk0JywgJyM4NDNjMzknLCAnI2FkNDk0YScsICcjZDY2MTZiJywgJyNlNzk2OWMnLCAnIzdiNDE3MycsICcjYTU1MTk0JywgJyNjZTZkYmQnLCAnI2RlOWVkNiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzJlMzA2ZicsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQXp1cmUnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzMxODJiZCcsICcjNmJhZWQ2JywgJyM5ZWNhZTEnLCAnI2M2ZGJlZicsICcjZTY1NTBkJywgJyNmZDhkM2MnLCAnI2ZkYWU2YicsICcjZmRkMGEyJywgJyMzMWEzNTQnLCAnIzc0YzQ3NicsICcjYTFkOTliJywgJyNjN2U5YzAnLCAnIzc1NmJiMScsICcjOWU5YWM4JywgJyNiY2JkZGMnLCAnI2RhZGFlYicsICcjNjM2MzYzJywgJyM5Njk2OTYnLCAnI2JkYmRiZCcsICcjZDlkOWQ5J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjMzE4MmJkJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdSZXRybyc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMGNhN2ExJywgJyNmZmE2MTUnLCAnIzMzNDk1NycsICcjYWNjNWMyJywgJyM5ODhmOTAnLCAnIzhhY2NjOScsICcjNTE1MTUxJywgJyNmMjc4NjEnLCAnIzM2YzlmZCcsICcjNzk0NjY4JywgJyMwZjcwOWQnLCAnIzBkMjczOCcsICcjNDRiZTc4JywgJyM0YTE4MzknLCAnIzZhMzkzZicsICcjNTU3ZDhiJywgJyM2YzMzMWMnLCAnIzFjMWMxYycsICcjODYxNTAwJywgJyMwOTU2MmEnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM4MDUxM2EnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ01lbGxvdyc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjZjBkY2JmJywgJyM4OGM4NzcnLCAnI2FlYjkxOCcsICcjMmUyYzIzJywgJyNkZGRkZDInLCAnI2RmZTk1NicsICcjNGM5NjNiJywgJyM1ZDM4MDEnLCAnI2UxZWVjMycsICcjY2Q4NDcyJywgJyNmY2ZhYjMnLCAnIzlhNDYzNScsICcjOTI5NWFkJywgJyMyZTNmMTInLCAnIzU2NTY3NycsICcjNTU3ZDhiJywgJyM0ZjRkMDInLCAnIzBjMGMxYicsICcjODMzMzI0JywgJyMyNDEyMGUnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM3YzllNzMnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ09yaWVudCc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjYTgwMDAwJywgJyNjYzZjM2MnLCAnI2YwZTQwMCcsICcjMDAwMDg0JywgJyNmY2NjNmMnLCAnIzAwOWM2YycsICcjY2MzMDljJywgJyM3OGNjMDAnLCAnI2ZjODRlNCcsICcjNDhlNGZjJywgJyM0ODc4ZDgnLCAnIzE4NmMwYycsICcjNjA2MDYwJywgJyNhOGE4YTgnLCAnIzAwMDAwMCcsICcjZDdkN2Q3JywgJyM3NWEwNmUnLCAnIzE5MGQwYicsICcjODg4ODg4JywgJyM2OTRiODQnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyNjMTQyNDInLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0dyYXlTY2FsZSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMTQxNDE0JywgJyMzNTM1MzUnLCAnIzViNWI1YicsICcjODQ4NDg0JywgJyNhOGE4YTgnLCAnI2MzYzNjMycsICcjZTBlMGUwJywgJyNjOGM4YzgnLCAnI2E1YTVhNScsICcjODc4Nzg3JywgJyM2NTY1NjUnLCAnIzRlNGU0ZScsICcjMzAzMDMwJywgJyMxYzFjMWMnLCAnIzRmNGY0ZicsICcjM2IzYjNiJywgJyM3NTc1NzUnLCAnIzYwNjA2MCcsICcjODY4Njg2JywgJyNjMWMxYzEnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM1NzU3NTcnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0ZseWVyJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzZjQ1NGMnLCAnIzVhNjQ2ZScsICcjODQ4Nzc4JywgJyNjZWRlZGYnLCAnIzc0YzRkZCcsICcjMDk0NmVkJywgJyMzODBiYjEnLCAnIzAwMGZmMCcsICcjZjU0YTIzJywgJyMxZGIyNjInLCAnI2JjYTNhYScsICcjZmZhNTAwJywgJyNhODZiMzInLCAnIzYzYTE4YycsICcjNTY3OTVlJywgJyM5MzQzNDMnLCAnI2I3NWY1ZicsICcjNzUyZDJkJywgJyM0ZTExMTEnLCAnIzkyMDYwNiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzQ3NjM3YycsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnTHVtaW5vc2l0eSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjRkZGRkZGJywgJyNlNGU0ZTQnLCAnIzAwYmNkNCcsICcjZjBkZDJmJywgJyMwMGFhYmYnLCAnIzAxODM3NicsICcjZTkxZTYzJywgJyMzOWU1ZDQnLCAnI2ZmNmQ2ZCcsICcjMDBmZjc2JywgJyNmZjk4MDAnLCAnIzk2OTY5NicsICcjZmY0MjAwJywgJyNlMDAwMDAnLCAnIzk1Y2JlNScsICcjNTMzMWZmJywgJyNmZmY0YTcnLCAnI2U3YTgwMCcsICcjMDA2MWU0JywgJyNkNWU3ZmYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM0NzYzN2MnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYmFzaWNQcm9wZXJ0aWVzID0gWyd4YXhpc2xhYmVsJywgJ3lheGlzbGFiZWwnLCAneHVuaXRzJywgJ3l1bml0cycsICd4bnVtYmVyZm9ybWF0JywgJ3hkYXRlZm9ybWF0JywgJ3ludW1iZXJmb3JtYXQnLFxuICAgICAgICAnc2hvd3ZhbHVlcycsICdzaG93bGFiZWxzJywgJ3ZpZXd0eXBlJywgJ2FyZWF2aWV3dHlwZScsICdzdGFnZ2VybGFiZWxzJywgJ3JlZHVjZXh0aWNrcycsICdvZmZzZXR0b3AnLCAnb2Zmc2V0Ym90dG9tJywgJ29mZnNldHJpZ2h0JywgJ29mZnNldGxlZnQnLFxuICAgICAgICAnYmFyc3BhY2luZycsICd4YXhpc2xhYmVsZGlzdGFuY2UnLCAneWF4aXNsYWJlbGRpc3RhbmNlJywgJ3RoZW1lJywgJ2xhYmVsdHlwZScsICdkb251dHJhdGlvJywgJ3Nob3dsYWJlbHNvdXRzaWRlJywgJ3Nob3d4ZGlzdGFuY2UnLCAnc2hvd3lkaXN0YW5jZScsICdzaGFwZScsICdub2RhdGFtZXNzYWdlJywgJ2NhcHRpb25zJywgJ3Nob3d4YXhpcycsICdzaG93eWF4aXMnLFxuICAgICAgICAnY2VudGVybGFiZWwnLCAnY3VzdG9tY29sb3JzJywgJ3Nob3dsZWdlbmQnLCAnbGVnZW5kdHlwZScsICd4ZG9tYWluJywgJ3lkb21haW4nLCAndG9vbHRpcHMnLCAnbGluZXRoaWNrbmVzcycsICdoaWdobGlnaHRwb2ludHMnLCAnaW50ZXJwb2xhdGlvbicsICdsYWJlbHRocmVzaG9sZCddLFxuICAgIGJhclNwYWNpbmdNYXAgPSB7XG4gICAgICAgICdzbWFsbCcgOiAwLjMsXG4gICAgICAgICdtZWRpdW0nIDogMC41LFxuICAgICAgICAnbGFyZ2UnIDogMC44XG4gICAgfSxcbiAgICBkb251dFJhdGlvTWFwID0ge1xuICAgICAgICAnc21hbGwnIDogMC4zLFxuICAgICAgICAnbWVkaXVtJyA6IDAuNixcbiAgICAgICAgJ2xhcmdlJyA6IDAuN1xuICAgIH0sXG4gICAgYmFyU3BhY2luZ01hcEludmVydCA9IGludmVydChiYXJTcGFjaW5nTWFwKSxcbiAgICBkb251dFJhdGlvTWFwSW52ZXJ0ID0gaW52ZXJ0KGRvbnV0UmF0aW9NYXApLFxuICAgIHRpY2tmb3JtYXRzID0ge1xuICAgICAgICAnVGhvdXNhbmQnOiB7XG4gICAgICAgICAgICAncHJlZml4JzogJ0snLFxuICAgICAgICAgICAgJ2RpdmlkZXInOiAxMDAwXG4gICAgICAgIH0sXG4gICAgICAgICdNaWxsaW9uJyA6IHtcbiAgICAgICAgICAgICdwcmVmaXgnOiAnTScsXG4gICAgICAgICAgICAnZGl2aWRlcic6IDEwMDAwMDBcbiAgICAgICAgfSxcbiAgICAgICAgJ0JpbGxpb24nIDoge1xuICAgICAgICAgICAgJ3ByZWZpeCc6ICdCJyxcbiAgICAgICAgICAgICdkaXZpZGVyJzogMTAwMDAwMDAwMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBjaGFydElkID0gJyNwcmV2aWV3LWNoYXJ0JyxcbiAgICBkYXRhVHlwZUpTT04gPSBbJ0NvbHVtbicsICdMaW5lJywgJ1BpZScsICdCYXInLCAnRG9udXQnLCAnQnViYmxlJ10sICAgIC8vIENoYXJ0cyB0aGF0IHN1cHBvcnRzIHRoZSBkYXRhIHRvIGJlIEpTT047XG4gICAgbGluZVR5cGVDaGFydHMgPSBbJ0xpbmUnLCAnQXJlYScsICdDdW11bGF0aXZlIExpbmUnXSwgICAvLyBDaGFydHMgdGhhdCBkb2VzIG5vdCBzdXBwb3J0cyB0aGUgc3RyaW5nIHR5cGUgb2YgZGF0YSBpbiB0aGUgeGF4aXMgaW4gdGhlIG52ZDM7XG4gICAgZGF0YVR5cGVBcnJheSA9IFsnQ3VtdWxhdGl2ZSBMaW5lJywgJ0FyZWEnXSwgICAgIC8vIENoYXJ0cyB0aGF0IHN1cHBvcnRzIHRoZSBkYXRhIHRvIGJlIEFycmF5XG4gICAgU0FNUExFX0RBVEEgPSB7XG4gICAgICAgICdncm91cDEnIDogJ0V1cm9wZScsXG4gICAgICAgICdncm91cDInIDogJ0FzaWEnLFxuICAgICAgICAnZ3JvdXAzJyA6ICdBbWVyaWNhJyxcbiAgICAgICAgJ2dyb3VwNCcgOiAnQXVzdHJhbGlhJ1xuICAgIH07XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIHBpZVxuZXhwb3J0IGNvbnN0IGlzUGllQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdQaWUnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBsaW5lXG5leHBvcnQgY29uc3QgaXNMaW5lQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdMaW5lJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYmFyXG5leHBvcnQgY29uc3QgaXNCYXJDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0Jhcic7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGRvbnV0XG5leHBvcnQgY29uc3QgaXNEb251dENoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnRG9udXQnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBidWJibGVcbmV4cG9ydCBjb25zdCBpc0J1YmJsZUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQnViYmxlJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgY29sdW1uXG5leHBvcnQgY29uc3QgaXNDb2x1bW5DaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0NvbHVtbic7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGFyZWFcbmV4cG9ydCBjb25zdCBpc0FyZWFDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0FyZWEnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBhcmVhXG5leHBvcnQgY29uc3QgaXNQaWVUeXBlID0gdHlwZSA9PiBpc1BpZUNoYXJ0KHR5cGUpIHx8IGlzRG9udXRDaGFydCh0eXBlKTtcblxuLy8gVGhlIGZvcm1hdCBvZiBjaGFydCBkYXRhIGlzIGFycmF5IG9mIGpzb24gb2JqZWN0cyBpbiBjYXNlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgY2hhcnRcbmV4cG9ydCBjb25zdCBpc0NoYXJ0RGF0YUpTT04gPSB0eXBlID0+IGluY2x1ZGVzKGRhdGFUeXBlSlNPTiwgdHlwZSkgfHwgIWluY2x1ZGVzKGNoYXJ0VHlwZXMsIHR5cGUpO1xuXG4vLyBUaGUgZm9ybWF0IG9mIGNoYXJ0IGRhdGEgaXMgYXJyYXkgb2Ygb2JqZWN0cyBpbiBjYXNlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgY2hhcnRcbmV4cG9ydCBjb25zdCBpc0NoYXJ0RGF0YUFycmF5ID0gdHlwZSA9PiBpbmNsdWRlcyhkYXRhVHlwZUFycmF5LCB0eXBlKTtcblxuLy8gcmV0dXJucyB0cnVlIGlzIHRoZSBjaGFydCB0eXBlIGlzICdsaW5lJywgJ2FyZWEnIG9yICdjdW11bGF0aXZlIGxpbmUnIGVsc2UgZmFsc2VcbmV4cG9ydCBjb25zdCBpc0xpbmVUeXBlQ2hhcnQgPSB0eXBlID0+IGluY2x1ZGVzKGxpbmVUeXBlQ2hhcnRzLCB0eXBlKTtcblxuLy8gWC9ZIERvbWFpbiBwcm9wZXJ0aWVzIGFyZSBzdXBwb3J0ZWQgb25seSBmb3IgQ29sdW1uIGFuZCBBcmVhIGNoYXJ0c1xuZXhwb3J0IGNvbnN0IGlzQXhpc0RvbWFpblN1cHBvcnRlZCA9IHR5cGUgPT4gaXNDb2x1bW5DaGFydCh0eXBlKSB8fCBpc0FyZWFDaGFydCh0eXBlKTtcblxuLy8gUmV0dXJucyBiYXIgc3BhY2luZyB2YWx1ZVxuZXhwb3J0IGNvbnN0IGdldEJhclNwYWNpbmdWYWx1ZSA9ICh2YWx1ZSwgcHJvcCkgPT4ge1xuICAgIGlmIChwcm9wID09PSAndmFsdWUnKSB7XG4gICAgICAgIHJldHVybiBiYXJTcGFjaW5nTWFwW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHByb3AgPT09ICdrZXknKSB7XG4gICAgICAgIHJldHVybiBiYXJTcGFjaW5nTWFwSW52ZXJ0W3ZhbHVlXTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIHJhZGl1cyB2YWx1ZVxuZXhwb3J0IGNvbnN0IGdldFJhZGl1c1ZhbHVlID0gKHZhbHVlLCBwcm9wKSA9PiB7XG4gICAgaWYgKHByb3AgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgcmV0dXJuIGRvbnV0UmF0aW9NYXBbdmFsdWVdO1xuICAgIH1cbiAgICBpZiAocHJvcCA9PT0gJ2tleScpIHtcbiAgICAgICAgcmV0dXJuIGRvbnV0UmF0aW9NYXBJbnZlcnRbdmFsdWVdO1xuICAgIH1cbn07XG5cbi8vIFJldHVybnMgbGFiZWxzIGNvbmZpZ1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVzID0gKHNob3dsYWJlbHMsIHNob3dsYWJlbHNvdXRzaWRlLCBwcm9wKSA9PiB7XG4gICAgY29uc3QgbGFiZWxzQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHNob3dsYWJlbHMpIHtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2luc2lkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVsc291dHNpZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvdXRzaWRlJzpcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsc0NvbmZpZztcbn07XG5cbi8vIENvbnN0cnVjdCB0aGUgc2FtcGxlIGRhdGFcbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RTYW1wbGVEYXRhID0gKGRhdGFUeXBlLCB5YXhpc0xlbmd0aCwgc2hhcGUpID0+IHtcbiAgICBsZXQgZmlyc3Rfc2VyaWVzID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXSxcbiAgICAgICAgdGhpcmRfc2VyaWVzID0gW10sXG4gICAgICAgIGZpcnN0X3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzX2FycmF5ID0gW10sXG4gICAgICAgIHRoaXJkX3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICBmaXJzdF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIHRoaXJkX3Nlcmllc19idWJibGUgPSBbXSxcbiAgICAgICAgZGF0YSA9IFtdO1xuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgICAgY2FzZSAnanNvbkZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDEnLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAyJywgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMycsICd5JzogNTAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogNDAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDcwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogODAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDYwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3NlcmllcyxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGluZUNoYXJ0Rm9ybWF0JzpcbiAgICAgICAgICAgIGZpcnN0X3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAxLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDIsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMywgJ3knOiA1MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNzAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDgwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNjAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzLFxuICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzFdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHNlY29uZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhcnJheUZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXNfYXJyYXkgPSBbXG4gICAgICAgICAgICAgICAgWzEsIDQwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFsyLCAxMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMywgNTAwMDAwMF1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCAzMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgNDAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDcwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCAyMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgODAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDYwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYnViYmxlRm9ybWF0JzpcbiAgICAgICAgICAgIHNoYXBlID0gc2hhcGUgPT09ICdyYW5kb20nID8gIGFsbFNoYXBlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhbGxTaGFwZXMubGVuZ3RoKV0gOiBzaGFwZTtcbiAgICAgICAgICAgIGZpcnN0X3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogODAuNjYsICd5JzogMzM3Mzk5MDAsICAnc2l6ZSc6IDc4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzkuODQsICd5JzogODE5MDIzMDAsICAnc2l6ZSc6IDkwLCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzguNiwgICd5JzogNTUyMzEwMCwgICAnc2l6ZSc6IDQ1LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzX2J1YmJsZSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiA3Mi43MywgJ3knOiA3OTcxNjIwMCwgICdzaXplJzogOTgsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA4MC4wNSwgJ3knOiA2MTgwMTYwMCwgICdzaXplJzogMjAsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA3Mi40OSwgJ3knOiA3MzEzNzIwMCwgICdzaXplJzogMzQsICdzaGFwZSc6IHNoYXBlfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogNjguMDksICd5JzogMzM3Mzk5MDAsICAnc2l6ZSc6IDQ1LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogODEuNTUsICd5JzogNzQ4NTYwMCwgICAnc2l6ZSc6IDc4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNjguNjAsICd5JzogMTQxODUwMDAwLCAnc2l6ZSc6IDU2LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaWVDaGFydEZvcm1hdCc6XG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwMSwgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDIsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXAzLCAneSc6IDMwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwNCwgJ3knOiA0MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhVHlwZSA9IHdpZGdldENvbnRleHQgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSB3aWRnZXRDb250ZXh0LnR5cGU7XG4gICAgaWYgKGlzTGluZUNoYXJ0KHR5cGUpKSB7XG4gICAgICAgIHJldHVybiAnbGluZUNoYXJ0Rm9ybWF0JztcbiAgICB9XG4gICAgaWYgKGlzUGllVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4gJ3BpZUNoYXJ0Rm9ybWF0JztcbiAgICB9XG4gICAgaWYgKGlzQnViYmxlQ2hhcnQodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuICdidWJibGVGb3JtYXQnO1xuICAgIH1cbiAgICByZXR1cm4gaXNDaGFydERhdGFKU09OKHR5cGUpID8gJ2pzb25Gb3JtYXQnIDogJ2FycmF5Rm9ybWF0Jztcbn07XG5cbi8vIFNhbXBsZSBkYXRhIHRvIHBvcHVsYXRlIHdoZW4gbm8gZGF0YSBpcyBib3VuZFxuZXhwb3J0IGNvbnN0IGdldFNhbXBsZURhdGEgPSB3aWRnZXRDb250ZXh0ID0+IGNvbnN0cnVjdFNhbXBsZURhdGEoZ2V0RGF0YVR5cGUod2lkZ2V0Q29udGV4dCksIHNwbGl0KHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LCAnLCcpLmxlbmd0aCwgd2lkZ2V0Q29udGV4dC5zaGFwZSk7XG5cbi8vIENoZWNrIHdoZXRoZXIgWC9ZIERvbWFpbiB3YXMgc2V0IHRvIE1pbiBhbmQgaXMgc3VwcG9ydGVkIGZvciB0aGUgcHJlc2VudCBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQXhpc0RvbWFpblZhbGlkID0gKHdpZGdldENvbnRleHQsIGF4aXMpID0+IHtcbiAgICBpZiAod2lkZ2V0Q29udGV4dFtheGlzICsgJ2RvbWFpbiddID09PSAnTWluJyAmJiAoaXNBeGlzRG9tYWluU3VwcG9ydGVkKHdpZGdldENvbnRleHQudHlwZSkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIG1pbiBhbmQgbWF4IHZhbHVlcyBhcmUgZmluaXRlIG9yIG5vdFxuZXhwb3J0IGNvbnN0IGFyZU1pbk1heFZhbHVlc1ZhbGlkID0gdmFsdWVzID0+IHtcbiAgICBpZiAoaXNGaW5pdGUodmFsdWVzLm1pbikgJiYgaXNGaW5pdGUodmFsdWVzLm1heCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZU2NhbGVNaW5WYWx1ZSA9IHZhbHVlID0+IHtcbiAgICBjb25zdCBfbWluID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgLyogSWYgdGhlIG51bWJlciBoYXMgYSkgZGVjaW1hbCBwYXJ0IHJldHVybmluZyBmbG9vciB2YWx1ZSAtIDAuMVxuICAgICBiKSBubyBkZWNpbWFsIHBhcnQgcmV0dXJuaW5nIGZsb29yIHZhbHVlIC0gMSAqL1xuICAgIHJldHVybiBNYXRoLmFicyh2YWx1ZSkgLSBfbWluID4gMCA/IHZhbHVlIC0gMC4xIDogX21pbiAtIDE7XG59O1xuXG4vLyBDaG9vc2VzIHRoZSBkYXRhIHBvaW50cyBvZiBsaW5lL2N1bXVsYXRpdmUgbGluZS9hcmVhIGNoYXJ0IGFuZCBoaWdobGlnaHRzIHRoZW1cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRQb2ludHMgPSAoaWQsIGhpZ2hsaWdodHBvaW50cykgPT4ge1xuICAgIGNvbnN0IGNoYXJ0U3ZnID0gaWQgPyBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIGlkICsgJyBzdmcnKSA6IGQzLnNlbGVjdChjaGFydElkICsgJyBzdmcnKTtcbiAgICBpZiAoaGlnaGxpZ2h0cG9pbnRzKSB7XG4gICAgICAgIGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LXBvaW50JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzZweCcpXG4gICAgICAgICAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsICcwLjk1JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLW9wYWNpdHknLCAnMC45NScpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LXBvaW50JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzBweCcpXG4gICAgICAgICAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsICcwJyk7XG4gICAgfVxufTtcblxuLy8gQ2hvb3NlcyB0aGUgbGluZSBvZiBsaW5lL2N1bXVsYXRpdmUgbGluZSBhbmQgaW5jcmVhc2VzIHRoZSB0aGlja25lc3Mgb2YgaXRcbmV4cG9ydCBjb25zdCBzZXRMaW5lVGhpY2tuZXNzID0gKGlkLCB0aGlja25lc3MpID0+IHtcbiAgICBjb25zdCBjaGFydFN2ZyA9IGlkID8gZDMuc2VsZWN0KCcjd21DaGFydCcgKyBpZCArICcgc3ZnJykgOiBkMy5zZWxlY3QoY2hhcnRJZCArICcgc3ZnJyk7XG4gICAgdGhpY2tuZXNzID0gdGhpY2tuZXNzIHx8IDEuNTtcblxuICAgIGNvbnN0IGxpbmVzID0gY2hhcnRTdmcuc2VsZWN0QWxsKCcubnYtbGluZScpO1xuXG4gICAgaWYgKGxpbmVzLnNpemUoKSAhPT0gMCkge1xuICAgICAgICBsaW5lcy5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgdGhpY2tuZXNzKTtcbiAgICB9XG59O1xuXG4vLyBDb25zdHJ1Y3RpbmcgYSBjb21tb24ga2V5IHZhbHVlIG1hcCBmb3IgcHJldmlldyBhbmQgY2FudmFzIG1vZGVcbmV4cG9ydCBjb25zdCBpbml0UHJvcGVydGllcyA9ICh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKSA9PiB7XG4gICAgaWYgKCFwcm9wZXJ0eVZhbHVlTWFwIHx8IGlzRW1wdHlPYmplY3QocHJvcGVydHlWYWx1ZU1hcCkpIHtcbiAgICAgICAgcHJvcGVydHlWYWx1ZU1hcCA9IHt9O1xuICAgIH1cbiAgICBmb3JFYWNoKGJhc2ljUHJvcGVydGllcywgcHJvcCA9PiB7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChwcm9wZXJ0eVZhbHVlTWFwW3Byb3BdKSkge1xuICAgICAgICAgICAgcHJvcGVydHlWYWx1ZU1hcFtwcm9wXSA9IHdpZGdldENvbnRleHRbcHJvcF07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlTWFwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE51bWJlclZhbHVlID0gKHZhbHVlLCBjYWxsYmFjaykgPT4ge1xuICAgIHJldHVybiBpc05hTihwYXJzZUludCh2YWx1ZSwgMTApKSA/IGNhbGxiYWNrKHZhbHVlLCAndmFsdWUnKSA6IHZhbHVlO1xufTtcblxuLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdmFsdWUgYWNjb3JkaW5nIHRvIGRhdGUgZm9ybWF0XG5leHBvcnQgY29uc3QgZ2V0RGF0ZUZvcm1hdGVkRGF0YSA9IChkYXRlRm9ybWF0LCBkKSA9PiB7XG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQgfHwgJyV4JztcbiAgICAvKipcbiAgICAgKiBpZiBkYXRlIHZhbHVlIGlzIHN0cmluZyBcIjIwLTA1LTIwMTlcIiB0aGVuIG5ldyBEYXRlKHZhbHVlKSByZXR1cm4gMjBNYXkyMDE5IHdpdGggY3VycmVudCB0aW1lIGluIEluZGlhLFxuICAgICAqIHdoZXJlYXMgdGhpcyB3aWxsIHJldHVybiAxOU1heTIwMTkgd2l0aCB0aW1lIGxhZ2dpbmcgZm9yIGZldyBob3Vycy5cbiAgICAgKiBUaGlzIGlzIGJlY2F1c2UgaXQgcmV0dXJucyBVVEMgdGltZSBpLmUuIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIChVVEMpLlxuICAgICAqIFRvIGNyZWF0ZSBkYXRlIGluIGxvY2FsIHRpbWUgdXNlIG1vbWVudFxuICAgICAqL1xuICAgIGlmKGRhdGVGb3JtYXQgPT0gJyVjJykge1xuICAgICAgICBkYXRlRm9ybWF0ID0gJyVhICViICVlICVYICVZJztcbiAgICB9XG4gICAgcmV0dXJuIGQzLnRpbWVGb3JtYXQoZGF0ZUZvcm1hdCkobmV3IERhdGUobW9tZW50KG1vbWVudChkKS5mb3JtYXQoKSkudmFsdWVPZigpKSk7XG59O1xuY29uc3QgcmVtb3ZlVHJhaWxpbmdaZXJvcyA9IHZhbHVlID0+IHtcbiAgICBpZighdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGEgc3RyaW5nIGlmIGl0J3MgYSBudW1iZXJcbiAgICBjb25zdCBzdHJpbmdWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZS50b1N0cmluZygpIDogdmFsdWU7XG5cbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3NcbiAgICByZXR1cm4gc3RyaW5nVmFsdWUucmVwbGFjZSgvXFwuMCsoW0EtWmEtel0qKSQvLCAnJDEnKS5yZXBsYWNlKC9cXC4oWzEtOV0rKTArKFtBLVphLXpdKikkLywgJy4kMSQyJyk7XG59O1xuXG4vLyBGb3JtYXRzIHRoZSBnaXZlbiB2YWx1ZSBhY2NvcmRpbmcgdG8gbnVtYmVyIGZvcm1hdFxuZXhwb3J0IGNvbnN0IGdldE51bWJlckZvcm1hdGVkRGF0YSA9IChudW1iZXJGb3JtYXQsIGQpID0+IHtcbiAgICBsZXQgZm9ybWF0dGVkRGF0YSxcbiAgICAgICAgZGl2aWRlcixcbiAgICAgICAgcHJlZml4O1xuICAgIC8vIGZvcm1hdHRpbmcgdGhlIGRhdGEgYmFzZWQgb24gbnVtYmVyIGZvcm1hdCBzZWxlY3RlZFxuICAgIGlmIChudW1iZXJGb3JtYXQpIHtcbiAgICAgICAgbGV0IG51bWJlckZvcm1hdHRlcjtcbiAgICAgICAgaWYobnVtYmVyRm9ybWF0ID09ICdUaG91c2FuZCcgfHwgbnVtYmVyRm9ybWF0ID09ICdNaWxsaW9uJyB8fCBudW1iZXJGb3JtYXQgPT0gJ0JpbGxpb24nKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJywuMnMnKTtcbiAgICAgICAgfSBlbHNlIGlmKG51bWJlckZvcm1hdCA9PSAnJScpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLjIlJyk7XG4gICAgICAgIH1lbHNlIGlmKG51bWJlckZvcm1hdCA9PSAnLmYnKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJy4yZicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KG51bWJlckZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0dGVkRGF0YSA9IG51bWJlckZvcm1hdHRlcihkKTtcblxuXG4gICAgICAgIC8vIEdldHRpbmcgdGhlIHJlc3BlY3RpdmUgZGl2aWRlclsxMDAwLDEwMDAwMDAsMTAwMDAwMDAwMF0gYmFzZWQgb24gdGhlIG51bWJlciBmb3JtYXQgY2hvb3NlblxuICAgICAgICBkaXZpZGVyID0gKHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0gJiYgdGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XS5kaXZpZGVyKSB8fCAwO1xuICAgICAgICBwcmVmaXggPSB0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdICYmIHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0ucHJlZml4O1xuICAgICAgICBpZiAocHJlZml4ICYmIGRpdmlkZXIgIT09IDApIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZERhdGEgPSBkMy5mb3JtYXQoJy4yZicpKGQgLyBkaXZpZGVyKSArIHByZWZpeDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF1dG8gZm9ybWF0dGluZyB0aGUgZGF0YSB3aGVuIG5vIGZvcm1hdGluZyBvcHRpb24gaXMgY2hvc2VuXG4gICAgICAgIGZvcm1hdHRlZERhdGEgPSBkID49IDEwMDAgPyBkMy5mb3JtYXQoJy4xcycpKGQpIDogZDtcbiAgICB9XG4gICAgZm9ybWF0dGVkRGF0YSA9IHJlbW92ZVRyYWlsaW5nWmVyb3MoZm9ybWF0dGVkRGF0YSk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGE7XG59O1xuXG4vLyBTZXQgdGhlIHZpc2liaWxpdHkgcHJvcGVydHkgb2YgdGhlIGNoYXJ0IHgseSBheGlzIGR1ZSB0byBhIGJ1ZyBpbiB0aGUgbnZkM1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUF4aXNTaG93ID0gKHByb3BlcnR5LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0ICR4QXhpcyA9IGQzLnNlbGVjdChjaGFydElkICsgJyBnLm52LWF4aXMubnYteCcpLFxuICAgICAgICAkeUF4aXMgPSBkMy5zZWxlY3QoY2hhcnRJZCArICcgZy5udi1heGlzLm52LXknKTtcbiAgICBpZiAocHJvcGVydHkgPT09ICdzaG93eGF4aXMnKSB7XG4gICAgICAgICR4QXhpcy5zdHlsZSgndmlzaWJpbGl0eScsIHZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgICR5QXhpcy5zdHlsZSgndmlzaWJpbGl0eScsIHZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtb2RpZnlMZWdlbmRQb3NpdGlvbiA9ICh3aWRnZXRDb250ZXh0LCBwb3NpdGlvbiwgaWQpID0+IHtcbiAgICBjb25zdCBzaG93TGVnZW5kID0gaXNTaG93TGVnZW5kKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCksXG4gICAgICAgIGNoYXJ0X0lkID0gaWQgPyAnI3dtQ2hhcnQnICsgaWQgOiBjaGFydElkLFxuICAgICAgICBsZWdlbmRXcmFwID0gZDMuc2VsZWN0KGNoYXJ0X0lkICsgJyAubnYtbGVnZW5kV3JhcCcpLFxuICAgICAgICBsZWdlbmRQYWRkaW5nID0gNTtcbiAgICAvLyBSZXR1cm4gd2hlbiBzaG93bGVnZW5kIGlzIGZhbHNlXG4gICAgaWYgKCFzaG93TGVnZW5kIHx8ICFsZWdlbmRXcmFwWydfZ3JvdXBzJ11bMF1bMF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgIGNvbnN0IGxlZ2VuZFdyYXBIZWlnaHQgPSBsZWdlbmRXcmFwWydfZ3JvdXBzJ11bMF1bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgd3JhcCA9IGQzLnNlbGVjdChjaGFydF9JZCArICcgLm52LXdyYXAnKSxcbiAgICAgICAgICAgIHdyYXBUcmFuc2Zvcm0gPSAod3JhcCAmJiB3cmFwLmF0dHIoJ3RyYW5zZm9ybScpKSA/IHdyYXAuYXR0cigndHJhbnNmb3JtJykucmVwbGFjZSgvLCAvZywgJywnKSA6ICcnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXMgPSAvdHJhbnNsYXRlXFwoXFxzKihbXlxccywpXSspWyAsXShbXlxccywpXSspLy5leGVjKHdyYXBUcmFuc2Zvcm0pLFxuICAgICAgICAgICAgZ2V0Q2hhcnRIZWlnaHQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoYXJ0SGVpZ2h0ID0gJChjaGFydF9JZCArICcgc3ZnPi5udmQzLm52LXdyYXAnKVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXJ0SGVpZ2h0ID09PSAwKSB7IC8vIGZpeCBmb3IgSUVcbiAgICAgICAgICAgICAgICAgICAgY2hhcnRIZWlnaHQgPSAoJChjaGFydF9JZCArICcgc3ZnJylbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IC0gKGxlZ2VuZFdyYXBIZWlnaHQgKyAxNSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhcnRIZWlnaHQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICBsZWdlbmRXcmFwLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMCAsICcgKyAoZ2V0Q2hhcnRIZWlnaHQoKSAtIGxlZ2VuZFdyYXBIZWlnaHQgLSBsZWdlbmRQYWRkaW5nKSArICcpJyk7XG4gICAgICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgICAgICAgd3JhcC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCcgKyBjb29yZGluYXRlc1sxXSArICcsJyArIGxlZ2VuZFBhZGRpbmcgKyAnKScpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8gUmV0dXJucyB2YWx1ZSBpZiBsZWdlbmQgbmVlZCB0byBzaG93biBvciBub3RcbmV4cG9ydCBjb25zdCBpc1Nob3dMZWdlbmQgPSB2YWx1ZSA9PiB7XG4gICAgLy8gT2xkIHByb2plY3RzIHdpbGwgaGF2ZSBlaXRoZXIgdHJ1ZSBvciBmYWxzZVxuICAgIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gTmV3IHByb2plY3RzIHdpbGwgaGF2ZSBlaXRoZXIgJ0hpZGUgTGVnZW5kJywgJ1Nob3cgVG9wJywgJ1Nob3cgQm90dG9tJ1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2hpZGUnID8gZmFsc2UgOiB0cnVlO1xufTtcblxuLyoqXG4gKiBDdXN0b21pc2UgdGhlIHRvb2x0aXAgZm9yIGRvbnV0ICYgcGllIGNoYXJ0cyBhbmQgYWxzbyBmb3IgY2hhcnRzIGhhdmluZyBvbmx5IG9uZSB2YWx1ZSBhdHRhY2hlZCB0byB5YXhpc1xuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGxhYmVsXG4gKi9cbmV4cG9ydCBjb25zdCBjdXN0b21pc2VUb29sdGlwID0gKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0LCBsYWJlbD8pID0+IHtcbiAgICBkMy5zZWxlY3RBbGwoJy5udnRvb2x0aXAnKS5zdHlsZSgnb3BhY2l0eScsIDApO1xuICAgIGNoYXJ0LnRvb2x0aXAuY29udGVudEdlbmVyYXRvcigoa2V5LCBwcm9wZXJ0eVZhbHVlTWFwKSA9PiB7XG4gICAgICAgIGxldCB4VmFsdWUgPSBrZXkuZGF0YS54LCB5VmFsdWU7XG4gICAgICAgIHlWYWx1ZSA9IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGtleS5kYXRhLnkpO1xuICAgICAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgIGxhYmVsID0ga2V5LmRhdGEueDtcbiAgICAgICAgICAgIHhWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnPHRhYmxlPicgK1xuICAgICAgICAgICAgJzx0Ym9keT4nICtcbiAgICAgICAgICAgICc8dHIgY2xhc3M9XCJ2YWx1ZVwiPjxiPicgKyB4VmFsdWUgK1xuICAgICAgICAgICAgJzwvYj48L3RyPicgK1xuICAgICAgICAgICAgJzx0cj4nICtcbiAgICAgICAgICAgICc8dGQgY2xhc3M9XCJsZWdlbmQtY29sb3ItZ3VpZGVcIj48ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjonICsga2V5LmNvbG9yICsgJztcIj48L2Rpdj48L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cImtleVwiPicgKyBsYWJlbCArICc8L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cInZhbHVlXCI+JyArIHlWYWx1ZSArICc8L3RkPicgK1xuICAgICAgICAgICAgJzwvdHI+JyArXG4gICAgICAgICAgICAnPC90Ym9keT4nICtcbiAgICAgICAgICAgICc8L3RhYmxlPic7XG4gICAgfSk7XG59O1xuXG4vLyBpbnRpYWxpemVzIHRoZSBjaGFydCBvYmVqY3RcbmV4cG9ydCBjb25zdCBpbml0Q2hhcnQgPSAod2lkZ2V0Q29udGV4dCwgeERvbWFpblZhbHVlcywgeURvbWFpblZhbHVlcywgcHJvcGVydHlWYWx1ZU1hcCwgaXNQcmV2aWV3KSA9PiB7XG4gICAgcHJvcGVydHlWYWx1ZU1hcCA9ICBpbml0UHJvcGVydGllcyh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKTtcbiAgICBsZXQgY2hhcnQsIGNvbG9ycyA9IFtdLCB4YXhpc2xhYmVsLCB5YXhpc2xhYmVsLCBsYWJlbENvbmZpZywgcmFkaXVzLCBiYXJTcGFjaW5nLFxuICAgICAgICBzaG93TGVnZW5kLCB4QXhpc1ZhbHVlLCBoYXNNdWx0aXBsZVlWYWx1ZXM7XG4gICAgY29uc3QgeFZhbHVlOiBhbnkgPSB7fSwgeVZhbHVlOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHdpZGdldENvbnRleHQudHlwZSkge1xuICAgICAgICBjYXNlICdDb2x1bW4nOlxuICAgICAgICAgICAgYmFyU3BhY2luZyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuYmFyc3BhY2luZywgZ2V0QmFyU3BhY2luZ1ZhbHVlKSB8fCBiYXJTcGFjaW5nTWFwLm1lZGl1bTtcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5yZWR1Y2VYVGlja3MocHJvcGVydHlWYWx1ZU1hcC5yZWR1Y2V4dGlja3MpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZUxhYmVscygwKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnN0YWNrZWQocHJvcGVydHlWYWx1ZU1hcC52aWV3dHlwZSA9PT0gJ1N0YWNrZWQnID8gIHRydWUgOiBmYWxzZSlcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0N1bXVsYXRpdmUgTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5jdW11bGF0aXZlTGluZUNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGRbMF0pXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkWzFdKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5saW5lQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZShwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKVxuICAgICAgICAgICAgICAgIC5pbnRlcnBvbGF0ZShwcm9wZXJ0eVZhbHVlTWFwLmludGVycG9sYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0FyZWEnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMuc3RhY2tlZEFyZWFDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLmNsaXBFZGdlKHRydWUpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3R5bGUocHJvcGVydHlWYWx1ZU1hcC5hcmVhdmlld3R5cGUpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQmFyJzpcbiAgICAgICAgICAgIGJhclNwYWNpbmcgPSBnZXROdW1iZXJWYWx1ZShwcm9wZXJ0eVZhbHVlTWFwLmJhcnNwYWNpbmcsIGdldEJhclNwYWNpbmdWYWx1ZSkgfHwgYmFyU3BhY2luZ01hcC5tZWRpdW07XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5tdWx0aUJhckhvcml6b250YWxDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3RhY2tlZChwcm9wZXJ0eVZhbHVlTWFwLnZpZXd0eXBlID09PSAnU3RhY2tlZCcgPyAgdHJ1ZSA6IGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zaG93VmFsdWVzKHByb3BlcnR5VmFsdWVNYXAuc2hvd3ZhbHVlcylcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BpZSc6XG4gICAgICAgIGNhc2UgJ0RvbnV0JzpcbiAgICAgICAgICAgIGxhYmVsQ29uZmlnID0gZ2V0TGFiZWxWYWx1ZXMocHJvcGVydHlWYWx1ZU1hcC5zaG93bGFiZWxzLCBwcm9wZXJ0eVZhbHVlTWFwLnNob3dsYWJlbHNvdXRzaWRlLCAndmFsdWUnKTtcbiAgICAgICAgICAgIHJhZGl1cyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuZG9udXRyYXRpbywgZ2V0UmFkaXVzVmFsdWUpIHx8IGRvbnV0UmF0aW9NYXAubWVkaXVtO1xuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMucGllQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93TGFiZWxzKGxhYmVsQ29uZmlnLnNob3dsYWJlbHMpXG4gICAgICAgICAgICAgICAgLmxhYmVsVHlwZShwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSlcbiAgICAgICAgICAgICAgICAudmFsdWVGb3JtYXQoZDMuZm9ybWF0KCclJykpXG4gICAgICAgICAgICAgICAgLnRpdGxlKHByb3BlcnR5VmFsdWVNYXAuY2VudGVybGFiZWwpXG4gICAgICAgICAgICAgICAgLmxhYmVsVGhyZXNob2xkKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0aHJlc2hvbGQgfHwgMC4wMSlcbiAgICAgICAgICAgICAgICAubGFiZWxzT3V0c2lkZShsYWJlbENvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSk7XG4gICAgICAgICAgICBpZiAoaXNEb251dENoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjaGFydC5kb251dCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAuZG9udXRSYXRpbyhyYWRpdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0eXBlID09PSAna2V5LXZhbHVlJykge1xuICAgICAgICAgICAgICAgIGNoYXJ0LmxhYmVsVHlwZShkID0+IGQuZGF0YS54ICsgJyAnICsgZC5kYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0J1YmJsZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5zY2F0dGVyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFgocHJvcGVydHlWYWx1ZU1hcC5zaG93eGRpc3RhbmNlKVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFkocHJvcGVydHlWYWx1ZU1hcC5zaG93eWRpc3RhbmNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh4RG9tYWluVmFsdWVzKSB7XG4gICAgICAgIHhWYWx1ZS5taW4gPSB4RG9tYWluVmFsdWVzLm1pbi54IHx8IHhEb21haW5WYWx1ZXMubWluWzBdO1xuICAgICAgICB4VmFsdWUubWF4ID0geERvbWFpblZhbHVlcy5tYXgueCB8fCB4RG9tYWluVmFsdWVzLm1heFswXTtcbiAgICAgICAgLy8gSWYgdGhlIHZhbHVlcyBvbiB0aGUgeCBheGlzIGFyZSBzdHJpbmcgdGhlbiBtaW4gbWF4IHZhbHVlcyBnaXZlcyBJbmZpbml0eVxuICAgICAgICBpZiAoYXJlTWluTWF4VmFsdWVzVmFsaWQoeFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAwLjEgc28gdGhlIG1pbiB2YWx1ZSBpcyBub3QgbWlzc2VkIG91dFxuICAgICAgICAgICAgeFZhbHVlLm1pbiA9IGdldFlTY2FsZU1pblZhbHVlKHhWYWx1ZS5taW4pO1xuICAgICAgICAgICAgY2hhcnQueERvbWFpbihbeFZhbHVlLm1pbiwgeFZhbHVlLm1heF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHlEb21haW5WYWx1ZXMpIHtcbiAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAxIHNvIHRoZSBtaW4gdmFsdWUgaXMgbm90IG1pc3NlZCBvdXRcbiAgICAgICAgeVZhbHVlLm1pbiA9IHlEb21haW5WYWx1ZXMubWluLnkgfHwgeURvbWFpblZhbHVlcy5taW5bMV07XG4gICAgICAgIHlWYWx1ZS5tYXggPSB5RG9tYWluVmFsdWVzLm1heC55IHx8IHlEb21haW5WYWx1ZXMubWF4WzFdO1xuICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIG9uIHRoZSB5IGF4aXMgYXJlIHN0cmluZyBvciBpbnZhbGlkIHRoZW4gbWluIG1heCB2YWx1ZXMgZ2l2ZXMgSW5maW5pdHlcbiAgICAgICAgaWYgKGFyZU1pbk1heFZhbHVlc1ZhbGlkKHlWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFJlZHVjaW5nIHRoZSBtaW4gdmFsdWUgdG8gMSBzbyB0aGUgbWluIHZhbHVlIGlzIG5vdCBtaXNzZWQgb3V0XG4gICAgICAgICAgICB5VmFsdWUubWluID0gZ2V0WVNjYWxlTWluVmFsdWUoeVZhbHVlLm1pbik7XG4gICAgICAgICAgICBjaGFydC55RG9tYWluKFt5VmFsdWUubWluLCB5VmFsdWUubWF4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXR0aW5nIHRoZSBsZWdlbmQgdHlwZSBjaG9vc2VuIGJ5IHVzZXIgb3IgZGVmYXVsdCBpdCB3aWxsIGJlIGZ1cmlvdXNcbiAgICBjaGFydC5sZWdlbmQudmVycygocHJvcGVydHlWYWx1ZU1hcC5sZWdlbmR0eXBlICYmIHByb3BlcnR5VmFsdWVNYXAubGVnZW5kdHlwZS50b0xvd2VyQ2FzZSgpKSB8fCAnZnVyaW91cycpO1xuXG4gICAgaWYgKCFpbmNsdWRlcyhjaGFydFR5cGVzLCB3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAueShkID0+IGQueSk7XG4gICAgfVxuXG5cbiAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBwaWUvZG9udXQgY2hhcnQgZm9ybWF0dGluZyB0aGUgdmFsdWVzIG9mIGl0XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSA9PT0gJ3BlcmNlbnQnKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkMy5mb3JtYXQoJyUnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcHMgaW4gY2FzZSBvZiB0aGUgcGllIGFuZCBkb251dCB3aGVuIGxhYmVsVHlwZSBpcyB2YWx1ZVxuICAgICAgICBjdXN0b21pc2VUb29sdGlwKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNoYXJ0LnNob3dYQXhpcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3d4YXhpcylcbiAgICAgICAgICAgIC5zaG93WUF4aXMocHJvcGVydHlWYWx1ZU1hcC5zaG93eWF4aXMpO1xuICAgICAgICBjaGFydC5sZWdlbmRQb3NpdGlvbihwcm9wZXJ0eVZhbHVlTWFwLnNob3dsZWdlbmQpO1xuXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIGxhYmVscyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgZXhwbGljaXRseSBvciB0YWtpbmcgdGhlIGF4aXNrZXlzIGNob3NlblxuICAgICAgICB4YXhpc2xhYmVsID0gcHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsIHx8IHByZXR0aWZ5TGFiZWxzKHdpZGdldENvbnRleHQueGF4aXNkYXRha2V5KSB8fCAneCBjYXB0aW9uJztcbiAgICAgICAgeWF4aXNsYWJlbCA9IHByb3BlcnR5VmFsdWVNYXAueWF4aXNsYWJlbCB8fCBwcmV0dGlmeUxhYmVscyh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSkgfHwgJ3kgY2FwdGlvbic7XG5cbiAgICAgICAgLy8gQ2hlY2tpbmcgaWYgeSBheGlzIGhhcyBtdWx0aXBsZSB2YWx1ZXNcbiAgICAgICAgaWYgKHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5ICYmIHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LnNwbGl0KCcsJykubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaGFzTXVsdGlwbGVZVmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcCB0byBzaG93IHlheGlzbGFiZWwsIG9ubHkgaWYgdGhlIHkgYXhpcyBjb250YWlucyBvbmUgdmFsdWVcbiAgICAgICAgaWYgKCFoYXNNdWx0aXBsZVlWYWx1ZXMgJiYgIWlzQnViYmxlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY3VzdG9taXNlVG9vbHRpcChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCwgeWF4aXNsYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGRpbmcgdGhlIHVuaXRzIHRvIHRoZSBjYXB0aW9ucyBpZiB0aGV5IGFyZSBzcGVjaWZpZWRcbiAgICAgICAgeGF4aXNsYWJlbCArPSBwcm9wZXJ0eVZhbHVlTWFwLnh1bml0cyA/ICcoJyArIHByb3BlcnR5VmFsdWVNYXAueHVuaXRzICsgJyknIDogJyc7XG4gICAgICAgIHlheGlzbGFiZWwgKz0gcHJvcGVydHlWYWx1ZU1hcC55dW5pdHMgPyAnKCcgKyBwcm9wZXJ0eVZhbHVlTWFwLnl1bml0cyArICcpJyA6ICcnO1xuXG4gICAgICAgIGNoYXJ0LnhBeGlzXG4gICAgICAgICAgICAuYXhpc0xhYmVsKHhheGlzbGFiZWwpXG4gICAgICAgICAgICAuYXhpc0xhYmVsRGlzdGFuY2UocHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsZGlzdGFuY2UpXG4gICAgICAgICAgICAuc3RhZ2dlckxhYmVscyhwcm9wZXJ0eVZhbHVlTWFwLnN0YWdnZXJsYWJlbHMpO1xuXG4gICAgICAgIC8vIElmIGRhdGUgZm9ybWF0IHNldCBmb3JtYXQgYmFzZWQgZGF0ZSBmb3JtYXRcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQgfHwgKGlzUHJldmlldyAmJiAhaXNCdWJibGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSkge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgeEF4aXNWYWx1ZSA9IGlzUHJldmlldyA/IGRhdGVMaXN0W2QgLSAxXSA6IHdpZGdldENvbnRleHQueERhdGFLZXlBcnJbZF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREYXRlRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQsIHhBeGlzVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0RGF0ZUZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0LCBkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZU1hcC54bnVtYmVyZm9ybWF0KSB7XG4gICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueG51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gd2lkZ2V0Q29udGV4dC54RGF0YUtleUFycltkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhcnQueUF4aXNcbiAgICAgICAgICAgIC5heGlzTGFiZWwoeWF4aXNsYWJlbClcbiAgICAgICAgICAgIC5heGlzTGFiZWxEaXN0YW5jZShwcm9wZXJ0eVZhbHVlTWFwLnlheGlzbGFiZWxkaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdGFnZ2VyTGFiZWxzKHByb3BlcnR5VmFsdWVNYXAuc3RhZ2dlcmxhYmVscylcbiAgICAgICAgICAgIC50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXA/LnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgaWYgKGlzQmFyQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY2hhcnQudmFsdWVGb3JtYXQoZCA9PiBnZXROdW1iZXJGb3JtYXRlZERhdGEocHJvcGVydHlWYWx1ZU1hcD8ueW51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3VwcG9ydCBmb3IgY3VzdG9tIGNvbG9ycyBpZiB1c2VyIGdpdmVzIGRpcmVjdCBzdHJpbmcgb2YgY29sb3JzIGluIHRleHQgYm94XG4gICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzKSAmJiBwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykge1xuICAgICAgICBjb2xvcnMgPSBzcGxpdChwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycywgJywnKTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkocHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMpKSB7XG4gICAgICAgIGNvbG9ycyA9IHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzO1xuICAgIH1cblxuICAgIHNob3dMZWdlbmQgPSBpc1Nob3dMZWdlbmQocHJvcGVydHlWYWx1ZU1hcC5zaG93bGVnZW5kKTtcbiAgICBjaGFydC5zaG93TGVnZW5kKHNob3dMZWdlbmQpXG4gICAgICAgIC5tYXJnaW4oe3RvcDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXR0b3AsIHJpZ2h0OiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldHJpZ2h0LCBib3R0b206IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0Ym90dG9tLCBsZWZ0OiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldGxlZnR9KVxuICAgICAgICAuY29sb3IoY29sb3JzLmxlbmd0aCA/IGNvbG9ycyA6IHRoZW1lc1twcm9wZXJ0eVZhbHVlTWFwLnRoZW1lXS5jb2xvcnMpO1xuXG4gICAgY2hhcnQudG9vbHRpcC5lbmFibGVkKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpO1xuICAgIHdpZGdldENvbnRleHQubWVzc2FnZSA9IHByb3BlcnR5VmFsdWVNYXAubm9kYXRhbWVzc2FnZSB8fCAnTm8gZGF0YSBmb3VuZCc7XG4gICAgLy8gc2V0dGluZyB0aGUgbm8gZGF0YSBtZXNzYWdlXG4gICAgY2hhcnQubm9EYXRhKHdpZGdldENvbnRleHQubWVzc2FnZSk7XG5cbiAgICBpZiAoaXNMaW5lVHlwZUNoYXJ0KHdpZGdldENvbnRleHQudHlwZSkgJiYgd2lkZ2V0Q29udGV4dC5oaWdobGlnaHRwb2ludHMpIHtcbiAgICAgICAgY2hhcnQuZGlzcGF0Y2gub24oJ3N0YXRlQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwb3N0UGxvdENoYXJ0UHJvY2Vzcyh3aWRnZXRDb250ZXh0KSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCAmJiAod2lkZ2V0Q29udGV4dC50eXBlID09PSAnRG9udXQnIHx8IHdpZGdldENvbnRleHQudHlwZSA9PT0gJ1BpZScpKSB7XG4gICAgICAgIGlmKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgY2hhcnQubGVnZW5kUG9zaXRpb24oJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYXJ0O1xufTtcblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNvbnN0IHBvc3RQbG90Q2hhcnRQcm9jZXNzID0gKHdpZGdldENvbnRleHQsIGlzUHJldmlldz8pID0+IHtcbiAgICBjb25zdCBpZCA9IGlzUHJldmlldyA/IG51bGwgOiB3aWRnZXRDb250ZXh0LiRpZDtcbiAgICAvLyBJZiB1c2VyIHNldHMgdG8gaGlnaGxpZ2h0IHRoZSBkYXRhIHBvaW50cyBhbmQgaW5jcmVhc2UgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbGluZVxuICAgIGlmIChpc0xpbmVUeXBlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgIHNldExpbmVUaGlja25lc3MoaWQsIHdpZGdldENvbnRleHQubGluZXRoaWNrbmVzcyk7XG4gICAgICAgaGlnaGxpZ2h0UG9pbnRzKGlkLCB3aWRnZXRDb250ZXh0LmhpZ2hsaWdodHBvaW50cyk7XG4gICAgfVxuICAgIC8vIE1vZGlmeWluZyB0aGUgbGVnZW5kIHBvc2l0aW9uIG9ubHkgd2hlbiBsZWdlbmQgaXMgc2hvd25cbiAgICAvLyBpZiAod2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kKSB7XG4gICAgLy8gICAgIG1vZGlmeUxlZ2VuZFBvc2l0aW9uKHdpZGdldENvbnRleHQsIHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCwgaWQpO1xuICAgIC8vIH1cbn07XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBnZXREYXRlTGlzdCA9ICgpID0+IGRhdGVMaXN0O1xuXG4iXX0=
|
|
723
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSXJHLE9BQU8sS0FBSyxTQUFTLE1BQU8sUUFBUSxDQUFDO0FBQ3JDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUNwRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFDdkQsTUFBTSxHQUFHO0lBQ0wsYUFBYSxFQUFFO1FBQ1gsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxT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RUFBRSxDQUFDO1FBQy9GLElBQUcsYUFBYSxDQUFDLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0QyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVUsRUFBRSxFQUFFO0lBQzlELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2hELG1GQUFtRjtJQUNuRixJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELGVBQWUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCwwREFBMEQ7SUFDMUQsa0NBQWtDO0lBQ2xDLHlFQUF5RTtJQUN6RSxJQUFJO0FBQ1IsQ0FBQyxDQUFDO0FBRUYsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzRW1wdHlPYmplY3QsIHByZXR0aWZ5TGFiZWxzfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge2ZvckVhY2gsIGluY2x1ZGVzLCBpbnZlcnQsIGlzQXJyYXksIGlzRmluaXRlLCBpc1N0cmluZywgaXNVbmRlZmluZWQsIHNwbGl0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuaW1wb3J0ICogYXMgbW9tZW50TGliICBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TGliLmRlZmF1bHQgfHwgd2luZG93Wydtb21lbnQnXTtcbmRlY2xhcmUgY29uc3QgZDMsIG52O1xuXG5leHBvcnQgY29uc3QgY2hhcnRUeXBlcyA9IFsnQ29sdW1uJywgJ0xpbmUnLCAnQXJlYScsICdDdW11bGF0aXZlIExpbmUnLCAnQmFyJywgJ1BpZScsICdEb251dCcsICdCdWJibGUnXSxcbiAgICBhbGxTaGFwZXMgPSBbJ2NpcmNsZScsICdzcXVhcmUnLCAnZGlhbW9uZCcsICdjcm9zcycsICd0cmlhbmdsZS11cCcsICd0cmlhbmdsZS1kb3duJ107XG5cbmNvbnN0IGRhdGVMaXN0ID0gWycwMS8wMS8yMDAxJywgJzAxLzAxLzIwMDInLCAnMDEvMDEvMjAwMyddLFxuICAgIHRoZW1lcyA9IHtcbiAgICAgICAgJ1RlcnJlc3RyaWFsJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMxZjc3YjQnLCAnI2FlYzdlOCcsICcjZmY3ZjBlJywgJyNmZmJiNzgnLCAnIzJjYTAyYycsICcjOThkZjhhJywgJyNkNjI3MjgnLCAnI2ZmOTg5NicsICcjOTQ2N2JkJywgJyNjNWIwZDUnLCAnIzhjNTY0YicsICcjYzQ5Yzk0JywgJyNlMzc3YzInLCAnI2Y3YjZkMicsICcjN2Y3ZjdmJywgJyNjN2M3YzcnLCAnI2JjYmQyMicsICcjZGJkYjhkJywgJyMxN2JlY2YnLCAnIzllZGFlNSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnI2RlN2QyOCcsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQW5uYWJlbGxlJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzOTNiNzknLCAnIzUyNTRhMycsICcjNmI2ZWNmJywgJyM5YzllZGUnLCAnIzYzNzkzOScsICcjOGNhMjUyJywgJyNiNWNmNmInLCAnI2NlZGI5YycsICcjOGM2ZDMxJywgJyNiZDllMzknLCAnI2U3YmE1MicsICcjZTdjYjk0JywgJyM4NDNjMzknLCAnI2FkNDk0YScsICcjZDY2MTZiJywgJyNlNzk2OWMnLCAnIzdiNDE3MycsICcjYTU1MTk0JywgJyNjZTZkYmQnLCAnI2RlOWVkNiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzJlMzA2ZicsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQXp1cmUnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzMxODJiZCcsICcjNmJhZWQ2JywgJyM5ZWNhZTEnLCAnI2M2ZGJlZicsICcjZTY1NTBkJywgJyNmZDhkM2MnLCAnI2ZkYWU2YicsICcjZmRkMGEyJywgJyMzMWEzNTQnLCAnIzc0YzQ3NicsICcjYTFkOTliJywgJyNjN2U5YzAnLCAnIzc1NmJiMScsICcjOWU5YWM4JywgJyNiY2JkZGMnLCAnI2RhZGFlYicsICcjNjM2MzYzJywgJyM5Njk2OTYnLCAnI2JkYmRiZCcsICcjZDlkOWQ5J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjMzE4MmJkJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdSZXRybyc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMGNhN2ExJywgJyNmZmE2MTUnLCAnIzMzNDk1NycsICcjYWNjNWMyJywgJyM5ODhmOTAnLCAnIzhhY2NjOScsICcjNTE1MTUxJywgJyNmMjc4NjEnLCAnIzM2YzlmZCcsICcjNzk0NjY4JywgJyMwZjcwOWQnLCAnIzBkMjczOCcsICcjNDRiZTc4JywgJyM0YTE4MzknLCAnIzZhMzkzZicsICcjNTU3ZDhiJywgJyM2YzMzMWMnLCAnIzFjMWMxYycsICcjODYxNTAwJywgJyMwOTU2MmEnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM4MDUxM2EnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ01lbGxvdyc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjZjBkY2JmJywgJyM4OGM4NzcnLCAnI2FlYjkxOCcsICcjMmUyYzIzJywgJyNkZGRkZDInLCAnI2RmZTk1NicsICcjNGM5NjNiJywgJyM1ZDM4MDEnLCAnI2UxZWVjMycsICcjY2Q4NDcyJywgJyNmY2ZhYjMnLCAnIzlhNDYzNScsICcjOTI5NWFkJywgJyMyZTNmMTInLCAnIzU2NTY3NycsICcjNTU3ZDhiJywgJyM0ZjRkMDInLCAnIzBjMGMxYicsICcjODMzMzI0JywgJyMyNDEyMGUnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM3YzllNzMnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ09yaWVudCc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjYTgwMDAwJywgJyNjYzZjM2MnLCAnI2YwZTQwMCcsICcjMDAwMDg0JywgJyNmY2NjNmMnLCAnIzAwOWM2YycsICcjY2MzMDljJywgJyM3OGNjMDAnLCAnI2ZjODRlNCcsICcjNDhlNGZjJywgJyM0ODc4ZDgnLCAnIzE4NmMwYycsICcjNjA2MDYwJywgJyNhOGE4YTgnLCAnIzAwMDAwMCcsICcjZDdkN2Q3JywgJyM3NWEwNmUnLCAnIzE5MGQwYicsICcjODg4ODg4JywgJyM2OTRiODQnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyNjMTQyNDInLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0dyYXlTY2FsZSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMTQxNDE0JywgJyMzNTM1MzUnLCAnIzViNWI1YicsICcjODQ4NDg0JywgJyNhOGE4YTgnLCAnI2MzYzNjMycsICcjZTBlMGUwJywgJyNjOGM4YzgnLCAnI2E1YTVhNScsICcjODc4Nzg3JywgJyM2NTY1NjUnLCAnIzRlNGU0ZScsICcjMzAzMDMwJywgJyMxYzFjMWMnLCAnIzRmNGY0ZicsICcjM2IzYjNiJywgJyM3NTc1NzUnLCAnIzYwNjA2MCcsICcjODY4Njg2JywgJyNjMWMxYzEnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM1NzU3NTcnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0ZseWVyJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzZjQ1NGMnLCAnIzVhNjQ2ZScsICcjODQ4Nzc4JywgJyNjZWRlZGYnLCAnIzc0YzRkZCcsICcjMDk0NmVkJywgJyMzODBiYjEnLCAnIzAwMGZmMCcsICcjZjU0YTIzJywgJyMxZGIyNjInLCAnI2JjYTNhYScsICcjZmZhNTAwJywgJyNhODZiMzInLCAnIzYzYTE4YycsICcjNTY3OTVlJywgJyM5MzQzNDMnLCAnI2I3NWY1ZicsICcjNzUyZDJkJywgJyM0ZTExMTEnLCAnIzkyMDYwNiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzQ3NjM3YycsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnTHVtaW5vc2l0eSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjRkZGRkZGJywgJyNlNGU0ZTQnLCAnIzAwYmNkNCcsICcjZjBkZDJmJywgJyMwMGFhYmYnLCAnIzAxODM3NicsICcjZTkxZTYzJywgJyMzOWU1ZDQnLCAnI2ZmNmQ2ZCcsICcjMDBmZjc2JywgJyNmZjk4MDAnLCAnIzk2OTY5NicsICcjZmY0MjAwJywgJyNlMDAwMDAnLCAnIzk1Y2JlNScsICcjNTMzMWZmJywgJyNmZmY0YTcnLCAnI2U3YTgwMCcsICcjMDA2MWU0JywgJyNkNWU3ZmYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM0NzYzN2MnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYmFzaWNQcm9wZXJ0aWVzID0gWyd4YXhpc2xhYmVsJywgJ3lheGlzbGFiZWwnLCAneHVuaXRzJywgJ3l1bml0cycsICd4bnVtYmVyZm9ybWF0JywgJ3hkYXRlZm9ybWF0JywgJ3ludW1iZXJmb3JtYXQnLFxuICAgICAgICAnc2hvd3ZhbHVlcycsICdzaG93bGFiZWxzJywgJ3ZpZXd0eXBlJywgJ2FyZWF2aWV3dHlwZScsICdzdGFnZ2VybGFiZWxzJywgJ3JlZHVjZXh0aWNrcycsICdvZmZzZXR0b3AnLCAnb2Zmc2V0Ym90dG9tJywgJ29mZnNldHJpZ2h0JywgJ29mZnNldGxlZnQnLFxuICAgICAgICAnYmFyc3BhY2luZycsICd4YXhpc2xhYmVsZGlzdGFuY2UnLCAneWF4aXNsYWJlbGRpc3RhbmNlJywgJ3RoZW1lJywgJ2xhYmVsdHlwZScsICdkb251dHJhdGlvJywgJ3Nob3dsYWJlbHNvdXRzaWRlJywgJ3Nob3d4ZGlzdGFuY2UnLCAnc2hvd3lkaXN0YW5jZScsICdzaGFwZScsICdub2RhdGFtZXNzYWdlJywgJ2NhcHRpb25zJywgJ3Nob3d4YXhpcycsICdzaG93eWF4aXMnLFxuICAgICAgICAnY2VudGVybGFiZWwnLCAnY3VzdG9tY29sb3JzJywgJ3Nob3dsZWdlbmQnLCAnbGVnZW5kdHlwZScsICd4ZG9tYWluJywgJ3lkb21haW4nLCAndG9vbHRpcHMnLCAnbGluZXRoaWNrbmVzcycsICdoaWdobGlnaHRwb2ludHMnLCAnaW50ZXJwb2xhdGlvbicsICdsYWJlbHRocmVzaG9sZCddLFxuICAgIGJhclNwYWNpbmdNYXAgPSB7XG4gICAgICAgICdzbWFsbCcgOiAwLjMsXG4gICAgICAgICdtZWRpdW0nIDogMC41LFxuICAgICAgICAnbGFyZ2UnIDogMC44XG4gICAgfSxcbiAgICBkb251dFJhdGlvTWFwID0ge1xuICAgICAgICAnc21hbGwnIDogMC4zLFxuICAgICAgICAnbWVkaXVtJyA6IDAuNixcbiAgICAgICAgJ2xhcmdlJyA6IDAuN1xuICAgIH0sXG4gICAgYmFyU3BhY2luZ01hcEludmVydCA9IGludmVydChiYXJTcGFjaW5nTWFwKSxcbiAgICBkb251dFJhdGlvTWFwSW52ZXJ0ID0gaW52ZXJ0KGRvbnV0UmF0aW9NYXApLFxuICAgIHRpY2tmb3JtYXRzID0ge1xuICAgICAgICAnVGhvdXNhbmQnOiB7XG4gICAgICAgICAgICAncHJlZml4JzogJ0snLFxuICAgICAgICAgICAgJ2RpdmlkZXInOiAxMDAwXG4gICAgICAgIH0sXG4gICAgICAgICdNaWxsaW9uJyA6IHtcbiAgICAgICAgICAgICdwcmVmaXgnOiAnTScsXG4gICAgICAgICAgICAnZGl2aWRlcic6IDEwMDAwMDBcbiAgICAgICAgfSxcbiAgICAgICAgJ0JpbGxpb24nIDoge1xuICAgICAgICAgICAgJ3ByZWZpeCc6ICdCJyxcbiAgICAgICAgICAgICdkaXZpZGVyJzogMTAwMDAwMDAwMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBjaGFydElkID0gJyNwcmV2aWV3LWNoYXJ0JyxcbiAgICBkYXRhVHlwZUpTT04gPSBbJ0NvbHVtbicsICdMaW5lJywgJ1BpZScsICdCYXInLCAnRG9udXQnLCAnQnViYmxlJ10sICAgIC8vIENoYXJ0cyB0aGF0IHN1cHBvcnRzIHRoZSBkYXRhIHRvIGJlIEpTT047XG4gICAgbGluZVR5cGVDaGFydHMgPSBbJ0xpbmUnLCAnQXJlYScsICdDdW11bGF0aXZlIExpbmUnXSwgICAvLyBDaGFydHMgdGhhdCBkb2VzIG5vdCBzdXBwb3J0cyB0aGUgc3RyaW5nIHR5cGUgb2YgZGF0YSBpbiB0aGUgeGF4aXMgaW4gdGhlIG52ZDM7XG4gICAgZGF0YVR5cGVBcnJheSA9IFsnQ3VtdWxhdGl2ZSBMaW5lJywgJ0FyZWEnXSwgICAgIC8vIENoYXJ0cyB0aGF0IHN1cHBvcnRzIHRoZSBkYXRhIHRvIGJlIEFycmF5XG4gICAgU0FNUExFX0RBVEEgPSB7XG4gICAgICAgICdncm91cDEnIDogJ0V1cm9wZScsXG4gICAgICAgICdncm91cDInIDogJ0FzaWEnLFxuICAgICAgICAnZ3JvdXAzJyA6ICdBbWVyaWNhJyxcbiAgICAgICAgJ2dyb3VwNCcgOiAnQXVzdHJhbGlhJ1xuICAgIH07XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIHBpZVxuZXhwb3J0IGNvbnN0IGlzUGllQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdQaWUnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBsaW5lXG5leHBvcnQgY29uc3QgaXNMaW5lQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdMaW5lJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYmFyXG5leHBvcnQgY29uc3QgaXNCYXJDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0Jhcic7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGRvbnV0XG5leHBvcnQgY29uc3QgaXNEb251dENoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnRG9udXQnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBidWJibGVcbmV4cG9ydCBjb25zdCBpc0J1YmJsZUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQnViYmxlJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgY29sdW1uXG5leHBvcnQgY29uc3QgaXNDb2x1bW5DaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0NvbHVtbic7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGFyZWFcbmV4cG9ydCBjb25zdCBpc0FyZWFDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0FyZWEnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBhcmVhXG5leHBvcnQgY29uc3QgaXNQaWVUeXBlID0gdHlwZSA9PiBpc1BpZUNoYXJ0KHR5cGUpIHx8IGlzRG9udXRDaGFydCh0eXBlKTtcblxuLy8gVGhlIGZvcm1hdCBvZiBjaGFydCBkYXRhIGlzIGFycmF5IG9mIGpzb24gb2JqZWN0cyBpbiBjYXNlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgY2hhcnRcbmV4cG9ydCBjb25zdCBpc0NoYXJ0RGF0YUpTT04gPSB0eXBlID0+IGluY2x1ZGVzKGRhdGFUeXBlSlNPTiwgdHlwZSkgfHwgIWluY2x1ZGVzKGNoYXJ0VHlwZXMsIHR5cGUpO1xuXG4vLyBUaGUgZm9ybWF0IG9mIGNoYXJ0IGRhdGEgaXMgYXJyYXkgb2Ygb2JqZWN0cyBpbiBjYXNlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgY2hhcnRcbmV4cG9ydCBjb25zdCBpc0NoYXJ0RGF0YUFycmF5ID0gdHlwZSA9PiBpbmNsdWRlcyhkYXRhVHlwZUFycmF5LCB0eXBlKTtcblxuLy8gcmV0dXJucyB0cnVlIGlzIHRoZSBjaGFydCB0eXBlIGlzICdsaW5lJywgJ2FyZWEnIG9yICdjdW11bGF0aXZlIGxpbmUnIGVsc2UgZmFsc2VcbmV4cG9ydCBjb25zdCBpc0xpbmVUeXBlQ2hhcnQgPSB0eXBlID0+IGluY2x1ZGVzKGxpbmVUeXBlQ2hhcnRzLCB0eXBlKTtcblxuLy8gWC9ZIERvbWFpbiBwcm9wZXJ0aWVzIGFyZSBzdXBwb3J0ZWQgb25seSBmb3IgQ29sdW1uIGFuZCBBcmVhIGNoYXJ0c1xuZXhwb3J0IGNvbnN0IGlzQXhpc0RvbWFpblN1cHBvcnRlZCA9IHR5cGUgPT4gaXNDb2x1bW5DaGFydCh0eXBlKSB8fCBpc0FyZWFDaGFydCh0eXBlKTtcblxuLy8gUmV0dXJucyBiYXIgc3BhY2luZyB2YWx1ZVxuZXhwb3J0IGNvbnN0IGdldEJhclNwYWNpbmdWYWx1ZSA9ICh2YWx1ZSwgcHJvcCkgPT4ge1xuICAgIGlmIChwcm9wID09PSAndmFsdWUnKSB7XG4gICAgICAgIHJldHVybiBiYXJTcGFjaW5nTWFwW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHByb3AgPT09ICdrZXknKSB7XG4gICAgICAgIHJldHVybiBiYXJTcGFjaW5nTWFwSW52ZXJ0W3ZhbHVlXTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIHJhZGl1cyB2YWx1ZVxuZXhwb3J0IGNvbnN0IGdldFJhZGl1c1ZhbHVlID0gKHZhbHVlLCBwcm9wKSA9PiB7XG4gICAgaWYgKHByb3AgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgcmV0dXJuIGRvbnV0UmF0aW9NYXBbdmFsdWVdO1xuICAgIH1cbiAgICBpZiAocHJvcCA9PT0gJ2tleScpIHtcbiAgICAgICAgcmV0dXJuIGRvbnV0UmF0aW9NYXBJbnZlcnRbdmFsdWVdO1xuICAgIH1cbn07XG5cbi8vIFJldHVybnMgbGFiZWxzIGNvbmZpZ1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVzID0gKHNob3dsYWJlbHMsIHNob3dsYWJlbHNvdXRzaWRlLCBwcm9wKSA9PiB7XG4gICAgY29uc3QgbGFiZWxzQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHNob3dsYWJlbHMpIHtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2luc2lkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVsc291dHNpZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvdXRzaWRlJzpcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsc0NvbmZpZztcbn07XG5cbi8vIENvbnN0cnVjdCB0aGUgc2FtcGxlIGRhdGFcbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RTYW1wbGVEYXRhID0gKGRhdGFUeXBlLCB5YXhpc0xlbmd0aCwgc2hhcGUpID0+IHtcbiAgICBsZXQgZmlyc3Rfc2VyaWVzID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXSxcbiAgICAgICAgdGhpcmRfc2VyaWVzID0gW10sXG4gICAgICAgIGZpcnN0X3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzX2FycmF5ID0gW10sXG4gICAgICAgIHRoaXJkX3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICBmaXJzdF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIHRoaXJkX3Nlcmllc19idWJibGUgPSBbXSxcbiAgICAgICAgZGF0YSA9IFtdO1xuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgICAgY2FzZSAnanNvbkZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDEnLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAyJywgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMycsICd5JzogNTAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogNDAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDcwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogODAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDYwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3NlcmllcyxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGluZUNoYXJ0Rm9ybWF0JzpcbiAgICAgICAgICAgIGZpcnN0X3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAxLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDIsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMywgJ3knOiA1MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNzAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDgwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNjAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzLFxuICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzFdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHNlY29uZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhcnJheUZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXNfYXJyYXkgPSBbXG4gICAgICAgICAgICAgICAgWzEsIDQwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFsyLCAxMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMywgNTAwMDAwMF1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCAzMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgNDAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDcwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCAyMDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgODAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDYwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYnViYmxlRm9ybWF0JzpcbiAgICAgICAgICAgIHNoYXBlID0gc2hhcGUgPT09ICdyYW5kb20nID8gIGFsbFNoYXBlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhbGxTaGFwZXMubGVuZ3RoKV0gOiBzaGFwZTtcbiAgICAgICAgICAgIGZpcnN0X3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogODAuNjYsICd5JzogMzM3Mzk5MDAsICAnc2l6ZSc6IDc4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzkuODQsICd5JzogODE5MDIzMDAsICAnc2l6ZSc6IDkwLCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzguNiwgICd5JzogNTUyMzEwMCwgICAnc2l6ZSc6IDQ1LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzX2J1YmJsZSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiA3Mi43MywgJ3knOiA3OTcxNjIwMCwgICdzaXplJzogOTgsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA4MC4wNSwgJ3knOiA2MTgwMTYwMCwgICdzaXplJzogMjAsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA3Mi40OSwgJ3knOiA3MzEzNzIwMCwgICdzaXplJzogMzQsICdzaGFwZSc6IHNoYXBlfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogNjguMDksICd5JzogMzM3Mzk5MDAsICAnc2l6ZSc6IDQ1LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogODEuNTUsICd5JzogNzQ4NTYwMCwgICAnc2l6ZSc6IDc4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNjguNjAsICd5JzogMTQxODUwMDAwLCAnc2l6ZSc6IDU2LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaWVDaGFydEZvcm1hdCc6XG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwMSwgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDIsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXAzLCAneSc6IDMwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwNCwgJ3knOiA0MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhVHlwZSA9IHdpZGdldENvbnRleHQgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSB3aWRnZXRDb250ZXh0LnR5cGU7XG4gICAgaWYgKGlzTGluZUNoYXJ0KHR5cGUpKSB7XG4gICAgICAgIHJldHVybiAnbGluZUNoYXJ0Rm9ybWF0JztcbiAgICB9XG4gICAgaWYgKGlzUGllVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4gJ3BpZUNoYXJ0Rm9ybWF0JztcbiAgICB9XG4gICAgaWYgKGlzQnViYmxlQ2hhcnQodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuICdidWJibGVGb3JtYXQnO1xuICAgIH1cbiAgICByZXR1cm4gaXNDaGFydERhdGFKU09OKHR5cGUpID8gJ2pzb25Gb3JtYXQnIDogJ2FycmF5Rm9ybWF0Jztcbn07XG5cbi8vIFNhbXBsZSBkYXRhIHRvIHBvcHVsYXRlIHdoZW4gbm8gZGF0YSBpcyBib3VuZFxuZXhwb3J0IGNvbnN0IGdldFNhbXBsZURhdGEgPSB3aWRnZXRDb250ZXh0ID0+IGNvbnN0cnVjdFNhbXBsZURhdGEoZ2V0RGF0YVR5cGUod2lkZ2V0Q29udGV4dCksIHNwbGl0KHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LCAnLCcpLmxlbmd0aCwgd2lkZ2V0Q29udGV4dC5zaGFwZSk7XG5cbi8vIENoZWNrIHdoZXRoZXIgWC9ZIERvbWFpbiB3YXMgc2V0IHRvIE1pbiBhbmQgaXMgc3VwcG9ydGVkIGZvciB0aGUgcHJlc2VudCBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQXhpc0RvbWFpblZhbGlkID0gKHdpZGdldENvbnRleHQsIGF4aXMpID0+IHtcbiAgICBpZiAod2lkZ2V0Q29udGV4dFtheGlzICsgJ2RvbWFpbiddID09PSAnTWluJyAmJiAoaXNBeGlzRG9tYWluU3VwcG9ydGVkKHdpZGdldENvbnRleHQudHlwZSkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIG1pbiBhbmQgbWF4IHZhbHVlcyBhcmUgZmluaXRlIG9yIG5vdFxuZXhwb3J0IGNvbnN0IGFyZU1pbk1heFZhbHVlc1ZhbGlkID0gdmFsdWVzID0+IHtcbiAgICBpZiAoaXNGaW5pdGUodmFsdWVzLm1pbikgJiYgaXNGaW5pdGUodmFsdWVzLm1heCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZU2NhbGVNaW5WYWx1ZSA9IHZhbHVlID0+IHtcbiAgICBjb25zdCBfbWluID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgLyogSWYgdGhlIG51bWJlciBoYXMgYSkgZGVjaW1hbCBwYXJ0IHJldHVybmluZyBmbG9vciB2YWx1ZSAtIDAuMVxuICAgICBiKSBubyBkZWNpbWFsIHBhcnQgcmV0dXJuaW5nIGZsb29yIHZhbHVlIC0gMSAqL1xuICAgIHJldHVybiBNYXRoLmFicyh2YWx1ZSkgLSBfbWluID4gMCA/IHZhbHVlIC0gMC4xIDogX21pbiAtIDE7XG59O1xuXG4vLyBDaG9vc2VzIHRoZSBkYXRhIHBvaW50cyBvZiBsaW5lL2N1bXVsYXRpdmUgbGluZS9hcmVhIGNoYXJ0IGFuZCBoaWdobGlnaHRzIHRoZW1cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRQb2ludHMgPSAoaWQsIGhpZ2hsaWdodHBvaW50cykgPT4ge1xuICAgIGNvbnN0IGNoYXJ0U3ZnID0gaWQgPyBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIGlkICsgJyBzdmcnKSA6IGQzLnNlbGVjdChjaGFydElkICsgJyBzdmcnKTtcbiAgICBpZiAoaGlnaGxpZ2h0cG9pbnRzKSB7XG4gICAgICAgIGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LXBvaW50JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzZweCcpXG4gICAgICAgICAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsICcwLjk1JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLW9wYWNpdHknLCAnMC45NScpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LXBvaW50JylcbiAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzBweCcpXG4gICAgICAgICAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsICcwJyk7XG4gICAgfVxufTtcblxuLy8gQ2hvb3NlcyB0aGUgbGluZSBvZiBsaW5lL2N1bXVsYXRpdmUgbGluZSBhbmQgaW5jcmVhc2VzIHRoZSB0aGlja25lc3Mgb2YgaXRcbmV4cG9ydCBjb25zdCBzZXRMaW5lVGhpY2tuZXNzID0gKGlkLCB0aGlja25lc3MpID0+IHtcbiAgICBjb25zdCBjaGFydFN2ZyA9IGlkID8gZDMuc2VsZWN0KCcjd21DaGFydCcgKyBpZCArICcgc3ZnJykgOiBkMy5zZWxlY3QoY2hhcnRJZCArICcgc3ZnJyk7XG4gICAgdGhpY2tuZXNzID0gdGhpY2tuZXNzIHx8IDEuNTtcblxuICAgIGNvbnN0IGxpbmVzID0gY2hhcnRTdmcuc2VsZWN0QWxsKCcubnYtbGluZScpO1xuXG4gICAgaWYgKGxpbmVzLnNpemUoKSAhPT0gMCkge1xuICAgICAgICBsaW5lcy5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgdGhpY2tuZXNzKTtcbiAgICB9XG59O1xuXG4vLyBDb25zdHJ1Y3RpbmcgYSBjb21tb24ga2V5IHZhbHVlIG1hcCBmb3IgcHJldmlldyBhbmQgY2FudmFzIG1vZGVcbmV4cG9ydCBjb25zdCBpbml0UHJvcGVydGllcyA9ICh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKSA9PiB7XG4gICAgaWYgKCFwcm9wZXJ0eVZhbHVlTWFwIHx8IGlzRW1wdHlPYmplY3QocHJvcGVydHlWYWx1ZU1hcCkpIHtcbiAgICAgICAgcHJvcGVydHlWYWx1ZU1hcCA9IHt9O1xuICAgIH1cbiAgICBmb3JFYWNoKGJhc2ljUHJvcGVydGllcywgcHJvcCA9PiB7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChwcm9wZXJ0eVZhbHVlTWFwW3Byb3BdKSkge1xuICAgICAgICAgICAgcHJvcGVydHlWYWx1ZU1hcFtwcm9wXSA9IHdpZGdldENvbnRleHRbcHJvcF07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlTWFwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE51bWJlclZhbHVlID0gKHZhbHVlLCBjYWxsYmFjaykgPT4ge1xuICAgIHJldHVybiBpc05hTihwYXJzZUludCh2YWx1ZSwgMTApKSA/IGNhbGxiYWNrKHZhbHVlLCAndmFsdWUnKSA6IHZhbHVlO1xufTtcblxuLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdmFsdWUgYWNjb3JkaW5nIHRvIGRhdGUgZm9ybWF0XG5leHBvcnQgY29uc3QgZ2V0RGF0ZUZvcm1hdGVkRGF0YSA9IChkYXRlRm9ybWF0LCBkKSA9PiB7XG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQgfHwgJyV4JztcbiAgICAvKipcbiAgICAgKiBpZiBkYXRlIHZhbHVlIGlzIHN0cmluZyBcIjIwLTA1LTIwMTlcIiB0aGVuIG5ldyBEYXRlKHZhbHVlKSByZXR1cm4gMjBNYXkyMDE5IHdpdGggY3VycmVudCB0aW1lIGluIEluZGlhLFxuICAgICAqIHdoZXJlYXMgdGhpcyB3aWxsIHJldHVybiAxOU1heTIwMTkgd2l0aCB0aW1lIGxhZ2dpbmcgZm9yIGZldyBob3Vycy5cbiAgICAgKiBUaGlzIGlzIGJlY2F1c2UgaXQgcmV0dXJucyBVVEMgdGltZSBpLmUuIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIChVVEMpLlxuICAgICAqIFRvIGNyZWF0ZSBkYXRlIGluIGxvY2FsIHRpbWUgdXNlIG1vbWVudFxuICAgICAqL1xuICAgIGlmKGRhdGVGb3JtYXQgPT0gJyVjJykge1xuICAgICAgICBkYXRlRm9ybWF0ID0gJyVhICViICVlICVYICVZJztcbiAgICB9XG4gICAgcmV0dXJuIGQzLnRpbWVGb3JtYXQoZGF0ZUZvcm1hdCkobmV3IERhdGUobW9tZW50KG1vbWVudChkKS5mb3JtYXQoKSkudmFsdWVPZigpKSk7XG59O1xuY29uc3QgcmVtb3ZlVHJhaWxpbmdaZXJvcyA9IHZhbHVlID0+IHtcbiAgICBpZighdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGEgc3RyaW5nIGlmIGl0J3MgYSBudW1iZXJcbiAgICBjb25zdCBzdHJpbmdWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZS50b1N0cmluZygpIDogdmFsdWU7XG5cbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3NcbiAgICByZXR1cm4gc3RyaW5nVmFsdWUucmVwbGFjZSgvXFwuMCsoW0EtWmEtel0qKSQvLCAnJDEnKS5yZXBsYWNlKC9cXC4oWzEtOV0rKTArKFtBLVphLXpdKikkLywgJy4kMSQyJyk7XG59O1xuXG4vLyBGb3JtYXRzIHRoZSBnaXZlbiB2YWx1ZSBhY2NvcmRpbmcgdG8gbnVtYmVyIGZvcm1hdFxuZXhwb3J0IGNvbnN0IGdldE51bWJlckZvcm1hdGVkRGF0YSA9IChudW1iZXJGb3JtYXQsIGQpID0+IHtcbiAgICBsZXQgZm9ybWF0dGVkRGF0YSxcbiAgICAgICAgZGl2aWRlcixcbiAgICAgICAgcHJlZml4O1xuICAgIC8vIGZvcm1hdHRpbmcgdGhlIGRhdGEgYmFzZWQgb24gbnVtYmVyIGZvcm1hdCBzZWxlY3RlZFxuICAgIGlmIChudW1iZXJGb3JtYXQpIHtcbiAgICAgICAgbGV0IG51bWJlckZvcm1hdHRlcjtcbiAgICAgICAgaWYobnVtYmVyRm9ybWF0ID09ICdUaG91c2FuZCcgfHwgbnVtYmVyRm9ybWF0ID09ICdNaWxsaW9uJyB8fCBudW1iZXJGb3JtYXQgPT0gJ0JpbGxpb24nKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJywuMnMnKTtcbiAgICAgICAgfSBlbHNlIGlmKG51bWJlckZvcm1hdCA9PSAnJScpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLjIlJyk7XG4gICAgICAgIH1lbHNlIGlmKG51bWJlckZvcm1hdCA9PSAnLmYnKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJy4yZicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KG51bWJlckZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0dGVkRGF0YSA9IG51bWJlckZvcm1hdHRlcihkKTtcblxuXG4gICAgICAgIC8vIEdldHRpbmcgdGhlIHJlc3BlY3RpdmUgZGl2aWRlclsxMDAwLDEwMDAwMDAsMTAwMDAwMDAwMF0gYmFzZWQgb24gdGhlIG51bWJlciBmb3JtYXQgY2hvb3NlblxuICAgICAgICBkaXZpZGVyID0gKHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0gJiYgdGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XS5kaXZpZGVyKSB8fCAwO1xuICAgICAgICBwcmVmaXggPSB0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdICYmIHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0ucHJlZml4O1xuICAgICAgICBpZiAocHJlZml4ICYmIGRpdmlkZXIgIT09IDApIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZERhdGEgPSBkMy5mb3JtYXQoJy4yZicpKGQgLyBkaXZpZGVyKSArIHByZWZpeDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF1dG8gZm9ybWF0dGluZyB0aGUgZGF0YSB3aGVuIG5vIGZvcm1hdGluZyBvcHRpb24gaXMgY2hvc2VuXG4gICAgICAgIGZvcm1hdHRlZERhdGEgPSBkID49IDEwMDAgPyBkMy5mb3JtYXQoJy4xcycpKGQpIDogZDtcbiAgICB9XG4gICAgZm9ybWF0dGVkRGF0YSA9IHJlbW92ZVRyYWlsaW5nWmVyb3MoZm9ybWF0dGVkRGF0YSk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGE7XG59O1xuXG4vLyBTZXQgdGhlIHZpc2liaWxpdHkgcHJvcGVydHkgb2YgdGhlIGNoYXJ0IHgseSBheGlzIGR1ZSB0byBhIGJ1ZyBpbiB0aGUgbnZkM1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUF4aXNTaG93ID0gKHByb3BlcnR5LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0ICR4QXhpcyA9IGQzLnNlbGVjdChjaGFydElkICsgJyBnLm52LWF4aXMubnYteCcpLFxuICAgICAgICAkeUF4aXMgPSBkMy5zZWxlY3QoY2hhcnRJZCArICcgZy5udi1heGlzLm52LXknKTtcbiAgICBpZiAocHJvcGVydHkgPT09ICdzaG93eGF4aXMnKSB7XG4gICAgICAgICR4QXhpcy5zdHlsZSgndmlzaWJpbGl0eScsIHZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgICR5QXhpcy5zdHlsZSgndmlzaWJpbGl0eScsIHZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtb2RpZnlMZWdlbmRQb3NpdGlvbiA9ICh3aWRnZXRDb250ZXh0LCBwb3NpdGlvbiwgaWQpID0+IHtcbiAgICBjb25zdCBzaG93TGVnZW5kID0gaXNTaG93TGVnZW5kKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCksXG4gICAgICAgIGNoYXJ0X0lkID0gaWQgPyAnI3dtQ2hhcnQnICsgaWQgOiBjaGFydElkLFxuICAgICAgICBsZWdlbmRXcmFwID0gZDMuc2VsZWN0KGNoYXJ0X0lkICsgJyAubnYtbGVnZW5kV3JhcCcpLFxuICAgICAgICBsZWdlbmRQYWRkaW5nID0gNTtcbiAgICAvLyBSZXR1cm4gd2hlbiBzaG93bGVnZW5kIGlzIGZhbHNlXG4gICAgaWYgKCFzaG93TGVnZW5kIHx8ICFsZWdlbmRXcmFwWydfZ3JvdXBzJ11bMF1bMF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgIGNvbnN0IGxlZ2VuZFdyYXBIZWlnaHQgPSBsZWdlbmRXcmFwWydfZ3JvdXBzJ11bMF1bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgd3JhcCA9IGQzLnNlbGVjdChjaGFydF9JZCArICcgLm52LXdyYXAnKSxcbiAgICAgICAgICAgIHdyYXBUcmFuc2Zvcm0gPSAod3JhcCAmJiB3cmFwLmF0dHIoJ3RyYW5zZm9ybScpKSA/IHdyYXAuYXR0cigndHJhbnNmb3JtJykucmVwbGFjZSgvLCAvZywgJywnKSA6ICcnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXMgPSAvdHJhbnNsYXRlXFwoXFxzKihbXlxccywpXSspWyAsXShbXlxccywpXSspLy5leGVjKHdyYXBUcmFuc2Zvcm0pLFxuICAgICAgICAgICAgZ2V0Q2hhcnRIZWlnaHQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoYXJ0SGVpZ2h0ID0gJChjaGFydF9JZCArICcgc3ZnPi5udmQzLm52LXdyYXAnKVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXJ0SGVpZ2h0ID09PSAwKSB7IC8vIGZpeCBmb3IgSUVcbiAgICAgICAgICAgICAgICAgICAgY2hhcnRIZWlnaHQgPSAoJChjaGFydF9JZCArICcgc3ZnJylbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IC0gKGxlZ2VuZFdyYXBIZWlnaHQgKyAxNSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhcnRIZWlnaHQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICBsZWdlbmRXcmFwLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMCAsICcgKyAoZ2V0Q2hhcnRIZWlnaHQoKSAtIGxlZ2VuZFdyYXBIZWlnaHQgLSBsZWdlbmRQYWRkaW5nKSArICcpJyk7XG4gICAgICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgICAgICAgd3JhcC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCcgKyBjb29yZGluYXRlc1sxXSArICcsJyArIGxlZ2VuZFBhZGRpbmcgKyAnKScpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8gUmV0dXJucyB2YWx1ZSBpZiBsZWdlbmQgbmVlZCB0byBzaG93biBvciBub3RcbmV4cG9ydCBjb25zdCBpc1Nob3dMZWdlbmQgPSB2YWx1ZSA9PiB7XG4gICAgLy8gT2xkIHByb2plY3RzIHdpbGwgaGF2ZSBlaXRoZXIgdHJ1ZSBvciBmYWxzZVxuICAgIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gTmV3IHByb2plY3RzIHdpbGwgaGF2ZSBlaXRoZXIgJ0hpZGUgTGVnZW5kJywgJ1Nob3cgVG9wJywgJ1Nob3cgQm90dG9tJ1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2hpZGUnID8gZmFsc2UgOiB0cnVlO1xufTtcblxuLyoqXG4gKiBDdXN0b21pc2UgdGhlIHRvb2x0aXAgZm9yIGRvbnV0ICYgcGllIGNoYXJ0cyBhbmQgYWxzbyBmb3IgY2hhcnRzIGhhdmluZyBvbmx5IG9uZSB2YWx1ZSBhdHRhY2hlZCB0byB5YXhpc1xuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGxhYmVsXG4gKi9cbmV4cG9ydCBjb25zdCBjdXN0b21pc2VUb29sdGlwID0gKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0LCBsYWJlbD8pID0+IHtcbiAgICBkMy5zZWxlY3RBbGwoJy5udnRvb2x0aXAnKS5zdHlsZSgnb3BhY2l0eScsIDApO1xuICAgIGNoYXJ0LnRvb2x0aXAuY29udGVudEdlbmVyYXRvcigoa2V5LCBwcm9wZXJ0eVZhbHVlTWFwKSA9PiB7XG4gICAgICAgIGxldCB4VmFsdWUgPSBrZXkuZGF0YS54LCB5VmFsdWU7XG4gICAgICAgIHlWYWx1ZSA9IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGtleS5kYXRhLnkpO1xuICAgICAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgIGxhYmVsID0ga2V5LmRhdGEueDtcbiAgICAgICAgICAgIHhWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnPHRhYmxlPicgK1xuICAgICAgICAgICAgJzx0Ym9keT4nICtcbiAgICAgICAgICAgICc8dHIgY2xhc3M9XCJ2YWx1ZVwiPjxiPicgKyB4VmFsdWUgK1xuICAgICAgICAgICAgJzwvYj48L3RyPicgK1xuICAgICAgICAgICAgJzx0cj4nICtcbiAgICAgICAgICAgICc8dGQgY2xhc3M9XCJsZWdlbmQtY29sb3ItZ3VpZGVcIj48ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjonICsga2V5LmNvbG9yICsgJztcIj48L2Rpdj48L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cImtleVwiPicgKyBsYWJlbCArICc8L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cInZhbHVlXCI+JyArIHlWYWx1ZSArICc8L3RkPicgK1xuICAgICAgICAgICAgJzwvdHI+JyArXG4gICAgICAgICAgICAnPC90Ym9keT4nICtcbiAgICAgICAgICAgICc8L3RhYmxlPic7XG4gICAgfSk7XG59O1xuXG4vLyBpbnRpYWxpemVzIHRoZSBjaGFydCBvYmVqY3RcbmV4cG9ydCBjb25zdCBpbml0Q2hhcnQgPSAod2lkZ2V0Q29udGV4dCwgeERvbWFpblZhbHVlcywgeURvbWFpblZhbHVlcywgcHJvcGVydHlWYWx1ZU1hcCwgaXNQcmV2aWV3KSA9PiB7XG4gICAgcHJvcGVydHlWYWx1ZU1hcCA9ICBpbml0UHJvcGVydGllcyh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKTtcbiAgICBsZXQgY2hhcnQsIGNvbG9ycyA9IFtdLCB4YXhpc2xhYmVsLCB5YXhpc2xhYmVsLCBsYWJlbENvbmZpZywgcmFkaXVzLCBiYXJTcGFjaW5nLFxuICAgICAgICBzaG93TGVnZW5kLCB4QXhpc1ZhbHVlLCBoYXNNdWx0aXBsZVlWYWx1ZXM7XG4gICAgY29uc3QgeFZhbHVlOiBhbnkgPSB7fSwgeVZhbHVlOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHdpZGdldENvbnRleHQudHlwZSkge1xuICAgICAgICBjYXNlICdDb2x1bW4nOlxuICAgICAgICAgICAgYmFyU3BhY2luZyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuYmFyc3BhY2luZywgZ2V0QmFyU3BhY2luZ1ZhbHVlKSB8fCBiYXJTcGFjaW5nTWFwLm1lZGl1bTtcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5yZWR1Y2VYVGlja3MocHJvcGVydHlWYWx1ZU1hcC5yZWR1Y2V4dGlja3MpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZUxhYmVscygwKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnN0YWNrZWQocHJvcGVydHlWYWx1ZU1hcC52aWV3dHlwZSA9PT0gJ1N0YWNrZWQnID8gIHRydWUgOiBmYWxzZSlcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0N1bXVsYXRpdmUgTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5jdW11bGF0aXZlTGluZUNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGRbMF0pXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkWzFdKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5saW5lQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZShwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKVxuICAgICAgICAgICAgICAgIC5pbnRlcnBvbGF0ZShwcm9wZXJ0eVZhbHVlTWFwLmludGVycG9sYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0FyZWEnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMuc3RhY2tlZEFyZWFDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLmNsaXBFZGdlKHRydWUpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3R5bGUocHJvcGVydHlWYWx1ZU1hcC5hcmVhdmlld3R5cGUpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQmFyJzpcbiAgICAgICAgICAgIGJhclNwYWNpbmcgPSBnZXROdW1iZXJWYWx1ZShwcm9wZXJ0eVZhbHVlTWFwLmJhcnNwYWNpbmcsIGdldEJhclNwYWNpbmdWYWx1ZSkgfHwgYmFyU3BhY2luZ01hcC5tZWRpdW07XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5tdWx0aUJhckhvcml6b250YWxDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3RhY2tlZChwcm9wZXJ0eVZhbHVlTWFwLnZpZXd0eXBlID09PSAnU3RhY2tlZCcgPyAgdHJ1ZSA6IGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zaG93VmFsdWVzKHByb3BlcnR5VmFsdWVNYXAuc2hvd3ZhbHVlcylcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BpZSc6XG4gICAgICAgIGNhc2UgJ0RvbnV0JzpcbiAgICAgICAgICAgIGxhYmVsQ29uZmlnID0gZ2V0TGFiZWxWYWx1ZXMocHJvcGVydHlWYWx1ZU1hcC5zaG93bGFiZWxzLCBwcm9wZXJ0eVZhbHVlTWFwLnNob3dsYWJlbHNvdXRzaWRlLCAndmFsdWUnKTtcbiAgICAgICAgICAgIHJhZGl1cyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuZG9udXRyYXRpbywgZ2V0UmFkaXVzVmFsdWUpIHx8IGRvbnV0UmF0aW9NYXAubWVkaXVtO1xuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMucGllQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93TGFiZWxzKGxhYmVsQ29uZmlnLnNob3dsYWJlbHMpXG4gICAgICAgICAgICAgICAgLmxhYmVsVHlwZShwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSlcbiAgICAgICAgICAgICAgICAudmFsdWVGb3JtYXQoZDMuZm9ybWF0KCclJykpXG4gICAgICAgICAgICAgICAgLnRpdGxlKHByb3BlcnR5VmFsdWVNYXAuY2VudGVybGFiZWwpXG4gICAgICAgICAgICAgICAgLmxhYmVsVGhyZXNob2xkKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0aHJlc2hvbGQgfHwgMC4wMSlcbiAgICAgICAgICAgICAgICAubGFiZWxzT3V0c2lkZShsYWJlbENvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSk7XG4gICAgICAgICAgICBpZiAoaXNEb251dENoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjaGFydC5kb251dCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAuZG9udXRSYXRpbyhyYWRpdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0eXBlID09PSAna2V5LXZhbHVlJykge1xuICAgICAgICAgICAgICAgIGNoYXJ0LmxhYmVsVHlwZShkID0+IGQuZGF0YS54ICsgJyAnICsgZC5kYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0J1YmJsZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5zY2F0dGVyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFgocHJvcGVydHlWYWx1ZU1hcC5zaG93eGRpc3RhbmNlKVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFkocHJvcGVydHlWYWx1ZU1hcC5zaG93eWRpc3RhbmNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh4RG9tYWluVmFsdWVzKSB7XG4gICAgICAgIHhWYWx1ZS5taW4gPSB4RG9tYWluVmFsdWVzLm1pbi54IHx8IHhEb21haW5WYWx1ZXMubWluWzBdO1xuICAgICAgICB4VmFsdWUubWF4ID0geERvbWFpblZhbHVlcy5tYXgueCB8fCB4RG9tYWluVmFsdWVzLm1heFswXTtcbiAgICAgICAgLy8gSWYgdGhlIHZhbHVlcyBvbiB0aGUgeCBheGlzIGFyZSBzdHJpbmcgdGhlbiBtaW4gbWF4IHZhbHVlcyBnaXZlcyBJbmZpbml0eVxuICAgICAgICBpZiAoYXJlTWluTWF4VmFsdWVzVmFsaWQoeFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAwLjEgc28gdGhlIG1pbiB2YWx1ZSBpcyBub3QgbWlzc2VkIG91dFxuICAgICAgICAgICAgeFZhbHVlLm1pbiA9IGdldFlTY2FsZU1pblZhbHVlKHhWYWx1ZS5taW4pO1xuICAgICAgICAgICAgY2hhcnQueERvbWFpbihbeFZhbHVlLm1pbiwgeFZhbHVlLm1heF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHlEb21haW5WYWx1ZXMpIHtcbiAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAxIHNvIHRoZSBtaW4gdmFsdWUgaXMgbm90IG1pc3NlZCBvdXRcbiAgICAgICAgeVZhbHVlLm1pbiA9IHlEb21haW5WYWx1ZXMubWluLnkgfHwgeURvbWFpblZhbHVlcy5taW5bMV07XG4gICAgICAgIHlWYWx1ZS5tYXggPSB5RG9tYWluVmFsdWVzLm1heC55IHx8IHlEb21haW5WYWx1ZXMubWF4WzFdO1xuICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIG9uIHRoZSB5IGF4aXMgYXJlIHN0cmluZyBvciBpbnZhbGlkIHRoZW4gbWluIG1heCB2YWx1ZXMgZ2l2ZXMgSW5maW5pdHlcbiAgICAgICAgaWYgKGFyZU1pbk1heFZhbHVlc1ZhbGlkKHlWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFJlZHVjaW5nIHRoZSBtaW4gdmFsdWUgdG8gMSBzbyB0aGUgbWluIHZhbHVlIGlzIG5vdCBtaXNzZWQgb3V0XG4gICAgICAgICAgICB5VmFsdWUubWluID0gZ2V0WVNjYWxlTWluVmFsdWUoeVZhbHVlLm1pbik7XG4gICAgICAgICAgICBjaGFydC55RG9tYWluKFt5VmFsdWUubWluLCB5VmFsdWUubWF4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXR0aW5nIHRoZSBsZWdlbmQgdHlwZSBjaG9vc2VuIGJ5IHVzZXIgb3IgZGVmYXVsdCBpdCB3aWxsIGJlIGZ1cmlvdXNcbiAgICBjaGFydC5sZWdlbmQudmVycygocHJvcGVydHlWYWx1ZU1hcC5sZWdlbmR0eXBlICYmIHByb3BlcnR5VmFsdWVNYXAubGVnZW5kdHlwZS50b0xvd2VyQ2FzZSgpKSB8fCAnZnVyaW91cycpO1xuXG4gICAgaWYgKCFpbmNsdWRlcyhjaGFydFR5cGVzLCB3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAueShkID0+IGQueSk7XG4gICAgfVxuXG5cbiAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBwaWUvZG9udXQgY2hhcnQgZm9ybWF0dGluZyB0aGUgdmFsdWVzIG9mIGl0XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSA9PT0gJ3BlcmNlbnQnKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkMy5mb3JtYXQoJyUnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcHMgaW4gY2FzZSBvZiB0aGUgcGllIGFuZCBkb251dCB3aGVuIGxhYmVsVHlwZSBpcyB2YWx1ZVxuICAgICAgICBjdXN0b21pc2VUb29sdGlwKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNoYXJ0LnNob3dYQXhpcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3d4YXhpcylcbiAgICAgICAgICAgIC5zaG93WUF4aXMocHJvcGVydHlWYWx1ZU1hcC5zaG93eWF4aXMpO1xuICAgICAgICBjaGFydC5sZWdlbmRQb3NpdGlvbihwcm9wZXJ0eVZhbHVlTWFwLnNob3dsZWdlbmQpO1xuXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIGxhYmVscyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgZXhwbGljaXRseSBvciB0YWtpbmcgdGhlIGF4aXNrZXlzIGNob3NlblxuICAgICAgICB4YXhpc2xhYmVsID0gcHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsIHx8IHByZXR0aWZ5TGFiZWxzKHdpZGdldENvbnRleHQueGF4aXNkYXRha2V5KSB8fCAneCBjYXB0aW9uJztcbiAgICAgICAgeWF4aXNsYWJlbCA9IHByb3BlcnR5VmFsdWVNYXAueWF4aXNsYWJlbCB8fCBwcmV0dGlmeUxhYmVscyh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSkgfHwgJ3kgY2FwdGlvbic7XG5cbiAgICAgICAgLy8gQ2hlY2tpbmcgaWYgeSBheGlzIGhhcyBtdWx0aXBsZSB2YWx1ZXNcbiAgICAgICAgaWYgKHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5ICYmIHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LnNwbGl0KCcsJykubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaGFzTXVsdGlwbGVZVmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcCB0byBzaG93IHlheGlzbGFiZWwsIG9ubHkgaWYgdGhlIHkgYXhpcyBjb250YWlucyBvbmUgdmFsdWVcbiAgICAgICAgaWYgKCFoYXNNdWx0aXBsZVlWYWx1ZXMgJiYgIWlzQnViYmxlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY3VzdG9taXNlVG9vbHRpcChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCwgeWF4aXNsYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGRpbmcgdGhlIHVuaXRzIHRvIHRoZSBjYXB0aW9ucyBpZiB0aGV5IGFyZSBzcGVjaWZpZWRcbiAgICAgICAgeGF4aXNsYWJlbCArPSBwcm9wZXJ0eVZhbHVlTWFwLnh1bml0cyA/ICcoJyArIHByb3BlcnR5VmFsdWVNYXAueHVuaXRzICsgJyknIDogJyc7XG4gICAgICAgIHlheGlzbGFiZWwgKz0gcHJvcGVydHlWYWx1ZU1hcC55dW5pdHMgPyAnKCcgKyBwcm9wZXJ0eVZhbHVlTWFwLnl1bml0cyArICcpJyA6ICcnO1xuXG4gICAgICAgIGNoYXJ0LnhBeGlzXG4gICAgICAgICAgICAuYXhpc0xhYmVsKHhheGlzbGFiZWwpXG4gICAgICAgICAgICAuYXhpc0xhYmVsRGlzdGFuY2UocHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsZGlzdGFuY2UpXG4gICAgICAgICAgICAuc3RhZ2dlckxhYmVscyhwcm9wZXJ0eVZhbHVlTWFwLnN0YWdnZXJsYWJlbHMpO1xuXG4gICAgICAgIC8vIElmIGRhdGUgZm9ybWF0IHNldCBmb3JtYXQgYmFzZWQgZGF0ZSBmb3JtYXRcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQgfHwgKGlzUHJldmlldyAmJiAhaXNCdWJibGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSkge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgeEF4aXNWYWx1ZSA9IGlzUHJldmlldyA/IGRhdGVMaXN0W2QgLSAxXSA6IHdpZGdldENvbnRleHQueERhdGFLZXlBcnJbZF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREYXRlRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQsIHhBeGlzVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0RGF0ZUZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0LCBkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZU1hcC54bnVtYmVyZm9ybWF0KSB7XG4gICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueG51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gd2lkZ2V0Q29udGV4dC54RGF0YUtleUFycltkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhcnQueUF4aXNcbiAgICAgICAgICAgIC5heGlzTGFiZWwoeWF4aXNsYWJlbClcbiAgICAgICAgICAgIC5heGlzTGFiZWxEaXN0YW5jZShwcm9wZXJ0eVZhbHVlTWFwLnlheGlzbGFiZWxkaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdGFnZ2VyTGFiZWxzKHByb3BlcnR5VmFsdWVNYXAuc3RhZ2dlcmxhYmVscylcbiAgICAgICAgICAgIC50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXA/LnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgaWYgKGlzQmFyQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY2hhcnQudmFsdWVGb3JtYXQoZCA9PiBnZXROdW1iZXJGb3JtYXRlZERhdGEocHJvcGVydHlWYWx1ZU1hcD8ueW51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3VwcG9ydCBmb3IgY3VzdG9tIGNvbG9ycyBpZiB1c2VyIGdpdmVzIGRpcmVjdCBzdHJpbmcgb2YgY29sb3JzIGluIHRleHQgYm94XG4gICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzKSAmJiBwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykge1xuICAgICAgICBjb2xvcnMgPSBzcGxpdChwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycywgJywnKTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkocHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMpKSB7XG4gICAgICAgIGNvbG9ycyA9IHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzO1xuICAgIH1cblxuICAgIHNob3dMZWdlbmQgPSBpc1Nob3dMZWdlbmQocHJvcGVydHlWYWx1ZU1hcC5zaG93bGVnZW5kKTtcbiAgICBjaGFydC5zaG93TGVnZW5kKHNob3dMZWdlbmQpXG4gICAgICAgIC5tYXJnaW4oe3RvcDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXR0b3AsIHJpZ2h0OiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldHJpZ2h0LCBib3R0b206IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0Ym90dG9tLCBsZWZ0OiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldGxlZnR9KVxuICAgICAgICAuY29sb3IoY29sb3JzLmxlbmd0aCA/IGNvbG9ycyA6IHRoZW1lc1twcm9wZXJ0eVZhbHVlTWFwLnRoZW1lXS5jb2xvcnMpO1xuXG4gICAgY2hhcnQudG9vbHRpcC5lbmFibGVkKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpO1xuICAgIHdpZGdldENvbnRleHQubWVzc2FnZSA9IHByb3BlcnR5VmFsdWVNYXAubm9kYXRhbWVzc2FnZSB8fCAnTm8gZGF0YSBmb3VuZCc7XG4gICAgLy8gc2V0dGluZyB0aGUgbm8gZGF0YSBtZXNzYWdlXG4gICAgY2hhcnQubm9EYXRhKHdpZGdldENvbnRleHQubWVzc2FnZSk7XG5cbiAgICBpZiAoaXNMaW5lVHlwZUNoYXJ0KHdpZGdldENvbnRleHQudHlwZSkgJiYgd2lkZ2V0Q29udGV4dC5oaWdobGlnaHRwb2ludHMpIHtcbiAgICAgICAgY2hhcnQuZGlzcGF0Y2gub24oJ3N0YXRlQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwb3N0UGxvdENoYXJ0UHJvY2Vzcyh3aWRnZXRDb250ZXh0KSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCAmJiAod2lkZ2V0Q29udGV4dC50eXBlID09PSAnRG9udXQnIHx8IHdpZGdldENvbnRleHQudHlwZSA9PT0gJ1BpZScpKSB7XG4gICAgICAgIGlmKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgY2hhcnQubGVnZW5kUG9zaXRpb24oJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYXJ0O1xufTtcblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNvbnN0IHBvc3RQbG90Q2hhcnRQcm9jZXNzID0gKHdpZGdldENvbnRleHQsIGlzUHJldmlldz8pID0+IHtcbiAgICBjb25zdCBpZCA9IGlzUHJldmlldyA/IG51bGwgOiB3aWRnZXRDb250ZXh0LiRpZDtcbiAgICAvLyBJZiB1c2VyIHNldHMgdG8gaGlnaGxpZ2h0IHRoZSBkYXRhIHBvaW50cyBhbmQgaW5jcmVhc2UgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbGluZVxuICAgIGlmIChpc0xpbmVUeXBlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgIHNldExpbmVUaGlja25lc3MoaWQsIHdpZGdldENvbnRleHQubGluZXRoaWNrbmVzcyk7XG4gICAgICAgaGlnaGxpZ2h0UG9pbnRzKGlkLCB3aWRnZXRDb250ZXh0LmhpZ2hsaWdodHBvaW50cyk7XG4gICAgfVxuICAgIC8vIE1vZGlmeWluZyB0aGUgbGVnZW5kIHBvc2l0aW9uIG9ubHkgd2hlbiBsZWdlbmQgaXMgc2hvd25cbiAgICAvLyBpZiAod2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kKSB7XG4gICAgLy8gICAgIG1vZGlmeUxlZ2VuZFBvc2l0aW9uKHdpZGdldENvbnRleHQsIHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCwgaWQpO1xuICAgIC8vIH1cbn07XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBnZXREYXRlTGlzdCA9ICgpID0+IGRhdGVMaXN0O1xuXG4iXX0=
|
|
@@ -7,7 +7,7 @@ import { Component, ViewEncapsulation, Inject, Optional, HostBinding } from '@an
|
|
|
7
7
|
import * as i1 from '@wm/core';
|
|
8
8
|
import { isEmptyObject, prettifyLabels, isNumberType, triggerFn, DataSource, getClonedObject, isDataSourceEqual, removeAttr } from '@wm/core';
|
|
9
9
|
import { invert, includes, split, isFinite, forEach, isUndefined, isString, isArray, get, minBy, maxBy, map, first, orderBy, groupBy, max, fill, forEachRight, concat, replace, uniq, intersection, isEmpty, keys, isObject, debounce } from 'lodash-es';
|
|
10
|
-
import
|
|
10
|
+
import * as momentLib from 'moment';
|
|
11
11
|
|
|
12
12
|
const registerProps = () => {
|
|
13
13
|
register('wm-chart', new Map([
|
|
@@ -75,6 +75,7 @@ const registerProps = () => {
|
|
|
75
75
|
]));
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
+
const moment = momentLib.default || window['moment'];
|
|
78
79
|
const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'], allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];
|
|
79
80
|
const dateList = ['01/01/2001', '01/01/2002', '01/01/2003'], themes = {
|
|
80
81
|
'Terrestrial': {
|