@datagrok-libraries/statistics 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/fit/const.d.ts +58 -0
- package/src/fit/const.d.ts.map +1 -0
- package/src/fit/const.js +63 -0
- package/src/fit/fit-curve.d.ts +1 -0
- package/src/fit/fit-curve.d.ts.map +1 -1
- package/src/fit/fit-curve.js +1 -1
- package/src/fit/fit-data.d.ts.map +1 -1
- package/src/fit/fit-data.js +37 -5
- package/src/fit/new-fit-API.d.ts +7 -0
- package/src/fit/new-fit-API.d.ts.map +1 -1
- package/src/fit/new-fit-API.js +3 -8
package/package.json
CHANGED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { IFitSeries } from './fit-curve';
|
|
2
|
+
export declare class FitConstants {
|
|
3
|
+
static TAG_FIT_CHART_FORMAT: string;
|
|
4
|
+
static TAG_FIT_CHART_FORMAT_3DX: string;
|
|
5
|
+
static FIT_SEM_TYPE: string;
|
|
6
|
+
static FIT_CELL_TYPE: string;
|
|
7
|
+
static TAG_FIT: string;
|
|
8
|
+
static CELL_DEFAULT_WIDTH: number;
|
|
9
|
+
static CELL_DEFAULT_HEIGHT: number;
|
|
10
|
+
static MIN_CELL_RENDERER_PX_WIDTH: number;
|
|
11
|
+
static MIN_CELL_RENDERER_PX_HEIGHT: number;
|
|
12
|
+
static MIN_POINTS_AND_STATS_VISIBILITY_PX_WIDTH: number;
|
|
13
|
+
static MIN_POINTS_AND_STATS_VISIBILITY_PX_HEIGHT: number;
|
|
14
|
+
static MIN_AXES_CELL_PX_WIDTH: number;
|
|
15
|
+
static MIN_AXES_CELL_PX_HEIGHT: number;
|
|
16
|
+
static MIN_TITLE_PX_WIDTH: number;
|
|
17
|
+
static MIN_TITLE_PX_HEIGHT: number;
|
|
18
|
+
static MIN_X_AXIS_NAME_VISIBILITY_PX_WIDTH: number;
|
|
19
|
+
static MIN_Y_AXIS_NAME_VISIBILITY_PX_HEIGHT: number;
|
|
20
|
+
static MIN_LEGEND_PX_WIDTH: number;
|
|
21
|
+
static MIN_LEGEND_PX_HEIGHT: number;
|
|
22
|
+
static MIN_DROPLINES_VISIBILITY_PX_WIDTH: number;
|
|
23
|
+
static MIN_DROPLINES_VISIBILITY_PX_HEIGHT: number;
|
|
24
|
+
static AXES_LEFT_PX_MARGIN: number;
|
|
25
|
+
static AXES_LEFT_PX_MARGIN_WITH_AXES_LABELS: number;
|
|
26
|
+
static AXES_TOP_PX_MARGIN: number;
|
|
27
|
+
static AXES_TOP_PX_MARGIN_WITH_TITLE: number;
|
|
28
|
+
static AXES_RIGHT_PX_MARGIN: number;
|
|
29
|
+
static AXES_BOTTOM_PX_MARGIN: number;
|
|
30
|
+
static AXES_BOTTOM_PX_MARGIN_WITH_AXES_LABELS: number;
|
|
31
|
+
static X_AXIS_LABEL_BOTTOM_PX_MARGIN: number;
|
|
32
|
+
static LEGEND_TOP_PX_MARGIN: number;
|
|
33
|
+
static OUTLIER_PX_SIZE: number;
|
|
34
|
+
static POINT_PX_SIZE: number;
|
|
35
|
+
static OUTLIER_HITBOX_RADIUS: number;
|
|
36
|
+
static CANDLESTICK_BORDER_PX_SIZE: number;
|
|
37
|
+
static CANDLESTICK_MEDIAN_PX_SIZE: number;
|
|
38
|
+
static CANDLESTICK_OUTLIER_PX_SIZE: number;
|
|
39
|
+
static INFLATE_SIZE: number;
|
|
40
|
+
static MIN_INFLATE_SIZE: number;
|
|
41
|
+
static LEGEND_RECORD_PX_HEIGHT: number;
|
|
42
|
+
static LEGEND_RECORD_LINE_PX_WIDTH: number;
|
|
43
|
+
static LEGEND_RECORD_LINE_RIGHT_PX_MARGIN: number;
|
|
44
|
+
static LEGEND_RECORD_LINE_BOTTOM_PX_MARGIN: number;
|
|
45
|
+
static LINE_STYLES: {
|
|
46
|
+
[key: string]: number[];
|
|
47
|
+
};
|
|
48
|
+
static CURVE_CONFIDENCE_INTERVAL_BOUNDS: {
|
|
49
|
+
TOP: string;
|
|
50
|
+
BOTTOM: string;
|
|
51
|
+
};
|
|
52
|
+
static CONFIDENCE_INTERVAL_STROKE_COLOR: string;
|
|
53
|
+
static CONFIDENCE_INTERVAL_FILL_COLOR: string;
|
|
54
|
+
static CONDITION_MAP: {
|
|
55
|
+
[key: string]: ((series?: IFitSeries[]) => boolean);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=const.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,qBAAa,YAAY;IACvB,MAAM,CAAC,oBAAoB,SAAqB;IAChD,MAAM,CAAC,wBAAwB,SAAS;IACxC,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,aAAa,SAAS;IAC7B,MAAM,CAAC,OAAO,SAAU;IAExB,MAAM,CAAC,kBAAkB,SAAO;IAChC,MAAM,CAAC,mBAAmB,SAAO;IACjC,MAAM,CAAC,0BAA0B,SAAM;IACvC,MAAM,CAAC,2BAA2B,SAAK;IACvC,MAAM,CAAC,wCAAwC,SAAM;IACrD,MAAM,CAAC,yCAAyC,SAAM;IACtD,MAAM,CAAC,sBAAsB,SAAO;IACpC,MAAM,CAAC,uBAAuB,SAAM;IACpC,MAAM,CAAC,kBAAkB,SAAO;IAChC,MAAM,CAAC,mBAAmB,SAAO;IACjC,MAAM,CAAC,mCAAmC,SAAO;IACjD,MAAM,CAAC,oCAAoC,SAAO;IAClD,MAAM,CAAC,mBAAmB,SAAO;IACjC,MAAM,CAAC,oBAAoB,SAAO;IAClC,MAAM,CAAC,iCAAiC,SAAO;IAC/C,MAAM,CAAC,kCAAkC,SAAO;IAChD,MAAM,CAAC,mBAAmB,SAAM;IAChC,MAAM,CAAC,oCAAoC,SAAM;IACjD,MAAM,CAAC,kBAAkB,SAAK;IAC9B,MAAM,CAAC,6BAA6B,SAAM;IAC1C,MAAM,CAAC,oBAAoB,SAAM;IACjC,MAAM,CAAC,qBAAqB,SAAM;IAClC,MAAM,CAAC,sCAAsC,SAAM;IACnD,MAAM,CAAC,6BAA6B,SAAK;IACzC,MAAM,CAAC,oBAAoB,SAAM;IAEjC,MAAM,CAAC,eAAe,SAAM;IAC5B,MAAM,CAAC,aAAa,SAAK;IACzB,MAAM,CAAC,qBAAqB,SAAK;IACjC,MAAM,CAAC,0BAA0B,SAAK;IACtC,MAAM,CAAC,0BAA0B,SAAO;IACxC,MAAM,CAAC,2BAA2B,SAAK;IACvC,MAAM,CAAC,YAAY,SAAW;IAC9B,MAAM,CAAC,gBAAgB,SAAU;IACjC,MAAM,CAAC,uBAAuB,SAAM;IACpC,MAAM,CAAC,2BAA2B,SAAM;IACxC,MAAM,CAAC,kCAAkC,SAAK;IAC9C,MAAM,CAAC,mCAAmC,SAAK;IAE/C,MAAM,CAAC,WAAW,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAC,CAK3C;IAEF,MAAM,CAAC,gCAAgC;;;MAGrC;IAEF,MAAM,CAAC,gCAAgC,SAA0B;IACjE,MAAM,CAAC,8BAA8B,SAA2B;IAEhE,MAAM,CAAC,aAAa,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,CAAA;KAAC,CAQzE;CACH"}
|
package/src/fit/const.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export class FitConstants {
|
|
2
|
+
}
|
|
3
|
+
FitConstants.TAG_FIT_CHART_FORMAT = '.fitChartFormat';
|
|
4
|
+
FitConstants.TAG_FIT_CHART_FORMAT_3DX = '3dx';
|
|
5
|
+
FitConstants.FIT_SEM_TYPE = 'fit';
|
|
6
|
+
FitConstants.FIT_CELL_TYPE = 'fit';
|
|
7
|
+
FitConstants.TAG_FIT = '.fit';
|
|
8
|
+
FitConstants.CELL_DEFAULT_WIDTH = 230;
|
|
9
|
+
FitConstants.CELL_DEFAULT_HEIGHT = 160;
|
|
10
|
+
FitConstants.MIN_CELL_RENDERER_PX_WIDTH = 10;
|
|
11
|
+
FitConstants.MIN_CELL_RENDERER_PX_HEIGHT = 5;
|
|
12
|
+
FitConstants.MIN_POINTS_AND_STATS_VISIBILITY_PX_WIDTH = 70;
|
|
13
|
+
FitConstants.MIN_POINTS_AND_STATS_VISIBILITY_PX_HEIGHT = 45;
|
|
14
|
+
FitConstants.MIN_AXES_CELL_PX_WIDTH = 100;
|
|
15
|
+
FitConstants.MIN_AXES_CELL_PX_HEIGHT = 55;
|
|
16
|
+
FitConstants.MIN_TITLE_PX_WIDTH = 275;
|
|
17
|
+
FitConstants.MIN_TITLE_PX_HEIGHT = 225;
|
|
18
|
+
FitConstants.MIN_X_AXIS_NAME_VISIBILITY_PX_WIDTH = 180;
|
|
19
|
+
FitConstants.MIN_Y_AXIS_NAME_VISIBILITY_PX_HEIGHT = 140;
|
|
20
|
+
FitConstants.MIN_LEGEND_PX_WIDTH = 325;
|
|
21
|
+
FitConstants.MIN_LEGEND_PX_HEIGHT = 275;
|
|
22
|
+
FitConstants.MIN_DROPLINES_VISIBILITY_PX_WIDTH = 120;
|
|
23
|
+
FitConstants.MIN_DROPLINES_VISIBILITY_PX_HEIGHT = 110;
|
|
24
|
+
FitConstants.AXES_LEFT_PX_MARGIN = 38;
|
|
25
|
+
FitConstants.AXES_LEFT_PX_MARGIN_WITH_AXES_LABELS = 45;
|
|
26
|
+
FitConstants.AXES_TOP_PX_MARGIN = 5;
|
|
27
|
+
FitConstants.AXES_TOP_PX_MARGIN_WITH_TITLE = 25;
|
|
28
|
+
FitConstants.AXES_RIGHT_PX_MARGIN = 18;
|
|
29
|
+
FitConstants.AXES_BOTTOM_PX_MARGIN = 15;
|
|
30
|
+
FitConstants.AXES_BOTTOM_PX_MARGIN_WITH_AXES_LABELS = 30;
|
|
31
|
+
FitConstants.X_AXIS_LABEL_BOTTOM_PX_MARGIN = 4;
|
|
32
|
+
FitConstants.LEGEND_TOP_PX_MARGIN = 10;
|
|
33
|
+
FitConstants.OUTLIER_PX_SIZE = 12;
|
|
34
|
+
FitConstants.POINT_PX_SIZE = 4;
|
|
35
|
+
FitConstants.OUTLIER_HITBOX_RADIUS = 2;
|
|
36
|
+
FitConstants.CANDLESTICK_BORDER_PX_SIZE = 4;
|
|
37
|
+
FitConstants.CANDLESTICK_MEDIAN_PX_SIZE = 3.5;
|
|
38
|
+
FitConstants.CANDLESTICK_OUTLIER_PX_SIZE = 6;
|
|
39
|
+
FitConstants.INFLATE_SIZE = -12 / 2;
|
|
40
|
+
FitConstants.MIN_INFLATE_SIZE = -4 / 2;
|
|
41
|
+
FitConstants.LEGEND_RECORD_PX_HEIGHT = 18;
|
|
42
|
+
FitConstants.LEGEND_RECORD_LINE_PX_WIDTH = 20;
|
|
43
|
+
FitConstants.LEGEND_RECORD_LINE_RIGHT_PX_MARGIN = 5;
|
|
44
|
+
FitConstants.LEGEND_RECORD_LINE_BOTTOM_PX_MARGIN = 4;
|
|
45
|
+
FitConstants.LINE_STYLES = {
|
|
46
|
+
'solid': [],
|
|
47
|
+
'dotted': [1, 1],
|
|
48
|
+
'dashed': [5, 5],
|
|
49
|
+
'dashdotted': [5, 5, 2, 5],
|
|
50
|
+
};
|
|
51
|
+
FitConstants.CURVE_CONFIDENCE_INTERVAL_BOUNDS = {
|
|
52
|
+
TOP: 'top',
|
|
53
|
+
BOTTOM: 'bottom',
|
|
54
|
+
};
|
|
55
|
+
FitConstants.CONFIDENCE_INTERVAL_STROKE_COLOR = 'rgba(255,191,63,0.4)';
|
|
56
|
+
FitConstants.CONFIDENCE_INTERVAL_FILL_COLOR = 'rgba(255,238,204,0.3)';
|
|
57
|
+
FitConstants.CONDITION_MAP = {
|
|
58
|
+
'No series to show': (series) => series === undefined || (series === null || series === void 0 ? void 0 : series.length) === 0,
|
|
59
|
+
'There were series with no points': (series) => series.some((series) => { var _a; return ((_a = series.points) === null || _a === void 0 ? void 0 : _a.length) === 0; }),
|
|
60
|
+
'There were series with all x zeroes': (series) => series.some((series) => { var _a; return (_a = series.points) === null || _a === void 0 ? void 0 : _a.every((point) => point.x === 0); }),
|
|
61
|
+
'There were series with all y zeroes': (series) => series.some((series) => { var _a; return (_a = series.points) === null || _a === void 0 ? void 0 : _a.every((point) => point.y === 0); }),
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sWUFBWTs7QUFDaEIsaUNBQW9CLEdBQUcsaUJBQWlCLENBQUM7QUFDekMscUNBQXdCLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLHlCQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLDBCQUFhLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLG9CQUFPLEdBQUcsTUFBTSxDQUFDO0FBRWpCLCtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUN6QixnQ0FBbUIsR0FBRyxHQUFHLENBQUM7QUFDMUIsdUNBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLHdDQUEyQixHQUFHLENBQUMsQ0FBQztBQUNoQyxxREFBd0MsR0FBRyxFQUFFLENBQUM7QUFDOUMsc0RBQXlDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLG1DQUFzQixHQUFHLEdBQUcsQ0FBQztBQUM3QixvQ0FBdUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsK0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLGdDQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixnREFBbUMsR0FBRyxHQUFHLENBQUM7QUFDMUMsaURBQW9DLEdBQUcsR0FBRyxDQUFDO0FBQzNDLGdDQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixpQ0FBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsOENBQWlDLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLCtDQUFrQyxHQUFHLEdBQUcsQ0FBQztBQUN6QyxnQ0FBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsaURBQW9DLEdBQUcsRUFBRSxDQUFDO0FBQzFDLCtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QiwwQ0FBNkIsR0FBRyxFQUFFLENBQUM7QUFDbkMsaUNBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQzFCLGtDQUFxQixHQUFHLEVBQUUsQ0FBQztBQUMzQixtREFBc0MsR0FBRyxFQUFFLENBQUM7QUFDNUMsMENBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLGlDQUFvQixHQUFHLEVBQUUsQ0FBQztBQUUxQiw0QkFBZSxHQUFHLEVBQUUsQ0FBQztBQUNyQiwwQkFBYSxHQUFHLENBQUMsQ0FBQztBQUNsQixrQ0FBcUIsR0FBRyxDQUFDLENBQUM7QUFDMUIsdUNBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLHVDQUEwQixHQUFHLEdBQUcsQ0FBQztBQUNqQyx3Q0FBMkIsR0FBRyxDQUFDLENBQUM7QUFDaEMseUJBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsNkJBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLG9DQUF1QixHQUFHLEVBQUUsQ0FBQztBQUM3Qix3Q0FBMkIsR0FBRyxFQUFFLENBQUM7QUFDakMsK0NBQWtDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGdEQUFtQyxHQUFHLENBQUMsQ0FBQztBQUV4Qyx3QkFBVyxHQUE4QjtJQUM5QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDM0IsQ0FBQztBQUVLLDZDQUFnQyxHQUFHO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUVLLDZDQUFnQyxHQUFHLHNCQUFzQixDQUFDO0FBQzFELDJDQUE4QixHQUFHLHVCQUF1QixDQUFDO0FBRXpELDBCQUFhLEdBQTBEO0lBQzVFLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sTUFBSyxDQUFDO0lBQzdFLGtDQUFrQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDekMsTUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsTUFBTSxNQUFLLENBQUMsQ0FBQSxFQUFBLENBQUM7SUFDM0QscUNBQXFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUM1QyxNQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQztJQUM5RSxxQ0FBcUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzVDLE1BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsRUFBQSxDQUFDO0NBQy9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lGaXRTZXJpZXN9IGZyb20gJy4vZml0LWN1cnZlJztcblxuZXhwb3J0IGNsYXNzIEZpdENvbnN0YW50cyB7XG4gIHN0YXRpYyBUQUdfRklUX0NIQVJUX0ZPUk1BVCA9ICcuZml0Q2hhcnRGb3JtYXQnO1xuICBzdGF0aWMgVEFHX0ZJVF9DSEFSVF9GT1JNQVRfM0RYID0gJzNkeCc7XG4gIHN0YXRpYyBGSVRfU0VNX1RZUEUgPSAnZml0JztcbiAgc3RhdGljIEZJVF9DRUxMX1RZUEUgPSAnZml0JztcbiAgc3RhdGljIFRBR19GSVQgPSAnLmZpdCc7XG5cbiAgc3RhdGljIENFTExfREVGQVVMVF9XSURUSCA9IDIzMDtcbiAgc3RhdGljIENFTExfREVGQVVMVF9IRUlHSFQgPSAxNjA7XG4gIHN0YXRpYyBNSU5fQ0VMTF9SRU5ERVJFUl9QWF9XSURUSCA9IDEwO1xuICBzdGF0aWMgTUlOX0NFTExfUkVOREVSRVJfUFhfSEVJR0hUID0gNTtcbiAgc3RhdGljIE1JTl9QT0lOVFNfQU5EX1NUQVRTX1ZJU0lCSUxJVFlfUFhfV0lEVEggPSA3MDtcbiAgc3RhdGljIE1JTl9QT0lOVFNfQU5EX1NUQVRTX1ZJU0lCSUxJVFlfUFhfSEVJR0hUID0gNDU7XG4gIHN0YXRpYyBNSU5fQVhFU19DRUxMX1BYX1dJRFRIID0gMTAwO1xuICBzdGF0aWMgTUlOX0FYRVNfQ0VMTF9QWF9IRUlHSFQgPSA1NTtcbiAgc3RhdGljIE1JTl9USVRMRV9QWF9XSURUSCA9IDI3NTtcbiAgc3RhdGljIE1JTl9USVRMRV9QWF9IRUlHSFQgPSAyMjU7XG4gIHN0YXRpYyBNSU5fWF9BWElTX05BTUVfVklTSUJJTElUWV9QWF9XSURUSCA9IDE4MDtcbiAgc3RhdGljIE1JTl9ZX0FYSVNfTkFNRV9WSVNJQklMSVRZX1BYX0hFSUdIVCA9IDE0MDtcbiAgc3RhdGljIE1JTl9MRUdFTkRfUFhfV0lEVEggPSAzMjU7XG4gIHN0YXRpYyBNSU5fTEVHRU5EX1BYX0hFSUdIVCA9IDI3NTtcbiAgc3RhdGljIE1JTl9EUk9QTElORVNfVklTSUJJTElUWV9QWF9XSURUSCA9IDEyMDtcbiAgc3RhdGljIE1JTl9EUk9QTElORVNfVklTSUJJTElUWV9QWF9IRUlHSFQgPSAxMTA7XG4gIHN0YXRpYyBBWEVTX0xFRlRfUFhfTUFSR0lOID0gMzg7XG4gIHN0YXRpYyBBWEVTX0xFRlRfUFhfTUFSR0lOX1dJVEhfQVhFU19MQUJFTFMgPSA0NTtcbiAgc3RhdGljIEFYRVNfVE9QX1BYX01BUkdJTiA9IDU7XG4gIHN0YXRpYyBBWEVTX1RPUF9QWF9NQVJHSU5fV0lUSF9USVRMRSA9IDI1O1xuICBzdGF0aWMgQVhFU19SSUdIVF9QWF9NQVJHSU4gPSAxODtcbiAgc3RhdGljIEFYRVNfQk9UVE9NX1BYX01BUkdJTiA9IDE1O1xuICBzdGF0aWMgQVhFU19CT1RUT01fUFhfTUFSR0lOX1dJVEhfQVhFU19MQUJFTFMgPSAzMDtcbiAgc3RhdGljIFhfQVhJU19MQUJFTF9CT1RUT01fUFhfTUFSR0lOID0gNDtcbiAgc3RhdGljIExFR0VORF9UT1BfUFhfTUFSR0lOID0gMTA7XG5cbiAgc3RhdGljIE9VVExJRVJfUFhfU0laRSA9IDEyO1xuICBzdGF0aWMgUE9JTlRfUFhfU0laRSA9IDQ7XG4gIHN0YXRpYyBPVVRMSUVSX0hJVEJPWF9SQURJVVMgPSAyO1xuICBzdGF0aWMgQ0FORExFU1RJQ0tfQk9SREVSX1BYX1NJWkUgPSA0O1xuICBzdGF0aWMgQ0FORExFU1RJQ0tfTUVESUFOX1BYX1NJWkUgPSAzLjU7XG4gIHN0YXRpYyBDQU5ETEVTVElDS19PVVRMSUVSX1BYX1NJWkUgPSA2O1xuICBzdGF0aWMgSU5GTEFURV9TSVpFID0gLTEyIC8gMjtcbiAgc3RhdGljIE1JTl9JTkZMQVRFX1NJWkUgPSAtNCAvIDI7XG4gIHN0YXRpYyBMRUdFTkRfUkVDT1JEX1BYX0hFSUdIVCA9IDE4O1xuICBzdGF0aWMgTEVHRU5EX1JFQ09SRF9MSU5FX1BYX1dJRFRIID0gMjA7XG4gIHN0YXRpYyBMRUdFTkRfUkVDT1JEX0xJTkVfUklHSFRfUFhfTUFSR0lOID0gNTtcbiAgc3RhdGljIExFR0VORF9SRUNPUkRfTElORV9CT1RUT01fUFhfTUFSR0lOID0gNDtcblxuICBzdGF0aWMgTElORV9TVFlMRVM6IHtba2V5OiBzdHJpbmddOiBudW1iZXJbXX0gPSB7XG4gICAgJ3NvbGlkJzogW10sXG4gICAgJ2RvdHRlZCc6IFsxLCAxXSxcbiAgICAnZGFzaGVkJzogWzUsIDVdLFxuICAgICdkYXNoZG90dGVkJzogWzUsIDUsIDIsIDVdLFxuICB9O1xuXG4gIHN0YXRpYyBDVVJWRV9DT05GSURFTkNFX0lOVEVSVkFMX0JPVU5EUyA9IHtcbiAgICBUT1A6ICd0b3AnLFxuICAgIEJPVFRPTTogJ2JvdHRvbScsXG4gIH07XG5cbiAgc3RhdGljIENPTkZJREVOQ0VfSU5URVJWQUxfU1RST0tFX0NPTE9SID0gJ3JnYmEoMjU1LDE5MSw2MywwLjQpJztcbiAgc3RhdGljIENPTkZJREVOQ0VfSU5URVJWQUxfRklMTF9DT0xPUiA9ICdyZ2JhKDI1NSwyMzgsMjA0LDAuMyknO1xuXG4gIHN0YXRpYyBDT05ESVRJT05fTUFQOiB7W2tleTogc3RyaW5nXTogKChzZXJpZXM/OiBJRml0U2VyaWVzW10pID0+IGJvb2xlYW4pfSA9IHtcbiAgICAnTm8gc2VyaWVzIHRvIHNob3cnOiAoc2VyaWVzKSA9PiBzZXJpZXMgPT09IHVuZGVmaW5lZCB8fCBzZXJpZXM/Lmxlbmd0aCA9PT0gMCxcbiAgICAnVGhlcmUgd2VyZSBzZXJpZXMgd2l0aCBubyBwb2ludHMnOiAoc2VyaWVzKSA9PlxuICAgICAgICAgIHNlcmllcyEuc29tZSgoc2VyaWVzKSA9PiBzZXJpZXMucG9pbnRzPy5sZW5ndGggPT09IDApLFxuICAgICdUaGVyZSB3ZXJlIHNlcmllcyB3aXRoIGFsbCB4IHplcm9lcyc6IChzZXJpZXMpID0+XG4gICAgICAgICAgc2VyaWVzIS5zb21lKChzZXJpZXMpID0+IHNlcmllcy5wb2ludHM/LmV2ZXJ5KChwb2ludCkgPT4gcG9pbnQueCA9PT0gMCkpLFxuICAgICdUaGVyZSB3ZXJlIHNlcmllcyB3aXRoIGFsbCB5IHplcm9lcyc6IChzZXJpZXMpID0+XG4gICAgICAgICAgc2VyaWVzIS5zb21lKChzZXJpZXMpID0+IHNlcmllcy5wb2ludHM/LmV2ZXJ5KChwb2ludCkgPT4gcG9pbnQueSA9PT0gMCkpLFxuICB9O1xufVxuIl19
|
package/src/fit/fit-curve.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;+EAC+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;EAoBE;AAEF,eAAO,MAAM,SAAS,UAAW,CAAC;AAElC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,iBAAiB,GACpH,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GACnH,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE1E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAExE,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;AAEzE,mHAAmH;AACnH,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;mFACmF;AACnF,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mHAAmH;AACnH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,4DAA4D;AAC5D,qBAAa,YAAa,YAAW,aAAa;IAChD,YAAY,EAAE,gBAAgB,CAAM;IACpC,aAAa,EAAE,iBAAiB,CAAM;IACtC,MAAM,EAAE,UAAU,EAAE,CAAM;CAC3B;AAED,oHAAoH;AACpH,MAAM,WAAW,iBAAiB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,gHAAgH;AAChH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,QAAQ,EAQ7C,CAAC;AAEF,mHAAmH;AACnH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,QAAQ,EAqB/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,uBAAuB,eAAe,CAAC;AACpD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AACtD,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAC5D,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAC7C,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,wBAAgB,cAAc,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,WAAW,EAAE,YAAY,GACnH,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAIrB;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EAAE,WAAW,EAAE,YAAY,EACvF,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,UAAU,GAAE,OAAc,GAAG,aAAa,CAYvG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAC1F,eAAe,GAAE,MAAa,EAAE,UAAU,GAAE,OAAc,GAAG,oBAAoB,GAAG,IAAI,CAuCzF;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO1E;AAED,wBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,GAAG,MAAM,CASnG;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,GAAG,MAAM,CAUxG"}
|
|
1
|
+
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"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"}
|
package/src/fit/fit-curve.js
CHANGED
|
@@ -201,4 +201,4 @@ function getInvError(targetFunc, data) {
|
|
|
201
201
|
sigma = Math.sqrt(sigmaSq);
|
|
202
202
|
return sigma;
|
|
203
203
|
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZml0LWN1cnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixvQ0FBb0M7QUFDcEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUM7QUEwQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JFO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUF1RWxDLDREQUE0RDtBQUM1RCxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUNFLGlCQUFZLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFzQixFQUFFLENBQUMsQ0FBRSw2REFBNkQ7UUFDckcsV0FBTSxHQUFpQixFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUFBO0FBMkJELCtFQUErRTtBQUcvRSxnSEFBZ0g7QUFDaEgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtCO0lBQ2pELEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNoRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNoRixFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDbEUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ2xFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUM3RCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsQ0FBQztJQUNsRixFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsQ0FBQztDQUN0RixDQUFDO0FBRUYsbUhBQW1IO0FBQ25ILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFrQjtJQUNuRCxpQkFBaUI7SUFDakIsOEJBQThCO0lBQzlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUN2RCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDdkQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3ZELEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUN2RCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDekQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsV0FBVyxFQUN0RCx1RkFBdUYsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDM0csRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsV0FBVyxFQUN0RCx1RkFBdUYsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDM0csRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUMsV0FBVyxFQUFFLDBDQUEwQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNwSCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBQyxXQUFXLEVBQUUsMENBQTBDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3BILEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFDLFdBQVcsRUFBRSxzREFBc0QsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDdkksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUMsV0FBVyxFQUFFLG1EQUFtRCxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNwSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFDLFdBQVcsRUFBRSx1REFBdUQsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDNUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxXQUFXLEVBQUUsZ0RBQWdEO1FBQ2xILE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYTtRQUM5RSxZQUFZO1FBQ1osWUFBWSxFQUFFLFlBQVksRUFBQyxDQUFDO0NBQy9CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxhQUFhLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsZ0JBQWdCLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsbUJBQW1CLENBQUM7QUFDbEUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQUVuQyxNQUFNLFVBQVUsY0FBYyxDQUFDLGFBQTBELEVBQUUsV0FBeUI7SUFFbEgsT0FBTyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ25CLE9BQU8sYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBZ0MsRUFBRSxXQUF5QixFQUN2RixhQUEwRCxFQUFFLGFBQXNCLElBQUk7SUFDdEYsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUUvRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNqRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3ZELFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFVBQVUsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQWdDLEVBQUUsV0FBcUIsRUFDMUYsa0JBQTBCLElBQUksRUFBRSxhQUFzQixJQUFJO0lBQzFELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxlQUFlLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqRyxJQUFJLEdBQUcsR0FBMEIsQ0FBQyxDQUFTLEVBQUUsRUFBRTtRQUM3QyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztJQUNGLElBQUksTUFBTSxHQUEwQixDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ2hELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxTQUFTLEdBQTBCLENBQUMsQ0FBUyxFQUFFLEVBQUU7UUFDbkQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUM7SUFFRixJQUFJLFVBQVUsRUFBRTtRQUNkLEdBQUcsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1lBQ2xCLG9EQUFvRDtZQUNwRCxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJDLE1BQU0sR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixPQUFPLEtBQUssR0FBRyxRQUFRLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUM7UUFFRixTQUFTLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRTtZQUN4QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLEdBQUcsUUFBUSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDO1FBRUYsT0FBTztZQUNMLFFBQVEsRUFBRSxHQUFHO1lBQ2IsV0FBVyxFQUFFLE1BQU07WUFDbkIsY0FBYyxFQUFFLFNBQVM7U0FDMUIsQ0FBQztLQUNIO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFvQixFQUFFLENBQVM7SUFDckQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQW9CLEVBQUUsQ0FBUztJQUNwRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBb0IsRUFBRSxDQUFTO0lBQ3ZELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQW9CLEVBQUUsQ0FBUztJQUN6RCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBb0IsRUFBRSxDQUFTO0lBQzlELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07SUFDM0IsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztJQUM1QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7SUFDL0MsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtJQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQW9CLEVBQUUsQ0FBUztJQUNoRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsNkRBQTZEO0lBQzdELE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsV0FBa0MsRUFBRSxJQUFnQztJQUN6RixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFHLGVBQWU7UUFDNUMsR0FBRyxJQUFJLGVBQWUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxXQUFrQyxFQUFFLElBQWdDO0lBQzlGLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDekM7SUFFRCxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxVQUFpQyxFQUFFLElBQWdDO0lBQ3RGLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNoQixNQUFNLGVBQWUsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUM5QztJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtRQUM3QyxPQUFPLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhDLE9BQU8sSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2xDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTNCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW11bHRpLXNwYWNlcyAqL1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcblxuZXhwb3J0IGNvbnN0IEZpdEVycm9yTW9kZWwgPSB7XG4gIENPTlNUQU5UOiAnY29uc3RhbnQnLFxuICBQUk9QT1JUSU9OQUw6ICdwcm9wb3J0aW9uYWwnLFxuICBDT01CSU5FRDogJ2NvbWJpbmVkJyxcbn07XG5cbmV4cG9ydCB0eXBlIEZpdFBhcmFtQm91bmRzID0ge1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn07XG5cbi8qKiBGaXQgZnVuY3Rpb24gZGVzY3JpcHRpb24uIEFwcGxpZXMgdG8gY3VzdG9tIHVzZXIgZml0IGZ1bmN0aW9ucy5cbiAqIFJlcXVpcmVzIEpTIGFycm93IGZ1bmN0aW9ucyBmb3IgdGhlIGZpdCBmdW5jdGlvbnMgYW5kIGluaXRpYWwgcGFyYW1ldGVycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZ1bmN0aW9uOiBzdHJpbmc7XG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIHBhcmFtZXRlck5hbWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgRml0Q3VydmUgPSB7XG4gIGZpdHRlZEN1cnZlOiAoeDogbnVtYmVyKSA9PiBudW1iZXI7XG4gIHBhcmFtZXRlcnM6IEZsb2F0MzJBcnJheTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpdENvbmZpZGVuY2VJbnRlcnZhbHMgPSB7XG4gIGNvbmZpZGVuY2VUb3A6ICh4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgY29uZmlkZW5jZUJvdHRvbTogKHg6IG51bWJlcikgPT4gbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRml0U3RhdGlzdGljcyA9IHtcbiAgclNxdWFyZWQ/OiBudW1iZXIsXG4gIGF1Yz86IG51bWJlcixcbiAgaW50ZXJjZXB0WD86IG51bWJlciwgLy8gcGFyYW1ldGVyc1syXVxuICBpbnRlcmNlcHRZPzogbnVtYmVyLCAvLyBmaXR0ZWRDdXJ2ZVtwYXJhbWV0ZXJzWzJdXVxuICBzbG9wZT86IG51bWJlciwgLy8gcGFyYW1ldGVyc1sxXVxuICB0b3A/OiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbMF1cbiAgYm90dG9tPzogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzNdXG59O1xuXG5leHBvcnQgdHlwZSBGaXRJbnZlcnRlZEZ1bmN0aW9ucyA9IHtcbiAgaW52ZXJ0ZWQ6ICh5OiBudW1iZXIpID0+IG51bWJlcixcbiAgaW52ZXJ0ZWRUb3A6ICh5OiBudW1iZXIpID0+IG51bWJlcixcbiAgaW52ZXJ0ZWRCb3R0b206ICh5OiBudW1iZXIpID0+IG51bWJlcixcbn07XG5cbi8qKlxuICogIERhdGFncm9rIGN1cnZlIGZpdHRpbmdcbiAqXG4gKiAtIEZpdHRpbmc6IGNvbXB1dGluZyBwYXJhbWV0ZXJzIG9mIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gdG8gYmVzdCBmaXQgdGhlIGRhdGFcbiAqICAgLSBVc2VzIEJGR1Mgb3B0aW1pemF0aW9uIGFsZ29yaXRobSAobXVsdGktdGhyZWFkaW5nIGZvciBwZXJmb3JtYW5jZSkuXG4gKiAgICAgRm9yIGRvc2UtcmVzcG9uc2UgY3VydmVzLCB3ZSBhcmUgdHlwaWNhbGx5IGZpdHRpbmcgdGhlIHNpZ21vaWQgZnVuY3Rpb25cbiAqICAgLSBBYmlsaXR5IHRvIGR5bmFtaWNhbGx5IHJlZ2lzdGVyIGN1c3RvbSBmaXR0aW5nIGZ1bmN0aW9uc1xuICogICAgIC0gQXV0b21hdGljIGZpdCBmdW5jdGlvbiBkZXRlcm1pbmF0aW9uXG4gKiAgICAgLSBDYWNoaW5nIG9mIGN1c3RvbSBmaXR0aW5nIGZ1bmN0aW9uc1xuICogICAtIEFiaWxpdHkgdG8gZ2V0IGZpdHRpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIChyLXNxdWFyZWQsIGNsYXNzaWZpY2F0aW9uLCBldGMpXG4gKiAtIERlZXAgaW50ZWdyYXRpb24gd2l0aCB0aGUgRGF0YWdyb2sgZ3JpZFxuICogICAtIEVpdGhlciBmaXR0aW5nIG9uIHRoZSBmbHksIG9yIHVzaW5nIHRoZSBzdXBwbGllZCBmdW5jdGlvbiArIHBhcmFtZXRlcnNcbiAqICAgLSBNdWx0aXBsZSBzZXJpZXMgaW4gb25lIGNlbGxcbiAqICAgLSBDYW5kbGVzdGlja3MsIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLCBhbmQgZHJvcGxpbmVzIGRyYXdpbmdcbiAqICAgLSBBYmlsaXR5IHRvIGRlZmluZSBjaGFydCwgbWFya2VyLCBvciBmaXR0aW5nIG9wdGlvbnMgKHN1Y2ggYXMgZml0IGZ1bmN0aW9uIG9yIG1hcmtlciBjb2xvcilcbiAqICAgICBvbiB0aGUgY29sdW1uIGxldmVsLCB3aXRoIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIGl0IG9uIGEgZ3JpZCBjZWxsIG9yIHBvaW50IGxldmVsXG4gKiAgIC0gQ2xpY2tpbmcgYSBwb2ludCBpbiBhIGNoYXJ0IHdpdGhpbiBhIGdyaWQgbWFrZXMgaXQgYW4gb3V0bGllciAtPiBjdXJ2ZSBpcyByZS1maXR0ZWQgb24gdGhlIGZseVxuICogICAtIEFiaWxpdHkgdG8gc3BlY2lmeSBhIGNoYXJ0IGFzIFwicmVmZXJlbmNlXCIgc28gdGhhdCBpdCBpcyBzaG93biBvbiBldmVyeSBvdGhlciBjaGFydCBmb3IgY29tcGFyaXNvblxuICogLSBBYmlsaXR5IHRvIG92ZXJsYXkgY3VydmVzIGZyb20gbXVsdGlwbGUgZ3JpZCBjZWxscyAoc3BlY2lhbCB2aWV3ZXIpXG4gKiAtIFdvcmsgd2l0aCBzZXJpZXMgc3RvcmVkIGluIG11bHRpcGxlIGZvcm1hdHMgKGJpbmFyeSBmb3IgcGVyZm9ybWFuY2UsIGpzb24gZm9yIGZsZXhpYmlsaXR5LCBldGMpXG4qL1xuXG5leHBvcnQgY29uc3QgRFJPUExJTkVTID0gWydJQzUwJ107XG5cbmV4cG9ydCB0eXBlIEZpdE1hcmtlclR5cGUgPSAnYXN0ZXJpc2snIHwgJ2NpcmNsZScgfCAnY3Jvc3MgYm9yZGVyJyB8ICdkaWFtb25kJyB8ICdzcXVhcmUnIHwgJ3N0YXInIHwgJ3RyaWFuZ2xlIGJvdHRvbScgfFxuICAndHJpYW5nbGUgbGVmdCcgfCAndHJpYW5nbGUgcmlnaHQnIHwgJ3RyaWFuZ2xlIHRvcCc7XG5cbmV4cG9ydCB0eXBlIEZpdE91dGxpZXJNYXJrZXJUeXBlID0gJ2FzdGVyaXNrJyB8ICdjaXJjbGUnIHwgJ2Nyb3NzIGJvcmRlcicgfCAnZGlhbW9uZCcgfCAnb3V0bGllcicgfCAnc3F1YXJlJyB8ICdzdGFyJyB8XG4gICd0cmlhbmdsZSBib3R0b20nIHwgJ3RyaWFuZ2xlIGxlZnQnIHwgJ3RyaWFuZ2xlIHJpZ2h0JyB8ICd0cmlhbmdsZSB0b3AnO1xuXG5leHBvcnQgdHlwZSBGaXRMaW5lU3R5bGUgPSAnc29saWQnIHwgJ2RvdHRlZCcgfCAnZGFzaGVkJyB8ICdkYXNoZG90dGVkJztcblxuZXhwb3J0IHR5cGUgRml0RXJyb3JNb2RlbFR5cGUgPSAnY29uc3RhbnQnIHwgJ3Byb3BvcnRpb25hbCcgfCAnY29tYmluZWQnO1xuXG4vKiogQSBwb2ludCBpbiB0aGUgZml0IHNlcmllcy4gT25seSB4IGFuZCB5IGFyZSByZXF1aXJlZC4gQ2FuIG92ZXJyaWRlIHNvbWUgZmllbGRzIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBvdXRsaWVyPzogYm9vbGVhbjsgICAgICAgLy8gaWYgdHJ1ZSwgcmVuZGVycyBhcyAneCcgYW5kIGdldHMgaWdub3JlZCBmb3IgY3VydmUgZml0dGluZ1xuICBjb2xvcj86IHN0cmluZzsgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBtYXJrZXIgY29sb3IgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBvdXRsaWVyQ29sb3I/OiBzdHJpbmc7ICAgLy8gb3ZlcnJpZGVzIHRoZSBvdXRsaWVyIGNvbG9yIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnNcbiAgbWFya2VyPzogRml0TWFya2VyVHlwZTsgIC8vIG92ZXJyaWRlcyB0aGUgbWFya2VyIHR5cGUgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBvdXRsaWVyTWFya2VyPzogRml0T3V0bGllck1hcmtlclR5cGU7IC8vIG92ZXJyaWRlcyB0aGUgb3V0bGllciBtYXJrZXIgdHlwZSBkZWZpbmVkIGluIElGaXRTZXJpZXNPcHRpb25zXG4gIHNpemU/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZXMgdGhlIGRlZmF1bHQgbWFya2VyIHNpemVcbiAgc3RkZXY/OiBudW1iZXI7ICAgICAgICAgIC8vIHdoZW4gZGVmaW5lZCwgcmVuZGVycyBhbiBlcnJvciBiYXIgY2FuZGxlc3RpY2tcbiAgLy8gbWluWT86IG51bWJlcjsgICAgICAgICAgIC8vIHdoZW4gZGVmaW5lZCwgdGhlIG1hcmtlciByZW5kZXJzIGFzIGEgY2FuZGxlc3RpY2sgd2l0aCB3aGlza2VycyBbbWluWSwgbWF4WV1cbiAgLy8gbWF4WT86IG51bWJlcjsgICAgICAgICAgIC8vIHdoZW4gZGVmaW5lZCwgdGhlIG1hcmtlciByZW5kZXJzIGFzIGEgY2FuZGxlc3RpY2sgd2l0aCB3aGlza2VycyBbbWluWSwgbWF4WV1cbiAgbWV0YT86IGFueTsgICAgICAgICAgIC8vIGFueSBhZGRpdGlvbmFsIGRhdGFcbn1cblxuLyoqIEEgc2VyaWVzIGNvbnNpc3RzIG9mIHBvaW50cywgaGFzIGEgbmFtZSwgYW5kIG9wdGlvbnMuXG4gKiBJZiBkZWZpbmVkLCBzZXJpZXNPcHRpb25zIGFyZSBtZXJnZWQgd2l0aCB7QGxpbmsgSUZpdENoYXJ0RGF0YS5zZXJpZXNPcHRpb25zfSAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0U2VyaWVzIGV4dGVuZHMgSUZpdFNlcmllc09wdGlvbnMge1xuICBwb2ludHM6IElGaXRQb2ludFtdO1xufVxuXG4vKiogQ2hhcnQgbGFiZWxzIG9wdGlvbnMuIENvbnRyb2xzIHRoZSBjaGFydCBsYWJlbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRDaGFydExhYmVsT3B0aW9ucyB7XG4gIHZpc2libGU6IGJvb2xlYW47ICAgICAgICAgLy8gaWYgdHJ1ZSwgcmVuZGVycyB0aGUgbGFiZWwgb24gdGhlIHBsb3RcbiAgY29sb3I6IHN0cmluZzsgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBsYWJlbCBjb2xvclxuICBuYW1lOiBzdHJpbmc7ICAgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIGxhYmVsIG5hbWVcbn1cblxuLyoqIENoYXJ0IG9wdGlvbnMuIEZvciBmaXR0ZWQgY3VydmVzLCB0aGlzIG9iamVjdCBpcyBzdG9yZWQgaW4gdGhlIGdyaWQgY29sdW1uIHRhZ3MgYW5kIGlzIHVzZWQgYnkgdGhlIHJlbmRlcmVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0Q2hhcnRPcHRpb25zIHtcbiAgbWluWD86IG51bWJlcjtcbiAgbWluWT86IG51bWJlcjtcbiAgbWF4WD86IG51bWJlcjtcbiAgbWF4WT86IG51bWJlcjtcblxuICB0aXRsZT86IHN0cmluZzsgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBwbG90IHRpdGxlLiBJZiB0aGUgcGxvdCBzaXplIGlzIGVub3VnaCwgd2lsbCByZW5kZXIgaXQuXG4gIHhBeGlzTmFtZT86IHN0cmluZzsgICAgICAgIC8vIGRlZmluZXMgdGhlIHggYXhpcyBuYW1lLiBJZiB0aGUgcGxvdCBzaXplIGlzIGVub3VnaCwgd2lsbCByZW5kZXIgaXQuXG4gIHlBeGlzTmFtZT86IHN0cmluZzsgICAgICAgIC8vIGRlZmluZXMgdGhlIFkgYXhpcyBuYW1lLiBJZiB0aGUgcGxvdCBzaXplIGlzIGVub3VnaCwgd2lsbCByZW5kZXIgaXQuXG5cbiAgbG9nWD86IGJvb2xlYW47ICAgICAgICAgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHRoZSB4IGRhdGEgc2hvdWxkIGJlIGxvZ2FyaXRobWljIG9yIG5vdFxuICBsb2dZPzogYm9vbGVhbjsgICAgICAgICAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdGhlIHkgZGF0YSBzaG91bGQgYmUgbG9nYXJpdGhtaWMgb3Igbm90XG5cbiAgYWxsb3dYWmVyb2VzPzogYm9vbGVhbjsgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHggemVyb2VzIGFsbG93ZWQgZm9yIGxvZ2FyaXRobWljIGRhdGEgb3Igbm90XG4gIG1lcmdlU2VyaWVzPzogYm9vbGVhbjsgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBtZXJnZSBzZXJpZXMgb3Igbm90XG5cbiAgc2hvd0NvbHVtbkxhYmVsPzogYm9vbGVhbjsgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbiBsYWJlbCBpbiB0aGUgbGVnZW5kIG9yIG5vdFxuICBzaG93U3RhdGlzdGljcz86IHN0cmluZ1tdOyAvLyBkZWZpbmVzIHRoZSBzdGF0aXN0aWNzIHRoYXQgd291bGQgYmUgc2hvd24gb24gdGhlIHBsb3RcbiAgbGFiZWxPcHRpb25zPzogSUZpdENoYXJ0TGFiZWxPcHRpb25zW107IC8vIGNvbnRyb2xzIHRoZSBwbG90IGxhYmVsc1xuICB1c2VBdXhMZWdlbmROYW1lcz86IGJvb2xlYW47IC8vIGlmIHRydWUsIHVzZXMgYXV4IGxlZ2VuZCBuYW1lcyBpbnN0ZWFkIG9mIHNlcmllcyBuYW1lc1xufVxuXG4vKiogRGF0YSBmb3IgdGhlIGZpdCBjaGFydC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdENoYXJ0RGF0YSB7XG4gIGNoYXJ0T3B0aW9ucz86IElGaXRDaGFydE9wdGlvbnM7XG4gIHNlcmllc09wdGlvbnM/OiBJRml0U2VyaWVzT3B0aW9uczsgIC8vIERlZmF1bHQgc2VyaWVzIG9wdGlvbnMuIEluZGl2aWR1YWwgc2VyaWVzIGNhbiBvdmVycmlkZSBpdC5cbiAgc2VyaWVzPzogSUZpdFNlcmllc1tdO1xufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHtAbGluayBJRml0Q2hhcnREYXRhfSBpbnRlcmZhY2UgKi9cbmV4cG9ydCBjbGFzcyBGaXRDaGFydERhdGEgaW1wbGVtZW50cyBJRml0Q2hhcnREYXRhIHtcbiAgY2hhcnRPcHRpb25zOiBJRml0Q2hhcnRPcHRpb25zID0ge307XG4gIHNlcmllc09wdGlvbnM6IElGaXRTZXJpZXNPcHRpb25zID0ge307ICAvLyBEZWZhdWx0IHNlcmllcyBvcHRpb25zLiBJbmRpdmlkdWFsIHNlcmllcyBjYW4gb3ZlcnJpZGUgaXQuXG4gIHNlcmllczogSUZpdFNlcmllc1tdID0gW107XG59XG5cbi8qKiBTZXJpZXMgb3B0aW9ucyBjYW4gYmUgZWl0aGVyIGFwcGxpZWQgZ2xvYmFsbHkgb24gYSBjb2x1bW4gbGV2ZWwsIG9yIHBhcnRpYWxseSBvdmVycmlkZGVuIGluIHBhcnRpY3VsYXIgc2VyaWVzICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRTZXJpZXNPcHRpb25zIHtcbiAgW2tleTogc3RyaW5nXTogYW55OyAgICAgICAgICAgICAgICAgICAvLyBhbGxvd3MgZ2V0dGluZyBkYXRhIGJ5IGtleVxuICBuYW1lPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgbmFtZVxuICBmaXRGdW5jdGlvbj86IHN0cmluZyB8IElGaXRGdW5jdGlvbkRlc2NyaXB0aW9uOyAvLyBjb250cm9scyB0aGUgc2VyaWVzIGZpdCBmdW5jdGlvblxuICBwYXJhbWV0ZXJzPzogbnVtYmVyW107ICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgcGFyYW1ldGVycywgYXV0by1maXR0aW5nIHdoZW4gbm90IGRlZmluZWRcbiAgcGFyYW1ldGVyQm91bmRzPzogRml0UGFyYW1Cb3VuZHNbXTsgICAvLyBkZWZpbmVzIHRoZSBhY2NlcHRhYmxlIHJhbmdlIG9mIGVhY2ggcGFyYW1ldGVyLCB3aGljaCBpcyB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBmaXR0aW5nLiBTZWUgYWxzbyBgcGFyYW1ldGVyc2AuXG4gIG1hcmtlclR5cGU/OiBGaXRNYXJrZXJUeXBlOyAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIG1hcmtlciB0eXBlXG4gIG91dGxpZXJNYXJrZXJUeXBlPzogRml0T3V0bGllck1hcmtlclR5cGU7ICAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgb3V0bGllciBtYXJrZXIgdHlwZVxuICBsaW5lU3R5bGU/OiBGaXRMaW5lU3R5bGU7ICAgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIHNlcmllcyBsaW5lIHN0eWxlXG4gIHBvaW50Q29sb3I/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIHBvaW50IGNvbG9yXG4gIGZpdExpbmVDb2xvcj86IHN0cmluZzsgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGZpdCBsaW5lIGNvbG9yXG4gIGNvbmZpZGVuY2VJbnRlcnZhbENvbG9yPzogc3RyaW5nOyAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGNvbmZpZGVuY2UgaW50ZXJ2YWwgY29sb3JcbiAgb3V0bGllckNvbG9yPzogc3RyaW5nOyAgICAgICAgICAgICAgICAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgb3V0bGllciBjb2xvclxuICBjb25uZWN0RG90cz86IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBjb25uZWN0IHRoZSBwb2ludHMgd2l0aCBsaW5lcyBvciBub3QuIElmIHRydWUgYW5kIHNob3dGaXRMaW5lIGlzIGZhbHNlIC0gZml0dGluZyBpcyBkaXNhYmxlZCAtIG90aGVyd2lzZSwgaXQgd2lsbCBiZSByZW5kZXJlZCBhY2NvcmRpbmdseSB0byB0aGUgcGFyYW1ldGVyIHZhbHVlLlxuICBzaG93Rml0TGluZT86IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBmaXQgbGluZSBvciBub3RcbiAgc2hvd1BvaW50cz86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBkYXRhIGRpc3BsYXkgbW9kZVxuICBzaG93Q3VydmVDb25maWRlbmNlSW50ZXJ2YWw/OiBib29sZWFuOyAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbHMgb3Igbm90XG4gIGVycm9yTW9kZWw/OiBGaXRFcnJvck1vZGVsVHlwZTsgICAgICAgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIGVycm9yIG1vZGVsXG4gIGNsaWNrVG9Ub2dnbGU/OiBib29sZWFuOyAgICAvLyBpZiB0cnVlLCBjbGlja2luZyBvbiB0aGUgcG9pbnQgdG9nZ2xlcyBpdHMgb3V0bGllciBzdGF0dXMgYW5kIGNhdXNlcyBjdXJ2ZSByZWZpdHRpbmdcbiAgbGFiZWxzPzoge1trZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW59OyAvLyBjb250cm9sbGVkIGJ5IElGaXRDaGFydERhdGEgbGFiZWxPcHRpb25zLCBzaG93cyBsYWJlbHNcbiAgZHJvcGxpbmVzPzogc3RyaW5nW107ICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBkcm9wbGluZXMgdGhhdCB3b3VsZCBiZSBzaG93biBvbiB0aGUgcGxvdCAoSUM1MClcbiAgY29sdW1uTmFtZT86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBjb2x1bW4gbmFtZSB3aGVyZSB0aGUgc2VyaWVzIGlzIHN0b3JlZFxuICBhdXhMZWdlbmROYW1lPzogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIGF1eGlsaWFyeSBsZWdlbmQgbmFtZSBmb3IgdGhlIHNlcmllc1xufVxuLy8gVE9ETzogc2hvdyBsYWJlbHMgaW4gcHJvcGVydHkgcGFuZWwgaWYgcHJlc2VudCwgY29sb3IgYnkgZGVmYXVsdCBmcm9tIHNlcmllc1xuXG5cbi8qKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUge0BsaW5rIEZpdFN0YXRpc3RpY3N9LiBVc2VmdWwgZm9yIGVkaXRpbmcsIGluaXRpYWxpemF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGV0Yy4gKi9cbmV4cG9ydCBjb25zdCBzdGF0aXN0aWNzUHJvcGVydGllczogREcuUHJvcGVydHlbXSA9IFtcbiAgREcuUHJvcGVydHkuanMoJ3JTcXVhcmVkJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2F1YycsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlLCBmcmllbmRseU5hbWU6ICdBVUMnfSksXG4gIERHLlByb3BlcnR5LmpzKCdpbnRlcmNlcHRZJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2ludGVyY2VwdFgnLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2xvcGUnLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygndG9wJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2UsIGZyaWVuZGx5TmFtZTogJ01heCBZJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnYm90dG9tJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2UsIGZyaWVuZGx5TmFtZTogJ01pbiBZJ30pLFxuXTtcblxuLyoqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSB7QGxpbmsgSUZpdENoYXJ0T3B0aW9uc30uIFVzZWZ1bCBmb3IgZWRpdGluZywgaW5pdGlhbGl6YXRpb24sIHRyYW5zZm9ybWF0aW9ucywgZXRjLiAqL1xuZXhwb3J0IGNvbnN0IGZpdENoYXJ0RGF0YVByb3BlcnRpZXM6IERHLlByb3BlcnR5W10gPSBbXG4gIC8vIFN0eWxlIGFuZCB6b29tXG4gIC8vIHJlbW92ZSB1bm5lY2Vzc2FyeSB0b29sdGlwc1xuICBERy5Qcm9wZXJ0eS5qcygnbWluWCcsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWluWScsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWF4WCcsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWF4WScsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygndGl0bGUnLCBERy5UWVBFLlNUUklORywge251bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCd4QXhpc05hbWUnLCBERy5UWVBFLlNUUklORywge2Rlc2NyaXB0aW9uOlxuICAgICdMYWJlbCB0byBzaG93IG9uIHRoZSBYIGF4aXMuIElmIG5vdCBzcGVjaWZpZWQsIGNvcnJlc3BvbmRpbmcgZGF0YSBjb2x1bW4gbmFtZSBpcyB1c2VkJywgbnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3lBeGlzTmFtZScsIERHLlRZUEUuU1RSSU5HLCB7ZGVzY3JpcHRpb246XG4gICAgJ0xhYmVsIHRvIHNob3cgb24gdGhlIFkgYXhpcy4gSWYgbm90IHNwZWNpZmllZCwgY29ycmVzcG9uZGluZyBkYXRhIGNvbHVtbiBuYW1lIGlzIHVzZWQnLCBudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbG9nWCcsIERHLlRZUEUuQk9PTCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgWCBheGlzIHNob3VsZCBiZSBsb2dhcml0aG1pYycsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2xvZ1knLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIFkgYXhpcyBzaG91bGQgYmUgbG9nYXJpdGhtaWMnLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdhbGxvd1haZXJvZXMnLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgeCB6ZXJvZXMgYWxsb3dlZCBmb3IgbG9nYXJpdGhtaWMgZGF0YSBvciBub3QnLCBkZWZhdWx0VmFsdWU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ21lcmdlU2VyaWVzJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdNZXJnZXMgYWxsIHNlcmllcyB3aXRoaW4gb25lIGNlbGwgaW50byBvbmUgc2VyaWVzJywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd0NvbHVtbkxhYmVsJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbiBsYWJlbCBpbiB0aGUgbGVnZW5kIG9yIG5vdCcsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dTdGF0aXN0aWNzJywgREcuVFlQRS5TVFJJTkdfTElTVCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciBzcGVjaWZpYyBzdGF0aXN0aWNzIHNob3VsZCBiZSByZW5kZXJlZCcsXG4gICAgY2hvaWNlczogc3RhdGlzdGljc1Byb3BlcnRpZXMubWFwKChmcnApID0+IGZycC5uYW1lKSwgaW5wdXRUeXBlOiAnTXVsdGlDaG9pY2UnLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIGZyaWVuZGx5TmFtZTogJ1N0YXRpc3RpY3MnfSksXG5dO1xuXG5leHBvcnQgY29uc3QgRklUX0ZVTkNUSU9OX1NJR01PSUQgPSAnc2lnbW9pZCc7XG5leHBvcnQgY29uc3QgRklUX0ZVTkNUSU9OX0xJTkVBUiA9ICdsaW5lYXInO1xuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl9MT0dfTElORUFSID0gJ2xvZy1saW5lYXInO1xuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTCA9ICdleHBvbmVudGlhbCc7XG5leHBvcnQgY29uc3QgRklUX0ZVTkNUSU9OXzRQTF9SRUdSRVNTSU9OID0gJzRwbC1yZWdyZXNzaW9uJztcbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fNFBMX0RPU0VfUkVTUE9OU0UgPSAnNHBsLWRvc2UtcmVzcG9uc2UnO1xuZXhwb3J0IGNvbnN0IEZJVF9KU19GVU5DVElPTiA9ICdqcy1mdW5jdGlvbic7XG5cbmV4cG9ydCBjb25zdCBGSVRfU1RBVFNfUlNRVUFSRUQgPSAnclNxdWFyZWQnO1xuZXhwb3J0IGNvbnN0IEZJVF9TVEFUU19BVUMgPSAnYXVjJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpdHRlZEN1cnZlKGN1cnZlRnVuY3Rpb246IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsIHBhcmFtVmFsdWVzOiBGbG9hdDMyQXJyYXkpOlxuICh4OiBudW1iZXIpID0+IG51bWJlciB7XG4gIHJldHVybiAoeDogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICB9O1xufVxuXG4vLyBUT0RPOiBmb3IgbGluZWFyIC0gc2xvcGUgLSBBLCBpbnRlcmNlcHRZIC0gQlxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRpc3RpY3MoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sIHBhcmFtVmFsdWVzOiBGbG9hdDMyQXJyYXksXG4gIGN1cnZlRnVuY3Rpb246IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsIHN0YXRpc3RpY3M6IGJvb2xlYW4gPSB0cnVlKTogRml0U3RhdGlzdGljcyB7XG4gIGNvbnN0IGZpdHRlZEN1cnZlID0gZ2V0Rml0dGVkQ3VydmUoY3VydmVGdW5jdGlvbiwgcGFyYW1WYWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgclNxdWFyZWQ6IHN0YXRpc3RpY3MgPyBnZXREZXRDb2VmZihmaXR0ZWRDdXJ2ZSwgZGF0YSkgOiB1bmRlZmluZWQsXG4gICAgYXVjOiBzdGF0aXN0aWNzID8gZ2V0QXVjKGZpdHRlZEN1cnZlLCBkYXRhKSA6IHVuZGVmaW5lZCxcbiAgICBpbnRlcmNlcHRYOiBwYXJhbVZhbHVlc1syXSxcbiAgICBpbnRlcmNlcHRZOiBmaXR0ZWRDdXJ2ZShwYXJhbVZhbHVlc1syXSksXG4gICAgc2xvcGU6IHBhcmFtVmFsdWVzWzFdLFxuICAgIHRvcDogcGFyYW1WYWx1ZXNbMF0sXG4gICAgYm90dG9tOiBwYXJhbVZhbHVlc1szXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludmVydGVkRnVuY3Rpb25zKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBwYXJhbVZhbHVlczogbnVtYmVyW10sXG4gIGNvbmZpZGVuY2VMZXZlbDogbnVtYmVyID0gMC4wNSwgc3RhdGlzdGljczogYm9vbGVhbiA9IHRydWUpOiBGaXRJbnZlcnRlZEZ1bmN0aW9ucyB8IG51bGwge1xuICBjb25zdCBzdHVkZW50USA9IGpTdGF0LnN0dWRlbnR0LmludigxIC0gY29uZmlkZW5jZUxldmVsIC8gMiwgZGF0YS54Lmxlbmd0aCAtIHBhcmFtVmFsdWVzLmxlbmd0aCk7XG5cbiAgbGV0IGludjogKHk6IG51bWJlcikgPT4gbnVtYmVyID0gKHk6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiAwO1xuICB9O1xuICBsZXQgaW52VG9wOiAoeTogbnVtYmVyKSA9PiBudW1iZXIgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIDA7XG4gIH07XG4gIGxldCBpbnZCb3R0b206ICh5OiBudW1iZXIpID0+IG51bWJlciA9ICh5OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICBpZiAoc3RhdGlzdGljcykge1xuICAgIGludiA9ICh5OiBudW1iZXIpID0+IHtcbiAgICAgIC8vc2hvdWxkIGNoZWNrIGlmIG1vcmUgdGhhbiBib3R0b20gYW5kIGxlc3MgdGhhbiB0b3BcbiAgICAgIHJldHVybiBwYXJhbVZhbHVlc1syXSAvIE1hdGgucG93KChwYXJhbVZhbHVlc1swXSAtIHkpIC8gKHkgLSBwYXJhbVZhbHVlc1szXSksIDEgLyBwYXJhbVZhbHVlc1sxXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGVycm9yID0gZ2V0SW52RXJyb3IoaW52LCBkYXRhKTtcblxuICAgIGludlRvcCA9ICh5OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW52KHkpO1xuICAgICAgcmV0dXJuIHZhbHVlICsgc3R1ZGVudFEgKiBlcnJvciAvIE1hdGguc3FydChkYXRhLnkubGVuZ3RoKTtcbiAgICB9O1xuXG4gICAgaW52Qm90dG9tID0gKHk6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBpbnYoeSk7XG4gICAgICByZXR1cm4gdmFsdWUgLSBzdHVkZW50USAqIGVycm9yIC8gTWF0aC5zcXJ0KGRhdGEueS5sZW5ndGgpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW52ZXJ0ZWQ6IGludixcbiAgICAgIGludmVydGVkVG9wOiBpbnZUb3AsXG4gICAgICBpbnZlcnRlZEJvdHRvbTogaW52Qm90dG9tLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ21vaWQocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIGNvbnN0IEMgPSBwYXJhbXNbMl07XG4gIGNvbnN0IEQgPSBwYXJhbXNbM107XG4gIHJldHVybiAoRCArIChBIC0gRCkgLyAoMSArIE1hdGgucG93KDEwLCAoeCAtIEMpICogQikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVhcihwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgQSA9IHBhcmFtc1swXTtcbiAgY29uc3QgQiA9IHBhcmFtc1sxXTtcbiAgcmV0dXJuIEEgKiB4ICsgQjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0xpbmVhcihwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgQSA9IHBhcmFtc1swXTtcbiAgY29uc3QgQiA9IHBhcmFtc1sxXTtcbiAgcmV0dXJuIEEgKiBNYXRoLmxvZyh4ICsgMSkgKyBCO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb25lbnRpYWwocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogTWF0aC5leHAoeCAqIEIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm91clBMUmVncmVzc2lvbihwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgQSA9IHBhcmFtc1swXTsgLy8gbWF4XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07IC8vIGhpbGxcbiAgY29uc3QgQyA9IHBhcmFtc1syXTsgLy8gSUM1MCAvIGluZmxlY3Rpb24gcG9pbnRcbiAgY29uc3QgRCA9IHBhcmFtc1szXTsgLy8gbWluXG4gIHJldHVybiBEICsgKEEgLSBEKSAvICgxICsgTWF0aC5wb3coeCAvIEMsIEIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJQTERvc2VSZXNwb25zZShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgbWluID0gcGFyYW1zWzNdO1xuICBjb25zdCBtYXggPSBwYXJhbXNbMF07XG4gIGNvbnN0IGhpbGwgPSBwYXJhbXNbMV07XG4gIGNvbnN0IGljNTAgPSBwYXJhbXNbMl07XG4gIC8vIGJlIHdhcmUsIElDNTAgdGhhdCBjb21lcyBoZXJlIGlzIGFscmVhZHkgbG9nMTAgdHJhbnNmb3JtZWRcbiAgcmV0dXJuIG1pbiArIChtYXggLSBtaW4pIC8gKDEgKyBNYXRoLnBvdygxMCwgaGlsbCAqIChpYzUwIC0geCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1YyhmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBhdWMgPSAwO1xuICBjb25zdCBtaW4gPSBNYXRoLm1pbiguLi5kYXRhLngpO1xuICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5kYXRhLngpO1xuICBjb25zdCBpbnRlZ3JhdGlvblN0ZXAgPSAobWF4IC0gbWluKSAvIDEwMDA7XG4gIGZvciAobGV0IHggPSBtaW47IHggPCBtYXg7IHgrPSBpbnRlZ3JhdGlvblN0ZXApXG4gICAgYXVjICs9IGludGVncmF0aW9uU3RlcCAqIGZpdHRlZEN1cnZlKHgpO1xuXG4gIHJldHVybiBhdWM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXRDb2VmZihmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzc1JlcyA9IDA7XG4gIGxldCBzc1RvdCA9IDA7XG4gIGNvbnN0IHlNZWFuID0galN0YXQubWVhbihkYXRhLnkpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIHNzUmVzICs9IE1hdGgucG93KGRhdGEueVtpXSAtIGZpdHRlZEN1cnZlKGRhdGEueFtpXSksIDIpO1xuICAgIHNzVG90ICs9IE1hdGgucG93KGRhdGEueVtpXSAtIHlNZWFuLCAyKTtcbiAgfVxuXG4gIHJldHVybiAxIC0gc3NSZXMgLyBzc1RvdDtcbn1cblxuZnVuY3Rpb24gZ2V0SW52RXJyb3IodGFyZ2V0RnVuYzogKHk6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgY29uc3QgcmVzaWR1ZXNTcXVhcmVzID0gbmV3IEZsb2F0MzJBcnJheShkYXRhLnkubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvYnMgPSBkYXRhLnhbaV07XG4gICAgY29uc3QgcHJlZCA9IHRhcmdldEZ1bmMoZGF0YS55W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKVxuICAgIHNpZ21hU3EgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldO1xuXG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHNpZ21hO1xufVxuIl19
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZml0LWN1cnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixvQ0FBb0M7QUFDcEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUM7QUEwQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JFO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUF1RWxDLDREQUE0RDtBQUM1RCxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUNFLGlCQUFZLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFzQixFQUFFLENBQUMsQ0FBRSw2REFBNkQ7UUFDckcsV0FBTSxHQUFpQixFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUFBO0FBNEJELCtFQUErRTtBQUcvRSxnSEFBZ0g7QUFDaEgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtCO0lBQ2pELEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNoRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNoRixFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDbEUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ2xFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUM3RCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsQ0FBQztJQUNsRixFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsQ0FBQztDQUN0RixDQUFDO0FBRUYsbUhBQW1IO0FBQ25ILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFrQjtJQUNuRCxpQkFBaUI7SUFDakIsOEJBQThCO0lBQzlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUN2RCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDdkQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3ZELEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUN2RCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDekQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsV0FBVyxFQUN0RCx1RkFBdUYsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDM0csRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsV0FBVyxFQUN0RCx1RkFBdUYsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDM0csRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUMsV0FBVyxFQUFFLDBDQUEwQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUNwSCxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBQyxXQUFXLEVBQUUsMENBQTBDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3BILEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFDLFdBQVcsRUFBRSxzREFBc0QsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDdkksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENB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QU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW11bHRpLXNwYWNlcyAqL1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcblxuZXhwb3J0IGNvbnN0IEZpdEVycm9yTW9kZWwgPSB7XG4gIENPTlNUQU5UOiAnY29uc3RhbnQnLFxuICBQUk9QT1JUSU9OQUw6ICdwcm9wb3J0aW9uYWwnLFxuICBDT01CSU5FRDogJ2NvbWJpbmVkJyxcbn07XG5cbmV4cG9ydCB0eXBlIEZpdFBhcmFtQm91bmRzID0ge1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn07XG5cbi8qKiBGaXQgZnVuY3Rpb24gZGVzY3JpcHRpb24uIEFwcGxpZXMgdG8gY3VzdG9tIHVzZXIgZml0IGZ1bmN0aW9ucy5cbiAqIFJlcXVpcmVzIEpTIGFycm93IGZ1bmN0aW9ucyBmb3IgdGhlIGZpdCBmdW5jdGlvbnMgYW5kIGluaXRpYWwgcGFyYW1ldGVycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZ1bmN0aW9uOiBzdHJpbmc7XG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIHBhcmFtZXRlck5hbWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgRml0Q3VydmUgPSB7XG4gIGZpdHRlZEN1cnZlOiAoeDogbnVtYmVyKSA9PiBudW1iZXI7XG4gIHBhcmFtZXRlcnM6IEZsb2F0MzJBcnJheTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpdENvbmZpZGVuY2VJbnRlcnZhbHMgPSB7XG4gIGNvbmZpZGVuY2VUb3A6ICh4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgY29uZmlkZW5jZUJvdHRvbTogKHg6IG51bWJlcikgPT4gbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRml0U3RhdGlzdGljcyA9IHtcbiAgclNxdWFyZWQ/OiBudW1iZXIsXG4gIGF1Yz86IG51bWJlcixcbiAgaW50ZXJjZXB0WD86IG51bWJlciwgLy8gcGFyYW1ldGVyc1syXVxuICBpbnRlcmNlcHRZPzogbnVtYmVyLCAvLyBmaXR0ZWRDdXJ2ZVtwYXJhbWV0ZXJzWzJdXVxuICBzbG9wZT86IG51bWJlciwgLy8gcGFyYW1ldGVyc1sxXVxuICB0b3A/OiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbMF1cbiAgYm90dG9tPzogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzNdXG59O1xuXG5leHBvcnQgdHlwZSBGaXRJbnZlcnRlZEZ1bmN0aW9ucyA9IHtcbiAgaW52ZXJ0ZWQ6ICh5OiBudW1iZXIpID0+IG51bWJlcixcbiAgaW52ZXJ0ZWRUb3A6ICh5OiBudW1iZXIpID0+IG51bWJlcixcbiAgaW52ZXJ0ZWRCb3R0b206ICh5OiBudW1iZXIpID0+IG51bWJlcixcbn07XG5cbi8qKlxuICogIERhdGFncm9rIGN1cnZlIGZpdHRpbmdcbiAqXG4gKiAtIEZpdHRpbmc6IGNvbXB1dGluZyBwYXJhbWV0ZXJzIG9mIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gdG8gYmVzdCBmaXQgdGhlIGRhdGFcbiAqICAgLSBVc2VzIEJGR1Mgb3B0aW1pemF0aW9uIGFsZ29yaXRobSAobXVsdGktdGhyZWFkaW5nIGZvciBwZXJmb3JtYW5jZSkuXG4gKiAgICAgRm9yIGRvc2UtcmVzcG9uc2UgY3VydmVzLCB3ZSBhcmUgdHlwaWNhbGx5IGZpdHRpbmcgdGhlIHNpZ21vaWQgZnVuY3Rpb25cbiAqICAgLSBBYmlsaXR5IHRvIGR5bmFtaWNhbGx5IHJlZ2lzdGVyIGN1c3RvbSBmaXR0aW5nIGZ1bmN0aW9uc1xuICogICAgIC0gQXV0b21hdGljIGZpdCBmdW5jdGlvbiBkZXRlcm1pbmF0aW9uXG4gKiAgICAgLSBDYWNoaW5nIG9mIGN1c3RvbSBmaXR0aW5nIGZ1bmN0aW9uc1xuICogICAtIEFiaWxpdHkgdG8gZ2V0IGZpdHRpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIChyLXNxdWFyZWQsIGNsYXNzaWZpY2F0aW9uLCBldGMpXG4gKiAtIERlZXAgaW50ZWdyYXRpb24gd2l0aCB0aGUgRGF0YWdyb2sgZ3JpZFxuICogICAtIEVpdGhlciBmaXR0aW5nIG9uIHRoZSBmbHksIG9yIHVzaW5nIHRoZSBzdXBwbGllZCBmdW5jdGlvbiArIHBhcmFtZXRlcnNcbiAqICAgLSBNdWx0aXBsZSBzZXJpZXMgaW4gb25lIGNlbGxcbiAqICAgLSBDYW5kbGVzdGlja3MsIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLCBhbmQgZHJvcGxpbmVzIGRyYXdpbmdcbiAqICAgLSBBYmlsaXR5IHRvIGRlZmluZSBjaGFydCwgbWFya2VyLCBvciBmaXR0aW5nIG9wdGlvbnMgKHN1Y2ggYXMgZml0IGZ1bmN0aW9uIG9yIG1hcmtlciBjb2xvcilcbiAqICAgICBvbiB0aGUgY29sdW1uIGxldmVsLCB3aXRoIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIGl0IG9uIGEgZ3JpZCBjZWxsIG9yIHBvaW50IGxldmVsXG4gKiAgIC0gQ2xpY2tpbmcgYSBwb2ludCBpbiBhIGNoYXJ0IHdpdGhpbiBhIGdyaWQgbWFrZXMgaXQgYW4gb3V0bGllciAtPiBjdXJ2ZSBpcyByZS1maXR0ZWQgb24gdGhlIGZseVxuICogICAtIEFiaWxpdHkgdG8gc3BlY2lmeSBhIGNoYXJ0IGFzIFwicmVmZXJlbmNlXCIgc28gdGhhdCBpdCBpcyBzaG93biBvbiBldmVyeSBvdGhlciBjaGFydCBmb3IgY29tcGFyaXNvblxuICogLSBBYmlsaXR5IHRvIG92ZXJsYXkgY3VydmVzIGZyb20gbXVsdGlwbGUgZ3JpZCBjZWxscyAoc3BlY2lhbCB2aWV3ZXIpXG4gKiAtIFdvcmsgd2l0aCBzZXJpZXMgc3RvcmVkIGluIG11bHRpcGxlIGZvcm1hdHMgKGJpbmFyeSBmb3IgcGVyZm9ybWFuY2UsIGpzb24gZm9yIGZsZXhpYmlsaXR5LCBldGMpXG4qL1xuXG5leHBvcnQgY29uc3QgRFJPUExJTkVTID0gWydJQzUwJ107XG5cbmV4cG9ydCB0eXBlIEZpdE1hcmtlclR5cGUgPSAnYXN0ZXJpc2snIHwgJ2NpcmNsZScgfCAnY3Jvc3MgYm9yZGVyJyB8ICdkaWFtb25kJyB8ICdzcXVhcmUnIHwgJ3N0YXInIHwgJ3RyaWFuZ2xlIGJvdHRvbScgfFxuICAndHJpYW5nbGUgbGVmdCcgfCAndHJpYW5nbGUgcmlnaHQnIHwgJ3RyaWFuZ2xlIHRvcCc7XG5cbmV4cG9ydCB0eXBlIEZpdE91dGxpZXJNYXJrZXJUeXBlID0gJ2FzdGVyaXNrJyB8ICdjaXJjbGUnIHwgJ2Nyb3NzIGJvcmRlcicgfCAnZGlhbW9uZCcgfCAnb3V0bGllcicgfCAnc3F1YXJlJyB8ICdzdGFyJyB8XG4gICd0cmlhbmdsZSBib3R0b20nIHwgJ3RyaWFuZ2xlIGxlZnQnIHwgJ3RyaWFuZ2xlIHJpZ2h0JyB8ICd0cmlhbmdsZSB0b3AnO1xuXG5leHBvcnQgdHlwZSBGaXRMaW5lU3R5bGUgPSAnc29saWQnIHwgJ2RvdHRlZCcgfCAnZGFzaGVkJyB8ICdkYXNoZG90dGVkJztcblxuZXhwb3J0IHR5cGUgRml0RXJyb3JNb2RlbFR5cGUgPSAnY29uc3RhbnQnIHwgJ3Byb3BvcnRpb25hbCcgfCAnY29tYmluZWQnO1xuXG4vKiogQSBwb2ludCBpbiB0aGUgZml0IHNlcmllcy4gT25seSB4IGFuZCB5IGFyZSByZXF1aXJlZC4gQ2FuIG92ZXJyaWRlIHNvbWUgZmllbGRzIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBvdXRsaWVyPzogYm9vbGVhbjsgICAgICAgLy8gaWYgdHJ1ZSwgcmVuZGVycyBhcyAneCcgYW5kIGdldHMgaWdub3JlZCBmb3IgY3VydmUgZml0dGluZ1xuICBjb2xvcj86IHN0cmluZzsgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBtYXJrZXIgY29sb3IgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBvdXRsaWVyQ29sb3I/OiBzdHJpbmc7ICAgLy8gb3ZlcnJpZGVzIHRoZSBvdXRsaWVyIGNvbG9yIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnNcbiAgbWFya2VyPzogRml0TWFya2VyVHlwZTsgIC8vIG92ZXJyaWRlcyB0aGUgbWFya2VyIHR5cGUgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBvdXRsaWVyTWFya2VyPzogRml0T3V0bGllck1hcmtlclR5cGU7IC8vIG92ZXJyaWRlcyB0aGUgb3V0bGllciBtYXJrZXIgdHlwZSBkZWZpbmVkIGluIElGaXRTZXJpZXNPcHRpb25zXG4gIHNpemU/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZXMgdGhlIGRlZmF1bHQgbWFya2VyIHNpemVcbiAgc3RkZXY/OiBudW1iZXI7ICAgICAgICAgIC8vIHdoZW4gZGVmaW5lZCwgcmVuZGVycyBhbiBlcnJvciBiYXIgY2FuZGxlc3RpY2tcbiAgLy8gbWluWT86IG51bWJlcjsgICAgICAgICAgIC8vIHdoZW4gZGVmaW5lZCwgdGhlIG1hcmtlciByZW5kZXJzIGFzIGEgY2FuZGxlc3RpY2sgd2l0aCB3aGlza2VycyBbbWluWSwgbWF4WV1cbiAgLy8gbWF4WT86IG51bWJlcjsgICAgICAgICAgIC8vIHdoZW4gZGVmaW5lZCwgdGhlIG1hcmtlciByZW5kZXJzIGFzIGEgY2FuZGxlc3RpY2sgd2l0aCB3aGlza2VycyBbbWluWSwgbWF4WV1cbiAgbWV0YT86IGFueTsgICAgICAgICAgIC8vIGFueSBhZGRpdGlvbmFsIGRhdGFcbn1cblxuLyoqIEEgc2VyaWVzIGNvbnNpc3RzIG9mIHBvaW50cywgaGFzIGEgbmFtZSwgYW5kIG9wdGlvbnMuXG4gKiBJZiBkZWZpbmVkLCBzZXJpZXNPcHRpb25zIGFyZSBtZXJnZWQgd2l0aCB7QGxpbmsgSUZpdENoYXJ0RGF0YS5zZXJpZXNPcHRpb25zfSAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0U2VyaWVzIGV4dGVuZHMgSUZpdFNlcmllc09wdGlvbnMge1xuICBwb2ludHM6IElGaXRQb2ludFtdO1xufVxuXG4vKiogQ2hhcnQgbGFiZWxzIG9wdGlvbnMuIENvbnRyb2xzIHRoZSBjaGFydCBsYWJlbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRDaGFydExhYmVsT3B0aW9ucyB7XG4gIHZpc2libGU6IGJvb2xlYW47ICAgICAgICAgLy8gaWYgdHJ1ZSwgcmVuZGVycyB0aGUgbGFiZWwgb24gdGhlIHBsb3RcbiAgY29sb3I6IHN0cmluZzsgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBsYWJlbCBjb2xvclxuICBuYW1lOiBzdHJpbmc7ICAgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIGxhYmVsIG5hbWVcbn1cblxuLyoqIENoYXJ0IG9wdGlvbnMuIEZvciBmaXR0ZWQgY3VydmVzLCB0aGlzIG9iamVjdCBpcyBzdG9yZWQgaW4gdGhlIGdyaWQgY29sdW1uIHRhZ3MgYW5kIGlzIHVzZWQgYnkgdGhlIHJlbmRlcmVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0Q2hhcnRPcHRpb25zIHtcbiAgbWluWD86IG51bWJlcjtcbiAgbWluWT86IG51bWJlcjtcbiAgbWF4WD86IG51bWJlcjtcbiAgbWF4WT86IG51bWJlcjtcblxuICB0aXRsZT86IHN0cmluZzsgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBwbG90IHRpdGxlLiBJZiB0aGUgcGxvdCBzaXplIGlzIGVub3VnaCwgd2lsbCByZW5kZXIgaXQuXG4gIHhBeGlzTmFtZT86IHN0cmluZzsgICAgICAgIC8vIGRlZmluZXMgdGhlIHggYXhpcyBuYW1lLiBJZiB0aGUgcGxvdCBzaXplIGlzIGVub3VnaCwgd2lsbCByZW5kZXIgaXQuXG4gIHlBeGlzTmFtZT86IHN0cmluZzsgICAgICAgIC8vIGRlZmluZXMgdGhlIFkgYXhpcyBuYW1lLiBJZiB0aGUgcGxvdCBzaXplIGlzIGVub3VnaCwgd2lsbCByZW5kZXIgaXQuXG5cbiAgbG9nWD86IGJvb2xlYW47ICAgICAgICAgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHRoZSB4IGRhdGEgc2hvdWxkIGJlIGxvZ2FyaXRobWljIG9yIG5vdFxuICBsb2dZPzogYm9vbGVhbjsgICAgICAgICAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdGhlIHkgZGF0YSBzaG91bGQgYmUgbG9nYXJpdGhtaWMgb3Igbm90XG5cbiAgYWxsb3dYWmVyb2VzPzogYm9vbGVhbjsgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHggemVyb2VzIGFsbG93ZWQgZm9yIGxvZ2FyaXRobWljIGRhdGEgb3Igbm90XG4gIG1lcmdlU2VyaWVzPzogYm9vbGVhbjsgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBtZXJnZSBzZXJpZXMgb3Igbm90XG5cbiAgc2hvd0NvbHVtbkxhYmVsPzogYm9vbGVhbjsgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbiBsYWJlbCBpbiB0aGUgbGVnZW5kIG9yIG5vdFxuICBzaG93U3RhdGlzdGljcz86IHN0cmluZ1tdOyAvLyBkZWZpbmVzIHRoZSBzdGF0aXN0aWNzIHRoYXQgd291bGQgYmUgc2hvd24gb24gdGhlIHBsb3RcbiAgbGFiZWxPcHRpb25zPzogSUZpdENoYXJ0TGFiZWxPcHRpb25zW107IC8vIGNvbnRyb2xzIHRoZSBwbG90IGxhYmVsc1xuICB1c2VBdXhMZWdlbmROYW1lcz86IGJvb2xlYW47IC8vIGlmIHRydWUsIHVzZXMgYXV4IGxlZ2VuZCBuYW1lcyBpbnN0ZWFkIG9mIHNlcmllcyBuYW1lc1xufVxuXG4vKiogRGF0YSBmb3IgdGhlIGZpdCBjaGFydC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdENoYXJ0RGF0YSB7XG4gIGNoYXJ0T3B0aW9ucz86IElGaXRDaGFydE9wdGlvbnM7XG4gIHNlcmllc09wdGlvbnM/OiBJRml0U2VyaWVzT3B0aW9uczsgIC8vIERlZmF1bHQgc2VyaWVzIG9wdGlvbnMuIEluZGl2aWR1YWwgc2VyaWVzIGNhbiBvdmVycmlkZSBpdC5cbiAgc2VyaWVzPzogSUZpdFNlcmllc1tdO1xufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHtAbGluayBJRml0Q2hhcnREYXRhfSBpbnRlcmZhY2UgKi9cbmV4cG9ydCBjbGFzcyBGaXRDaGFydERhdGEgaW1wbGVtZW50cyBJRml0Q2hhcnREYXRhIHtcbiAgY2hhcnRPcHRpb25zOiBJRml0Q2hhcnRPcHRpb25zID0ge307XG4gIHNlcmllc09wdGlvbnM6IElGaXRTZXJpZXNPcHRpb25zID0ge307ICAvLyBEZWZhdWx0IHNlcmllcyBvcHRpb25zLiBJbmRpdmlkdWFsIHNlcmllcyBjYW4gb3ZlcnJpZGUgaXQuXG4gIHNlcmllczogSUZpdFNlcmllc1tdID0gW107XG59XG5cbi8qKiBTZXJpZXMgb3B0aW9ucyBjYW4gYmUgZWl0aGVyIGFwcGxpZWQgZ2xvYmFsbHkgb24gYSBjb2x1bW4gbGV2ZWwsIG9yIHBhcnRpYWxseSBvdmVycmlkZGVuIGluIHBhcnRpY3VsYXIgc2VyaWVzICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRTZXJpZXNPcHRpb25zIHtcbiAgW2tleTogc3RyaW5nXTogYW55OyAgICAgICAgICAgICAgICAgICAvLyBhbGxvd3MgZ2V0dGluZyBkYXRhIGJ5IGtleVxuICBuYW1lPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgbmFtZVxuICBmaXRGdW5jdGlvbj86IHN0cmluZyB8IElGaXRGdW5jdGlvbkRlc2NyaXB0aW9uOyAvLyBjb250cm9scyB0aGUgc2VyaWVzIGZpdCBmdW5jdGlvblxuICBwYXJhbWV0ZXJzPzogbnVtYmVyW107ICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgcGFyYW1ldGVycywgYXV0by1maXR0aW5nIHdoZW4gbm90IGRlZmluZWRcbiAgcGFyYW1ldGVyQm91bmRzPzogRml0UGFyYW1Cb3VuZHNbXTsgICAvLyBkZWZpbmVzIHRoZSBhY2NlcHRhYmxlIHJhbmdlIG9mIGVhY2ggcGFyYW1ldGVyLCB3aGljaCBpcyB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBmaXR0aW5nLiBTZWUgYWxzbyBgcGFyYW1ldGVyc2AuXG4gIG1hcmtlclR5cGU/OiBGaXRNYXJrZXJUeXBlOyAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIG1hcmtlciB0eXBlXG4gIG91dGxpZXJNYXJrZXJUeXBlPzogRml0T3V0bGllck1hcmtlclR5cGU7ICAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgb3V0bGllciBtYXJrZXIgdHlwZVxuICBsaW5lU3R5bGU/OiBGaXRMaW5lU3R5bGU7ICAgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIHNlcmllcyBsaW5lIHN0eWxlXG4gIHBvaW50Q29sb3I/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIHBvaW50IGNvbG9yXG4gIGZpdExpbmVDb2xvcj86IHN0cmluZzsgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGZpdCBsaW5lIGNvbG9yXG4gIGNvbmZpZGVuY2VJbnRlcnZhbENvbG9yPzogc3RyaW5nOyAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGNvbmZpZGVuY2UgaW50ZXJ2YWwgY29sb3JcbiAgb3V0bGllckNvbG9yPzogc3RyaW5nOyAgICAgICAgICAgICAgICAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgb3V0bGllciBjb2xvclxuICBjb25uZWN0RG90cz86IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBjb25uZWN0IHRoZSBwb2ludHMgd2l0aCBsaW5lcyBvciBub3QuIElmIHRydWUgYW5kIHNob3dGaXRMaW5lIGlzIGZhbHNlIC0gZml0dGluZyBpcyBkaXNhYmxlZCAtIG90aGVyd2lzZSwgaXQgd2lsbCBiZSByZW5kZXJlZCBhY2NvcmRpbmdseSB0byB0aGUgcGFyYW1ldGVyIHZhbHVlLlxuICBzaG93Rml0TGluZT86IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBmaXQgbGluZSBvciBub3RcbiAgc2hvd1BvaW50cz86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBkYXRhIGRpc3BsYXkgbW9kZVxuICBzaG93T3V0bGllcnM/OiBib29sZWFuOyAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBvdXRsaWVycyBvciBub3RcbiAgc2hvd0N1cnZlQ29uZmlkZW5jZUludGVydmFsPzogYm9vbGVhbjsgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9yIG5vdFxuICBlcnJvck1vZGVsPzogRml0RXJyb3JNb2RlbFR5cGU7ICAgICAgIC8vIGRlZmluZXMgdGhlIHNlcmllcyBlcnJvciBtb2RlbFxuICBjbGlja1RvVG9nZ2xlPzogYm9vbGVhbjsgICAgLy8gaWYgdHJ1ZSwgY2xpY2tpbmcgb24gdGhlIHBvaW50IHRvZ2dsZXMgaXRzIG91dGxpZXIgc3RhdHVzIGFuZCBjYXVzZXMgY3VydmUgcmVmaXR0aW5nXG4gIGxhYmVscz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFufTsgLy8gY29udHJvbGxlZCBieSBJRml0Q2hhcnREYXRhIGxhYmVsT3B0aW9ucywgc2hvd3MgbGFiZWxzXG4gIGRyb3BsaW5lcz86IHN0cmluZ1tdOyAgICAgICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgZHJvcGxpbmVzIHRoYXQgd291bGQgYmUgc2hvd24gb24gdGhlIHBsb3QgKElDNTApXG4gIGNvbHVtbk5hbWU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgY29sdW1uIG5hbWUgd2hlcmUgdGhlIHNlcmllcyBpcyBzdG9yZWRcbiAgYXV4TGVnZW5kTmFtZT86IHN0cmluZzsgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBhdXhpbGlhcnkgbGVnZW5kIG5hbWUgZm9yIHRoZSBzZXJpZXNcbn1cbi8vIFRPRE86IHNob3cgbGFiZWxzIGluIHByb3BlcnR5IHBhbmVsIGlmIHByZXNlbnQsIGNvbG9yIGJ5IGRlZmF1bHQgZnJvbSBzZXJpZXNcblxuXG4vKiogUHJvcGVydGllcyB0aGF0IGRlc2NyaWJlIHtAbGluayBGaXRTdGF0aXN0aWNzfS4gVXNlZnVsIGZvciBlZGl0aW5nLCBpbml0aWFsaXphdGlvbiwgdHJhbnNmb3JtYXRpb25zLCBldGMuICovXG5leHBvcnQgY29uc3Qgc3RhdGlzdGljc1Byb3BlcnRpZXM6IERHLlByb3BlcnR5W10gPSBbXG4gIERHLlByb3BlcnR5LmpzKCdyU3F1YXJlZCcsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdhdWMnLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZSwgZnJpZW5kbHlOYW1lOiAnQVVDJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnaW50ZXJjZXB0WScsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdpbnRlcmNlcHRYJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nsb3BlJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3RvcCcsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlLCBmcmllbmRseU5hbWU6ICdNYXggWSd9KSxcbiAgREcuUHJvcGVydHkuanMoJ2JvdHRvbScsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlLCBmcmllbmRseU5hbWU6ICdNaW4gWSd9KSxcbl07XG5cbi8qKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUge0BsaW5rIElGaXRDaGFydE9wdGlvbnN9LiBVc2VmdWwgZm9yIGVkaXRpbmcsIGluaXRpYWxpemF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGV0Yy4gKi9cbmV4cG9ydCBjb25zdCBmaXRDaGFydERhdGFQcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdID0gW1xuICAvLyBTdHlsZSBhbmQgem9vbVxuICAvLyByZW1vdmUgdW5uZWNlc3NhcnkgdG9vbHRpcHNcbiAgREcuUHJvcGVydHkuanMoJ21pblgnLCBERy5UWVBFLkZMT0FULCB7bnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ21pblknLCBERy5UWVBFLkZMT0FULCB7bnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ21heFgnLCBERy5UWVBFLkZMT0FULCB7bnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ21heFknLCBERy5UWVBFLkZMT0FULCB7bnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3RpdGxlJywgREcuVFlQRS5TVFJJTkcsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygneEF4aXNOYW1lJywgREcuVFlQRS5TVFJJTkcsIHtkZXNjcmlwdGlvbjpcbiAgICAnTGFiZWwgdG8gc2hvdyBvbiB0aGUgWCBheGlzLiBJZiBub3Qgc3BlY2lmaWVkLCBjb3JyZXNwb25kaW5nIGRhdGEgY29sdW1uIG5hbWUgaXMgdXNlZCcsIG51bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCd5QXhpc05hbWUnLCBERy5UWVBFLlNUUklORywge2Rlc2NyaXB0aW9uOlxuICAgICdMYWJlbCB0byBzaG93IG9uIHRoZSBZIGF4aXMuIElmIG5vdCBzcGVjaWZpZWQsIGNvcnJlc3BvbmRpbmcgZGF0YSBjb2x1bW4gbmFtZSBpcyB1c2VkJywgbnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ2xvZ1gnLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIFggYXhpcyBzaG91bGQgYmUgbG9nYXJpdGhtaWMnLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdsb2dZJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBZIGF4aXMgc2hvdWxkIGJlIGxvZ2FyaXRobWljJywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnYWxsb3dYWmVyb2VzJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHggemVyb2VzIGFsbG93ZWQgZm9yIGxvZ2FyaXRobWljIGRhdGEgb3Igbm90JywgZGVmYXVsdFZhbHVlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdtZXJnZVNlcmllcycsIERHLlRZUEUuQk9PTCwge2Rlc2NyaXB0aW9uOiAnTWVyZ2VzIGFsbCBzZXJpZXMgd2l0aGluIG9uZSBjZWxsIGludG8gb25lIHNlcmllcycsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dDb2x1bW5MYWJlbCcsIERHLlRZUEUuQk9PTCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciB0byBzaG93IHRoZSBjb2x1bW4gbGFiZWwgaW4gdGhlIGxlZ2VuZCBvciBub3QnLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93U3RhdGlzdGljcycsIERHLlRZUEUuU1RSSU5HX0xJU1QsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgc3BlY2lmaWMgc3RhdGlzdGljcyBzaG91bGQgYmUgcmVuZGVyZWQnLFxuICAgIGNob2ljZXM6IHN0YXRpc3RpY3NQcm9wZXJ0aWVzLm1hcCgoZnJwKSA9PiBmcnAubmFtZSksIGlucHV0VHlwZTogJ011bHRpQ2hvaWNlJyxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBmcmllbmRseU5hbWU6ICdTdGF0aXN0aWNzJ30pLFxuXTtcblxuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl9TSUdNT0lEID0gJ3NpZ21vaWQnO1xuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl9MSU5FQVIgPSAnbGluZWFyJztcbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUiA9ICdsb2ctbGluZWFyJztcbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fRVhQT05FTlRJQUwgPSAnZXhwb25lbnRpYWwnO1xuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl80UExfUkVHUkVTU0lPTiA9ICc0cGwtcmVncmVzc2lvbic7XG5leHBvcnQgY29uc3QgRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFID0gJzRwbC1kb3NlLXJlc3BvbnNlJztcbmV4cG9ydCBjb25zdCBGSVRfSlNfRlVOQ1RJT04gPSAnanMtZnVuY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgRklUX1NUQVRTX1JTUVVBUkVEID0gJ3JTcXVhcmVkJztcbmV4cG9ydCBjb25zdCBGSVRfU1RBVFNfQVVDID0gJ2F1Yyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXR0ZWRDdXJ2ZShjdXJ2ZUZ1bmN0aW9uOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLCBwYXJhbVZhbHVlczogRmxvYXQzMkFycmF5KTpcbiAoeDogbnVtYmVyKSA9PiBudW1iZXIge1xuICByZXR1cm4gKHg6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBjdXJ2ZUZ1bmN0aW9uKHBhcmFtVmFsdWVzLCB4KTtcbiAgfTtcbn1cblxuLy8gVE9ETzogZm9yIGxpbmVhciAtIHNsb3BlIC0gQSwgaW50ZXJjZXB0WSAtIEJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aXN0aWNzKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBwYXJhbVZhbHVlczogRmxvYXQzMkFycmF5LFxuICBjdXJ2ZUZ1bmN0aW9uOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLCBzdGF0aXN0aWNzOiBib29sZWFuID0gdHJ1ZSk6IEZpdFN0YXRpc3RpY3Mge1xuICBjb25zdCBmaXR0ZWRDdXJ2ZSA9IGdldEZpdHRlZEN1cnZlKGN1cnZlRnVuY3Rpb24sIHBhcmFtVmFsdWVzKTtcblxuICByZXR1cm4ge1xuICAgIHJTcXVhcmVkOiBzdGF0aXN0aWNzID8gZ2V0RGV0Q29lZmYoZml0dGVkQ3VydmUsIGRhdGEpIDogdW5kZWZpbmVkLFxuICAgIGF1Yzogc3RhdGlzdGljcyA/IGdldEF1YyhmaXR0ZWRDdXJ2ZSwgZGF0YSkgOiB1bmRlZmluZWQsXG4gICAgaW50ZXJjZXB0WDogcGFyYW1WYWx1ZXNbMl0sXG4gICAgaW50ZXJjZXB0WTogZml0dGVkQ3VydmUocGFyYW1WYWx1ZXNbMl0pLFxuICAgIHNsb3BlOiBwYXJhbVZhbHVlc1sxXSxcbiAgICB0b3A6IHBhcmFtVmFsdWVzWzBdLFxuICAgIGJvdHRvbTogcGFyYW1WYWx1ZXNbM10sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZlcnRlZEZ1bmN0aW9ucyhkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSwgcGFyYW1WYWx1ZXM6IG51bWJlcltdLFxuICBjb25maWRlbmNlTGV2ZWw6IG51bWJlciA9IDAuMDUsIHN0YXRpc3RpY3M6IGJvb2xlYW4gPSB0cnVlKTogRml0SW52ZXJ0ZWRGdW5jdGlvbnMgfCBudWxsIHtcbiAgY29uc3Qgc3R1ZGVudFEgPSBqU3RhdC5zdHVkZW50dC5pbnYoMSAtIGNvbmZpZGVuY2VMZXZlbCAvIDIsIGRhdGEueC5sZW5ndGggLSBwYXJhbVZhbHVlcy5sZW5ndGgpO1xuXG4gIGxldCBpbnY6ICh5OiBudW1iZXIpID0+IG51bWJlciA9ICh5OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gMDtcbiAgfTtcbiAgbGV0IGludlRvcDogKHk6IG51bWJlcikgPT4gbnVtYmVyID0gKHk6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiAwO1xuICB9O1xuICBsZXQgaW52Qm90dG9tOiAoeTogbnVtYmVyKSA9PiBudW1iZXIgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgaWYgKHN0YXRpc3RpY3MpIHtcbiAgICBpbnYgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICAvL3Nob3VsZCBjaGVjayBpZiBtb3JlIHRoYW4gYm90dG9tIGFuZCBsZXNzIHRoYW4gdG9wXG4gICAgICByZXR1cm4gcGFyYW1WYWx1ZXNbMl0gLyBNYXRoLnBvdygocGFyYW1WYWx1ZXNbMF0gLSB5KSAvICh5IC0gcGFyYW1WYWx1ZXNbM10pLCAxIC8gcGFyYW1WYWx1ZXNbMV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlcnJvciA9IGdldEludkVycm9yKGludiwgZGF0YSk7XG5cbiAgICBpbnZUb3AgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGludih5KTtcbiAgICAgIHJldHVybiB2YWx1ZSArIHN0dWRlbnRRICogZXJyb3IgLyBNYXRoLnNxcnQoZGF0YS55Lmxlbmd0aCk7XG4gICAgfTtcblxuICAgIGludkJvdHRvbSA9ICh5OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW52KHkpO1xuICAgICAgcmV0dXJuIHZhbHVlIC0gc3R1ZGVudFEgKiBlcnJvciAvIE1hdGguc3FydChkYXRhLnkubGVuZ3RoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGludmVydGVkOiBpbnYsXG4gICAgICBpbnZlcnRlZFRvcDogaW52VG9wLFxuICAgICAgaW52ZXJ0ZWRCb3R0b206IGludkJvdHRvbSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWdtb2lkKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBBID0gcGFyYW1zWzBdO1xuICBjb25zdCBCID0gcGFyYW1zWzFdO1xuICBjb25zdCBDID0gcGFyYW1zWzJdO1xuICBjb25zdCBEID0gcGFyYW1zWzNdO1xuICByZXR1cm4gKEQgKyAoQSAtIEQpIC8gKDEgKyBNYXRoLnBvdygxMCwgKHggLSBDKSAqIEIpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXIocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogeCArIEI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dMaW5lYXIocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogTWF0aC5sb2coeCArIDEpICsgQjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9uZW50aWFsKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBBID0gcGFyYW1zWzBdO1xuICBjb25zdCBCID0gcGFyYW1zWzFdO1xuICByZXR1cm4gQSAqIE1hdGguZXhwKHggKiBCKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJQTFJlZ3Jlc3Npb24ocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07IC8vIG1heFxuICBjb25zdCBCID0gcGFyYW1zWzFdOyAvLyBoaWxsXG4gIGNvbnN0IEMgPSBwYXJhbXNbMl07IC8vIElDNTAgLyBpbmZsZWN0aW9uIHBvaW50XG4gIGNvbnN0IEQgPSBwYXJhbXNbM107IC8vIG1pblxuICByZXR1cm4gRCArIChBIC0gRCkgLyAoMSArIE1hdGgucG93KHggLyBDLCBCKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VyUExEb3NlUmVzcG9uc2UocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IG1pbiA9IHBhcmFtc1szXTtcbiAgY29uc3QgbWF4ID0gcGFyYW1zWzBdO1xuICBjb25zdCBoaWxsID0gcGFyYW1zWzFdO1xuICBjb25zdCBpYzUwID0gcGFyYW1zWzJdO1xuICAvLyBiZSB3YXJlLCBJQzUwIHRoYXQgY29tZXMgaGVyZSBpcyBhbHJlYWR5IGxvZzEwIHRyYW5zZm9ybWVkXG4gIHJldHVybiBtaW4gKyAobWF4IC0gbWluKSAvICgxICsgTWF0aC5wb3coMTAsIGhpbGwgKiAoaWM1MCAtIHgpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdWMoZml0dGVkQ3VydmU6ICh4OiBudW1iZXIpID0+IG51bWJlciwgZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiBudW1iZXIge1xuICBsZXQgYXVjID0gMDtcbiAgY29uc3QgbWluID0gTWF0aC5taW4oLi4uZGF0YS54KTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4uZGF0YS54KTtcbiAgY29uc3QgaW50ZWdyYXRpb25TdGVwID0gKG1heCAtIG1pbikgLyAxMDAwO1xuICBmb3IgKGxldCB4ID0gbWluOyB4IDwgbWF4OyB4Kz0gaW50ZWdyYXRpb25TdGVwKVxuICAgIGF1YyArPSBpbnRlZ3JhdGlvblN0ZXAgKiBmaXR0ZWRDdXJ2ZSh4KTtcblxuICByZXR1cm4gYXVjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGV0Q29lZmYoZml0dGVkQ3VydmU6ICh4OiBudW1iZXIpID0+IG51bWJlciwgZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiBudW1iZXIge1xuICBsZXQgc3NSZXMgPSAwO1xuICBsZXQgc3NUb3QgPSAwO1xuICBjb25zdCB5TWVhbiA9IGpTdGF0Lm1lYW4oZGF0YS55KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLngubGVuZ3RoOyBpKyspIHtcbiAgICBzc1JlcyArPSBNYXRoLnBvdyhkYXRhLnlbaV0gLSBmaXR0ZWRDdXJ2ZShkYXRhLnhbaV0pLCAyKTtcbiAgICBzc1RvdCArPSBNYXRoLnBvdyhkYXRhLnlbaV0gLSB5TWVhbiwgMik7XG4gIH1cblxuICByZXR1cm4gMSAtIHNzUmVzIC8gc3NUb3Q7XG59XG5cbmZ1bmN0aW9uIGdldEludkVycm9yKHRhcmdldEZ1bmM6ICh5OiBudW1iZXIpID0+IG51bWJlciwgZGF0YToge3k6IG51bWJlcltdLCB4OiBudW1iZXJbXX0pOiBudW1iZXIge1xuICBsZXQgc2lnbWEgPSAwO1xuICBsZXQgc2lnbWFTcSA9IDA7XG4gIGNvbnN0IHJlc2lkdWVzU3F1YXJlcyA9IG5ldyBGbG9hdDMyQXJyYXkoZGF0YS55Lmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS55Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgb2JzID0gZGF0YS54W2ldO1xuICAgIGNvbnN0IHByZWQgPSB0YXJnZXRGdW5jKGRhdGEueVtpXSk7XG4gICAgcmVzaWR1ZXNTcXVhcmVzW2ldID0gTWF0aC5wb3cob2JzIC0gcHJlZCwgMik7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKylcbiAgICBzaWdtYVNxICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcblxuICBzaWdtYVNxIC89IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7XG4gIHNpZ21hID0gTWF0aC5zcXJ0KHNpZ21hU3EpO1xuXG4gIHJldHVybiBzaWdtYTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-data.d.ts","sourceRoot":"","sources":["fit-data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAIL,aAAa,EACb,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,UAAU,EAKX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAU,WAAW,EAC0B,MAAM,eAAe,CAAC;AAE5E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1B,CAAC;AAcF,mDAAmD;AACnD,wBAAgB,sBAAsB,IAAI,aAAa,CAKtD;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG;IAAC,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,CAQjF;
|
|
1
|
+
{"version":3,"file":"fit-data.d.ts","sourceRoot":"","sources":["fit-data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAIL,aAAa,EACb,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,UAAU,EAKX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAU,WAAW,EAC0B,MAAM,eAAe,CAAC;AAE5E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1B,CAAC;AAcF,mDAAmD;AACnD,wBAAgB,sBAAsB,IAAI,aAAa,CAKtD;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG;IAAC,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAC,CAQjF;AA2GD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,EAAE,CAAC,IAAI,CAehE;AAED,kCAAkC;AAClC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAEpE;AAED,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAIxF;AAED,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,GACjG;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,CAI3B;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EACzG,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAMnC;AAED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAC3G,UAAU,CAAC,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,sBAAsB,CAU1F;AAED,gCAAgC;AAChC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EACnH,UAAU,CAAC,EAAE,UAAU,GAAG,aAAa,CASxC"}
|
package/src/fit/fit-data.js
CHANGED
|
@@ -74,23 +74,55 @@ function changeBounds(bounds, chartOptions) {
|
|
|
74
74
|
let y = bounds.y;
|
|
75
75
|
let width = bounds.width;
|
|
76
76
|
let height = bounds.height;
|
|
77
|
+
let boundsAdjusted = false;
|
|
77
78
|
if (chartOptions.minX != null && chartOptions.minX <= bounds.maxX &&
|
|
78
79
|
((!chartOptions.logX) || (chartOptions.logX && chartOptions.minX > 0))) {
|
|
79
80
|
width += x - chartOptions.minX;
|
|
80
81
|
x = chartOptions.minX;
|
|
82
|
+
boundsAdjusted = true;
|
|
81
83
|
}
|
|
82
84
|
if (chartOptions.maxX != null && chartOptions.maxX >= bounds.minX &&
|
|
83
|
-
((!chartOptions.logX) || (chartOptions.logX && chartOptions.maxX > 0)))
|
|
85
|
+
((!chartOptions.logX) || (chartOptions.logX && chartOptions.maxX > 0))) {
|
|
84
86
|
width += chartOptions.maxX - (x + width);
|
|
87
|
+
boundsAdjusted = true;
|
|
88
|
+
}
|
|
85
89
|
if (chartOptions.minY != null && chartOptions.minY <= bounds.maxY &&
|
|
86
90
|
((!chartOptions.logY) || (chartOptions.logY && chartOptions.minY > 0))) {
|
|
87
91
|
height += y - chartOptions.minY;
|
|
88
92
|
y = chartOptions.minY;
|
|
93
|
+
boundsAdjusted = true;
|
|
89
94
|
}
|
|
90
95
|
if (chartOptions.maxY != null && chartOptions.maxY >= bounds.minY &&
|
|
91
|
-
((!chartOptions.logY) || (chartOptions.logY && chartOptions.maxY > 0)))
|
|
96
|
+
((!chartOptions.logY) || (chartOptions.logY && chartOptions.maxY > 0))) {
|
|
92
97
|
height += chartOptions.maxY - (y + height);
|
|
93
|
-
|
|
98
|
+
boundsAdjusted = true;
|
|
99
|
+
}
|
|
100
|
+
return boundsAdjusted ? new DG.Rect(x, y, width, height) : padBounds(bounds, chartOptions);
|
|
101
|
+
}
|
|
102
|
+
function padBounds(bounds, chartOptions, ratio = 0.05) {
|
|
103
|
+
let left = bounds.left;
|
|
104
|
+
let right = bounds.right;
|
|
105
|
+
let top = bounds.top;
|
|
106
|
+
let bottom = bounds.bottom;
|
|
107
|
+
if (chartOptions.logX) {
|
|
108
|
+
left = left > 0 ? left / (1 + ratio) : left;
|
|
109
|
+
right = right * (1 + ratio);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
const dx = bounds.width * ratio;
|
|
113
|
+
left -= dx;
|
|
114
|
+
right += dx;
|
|
115
|
+
}
|
|
116
|
+
if (chartOptions.logY) {
|
|
117
|
+
top = top > 0 ? top / (1 + ratio) : top;
|
|
118
|
+
bottom = bottom * (1 + ratio);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const dy = bounds.height * ratio;
|
|
122
|
+
top -= dy;
|
|
123
|
+
bottom += dy;
|
|
124
|
+
}
|
|
125
|
+
return new DG.Rect(left, top, right - left, bottom - top);
|
|
94
126
|
}
|
|
95
127
|
/** Returns the bounds of an {@link IFitChartData} object */
|
|
96
128
|
export function getChartBounds(chartData) {
|
|
@@ -107,7 +139,7 @@ export function getChartBounds(chartData) {
|
|
|
107
139
|
continue;
|
|
108
140
|
bounds = bounds.union(DG.Rect.fromXYArrays(xs, ys));
|
|
109
141
|
}
|
|
110
|
-
return o ? changeBounds(bounds, o) : bounds;
|
|
142
|
+
return o ? changeBounds(bounds, o) : padBounds(bounds, o);
|
|
111
143
|
}
|
|
112
144
|
}
|
|
113
145
|
/** Returns series fit function */
|
|
@@ -159,4 +191,4 @@ export function getSeriesStatistics(series, fitFunc, dataPoints, logOptions) {
|
|
|
159
191
|
params.set(series.parameters);
|
|
160
192
|
return getStatistics(dataPoints, params, fitFunc.y, true);
|
|
161
193
|
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixjQUFjLEVBT2Qsc0JBQXNCLEdBSXZCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBQyxPQUFPLEVBQWUsbUJBQW1CLEVBQy9DLDJCQUEyQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUTVFLGlGQUFpRjtBQUNqRixTQUFTLG9CQUFvQixDQUFDLFVBQXlCO0lBQ3JELE1BQU0sQ0FBQyxHQUFRLEVBQUUsQ0FBQztJQUNsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRTtRQUMxQixJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssSUFBSTtZQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7S0FDOUI7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxxSEFBcUg7QUFDckgsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTztRQUNMLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQztRQUMxRCxhQUFhLEVBQUUsb0JBQW9CLENBQUMsbUJBQW1CLENBQUM7S0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRCx5REFBeUQ7QUFDekQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFtQjtJQUNqRCxNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7SUFDeEIsTUFBTSxFQUFFLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JCO0lBQ0QsT0FBTyxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsU0FBUyxTQUFTLENBQUMsTUFBa0M7SUFDbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLFNBQVMsZUFBZSxDQUFDLElBQWdDO0lBQ3ZELE1BQU0sWUFBWSxHQUErQixFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQ2hFLE1BQU0sYUFBYSxHQUErQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUNuRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsU0FBUztTQUNWO1FBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDL0MsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9CO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFFL0MsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELGlEQUFpRDtBQUNqRCxTQUFTLHNCQUFzQixDQUFDLFVBQTBCO0lBQ3hELElBQUksVUFBVSxFQUFFO1FBQ2QsSUFBSSxVQUFVLENBQUMsR0FBRyxLQUFLLFNBQVM7WUFDOUIsVUFBVSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ2hDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsRDtLQUNGO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE1BQWUsRUFBRSxZQUE4QjtJQUNuRSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN6QixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRTNCLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtRQUMvRCxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN4RSxLQUFLLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7S0FDdkI7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUk7UUFDL0QsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLEtBQUssSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzNDLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtRQUMvRCxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN4RSxNQUFNLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDaEMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7S0FDdkI7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUk7UUFDL0QsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBRTdDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1B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RUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7XG4gIEZpdEVycm9yTW9kZWwsXG4gIGdldFN0YXRpc3RpY3MsXG4gIGdldEZpdHRlZEN1cnZlLFxuICBGaXRTdGF0aXN0aWNzLFxuICBGaXRDb25maWRlbmNlSW50ZXJ2YWxzLFxuICBGaXRDdXJ2ZSxcbiAgSUZpdFBvaW50LFxuICBJRml0Q2hhcnREYXRhLFxuICBJRml0U2VyaWVzLFxuICBmaXRDaGFydERhdGFQcm9wZXJ0aWVzLFxuICBGaXRQYXJhbUJvdW5kcyxcbiAgSUZpdENoYXJ0T3B0aW9ucyxcbiAgRml0RXJyb3JNb2RlbFR5cGUsXG59IGZyb20gJy4vZml0LWN1cnZlJztcbmltcG9ydCB7Zml0RGF0YSwgRml0RnVuY3Rpb24sIGZpdFNlcmllc1Byb3BlcnRpZXMsXG4gIGdldEN1cnZlQ29uZmlkZW5jZUludGVydmFscywgZ2V0T3JDcmVhdGVGaXRGdW5jdGlvbn0gZnJvbSAnLi9uZXctZml0LUFQSSc7XG5cbmV4cG9ydCB0eXBlIExvZ09wdGlvbnMgPSB7XG4gIGxvZ1g6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIGxvZ1k6IGJvb2xlYW4gfCB1bmRlZmluZWRcbn07XG5cblxuLyoqIENyZWF0ZXMgbmV3IG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlcyBzcGVjaWZpZWQgaW4ge0BsaW5rIHByb3BlcnRpZXN9ICovXG5mdW5jdGlvbiBjcmVhdGVGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdKTogYW55IHtcbiAgY29uc3QgbzogYW55ID0ge307XG4gIGZvciAoY29uc3QgcCBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgaWYgKHAuZGVmYXVsdFZhbHVlICE9PSBudWxsKVxuICAgICAgb1twLm5hbWVdID0gcC5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgcmV0dXJuIG87XG59XG5cbi8vIFRPRE86IHNldCBjb2x1bW4gd2l0aCBmaXQgcmVhZG9ubHkgdmFsdWUgKGluIGRldGVjdG9ycykgLSB0cnkgdG8gb25seSBzaG93IGNoYXJ0IC0gcmVtb3ZlIGVkaXRhYmxlIG9yIHByZXZlbnQgaXQ/P1xuLyoqIENyZWF0ZXMgZGVmYXVsdCB7QGxpbmsgSUZpdENoYXJ0RGF0YX0gb2JqZWN0ICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdENoYXJ0RGF0YSgpOiBJRml0Q2hhcnREYXRhIHtcbiAgcmV0dXJuIHtcbiAgICBjaGFydE9wdGlvbnM6IGNyZWF0ZUZyb21Qcm9wZXJ0aWVzKGZpdENoYXJ0RGF0YVByb3BlcnRpZXMpLFxuICAgIHNlcmllc09wdGlvbnM6IGNyZWF0ZUZyb21Qcm9wZXJ0aWVzKGZpdFNlcmllc1Byb3BlcnRpZXMpLFxuICB9O1xufVxuXG4vKiogUmV0dXJucyBwb2ludHMgYXJyYXlzIGZyb20ge0BsaW5rIElGaXRQb2ludH0gYXJyYXkgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2ludHNBcnJheXMocG9pbnRzOiBJRml0UG9pbnRbXSk6IHt4czogbnVtYmVyW10sIHlzOiBudW1iZXJbXX0ge1xuICBjb25zdCB4czogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgeXM6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgeHNbaV0gPSBwb2ludHNbaV0ueDtcbiAgICB5c1tpXSA9IHBvaW50c1tpXS55O1xuICB9XG4gIHJldHVybiB7eHM6IHhzLCB5czogeXN9O1xufVxuXG4vKiogUmV0dXJucyBtZWRpYW4gZnJvbSB3aXRoaW4gbXVsdGlwbGUgcG9pbnRzICovXG5mdW5jdGlvbiBnZXRNZWRpYW4ocG9pbnRzOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGNvbnN0IG1pZCA9IE1hdGguZmxvb3IocG9pbnRzLnkubGVuZ3RoIC8gMik7XG4gIGNvbnN0IHNvcnRlZFBvaW50cyA9IHBvaW50cy55LnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgY29uc3QgbWVkaWFuID0gc29ydGVkUG9pbnRzLmxlbmd0aCAlIDIgPT09IDAgPyAoc29ydGVkUG9pbnRzW21pZCAtIDFdICsgc29ydGVkUG9pbnRzW21pZF0pIC8gMiA6IHNvcnRlZFBvaW50c1ttaWRdO1xuICByZXR1cm4gbWVkaWFuO1xufVxuXG4vKiogUmV0dXJucyBtZWRpYW4gcG9pbnRzIGZyb20gd2l0aGluIG11bHRpcGxlIHBvaW50cyB3aXRoIHRoZSBzYW1lIHguICovXG5mdW5jdGlvbiBnZXRNZWRpYW5Qb2ludHMoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSB7XG4gIGNvbnN0IG1lZGlhblBvaW50czoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0gPSB7eDogW10sIHk6IFtdfTtcbiAgY29uc3QgY3VycmVudFBvaW50czoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0gPSB7eDogW2RhdGEueFswXV0sIHk6IFtkYXRhLnlbMF1dfTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBkYXRhLngubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZGF0YS54W2ldID09PSBjdXJyZW50UG9pbnRzLnhbMF0pIHtcbiAgICAgIGN1cnJlbnRQb2ludHMueFtjdXJyZW50UG9pbnRzLngubGVuZ3RoXSA9IGRhdGEueFtpXTtcbiAgICAgIGN1cnJlbnRQb2ludHMueVtjdXJyZW50UG9pbnRzLnkubGVuZ3RoXSA9IGRhdGEueVtpXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBtZWRpYW4gPSBnZXRNZWRpYW4oY3VycmVudFBvaW50cyk7XG4gICAgbWVkaWFuUG9pbnRzLnhbbWVkaWFuUG9pbnRzLngubGVuZ3RoXSA9IGN1cnJlbnRQb2ludHMueFswXTtcbiAgICBtZWRpYW5Qb2ludHMueVttZWRpYW5Qb2ludHMueS5sZW5ndGhdID0gbWVkaWFuO1xuICAgIGN1cnJlbnRQb2ludHMueCA9IFtkYXRhLnhbaV1dO1xuICAgIGN1cnJlbnRQb2ludHMueSA9IFtkYXRhLnlbaV1dO1xuICB9XG4gIGNvbnN0IG1lZGlhbiA9IGdldE1lZGlhbihjdXJyZW50UG9pbnRzKTtcbiAgbWVkaWFuUG9pbnRzLnhbbWVkaWFuUG9pbnRzLngubGVuZ3RoXSA9IGN1cnJlbnRQb2ludHMueFswXTtcbiAgbWVkaWFuUG9pbnRzLnlbbWVkaWFuUG9pbnRzLnkubGVuZ3RoXSA9IG1lZGlhbjtcblxuICByZXR1cm4gbWVkaWFuUG9pbnRzO1xufVxuXG4vKiogUmV0dXJucyBsb2dhcml0aG1pYyBJQzUwIHBhcmFtZXRlciBib3VuZHMuICovXG5mdW5jdGlvbiBsb2dJQzUwUGFyYW1ldGVyQm91bmRzKGljNTBCb3VuZHM6IEZpdFBhcmFtQm91bmRzKTogRml0UGFyYW1Cb3VuZHMge1xuICBpZiAoaWM1MEJvdW5kcykge1xuICAgIGlmIChpYzUwQm91bmRzLm1heCAhPT0gdW5kZWZpbmVkKVxuICAgICAgaWM1MEJvdW5kcy5tYXggPSBNYXRoLmxvZzEwKGljNTBCb3VuZHMubWF4KTtcbiAgICBpZiAoaWM1MEJvdW5kcy5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWM1MEJvdW5kcy5taW4gPSBpYzUwQm91bmRzLm1pbiA9PT0gMCA/XG4gICAgICAgIC1OdW1iZXIuTUFYX1ZBTFVFIDogTWF0aC5sb2cxMChpYzUwQm91bmRzLm1pbik7XG4gICAgfVxuICB9XG4gIHJldHVybiBpYzUwQm91bmRzO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VCb3VuZHMoYm91bmRzOiBERy5SZWN0LCBjaGFydE9wdGlvbnM6IElGaXRDaGFydE9wdGlvbnMpOiBERy5SZWN0IHtcbiAgbGV0IHggPSBib3VuZHMueDtcbiAgbGV0IHkgPSBib3VuZHMueTtcbiAgbGV0IHdpZHRoID0gYm91bmRzLndpZHRoO1xuICBsZXQgaGVpZ2h0ID0gYm91bmRzLmhlaWdodDtcblxuICBpZiAoY2hhcnRPcHRpb25zLm1pblggIT0gbnVsbCAmJiBjaGFydE9wdGlvbnMubWluWCA8PSBib3VuZHMubWF4WCAmJlxuICAgICgoIWNoYXJ0T3B0aW9ucy5sb2dYKSB8fCAoY2hhcnRPcHRpb25zLmxvZ1ggJiYgY2hhcnRPcHRpb25zLm1pblggPiAwKSkpIHtcbiAgICB3aWR0aCArPSB4IC0gY2hhcnRPcHRpb25zLm1pblg7XG4gICAgeCA9IGNoYXJ0T3B0aW9ucy5taW5YO1xuICB9XG4gIGlmIChjaGFydE9wdGlvbnMubWF4WCAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5tYXhYID49IGJvdW5kcy5taW5YICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1gpIHx8IChjaGFydE9wdGlvbnMubG9nWCAmJiBjaGFydE9wdGlvbnMubWF4WCA+IDApKSlcbiAgICB3aWR0aCArPSBjaGFydE9wdGlvbnMubWF4WCAtICh4ICsgd2lkdGgpO1xuICBpZiAoY2hhcnRPcHRpb25zLm1pblkgIT0gbnVsbCAmJiBjaGFydE9wdGlvbnMubWluWSA8PSBib3VuZHMubWF4WSAmJlxuICAgICgoIWNoYXJ0T3B0aW9ucy5sb2dZKSB8fCAoY2hhcnRPcHRpb25zLmxvZ1kgJiYgY2hhcnRPcHRpb25zLm1pblkgPiAwKSkpIHtcbiAgICBoZWlnaHQgKz0geSAtIGNoYXJ0T3B0aW9ucy5taW5ZO1xuICAgIHkgPSBjaGFydE9wdGlvbnMubWluWTtcbiAgfVxuICBpZiAoY2hhcnRPcHRpb25zLm1heFkgIT0gbnVsbCAmJiBjaGFydE9wdGlvbnMubWF4WSA+PSBib3VuZHMubWluWSAmJlxuICAgICgoIWNoYXJ0T3B0aW9ucy5sb2dZKSB8fCAoY2hhcnRPcHRpb25zLmxvZ1kgJiYgY2hhcnRPcHRpb25zLm1heFkgPiAwKSkpXG4gICAgaGVpZ2h0ICs9IGNoYXJ0T3B0aW9ucy5tYXhZIC0gKHkgKyBoZWlnaHQpO1xuXG4gIHJldHVybiBuZXcgREcuUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbn1cblxuLyoqIFJldHVybnMgdGhlIGJvdW5kcyBvZiBhbiB7QGxpbmsgSUZpdENoYXJ0RGF0YX0gb2JqZWN0ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhcnRCb3VuZHMoY2hhcnREYXRhOiBJRml0Q2hhcnREYXRhKTogREcuUmVjdCB7XG4gIGNvbnN0IG8gPSBjaGFydERhdGEuY2hhcnRPcHRpb25zO1xuICBpZiAoIWNoYXJ0RGF0YS5zZXJpZXM/Lmxlbmd0aCB8fCBjaGFydERhdGEuc2VyaWVzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbmV3IERHLlJlY3QoMCwgMCwgMSwgMSk7XG4gIGVsc2Uge1xuICAgIGNvbnN0IHt4cywgeXN9ID0gZ2V0UG9pbnRzQXJyYXlzKGNoYXJ0RGF0YS5zZXJpZXNbMF0ucG9pbnRzKTtcbiAgICBsZXQgYm91bmRzID0gREcuUmVjdC5mcm9tWFlBcnJheXMoeHMsIHlzKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYXJ0RGF0YS5zZXJpZXMhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB7eHMsIHlzfSA9IGdldFBvaW50c0FycmF5cyhjaGFydERhdGEuc2VyaWVzW2ldLnBvaW50cyk7XG4gICAgICBpZiAoeHMuc29tZSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSB8fCB5cy5zb21lKCh5KSA9PiB5ID09PSB1bmRlZmluZWQpKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGJvdW5kcyA9IGJvdW5kcy51bmlvbihERy5SZWN0LmZyb21YWUFycmF5cyh4cywgeXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIG8gPyBjaGFuZ2VCb3VuZHMoYm91bmRzLCBvISk6IGJvdW5kcztcbiAgfVxufVxuXG4vKiogUmV0dXJucyBzZXJpZXMgZml0IGZ1bmN0aW9uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWVzRml0RnVuY3Rpb24oc2VyaWVzOiBJRml0U2VyaWVzKTogRml0RnVuY3Rpb24ge1xuICByZXR1cm4gZ2V0T3JDcmVhdGVGaXRGdW5jdGlvbihzZXJpZXMuZml0RnVuY3Rpb24hKTtcbn1cblxuLyoqIFJldHVybnMgYSBjdXJ2ZSBmdW5jdGlvbiwgZWl0aGVyIHVzaW5nIHRoZSBwcmUtY29tcHV0ZWQgcGFyYW1ldGVycyBvciBieSBmaXR0aW5nIG9uLXRoZS1mbHkgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJ2ZShzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uKTogKHg6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheShzZXJpZXMucGFyYW1ldGVycz8ubGVuZ3RoISk7XG4gIHBhcmFtcy5zZXQoc2VyaWVzLnBhcmFtZXRlcnMhKTtcbiAgcmV0dXJuIGdldEZpdHRlZEN1cnZlKGZpdEZ1bmMueSwgcGFyYW1zKTtcbn1cblxuLyoqIFJldHVybnMgdGhlIGRhdGEgcG9pbnRzIG9mIGEgc2VyaWVzIHdpdGggZmlsdGVyZWQgb3V0bGllcnMgYW5kIGxvZ2FyaXRobWljIGRhdGEgaWYgbmVlZGVkICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVBvaW50cyhzZXJpZXM6IElGaXRTZXJpZXMsIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zLCB1c2VyUGFyYW1zRmxhZz86IGJvb2xlYW4pOlxuICB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSB7XG4gIGNvbnN0IHBvaW50c1RvTWFwID0gdXNlclBhcmFtc0ZsYWcgPyBzZXJpZXMucG9pbnRzIDogc2VyaWVzLnBvaW50cy5maWx0ZXIoKHApID0+ICFwLm91dGxpZXIpO1xuICByZXR1cm4ge3g6IHBvaW50c1RvTWFwLm1hcCgocCkgPT4gbG9nT3B0aW9ucz8ubG9nWCA/IE1hdGgubG9nMTAocC54KSA6IHAueCksXG4gICAgeTogcG9pbnRzVG9NYXAubWFwKChwKSA9PiBsb2dPcHRpb25zPy5sb2dZID8gTWF0aC5sb2cxMChwLnkpIDogcC55KX07XG59XG5cbi8qKiBGaXRzIHRoZSBzZXJpZXMgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIHNlcmllcyBmaXR0aW5nIHNldHRpbmdzICovXG5leHBvcnQgZnVuY3Rpb24gZml0U2VyaWVzKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24sIGRhdGFQb2ludHM/OiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSxcbiAgbG9nT3B0aW9ucz86IExvZ09wdGlvbnMpOiBGaXRDdXJ2ZSB7XG4gIGRhdGFQb2ludHMgPz89IGdldERhdGFQb2ludHMoc2VyaWVzLCBsb2dPcHRpb25zLCBmYWxzZSk7XG4gIGlmIChzZXJpZXMucGFyYW1ldGVyQm91bmRzICYmIGxvZ09wdGlvbnM/LmxvZ1gpXG4gICAgc2VyaWVzLnBhcmFtZXRlckJvdW5kc1syXSA9IGxvZ0lDNTBQYXJhbWV0ZXJCb3VuZHMoc2VyaWVzLnBhcmFtZXRlckJvdW5kc1syXSk7XG4gIHJldHVybiBmaXREYXRhKGdldE1lZGlhblBvaW50cyhkYXRhUG9pbnRzKSwgZml0RnVuYywgc2VyaWVzLmVycm9yTW9kZWwgPz8gRml0RXJyb3JNb2RlbC5DT05TVEFOVCBhcyBGaXRFcnJvck1vZGVsVHlwZSxcbiAgICBzZXJpZXMucGFyYW1ldGVyQm91bmRzKTtcbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZnVuY3Rpb25zICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWVzQ29uZmlkZW5jZUludGVydmFsKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24sIHVzZXJQYXJhbXNGbGFnOiBib29sZWFuLFxuICBkYXRhUG9pbnRzPzoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zKTogRml0Q29uZmlkZW5jZUludGVydmFscyB7XG4gIGRhdGFQb2ludHMgPz89IGdldERhdGFQb2ludHMoc2VyaWVzLCBsb2dPcHRpb25zLCB1c2VyUGFyYW1zRmxhZyk7XG4gIGlmICghc2VyaWVzLnBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBmaXRTZXJpZXMoc2VyaWVzLCBmaXRGdW5jLCBkYXRhUG9pbnRzKS5wYXJhbWV0ZXJzO1xuICAgIHNlcmllcy5wYXJhbWV0ZXJzID0gWy4uLnBhcmFtc107XG4gIH1cbiAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheShzZXJpZXMucGFyYW1ldGVycz8ubGVuZ3RoISk7XG4gIHBhcmFtcy5zZXQoc2VyaWVzLnBhcmFtZXRlcnMhKTtcbiAgcmV0dXJuIGdldEN1cnZlQ29uZmlkZW5jZUludGVydmFscyhkYXRhUG9pbnRzLCBwYXJhbXMsIGZpdEZ1bmMueSwgMC4wNSxcbiAgICBzZXJpZXMuZXJyb3JNb2RlbCA/PyBGaXRFcnJvck1vZGVsLkNPTlNUQU5UIGFzIEZpdEVycm9yTW9kZWxUeXBlKTtcbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXJpZXNTdGF0aXN0aWNzKHNlcmllczogSUZpdFNlcmllcywgZml0RnVuYzogRml0RnVuY3Rpb24sIGRhdGFQb2ludHM/OiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSxcbiAgbG9nT3B0aW9ucz86IExvZ09wdGlvbnMpOiBGaXRTdGF0aXN0aWNzIHtcbiAgZGF0YVBvaW50cyA/Pz0gZ2V0RGF0YVBvaW50cyhzZXJpZXMsIGxvZ09wdGlvbnMsIGZhbHNlKTtcbiAgaWYgKCFzZXJpZXMucGFyYW1ldGVycykge1xuICAgIGNvbnN0IHBhcmFtcyA9IGZpdFNlcmllcyhzZXJpZXMsIGZpdEZ1bmMsIGRhdGFQb2ludHMpLnBhcmFtZXRlcnM7XG4gICAgc2VyaWVzLnBhcmFtZXRlcnMgPSBbLi4ucGFyYW1zXTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KHNlcmllcy5wYXJhbWV0ZXJzPy5sZW5ndGghKTtcbiAgcGFyYW1zLnNldChzZXJpZXMucGFyYW1ldGVycyEpO1xuICByZXR1cm4gZ2V0U3RhdGlzdGljcyhkYXRhUG9pbnRzLCBwYXJhbXMsIGZpdEZ1bmMueSwgdHJ1ZSk7XG59XG4iXX0=
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixjQUFjLEVBT2Qsc0JBQXNCLEdBSXZCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBQyxPQUFPLEVBQWUsbUJBQW1CLEVBQy9DLDJCQUEyQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUTVFLGlGQUFpRjtBQUNqRixTQUFTLG9CQUFvQixDQUFDLFVBQXlCO0lBQ3JELE1BQU0sQ0FBQyxHQUFRLEVBQUUsQ0FBQztJQUNsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRTtRQUMxQixJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssSUFBSTtZQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7S0FDOUI7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxxSEFBcUg7QUFDckgsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTztRQUNMLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQztRQUMxRCxhQUFhLEVBQUUsb0JBQW9CLENBQUMsbUJBQW1CLENBQUM7S0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRCx5REFBeUQ7QUFDekQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFtQjtJQUNqRCxNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7SUFDeEIsTUFBTSxFQUFFLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JCO0lBQ0QsT0FBTyxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsU0FBUyxTQUFTLENBQUMsTUFBa0M7SUFDbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLFNBQVMsZUFBZSxDQUFDLElBQWdDO0lBQ3ZELE1BQU0sWUFBWSxHQUErQixFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQ2hFLE1BQU0sYUFBYSxHQUErQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUNuRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsU0FBUztTQUNWO1FBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDL0MsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9CO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksQ0FB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LElBQUksWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMzQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM3RixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsTUFBZSxFQUFFLFlBQThCLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDOUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3pCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDckIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUUzQixJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFDckIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7S0FDN0I7U0FDSTtRQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLElBQUksRUFBRSxDQUFDO0tBQ2I7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFDckIsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMs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QUFVLEVBQUU7UUFDdEIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBQSxNQUFNLENBQUMsVUFBVSwwQ0FBRSxNQUFPLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFXLENBQUMsQ0FBQztJQUMvQixPQUFPLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1xuICBGaXRFcnJvck1vZGVsLFxuICBnZXRTdGF0aXN0aWNzLFxuICBnZXRGaXR0ZWRDdXJ2ZSxcbiAgRml0U3RhdGlzdGljcyxcbiAgRml0Q29uZmlkZW5jZUludGVydmFscyxcbiAgRml0Q3VydmUsXG4gIElGaXRQb2ludCxcbiAgSUZpdENoYXJ0RGF0YSxcbiAgSUZpdFNlcmllcyxcbiAgZml0Q2hhcnREYXRhUHJvcGVydGllcyxcbiAgRml0UGFyYW1Cb3VuZHMsXG4gIElGaXRDaGFydE9wdGlvbnMsXG4gIEZpdEVycm9yTW9kZWxUeXBlLFxufSBmcm9tICcuL2ZpdC1jdXJ2ZSc7XG5pbXBvcnQge2ZpdERhdGEsIEZpdEZ1bmN0aW9uLCBmaXRTZXJpZXNQcm9wZXJ0aWVzLFxuICBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMsIGdldE9yQ3JlYXRlRml0RnVuY3Rpb259IGZyb20gJy4vbmV3LWZpdC1BUEknO1xuXG5leHBvcnQgdHlwZSBMb2dPcHRpb25zID0ge1xuICBsb2dYOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBsb2dZOiBib29sZWFuIHwgdW5kZWZpbmVkXG59O1xuXG5cbi8qKiBDcmVhdGVzIG5ldyBvYmplY3Qgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMgc3BlY2lmaWVkIGluIHtAbGluayBwcm9wZXJ0aWVzfSAqL1xuZnVuY3Rpb24gY3JlYXRlRnJvbVByb3BlcnRpZXMocHJvcGVydGllczogREcuUHJvcGVydHlbXSk6IGFueSB7XG4gIGNvbnN0IG86IGFueSA9IHt9O1xuICBmb3IgKGNvbnN0IHAgb2YgcHJvcGVydGllcykge1xuICAgIGlmIChwLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbClcbiAgICAgIG9bcC5uYW1lXSA9IHAuZGVmYXVsdFZhbHVlO1xuICB9XG4gIHJldHVybiBvO1xufVxuXG4vLyBUT0RPOiBzZXQgY29sdW1uIHdpdGggZml0IHJlYWRvbmx5IHZhbHVlIChpbiBkZXRlY3RvcnMpIC0gdHJ5IHRvIG9ubHkgc2hvdyBjaGFydCAtIHJlbW92ZSBlZGl0YWJsZSBvciBwcmV2ZW50IGl0Pz9cbi8qKiBDcmVhdGVzIGRlZmF1bHQge0BsaW5rIElGaXRDaGFydERhdGF9IG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRDaGFydERhdGEoKTogSUZpdENoYXJ0RGF0YSB7XG4gIHJldHVybiB7XG4gICAgY2hhcnRPcHRpb25zOiBjcmVhdGVGcm9tUHJvcGVydGllcyhmaXRDaGFydERhdGFQcm9wZXJ0aWVzKSxcbiAgICBzZXJpZXNPcHRpb25zOiBjcmVhdGVGcm9tUHJvcGVydGllcyhmaXRTZXJpZXNQcm9wZXJ0aWVzKSxcbiAgfTtcbn1cblxuLyoqIFJldHVybnMgcG9pbnRzIGFycmF5cyBmcm9tIHtAbGluayBJRml0UG9pbnR9IGFycmF5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRzQXJyYXlzKHBvaW50czogSUZpdFBvaW50W10pOiB7eHM6IG51bWJlcltdLCB5czogbnVtYmVyW119IHtcbiAgY29uc3QgeHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IHlzOiBudW1iZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHhzW2ldID0gcG9pbnRzW2ldLng7XG4gICAgeXNbaV0gPSBwb2ludHNbaV0ueTtcbiAgfVxuICByZXR1cm4ge3hzOiB4cywgeXM6IHlzfTtcbn1cblxuLyoqIFJldHVybnMgbWVkaWFuIGZyb20gd2l0aGluIG11bHRpcGxlIHBvaW50cyAqL1xuZnVuY3Rpb24gZ2V0TWVkaWFuKHBvaW50czoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiBudW1iZXIge1xuICBjb25zdCBtaWQgPSBNYXRoLmZsb29yKHBvaW50cy55Lmxlbmd0aCAvIDIpO1xuICBjb25zdCBzb3J0ZWRQb2ludHMgPSBwb2ludHMueS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gIGNvbnN0IG1lZGlhbiA9IHNvcnRlZFBvaW50cy5sZW5ndGggJSAyID09PSAwID8gKHNvcnRlZFBvaW50c1ttaWQgLSAxXSArIHNvcnRlZFBvaW50c1ttaWRdKSAvIDIgOiBzb3J0ZWRQb2ludHNbbWlkXTtcbiAgcmV0dXJuIG1lZGlhbjtcbn1cblxuLyoqIFJldHVybnMgbWVkaWFuIHBvaW50cyBmcm9tIHdpdGhpbiBtdWx0aXBsZSBwb2ludHMgd2l0aCB0aGUgc2FtZSB4LiAqL1xuZnVuY3Rpb24gZ2V0TWVkaWFuUG9pbnRzKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119KToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0ge1xuICBjb25zdCBtZWRpYW5Qb2ludHM6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119ID0ge3g6IFtdLCB5OiBbXX07XG4gIGNvbnN0IGN1cnJlbnRQb2ludHM6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119ID0ge3g6IFtkYXRhLnhbMF1dLCB5OiBbZGF0YS55WzBdXX07XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGRhdGEueFtpXSA9PT0gY3VycmVudFBvaW50cy54WzBdKSB7XG4gICAgICBjdXJyZW50UG9pbnRzLnhbY3VycmVudFBvaW50cy54Lmxlbmd0aF0gPSBkYXRhLnhbaV07XG4gICAgICBjdXJyZW50UG9pbnRzLnlbY3VycmVudFBvaW50cy55Lmxlbmd0aF0gPSBkYXRhLnlbaV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbWVkaWFuID0gZ2V0TWVkaWFuKGN1cnJlbnRQb2ludHMpO1xuICAgIG1lZGlhblBvaW50cy54W21lZGlhblBvaW50cy54Lmxlbmd0aF0gPSBjdXJyZW50UG9pbnRzLnhbMF07XG4gICAgbWVkaWFuUG9pbnRzLnlbbWVkaWFuUG9pbnRzLnkubGVuZ3RoXSA9IG1lZGlhbjtcbiAgICBjdXJyZW50UG9pbnRzLnggPSBbZGF0YS54W2ldXTtcbiAgICBjdXJyZW50UG9pbnRzLnkgPSBbZGF0YS55W2ldXTtcbiAgfVxuICBjb25zdCBtZWRpYW4gPSBnZXRNZWRpYW4oY3VycmVudFBvaW50cyk7XG4gIG1lZGlhblBvaW50cy54W21lZGlhblBvaW50cy54Lmxlbmd0aF0gPSBjdXJyZW50UG9pbnRzLnhbMF07XG4gIG1lZGlhblBvaW50cy55W21lZGlhblBvaW50cy55Lmxlbmd0aF0gPSBtZWRpYW47XG5cbiAgcmV0dXJuIG1lZGlhblBvaW50cztcbn1cblxuLyoqIFJldHVybnMgbG9nYXJpdGhtaWMgSUM1MCBwYXJhbWV0ZXIgYm91bmRzLiAqL1xuZnVuY3Rpb24gbG9nSUM1MFBhcmFtZXRlckJvdW5kcyhpYzUwQm91bmRzOiBGaXRQYXJhbUJvdW5kcyk6IEZpdFBhcmFtQm91bmRzIHtcbiAgaWYgKGljNTBCb3VuZHMpIHtcbiAgICBpZiAoaWM1MEJvdW5kcy5tYXggIT09IHVuZGVmaW5lZClcbiAgICAgIGljNTBCb3VuZHMubWF4ID0gTWF0aC5sb2cxMChpYzUwQm91bmRzLm1heCk7XG4gICAgaWYgKGljNTBCb3VuZHMubWluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGljNTBCb3VuZHMubWluID0gaWM1MEJvdW5kcy5taW4gPT09IDAgP1xuICAgICAgICAtTnVtYmVyLk1BWF9WQUxVRSA6IE1hdGgubG9nMTAoaWM1MEJvdW5kcy5taW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaWM1MEJvdW5kcztcbn1cblxuZnVuY3Rpb24gY2hhbmdlQm91bmRzKGJvdW5kczogREcuUmVjdCwgY2hhcnRPcHRpb25zOiBJRml0Q2hhcnRPcHRpb25zKTogREcuUmVjdCB7XG4gIGxldCB4ID0gYm91bmRzLng7XG4gIGxldCB5ID0gYm91bmRzLnk7XG4gIGxldCB3aWR0aCA9IGJvdW5kcy53aWR0aDtcbiAgbGV0IGhlaWdodCA9IGJvdW5kcy5oZWlnaHQ7XG4gIGxldCBib3VuZHNBZGp1c3RlZCA9IGZhbHNlO1xuXG4gIGlmIChjaGFydE9wdGlvbnMubWluWCAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5taW5YIDw9IGJvdW5kcy5tYXhYICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1gpIHx8IChjaGFydE9wdGlvbnMubG9nWCAmJiBjaGFydE9wdGlvbnMubWluWCA+IDApKSkge1xuICAgIHdpZHRoICs9IHggLSBjaGFydE9wdGlvbnMubWluWDtcbiAgICB4ID0gY2hhcnRPcHRpb25zLm1pblg7XG4gICAgYm91bmRzQWRqdXN0ZWQgPSB0cnVlO1xuICB9XG4gIGlmIChjaGFydE9wdGlvbnMubWF4WCAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5tYXhYID49IGJvdW5kcy5taW5YICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1gpIHx8IChjaGFydE9wdGlvbnMubG9nWCAmJiBjaGFydE9wdGlvbnMubWF4WCA+IDApKSkge1xuICAgIHdpZHRoICs9IGNoYXJ0T3B0aW9ucy5tYXhYIC0gKHggKyB3aWR0aCk7XG4gICAgYm91bmRzQWRqdXN0ZWQgPSB0cnVlO1xuICB9XG4gIGlmIChjaGFydE9wdGlvbnMubWluWSAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5taW5ZIDw9IGJvdW5kcy5tYXhZICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1kpIHx8IChjaGFydE9wdGlvbnMubG9nWSAmJiBjaGFydE9wdGlvbnMubWluWSA+IDApKSkge1xuICAgIGhlaWdodCArPSB5IC0gY2hhcnRPcHRpb25zLm1pblk7XG4gICAgeSA9IGNoYXJ0T3B0aW9ucy5taW5ZO1xuICAgIGJvdW5kc0FkanVzdGVkID0gdHJ1ZTtcbiAgfVxuICBpZiAoY2hhcnRPcHRpb25zLm1heFkgIT0gbnVsbCAmJiBjaGFydE9wdGlvbnMubWF4WSA+PSBib3VuZHMubWluWSAmJlxuICAgICgoIWNoYXJ0T3B0aW9ucy5sb2dZKSB8fCAoY2hhcnRPcHRpb25zLmxvZ1kgJiYgY2hhcnRPcHRpb25zLm1heFkgPiAwKSkpIHtcbiAgICBoZWlnaHQgKz0gY2hhcnRPcHRpb25zLm1heFkgLSAoeSArIGhlaWdodCk7XG4gICAgYm91bmRzQWRqdXN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kc0FkanVzdGVkID8gbmV3IERHLlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkgOiBwYWRCb3VuZHMoYm91bmRzLCBjaGFydE9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBwYWRCb3VuZHMoYm91bmRzOiBERy5SZWN0LCBjaGFydE9wdGlvbnM6IElGaXRDaGFydE9wdGlvbnMsIHJhdGlvID0gMC4wNSk6IERHLlJlY3Qge1xuICBsZXQgbGVmdCA9IGJvdW5kcy5sZWZ0O1xuICBsZXQgcmlnaHQgPSBib3VuZHMucmlnaHQ7XG4gIGxldCB0b3AgPSBib3VuZHMudG9wO1xuICBsZXQgYm90dG9tID0gYm91bmRzLmJvdHRvbTtcblxuICBpZiAoY2hhcnRPcHRpb25zLmxvZ1gpIHtcbiAgICBsZWZ0ID0gbGVmdCA+IDAgPyBsZWZ0IC8gKDEgKyByYXRpbykgOiBsZWZ0O1xuICAgIHJpZ2h0ID0gcmlnaHQgKiAoMSArIHJhdGlvKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCBkeCA9IGJvdW5kcy53aWR0aCAqIHJhdGlvO1xuICAgIGxlZnQgLT0gZHg7XG4gICAgcmlnaHQgKz0gZHg7XG4gIH1cbiAgaWYgKGNoYXJ0T3B0aW9ucy5sb2dZKSB7XG4gICAgdG9wID0gdG9wID4gMCA/IHRvcCAvICgxICsgcmF0aW8pIDogdG9wO1xuICAgIGJvdHRvbSA9IGJvdHRvbSAqICgxICsgcmF0aW8pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IGR5ID0gYm91bmRzLmhlaWdodCAqIHJhdGlvO1xuICAgIHRvcCAtPSBkeTtcbiAgICBib3R0b20gKz0gZHk7XG4gIH1cblxuICByZXR1cm4gbmV3IERHLlJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCk7XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBib3VuZHMgb2YgYW4ge0BsaW5rIElGaXRDaGFydERhdGF9IG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0Qm91bmRzKGNoYXJ0RGF0YTogSUZpdENoYXJ0RGF0YSk6IERHLlJlY3Qge1xuICBjb25zdCBvID0gY2hhcnREYXRhLmNoYXJ0T3B0aW9ucztcbiAgaWYgKCFjaGFydERhdGEuc2VyaWVzPy5sZW5ndGggfHwgY2hhcnREYXRhLnNlcmllcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG5ldyBERy5SZWN0KDAsIDAsIDEsIDEpO1xuICBlbHNlIHtcbiAgICBjb25zdCB7eHMsIHlzfSA9IGdldFBvaW50c0FycmF5cyhjaGFydERhdGEuc2VyaWVzWzBdLnBvaW50cyk7XG4gICAgbGV0IGJvdW5kcyA9IERHLlJlY3QuZnJvbVhZQXJyYXlzKHhzLCB5cyk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGFydERhdGEuc2VyaWVzIS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qge3hzLCB5c30gPSBnZXRQb2ludHNBcnJheXMoY2hhcnREYXRhLnNlcmllc1tpXS5wb2ludHMpO1xuICAgICAgaWYgKHhzLnNvbWUoKHgpID0+IHggPT09IHVuZGVmaW5lZCkgfHwgeXMuc29tZSgoeSkgPT4geSA9PT0gdW5kZWZpbmVkKSlcbiAgICAgICAgY29udGludWU7XG4gICAgICBib3VuZHMgPSBib3VuZHMudW5pb24oREcuUmVjdC5mcm9tWFlBcnJheXMoeHMsIHlzKSk7XG4gICAgfVxuICAgIHJldHVybiBvID8gY2hhbmdlQm91bmRzKGJvdW5kcywgbyEpOiBwYWRCb3VuZHMoYm91bmRzLCBvISk7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIGZpdCBmdW5jdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmllc0ZpdEZ1bmN0aW9uKHNlcmllczogSUZpdFNlcmllcyk6IEZpdEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24oc2VyaWVzLmZpdEZ1bmN0aW9uISk7XG59XG5cbi8qKiBSZXR1cm5zIGEgY3VydmUgZnVuY3Rpb24sIGVpdGhlciB1c2luZyB0aGUgcHJlLWNvbXB1dGVkIHBhcmFtZXRlcnMgb3IgYnkgZml0dGluZyBvbi10aGUtZmx5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VydmUoc2VyaWVzOiBJRml0U2VyaWVzLCBmaXRGdW5jOiBGaXRGdW5jdGlvbik6ICh4OiBudW1iZXIpID0+IG51bWJlciB7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoc2VyaWVzLnBhcmFtZXRlcnM/Lmxlbmd0aCEpO1xuICBwYXJhbXMuc2V0KHNlcmllcy5wYXJhbWV0ZXJzISk7XG4gIHJldHVybiBnZXRGaXR0ZWRDdXJ2ZShmaXRGdW5jLnksIHBhcmFtcyk7XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBkYXRhIHBvaW50cyBvZiBhIHNlcmllcyB3aXRoIGZpbHRlcmVkIG91dGxpZXJzIGFuZCBsb2dhcml0aG1pYyBkYXRhIGlmIG5lZWRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFQb2ludHMoc2VyaWVzOiBJRml0U2VyaWVzLCBsb2dPcHRpb25zPzogTG9nT3B0aW9ucywgdXNlclBhcmFtc0ZsYWc/OiBib29sZWFuKTpcbiAge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0ge1xuICBjb25zdCBwb2ludHNUb01hcCA9IHVzZXJQYXJhbXNGbGFnID8gc2VyaWVzLnBvaW50cyA6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKTtcbiAgcmV0dXJuIHt4OiBwb2ludHNUb01hcC5tYXAoKHApID0+IGxvZ09wdGlvbnM/LmxvZ1ggPyBNYXRoLmxvZzEwKHAueCkgOiBwLngpLFxuICAgIHk6IHBvaW50c1RvTWFwLm1hcCgocCkgPT4gbG9nT3B0aW9ucz8ubG9nWSA/IE1hdGgubG9nMTAocC55KSA6IHAueSl9O1xufVxuXG4vKiogRml0cyB0aGUgc2VyaWVzIGRhdGEgYWNjb3JkaW5nIHRvIHRoZSBzZXJpZXMgZml0dGluZyBzZXR0aW5ncyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpdFNlcmllcyhzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCBkYXRhUG9pbnRzPzoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sXG4gIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zKTogRml0Q3VydmUge1xuICBkYXRhUG9pbnRzID8/PSBnZXREYXRhUG9pbnRzKHNlcmllcywgbG9nT3B0aW9ucywgZmFsc2UpO1xuICBpZiAoc2VyaWVzLnBhcmFtZXRlckJvdW5kcyAmJiBsb2dPcHRpb25zPy5sb2dYKVxuICAgIHNlcmllcy5wYXJhbWV0ZXJCb3VuZHNbMl0gPSBsb2dJQzUwUGFyYW1ldGVyQm91bmRzKHNlcmllcy5wYXJhbWV0ZXJCb3VuZHNbMl0pO1xuICByZXR1cm4gZml0RGF0YShnZXRNZWRpYW5Qb2ludHMoZGF0YVBvaW50cyksIGZpdEZ1bmMsIHNlcmllcy5lcnJvck1vZGVsID8/IEZpdEVycm9yTW9kZWwuQ09OU1RBTlQgYXMgRml0RXJyb3JNb2RlbFR5cGUsXG4gICAgc2VyaWVzLnBhcmFtZXRlckJvdW5kcyk7XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBjb25maWRlbmNlIGludGVydmFsIGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmllc0NvbmZpZGVuY2VJbnRlcnZhbChzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCB1c2VyUGFyYW1zRmxhZzogYm9vbGVhbixcbiAgZGF0YVBvaW50cz86IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBsb2dPcHRpb25zPzogTG9nT3B0aW9ucyk6IEZpdENvbmZpZGVuY2VJbnRlcnZhbHMge1xuICBkYXRhUG9pbnRzID8/PSBnZXREYXRhUG9pbnRzKHNlcmllcywgbG9nT3B0aW9ucywgdXNlclBhcmFtc0ZsYWcpO1xuICBpZiAoIXNlcmllcy5wYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgcGFyYW1zID0gZml0U2VyaWVzKHNlcmllcywgZml0RnVuYywgZGF0YVBvaW50cykucGFyYW1ldGVycztcbiAgICBzZXJpZXMucGFyYW1ldGVycyA9IFsuLi5wYXJhbXNdO1xuICB9XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoc2VyaWVzLnBhcmFtZXRlcnM/Lmxlbmd0aCEpO1xuICBwYXJhbXMuc2V0KHNlcmllcy5wYXJhbWV0ZXJzISk7XG4gIHJldHVybiBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMoZGF0YVBvaW50cywgcGFyYW1zLCBmaXRGdW5jLnksIDAuMDUsXG4gICAgc2VyaWVzLmVycm9yTW9kZWwgPz8gRml0RXJyb3JNb2RlbC5DT05TVEFOVCBhcyBGaXRFcnJvck1vZGVsVHlwZSk7XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBzdGF0aXN0aWNzICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWVzU3RhdGlzdGljcyhzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCBkYXRhUG9pbnRzPzoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sXG4gIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zKTogRml0U3RhdGlzdGljcyB7XG4gIGRhdGFQb2ludHMgPz89IGdldERhdGFQb2ludHMoc2VyaWVzLCBsb2dPcHRpb25zLCBmYWxzZSk7XG4gIGlmICghc2VyaWVzLnBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBmaXRTZXJpZXMoc2VyaWVzLCBmaXRGdW5jLCBkYXRhUG9pbnRzKS5wYXJhbWV0ZXJzO1xuICAgIHNlcmllcy5wYXJhbWV0ZXJzID0gWy4uLnBhcmFtc107XG4gIH1cbiAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheShzZXJpZXMucGFyYW1ldGVycz8ubGVuZ3RoISk7XG4gIHBhcmFtcy5zZXQoc2VyaWVzLnBhcmFtZXRlcnMhKTtcbiAgcmV0dXJuIGdldFN0YXRpc3RpY3MoZGF0YVBvaW50cywgcGFyYW1zLCBmaXRGdW5jLnksIHRydWUpO1xufVxuIl19
|
package/src/fit/new-fit-API.d.ts
CHANGED
|
@@ -173,6 +173,7 @@ export declare class FitSeries implements IFitSeries {
|
|
|
173
173
|
connectDots?: boolean;
|
|
174
174
|
showFitLine?: boolean;
|
|
175
175
|
showPoints?: string;
|
|
176
|
+
showOutliers?: boolean;
|
|
176
177
|
showCurveConfidenceInterval?: boolean;
|
|
177
178
|
errorModel?: FitErrorModelType;
|
|
178
179
|
clickToToggle?: boolean;
|
|
@@ -193,5 +194,11 @@ export declare function getCurveConfidenceIntervals(data: {
|
|
|
193
194
|
x: number[];
|
|
194
195
|
y: number[];
|
|
195
196
|
}, paramValues: Float32Array, curveFunction: (params: Float32Array, x: number) => number, confidenceLevel: number | undefined, errorModel: FitErrorModelType): FitConfidenceIntervals;
|
|
197
|
+
export interface FitCellOutlierToggleArgs {
|
|
198
|
+
gridCell: DG.GridCell;
|
|
199
|
+
series: IFitSeries;
|
|
200
|
+
seriesIdx: number;
|
|
201
|
+
pointIdx: number;
|
|
202
|
+
}
|
|
196
203
|
export {};
|
|
197
204
|
//# sourceMappingURL=new-fit-API.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-fit-API.d.ts","sourceRoot":"","sources":["new-fit-API.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAGL,UAAU,EACV,SAAS,EAST,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAAE,QAAQ,EAM3B,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AASrB,kCAAkC;AAClC,8BAAsB,WAAW,CAAC,CAAC,GAAG,GAAG;IACvC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAC5B,QAAQ,KAAK,cAAc,IAAI,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC;IAC3D,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IACnD,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CACtE;AAED,eAAO,MAAM,gBAAgB;;;;;;;CAOnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAErF,UAAU,IAAI;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,UAAW,SAAQ,IAAI;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,aAAc,SAAQ,UAAU;CAAG;AAE7C,UAAU,WAAY,SAAQ,IAAI;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAgB,SAAQ,IAAI;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,oBAAqB,SAAQ,IAAI;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8BAAsB,GAAI,YAAW,IAAI;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAElB,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAE5B,SAAS,aAAa,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS;CAKpD;AAED,qBAAa,aAAc,SAAQ,GAAG;gBACxB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS;IAGzC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED,cAAM,SAAU,SAAQ,GAAI,YAAW,UAAU;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAEW,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS;CAKhD;AAED,cAAM,YAAa,SAAQ,SAAU,YAAW,aAAa;IAC3D,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED,cAAM,UAAW,SAAQ,GAAI,YAAW,WAAW;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAEW,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;CAOjD;AAED,cAAM,cAAe,SAAQ,GAAI,YAAW,eAAe;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAEW,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS;CAKrD;AAED,cAAM,mBAAoB,SAAQ,GAAI,YAAW,oBAAoB;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAEW,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS;CAO1D;AASD,gDAAgD;AAChD,qBAAa,cAAe,SAAQ,WAAW,CAAC,SAAS,CAAC;IACxD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS;IAQ1D,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CAkB7D;AAED,iDAAiD;AACjD,qBAAa,eAAgB,SAAQ,WAAW,CAAC,UAAU,CAAC;IAC1D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU;IAU3D,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CAoB7D;AAED,4DAA4D;AAC5D,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAC9D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;IAQ7D,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CAK7D;AAED,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,cAAc,CAAC;IAClE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc;IAQ/D,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CAK7D;AAED,4EAA4E;AAC5E,qBAAa,wBAAyB,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IAC5E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,mBAAmB;IAUpE,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CAmB7D;AAED,qBAAa,0BAA2B,SAAQ,wBAAwB;IACtE,IAAa,IAAI,IAAI,MAAM,CAE1B;IAED,IAAa,cAAc,IAAI,MAAM,EAAE,CAEtC;IAEQ,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAGpD;AAED,8CAA8C;AAC9C,qBAAa,UAAW,SAAQ,WAAW,CAAC,GAAG,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAAW;gBAEtB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,EAC1E,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE;IAUzF,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,GAAG;IAMpD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1C,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;CAG7D;AAGD,eAAO,MAAM,YAAY,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;CAO1D,CAAC;AAEF,cAAM,YAAY;IAChB,MAAM,EAAE,SAAS,CAAC;gBAEN,MAAM,EAAE,SAAS;IAI7B,MAAM,IAAI,SAAS;IAKnB,SAAS,IAAI,YAAY;IAKzB,OAAO,IAAI,UAAU;IAKrB,WAAW,IAAI,cAAc;IAK7B,MAAM,IAAI,mBAAmB;IAK7B,kBAAkB,IAAI,mBAAmB;CAG1C;AAGD,qBAAa,SAAU,YAAW,UAAU;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;gBAER,MAAM,EAAE,SAAS,EAAE;IAK/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,oHAAoH;AACpH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"new-fit-API.d.ts","sourceRoot":"","sources":["new-fit-API.ts"],"names":[],"mappings":"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"}
|
package/src/fit/new-fit-API.js
CHANGED
|
@@ -346,6 +346,7 @@ export const fitSeriesProperties = [
|
|
|
346
346
|
DG.Property.js('showPoints', DG.TYPE.STRING, // rewrite description
|
|
347
347
|
{ category: 'Fitting', description: 'Whether points/candlesticks/none should be rendered',
|
|
348
348
|
defaultValue: 'points', choices: ['points', 'candlesticks', 'both'] }),
|
|
349
|
+
DG.Property.js('showOutliers', DG.TYPE.BOOL, { category: 'Fitting', defaultValue: true }),
|
|
349
350
|
DG.Property.js('showCurveConfidenceInterval', DG.TYPE.BOOL, { category: 'Fitting', description: 'Whether confidence intervals should be rendered', defaultValue: false,
|
|
350
351
|
//@ts-ignore
|
|
351
352
|
friendlyName: 'Confidence Interval' }),
|
|
@@ -546,11 +547,5 @@ export function getCurveConfidenceIntervals(data, paramValues, curveFunction, co
|
|
|
546
547
|
};
|
|
547
548
|
return { confidenceTop: top, confidenceBottom: bottom };
|
|
548
549
|
}
|
|
549
|
-
|
|
550
|
-
// {'x': 0, 'y': 0},
|
|
551
|
-
// {'x': 1, 'y': 0.5},
|
|
552
|
-
// {'x': 2, 'y': 1},
|
|
553
|
-
// {'x': 3, 'y': 10, 'outlier': true},
|
|
554
|
-
// {'x': 4, 'y': 0},
|
|
555
|
-
// ]);
|
|
556
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZpdC1BUEkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJuZXctZml0LUFQSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE1BQU0sRUFHTixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBTWEsTUFBTSxFQUFFLFdBQVcsRUFDaEQsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGFBQWEsRUFFYixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEQsc0JBQXNCO0FBQ3RCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRy9FLGtDQUFrQztBQUNsQyxNQUFNLE9BQWdCLFdBQVc7Q0FNaEM7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsWUFBWTtJQUN4QixXQUFXLEVBQUUsYUFBYTtJQUMxQixrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMscUJBQXFCLEVBQUUsbUJBQW1CO0NBQ2xDLENBQUM7QUFtQ1gsTUFBTSxPQUFnQixHQUFHO0lBT3ZCLFlBQXNCLE1BQVksRUFBRSxJQUFlO1FBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJ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SUFFRixPQUFPLEVBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUMsQ0FBQztBQUN4RCxDQUFDO0FBR0QsNENBQTRDO0FBQzVDLHNCQUFzQjtBQUN0Qix3QkFBd0I7QUFDeEIsc0JBQXNCO0FBQ3RCLHdDQUF3QztBQUN4QyxzQkFBc0I7QUFDdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge1xuICBGSVRfRlVOQ1RJT05fTElORUFSLFxuICBsaW5lYXIsXG4gIElGaXRTZXJpZXMsXG4gIElGaXRQb2ludCxcbiAgRklUX0ZVTkNUSU9OX1NJR01PSUQsXG4gIHNpZ21vaWQsXG4gIEZJVF9GVU5DVElPTl9MT0dfTElORUFSLFxuICBsb2dMaW5lYXIsXG4gIEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTCxcbiAgZXhwb25lbnRpYWwsXG4gIEZJVF9GVU5DVElPTl80UExfUkVHUkVTU0lPTixcbiAgZm91clBMUmVncmVzc2lvbixcbiAgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24sXG4gIEZpdFBhcmFtQm91bmRzLFxuICBGaXRNYXJrZXJUeXBlLFxuICBGaXRPdXRsaWVyTWFya2VyVHlwZSxcbiAgRml0TGluZVN0eWxlLFxuICBGaXRFcnJvck1vZGVsVHlwZSwgRml0Q3VydmUsIGdldEF1YywgZ2V0RGV0Q29lZmYsXG4gIEZJVF9KU19GVU5DVElPTixcbiAgRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFLFxuICBmb3VyUExEb3NlUmVzcG9uc2UsXG4gIERST1BMSU5FUyxcbiAgRml0RXJyb3JNb2RlbCxcbiAgRml0Q29uZmlkZW5jZUludGVydmFscyxcbiAgZ2V0Rml0dGVkQ3VydmUsXG59IGZyb20gJy4vZml0LWN1cnZlJztcbmltcG9ydCB7Zml0U2VyaWVzLCBnZXREYXRhUG9pbnRzfSBmcm9tICcuL2ZpdC1kYXRhJztcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcbmltcG9ydCB7RXh0cmVtdW0sIE9wdGltaXphdGlvblJlc3VsdH0gZnJvbSAnLi9maXR0aW5nLWFsZ29yaXRobS9vcHRpbWl6ZXItbWlzYyc7XG5pbXBvcnQge3BlcmZvcm1OZWxkZXJNZWFkT3B0aW1pemF0aW9ufSBmcm9tICcuL2ZpdHRpbmctYWxnb3JpdGhtL29wdGltaXplcic7XG5pbXBvcnQge05FTERFUl9NRUFEX0RFRkFVTFRTfSBmcm9tICcuL2ZpdHRpbmctYWxnb3JpdGhtL29wdGltaXplci1uZWxkZXItbWVhZCc7XG5cblxuLyoqIENsYXNzIGZvciB0aGUgZml0IGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpdEZ1bmN0aW9uPFQgPSBGaXQ+IHtcbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW107XG4gIGFic3RyYWN0IGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBUO1xuICBhYnN0cmFjdCB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXI7XG4gIGFic3RyYWN0IGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpdEZ1bmN0aW9uVHlwZXMgPSB7XG4gIFNJR01PSUQ6ICdzaWdtb2lkJyxcbiAgTElORUFSOiAnbGluZWFyJyxcbiAgTE9HX0xJTkVBUjogJ2xvZy1saW5lYXInLFxuICBFWFBPTkVOVElBTDogJ2V4cG9uZW50aWFsJyxcbiAgRk9VUl9QTF9SRUdSRVNTSU9OOiAnNHBsLXJlZ3Jlc3Npb24nLFxuICBGT1VSX1BMX0RPU0VfUkVTUE9OU0U6ICc0cGwtZG9zZS1yZXNwb25zZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBGaXRGdW5jdGlvblR5cGUgPSB0eXBlb2YgRml0RnVuY3Rpb25UeXBlc1trZXlvZiB0eXBlb2YgRml0RnVuY3Rpb25UeXBlc107XG5cbmludGVyZmFjZSBJRml0IHtcbiAgYXVjOiBudW1iZXI7XG4gIHJTcXVhcmVkOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTGluZWFyRml0IGV4dGVuZHMgSUZpdCB7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGludGVyY2VwdDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSUxvZ0xpbmVhckZpdCBleHRlbmRzIElMaW5lYXJGaXQge31cblxuaW50ZXJmYWNlIElTaWdtb2lkRml0IGV4dGVuZHMgSUZpdCB7XG4gIHRvcDogbnVtYmVyO1xuICBzbG9wZTogbnVtYmVyO1xuICBpYzUwOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSUV4cG9uZW50aWFsRml0IGV4dGVuZHMgSUZpdCB7XG4gIG1hbnRpc3NhOiBudW1iZXI7XG4gIHBvd2VyOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJRm91clBMUmVncmVzc2lvbkZpdCBleHRlbmRzIElGaXQge1xuICB0b3A6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGVjNTA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpdCBpbXBsZW1lbnRzIElGaXQge1xuICBhdWM6IG51bWJlcjtcbiAgclNxdWFyZWQ6IG51bWJlcjtcbiAgc2VyaWVzOiBGaXRTZXJpZXM7XG5cbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElGaXQsIGRhdGE6IEZpdFNlcmllcykge1xuICAgIHRoaXMuYXVjID0gdmFsdWVzLmF1YztcbiAgICB0aGlzLnJTcXVhcmVkID0gdmFsdWVzLnJTcXVhcmVkO1xuICAgIHRoaXMuc2VyaWVzID0gZGF0YTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSlNGdW5jdGlvbkZpdCBleHRlbmRzIEZpdCB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSUZpdCwgZGF0YTogRml0U2VyaWVzKSB7XG4gICAgc3VwZXIodmFsdWVzLCBkYXRhKTtcbiAgfVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfSlNfRlVOQ1RJT047XG4gIH1cbn1cblxuY2xhc3MgTGluZWFyRml0IGV4dGVuZHMgRml0IGltcGxlbWVudHMgSUxpbmVhckZpdCB7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGludGVyY2VwdDogbnVtYmVyO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9MSU5FQVI7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElMaW5lYXJGaXQsIGRhdGE6IEZpdFNlcmllcykge1xuICAgIHN1cGVyKHZhbHVlcywgZGF0YSk7XG4gICAgdGhpcy5zbG9wZSA9IHZhbHVlcy5zbG9wZTtcbiAgICB0aGlzLmludGVyY2VwdCA9IHZhbHVlcy5pbnRlcmNlcHQ7XG4gIH1cbn1cblxuY2xhc3MgTG9nTGluZWFyRml0IGV4dGVuZHMgTGluZWFyRml0IGltcGxlbWVudHMgSUxvZ0xpbmVhckZpdCB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9MT0dfTElORUFSO1xuICB9XG59XG5cbmNsYXNzIFNpZ21vaWRGaXQgZXh0ZW5kcyBGaXQgaW1wbGVtZW50cyBJU2lnbW9pZEZpdCB7XG4gIHRvcDogbnVtYmVyO1xuICBzbG9wZTogbnVtYmVyO1xuICBpYzUwOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9TSUdNT0lEO1xuICB9XG5cbiAgY29uc3RydWN0b3IodmFsdWVzOiBJU2lnbW9pZEZpdCwgZGF0YTogRml0U2VyaWVzKSB7XG4gICAgc3VwZXIodmFsdWVzLCBkYXRhKTtcbiAgICB0aGlzLnRvcCA9IHZhbHVlcy50b3A7XG4gICAgdGhpcy5zbG9wZSA9IHZhbHVlcy5zbG9wZTtcbiAgICB0aGlzLmljNTAgPSB2YWx1ZXMuaWM1MDtcbiAgICB0aGlzLmJvdHRvbSA9IHZhbHVlcy5ib3R0b207XG4gIH1cbn1cblxuY2xhc3MgRXhwb25lbnRpYWxGaXQgZXh0ZW5kcyBGaXQgaW1wbGVtZW50cyBJRXhwb25lbnRpYWxGaXQge1xuICBtYW50aXNzYTogbnVtYmVyO1xuICBwb3dlcjogbnVtYmVyO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSUV4cG9uZW50aWFsRml0LCBkYXRhOiBGaXRTZXJpZXMpIHtcbiAgICBzdXBlcih2YWx1ZXMsIGRhdGEpO1xuICAgIHRoaXMubWFudGlzc2EgPSB2YWx1ZXMubWFudGlzc2E7XG4gICAgdGhpcy5wb3dlciA9IHZhbHVlcy5wb3dlcjtcbiAgfVxufVxuXG5jbGFzcyBGb3VyUExSZWdyZXNzaW9uRml0IGV4dGVuZHMgRml0IGltcGxlbWVudHMgSUZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICB0b3A6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGVjNTA6IG51bWJlcjtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT047XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElGb3VyUExSZWdyZXNzaW9uRml0LCBkYXRhOiBGaXRTZXJpZXMpIHtcbiAgICBzdXBlcih2YWx1ZXMsIGRhdGEpO1xuICAgIHRoaXMudG9wID0gdmFsdWVzLnRvcDtcbiAgICB0aGlzLmJvdHRvbSA9IHZhbHVlcy5ib3R0b207XG4gICAgdGhpcy5zbG9wZSA9IHZhbHVlcy5zbG9wZTtcbiAgICB0aGlzLmVjNTAgPSB2YWx1ZXMuZWM1MDtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IElGaXQge1xuICByZXR1cm4ge1xuICAgIGF1YzogZ2V0QXVjKGZpdEN1cnZlLCBkYXRhKSxcbiAgICByU3F1YXJlZDogZ2V0RGV0Q29lZmYoZml0Q3VydmUsIGRhdGEpLFxuICB9O1xufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBsaW5lYXIgZnVuY3Rpb24gKi9cbmV4cG9ydCBjbGFzcyBMaW5lYXJGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPExpbmVhckZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTElORUFSO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydTbG9wZScsICdJbnRlcmNlcHQnXTtcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBMaW5lYXJGaXQge1xuICAgIHJldHVybiBuZXcgTGluZWFyRml0KHtcbiAgICAgIC4uLmdldEF1Y0FuZFJzcXVhcmVkKGZpdEN1cnZlLmZpdHRlZEN1cnZlLCBnZXREYXRhUG9pbnRzKGRhdGEpKSxcbiAgICAgIHNsb3BlOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzBdLFxuICAgICAgaW50ZXJjZXB0OiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzFdLFxuICAgIH0sIGRhdGEpO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbGluZWFyKHBhcmFtcywgeCk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIGxldCBtaW5JbmRleCA9IDA7XG4gICAgbGV0IG1heEluZGV4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh4W2ldIDwgeFttaW5JbmRleF0pXG4gICAgICAgIG1pbkluZGV4ID0gaTtcbiAgICAgIGlmICh4W2ldID4geFttYXhJbmRleF0pXG4gICAgICAgIG1heEluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWx0YVggPSB4W21heEluZGV4XSAtIHhbbWluSW5kZXhdO1xuICAgIGNvbnN0IGRlbHRhWSA9IHlbbWF4SW5kZXhdIC0geVttaW5JbmRleF07XG4gICAgY29uc3QgQSA9IGRlbHRhWSAvIGRlbHRhWDtcbiAgICBjb25zdCBCID0geVttYXhJbmRleF0gLSBBICogeFttYXhJbmRleF07XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheSgyKTtcbiAgICBwYXJhbXMuc2V0KFtBLCBCXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBzaWdtb2lkIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgU2lnbW9pZEZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb248U2lnbW9pZEZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fU0lHTU9JRDtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnVG9wJywgJ1Nsb3BlJywgJ0lDNTAnLCAnQm90dG9tJ107XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogU2lnbW9pZEZpdCB7XG4gICAgcmV0dXJuIG5ldyBTaWdtb2lkRml0KHtcbiAgICAgIC4uLmdldEF1Y0FuZFJzcXVhcmVkKGZpdEN1cnZlLmZpdHRlZEN1cnZlLCBnZXREYXRhUG9pbnRzKGRhdGEpKSxcbiAgICAgIHRvcDogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIHNsb3BlOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzFdLFxuICAgICAgaWM1MDogZml0Q3VydmUucGFyYW1ldGVyc1syXSxcbiAgICAgIGJvdHRvbTogZml0Q3VydmUucGFyYW1ldGVyc1szXSxcbiAgICB9LCBkYXRhKTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHNpZ21vaWQocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgZGF0YUJvdW5kcyA9IERHLlJlY3QuZnJvbVhZQXJyYXlzKHgsIHkpO1xuICAgIGNvbnN0IG1lZFkgPSAoZGF0YUJvdW5kcy5tYXhZIC0gZGF0YUJvdW5kcy5taW5ZKSAvIDIgKyBkYXRhQm91bmRzLm1pblk7XG4gICAgbGV0IG1heFlJbnRlcnZhbCA9IGRhdGFCb3VuZHMubWF4WSAtIGRhdGFCb3VuZHMubWluWTtcbiAgICBsZXQgbmVhcmVzdFhJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW50ZXJ2YWwgPSBNYXRoLmFicyh5W2ldIC0gbWVkWSk7XG4gICAgICBpZiAoY3VycmVudEludGVydmFsIDwgbWF4WUludGVydmFsKSB7XG4gICAgICAgIG1heFlJbnRlcnZhbCA9IGN1cnJlbnRJbnRlcnZhbDtcbiAgICAgICAgbmVhcmVzdFhJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHhBdE1lZFkgPSB4W25lYXJlc3RYSW5kZXhdO1xuICAgIGNvbnN0IHNsb3BlID0geVswXSA+IHlbeS5sZW5ndGggLSAxXSA/IDEgOiAtMTtcblxuICAgIC8vIHBhcmFtcyBhcmU6IFttYXgsIHRhbiwgSUM1MCwgbWluXVxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7XG4gICAgcGFyYW1zLnNldChbZGF0YUJvdW5kcy5tYXhZLCBzbG9wZSwgeEF0TWVkWSwgZGF0YUJvdW5kcy5taW5ZXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBsaW5lYXIgbG9nYXJpdGhtaWMgZnVuY3Rpb24gKi9cbmV4cG9ydCBjbGFzcyBMb2dMaW5lYXJGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPExvZ0xpbmVhckZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUjtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnU2xvcGUnLCAnSW50ZXJjZXB0J107XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogTG9nTGluZWFyRml0IHtcbiAgICByZXR1cm4gbmV3IExvZ0xpbmVhckZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICBzbG9wZTogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIGludGVyY2VwdDogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICB9LCBkYXRhKTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGxvZ0xpbmVhcihwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDIpO1xuICAgIHBhcmFtcy5zZXQoWy01LCAxMDBdKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGV4cG9uZW50aWFsIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgRXhwb25lbnRpYWxGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPEV4cG9uZW50aWFsRml0PiB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTDtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnTWFudGlzc2EnLCAnUG93ZXInXTtcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBFeHBvbmVudGlhbEZpdCB7XG4gICAgcmV0dXJuIG5ldyBFeHBvbmVudGlhbEZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICBtYW50aXNzYTogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIHBvd2VyOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzFdLFxuICAgIH0sIGRhdGEpO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZXhwb25lbnRpYWwocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheSgyKTtcbiAgICBwYXJhbXMuc2V0KFsxMDAsIC0yXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBGb3VyIFBhcmFtZXRlciBMb2dpc3RpYyBSZWdyZXNzaW9uIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgRm91clBMUmVncmVzc2lvbkZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb248Rm91clBMUmVncmVzc2lvbkZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT047XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ1RvcCcsICdTbG9wZScsICdFQzUwJywgJ0JvdHRvbSddO1xuICB9XG5cbiAgZmlsbFBhcmFtcyhmaXRDdXJ2ZTogRml0Q3VydmUsIGRhdGE6IEZpdFNlcmllcyk6IEZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICAgIHJldHVybiBuZXcgRm91clBMUmVncmVzc2lvbkZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICB0b3A6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMF0sXG4gICAgICBzbG9wZTogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICAgIGVjNTA6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMl0sXG4gICAgICBib3R0b206IGZpdEN1cnZlLnBhcmFtZXRlcnNbM10sXG4gICAgfSwgZGF0YSk7XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBmb3VyUExSZWdyZXNzaW9uKHBhcmFtcywgeCk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7XG4gICAgY29uc3QgYm90dG9tID0gTWF0aC5taW4oLi4ueSk7XG4gICAgY29uc3QgdG9wID0gTWF0aC5tYXgoLi4ueSk7XG4gICAgY29uc3QgbWVkWSA9ICh0b3AgLSBib3R0b20pIC8gMiArIGJvdHRvbTtcbiAgICBsZXQgbWF4WUludGVydmFsID0gdG9wIC1ib3R0b207XG4gICAgbGV0IG5lYXJlc3RYSW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY3VycmVudEludGVydmFsID0gTWF0aC5hYnMoeVtpXSAtIG1lZFkpO1xuICAgICAgaWYgKGN1cnJlbnRJbnRlcnZhbCA8IG1heFlJbnRlcnZhbCkge1xuICAgICAgICBtYXhZSW50ZXJ2YWwgPSBjdXJyZW50SW50ZXJ2YWw7XG4gICAgICAgIG5lYXJlc3RYSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlYzUwID0geFtuZWFyZXN0WEluZGV4XTtcbiAgICBjb25zdCBzbG9wZSA9IHlbMF0gPiB5W3kubGVuZ3RoIC0gMV0/IC0xMCA6IDEwO1xuICAgIHBhcmFtcy5zZXQoW3RvcCwgc2xvcGUsIGVjNTAsIGJvdHRvbV0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvdXJQTERvc2VSZXNwb25zZUZ1bmN0aW9uIGV4dGVuZHMgRm91clBMUmVncmVzc2lvbkZ1bmN0aW9uIHtcbiAgb3ZlcnJpZGUgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydNYXgnLCAnSGlsbCcsICdJQzUwJywgJ01pbiddO1xuICB9XG5cbiAgb3ZlcnJpZGUgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZm91clBMRG9zZVJlc3BvbnNlKHBhcmFtcywgeCk7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB1c2VyIEpTIGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGNsYXNzIEpzRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbjxGaXQ+IHtcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9wYXJhbWV0ZXJOYW1lczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB5RnVuYzogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgICBnZXRJbml0UGFyYW1zRnVuYzogKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSkgPT4gRmxvYXQzMkFycmF5LCBwYXJhbWV0ZXJOYW1lczogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgdGhpcy5fcGFyYW1ldGVyTmFtZXMgPSBwYXJhbWV0ZXJOYW1lcztcblxuICAgIHRoaXMueSA9IHlGdW5jO1xuICAgIHRoaXMuZ2V0SW5pdGlhbFBhcmFtZXRlcnMgPSBnZXRJbml0UGFyYW1zRnVuYztcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBGaXQge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5fcGFyYW1ldGVyTmFtZXMubGVuZ3RoKTtcbiAgICBwYXJhbXMuc2V0KGZpdEN1cnZlLnBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBuZXcgSlNGdW5jdGlvbkZpdCh7Li4uZ2V0QXVjQW5kUnNxdWFyZWQoZml0Q3VydmUuZml0dGVkQ3VydmUsIGdldERhdGFQb2ludHMoZGF0YSkpfSwgZGF0YSk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1ldGVyTmFtZXM7XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuLy8gT2JqZWN0IHdpdGggZml0IGZ1bmN0aW9uc1xuZXhwb3J0IGNvbnN0IGZpdEZ1bmN0aW9uczoge1trZXk6IHN0cmluZ106IEZpdEZ1bmN0aW9uPGFueT59ID0ge1xuICAnbGluZWFyJzogbmV3IExpbmVhckZ1bmN0aW9uKCksXG4gICdzaWdtb2lkJzogbmV3IFNpZ21vaWRGdW5jdGlvbigpLFxuICAnbG9nLWxpbmVhcic6IG5ldyBMb2dMaW5lYXJGdW5jdGlvbigpLFxuICAnZXhwb25lbnRpYWwnOiBuZXcgRXhwb25lbnRpYWxGdW5jdGlvbigpLFxuICAnNHBsLXJlZ3Jlc3Npb24nOiBuZXcgRm91clBMUmVncmVzc2lvbkZ1bmN0aW9uKCksXG4gICc0cGwtZG9zZS1yZXNwb25zZSc6IG5ldyBGb3VyUExEb3NlUmVzcG9uc2VGdW5jdGlvbigpLFxufTtcblxuY2xhc3MgRml0RnVuY3Rpb25zIHtcbiAgc2VyaWVzOiBGaXRTZXJpZXM7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWVzOiBGaXRTZXJpZXMpIHtcbiAgICB0aGlzLnNlcmllcyA9IHNlcmllcztcbiAgfVxuXG4gIGxpbmVhcigpOiBMaW5lYXJGaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OX0xJTkVBUl1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9MSU5FQVJdKSwgdGhpcy5zZXJpZXMpO1xuICB9XG5cbiAgbG9nTGluZWFyKCk6IExvZ0xpbmVhckZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUl1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9MT0dfTElORUFSXSksIHRoaXMuc2VyaWVzKTtcbiAgfVxuXG4gIHNpZ21vaWQoKTogU2lnbW9pZEZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fU0lHTU9JRF1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9TSUdNT0lEXSksIHRoaXMuc2VyaWVzKTtcbiAgfVxuXG4gIGV4cG9uZW50aWFsKCk6IEV4cG9uZW50aWFsRml0IHtcbiAgICByZXR1cm4gZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9FWFBPTkVOVElBTF1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9FWFBPTkVOVElBTF0pLCB0aGlzLnNlcmllcyk7XG4gIH1cblxuICBmb3VyUEwoKTogRm91clBMUmVncmVzc2lvbkZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT05dXG4gICAgICAuZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT05dKSwgdGhpcy5zZXJpZXMpO1xuICB9XG5cbiAgZm91clBMRG9zZVJlc3BvbnNlKCk6IEZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFXS5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl80UExfRE9TRV9SRVNQT05TRV0pLCB0aGlzLnNlcmllcyk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgRml0U2VyaWVzIGltcGxlbWVudHMgSUZpdFNlcmllcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcblxuICBmaXQ6IEZpdEZ1bmN0aW9ucztcbiAgcG9pbnRzOiBJRml0UG9pbnRbXTtcblxuICBjb25zdHJ1Y3Rvcihwb2ludHM6IElGaXRQb2ludFtdKSB7XG4gICAgdGhpcy5wb2ludHMgPSBwb2ludHM7XG4gICAgdGhpcy5maXQgPSBuZXcgRml0RnVuY3Rpb25zKHRoaXMpO1xuICB9XG5cbiAgbmFtZT86IHN0cmluZzsgLy8gY29udHJvbHMgdGhlIHNlcmllcyBuYW1lXG4gIGZpdEZ1bmN0aW9uPzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb247IC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgZml0IGZ1bmN0aW9uXG4gIHBhcmFtZXRlcnM/OiBudW1iZXJbXTsgLy8gY29udHJvbHMgdGhlIHNlcmllcyBwYXJhbWV0ZXJzLCBhdXRvLWZpdHRpbmcgd2hlbiBub3QgZGVmaW5lZFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdOyAvLyBkZWZpbmVzIHRoZSBhY2NlcHRhYmxlIHJhbmdlIG9mIGVhY2ggcGFyYW1ldGVyLCB3aGljaCBpcyB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBmaXR0aW5nLiBTZWUgYWxzbyBgcGFyYW1ldGVyc2AuXG4gIG1hcmtlclR5cGU/OiBGaXRNYXJrZXJUeXBlOyAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgbWFya2VyIHR5cGVcbiAgb3V0bGllck1hcmtlclR5cGU/OiBGaXRPdXRsaWVyTWFya2VyVHlwZTsgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIG91dGxpZXIgbWFya2VyIHR5cGVcbiAgbGluZVN0eWxlPzogRml0TGluZVN0eWxlOyAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgbGluZSBzdHlsZVxuICBwb2ludENvbG9yPzogc3RyaW5nOyAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgcG9pbnQgY29sb3JcbiAgZml0TGluZUNvbG9yPzogc3RyaW5nOyAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgZml0IGxpbmUgY29sb3JcbiAgY29uZmlkZW5jZUludGVydmFsQ29sb3I/OiBzdHJpbmc7IC8vIG92ZXJyaWRlcyB0aGUgc3RhbmRhcmRpemVkIHNlcmllcyBjb25maWRlbmNlIGludGVydmFsIGNvbG9yXG4gIG91dGxpZXJDb2xvcj86IHN0cmluZzsgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIG91dGxpZXIgY29sb3JcbiAgY29ubmVjdERvdHM/OiBib29sZWFuOyAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gY29ubmVjdCB0aGUgcG9pbnRzIHdpdGggbGluZXMgb3Igbm90LiBJZiB0cnVlIGFuZCBzaG93Rml0TGluZSBpcyBmYWxzZSAtIGZpdHRpbmcgaXMgZGlzYWJsZWQgLSBvdGhlcndpc2UsIGl0IHdpbGwgYmUgcmVuZGVyZWQgYWNjb3JkaW5nbHkgdG8gdGhlIHBhcmFtZXRlciB2YWx1ZS5cbiAgc2hvd0ZpdExpbmU/OiBib29sZWFuOyAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgZml0IGxpbmUgb3Igbm90XG4gIHNob3dQb2ludHM/OiBzdHJpbmc7IC8vIGRlZmluZXMgdGhlIGRhdGEgZGlzcGxheSBtb2RlXG4gIHNob3dDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbD86IGJvb2xlYW47IC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBjb25maWRlbmNlIGludGVydmFscyBvciBub3RcbiAgZXJyb3JNb2RlbD86IEZpdEVycm9yTW9kZWxUeXBlOyAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgZXJyb3IgbW9kZWxcbiAgY2xpY2tUb1RvZ2dsZT86IGJvb2xlYW47IC8vIGlmIHRydWUsIGNsaWNraW5nIG9uIHRoZSBwb2ludCB0b2dnbGVzIGl0cyBvdXRsaWVyIHN0YXR1cyBhbmQgY2F1c2VzIGN1cnZlIHJlZml0dGluZ1xuICBsYWJlbHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn07IC8vIGNvbnRyb2xsZWQgYnkgSUZpdENoYXJ0RGF0YSBsYWJlbE9wdGlvbnMsIHNob3dzIGxhYmVsc1xuICBkcm9wbGluZXM/OiBzdHJpbmdbXTsgLy8gZGVmaW5lcyB0aGUgZHJvcGxpbmVzIHRoYXQgd291bGQgYmUgc2hvd24gb24gdGhlIHBsb3QgKElDNTApXG4gIGNvbHVtbk5hbWU/OiBzdHJpbmc7IC8vIGRlZmluZXMgdGhlIGNvbHVtbiBuYW1lIHdoZXJlIHRoZSBzZXJpZXMgaXMgc3RvcmVkXG59XG5cblxuLyoqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSB7QGxpbmsgSUZpdFNlcmllc09wdGlvbnN9LiBVc2VmdWwgZm9yIGVkaXRpbmcsIGluaXRpYWxpemF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGV0Yy4gKi9cbmV4cG9ydCBjb25zdCBmaXRTZXJpZXNQcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdID0gW1xuICBERy5Qcm9wZXJ0eS5qcygnZml0RnVuY3Rpb24nLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgY2hvaWNlczogT2JqZWN0LmtleXMoZml0RnVuY3Rpb25zKSwgZGVmYXVsdFZhbHVlOiAnc2lnbW9pZCd9KSxcbiAgREcuUHJvcGVydHkuanMoJ3BvaW50Q29sb3InLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBudWxsYWJsZTogdHJ1ZSwgaW5wdXRUeXBlOiAnQ29sb3InfSksXG4gIERHLlByb3BlcnR5LmpzKCdmaXRMaW5lQ29sb3InLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBudWxsYWJsZTogdHJ1ZSwgaW5wdXRUeXBlOiAnQ29sb3InfSksXG4gIERHLlByb3BlcnR5LmpzKCdvdXRsaWVyQ29sb3InLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBudWxsYWJsZTogdHJ1ZSwgaW5wdXRUeXBlOiAnQ29sb3InfSksXG4gIERHLlByb3BlcnR5LmpzKCdlcnJvck1vZGVsJywgREcuVFlQRS5TVFJJTkcsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZWZhdWx0VmFsdWU6ICdjb25zdGFudCcsXG4gICAgY2hvaWNlczogWydjb25zdGFudCcsICdwcm9wb3J0aW9uYWwnLCAnY29tYmluZWQnXSwgbnVsbGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdjb25uZWN0RG90cycsIERHLlRZUEUuQk9PTCwge2NhdGVnb3J5OiAnRml0dGluZycsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2NsaWNrVG9Ub2dnbGUnLCBERy5UWVBFLkJPT0wsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZXNjcmlwdGlvbjpcbiAgICAnQ2xpY2sgb24gYSBwb2ludCB0byBtYXJrIGl0IGFzIG91dGxpZXIgYW5kIHJlZml0JywgbnVsbGFibGU6IHRydWUsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dGaXRMaW5lJywgREcuVFlQRS5CT09MLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVmYXVsdFZhbHVlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93UG9pbnRzJywgREcuVFlQRS5TVFJJTkcsIC8vIHJld3JpdGUgZGVzY3JpcHRpb25cbiAgICB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVzY3JpcHRpb246ICdXaGV0aGVyIHBvaW50cy9jYW5kbGVzdGlja3Mvbm9uZSBzaG91bGQgYmUgcmVuZGVyZWQnLFxuICAgICAgZGVmYXVsdFZhbHVlOiAncG9pbnRzJywgY2hvaWNlczogWydwb2ludHMnLCAnY2FuZGxlc3RpY2tzJywgJ2JvdGgnXX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd0N1cnZlQ29uZmlkZW5jZUludGVydmFsJywgREcuVFlQRS5CT09MLFxuICAgIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZXNjcmlwdGlvbjogJ1doZXRoZXIgY29uZmlkZW5jZSBpbnRlcnZhbHMgc2hvdWxkIGJlIHJlbmRlcmVkJywgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgZnJpZW5kbHlOYW1lOiAnQ29uZmlkZW5jZSBJbnRlcnZhbCd9KSxcbiAgREcuUHJvcGVydHkuanMoJ21hcmtlclR5cGUnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgZGVmYXVsdFZhbHVlOiAnY2lyY2xlJyxcbiAgICBjaG9pY2VzOiBbJ2FzdGVyaXNrJywgJ2NpcmNsZScsICdjcm9zcyBib3JkZXInLCAnZGlhbW9uZCcsICdzcXVhcmUnLCAnc3RhcicsXG4gICAgICAndHJpYW5nbGUgYm90dG9tJywgJ3RyaWFuZ2xlIGxlZnQnLCAndHJpYW5nbGUgcmlnaHQnLCAndHJpYW5nbGUgdG9wJ10sIG51bGxhYmxlOiBmYWxzZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBmcmllbmRseU5hbWU6ICdNYXJrZXInfSksXG4gIERHLlByb3BlcnR5LmpzKCdvdXRsaWVyTWFya2VyVHlwZScsIERHLlRZUEUuU1RSSU5HLCB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBkZWZhdWx0VmFsdWU6ICdvdXRsaWVyJyxcbiAgICBjaG9pY2VzOiBbJ2FzdGVyaXNrJywgJ2NpcmNsZScsICdjcm9zcyBib3JkZXInLCAnZGlhbW9uZCcsICdvdXRsaWVyJywgJ3NxdWFyZScsICdzdGFyJyxcbiAgICAgICd0cmlhbmdsZSBib3R0b20nLCAndHJpYW5nbGUgbGVmdCcsICd0cmlhbmdsZSByaWdodCcsICd0cmlhbmdsZSB0b3AnXSwgbnVsbGFibGU6IGZhbHNlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIGZyaWVuZGx5TmFtZTogJ091dGxpZXIgTWFya2VyJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnbGluZVN0eWxlJywgREcuVFlQRS5TVFJJTkcsIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIGRlZmF1bHRWYWx1ZTogJ3NvbGlkJyxcbiAgICBjaG9pY2VzOiBbJ3NvbGlkJywgJ2RvdHRlZCcsICdkYXNoZWQnLCAnZGFzaGRvdHRlZCddLCBudWxsYWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2Ryb3BsaW5lcycsIERHLlRZUEUuU1RSSU5HX0xJU1QsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgc3BlY2lmaWMgZHJvcGxpbmVzIHNob3VsZCBiZSByZW5kZXJlZCcsXG4gICAgY2hvaWNlczogRFJPUExJTkVTLCBpbnB1dFR5cGU6ICdNdWx0aUNob2ljZSd9KSxcbiAgREcuUHJvcGVydHkuanMoJ2NvbHVtbk5hbWUnLCBERy5UWVBFLlNUUklORywge2Rlc2NyaXB0aW9uOiAnQ29sdW1uIG5hbWUgd2hlcmUgdGhlIHNlcmllcyBpcyBzdG9yZWQnLCBkZWZhdWx0VmFsdWU6ICcnfSksXG5dO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckNyZWF0ZUZpdEZ1bmN0aW9uKHNlcmllc0ZpdEZ1bmM6IHN0cmluZyB8IElGaXRGdW5jdGlvbkRlc2NyaXB0aW9uKTogRml0RnVuY3Rpb248Rml0PiB7XG4gIGlmICh0eXBlb2Ygc2VyaWVzRml0RnVuYyA9PT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jXTtcbiAgZWxzZSBpZiAoIWZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jLm5hbWVdKSB7XG4gICAgY29uc3QgbmFtZSA9IHNlcmllc0ZpdEZ1bmMubmFtZTtcbiAgICBjb25zdCBwYXJhbU5hbWVzID0gc2VyaWVzRml0RnVuYy5wYXJhbWV0ZXJOYW1lcztcbiAgICBjb25zdCBmaXRGdW5jdGlvblBhcnRzID0gc2VyaWVzRml0RnVuYy5mdW5jdGlvbi5zcGxpdCgnPT4nKS5tYXAoKGVsZW0pID0+IGVsZW0udHJpbSgpKTtcbiAgICBjb25zdCBnZXRJbml0UGFyYW1zUGFydHMgPSBzZXJpZXNGaXRGdW5jLmdldEluaXRpYWxQYXJhbWV0ZXJzLnNwbGl0KCc9PicpLm1hcCgoZWxlbSkgPT4gZWxlbS50cmltKCkpO1xuICAgIGNvbnN0IGZpdEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKGZpdEZ1bmN0aW9uUGFydHNbMF0uc2xpY2UoMSwgZml0RnVuY3Rpb25QYXJ0c1swXS5sZW5ndGggLSAxKSxcbiAgICAgIGAke2ZpdEZ1bmN0aW9uUGFydHNbMV0uaW5jbHVkZXMoJzsnKSA/ICcnIDogJ3JldHVybiAnfSR7Zml0RnVuY3Rpb25QYXJ0c1sxXX1gKTtcbiAgICBjb25zdCBnZXRJbml0UGFyYW1zRnVuYyA9IG5ldyBGdW5jdGlvbihnZXRJbml0UGFyYW1zUGFydHNbMF0uc2xpY2UoMSwgZ2V0SW5pdFBhcmFtc1BhcnRzWzBdLmxlbmd0aCAtIDEpLFxuICAgICAgYHJldHVybiAke2dldEluaXRQYXJhbXNQYXJ0c1sxXX1gKTtcbiAgICBjb25zdCBmaXRGdW5jID0gbmV3IEpzRnVuY3Rpb24obmFtZSwgKGZpdEZ1bmN0aW9uIGFzIChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIpLFxuICAgICAgKGdldEluaXRQYXJhbXNGdW5jIGFzICh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pID0+IEZsb2F0MzJBcnJheSksIHBhcmFtTmFtZXMpO1xuICAgIGZpdEZ1bmN0aW9uc1tuYW1lXSA9IGZpdEZ1bmM7XG4gIH1cblxuICByZXR1cm4gZml0RnVuY3Rpb25zW3Nlcmllc0ZpdEZ1bmMubmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXREYXRhKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBmaXRGdW5jdGlvbjogRml0RnVuY3Rpb248Rml0PiwgZXJyb3JNb2RlbD86IEZpdEVycm9yTW9kZWxUeXBlLFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdKTogRml0Q3VydmUge1xuICBlcnJvck1vZGVsID8/PSBGaXRFcnJvck1vZGVsLkNPTlNUQU5UIGFzIEZpdEVycm9yTW9kZWxUeXBlO1xuICBjb25zdCBjdXJ2ZUZ1bmN0aW9uID0gZml0RnVuY3Rpb24ueTtcbiAgbGV0IHBhcmFtVmFsdWVzID0gZml0RnVuY3Rpb24uZ2V0SW5pdGlhbFBhcmFtZXRlcnMoZGF0YS54LCBkYXRhLnkpO1xuXG4gIGNvbnN0IG9mID0gb2JqZWN0aXZlRmFjdG9yeShjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBlcnJvck1vZGVsKTtcbiAgY29uc3QgYm90dG9tUGFyYW1Cb3VuZHMgPSBuZXcgRmxvYXQzMkFycmF5KGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aCk7XG4gIGNvbnN0IHRvcFBhcmFtQm91bmRzID0gbmV3IEZsb2F0MzJBcnJheShmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgYm90dG9tUGFyYW1Cb3VuZHNbaV0gPSBwYXJhbVZhbHVlc1tpXSA9PT0gMCA/IC0xIDogcGFyYW1WYWx1ZXNbaV0gLSBNYXRoLmFicyhwYXJhbVZhbHVlc1tpXSAqIDAuNSk7XG4gICAgdG9wUGFyYW1Cb3VuZHNbaV0gPSBwYXJhbVZhbHVlc1tpXSA9PT0gMCA/IDEgOiBwYXJhbVZhbHVlc1tpXSArIE1hdGguYWJzKHBhcmFtVmFsdWVzW2ldICogMC41KTtcbiAgfVxuICBjb25zdCBwYXJhbWV0ZXJCb3VuZHNCaXRzZXQ6IERHLkJpdFNldCA9IERHLkJpdFNldC5jcmVhdGUoZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoICogMik7XG4gIGlmIChwYXJhbWV0ZXJCb3VuZHMgJiYgcGFyYW1ldGVyQm91bmRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1ldGVyQm91bmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocGFyYW1ldGVyQm91bmRzW2ldLm1pbiAhPT0gdW5kZWZpbmVkICYmIHBhcmFtZXRlckJvdW5kc1tpXS5taW4gIT09IG51bGwpIHtcbiAgICAgICAgYm90dG9tUGFyYW1Cb3VuZHNbaV0gPSBwYXJhbWV0ZXJCb3VuZHNbaV0ubWluITtcbiAgICAgICAgcGFyYW1ldGVyQm91bmRzQml0c2V0LnNldChpICogMiwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1ldGVyQm91bmRzW2ldLm1heCAhPT0gdW5kZWZpbmVkICYmIHBhcmFtZXRlckJvdW5kc1tpXS5tYXggIT09IG51bGwpIHtcbiAgICAgICAgdG9wUGFyYW1Cb3VuZHNbaV0gPSBwYXJhbWV0ZXJCb3VuZHNbaV0ubWF4ITtcbiAgICAgICAgcGFyYW1ldGVyQm91bmRzQml0c2V0LnNldChpICogMiArIDEsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBnZXRDb25zaXN0ZW5jeSA9IChleHRyZW11bTogRXh0cmVtdW0pID0+IHtcbiAgICBjb25zdCByZXNpZHVhbHMgPSBvZihleHRyZW11bS5wb2ludCkucmVzaWR1YWxzO1xuICAgIGxldCBxMXE0ID0gMDtcbiAgICBsZXQgcTJxMyA9IDA7XG4gICAgLy8gVE9ETzogcmV3cml0ZSBxdWFydGlsZXMgdG8gYSBiZXR0ZXIgY29uZGl0aW9uXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZXNpZHVhbHMubGVuZ3RoIC8gNCA+IGkpXG4gICAgICAgIHExcTQgKz0gTWF0aC5wb3cocmVzaWR1YWxzW2ldLCAyKTtcbiAgICAgIGVsc2UgaWYgKDMgKiByZXNpZHVhbHMubGVuZ3RoIC8gNCA+IGkpXG4gICAgICAgIHEycTMgKz0gTWF0aC5wb3cocmVzaWR1YWxzW2ldLCAyKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcTFxNCArPSBNYXRoLnBvdyhyZXNpZHVhbHNbaV0sIDIpO1xuICAgIH1cbiAgICByZXR1cm4gcTFxNCAvIHEycTM7XG4gIH07XG5cbiAgbGV0IGl0ZXIgPSAtMTtcbiAgbGV0IGNvbnRpbnVlT3B0aW1pemF0aW9uID0gMDtcbiAgbGV0IHN0YXRpc3RpY3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgb3B0aW1pemF0aW9uOiBPcHRpbWl6YXRpb25SZXN1bHQ7XG4gIGxldCBtaW5JZHggPSAwO1xuICBkbyB7XG4gICAgb3B0aW1pemF0aW9uID0gcGVyZm9ybU5lbGRlck1lYWRPcHRpbWl6YXRpb24ob2YsIGJvdHRvbVBhcmFtQm91bmRzLCB0b3BQYXJhbUJvdW5kcywge1xuICAgICAgdG9sZXJhbmNlOiBORUxERVJfTUVBRF9ERUZBVUxUUy5UT0xFUkFOQ0UsXG4gICAgICBtYXhJdGVyOiBORUxERVJfTUVBRF9ERUZBVUxUUy5NQVhfSVRFUixcbiAgICAgIG5vblplcm9QYXJhbTogTkVMREVSX01FQURfREVGQVVMVFMuTk9OX1pFUk9fUEFSQU0sXG4gICAgICBpbml0aWFsU2NhbGU6IE5FTERFUl9NRUFEX0RFRkFVTFRTLklOSVRJQUxfU0NBTEUsXG4gICAgICBzY2FsZVJlZmxlY3Rpb246IE5FTERFUl9NRUFEX0RFRkFVTFRTLlNDQUxFX1JFRkxFQ1RJT04sXG4gICAgICBzY2FsZUV4cGFuc2lvbjogTkVMREVSX01FQURfREVGQVVMVFMuU0NBTEVfRVhQQU5TSU9OLFxuICAgICAgc2NhbGVDb250cmFjdGlvbjogTkVMREVSX01FQURfREVGQVVMVFMuU0NBTEVfQ09OVFJBQ1RJT04sXG4gICAgfSwgMTAsIHBhcmFtVmFsdWVzKTtcblxuICAgIG1pbklkeCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvcHRpbWl6YXRpb24uZXh0cmVtdW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAob3B0aW1pemF0aW9uLmV4dHJlbXVtc1tpXS5jb3N0IDwgb3B0aW1pemF0aW9uLmV4dHJlbXVtc1ttaW5JZHhdLmNvc3QpXG4gICAgICAgIG1pbklkeCA9IGk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGlzdGljcyA9IGdldENvbnNpc3RlbmN5KG9wdGltaXphdGlvbi5leHRyZW11bXNbbWluSWR4XSk7XG4gICAgaWYgKHN0YXRpc3RpY3MgPT09IG51bGwpXG4gICAgICBzdGF0aXN0aWNzID0gbmV3U3RhdGlzdGljcztcbiAgICBlbHNlIGlmIChuZXdTdGF0aXN0aWNzIDwgc3RhdGlzdGljcykge1xuICAgICAgc3RhdGlzdGljcyA9IG5ld1N0YXRpc3RpY3M7XG4gICAgICBjb250aW51ZU9wdGltaXphdGlvbiA9IDA7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIGNvbnRpbnVlT3B0aW1pemF0aW9uKys7XG5cbiAgICBwYXJhbVZhbHVlcyA9IG9wdGltaXphdGlvbi5leHRyZW11bXNbbWluSWR4XS5wb2ludDtcblxuICAgIGlmIChpdGVyID4gNDAgfHwgY29udGludWVPcHRpbWl6YXRpb24gPT09IDMpXG4gICAgICBicmVhaztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghcGFyYW1ldGVyQm91bmRzQml0c2V0LmdldChpICogMikpXG4gICAgICAgIGJvdHRvbVBhcmFtQm91bmRzW2ldID0gcGFyYW1WYWx1ZXNbaV0gLSBNYXRoLmFicyhwYXJhbVZhbHVlc1tpXSAqIChjb250aW51ZU9wdGltaXphdGlvbiArIDAuNSkpO1xuICAgICAgaWYgKCFwYXJhbWV0ZXJCb3VuZHNCaXRzZXQuZ2V0KGkgKiAyICsgMSkpXG4gICAgICAgIHRvcFBhcmFtQm91bmRzW2ldID0gcGFyYW1WYWx1ZXNbaV0gKyBNYXRoLmFicyhwYXJhbVZhbHVlc1tpXSAqIChjb250aW51ZU9wdGltaXphdGlvbiArIDAuNSkpO1xuICAgIH1cblxuICAgIGl0ZXIrKztcbiAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgY29uc3QgZml0dGVkQ3VydmUgPSBnZXRGaXR0ZWRDdXJ2ZShjdXJ2ZUZ1bmN0aW9uLCBwYXJhbVZhbHVlcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXR0ZWRDdXJ2ZTogZml0dGVkQ3VydmUsXG4gICAgcGFyYW1ldGVyczogcGFyYW1WYWx1ZXMsXG4gIH07XG59XG5cblxuZnVuY3Rpb24gb2JqZWN0aXZlRmFjdG9yeSh0YXJnZXRGdW5jOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLFxuICBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSwgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbFR5cGUpOlxuICAgIChwYXJhbXM6IEZsb2F0MzJBcnJheSkgPT4ge2xpa2VsaWhvb2Q6IG51bWJlciwgcmVzaWR1YWxzOiBudW1iZXJbXX0ge1xuICByZXR1cm4gKHBhcmFtczogRmxvYXQzMkFycmF5KSA9PiB7XG4gICAgbGV0IGxpa2VsaWhvb2QgPSAwO1xuICAgIGxldCBzaWdtYUEgPSAwO1xuICAgIGxldCBzaWdtYUIgPSAwO1xuXG4gICAgY29uc3Qgb2JzID0gZGF0YS55O1xuICAgIGNvbnN0IHByZWQgPSBkYXRhLngubWFwKCh4KSA9PiB0YXJnZXRGdW5jKHBhcmFtcywgeCkpO1xuICAgIGNvbnN0IHJlc2lkdWFscyA9IG9icy5tYXAoKG9icywgaSkgPT4gb2JzIC0gcHJlZFtpXSk7XG4gICAgY29uc3QgcmVzaWR1ZXNTcXVhcmVzID0gcmVzaWR1YWxzLm1hcCgocmVzKSA9PiBNYXRoLnBvdyhyZXMsIDIpKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoW0ZpdEVycm9yTW9kZWwuQ09OU1RBTlQsIEZpdEVycm9yTW9kZWwuQ09NQklORURdLmluY2x1ZGVzKGVycm9yTW9kZWwpKVxuICAgICAgICBzaWdtYUEgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldO1xuICAgICAgZWxzZSBpZiAoZXJyb3JNb2RlbCA9PT0gRml0RXJyb3JNb2RlbC5QUk9QT1JUSU9OQUwpXG4gICAgICAgIHNpZ21hQiArPSByZXNpZHVlc1NxdWFyZXNbaV0gLyAocHJlZFtpXSAqIHByZWRbaV0pO1xuICAgIH1cbiAgICBzaWdtYUEgPSBNYXRoLnNxcnQoc2lnbWFBIC8gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aCk7XG4gICAgc2lnbWFCID0gTWF0aC5zcXJ0KHNpZ21hQiAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuXG4gICAgaWYgKGVycm9yTW9kZWwgPT09IEZpdEVycm9yTW9kZWwuQ09NQklORUQpXG4gICAgICAoe3NpZ21hQSwgc2lnbWFCfSA9IGdldFNpZ21hc0ZvckNvbWJpbmVkRXJyb3JNb2RlbChzaWdtYUEsIHNpZ21hQiwgcmVzaWR1ZXNTcXVhcmVzLCBwcmVkKSk7XG5cbiAgICBjb25zdCBzaWdtYVNxSTogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgc2lnbWFTcUlbaV0gPSBNYXRoLnBvdyhzaWdtYUEgKyBzaWdtYUIgKiBwcmVkW2ldLCAyKTtcbiAgICAgIGxpa2VsaWhvb2QgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldIC8gc2lnbWFTcUlbaV0gKyBNYXRoLmxvZygyICogTWF0aC5QSSAqIHNpZ21hU3FJW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge2xpa2VsaWhvb2QsIHJlc2lkdWFsc307XG4gIH07XG59XG5cblxuZnVuY3Rpb24gZ2V0U2lnbWEodGFyZ2V0RnVuYzogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgZGF0YToge3k6IG51bWJlcltdLCB4OiBudW1iZXJbXX0sIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWxUeXBlLCBwYXJhbXM6IEZsb2F0MzJBcnJheSk6IHtzaWdtYUE6IG51bWJlciwgc2lnbWFCOiBudW1iZXJ9IHtcbiAgbGV0IHNpZ21hQSA9IDA7XG4gIGxldCBzaWdtYUIgPSAwO1xuXG4gIGNvbnN0IG9icyA9IGRhdGEueTtcbiAgY29uc3QgcHJlZCA9IGRhdGEueC5tYXAoKHgpID0+IHRhcmdldEZ1bmMocGFyYW1zLCB4KSk7XG4gIGNvbnN0IHJlc2lkdWFscyA9IG9icy5tYXAoKG9icywgaSkgPT4gb2JzIC0gcHJlZFtpXSk7XG4gIGNvbnN0IHJlc2lkdWVzU3F1YXJlcyA9IHJlc2lkdWFscy5tYXAoKHJlcykgPT4gTWF0aC5wb3cocmVzLCAyKSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoW0ZpdEVycm9yTW9kZWwuQ09OU1RBTlQsIEZpdEVycm9yTW9kZWwuQ09NQklORURdLmluY2x1ZGVzKGVycm9yTW9kZWwpKVxuICAgICAgc2lnbWFBICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcbiAgICBlbHNlIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLlBST1BPUlRJT05BTClcbiAgICAgIHNpZ21hQiArPSBNYXRoLnBvdyhyZXNpZHVhbHNbaV0gLyBNYXRoLmFicyhwcmVkW2ldKSwgMik7XG4gIH1cbiAgc2lnbWFBID0gTWF0aC5zcXJ0KHNpZ21hQSAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuICBzaWdtYUIgPSBNYXRoLnNxcnQoc2lnbWFCIC8gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aCk7XG5cbiAgaWYgKGVycm9yTW9kZWwgPT09IEZpdEVycm9yTW9kZWwuQ09NQklORUQpXG4gICAgKHtzaWdtYUEsIHNpZ21hQn0gPSBnZXRTaWdtYXNGb3JDb21iaW5lZEVycm9yTW9kZWwoc2lnbWFBLCBzaWdtYUIsIHJlc2lkdWVzU3F1YXJlcywgcHJlZCkpO1xuXG4gIHJldHVybiB7c2lnbWFBLCBzaWdtYUJ9O1xufVxuXG5mdW5jdGlvbiBnZXRTaWdtYXNGb3JDb21iaW5lZEVycm9yTW9kZWwoc2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyLCByZXNpZHVlc1NxdWFyZXM6IG51bWJlcltdLCBwcmVkOiBudW1iZXJbXSk6XG4gIHtzaWdtYUE6IG51bWJlciwgc2lnbWFCOiBudW1iZXJ9IHtcbiAgbGV0IGxpa2VsaWhvb2RDb21iaW5lZCA9IE51bWJlci5NQVhfVkFMVUU7XG4gIGxldCBmaW5hbFByb3BvcnRpb24gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSAxMDsgaSsrKSB7XG4gICAgbGV0IGxpa2VsaWhvb2RDb21iaW5lZExvY2FsID0gMDtcbiAgICBjb25zdCBwcm9wb3J0aW9uID0gaSAvIDEwO1xuICAgIGNvbnN0IHNpZ21hQUNvbWJpbmVkID0gc2lnbWFBICogcHJvcG9ydGlvbjtcbiAgICBjb25zdCBzaWdtYUJDb21iaW5lZCA9IHNpZ21hQSAqICgxIC0gcHJvcG9ydGlvbik7XG4gICAgY29uc3Qgc2lnbWFTcUlDb21iaW5lZDogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGorKykge1xuICAgICAgc2lnbWFTcUlDb21iaW5lZFtqXSA9IE1hdGgucG93KHNpZ21hQUNvbWJpbmVkICsgc2lnbWFCQ29tYmluZWQgKiBwcmVkW2pdLCAyKTtcbiAgICAgIGxpa2VsaWhvb2RDb21iaW5lZExvY2FsICs9IHJlc2lkdWVzU3F1YXJlc1tqXSAvIHNpZ21hU3FJQ29tYmluZWRbal0gKyBNYXRoLmxvZygyICogTWF0aC5QSSAqIHNpZ21hU3FJQ29tYmluZWRbal0pO1xuICAgIH1cbiAgICBpZiAobGlrZWxpaG9vZENvbWJpbmVkTG9jYWwgPCBsaWtlbGlob29kQ29tYmluZWQpIHtcbiAgICAgIGxpa2VsaWhvb2RDb21iaW5lZCA9IGxpa2VsaWhvb2RDb21iaW5lZExvY2FsO1xuICAgICAgZmluYWxQcm9wb3J0aW9uID0gcHJvcG9ydGlvbjtcbiAgICB9XG4gIH1cbiAgc2lnbWFCID0gc2lnbWFBICogKDEgLSBmaW5hbFByb3BvcnRpb24pO1xuICBzaWdtYUEgPSBzaWdtYUEgKiBmaW5hbFByb3BvcnRpb247XG5cbiAgcmV0dXJuIHtzaWdtYUEsIHNpZ21hQn07XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnZlQ29uZmlkZW5jZUludGVydmFscyhkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSwgcGFyYW1WYWx1ZXM6IEZsb2F0MzJBcnJheSxcbiAgY3VydmVGdW5jdGlvbjogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlciwgY29uZmlkZW5jZUxldmVsOiBudW1iZXIgPSAwLjA1LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSk6XG4gIEZpdENvbmZpZGVuY2VJbnRlcnZhbHMge1xuICBjb25zdCBlcnJvciA9IGdldFNpZ21hKGN1cnZlRnVuY3Rpb24sIGRhdGEsIGVycm9yTW9kZWwsIHBhcmFtVmFsdWVzKTtcbiAgY29uc3QgcXVhbnRpbGUgPSBqU3RhdC5ub3JtYWwuaW52KDEgLSBjb25maWRlbmNlTGV2ZWwvMiwgMCwgMSk7XG5cbiAgY29uc3QgdG9wID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gICAgcmV0dXJuIHZhbHVlICsgcXVhbnRpbGUgKiAoZXJyb3Iuc2lnbWFBICsgTWF0aC5hYnModmFsdWUpICogZXJyb3Iuc2lnbWFCKTtcbiAgfTtcblxuICBjb25zdCBib3R0b20gPSAoeDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBjdXJ2ZUZ1bmN0aW9uKHBhcmFtVmFsdWVzLCB4KTtcbiAgICByZXR1cm4gdmFsdWUgLSBxdWFudGlsZSAqIChlcnJvci5zaWdtYUEgKyBNYXRoLmFicyh2YWx1ZSkgKiBlcnJvci5zaWdtYUIpO1xuICB9O1xuXG4gIHJldHVybiB7Y29uZmlkZW5jZVRvcDogdG9wLCBjb25maWRlbmNlQm90dG9tOiBib3R0b219O1xufVxuXG5cbi8vIGNvbnN0IHNlcmllczogRml0U2VyaWVzID0gbmV3IEZpdFNlcmllcyhbXG4vLyAgIHsneCc6IDAsICd5JzogMH0sXG4vLyAgIHsneCc6IDEsICd5JzogMC41fSxcbi8vICAgeyd4JzogMiwgJ3knOiAxfSxcbi8vICAgeyd4JzogMywgJ3knOiAxMCwgJ291dGxpZXInOiB0cnVlfSxcbi8vICAgeyd4JzogNCwgJ3knOiAwfSxcbi8vIF0pO1xuXG4iXX0=
|
|
550
|
+
;
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZpdC1BUEkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJuZXctZml0LUFQSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE1BQU0sRUFHTixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBTWEsTUFBTSxFQUFFLFdBQVcsRUFDaEQsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGFBQWEsRUFFYixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEQsc0JBQXNCO0FBQ3RCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRy9FLGtDQUFrQztBQUNsQyxNQUFNLE9BQWdCLFdBQVc7Q0FNaEM7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsWUFBWTtJQUN4QixXQUFXLEVBQUUsYUFBYTtJQUMxQixrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMscUJBQXFCLEVBQUUsbUJBQW1CO0NBQ2xDLENBQUM7QUFtQ1gsTUFBTSxPQUFnQixHQUFHO0lBT3ZCLFlBQXNCLE1BQVksRUFBRSxJQUFlO1FBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJ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T0FBTyxLQUFLLEdBQUcsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDLENBQUM7SUFFRixPQUFPLEVBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUMsQ0FBQztBQUN4RCxDQUFDO0FBZ0JBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtcbiAgRklUX0ZVTkNUSU9OX0xJTkVBUixcbiAgbGluZWFyLFxuICBJRml0U2VyaWVzLFxuICBJRml0UG9pbnQsXG4gIEZJVF9GVU5DVElPTl9TSUdNT0lELFxuICBzaWdtb2lkLFxuICBGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUixcbiAgbG9nTGluZWFyLFxuICBGSVRfRlVOQ1RJT05fRVhQT05FTlRJQUwsXG4gIGV4cG9uZW50aWFsLFxuICBGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT04sXG4gIGZvdXJQTFJlZ3Jlc3Npb24sXG4gIElGaXRGdW5jdGlvbkRlc2NyaXB0aW9uLFxuICBGaXRQYXJhbUJvdW5kcyxcbiAgRml0TWFya2VyVHlwZSxcbiAgRml0T3V0bGllck1hcmtlclR5cGUsXG4gIEZpdExpbmVTdHlsZSxcbiAgRml0RXJyb3JNb2RlbFR5cGUsIEZpdEN1cnZlLCBnZXRBdWMsIGdldERldENvZWZmLFxuICBGSVRfSlNfRlVOQ1RJT04sXG4gIEZJVF9GVU5DVElPTl80UExfRE9TRV9SRVNQT05TRSxcbiAgZm91clBMRG9zZVJlc3BvbnNlLFxuICBEUk9QTElORVMsXG4gIEZpdEVycm9yTW9kZWwsXG4gIEZpdENvbmZpZGVuY2VJbnRlcnZhbHMsXG4gIGdldEZpdHRlZEN1cnZlLFxufSBmcm9tICcuL2ZpdC1jdXJ2ZSc7XG5pbXBvcnQge2ZpdFNlcmllcywgZ2V0RGF0YVBvaW50c30gZnJvbSAnLi9maXQtZGF0YSc7XG4vL0B0cy1pZ25vcmU6IG5vIHR5cGVzXG5pbXBvcnQgKiBhcyBqU3RhdCBmcm9tICdqc3RhdCc7XG5pbXBvcnQge0V4dHJlbXVtLCBPcHRpbWl6YXRpb25SZXN1bHR9IGZyb20gJy4vZml0dGluZy1hbGdvcml0aG0vb3B0aW1pemVyLW1pc2MnO1xuaW1wb3J0IHtwZXJmb3JtTmVsZGVyTWVhZE9wdGltaXphdGlvbn0gZnJvbSAnLi9maXR0aW5nLWFsZ29yaXRobS9vcHRpbWl6ZXInO1xuaW1wb3J0IHtORUxERVJfTUVBRF9ERUZBVUxUU30gZnJvbSAnLi9maXR0aW5nLWFsZ29yaXRobS9vcHRpbWl6ZXItbmVsZGVyLW1lYWQnO1xuXG5cbi8qKiBDbGFzcyBmb3IgdGhlIGZpdCBmdW5jdGlvbnMgKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaXRGdW5jdGlvbjxUID0gRml0PiB7XG4gIGFic3RyYWN0IGdldCBuYW1lKCk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdO1xuICBhYnN0cmFjdCBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogVDtcbiAgYWJzdHJhY3QgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyO1xuICBhYnN0cmFjdCBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXk7XG59XG5cbmV4cG9ydCBjb25zdCBGaXRGdW5jdGlvblR5cGVzID0ge1xuICBTSUdNT0lEOiAnc2lnbW9pZCcsXG4gIExJTkVBUjogJ2xpbmVhcicsXG4gIExPR19MSU5FQVI6ICdsb2ctbGluZWFyJyxcbiAgRVhQT05FTlRJQUw6ICdleHBvbmVudGlhbCcsXG4gIEZPVVJfUExfUkVHUkVTU0lPTjogJzRwbC1yZWdyZXNzaW9uJyxcbiAgRk9VUl9QTF9ET1NFX1JFU1BPTlNFOiAnNHBsLWRvc2UtcmVzcG9uc2UnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRml0RnVuY3Rpb25UeXBlID0gdHlwZW9mIEZpdEZ1bmN0aW9uVHlwZXNba2V5b2YgdHlwZW9mIEZpdEZ1bmN0aW9uVHlwZXNdO1xuXG5pbnRlcmZhY2UgSUZpdCB7XG4gIGF1YzogbnVtYmVyO1xuICByU3F1YXJlZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSUxpbmVhckZpdCBleHRlbmRzIElGaXQge1xuICBzbG9wZTogbnVtYmVyO1xuICBpbnRlcmNlcHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElMb2dMaW5lYXJGaXQgZXh0ZW5kcyBJTGluZWFyRml0IHt9XG5cbmludGVyZmFjZSBJU2lnbW9pZEZpdCBleHRlbmRzIElGaXQge1xuICB0b3A6IG51bWJlcjtcbiAgc2xvcGU6IG51bWJlcjtcbiAgaWM1MDogbnVtYmVyO1xuICBib3R0b206IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElFeHBvbmVudGlhbEZpdCBleHRlbmRzIElGaXQge1xuICBtYW50aXNzYTogbnVtYmVyO1xuICBwb3dlcjogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSUZvdXJQTFJlZ3Jlc3Npb25GaXQgZXh0ZW5kcyBJRml0IHtcbiAgdG9wOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xuICBzbG9wZTogbnVtYmVyO1xuICBlYzUwOiBudW1iZXI7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaXQgaW1wbGVtZW50cyBJRml0IHtcbiAgYXVjOiBudW1iZXI7XG4gIHJTcXVhcmVkOiBudW1iZXI7XG4gIHNlcmllczogRml0U2VyaWVzO1xuXG4gIGFic3RyYWN0IGdldCBuYW1lKCk6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzOiBJRml0LCBkYXRhOiBGaXRTZXJpZXMpIHtcbiAgICB0aGlzLmF1YyA9IHZhbHVlcy5hdWM7XG4gICAgdGhpcy5yU3F1YXJlZCA9IHZhbHVlcy5yU3F1YXJlZDtcbiAgICB0aGlzLnNlcmllcyA9IGRhdGE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEpTRnVuY3Rpb25GaXQgZXh0ZW5kcyBGaXQge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElGaXQsIGRhdGE6IEZpdFNlcmllcykge1xuICAgIHN1cGVyKHZhbHVlcywgZGF0YSk7XG4gIH1cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0pTX0ZVTkNUSU9OO1xuICB9XG59XG5cbmNsYXNzIExpbmVhckZpdCBleHRlbmRzIEZpdCBpbXBsZW1lbnRzIElMaW5lYXJGaXQge1xuICBzbG9wZTogbnVtYmVyO1xuICBpbnRlcmNlcHQ6IG51bWJlcjtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTElORUFSO1xuICB9XG5cbiAgY29uc3RydWN0b3IodmFsdWVzOiBJTGluZWFyRml0LCBkYXRhOiBGaXRTZXJpZXMpIHtcbiAgICBzdXBlcih2YWx1ZXMsIGRhdGEpO1xuICAgIHRoaXMuc2xvcGUgPSB2YWx1ZXMuc2xvcGU7XG4gICAgdGhpcy5pbnRlcmNlcHQgPSB2YWx1ZXMuaW50ZXJjZXB0O1xuICB9XG59XG5cbmNsYXNzIExvZ0xpbmVhckZpdCBleHRlbmRzIExpbmVhckZpdCBpbXBsZW1lbnRzIElMb2dMaW5lYXJGaXQge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUjtcbiAgfVxufVxuXG5jbGFzcyBTaWdtb2lkRml0IGV4dGVuZHMgRml0IGltcGxlbWVudHMgSVNpZ21vaWRGaXQge1xuICB0b3A6IG51bWJlcjtcbiAgc2xvcGU6IG51bWJlcjtcbiAgaWM1MDogbnVtYmVyO1xuICBib3R0b206IG51bWJlcjtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fU0lHTU9JRDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSVNpZ21vaWRGaXQsIGRhdGE6IEZpdFNlcmllcykge1xuICAgIHN1cGVyKHZhbHVlcywgZGF0YSk7XG4gICAgdGhpcy50b3AgPSB2YWx1ZXMudG9wO1xuICAgIHRoaXMuc2xvcGUgPSB2YWx1ZXMuc2xvcGU7XG4gICAgdGhpcy5pYzUwID0gdmFsdWVzLmljNTA7XG4gICAgdGhpcy5ib3R0b20gPSB2YWx1ZXMuYm90dG9tO1xuICB9XG59XG5cbmNsYXNzIEV4cG9uZW50aWFsRml0IGV4dGVuZHMgRml0IGltcGxlbWVudHMgSUV4cG9uZW50aWFsRml0IHtcbiAgbWFudGlzc2E6IG51bWJlcjtcbiAgcG93ZXI6IG51bWJlcjtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fRVhQT05FTlRJQUw7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElFeHBvbmVudGlhbEZpdCwgZGF0YTogRml0U2VyaWVzKSB7XG4gICAgc3VwZXIodmFsdWVzLCBkYXRhKTtcbiAgICB0aGlzLm1hbnRpc3NhID0gdmFsdWVzLm1hbnRpc3NhO1xuICAgIHRoaXMucG93ZXIgPSB2YWx1ZXMucG93ZXI7XG4gIH1cbn1cblxuY2xhc3MgRm91clBMUmVncmVzc2lvbkZpdCBleHRlbmRzIEZpdCBpbXBsZW1lbnRzIElGb3VyUExSZWdyZXNzaW9uRml0IHtcbiAgdG9wOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xuICBzbG9wZTogbnVtYmVyO1xuICBlYzUwOiBudW1iZXI7XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OXzRQTF9SRUdSRVNTSU9OO1xuICB9XG5cbiAgY29uc3RydWN0b3IodmFsdWVzOiBJRm91clBMUmVncmVzc2lvbkZpdCwgZGF0YTogRml0U2VyaWVzKSB7XG4gICAgc3VwZXIodmFsdWVzLCBkYXRhKTtcbiAgICB0aGlzLnRvcCA9IHZhbHVlcy50b3A7XG4gICAgdGhpcy5ib3R0b20gPSB2YWx1ZXMuYm90dG9tO1xuICAgIHRoaXMuc2xvcGUgPSB2YWx1ZXMuc2xvcGU7XG4gICAgdGhpcy5lYzUwID0gdmFsdWVzLmVjNTA7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXVjQW5kUnNxdWFyZWQoZml0Q3VydmU6ICh4OiBudW1iZXIpID0+IG51bWJlciwgZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiBJRml0IHtcbiAgcmV0dXJuIHtcbiAgICBhdWM6IGdldEF1YyhmaXRDdXJ2ZSwgZGF0YSksXG4gICAgclNxdWFyZWQ6IGdldERldENvZWZmKGZpdEN1cnZlLCBkYXRhKSxcbiAgfTtcbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgbGluZWFyIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgTGluZWFyRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbjxMaW5lYXJGaXQ+IHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OX0xJTkVBUjtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnU2xvcGUnLCAnSW50ZXJjZXB0J107XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogTGluZWFyRml0IHtcbiAgICByZXR1cm4gbmV3IExpbmVhckZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICBzbG9wZTogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIGludGVyY2VwdDogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICB9LCBkYXRhKTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGxpbmVhcihwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBsZXQgbWluSW5kZXggPSAwO1xuICAgIGxldCBtYXhJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoeFtpXSA8IHhbbWluSW5kZXhdKVxuICAgICAgICBtaW5JbmRleCA9IGk7XG4gICAgICBpZiAoeFtpXSA+IHhbbWF4SW5kZXhdKVxuICAgICAgICBtYXhJbmRleCA9IGk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVsdGFYID0geFttYXhJbmRleF0gLSB4W21pbkluZGV4XTtcbiAgICBjb25zdCBkZWx0YVkgPSB5W21heEluZGV4XSAtIHlbbWluSW5kZXhdO1xuICAgIGNvbnN0IEEgPSBkZWx0YVkgLyBkZWx0YVg7XG4gICAgY29uc3QgQiA9IHlbbWF4SW5kZXhdIC0gQSAqIHhbbWF4SW5kZXhdO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoMik7XG4gICAgcGFyYW1zLnNldChbQSwgQl0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgc2lnbW9pZCBmdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIFNpZ21vaWRGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPFNpZ21vaWRGaXQ+IHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OX1NJR01PSUQ7XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ1RvcCcsICdTbG9wZScsICdJQzUwJywgJ0JvdHRvbSddO1xuICB9XG5cbiAgZmlsbFBhcmFtcyhmaXRDdXJ2ZTogRml0Q3VydmUsIGRhdGE6IEZpdFNlcmllcyk6IFNpZ21vaWRGaXQge1xuICAgIHJldHVybiBuZXcgU2lnbW9pZEZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICB0b3A6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMF0sXG4gICAgICBzbG9wZTogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICAgIGljNTA6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMl0sXG4gICAgICBib3R0b206IGZpdEN1cnZlLnBhcmFtZXRlcnNbM10sXG4gICAgfSwgZGF0YSk7XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBzaWdtb2lkKHBhcmFtcywgeCk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIGNvbnN0IGRhdGFCb3VuZHMgPSBERy5SZWN0LmZyb21YWUFycmF5cyh4LCB5KTtcbiAgICBjb25zdCBtZWRZID0gKGRhdGFCb3VuZHMubWF4WSAtIGRhdGFCb3VuZHMubWluWSkgLyAyICsgZGF0YUJvdW5kcy5taW5ZO1xuICAgIGxldCBtYXhZSW50ZXJ2YWwgPSBkYXRhQm91bmRzLm1heFkgLSBkYXRhQm91bmRzLm1pblk7XG4gICAgbGV0IG5lYXJlc3RYSW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY3VycmVudEludGVydmFsID0gTWF0aC5hYnMoeVtpXSAtIG1lZFkpO1xuICAgICAgaWYgKGN1cnJlbnRJbnRlcnZhbCA8IG1heFlJbnRlcnZhbCkge1xuICAgICAgICBtYXhZSW50ZXJ2YWwgPSBjdXJyZW50SW50ZXJ2YWw7XG4gICAgICAgIG5lYXJlc3RYSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB4QXRNZWRZID0geFtuZWFyZXN0WEluZGV4XTtcbiAgICBjb25zdCBzbG9wZSA9IHlbMF0gPiB5W3kubGVuZ3RoIC0gMV0gPyAxIDogLTE7XG5cbiAgICAvLyBwYXJhbXMgYXJlOiBbbWF4LCB0YW4sIElDNTAsIG1pbl1cbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDQpO1xuICAgIHBhcmFtcy5zZXQoW2RhdGFCb3VuZHMubWF4WSwgc2xvcGUsIHhBdE1lZFksIGRhdGFCb3VuZHMubWluWV0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgbGluZWFyIGxvZ2FyaXRobWljIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgTG9nTGluZWFyRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbjxMb2dMaW5lYXJGaXQ+IHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OX0xPR19MSU5FQVI7XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ1Nsb3BlJywgJ0ludGVyY2VwdCddO1xuICB9XG5cbiAgZmlsbFBhcmFtcyhmaXRDdXJ2ZTogRml0Q3VydmUsIGRhdGE6IEZpdFNlcmllcyk6IExvZ0xpbmVhckZpdCB7XG4gICAgcmV0dXJuIG5ldyBMb2dMaW5lYXJGaXQoe1xuICAgICAgLi4uZ2V0QXVjQW5kUnNxdWFyZWQoZml0Q3VydmUuZml0dGVkQ3VydmUsIGdldERhdGFQb2ludHMoZGF0YSkpLFxuICAgICAgc2xvcGU6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMF0sXG4gICAgICBpbnRlcmNlcHQ6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMV0sXG4gICAgfSwgZGF0YSk7XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBsb2dMaW5lYXIocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheSgyKTtcbiAgICBwYXJhbXMuc2V0KFstNSwgMTAwXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBleHBvbmVudGlhbCBmdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIEV4cG9uZW50aWFsRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbjxFeHBvbmVudGlhbEZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fRVhQT05FTlRJQUw7XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ01hbnRpc3NhJywgJ1Bvd2VyJ107XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogRXhwb25lbnRpYWxGaXQge1xuICAgIHJldHVybiBuZXcgRXhwb25lbnRpYWxGaXQoe1xuICAgICAgLi4uZ2V0QXVjQW5kUnNxdWFyZWQoZml0Q3VydmUuZml0dGVkQ3VydmUsIGdldERhdGFQb2ludHMoZGF0YSkpLFxuICAgICAgbWFudGlzc2E6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMF0sXG4gICAgICBwb3dlcjogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICB9LCBkYXRhKTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGV4cG9uZW50aWFsKHBhcmFtcywgeCk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoMik7XG4gICAgcGFyYW1zLnNldChbMTAwLCAtMl0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgRm91ciBQYXJhbWV0ZXIgTG9naXN0aWMgUmVncmVzc2lvbiBmdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIEZvdXJQTFJlZ3Jlc3Npb25GdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPEZvdXJQTFJlZ3Jlc3Npb25GaXQ+IHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OXzRQTF9SRUdSRVNTSU9OO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydUb3AnLCAnU2xvcGUnLCAnRUM1MCcsICdCb3R0b20nXTtcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBGb3VyUExSZWdyZXNzaW9uRml0IHtcbiAgICByZXR1cm4gbmV3IEZvdXJQTFJlZ3Jlc3Npb25GaXQoe1xuICAgICAgLi4uZ2V0QXVjQW5kUnNxdWFyZWQoZml0Q3VydmUuZml0dGVkQ3VydmUsIGdldERhdGFQb2ludHMoZGF0YSkpLFxuICAgICAgdG9wOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzBdLFxuICAgICAgc2xvcGU6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMV0sXG4gICAgICBlYzUwOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzJdLFxuICAgICAgYm90dG9tOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzNdLFxuICAgIH0sIGRhdGEpO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZm91clBMUmVncmVzc2lvbihwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDQpO1xuICAgIGNvbnN0IGJvdHRvbSA9IE1hdGgubWluKC4uLnkpO1xuICAgIGNvbnN0IHRvcCA9IE1hdGgubWF4KC4uLnkpO1xuICAgIGNvbnN0IG1lZFkgPSAodG9wIC0gYm90dG9tKSAvIDIgKyBib3R0b207XG4gICAgbGV0IG1heFlJbnRlcnZhbCA9IHRvcCAtYm90dG9tO1xuICAgIGxldCBuZWFyZXN0WEluZGV4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbnRlcnZhbCA9IE1hdGguYWJzKHlbaV0gLSBtZWRZKTtcbiAgICAgIGlmIChjdXJyZW50SW50ZXJ2YWwgPCBtYXhZSW50ZXJ2YWwpIHtcbiAgICAgICAgbWF4WUludGVydmFsID0gY3VycmVudEludGVydmFsO1xuICAgICAgICBuZWFyZXN0WEluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZWM1MCA9IHhbbmVhcmVzdFhJbmRleF07XG4gICAgY29uc3Qgc2xvcGUgPSB5WzBdID4geVt5Lmxlbmd0aCAtIDFdPyAtMTAgOiAxMDtcbiAgICBwYXJhbXMuc2V0KFt0b3AsIHNsb3BlLCBlYzUwLCBib3R0b21dKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3VyUExEb3NlUmVzcG9uc2VGdW5jdGlvbiBleHRlbmRzIEZvdXJQTFJlZ3Jlc3Npb25GdW5jdGlvbiB7XG4gIG92ZXJyaWRlIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl80UExfRE9TRV9SRVNQT05TRTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnTWF4JywgJ0hpbGwnLCAnSUM1MCcsICdNaW4nXTtcbiAgfVxuXG4gIG92ZXJyaWRlIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGZvdXJQTERvc2VSZXNwb25zZShwYXJhbXMsIHgpO1xuICB9XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdXNlciBKUyBmdW5jdGlvbnMgKi9cbmV4cG9ydCBjbGFzcyBKc0Z1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb248Rml0PiB7XG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGFyYW1ldGVyTmFtZXM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgeUZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gICAgZ2V0SW5pdFBhcmFtc0Z1bmM6ICh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pID0+IEZsb2F0MzJBcnJheSwgcGFyYW1ldGVyTmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIHRoaXMuX3BhcmFtZXRlck5hbWVzID0gcGFyYW1ldGVyTmFtZXM7XG5cbiAgICB0aGlzLnkgPSB5RnVuYztcbiAgICB0aGlzLmdldEluaXRpYWxQYXJhbWV0ZXJzID0gZ2V0SW5pdFBhcmFtc0Z1bmM7XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogRml0IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuX3BhcmFtZXRlck5hbWVzLmxlbmd0aCk7XG4gICAgcGFyYW1zLnNldChmaXRDdXJ2ZS5wYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gbmV3IEpTRnVuY3Rpb25GaXQoey4uLmdldEF1Y0FuZFJzcXVhcmVkKGZpdEN1cnZlLmZpdHRlZEN1cnZlLCBnZXREYXRhUG9pbnRzKGRhdGEpKX0sIGRhdGEpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlck5hbWVzO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5cbi8vIE9iamVjdCB3aXRoIGZpdCBmdW5jdGlvbnNcbmV4cG9ydCBjb25zdCBmaXRGdW5jdGlvbnM6IHtba2V5OiBzdHJpbmddOiBGaXRGdW5jdGlvbjxhbnk+fSA9IHtcbiAgJ2xpbmVhcic6IG5ldyBMaW5lYXJGdW5jdGlvbigpLFxuICAnc2lnbW9pZCc6IG5ldyBTaWdtb2lkRnVuY3Rpb24oKSxcbiAgJ2xvZy1saW5lYXInOiBuZXcgTG9nTGluZWFyRnVuY3Rpb24oKSxcbiAgJ2V4cG9uZW50aWFsJzogbmV3IEV4cG9uZW50aWFsRnVuY3Rpb24oKSxcbiAgJzRwbC1yZWdyZXNzaW9uJzogbmV3IEZvdXJQTFJlZ3Jlc3Npb25GdW5jdGlvbigpLFxuICAnNHBsLWRvc2UtcmVzcG9uc2UnOiBuZXcgRm91clBMRG9zZVJlc3BvbnNlRnVuY3Rpb24oKSxcbn07XG5cbmNsYXNzIEZpdEZ1bmN0aW9ucyB7XG4gIHNlcmllczogRml0U2VyaWVzO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmllczogRml0U2VyaWVzKSB7XG4gICAgdGhpcy5zZXJpZXMgPSBzZXJpZXM7XG4gIH1cblxuICBsaW5lYXIoKTogTGluZWFyRml0IHtcbiAgICByZXR1cm4gZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9MSU5FQVJdXG4gICAgICAuZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fTElORUFSXSksIHRoaXMuc2VyaWVzKTtcbiAgfVxuXG4gIGxvZ0xpbmVhcigpOiBMb2dMaW5lYXJGaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OX0xPR19MSU5FQVJdXG4gICAgICAuZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUl0pLCB0aGlzLnNlcmllcyk7XG4gIH1cblxuICBzaWdtb2lkKCk6IFNpZ21vaWRGaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OX1NJR01PSURdXG4gICAgICAuZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fU0lHTU9JRF0pLCB0aGlzLnNlcmllcyk7XG4gIH1cblxuICBleHBvbmVudGlhbCgpOiBFeHBvbmVudGlhbEZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fRVhQT05FTlRJQUxdXG4gICAgICAuZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fRVhQT05FTlRJQUxdKSwgdGhpcy5zZXJpZXMpO1xuICB9XG5cbiAgZm91clBMKCk6IEZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OXzRQTF9SRUdSRVNTSU9OXVxuICAgICAgLmZpbGxQYXJhbXMoZml0U2VyaWVzKHRoaXMuc2VyaWVzLCBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OXzRQTF9SRUdSRVNTSU9OXSksIHRoaXMuc2VyaWVzKTtcbiAgfVxuXG4gIGZvdXJQTERvc2VSZXNwb25zZSgpOiBGb3VyUExSZWdyZXNzaW9uRml0IHtcbiAgICByZXR1cm4gZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl80UExfRE9TRV9SRVNQT05TRV0uZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fNFBMX0RPU0VfUkVTUE9OU0VdKSwgdGhpcy5zZXJpZXMpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEZpdFNlcmllcyBpbXBsZW1lbnRzIElGaXRTZXJpZXMge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG5cbiAgZml0OiBGaXRGdW5jdGlvbnM7XG4gIHBvaW50czogSUZpdFBvaW50W107XG5cbiAgY29uc3RydWN0b3IocG9pbnRzOiBJRml0UG9pbnRbXSkge1xuICAgIHRoaXMucG9pbnRzID0gcG9pbnRzO1xuICAgIHRoaXMuZml0ID0gbmV3IEZpdEZ1bmN0aW9ucyh0aGlzKTtcbiAgfVxuXG4gIG5hbWU/OiBzdHJpbmc7IC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgbmFtZVxuICBmaXRGdW5jdGlvbj86IHN0cmluZyB8IElGaXRGdW5jdGlvbkRlc2NyaXB0aW9uOyAvLyBjb250cm9scyB0aGUgc2VyaWVzIGZpdCBmdW5jdGlvblxuICBwYXJhbWV0ZXJzPzogbnVtYmVyW107IC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgcGFyYW1ldGVycywgYXV0by1maXR0aW5nIHdoZW4gbm90IGRlZmluZWRcbiAgcGFyYW1ldGVyQm91bmRzPzogRml0UGFyYW1Cb3VuZHNbXTsgLy8gZGVmaW5lcyB0aGUgYWNjZXB0YWJsZSByYW5nZSBvZiBlYWNoIHBhcmFtZXRlciwgd2hpY2ggaXMgdGFrZW4gaW50byBhY2NvdW50IGR1cmluZyB0aGUgZml0dGluZy4gU2VlIGFsc28gYHBhcmFtZXRlcnNgLlxuICBtYXJrZXJUeXBlPzogRml0TWFya2VyVHlwZTsgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIG1hcmtlciB0eXBlXG4gIG91dGxpZXJNYXJrZXJUeXBlPzogRml0T3V0bGllck1hcmtlclR5cGU7IC8vIGRlZmluZXMgdGhlIHNlcmllcyBvdXRsaWVyIG1hcmtlciB0eXBlXG4gIGxpbmVTdHlsZT86IEZpdExpbmVTdHlsZTsgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIGxpbmUgc3R5bGVcbiAgcG9pbnRDb2xvcj86IHN0cmluZzsgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIHBvaW50IGNvbG9yXG4gIGZpdExpbmVDb2xvcj86IHN0cmluZzsgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGZpdCBsaW5lIGNvbG9yXG4gIGNvbmZpZGVuY2VJbnRlcnZhbENvbG9yPzogc3RyaW5nOyAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgY29uZmlkZW5jZSBpbnRlcnZhbCBjb2xvclxuICBvdXRsaWVyQ29sb3I/OiBzdHJpbmc7IC8vIG92ZXJyaWRlcyB0aGUgc3RhbmRhcmRpemVkIHNlcmllcyBvdXRsaWVyIGNvbG9yXG4gIGNvbm5lY3REb3RzPzogYm9vbGVhbjsgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIGNvbm5lY3QgdGhlIHBvaW50cyB3aXRoIGxpbmVzIG9yIG5vdC4gSWYgdHJ1ZSBhbmQgc2hvd0ZpdExpbmUgaXMgZmFsc2UgLSBmaXR0aW5nIGlzIGRpc2FibGVkIC0gb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIHJlbmRlcmVkIGFjY29yZGluZ2x5IHRvIHRoZSBwYXJhbWV0ZXIgdmFsdWUuXG4gIHNob3dGaXRMaW5lPzogYm9vbGVhbjsgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGZpdCBsaW5lIG9yIG5vdFxuICBzaG93UG9pbnRzPzogc3RyaW5nOyAvLyBkZWZpbmVzIHRoZSBkYXRhIGRpc3BsYXkgbW9kZVxuICBzaG93T3V0bGllcnM/OiBib29sZWFuOyAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgb3V0bGllcnMgb3Igbm90XG4gIHNob3dDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbD86IGJvb2xlYW47IC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBjb25maWRlbmNlIGludGVydmFscyBvciBub3RcbiAgZXJyb3JNb2RlbD86IEZpdEVycm9yTW9kZWxUeXBlOyAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgZXJyb3IgbW9kZWxcbiAgY2xpY2tUb1RvZ2dsZT86IGJvb2xlYW47IC8vIGlmIHRydWUsIGNsaWNraW5nIG9uIHRoZSBwb2ludCB0b2dnbGVzIGl0cyBvdXRsaWVyIHN0YXR1cyBhbmQgY2F1c2VzIGN1cnZlIHJlZml0dGluZ1xuICBsYWJlbHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn07IC8vIGNvbnRyb2xsZWQgYnkgSUZpdENoYXJ0RGF0YSBsYWJlbE9wdGlvbnMsIHNob3dzIGxhYmVsc1xuICBkcm9wbGluZXM/OiBzdHJpbmdbXTsgLy8gZGVmaW5lcyB0aGUgZHJvcGxpbmVzIHRoYXQgd291bGQgYmUgc2hvd24gb24gdGhlIHBsb3QgKElDNTApXG4gIGNvbHVtbk5hbWU/OiBzdHJpbmc7IC8vIGRlZmluZXMgdGhlIGNvbHVtbiBuYW1lIHdoZXJlIHRoZSBzZXJpZXMgaXMgc3RvcmVkXG59XG5cblxuLyoqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSB7QGxpbmsgSUZpdFNlcmllc09wdGlvbnN9LiBVc2VmdWwgZm9yIGVkaXRpbmcsIGluaXRpYWxpemF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGV0Yy4gKi9cbmV4cG9ydCBjb25zdCBmaXRTZXJpZXNQcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdID0gW1xuICBERy5Qcm9wZXJ0eS5qcygnZml0RnVuY3Rpb24nLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgY2hvaWNlczogT2JqZWN0LmtleXMoZml0RnVuY3Rpb25zKSwgZGVmYXVsdFZhbHVlOiAnc2lnbW9pZCd9KSxcbiAgREcuUHJvcGVydHkuanMoJ3BvaW50Q29sb3InLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBudWxsYWJsZTogdHJ1ZSwgaW5wdXRUeXBlOiAnQ29sb3InfSksXG4gIERHLlByb3BlcnR5LmpzKCdmaXRMaW5lQ29sb3InLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBudWxsYWJsZTogdHJ1ZSwgaW5wdXRUeXBlOiAnQ29sb3InfSksXG4gIERHLlByb3BlcnR5LmpzKCdvdXRsaWVyQ29sb3InLCBERy5UWVBFLlNUUklORyxcbiAgICB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBudWxsYWJsZTogdHJ1ZSwgaW5wdXRUeXBlOiAnQ29sb3InfSksXG4gIERHLlByb3BlcnR5LmpzKCdlcnJvck1vZGVsJywgREcuVFlQRS5TVFJJTkcsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZWZhdWx0VmFsdWU6ICdjb25zdGFudCcsXG4gICAgY2hvaWNlczogWydjb25zdGFudCcsICdwcm9wb3J0aW9uYWwnLCAnY29tYmluZWQnXSwgbnVsbGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdjb25uZWN0RG90cycsIERHLlRZUEUuQk9PTCwge2NhdGVnb3J5OiAnRml0dGluZycsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2NsaWNrVG9Ub2dnbGUnLCBERy5UWVBFLkJPT0wsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZXNjcmlwdGlvbjpcbiAgICAnQ2xpY2sgb24gYSBwb2ludCB0byBtYXJrIGl0IGFzIG91dGxpZXIgYW5kIHJlZml0JywgbnVsbGFibGU6IHRydWUsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dGaXRMaW5lJywgREcuVFlQRS5CT09MLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVmYXVsdFZhbHVlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93UG9pbnRzJywgREcuVFlQRS5TVFJJTkcsIC8vIHJld3JpdGUgZGVzY3JpcHRpb25cbiAgICB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVzY3JpcHRpb246ICdXaGV0aGVyIHBvaW50cy9jYW5kbGVzdGlja3Mvbm9uZSBzaG91bGQgYmUgcmVuZGVyZWQnLFxuICAgICAgZGVmYXVsdFZhbHVlOiAncG9pbnRzJywgY2hvaWNlczogWydwb2ludHMnLCAnY2FuZGxlc3RpY2tzJywgJ2JvdGgnXX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd091dGxpZXJzJywgREcuVFlQRS5CT09MLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVmYXVsdFZhbHVlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93Q3VydmVDb25maWRlbmNlSW50ZXJ2YWwnLCBERy5UWVBFLkJPT0wsXG4gICAge2NhdGVnb3J5OiAnRml0dGluZycsIGRlc2NyaXB0aW9uOiAnV2hldGhlciBjb25maWRlbmNlIGludGVydmFscyBzaG91bGQgYmUgcmVuZGVyZWQnLCBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBmcmllbmRseU5hbWU6ICdDb25maWRlbmNlIEludGVydmFsJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWFya2VyVHlwZScsIERHLlRZUEUuU1RSSU5HLCB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBkZWZhdWx0VmFsdWU6ICdjaXJjbGUnLFxuICAgIGNob2ljZXM6IFsnYXN0ZXJpc2snLCAnY2lyY2xlJywgJ2Nyb3NzIGJvcmRlcicsICdkaWFtb25kJywgJ3NxdWFyZScsICdzdGFyJyxcbiAgICAgICd0cmlhbmdsZSBib3R0b20nLCAndHJpYW5nbGUgbGVmdCcsICd0cmlhbmdsZSByaWdodCcsICd0cmlhbmdsZSB0b3AnXSwgbnVsbGFibGU6IGZhbHNlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIGZyaWVuZGx5TmFtZTogJ01hcmtlcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ291dGxpZXJNYXJrZXJUeXBlJywgREcuVFlQRS5TVFJJTkcsIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIGRlZmF1bHRWYWx1ZTogJ291dGxpZXInLFxuICAgIGNob2ljZXM6IFsnYXN0ZXJpc2snLCAnY2lyY2xlJywgJ2Nyb3NzIGJvcmRlcicsICdkaWFtb25kJywgJ291dGxpZXInLCAnc3F1YXJlJywgJ3N0YXInLFxuICAgICAgJ3RyaWFuZ2xlIGJvdHRvbScsICd0cmlhbmdsZSBsZWZ0JywgJ3RyaWFuZ2xlIHJpZ2h0JywgJ3RyaWFuZ2xlIHRvcCddLCBudWxsYWJsZTogZmFsc2UsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgZnJpZW5kbHlOYW1lOiAnT3V0bGllciBNYXJrZXInfSksXG4gIERHLlByb3BlcnR5LmpzKCdsaW5lU3R5bGUnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgZGVmYXVsdFZhbHVlOiAnc29saWQnLFxuICAgIGNob2ljZXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCcsICdkYXNoZG90dGVkJ10sIG51bGxhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnZHJvcGxpbmVzJywgREcuVFlQRS5TVFJJTkdfTElTVCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciBzcGVjaWZpYyBkcm9wbGluZXMgc2hvdWxkIGJlIHJlbmRlcmVkJyxcbiAgICBjaG9pY2VzOiBEUk9QTElORVMsIGlucHV0VHlwZTogJ011bHRpQ2hvaWNlJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnY29sdW1uTmFtZScsIERHLlRZUEUuU1RSSU5HLCB7ZGVzY3JpcHRpb246ICdDb2x1bW4gbmFtZSB3aGVyZSB0aGUgc2VyaWVzIGlzIHN0b3JlZCcsIGRlZmF1bHRWYWx1ZTogJyd9KSxcbl07XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24oc2VyaWVzRml0RnVuYzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24pOiBGaXRGdW5jdGlvbjxGaXQ+IHtcbiAgaWYgKHR5cGVvZiBzZXJpZXNGaXRGdW5jID09PSAnc3RyaW5nJylcbiAgICByZXR1cm4gZml0RnVuY3Rpb25zW3Nlcmllc0ZpdEZ1bmNdO1xuICBlbHNlIGlmICghZml0RnVuY3Rpb25zW3Nlcmllc0ZpdEZ1bmMubmFtZV0pIHtcbiAgICBjb25zdCBuYW1lID0gc2VyaWVzRml0RnVuYy5uYW1lO1xuICAgIGNvbnN0IHBhcmFtTmFtZXMgPSBzZXJpZXNGaXRGdW5jLnBhcmFtZXRlck5hbWVzO1xuICAgIGNvbnN0IGZpdEZ1bmN0aW9uUGFydHMgPSBzZXJpZXNGaXRGdW5jLmZ1bmN0aW9uLnNwbGl0KCc9PicpLm1hcCgoZWxlbSkgPT4gZWxlbS50cmltKCkpO1xuICAgIGNvbnN0IGdldEluaXRQYXJhbXNQYXJ0cyA9IHNlcmllc0ZpdEZ1bmMuZ2V0SW5pdGlhbFBhcmFtZXRlcnMuc3BsaXQoJz0+JykubWFwKChlbGVtKSA9PiBlbGVtLnRyaW0oKSk7XG4gICAgY29uc3QgZml0RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24oZml0RnVuY3Rpb25QYXJ0c1swXS5zbGljZSgxLCBmaXRGdW5jdGlvblBhcnRzWzBdLmxlbmd0aCAtIDEpLFxuICAgICAgYCR7Zml0RnVuY3Rpb25QYXJ0c1sxXS5pbmNsdWRlcygnOycpID8gJycgOiAncmV0dXJuICd9JHtmaXRGdW5jdGlvblBhcnRzWzFdfWApO1xuICAgIGNvbnN0IGdldEluaXRQYXJhbXNGdW5jID0gbmV3IEZ1bmN0aW9uKGdldEluaXRQYXJhbXNQYXJ0c1swXS5zbGljZSgxLCBnZXRJbml0UGFyYW1zUGFydHNbMF0ubGVuZ3RoIC0gMSksXG4gICAgICBgcmV0dXJuICR7Z2V0SW5pdFBhcmFtc1BhcnRzWzFdfWApO1xuICAgIGNvbnN0IGZpdEZ1bmMgPSBuZXcgSnNGdW5jdGlvbihuYW1lLCAoZml0RnVuY3Rpb24gYXMgKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlciksXG4gICAgICAoZ2V0SW5pdFBhcmFtc0Z1bmMgYXMgKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSkgPT4gRmxvYXQzMkFycmF5KSwgcGFyYW1OYW1lcyk7XG4gICAgZml0RnVuY3Rpb25zW25hbWVdID0gZml0RnVuYztcbiAgfVxuXG4gIHJldHVybiBmaXRGdW5jdGlvbnNbc2VyaWVzRml0RnVuYy5uYW1lXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpdERhdGEoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sIGZpdEZ1bmN0aW9uOiBGaXRGdW5jdGlvbjxGaXQ+LCBlcnJvck1vZGVsPzogRml0RXJyb3JNb2RlbFR5cGUsXG4gIHBhcmFtZXRlckJvdW5kcz86IEZpdFBhcmFtQm91bmRzW10pOiBGaXRDdXJ2ZSB7XG4gIGVycm9yTW9kZWwgPz89IEZpdEVycm9yTW9kZWwuQ09OU1RBTlQgYXMgRml0RXJyb3JNb2RlbFR5cGU7XG4gIGNvbnN0IGN1cnZlRnVuY3Rpb24gPSBmaXRGdW5jdGlvbi55O1xuICBsZXQgcGFyYW1WYWx1ZXMgPSBmaXRGdW5jdGlvbi5nZXRJbml0aWFsUGFyYW1ldGVycyhkYXRhLngsIGRhdGEueSk7XG5cbiAgY29uc3Qgb2YgPSBvYmplY3RpdmVGYWN0b3J5KGN1cnZlRnVuY3Rpb24sIGRhdGEsIGVycm9yTW9kZWwpO1xuICBjb25zdCBib3R0b21QYXJhbUJvdW5kcyA9IG5ldyBGbG9hdDMyQXJyYXkoZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoKTtcbiAgY29uc3QgdG9wUGFyYW1Cb3VuZHMgPSBuZXcgRmxvYXQzMkFycmF5KGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICBib3R0b21QYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldID09PSAwID8gLTEgOiBwYXJhbVZhbHVlc1tpXSAtIE1hdGguYWJzKHBhcmFtVmFsdWVzW2ldICogMC41KTtcbiAgICB0b3BQYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldID09PSAwID8gMSA6IHBhcmFtVmFsdWVzW2ldICsgTWF0aC5hYnMocGFyYW1WYWx1ZXNbaV0gKiAwLjUpO1xuICB9XG4gIGNvbnN0IHBhcmFtZXRlckJvdW5kc0JpdHNldDogREcuQml0U2V0ID0gREcuQml0U2V0LmNyZWF0ZShmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGggKiAyKTtcbiAgaWYgKHBhcmFtZXRlckJvdW5kcyAmJiBwYXJhbWV0ZXJCb3VuZHMubGVuZ3RoICE9PSAwKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJCb3VuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChwYXJhbWV0ZXJCb3VuZHNbaV0ubWluICE9PSB1bmRlZmluZWQgJiYgcGFyYW1ldGVyQm91bmRzW2ldLm1pbiAhPT0gbnVsbCkge1xuICAgICAgICBib3R0b21QYXJhbUJvdW5kc1tpXSA9IHBhcmFtZXRlckJvdW5kc1tpXS5taW4hO1xuICAgICAgICBwYXJhbWV0ZXJCb3VuZHNCaXRzZXQuc2V0KGkgKiAyLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbWV0ZXJCb3VuZHNbaV0ubWF4ICE9PSB1bmRlZmluZWQgJiYgcGFyYW1ldGVyQm91bmRzW2ldLm1heCAhPT0gbnVsbCkge1xuICAgICAgICB0b3BQYXJhbUJvdW5kc1tpXSA9IHBhcmFtZXRlckJvdW5kc1tpXS5tYXghO1xuICAgICAgICBwYXJhbWV0ZXJCb3VuZHNCaXRzZXQuc2V0KGkgKiAyICsgMSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IGdldENvbnNpc3RlbmN5ID0gKGV4dHJlbXVtOiBFeHRyZW11bSkgPT4ge1xuICAgIGNvbnN0IHJlc2lkdWFscyA9IG9mKGV4dHJlbXVtLnBvaW50KS5yZXNpZHVhbHM7XG4gICAgbGV0IHExcTQgPSAwO1xuICAgIGxldCBxMnEzID0gMDtcbiAgICAvLyBUT0RPOiByZXdyaXRlIHF1YXJ0aWxlcyB0byBhIGJldHRlciBjb25kaXRpb25cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWFscy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlc2lkdWFscy5sZW5ndGggLyA0ID4gaSlcbiAgICAgICAgcTFxNCArPSBNYXRoLnBvdyhyZXNpZHVhbHNbaV0sIDIpO1xuICAgICAgZWxzZSBpZiAoMyAqIHJlc2lkdWFscy5sZW5ndGggLyA0ID4gaSlcbiAgICAgICAgcTJxMyArPSBNYXRoLnBvdyhyZXNpZHVhbHNbaV0sIDIpO1xuICAgICAgZWxzZVxuICAgICAgICBxMXE0ICs9IE1hdGgucG93KHJlc2lkdWFsc1tpXSwgMik7XG4gICAgfVxuICAgIHJldHVybiBxMXE0IC8gcTJxMztcbiAgfTtcblxuICBsZXQgaXRlciA9IC0xO1xuICBsZXQgY29udGludWVPcHRpbWl6YXRpb24gPSAwO1xuICBsZXQgc3RhdGlzdGljczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGxldCBvcHRpbWl6YXRpb246IE9wdGltaXphdGlvblJlc3VsdDtcbiAgbGV0IG1pbklkeCA9IDA7XG4gIGRvIHtcbiAgICBvcHRpbWl6YXRpb24gPSBwZXJmb3JtTmVsZGVyTWVhZE9wdGltaXphdGlvbihvZiwgYm90dG9tUGFyYW1Cb3VuZHMsIHRvcFBhcmFtQm91bmRzLCB7XG4gICAgICB0b2xlcmFuY2U6IE5FTERFUl9NRUFEX0RFRkFVTFRTLlRPTEVSQU5DRSxcbiAgICAgIG1heEl0ZXI6IE5FTERFUl9NRUFEX0RFRkFVTFRTLk1BWF9JVEVSLFxuICAgICAgbm9uWmVyb1BhcmFtOiBORUxERVJfTUVBRF9ERUZBVUxUUy5OT05fWkVST19QQVJBTSxcbiAgICAgIGluaXRpYWxTY2FsZTogTkVMREVSX01FQURfREVGQVVMVFMuSU5JVElBTF9TQ0FMRSxcbiAgICAgIHNjYWxlUmVmbGVjdGlvbjogTkVMREVSX01FQURfREVGQVVMVFMuU0NBTEVfUkVGTEVDVElPTixcbiAgICAgIHNjYWxlRXhwYW5zaW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9FWFBBTlNJT04sXG4gICAgICBzY2FsZUNvbnRyYWN0aW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9DT05UUkFDVElPTixcbiAgICB9LCAxMCwgcGFyYW1WYWx1ZXMpO1xuXG4gICAgbWluSWR4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG9wdGltaXphdGlvbi5leHRyZW11bXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChvcHRpbWl6YXRpb24uZXh0cmVtdW1zW2ldLmNvc3QgPCBvcHRpbWl6YXRpb24uZXh0cmVtdW1zW21pbklkeF0uY29zdClcbiAgICAgICAgbWluSWR4ID0gaTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0aXN0aWNzID0gZ2V0Q29uc2lzdGVuY3kob3B0aW1pemF0aW9uLmV4dHJlbXVtc1ttaW5JZHhdKTtcbiAgICBpZiAoc3RhdGlzdGljcyA9PT0gbnVsbClcbiAgICAgIHN0YXRpc3RpY3MgPSBuZXdTdGF0aXN0aWNzO1xuICAgIGVsc2UgaWYgKG5ld1N0YXRpc3RpY3MgPCBzdGF0aXN0aWNzKSB7XG4gICAgICBzdGF0aXN0aWNzID0gbmV3U3RhdGlzdGljcztcbiAgICAgIGNvbnRpbnVlT3B0aW1pemF0aW9uID0gMDtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgY29udGludWVPcHRpbWl6YXRpb24rKztcblxuICAgIHBhcmFtVmFsdWVzID0gb3B0aW1pemF0aW9uLmV4dHJlbXVtc1ttaW5JZHhdLnBvaW50O1xuXG4gICAgaWYgKGl0ZXIgPiA0MCB8fCBjb250aW51ZU9wdGltaXphdGlvbiA9PT0gMylcbiAgICAgIGJyZWFrO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFwYXJhbWV0ZXJCb3VuZHNCaXRzZXQuZ2V0KGkgKiAyKSlcbiAgICAgICAgYm90dG9tUGFyYW1Cb3VuZHNbaV0gPSBwYXJhbVZhbHVlc1tpXSAtIE1hdGguYWJzKHBhcmFtVmFsdWVzW2ldICogKGNvbnRpbnVlT3B0aW1pemF0aW9uICsgMC41KSk7XG4gICAgICBpZiAoIXBhcmFtZXRlckJvdW5kc0JpdHNldC5nZXQoaSAqIDIgKyAxKSlcbiAgICAgICAgdG9wUGFyYW1Cb3VuZHNbaV0gPSBwYXJhbVZhbHVlc1tpXSArIE1hdGguYWJzKHBhcmFtVmFsdWVzW2ldICogKGNvbnRpbnVlT3B0aW1pemF0aW9uICsgMC41KSk7XG4gICAgfVxuXG4gICAgaXRlcisrO1xuICB9IHdoaWxlICh0cnVlKTtcblxuICBjb25zdCBmaXR0ZWRDdXJ2ZSA9IGdldEZpdHRlZEN1cnZlKGN1cnZlRnVuY3Rpb24sIHBhcmFtVmFsdWVzKTtcblxuICByZXR1cm4ge1xuICAgIGZpdHRlZEN1cnZlOiBmaXR0ZWRDdXJ2ZSxcbiAgICBwYXJhbWV0ZXJzOiBwYXJhbVZhbHVlcyxcbiAgfTtcbn1cblxuXG5mdW5jdGlvbiBvYmplY3RpdmVGYWN0b3J5KHRhcmdldEZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt5OiBudW1iZXJbXSwgeDogbnVtYmVyW119LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSk6XG4gICAgKHBhcmFtczogRmxvYXQzMkFycmF5KSA9PiB7bGlrZWxpaG9vZDogbnVtYmVyLCByZXNpZHVhbHM6IG51bWJlcltdfSB7XG4gIHJldHVybiAocGFyYW1zOiBGbG9hdDMyQXJyYXkpID0+IHtcbiAgICBsZXQgbGlrZWxpaG9vZCA9IDA7XG4gICAgbGV0IHNpZ21hQSA9IDA7XG4gICAgbGV0IHNpZ21hQiA9IDA7XG5cbiAgICBjb25zdCBvYnMgPSBkYXRhLnk7XG4gICAgY29uc3QgcHJlZCA9IGRhdGEueC5tYXAoKHgpID0+IHRhcmdldEZ1bmMocGFyYW1zLCB4KSk7XG4gICAgY29uc3QgcmVzaWR1YWxzID0gb2JzLm1hcCgob2JzLCBpKSA9PiBvYnMgLSBwcmVkW2ldKTtcbiAgICBjb25zdCByZXNpZHVlc1NxdWFyZXMgPSByZXNpZHVhbHMubWFwKChyZXMpID0+IE1hdGgucG93KHJlcywgMikpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChbRml0RXJyb3JNb2RlbC5DT05TVEFOVCwgRml0RXJyb3JNb2RlbC5DT01CSU5FRF0uaW5jbHVkZXMoZXJyb3JNb2RlbCkpXG4gICAgICAgIHNpZ21hQSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gICAgICBlbHNlIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLlBST1BPUlRJT05BTClcbiAgICAgICAgc2lnbWFCICs9IHJlc2lkdWVzU3F1YXJlc1tpXSAvIChwcmVkW2ldICogcHJlZFtpXSk7XG4gICAgfVxuICAgIHNpZ21hQSA9IE1hdGguc3FydChzaWdtYUEgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcbiAgICBzaWdtYUIgPSBNYXRoLnNxcnQoc2lnbWFCIC8gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aCk7XG5cbiAgICBpZiAoZXJyb3JNb2RlbCA9PT0gRml0RXJyb3JNb2RlbC5DT01CSU5FRClcbiAgICAgICh7c2lnbWFBLCBzaWdtYUJ9ID0gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQSwgc2lnbWFCLCByZXNpZHVlc1NxdWFyZXMsIHByZWQpKTtcblxuICAgIGNvbnN0IHNpZ21hU3FJOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzaWdtYVNxSVtpXSA9IE1hdGgucG93KHNpZ21hQSArIHNpZ21hQiAqIHByZWRbaV0sIDIpO1xuICAgICAgbGlrZWxpaG9vZCArPSByZXNpZHVlc1NxdWFyZXNbaV0gLyBzaWdtYVNxSVtpXSArIE1hdGgubG9nKDIgKiBNYXRoLlBJICogc2lnbWFTcUlbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB7bGlrZWxpaG9vZCwgcmVzaWR1YWxzfTtcbiAgfTtcbn1cblxuXG5mdW5jdGlvbiBnZXRTaWdtYSh0YXJnZXRGdW5jOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLFxuICBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSwgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbFR5cGUsIHBhcmFtczogRmxvYXQzMkFycmF5KToge3NpZ21hQTogbnVtYmVyLCBzaWdtYUI6IG51bWJlcn0ge1xuICBsZXQgc2lnbWFBID0gMDtcbiAgbGV0IHNpZ21hQiA9IDA7XG5cbiAgY29uc3Qgb2JzID0gZGF0YS55O1xuICBjb25zdCBwcmVkID0gZGF0YS54Lm1hcCgoeCkgPT4gdGFyZ2V0RnVuYyhwYXJhbXMsIHgpKTtcbiAgY29uc3QgcmVzaWR1YWxzID0gb2JzLm1hcCgob2JzLCBpKSA9PiBvYnMgLSBwcmVkW2ldKTtcbiAgY29uc3QgcmVzaWR1ZXNTcXVhcmVzID0gcmVzaWR1YWxzLm1hcCgocmVzKSA9PiBNYXRoLnBvdyhyZXMsIDIpKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChbRml0RXJyb3JNb2RlbC5DT05TVEFOVCwgRml0RXJyb3JNb2RlbC5DT01CSU5FRF0uaW5jbHVkZXMoZXJyb3JNb2RlbCkpXG4gICAgICBzaWdtYUEgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldO1xuICAgIGVsc2UgaWYgKGVycm9yTW9kZWwgPT09IEZpdEVycm9yTW9kZWwuUFJPUE9SVElPTkFMKVxuICAgICAgc2lnbWFCICs9IE1hdGgucG93KHJlc2lkdWFsc1tpXSAvIE1hdGguYWJzKHByZWRbaV0pLCAyKTtcbiAgfVxuICBzaWdtYUEgPSBNYXRoLnNxcnQoc2lnbWFBIC8gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aCk7XG4gIHNpZ21hQiA9IE1hdGguc3FydChzaWdtYUIgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcblxuICBpZiAoZXJyb3JNb2RlbCA9PT0gRml0RXJyb3JNb2RlbC5DT01CSU5FRClcbiAgICAoe3NpZ21hQSwgc2lnbWFCfSA9IGdldFNpZ21hc0ZvckNvbWJpbmVkRXJyb3JNb2RlbChzaWdtYUEsIHNpZ21hQiwgcmVzaWR1ZXNTcXVhcmVzLCBwcmVkKSk7XG5cbiAgcmV0dXJuIHtzaWdtYUEsIHNpZ21hQn07XG59XG5cbmZ1bmN0aW9uIGdldFNpZ21hc0ZvckNvbWJpbmVkRXJyb3JNb2RlbChzaWdtYUE6IG51bWJlciwgc2lnbWFCOiBudW1iZXIsIHJlc2lkdWVzU3F1YXJlczogbnVtYmVyW10sIHByZWQ6IG51bWJlcltdKTpcbiAge3NpZ21hQTogbnVtYmVyLCBzaWdtYUI6IG51bWJlcn0ge1xuICBsZXQgbGlrZWxpaG9vZENvbWJpbmVkID0gTnVtYmVyLk1BWF9WQUxVRTtcbiAgbGV0IGZpbmFsUHJvcG9ydGlvbiA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDw9IDEwOyBpKyspIHtcbiAgICBsZXQgbGlrZWxpaG9vZENvbWJpbmVkTG9jYWwgPSAwO1xuICAgIGNvbnN0IHByb3BvcnRpb24gPSBpIC8gMTA7XG4gICAgY29uc3Qgc2lnbWFBQ29tYmluZWQgPSBzaWdtYUEgKiBwcm9wb3J0aW9uO1xuICAgIGNvbnN0IHNpZ21hQkNvbWJpbmVkID0gc2lnbWFBICogKDEgLSBwcm9wb3J0aW9uKTtcbiAgICBjb25zdCBzaWdtYVNxSUNvbWJpbmVkOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBzaWdtYVNxSUNvbWJpbmVkW2pdID0gTWF0aC5wb3coc2lnbWFBQ29tYmluZWQgKyBzaWdtYUJDb21iaW5lZCAqIHByZWRbal0sIDIpO1xuICAgICAgbGlrZWxpaG9vZENvbWJpbmVkTG9jYWwgKz0gcmVzaWR1ZXNTcXVhcmVzW2pdIC8gc2lnbWFTcUlDb21iaW5lZFtqXSArIE1hdGgubG9nKDIgKiBNYXRoLlBJICogc2lnbWFTcUlDb21iaW5lZFtqXSk7XG4gICAgfVxuICAgIGlmIChsaWtlbGlob29kQ29tYmluZWRMb2NhbCA8IGxpa2VsaWhvb2RDb21iaW5lZCkge1xuICAgICAgbGlrZWxpaG9vZENvbWJpbmVkID0gbGlrZWxpaG9vZENvbWJpbmVkTG9jYWw7XG4gICAgICBmaW5hbFByb3BvcnRpb24gPSBwcm9wb3J0aW9uO1xuICAgIH1cbiAgfVxuICBzaWdtYUIgPSBzaWdtYUEgKiAoMSAtIGZpbmFsUHJvcG9ydGlvbik7XG4gIHNpZ21hQSA9IHNpZ21hQSAqIGZpbmFsUHJvcG9ydGlvbjtcblxuICByZXR1cm4ge3NpZ21hQSwgc2lnbWFCfTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VydmVDb25maWRlbmNlSW50ZXJ2YWxzKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBwYXJhbVZhbHVlczogRmxvYXQzMkFycmF5LFxuICBjdXJ2ZUZ1bmN0aW9uOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLCBjb25maWRlbmNlTGV2ZWw6IG51bWJlciA9IDAuMDUsIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWxUeXBlKTpcbiAgRml0Q29uZmlkZW5jZUludGVydmFscyB7XG4gIGNvbnN0IGVycm9yID0gZ2V0U2lnbWEoY3VydmVGdW5jdGlvbiwgZGF0YSwgZXJyb3JNb2RlbCwgcGFyYW1WYWx1ZXMpO1xuICBjb25zdCBxdWFudGlsZSA9IGpTdGF0Lm5vcm1hbC5pbnYoMSAtIGNvbmZpZGVuY2VMZXZlbC8yLCAwLCAxKTtcblxuICBjb25zdCB0b3AgPSAoeDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBjdXJ2ZUZ1bmN0aW9uKHBhcmFtVmFsdWVzLCB4KTtcbiAgICByZXR1cm4gdmFsdWUgKyBxdWFudGlsZSAqIChlcnJvci5zaWdtYUEgKyBNYXRoLmFicyh2YWx1ZSkgKiBlcnJvci5zaWdtYUIpO1xuICB9O1xuXG4gIGNvbnN0IGJvdHRvbSA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICAgIHJldHVybiB2YWx1ZSAtIHF1YW50aWxlICogKGVycm9yLnNpZ21hQSArIE1hdGguYWJzKHZhbHVlKSAqIGVycm9yLnNpZ21hQik7XG4gIH07XG5cbiAgcmV0dXJuIHtjb25maWRlbmNlVG9wOiB0b3AsIGNvbmZpZGVuY2VCb3R0b206IGJvdHRvbX07XG59XG5cblxuLy8gY29uc3Qgc2VyaWVzOiBGaXRTZXJpZXMgPSBuZXcgRml0U2VyaWVzKFtcbi8vICAgeyd4JzogMCwgJ3knOiAwfSxcbi8vICAgeyd4JzogMSwgJ3knOiAwLjV9LFxuLy8gICB7J3gnOiAyLCAneSc6IDF9LFxuLy8gICB7J3gnOiAzLCAneSc6IDEwLCAnb3V0bGllcic6IHRydWV9LFxuLy8gICB7J3gnOiA0LCAneSc6IDB9LFxuLy8gXSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRml0Q2VsbE91dGxpZXJUb2dnbGVBcmdzIHtcbiAgZ3JpZENlbGw6IERHLkdyaWRDZWxsO1xuICBzZXJpZXM6IElGaXRTZXJpZXM7XG4gIHNlcmllc0lkeDogbnVtYmVyO1xuICBwb2ludElkeDogbnVtYmVyO1xufTtcbiJdfQ==
|