@datagrok-libraries/statistics 1.9.2 → 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 CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "friendlyName": "statistics",
7
- "version": "1.9.2",
7
+ "version": "1.10.0",
8
8
  "description": "Statistics utilities",
9
9
  "author": {
10
10
  "name": "Dmytro Kovalyov",
@@ -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"}
@@ -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
@@ -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;AAwED,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"}
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"}
@@ -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
- return new DG.Rect(x, y, width, height);
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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LElBQUksWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMzQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM3RixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsTUFBZSxFQUFFLFlBQThCLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDOUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3pCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDckIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUUzQixJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFDckIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7S0FDN0I7U0FDSTtRQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLElBQUksRUFBRSxDQUFDO0tBQ2I7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFDckIsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7S0FDL0I7U0FDSTtRQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksRUFBRSxDQUFDO0tBQ2Q7SUFFRCxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUF3Qjs7SUFDckQsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNqQyxJQUFJLENBQUMsQ0FBQSxNQUFBLFNBQVMsQ0FBQyxNQUFNLDBDQUFFLE1BQU0sQ0FBQSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDNUQsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFDSCxNQUFNLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBQyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUMsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3RCxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDO2dCQUNwRSxTQUFTO1lBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFFLENBQUMsQ0FBQztLQUM1RDtBQUNILENBQUM7QUFFRCxrQ0FBa0M7QUFDbEMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQWtCO0lBQ3JELE9BQU8sc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVksQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxrR0FBa0c7QUFDbEcsTUFBTSxVQUFVLFFBQVEsQ0FBQyxNQUFrQixFQUFFLE9BQW9COztJQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFBLE1BQU0sQ0FBQyxVQUFVLDBDQUFFLE1BQU8sQ0FBQyxDQUFDO0lBQzVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELGdHQUFnRztBQUNoRyxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWtCLEVBQUUsVUFBdUIsRUFBRSxjQUF3QjtJQUVqRyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixPQUFPLEVBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFrQixFQUFFLE9BQW9CLEVBQUUsVUFBdUMsRUFDekcsVUFBdUI7O0lBQ3ZCLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxJQUFWLFVBQVUsR0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBQztJQUN4RCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUksVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLElBQUksQ0FBQTtRQUM1QyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQUEsTUFBTSxDQUFDLFVBQVUsbUNBQUksYUFBYSxDQUFDLFFBQTZCLEVBQ25ILE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxNQUFrQixFQUFFLE9BQW9CLEVBQUUsY0FBdUIsRUFDM0csVUFBdUMsRUFBRSxVQUF1Qjs7SUFDaEUsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLElBQVYsVUFBVSxHQUFLLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxFQUFDO0lBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNqRSxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztLQUNqQztJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQUEsTUFBTSxDQUFDLFVBQVUsMENBQUUsTUFBTyxDQUFDLENBQUM7SUFDNUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVyxDQUFDLENBQUM7SUFDL0IsT0FBTywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUNwRSxNQUFBLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLGFBQWEsQ0FBQyxRQUE2QixDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELGdDQUFnQztBQUNoQyxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBa0IsRUFBRSxPQUFvQixFQUFFLFVBQXVDLEVBQ25ILFVBQXVCOztJQUN2QixVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsSUFBVixVQUFVLEdBQUssYUFBYSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUM7SUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDdEIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBQSxNQUFNLENBQUMsVUFBVSwwQ0FBRSxNQUFPLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFXLENBQUMsQ0FBQztJQUMvQixPQUFPLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1xuICBGaXRFcnJvck1vZGVsLFxuICBnZXRTdGF0aXN0aWNzLFxuICBnZXRGaXR0ZWRDdXJ2ZSxcbiAgRml0U3RhdGlzdGljcyxcbiAgRml0Q29uZmlkZW5jZUludGVydmFscyxcbiAgRml0Q3VydmUsXG4gIElGaXRQb2ludCxcbiAgSUZpdENoYXJ0RGF0YSxcbiAgSUZpdFNlcmllcyxcbiAgZml0Q2hhcnREYXRhUHJvcGVydGllcyxcbiAgRml0UGFyYW1Cb3VuZHMsXG4gIElGaXRDaGFydE9wdGlvbnMsXG4gIEZpdEVycm9yTW9kZWxUeXBlLFxufSBmcm9tICcuL2ZpdC1jdXJ2ZSc7XG5pbXBvcnQge2ZpdERhdGEsIEZpdEZ1bmN0aW9uLCBmaXRTZXJpZXNQcm9wZXJ0aWVzLFxuICBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMsIGdldE9yQ3JlYXRlRml0RnVuY3Rpb259IGZyb20gJy4vbmV3LWZpdC1BUEknO1xuXG5leHBvcnQgdHlwZSBMb2dPcHRpb25zID0ge1xuICBsb2dYOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBsb2dZOiBib29sZWFuIHwgdW5kZWZpbmVkXG59O1xuXG5cbi8qKiBDcmVhdGVzIG5ldyBvYmplY3Qgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMgc3BlY2lmaWVkIGluIHtAbGluayBwcm9wZXJ0aWVzfSAqL1xuZnVuY3Rpb24gY3JlYXRlRnJvbVByb3BlcnRpZXMocHJvcGVydGllczogREcuUHJvcGVydHlbXSk6IGFueSB7XG4gIGNvbnN0IG86IGFueSA9IHt9O1xuICBmb3IgKGNvbnN0IHAgb2YgcHJvcGVydGllcykge1xuICAgIGlmIChwLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbClcbiAgICAgIG9bcC5uYW1lXSA9IHAuZGVmYXVsdFZhbHVlO1xuICB9XG4gIHJldHVybiBvO1xufVxuXG4vLyBUT0RPOiBzZXQgY29sdW1uIHdpdGggZml0IHJlYWRvbmx5IHZhbHVlIChpbiBkZXRlY3RvcnMpIC0gdHJ5IHRvIG9ubHkgc2hvdyBjaGFydCAtIHJlbW92ZSBlZGl0YWJsZSBvciBwcmV2ZW50IGl0Pz9cbi8qKiBDcmVhdGVzIGRlZmF1bHQge0BsaW5rIElGaXRDaGFydERhdGF9IG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRDaGFydERhdGEoKTogSUZpdENoYXJ0RGF0YSB7XG4gIHJldHVybiB7XG4gICAgY2hhcnRPcHRpb25zOiBjcmVhdGVGcm9tUHJvcGVydGllcyhmaXRDaGFydERhdGFQcm9wZXJ0aWVzKSxcbiAgICBzZXJpZXNPcHRpb25zOiBjcmVhdGVGcm9tUHJvcGVydGllcyhmaXRTZXJpZXNQcm9wZXJ0aWVzKSxcbiAgfTtcbn1cblxuLyoqIFJldHVybnMgcG9pbnRzIGFycmF5cyBmcm9tIHtAbGluayBJRml0UG9pbnR9IGFycmF5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRzQXJyYXlzKHBvaW50czogSUZpdFBvaW50W10pOiB7eHM6IG51bWJlcltdLCB5czogbnVtYmVyW119IHtcbiAgY29uc3QgeHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IHlzOiBudW1iZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHhzW2ldID0gcG9pbnRzW2ldLng7XG4gICAgeXNbaV0gPSBwb2ludHNbaV0ueTtcbiAgfVxuICByZXR1cm4ge3hzOiB4cywgeXM6IHlzfTtcbn1cblxuLyoqIFJldHVybnMgbWVkaWFuIGZyb20gd2l0aGluIG11bHRpcGxlIHBvaW50cyAqL1xuZnVuY3Rpb24gZ2V0TWVkaWFuKHBvaW50czoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiBudW1iZXIge1xuICBjb25zdCBtaWQgPSBNYXRoLmZsb29yKHBvaW50cy55Lmxlbmd0aCAvIDIpO1xuICBjb25zdCBzb3J0ZWRQb2ludHMgPSBwb2ludHMueS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gIGNvbnN0IG1lZGlhbiA9IHNvcnRlZFBvaW50cy5sZW5ndGggJSAyID09PSAwID8gKHNvcnRlZFBvaW50c1ttaWQgLSAxXSArIHNvcnRlZFBvaW50c1ttaWRdKSAvIDIgOiBzb3J0ZWRQb2ludHNbbWlkXTtcbiAgcmV0dXJuIG1lZGlhbjtcbn1cblxuLyoqIFJldHVybnMgbWVkaWFuIHBvaW50cyBmcm9tIHdpdGhpbiBtdWx0aXBsZSBwb2ludHMgd2l0aCB0aGUgc2FtZSB4LiAqL1xuZnVuY3Rpb24gZ2V0TWVkaWFuUG9pbnRzKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119KToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0ge1xuICBjb25zdCBtZWRpYW5Qb2ludHM6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119ID0ge3g6IFtdLCB5OiBbXX07XG4gIGNvbnN0IGN1cnJlbnRQb2ludHM6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119ID0ge3g6IFtkYXRhLnhbMF1dLCB5OiBbZGF0YS55WzBdXX07XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGRhdGEueFtpXSA9PT0gY3VycmVudFBvaW50cy54WzBdKSB7XG4gICAgICBjdXJyZW50UG9pbnRzLnhbY3VycmVudFBvaW50cy54Lmxlbmd0aF0gPSBkYXRhLnhbaV07XG4gICAgICBjdXJyZW50UG9pbnRzLnlbY3VycmVudFBvaW50cy55Lmxlbmd0aF0gPSBkYXRhLnlbaV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbWVkaWFuID0gZ2V0TWVkaWFuKGN1cnJlbnRQb2ludHMpO1xuICAgIG1lZGlhblBvaW50cy54W21lZGlhblBvaW50cy54Lmxlbmd0aF0gPSBjdXJyZW50UG9pbnRzLnhbMF07XG4gICAgbWVkaWFuUG9pbnRzLnlbbWVkaWFuUG9pbnRzLnkubGVuZ3RoXSA9IG1lZGlhbjtcbiAgICBjdXJyZW50UG9pbnRzLnggPSBbZGF0YS54W2ldXTtcbiAgICBjdXJyZW50UG9pbnRzLnkgPSBbZGF0YS55W2ldXTtcbiAgfVxuICBjb25zdCBtZWRpYW4gPSBnZXRNZWRpYW4oY3VycmVudFBvaW50cyk7XG4gIG1lZGlhblBvaW50cy54W21lZGlhblBvaW50cy54Lmxlbmd0aF0gPSBjdXJyZW50UG9pbnRzLnhbMF07XG4gIG1lZGlhblBvaW50cy55W21lZGlhblBvaW50cy55Lmxlbmd0aF0gPSBtZWRpYW47XG5cbiAgcmV0dXJuIG1lZGlhblBvaW50cztcbn1cblxuLyoqIFJldHVybnMgbG9nYXJpdGhtaWMgSUM1MCBwYXJhbWV0ZXIgYm91bmRzLiAqL1xuZnVuY3Rpb24gbG9nSUM1MFBhcmFtZXRlckJvdW5kcyhpYzUwQm91bmRzOiBGaXRQYXJhbUJvdW5kcyk6IEZpdFBhcmFtQm91bmRzIHtcbiAgaWYgKGljNTBCb3VuZHMpIHtcbiAgICBpZiAoaWM1MEJvdW5kcy5tYXggIT09IHVuZGVmaW5lZClcbiAgICAgIGljNTBCb3VuZHMubWF4ID0gTWF0aC5sb2cxMChpYzUwQm91bmRzLm1heCk7XG4gICAgaWYgKGljNTBCb3VuZHMubWluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGljNTBCb3VuZHMubWluID0gaWM1MEJvdW5kcy5taW4gPT09IDAgP1xuICAgICAgICAtTnVtYmVyLk1BWF9WQUxVRSA6IE1hdGgubG9nMTAoaWM1MEJvdW5kcy5taW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaWM1MEJvdW5kcztcbn1cblxuZnVuY3Rpb24gY2hhbmdlQm91bmRzKGJvdW5kczogREcuUmVjdCwgY2hhcnRPcHRpb25zOiBJRml0Q2hhcnRPcHRpb25zKTogREcuUmVjdCB7XG4gIGxldCB4ID0gYm91bmRzLng7XG4gIGxldCB5ID0gYm91bmRzLnk7XG4gIGxldCB3aWR0aCA9IGJvdW5kcy53aWR0aDtcbiAgbGV0IGhlaWdodCA9IGJvdW5kcy5oZWlnaHQ7XG4gIGxldCBib3VuZHNBZGp1c3RlZCA9IGZhbHNlO1xuXG4gIGlmIChjaGFydE9wdGlvbnMubWluWCAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5taW5YIDw9IGJvdW5kcy5tYXhYICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1gpIHx8IChjaGFydE9wdGlvbnMubG9nWCAmJiBjaGFydE9wdGlvbnMubWluWCA+IDApKSkge1xuICAgIHdpZHRoICs9IHggLSBjaGFydE9wdGlvbnMubWluWDtcbiAgICB4ID0gY2hhcnRPcHRpb25zLm1pblg7XG4gICAgYm91bmRzQWRqdXN0ZWQgPSB0cnVlO1xuICB9XG4gIGlmIChjaGFydE9wdGlvbnMubWF4WCAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5tYXhYID49IGJvdW5kcy5taW5YICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1gpIHx8IChjaGFydE9wdGlvbnMubG9nWCAmJiBjaGFydE9wdGlvbnMubWF4WCA+IDApKSkge1xuICAgIHdpZHRoICs9IGNoYXJ0T3B0aW9ucy5tYXhYIC0gKHggKyB3aWR0aCk7XG4gICAgYm91bmRzQWRqdXN0ZWQgPSB0cnVlO1xuICB9XG4gIGlmIChjaGFydE9wdGlvbnMubWluWSAhPSBudWxsICYmIGNoYXJ0T3B0aW9ucy5taW5ZIDw9IGJvdW5kcy5tYXhZICYmXG4gICAgKCghY2hhcnRPcHRpb25zLmxvZ1kpIHx8IChjaGFydE9wdGlvbnMubG9nWSAmJiBjaGFydE9wdGlvbnMubWluWSA+IDApKSkge1xuICAgIGhlaWdodCArPSB5IC0gY2hhcnRPcHRpb25zLm1pblk7XG4gICAgeSA9IGNoYXJ0T3B0aW9ucy5taW5ZO1xuICAgIGJvdW5kc0FkanVzdGVkID0gdHJ1ZTtcbiAgfVxuICBpZiAoY2hhcnRPcHRpb25zLm1heFkgIT0gbnVsbCAmJiBjaGFydE9wdGlvbnMubWF4WSA+PSBib3VuZHMubWluWSAmJlxuICAgICgoIWNoYXJ0T3B0aW9ucy5sb2dZKSB8fCAoY2hhcnRPcHRpb25zLmxvZ1kgJiYgY2hhcnRPcHRpb25zLm1heFkgPiAwKSkpIHtcbiAgICBoZWlnaHQgKz0gY2hhcnRPcHRpb25zLm1heFkgLSAoeSArIGhlaWdodCk7XG4gICAgYm91bmRzQWRqdXN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kc0FkanVzdGVkID8gbmV3IERHLlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkgOiBwYWRCb3VuZHMoYm91bmRzLCBjaGFydE9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBwYWRCb3VuZHMoYm91bmRzOiBERy5SZWN0LCBjaGFydE9wdGlvbnM6IElGaXRDaGFydE9wdGlvbnMsIHJhdGlvID0gMC4wNSk6IERHLlJlY3Qge1xuICBsZXQgbGVmdCA9IGJvdW5kcy5sZWZ0O1xuICBsZXQgcmlnaHQgPSBib3VuZHMucmlnaHQ7XG4gIGxldCB0b3AgPSBib3VuZHMudG9wO1xuICBsZXQgYm90dG9tID0gYm91bmRzLmJvdHRvbTtcblxuICBpZiAoY2hhcnRPcHRpb25zLmxvZ1gpIHtcbiAgICBsZWZ0ID0gbGVmdCA+IDAgPyBsZWZ0IC8gKDEgKyByYXRpbykgOiBsZWZ0O1xuICAgIHJpZ2h0ID0gcmlnaHQgKiAoMSArIHJhdGlvKTtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCBkeCA9IGJvdW5kcy53aWR0aCAqIHJhdGlvO1xuICAgIGxlZnQgLT0gZHg7XG4gICAgcmlnaHQgKz0gZHg7XG4gIH1cbiAgaWYgKGNoYXJ0T3B0aW9ucy5sb2dZKSB7XG4gICAgdG9wID0gdG9wID4gMCA/IHRvcCAvICgxICsgcmF0aW8pIDogdG9wO1xuICAgIGJvdHRvbSA9IGJvdHRvbSAqICgxICsgcmF0aW8pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnN0IGR5ID0gYm91bmRzLmhlaWdodCAqIHJhdGlvO1xuICAgIHRvcCAtPSBkeTtcbiAgICBib3R0b20gKz0gZHk7XG4gIH1cblxuICByZXR1cm4gbmV3IERHLlJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCk7XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBib3VuZHMgb2YgYW4ge0BsaW5rIElGaXRDaGFydERhdGF9IG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0Qm91bmRzKGNoYXJ0RGF0YTogSUZpdENoYXJ0RGF0YSk6IERHLlJlY3Qge1xuICBjb25zdCBvID0gY2hhcnREYXRhLmNoYXJ0T3B0aW9ucztcbiAgaWYgKCFjaGFydERhdGEuc2VyaWVzPy5sZW5ndGggfHwgY2hhcnREYXRhLnNlcmllcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG5ldyBERy5SZWN0KDAsIDAsIDEsIDEpO1xuICBlbHNlIHtcbiAgICBjb25zdCB7eHMsIHlzfSA9IGdldFBvaW50c0FycmF5cyhjaGFydERhdGEuc2VyaWVzWzBdLnBvaW50cyk7XG4gICAgbGV0IGJvdW5kcyA9IERHLlJlY3QuZnJvbVhZQXJyYXlzKHhzLCB5cyk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGFydERhdGEuc2VyaWVzIS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qge3hzLCB5c30gPSBnZXRQb2ludHNBcnJheXMoY2hhcnREYXRhLnNlcmllc1tpXS5wb2ludHMpO1xuICAgICAgaWYgKHhzLnNvbWUoKHgpID0+IHggPT09IHVuZGVmaW5lZCkgfHwgeXMuc29tZSgoeSkgPT4geSA9PT0gdW5kZWZpbmVkKSlcbiAgICAgICAgY29udGludWU7XG4gICAgICBib3VuZHMgPSBib3VuZHMudW5pb24oREcuUmVjdC5mcm9tWFlBcnJheXMoeHMsIHlzKSk7XG4gICAgfVxuICAgIHJldHVybiBvID8gY2hhbmdlQm91bmRzKGJvdW5kcywgbyEpOiBwYWRCb3VuZHMoYm91bmRzLCBvISk7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgc2VyaWVzIGZpdCBmdW5jdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmllc0ZpdEZ1bmN0aW9uKHNlcmllczogSUZpdFNlcmllcyk6IEZpdEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24oc2VyaWVzLmZpdEZ1bmN0aW9uISk7XG59XG5cbi8qKiBSZXR1cm5zIGEgY3VydmUgZnVuY3Rpb24sIGVpdGhlciB1c2luZyB0aGUgcHJlLWNvbXB1dGVkIHBhcmFtZXRlcnMgb3IgYnkgZml0dGluZyBvbi10aGUtZmx5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VydmUoc2VyaWVzOiBJRml0U2VyaWVzLCBmaXRGdW5jOiBGaXRGdW5jdGlvbik6ICh4OiBudW1iZXIpID0+IG51bWJlciB7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoc2VyaWVzLnBhcmFtZXRlcnM/Lmxlbmd0aCEpO1xuICBwYXJhbXMuc2V0KHNlcmllcy5wYXJhbWV0ZXJzISk7XG4gIHJldHVybiBnZXRGaXR0ZWRDdXJ2ZShmaXRGdW5jLnksIHBhcmFtcyk7XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBkYXRhIHBvaW50cyBvZiBhIHNlcmllcyB3aXRoIGZpbHRlcmVkIG91dGxpZXJzIGFuZCBsb2dhcml0aG1pYyBkYXRhIGlmIG5lZWRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFQb2ludHMoc2VyaWVzOiBJRml0U2VyaWVzLCBsb2dPcHRpb25zPzogTG9nT3B0aW9ucywgdXNlclBhcmFtc0ZsYWc/OiBib29sZWFuKTpcbiAge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0ge1xuICBjb25zdCBwb2ludHNUb01hcCA9IHVzZXJQYXJhbXNGbGFnID8gc2VyaWVzLnBvaW50cyA6IHNlcmllcy5wb2ludHMuZmlsdGVyKChwKSA9PiAhcC5vdXRsaWVyKTtcbiAgcmV0dXJuIHt4OiBwb2ludHNUb01hcC5tYXAoKHApID0+IGxvZ09wdGlvbnM/LmxvZ1ggPyBNYXRoLmxvZzEwKHAueCkgOiBwLngpLFxuICAgIHk6IHBvaW50c1RvTWFwLm1hcCgocCkgPT4gbG9nT3B0aW9ucz8ubG9nWSA/IE1hdGgubG9nMTAocC55KSA6IHAueSl9O1xufVxuXG4vKiogRml0cyB0aGUgc2VyaWVzIGRhdGEgYWNjb3JkaW5nIHRvIHRoZSBzZXJpZXMgZml0dGluZyBzZXR0aW5ncyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpdFNlcmllcyhzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCBkYXRhUG9pbnRzPzoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sXG4gIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zKTogRml0Q3VydmUge1xuICBkYXRhUG9pbnRzID8/PSBnZXREYXRhUG9pbnRzKHNlcmllcywgbG9nT3B0aW9ucywgZmFsc2UpO1xuICBpZiAoc2VyaWVzLnBhcmFtZXRlckJvdW5kcyAmJiBsb2dPcHRpb25zPy5sb2dYKVxuICAgIHNlcmllcy5wYXJhbWV0ZXJCb3VuZHNbMl0gPSBsb2dJQzUwUGFyYW1ldGVyQm91bmRzKHNlcmllcy5wYXJhbWV0ZXJCb3VuZHNbMl0pO1xuICByZXR1cm4gZml0RGF0YShnZXRNZWRpYW5Qb2ludHMoZGF0YVBvaW50cyksIGZpdEZ1bmMsIHNlcmllcy5lcnJvck1vZGVsID8/IEZpdEVycm9yTW9kZWwuQ09OU1RBTlQgYXMgRml0RXJyb3JNb2RlbFR5cGUsXG4gICAgc2VyaWVzLnBhcmFtZXRlckJvdW5kcyk7XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBjb25maWRlbmNlIGludGVydmFsIGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmllc0NvbmZpZGVuY2VJbnRlcnZhbChzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCB1c2VyUGFyYW1zRmxhZzogYm9vbGVhbixcbiAgZGF0YVBvaW50cz86IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBsb2dPcHRpb25zPzogTG9nT3B0aW9ucyk6IEZpdENvbmZpZGVuY2VJbnRlcnZhbHMge1xuICBkYXRhUG9pbnRzID8/PSBnZXREYXRhUG9pbnRzKHNlcmllcywgbG9nT3B0aW9ucywgdXNlclBhcmFtc0ZsYWcpO1xuICBpZiAoIXNlcmllcy5wYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgcGFyYW1zID0gZml0U2VyaWVzKHNlcmllcywgZml0RnVuYywgZGF0YVBvaW50cykucGFyYW1ldGVycztcbiAgICBzZXJpZXMucGFyYW1ldGVycyA9IFsuLi5wYXJhbXNdO1xuICB9XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoc2VyaWVzLnBhcmFtZXRlcnM/Lmxlbmd0aCEpO1xuICBwYXJhbXMuc2V0KHNlcmllcy5wYXJhbWV0ZXJzISk7XG4gIHJldHVybiBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMoZGF0YVBvaW50cywgcGFyYW1zLCBmaXRGdW5jLnksIDAuMDUsXG4gICAgc2VyaWVzLmVycm9yTW9kZWwgPz8gRml0RXJyb3JNb2RlbC5DT05TVEFOVCBhcyBGaXRFcnJvck1vZGVsVHlwZSk7XG59XG5cbi8qKiBSZXR1cm5zIHNlcmllcyBzdGF0aXN0aWNzICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWVzU3RhdGlzdGljcyhzZXJpZXM6IElGaXRTZXJpZXMsIGZpdEZ1bmM6IEZpdEZ1bmN0aW9uLCBkYXRhUG9pbnRzPzoge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sXG4gIGxvZ09wdGlvbnM/OiBMb2dPcHRpb25zKTogRml0U3RhdGlzdGljcyB7XG4gIGRhdGFQb2ludHMgPz89IGdldERhdGFQb2ludHMoc2VyaWVzLCBsb2dPcHRpb25zLCBmYWxzZSk7XG4gIGlmICghc2VyaWVzLnBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBmaXRTZXJpZXMoc2VyaWVzLCBmaXRGdW5jLCBkYXRhUG9pbnRzKS5wYXJhbWV0ZXJzO1xuICAgIHNlcmllcy5wYXJhbWV0ZXJzID0gWy4uLnBhcmFtc107XG4gIH1cbiAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheShzZXJpZXMucGFyYW1ldGVycz8ubGVuZ3RoISk7XG4gIHBhcmFtcy5zZXQoc2VyaWVzLnBhcmFtZXRlcnMhKTtcbiAgcmV0dXJuIGdldFN0YXRpc3RpY3MoZGF0YVBvaW50cywgcGFyYW1zLCBmaXRGdW5jLnksIHRydWUpO1xufVxuIl19
@@ -194,5 +194,11 @@ export declare function getCurveConfidenceIntervals(data: {
194
194
  x: number[];
195
195
  y: number[];
196
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
+ }
197
203
  export {};
198
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":"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"}
1
+ {"version":3,"file":"new-fit-API.d.ts","sourceRoot":"","sources":["new-fit-API.ts"],"names":[],"mappings":"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"}
@@ -547,11 +547,5 @@ export function getCurveConfidenceIntervals(data, paramValues, curveFunction, co
547
547
  };
548
548
  return { confidenceTop: top, confidenceBottom: bottom };
549
549
  }
550
- // const series: FitSeries = new FitSeries([
551
- // {'x': 0, 'y': 0},
552
- // {'x': 1, 'y': 0.5},
553
- // {'x': 2, 'y': 1},
554
- // {'x': 3, 'y': 10, 'outlier': true},
555
- // {'x': 4, 'y': 0},
556
- // ]);
557
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZpdC1BUEkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJuZXctZml0LUFQSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE1BQU0sRUFHTixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBTWEsTUFBTSxFQUFFLFdBQVcsRUFDaEQsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGFBQWEsRUFFYixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEQsc0JBQXNCO0FBQ3RCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRy9FLGtDQUFrQztBQUNsQyxNQUFNLE9BQWdCLFdBQVc7Q0FNaEM7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsWUFBWTtJQUN4QixXQUFXLEVBQUUsYUFBYTtJQUMxQixrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMscUJBQXFCLEVBQUUsbUJBQW1CO0NBQ2xDLENBQUM7QUFtQ1gsTUFBTSxPQUFnQixHQUFHO0lBT3ZCLFlBQXNCLE1BQVksRUFBRSxJQUFlO1FBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJ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T0FBTyxLQUFLLEdBQUcsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDLENBQUM7SUFFRixPQUFPLEVBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUMsQ0FBQztBQUN4RCxDQUFDO0FBR0QsNENBQTRDO0FBQzVDLHNCQUFzQjtBQUN0Qix3QkFBd0I7QUFDeEIsc0JBQXNCO0FBQ3RCLHdDQUF3QztBQUN4QyxzQkFBc0I7QUFDdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge1xuICBGSVRfRlVOQ1RJT05fTElORUFSLFxuICBsaW5lYXIsXG4gIElGaXRTZXJpZXMsXG4gIElGaXRQb2ludCxcbiAgRklUX0ZVTkNUSU9OX1NJR01PSUQsXG4gIHNpZ21vaWQsXG4gIEZJVF9GVU5DVElPTl9MT0dfTElORUFSLFxuICBsb2dMaW5lYXIsXG4gIEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTCxcbiAgZXhwb25lbnRpYWwsXG4gIEZJVF9GVU5DVElPTl80UExfUkVHUkVTU0lPTixcbiAgZm91clBMUmVncmVzc2lvbixcbiAgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24sXG4gIEZpdFBhcmFtQm91bmRzLFxuICBGaXRNYXJrZXJUeXBlLFxuICBGaXRPdXRsaWVyTWFya2VyVHlwZSxcbiAgRml0TGluZVN0eWxlLFxuICBGaXRFcnJvck1vZGVsVHlwZSwgRml0Q3VydmUsIGdldEF1YywgZ2V0RGV0Q29lZmYsXG4gIEZJVF9KU19GVU5DVElPTixcbiAgRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFLFxuICBmb3VyUExEb3NlUmVzcG9uc2UsXG4gIERST1BMSU5FUyxcbiAgRml0RXJyb3JNb2RlbCxcbiAgRml0Q29uZmlkZW5jZUludGVydmFscyxcbiAgZ2V0Rml0dGVkQ3VydmUsXG59IGZyb20gJy4vZml0LWN1cnZlJztcbmltcG9ydCB7Zml0U2VyaWVzLCBnZXREYXRhUG9pbnRzfSBmcm9tICcuL2ZpdC1kYXRhJztcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcbmltcG9ydCB7RXh0cmVtdW0sIE9wdGltaXphdGlvblJlc3VsdH0gZnJvbSAnLi9maXR0aW5nLWFsZ29yaXRobS9vcHRpbWl6ZXItbWlzYyc7XG5pbXBvcnQge3BlcmZvcm1OZWxkZXJNZWFkT3B0aW1pemF0aW9ufSBmcm9tICcuL2ZpdHRpbmctYWxnb3JpdGhtL29wdGltaXplcic7XG5pbXBvcnQge05FTERFUl9NRUFEX0RFRkFVTFRTfSBmcm9tICcuL2ZpdHRpbmctYWxnb3JpdGhtL29wdGltaXplci1uZWxkZXItbWVhZCc7XG5cblxuLyoqIENsYXNzIGZvciB0aGUgZml0IGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpdEZ1bmN0aW9uPFQgPSBGaXQ+IHtcbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW107XG4gIGFic3RyYWN0IGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBUO1xuICBhYnN0cmFjdCB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXI7XG4gIGFic3RyYWN0IGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpdEZ1bmN0aW9uVHlwZXMgPSB7XG4gIFNJR01PSUQ6ICdzaWdtb2lkJyxcbiAgTElORUFSOiAnbGluZWFyJyxcbiAgTE9HX0xJTkVBUjogJ2xvZy1saW5lYXInLFxuICBFWFBPTkVOVElBTDogJ2V4cG9uZW50aWFsJyxcbiAgRk9VUl9QTF9SRUdSRVNTSU9OOiAnNHBsLXJlZ3Jlc3Npb24nLFxuICBGT1VSX1BMX0RPU0VfUkVTUE9OU0U6ICc0cGwtZG9zZS1yZXNwb25zZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBGaXRGdW5jdGlvblR5cGUgPSB0eXBlb2YgRml0RnVuY3Rpb25UeXBlc1trZXlvZiB0eXBlb2YgRml0RnVuY3Rpb25UeXBlc107XG5cbmludGVyZmFjZSBJRml0IHtcbiAgYXVjOiBudW1iZXI7XG4gIHJTcXVhcmVkOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTGluZWFyRml0IGV4dGVuZHMgSUZpdCB7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGludGVyY2VwdDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSUxvZ0xpbmVhckZpdCBleHRlbmRzIElMaW5lYXJGaXQge31cblxuaW50ZXJmYWNlIElTaWdtb2lkRml0IGV4dGVuZHMgSUZpdCB7XG4gIHRvcDogbnVtYmVyO1xuICBzbG9wZTogbnVtYmVyO1xuICBpYzUwOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSUV4cG9uZW50aWFsRml0IGV4dGVuZHMgSUZpdCB7XG4gIG1hbnRpc3NhOiBudW1iZXI7XG4gIHBvd2VyOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJRm91clBMUmVncmVzc2lvbkZpdCBleHRlbmRzIElGaXQge1xuICB0b3A6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGVjNTA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpdCBpbXBsZW1lbnRzIElGaXQge1xuICBhdWM6IG51bWJlcjtcbiAgclNxdWFyZWQ6IG51bWJlcjtcbiAgc2VyaWVzOiBGaXRTZXJpZXM7XG5cbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElGaXQsIGRhdGE6IEZpdFNlcmllcykge1xuICAgIHRoaXMuYXVjID0gdmFsdWVzLmF1YztcbiAgICB0aGlzLnJTcXVhcmVkID0gdmFsdWVzLnJTcXVhcmVkO1xuICAgIHRoaXMuc2VyaWVzID0gZGF0YTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSlNGdW5jdGlvbkZpdCBleHRlbmRzIEZpdCB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSUZpdCwgZGF0YTogRml0U2VyaWVzKSB7XG4gICAgc3VwZXIodmFsdWVzLCBkYXRhKTtcbiAgfVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfSlNfRlVOQ1RJT047XG4gIH1cbn1cblxuY2xhc3MgTGluZWFyRml0IGV4dGVuZHMgRml0IGltcGxlbWVudHMgSUxpbmVhckZpdCB7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGludGVyY2VwdDogbnVtYmVyO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9MSU5FQVI7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElMaW5lYXJGaXQsIGRhdGE6IEZpdFNlcmllcykge1xuICAgIHN1cGVyKHZhbHVlcywgZGF0YSk7XG4gICAgdGhpcy5zbG9wZSA9IHZhbHVlcy5zbG9wZTtcbiAgICB0aGlzLmludGVyY2VwdCA9IHZhbHVlcy5pbnRlcmNlcHQ7XG4gIH1cbn1cblxuY2xhc3MgTG9nTGluZWFyRml0IGV4dGVuZHMgTGluZWFyRml0IGltcGxlbWVudHMgSUxvZ0xpbmVhckZpdCB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9MT0dfTElORUFSO1xuICB9XG59XG5cbmNsYXNzIFNpZ21vaWRGaXQgZXh0ZW5kcyBGaXQgaW1wbGVtZW50cyBJU2lnbW9pZEZpdCB7XG4gIHRvcDogbnVtYmVyO1xuICBzbG9wZTogbnVtYmVyO1xuICBpYzUwOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9TSUdNT0lEO1xuICB9XG5cbiAgY29uc3RydWN0b3IodmFsdWVzOiBJU2lnbW9pZEZpdCwgZGF0YTogRml0U2VyaWVzKSB7XG4gICAgc3VwZXIodmFsdWVzLCBkYXRhKTtcbiAgICB0aGlzLnRvcCA9IHZhbHVlcy50b3A7XG4gICAgdGhpcy5zbG9wZSA9IHZhbHVlcy5zbG9wZTtcbiAgICB0aGlzLmljNTAgPSB2YWx1ZXMuaWM1MDtcbiAgICB0aGlzLmJvdHRvbSA9IHZhbHVlcy5ib3R0b207XG4gIH1cbn1cblxuY2xhc3MgRXhwb25lbnRpYWxGaXQgZXh0ZW5kcyBGaXQgaW1wbGVtZW50cyBJRXhwb25lbnRpYWxGaXQge1xuICBtYW50aXNzYTogbnVtYmVyO1xuICBwb3dlcjogbnVtYmVyO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSUV4cG9uZW50aWFsRml0LCBkYXRhOiBGaXRTZXJpZXMpIHtcbiAgICBzdXBlcih2YWx1ZXMsIGRhdGEpO1xuICAgIHRoaXMubWFudGlzc2EgPSB2YWx1ZXMubWFudGlzc2E7XG4gICAgdGhpcy5wb3dlciA9IHZhbHVlcy5wb3dlcjtcbiAgfVxufVxuXG5jbGFzcyBGb3VyUExSZWdyZXNzaW9uRml0IGV4dGVuZHMgRml0IGltcGxlbWVudHMgSUZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICB0b3A6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIHNsb3BlOiBudW1iZXI7XG4gIGVjNTA6IG51bWJlcjtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT047XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IElGb3VyUExSZWdyZXNzaW9uRml0LCBkYXRhOiBGaXRTZXJpZXMpIHtcbiAgICBzdXBlcih2YWx1ZXMsIGRhdGEpO1xuICAgIHRoaXMudG9wID0gdmFsdWVzLnRvcDtcbiAgICB0aGlzLmJvdHRvbSA9IHZhbHVlcy5ib3R0b207XG4gICAgdGhpcy5zbG9wZSA9IHZhbHVlcy5zbG9wZTtcbiAgICB0aGlzLmVjNTAgPSB2YWx1ZXMuZWM1MDtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IElGaXQge1xuICByZXR1cm4ge1xuICAgIGF1YzogZ2V0QXVjKGZpdEN1cnZlLCBkYXRhKSxcbiAgICByU3F1YXJlZDogZ2V0RGV0Q29lZmYoZml0Q3VydmUsIGRhdGEpLFxuICB9O1xufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBsaW5lYXIgZnVuY3Rpb24gKi9cbmV4cG9ydCBjbGFzcyBMaW5lYXJGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPExpbmVhckZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTElORUFSO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydTbG9wZScsICdJbnRlcmNlcHQnXTtcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBMaW5lYXJGaXQge1xuICAgIHJldHVybiBuZXcgTGluZWFyRml0KHtcbiAgICAgIC4uLmdldEF1Y0FuZFJzcXVhcmVkKGZpdEN1cnZlLmZpdHRlZEN1cnZlLCBnZXREYXRhUG9pbnRzKGRhdGEpKSxcbiAgICAgIHNsb3BlOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzBdLFxuICAgICAgaW50ZXJjZXB0OiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzFdLFxuICAgIH0sIGRhdGEpO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbGluZWFyKHBhcmFtcywgeCk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIGxldCBtaW5JbmRleCA9IDA7XG4gICAgbGV0IG1heEluZGV4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh4W2ldIDwgeFttaW5JbmRleF0pXG4gICAgICAgIG1pbkluZGV4ID0gaTtcbiAgICAgIGlmICh4W2ldID4geFttYXhJbmRleF0pXG4gICAgICAgIG1heEluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWx0YVggPSB4W21heEluZGV4XSAtIHhbbWluSW5kZXhdO1xuICAgIGNvbnN0IGRlbHRhWSA9IHlbbWF4SW5kZXhdIC0geVttaW5JbmRleF07XG4gICAgY29uc3QgQSA9IGRlbHRhWSAvIGRlbHRhWDtcbiAgICBjb25zdCBCID0geVttYXhJbmRleF0gLSBBICogeFttYXhJbmRleF07XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheSgyKTtcbiAgICBwYXJhbXMuc2V0KFtBLCBCXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBzaWdtb2lkIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgU2lnbW9pZEZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb248U2lnbW9pZEZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fU0lHTU9JRDtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnVG9wJywgJ1Nsb3BlJywgJ0lDNTAnLCAnQm90dG9tJ107XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogU2lnbW9pZEZpdCB7XG4gICAgcmV0dXJuIG5ldyBTaWdtb2lkRml0KHtcbiAgICAgIC4uLmdldEF1Y0FuZFJzcXVhcmVkKGZpdEN1cnZlLmZpdHRlZEN1cnZlLCBnZXREYXRhUG9pbnRzKGRhdGEpKSxcbiAgICAgIHRvcDogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIHNsb3BlOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzFdLFxuICAgICAgaWM1MDogZml0Q3VydmUucGFyYW1ldGVyc1syXSxcbiAgICAgIGJvdHRvbTogZml0Q3VydmUucGFyYW1ldGVyc1szXSxcbiAgICB9LCBkYXRhKTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHNpZ21vaWQocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgZGF0YUJvdW5kcyA9IERHLlJlY3QuZnJvbVhZQXJyYXlzKHgsIHkpO1xuICAgIGNvbnN0IG1lZFkgPSAoZGF0YUJvdW5kcy5tYXhZIC0gZGF0YUJvdW5kcy5taW5ZKSAvIDIgKyBkYXRhQm91bmRzLm1pblk7XG4gICAgbGV0IG1heFlJbnRlcnZhbCA9IGRhdGFCb3VuZHMubWF4WSAtIGRhdGFCb3VuZHMubWluWTtcbiAgICBsZXQgbmVhcmVzdFhJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW50ZXJ2YWwgPSBNYXRoLmFicyh5W2ldIC0gbWVkWSk7XG4gICAgICBpZiAoY3VycmVudEludGVydmFsIDwgbWF4WUludGVydmFsKSB7XG4gICAgICAgIG1heFlJbnRlcnZhbCA9IGN1cnJlbnRJbnRlcnZhbDtcbiAgICAgICAgbmVhcmVzdFhJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHhBdE1lZFkgPSB4W25lYXJlc3RYSW5kZXhdO1xuICAgIGNvbnN0IHNsb3BlID0geVswXSA+IHlbeS5sZW5ndGggLSAxXSA/IDEgOiAtMTtcblxuICAgIC8vIHBhcmFtcyBhcmU6IFttYXgsIHRhbiwgSUM1MCwgbWluXVxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7XG4gICAgcGFyYW1zLnNldChbZGF0YUJvdW5kcy5tYXhZLCBzbG9wZSwgeEF0TWVkWSwgZGF0YUJvdW5kcy5taW5ZXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBsaW5lYXIgbG9nYXJpdGhtaWMgZnVuY3Rpb24gKi9cbmV4cG9ydCBjbGFzcyBMb2dMaW5lYXJGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPExvZ0xpbmVhckZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUjtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnU2xvcGUnLCAnSW50ZXJjZXB0J107XG4gIH1cblxuICBmaWxsUGFyYW1zKGZpdEN1cnZlOiBGaXRDdXJ2ZSwgZGF0YTogRml0U2VyaWVzKTogTG9nTGluZWFyRml0IHtcbiAgICByZXR1cm4gbmV3IExvZ0xpbmVhckZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICBzbG9wZTogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIGludGVyY2VwdDogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICB9LCBkYXRhKTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGxvZ0xpbmVhcihwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDIpO1xuICAgIHBhcmFtcy5zZXQoWy01LCAxMDBdKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGV4cG9uZW50aWFsIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgRXhwb25lbnRpYWxGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uPEV4cG9uZW50aWFsRml0PiB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9FWFBPTkVOVElBTDtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnTWFudGlzc2EnLCAnUG93ZXInXTtcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBFeHBvbmVudGlhbEZpdCB7XG4gICAgcmV0dXJuIG5ldyBFeHBvbmVudGlhbEZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICBtYW50aXNzYTogZml0Q3VydmUucGFyYW1ldGVyc1swXSxcbiAgICAgIHBvd2VyOiBmaXRDdXJ2ZS5wYXJhbWV0ZXJzWzFdLFxuICAgIH0sIGRhdGEpO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZXhwb25lbnRpYWwocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheSgyKTtcbiAgICBwYXJhbXMuc2V0KFsxMDAsIC0yXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBGb3VyIFBhcmFtZXRlciBMb2dpc3RpYyBSZWdyZXNzaW9uIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgRm91clBMUmVncmVzc2lvbkZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb248Rm91clBMUmVncmVzc2lvbkZpdD4ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT047XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ1RvcCcsICdTbG9wZScsICdFQzUwJywgJ0JvdHRvbSddO1xuICB9XG5cbiAgZmlsbFBhcmFtcyhmaXRDdXJ2ZTogRml0Q3VydmUsIGRhdGE6IEZpdFNlcmllcyk6IEZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICAgIHJldHVybiBuZXcgRm91clBMUmVncmVzc2lvbkZpdCh7XG4gICAgICAuLi5nZXRBdWNBbmRSc3F1YXJlZChmaXRDdXJ2ZS5maXR0ZWRDdXJ2ZSwgZ2V0RGF0YVBvaW50cyhkYXRhKSksXG4gICAgICB0b3A6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMF0sXG4gICAgICBzbG9wZTogZml0Q3VydmUucGFyYW1ldGVyc1sxXSxcbiAgICAgIGVjNTA6IGZpdEN1cnZlLnBhcmFtZXRlcnNbMl0sXG4gICAgICBib3R0b206IGZpdEN1cnZlLnBhcmFtZXRlcnNbM10sXG4gICAgfSwgZGF0YSk7XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBmb3VyUExSZWdyZXNzaW9uKHBhcmFtcywgeCk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7XG4gICAgY29uc3QgYm90dG9tID0gTWF0aC5taW4oLi4ueSk7XG4gICAgY29uc3QgdG9wID0gTWF0aC5tYXgoLi4ueSk7XG4gICAgY29uc3QgbWVkWSA9ICh0b3AgLSBib3R0b20pIC8gMiArIGJvdHRvbTtcbiAgICBsZXQgbWF4WUludGVydmFsID0gdG9wIC1ib3R0b207XG4gICAgbGV0IG5lYXJlc3RYSW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY3VycmVudEludGVydmFsID0gTWF0aC5hYnMoeVtpXSAtIG1lZFkpO1xuICAgICAgaWYgKGN1cnJlbnRJbnRlcnZhbCA8IG1heFlJbnRlcnZhbCkge1xuICAgICAgICBtYXhZSW50ZXJ2YWwgPSBjdXJyZW50SW50ZXJ2YWw7XG4gICAgICAgIG5lYXJlc3RYSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlYzUwID0geFtuZWFyZXN0WEluZGV4XTtcbiAgICBjb25zdCBzbG9wZSA9IHlbMF0gPiB5W3kubGVuZ3RoIC0gMV0/IC0xMCA6IDEwO1xuICAgIHBhcmFtcy5zZXQoW3RvcCwgc2xvcGUsIGVjNTAsIGJvdHRvbV0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvdXJQTERvc2VSZXNwb25zZUZ1bmN0aW9uIGV4dGVuZHMgRm91clBMUmVncmVzc2lvbkZ1bmN0aW9uIHtcbiAgb3ZlcnJpZGUgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydNYXgnLCAnSGlsbCcsICdJQzUwJywgJ01pbiddO1xuICB9XG5cbiAgb3ZlcnJpZGUgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZm91clBMRG9zZVJlc3BvbnNlKHBhcmFtcywgeCk7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB1c2VyIEpTIGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGNsYXNzIEpzRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbjxGaXQ+IHtcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9wYXJhbWV0ZXJOYW1lczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB5RnVuYzogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgICBnZXRJbml0UGFyYW1zRnVuYzogKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSkgPT4gRmxvYXQzMkFycmF5LCBwYXJhbWV0ZXJOYW1lczogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgdGhpcy5fcGFyYW1ldGVyTmFtZXMgPSBwYXJhbWV0ZXJOYW1lcztcblxuICAgIHRoaXMueSA9IHlGdW5jO1xuICAgIHRoaXMuZ2V0SW5pdGlhbFBhcmFtZXRlcnMgPSBnZXRJbml0UGFyYW1zRnVuYztcbiAgfVxuXG4gIGZpbGxQYXJhbXMoZml0Q3VydmU6IEZpdEN1cnZlLCBkYXRhOiBGaXRTZXJpZXMpOiBGaXQge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5fcGFyYW1ldGVyTmFtZXMubGVuZ3RoKTtcbiAgICBwYXJhbXMuc2V0KGZpdEN1cnZlLnBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBuZXcgSlNGdW5jdGlvbkZpdCh7Li4uZ2V0QXVjQW5kUnNxdWFyZWQoZml0Q3VydmUuZml0dGVkQ3VydmUsIGdldERhdGFQb2ludHMoZGF0YSkpfSwgZGF0YSk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1ldGVyTmFtZXM7XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuLy8gT2JqZWN0IHdpdGggZml0IGZ1bmN0aW9uc1xuZXhwb3J0IGNvbnN0IGZpdEZ1bmN0aW9uczoge1trZXk6IHN0cmluZ106IEZpdEZ1bmN0aW9uPGFueT59ID0ge1xuICAnbGluZWFyJzogbmV3IExpbmVhckZ1bmN0aW9uKCksXG4gICdzaWdtb2lkJzogbmV3IFNpZ21vaWRGdW5jdGlvbigpLFxuICAnbG9nLWxpbmVhcic6IG5ldyBMb2dMaW5lYXJGdW5jdGlvbigpLFxuICAnZXhwb25lbnRpYWwnOiBuZXcgRXhwb25lbnRpYWxGdW5jdGlvbigpLFxuICAnNHBsLXJlZ3Jlc3Npb24nOiBuZXcgRm91clBMUmVncmVzc2lvbkZ1bmN0aW9uKCksXG4gICc0cGwtZG9zZS1yZXNwb25zZSc6IG5ldyBGb3VyUExEb3NlUmVzcG9uc2VGdW5jdGlvbigpLFxufTtcblxuY2xhc3MgRml0RnVuY3Rpb25zIHtcbiAgc2VyaWVzOiBGaXRTZXJpZXM7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWVzOiBGaXRTZXJpZXMpIHtcbiAgICB0aGlzLnNlcmllcyA9IHNlcmllcztcbiAgfVxuXG4gIGxpbmVhcigpOiBMaW5lYXJGaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OX0xJTkVBUl1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9MSU5FQVJdKSwgdGhpcy5zZXJpZXMpO1xuICB9XG5cbiAgbG9nTGluZWFyKCk6IExvZ0xpbmVhckZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUl1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9MT0dfTElORUFSXSksIHRoaXMuc2VyaWVzKTtcbiAgfVxuXG4gIHNpZ21vaWQoKTogU2lnbW9pZEZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fU0lHTU9JRF1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9TSUdNT0lEXSksIHRoaXMuc2VyaWVzKTtcbiAgfVxuXG4gIGV4cG9uZW50aWFsKCk6IEV4cG9uZW50aWFsRml0IHtcbiAgICByZXR1cm4gZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9FWFBPTkVOVElBTF1cbiAgICAgIC5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl9FWFBPTkVOVElBTF0pLCB0aGlzLnNlcmllcyk7XG4gIH1cblxuICBmb3VyUEwoKTogRm91clBMUmVncmVzc2lvbkZpdCB7XG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT05dXG4gICAgICAuZmlsbFBhcmFtcyhmaXRTZXJpZXModGhpcy5zZXJpZXMsIGZpdEZ1bmN0aW9uc1tGSVRfRlVOQ1RJT05fNFBMX1JFR1JFU1NJT05dKSwgdGhpcy5zZXJpZXMpO1xuICB9XG5cbiAgZm91clBMRG9zZVJlc3BvbnNlKCk6IEZvdXJQTFJlZ3Jlc3Npb25GaXQge1xuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbRklUX0ZVTkNUSU9OXzRQTF9ET1NFX1JFU1BPTlNFXS5maWxsUGFyYW1zKGZpdFNlcmllcyh0aGlzLnNlcmllcywgZml0RnVuY3Rpb25zW0ZJVF9GVU5DVElPTl80UExfRE9TRV9SRVNQT05TRV0pLCB0aGlzLnNlcmllcyk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgRml0U2VyaWVzIGltcGxlbWVudHMgSUZpdFNlcmllcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcblxuICBmaXQ6IEZpdEZ1bmN0aW9ucztcbiAgcG9pbnRzOiBJRml0UG9pbnRbXTtcblxuICBjb25zdHJ1Y3Rvcihwb2ludHM6IElGaXRQb2ludFtdKSB7XG4gICAgdGhpcy5wb2ludHMgPSBwb2ludHM7XG4gICAgdGhpcy5maXQgPSBuZXcgRml0RnVuY3Rpb25zKHRoaXMpO1xuICB9XG5cbiAgbmFtZT86IHN0cmluZzsgLy8gY29udHJvbHMgdGhlIHNlcmllcyBuYW1lXG4gIGZpdEZ1bmN0aW9uPzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb247IC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgZml0IGZ1bmN0aW9uXG4gIHBhcmFtZXRlcnM/OiBudW1iZXJbXTsgLy8gY29udHJvbHMgdGhlIHNlcmllcyBwYXJhbWV0ZXJzLCBhdXRvLWZpdHRpbmcgd2hlbiBub3QgZGVmaW5lZFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdOyAvLyBkZWZpbmVzIHRoZSBhY2NlcHRhYmxlIHJhbmdlIG9mIGVhY2ggcGFyYW1ldGVyLCB3aGljaCBpcyB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBmaXR0aW5nLiBTZWUgYWxzbyBgcGFyYW1ldGVyc2AuXG4gIG1hcmtlclR5cGU/OiBGaXRNYXJrZXJUeXBlOyAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgbWFya2VyIHR5cGVcbiAgb3V0bGllck1hcmtlclR5cGU/OiBGaXRPdXRsaWVyTWFya2VyVHlwZTsgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIG91dGxpZXIgbWFya2VyIHR5cGVcbiAgbGluZVN0eWxlPzogRml0TGluZVN0eWxlOyAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgbGluZSBzdHlsZVxuICBwb2ludENvbG9yPzogc3RyaW5nOyAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgcG9pbnQgY29sb3JcbiAgZml0TGluZUNvbG9yPzogc3RyaW5nOyAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgZml0IGxpbmUgY29sb3JcbiAgY29uZmlkZW5jZUludGVydmFsQ29sb3I/OiBzdHJpbmc7IC8vIG92ZXJyaWRlcyB0aGUgc3RhbmRhcmRpemVkIHNlcmllcyBjb25maWRlbmNlIGludGVydmFsIGNvbG9yXG4gIG91dGxpZXJDb2xvcj86IHN0cmluZzsgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIG91dGxpZXIgY29sb3JcbiAgY29ubmVjdERvdHM/OiBib29sZWFuOyAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gY29ubmVjdCB0aGUgcG9pbnRzIHdpdGggbGluZXMgb3Igbm90LiBJZiB0cnVlIGFuZCBzaG93Rml0TGluZSBpcyBmYWxzZSAtIGZpdHRpbmcgaXMgZGlzYWJsZWQgLSBvdGhlcndpc2UsIGl0IHdpbGwgYmUgcmVuZGVyZWQgYWNjb3JkaW5nbHkgdG8gdGhlIHBhcmFtZXRlciB2YWx1ZS5cbiAgc2hvd0ZpdExpbmU/OiBib29sZWFuOyAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgZml0IGxpbmUgb3Igbm90XG4gIHNob3dQb2ludHM/OiBzdHJpbmc7IC8vIGRlZmluZXMgdGhlIGRhdGEgZGlzcGxheSBtb2RlXG4gIHNob3dPdXRsaWVycz86IGJvb2xlYW47IC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBvdXRsaWVycyBvciBub3RcbiAgc2hvd0N1cnZlQ29uZmlkZW5jZUludGVydmFsPzogYm9vbGVhbjsgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9yIG5vdFxuICBlcnJvck1vZGVsPzogRml0RXJyb3JNb2RlbFR5cGU7IC8vIGRlZmluZXMgdGhlIHNlcmllcyBlcnJvciBtb2RlbFxuICBjbGlja1RvVG9nZ2xlPzogYm9vbGVhbjsgLy8gaWYgdHJ1ZSwgY2xpY2tpbmcgb24gdGhlIHBvaW50IHRvZ2dsZXMgaXRzIG91dGxpZXIgc3RhdHVzIGFuZCBjYXVzZXMgY3VydmUgcmVmaXR0aW5nXG4gIGxhYmVscz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFufTsgLy8gY29udHJvbGxlZCBieSBJRml0Q2hhcnREYXRhIGxhYmVsT3B0aW9ucywgc2hvd3MgbGFiZWxzXG4gIGRyb3BsaW5lcz86IHN0cmluZ1tdOyAvLyBkZWZpbmVzIHRoZSBkcm9wbGluZXMgdGhhdCB3b3VsZCBiZSBzaG93biBvbiB0aGUgcGxvdCAoSUM1MClcbiAgY29sdW1uTmFtZT86IHN0cmluZzsgLy8gZGVmaW5lcyB0aGUgY29sdW1uIG5hbWUgd2hlcmUgdGhlIHNlcmllcyBpcyBzdG9yZWRcbn1cblxuXG4vKiogUHJvcGVydGllcyB0aGF0IGRlc2NyaWJlIHtAbGluayBJRml0U2VyaWVzT3B0aW9uc30uIFVzZWZ1bCBmb3IgZWRpdGluZywgaW5pdGlhbGl6YXRpb24sIHRyYW5zZm9ybWF0aW9ucywgZXRjLiAqL1xuZXhwb3J0IGNvbnN0IGZpdFNlcmllc1Byb3BlcnRpZXM6IERHLlByb3BlcnR5W10gPSBbXG4gIERHLlByb3BlcnR5LmpzKCdmaXRGdW5jdGlvbicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBjaG9pY2VzOiBPYmplY3Qua2V5cyhmaXRGdW5jdGlvbnMpLCBkZWZhdWx0VmFsdWU6ICdzaWdtb2lkJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygncG9pbnRDb2xvcicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIG51bGxhYmxlOiB0cnVlLCBpbnB1dFR5cGU6ICdDb2xvcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ2ZpdExpbmVDb2xvcicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIG51bGxhYmxlOiB0cnVlLCBpbnB1dFR5cGU6ICdDb2xvcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ291dGxpZXJDb2xvcicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIG51bGxhYmxlOiB0cnVlLCBpbnB1dFR5cGU6ICdDb2xvcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ2Vycm9yTW9kZWwnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnRml0dGluZycsIGRlZmF1bHRWYWx1ZTogJ2NvbnN0YW50JyxcbiAgICBjaG9pY2VzOiBbJ2NvbnN0YW50JywgJ3Byb3BvcnRpb25hbCcsICdjb21iaW5lZCddLCBudWxsYWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2Nvbm5lY3REb3RzJywgREcuVFlQRS5CT09MLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnY2xpY2tUb1RvZ2dsZScsIERHLlRZUEUuQk9PTCwge2NhdGVnb3J5OiAnRml0dGluZycsIGRlc2NyaXB0aW9uOlxuICAgICdDbGljayBvbiBhIHBvaW50IHRvIG1hcmsgaXQgYXMgb3V0bGllciBhbmQgcmVmaXQnLCBudWxsYWJsZTogdHJ1ZSwgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd0ZpdExpbmUnLCBERy5UWVBFLkJPT0wsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZWZhdWx0VmFsdWU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dQb2ludHMnLCBERy5UWVBFLlNUUklORywgLy8gcmV3cml0ZSBkZXNjcmlwdGlvblxuICAgIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZXNjcmlwdGlvbjogJ1doZXRoZXIgcG9pbnRzL2NhbmRsZXN0aWNrcy9ub25lIHNob3VsZCBiZSByZW5kZXJlZCcsXG4gICAgICBkZWZhdWx0VmFsdWU6ICdwb2ludHMnLCBjaG9pY2VzOiBbJ3BvaW50cycsICdjYW5kbGVzdGlja3MnLCAnYm90aCddfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93T3V0bGllcnMnLCBERy5UWVBFLkJPT0wsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZWZhdWx0VmFsdWU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbCcsIERHLlRZUEUuQk9PTCxcbiAgICB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVzY3JpcHRpb246ICdXaGV0aGVyIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIHNob3VsZCBiZSByZW5kZXJlZCcsIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGZyaWVuZGx5TmFtZTogJ0NvbmZpZGVuY2UgSW50ZXJ2YWwnfSksXG4gIERHLlByb3BlcnR5LmpzKCdtYXJrZXJUeXBlJywgREcuVFlQRS5TVFJJTkcsIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIGRlZmF1bHRWYWx1ZTogJ2NpcmNsZScsXG4gICAgY2hvaWNlczogWydhc3RlcmlzaycsICdjaXJjbGUnLCAnY3Jvc3MgYm9yZGVyJywgJ2RpYW1vbmQnLCAnc3F1YXJlJywgJ3N0YXInLFxuICAgICAgJ3RyaWFuZ2xlIGJvdHRvbScsICd0cmlhbmdsZSBsZWZ0JywgJ3RyaWFuZ2xlIHJpZ2h0JywgJ3RyaWFuZ2xlIHRvcCddLCBudWxsYWJsZTogZmFsc2UsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgZnJpZW5kbHlOYW1lOiAnTWFya2VyJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnb3V0bGllck1hcmtlclR5cGUnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgZGVmYXVsdFZhbHVlOiAnb3V0bGllcicsXG4gICAgY2hvaWNlczogWydhc3RlcmlzaycsICdjaXJjbGUnLCAnY3Jvc3MgYm9yZGVyJywgJ2RpYW1vbmQnLCAnb3V0bGllcicsICdzcXVhcmUnLCAnc3RhcicsXG4gICAgICAndHJpYW5nbGUgYm90dG9tJywgJ3RyaWFuZ2xlIGxlZnQnLCAndHJpYW5nbGUgcmlnaHQnLCAndHJpYW5nbGUgdG9wJ10sIG51bGxhYmxlOiBmYWxzZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBmcmllbmRseU5hbWU6ICdPdXRsaWVyIE1hcmtlcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ2xpbmVTdHlsZScsIERHLlRZUEUuU1RSSU5HLCB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBkZWZhdWx0VmFsdWU6ICdzb2xpZCcsXG4gICAgY2hvaWNlczogWydzb2xpZCcsICdkb3R0ZWQnLCAnZGFzaGVkJywgJ2Rhc2hkb3R0ZWQnXSwgbnVsbGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdkcm9wbGluZXMnLCBERy5UWVBFLlNUUklOR19MSVNULCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHNwZWNpZmljIGRyb3BsaW5lcyBzaG91bGQgYmUgcmVuZGVyZWQnLFxuICAgIGNob2ljZXM6IERST1BMSU5FUywgaW5wdXRUeXBlOiAnTXVsdGlDaG9pY2UnfSksXG4gIERHLlByb3BlcnR5LmpzKCdjb2x1bW5OYW1lJywgREcuVFlQRS5TVFJJTkcsIHtkZXNjcmlwdGlvbjogJ0NvbHVtbiBuYW1lIHdoZXJlIHRoZSBzZXJpZXMgaXMgc3RvcmVkJywgZGVmYXVsdFZhbHVlOiAnJ30pLFxuXTtcblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGaXRGdW5jdGlvbihzZXJpZXNGaXRGdW5jOiBzdHJpbmcgfCBJRml0RnVuY3Rpb25EZXNjcmlwdGlvbik6IEZpdEZ1bmN0aW9uPEZpdD4ge1xuICBpZiAodHlwZW9mIHNlcmllc0ZpdEZ1bmMgPT09ICdzdHJpbmcnKVxuICAgIHJldHVybiBmaXRGdW5jdGlvbnNbc2VyaWVzRml0RnVuY107XG4gIGVsc2UgaWYgKCFmaXRGdW5jdGlvbnNbc2VyaWVzRml0RnVuYy5uYW1lXSkge1xuICAgIGNvbnN0IG5hbWUgPSBzZXJpZXNGaXRGdW5jLm5hbWU7XG4gICAgY29uc3QgcGFyYW1OYW1lcyA9IHNlcmllc0ZpdEZ1bmMucGFyYW1ldGVyTmFtZXM7XG4gICAgY29uc3QgZml0RnVuY3Rpb25QYXJ0cyA9IHNlcmllc0ZpdEZ1bmMuZnVuY3Rpb24uc3BsaXQoJz0+JykubWFwKChlbGVtKSA9PiBlbGVtLnRyaW0oKSk7XG4gICAgY29uc3QgZ2V0SW5pdFBhcmFtc1BhcnRzID0gc2VyaWVzRml0RnVuYy5nZXRJbml0aWFsUGFyYW1ldGVycy5zcGxpdCgnPT4nKS5tYXAoKGVsZW0pID0+IGVsZW0udHJpbSgpKTtcbiAgICBjb25zdCBmaXRGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbihmaXRGdW5jdGlvblBhcnRzWzBdLnNsaWNlKDEsIGZpdEZ1bmN0aW9uUGFydHNbMF0ubGVuZ3RoIC0gMSksXG4gICAgICBgJHtmaXRGdW5jdGlvblBhcnRzWzFdLmluY2x1ZGVzKCc7JykgPyAnJyA6ICdyZXR1cm4gJ30ke2ZpdEZ1bmN0aW9uUGFydHNbMV19YCk7XG4gICAgY29uc3QgZ2V0SW5pdFBhcmFtc0Z1bmMgPSBuZXcgRnVuY3Rpb24oZ2V0SW5pdFBhcmFtc1BhcnRzWzBdLnNsaWNlKDEsIGdldEluaXRQYXJhbXNQYXJ0c1swXS5sZW5ndGggLSAxKSxcbiAgICAgIGByZXR1cm4gJHtnZXRJbml0UGFyYW1zUGFydHNbMV19YCk7XG4gICAgY29uc3QgZml0RnVuYyA9IG5ldyBKc0Z1bmN0aW9uKG5hbWUsIChmaXRGdW5jdGlvbiBhcyAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyKSxcbiAgICAgIChnZXRJbml0UGFyYW1zRnVuYyBhcyAoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKSA9PiBGbG9hdDMyQXJyYXkpLCBwYXJhbU5hbWVzKTtcbiAgICBmaXRGdW5jdGlvbnNbbmFtZV0gPSBmaXRGdW5jO1xuICB9XG5cbiAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jLm5hbWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0RGF0YShkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSwgZml0RnVuY3Rpb246IEZpdEZ1bmN0aW9uPEZpdD4sIGVycm9yTW9kZWw/OiBGaXRFcnJvck1vZGVsVHlwZSxcbiAgcGFyYW1ldGVyQm91bmRzPzogRml0UGFyYW1Cb3VuZHNbXSk6IEZpdEN1cnZlIHtcbiAgZXJyb3JNb2RlbCA/Pz0gRml0RXJyb3JNb2RlbC5DT05TVEFOVCBhcyBGaXRFcnJvck1vZGVsVHlwZTtcbiAgY29uc3QgY3VydmVGdW5jdGlvbiA9IGZpdEZ1bmN0aW9uLnk7XG4gIGxldCBwYXJhbVZhbHVlcyA9IGZpdEZ1bmN0aW9uLmdldEluaXRpYWxQYXJhbWV0ZXJzKGRhdGEueCwgZGF0YS55KTtcblxuICBjb25zdCBvZiA9IG9iamVjdGl2ZUZhY3RvcnkoY3VydmVGdW5jdGlvbiwgZGF0YSwgZXJyb3JNb2RlbCk7XG4gIGNvbnN0IGJvdHRvbVBhcmFtQm91bmRzID0gbmV3IEZsb2F0MzJBcnJheShmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGgpO1xuICBjb25zdCB0b3BQYXJhbUJvdW5kcyA9IG5ldyBGbG9hdDMyQXJyYXkoZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIGJvdHRvbVBhcmFtQm91bmRzW2ldID0gcGFyYW1WYWx1ZXNbaV0gPT09IDAgPyAtMSA6IHBhcmFtVmFsdWVzW2ldIC0gTWF0aC5hYnMocGFyYW1WYWx1ZXNbaV0gKiAwLjUpO1xuICAgIHRvcFBhcmFtQm91bmRzW2ldID0gcGFyYW1WYWx1ZXNbaV0gPT09IDAgPyAxIDogcGFyYW1WYWx1ZXNbaV0gKyBNYXRoLmFicyhwYXJhbVZhbHVlc1tpXSAqIDAuNSk7XG4gIH1cbiAgY29uc3QgcGFyYW1ldGVyQm91bmRzQml0c2V0OiBERy5CaXRTZXQgPSBERy5CaXRTZXQuY3JlYXRlKGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aCAqIDIpO1xuICBpZiAocGFyYW1ldGVyQm91bmRzICYmIHBhcmFtZXRlckJvdW5kcy5sZW5ndGggIT09IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtZXRlckJvdW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHBhcmFtZXRlckJvdW5kc1tpXS5taW4gIT09IHVuZGVmaW5lZCAmJiBwYXJhbWV0ZXJCb3VuZHNbaV0ubWluICE9PSBudWxsKSB7XG4gICAgICAgIGJvdHRvbVBhcmFtQm91bmRzW2ldID0gcGFyYW1ldGVyQm91bmRzW2ldLm1pbiE7XG4gICAgICAgIHBhcmFtZXRlckJvdW5kc0JpdHNldC5zZXQoaSAqIDIsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmFtZXRlckJvdW5kc1tpXS5tYXggIT09IHVuZGVmaW5lZCAmJiBwYXJhbWV0ZXJCb3VuZHNbaV0ubWF4ICE9PSBudWxsKSB7XG4gICAgICAgIHRvcFBhcmFtQm91bmRzW2ldID0gcGFyYW1ldGVyQm91bmRzW2ldLm1heCE7XG4gICAgICAgIHBhcmFtZXRlckJvdW5kc0JpdHNldC5zZXQoaSAqIDIgKyAxLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgZ2V0Q29uc2lzdGVuY3kgPSAoZXh0cmVtdW06IEV4dHJlbXVtKSA9PiB7XG4gICAgY29uc3QgcmVzaWR1YWxzID0gb2YoZXh0cmVtdW0ucG9pbnQpLnJlc2lkdWFscztcbiAgICBsZXQgcTFxNCA9IDA7XG4gICAgbGV0IHEycTMgPSAwO1xuICAgIC8vIFRPRE86IHJld3JpdGUgcXVhcnRpbGVzIHRvIGEgYmV0dGVyIGNvbmRpdGlvblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1YWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVzaWR1YWxzLmxlbmd0aCAvIDQgPiBpKVxuICAgICAgICBxMXE0ICs9IE1hdGgucG93KHJlc2lkdWFsc1tpXSwgMik7XG4gICAgICBlbHNlIGlmICgzICogcmVzaWR1YWxzLmxlbmd0aCAvIDQgPiBpKVxuICAgICAgICBxMnEzICs9IE1hdGgucG93KHJlc2lkdWFsc1tpXSwgMik7XG4gICAgICBlbHNlXG4gICAgICAgIHExcTQgKz0gTWF0aC5wb3cocmVzaWR1YWxzW2ldLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHExcTQgLyBxMnEzO1xuICB9O1xuXG4gIGxldCBpdGVyID0gLTE7XG4gIGxldCBjb250aW51ZU9wdGltaXphdGlvbiA9IDA7XG4gIGxldCBzdGF0aXN0aWNzOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IG9wdGltaXphdGlvbjogT3B0aW1pemF0aW9uUmVzdWx0O1xuICBsZXQgbWluSWR4ID0gMDtcbiAgZG8ge1xuICAgIG9wdGltaXphdGlvbiA9IHBlcmZvcm1OZWxkZXJNZWFkT3B0aW1pemF0aW9uKG9mLCBib3R0b21QYXJhbUJvdW5kcywgdG9wUGFyYW1Cb3VuZHMsIHtcbiAgICAgIHRvbGVyYW5jZTogTkVMREVSX01FQURfREVGQVVMVFMuVE9MRVJBTkNFLFxuICAgICAgbWF4SXRlcjogTkVMREVSX01FQURfREVGQVVMVFMuTUFYX0lURVIsXG4gICAgICBub25aZXJvUGFyYW06IE5FTERFUl9NRUFEX0RFRkFVTFRTLk5PTl9aRVJPX1BBUkFNLFxuICAgICAgaW5pdGlhbFNjYWxlOiBORUxERVJfTUVBRF9ERUZBVUxUUy5JTklUSUFMX1NDQUxFLFxuICAgICAgc2NhbGVSZWZsZWN0aW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9SRUZMRUNUSU9OLFxuICAgICAgc2NhbGVFeHBhbnNpb246IE5FTERFUl9NRUFEX0RFRkFVTFRTLlNDQUxFX0VYUEFOU0lPTixcbiAgICAgIHNjYWxlQ29udHJhY3Rpb246IE5FTERFUl9NRUFEX0RFRkFVTFRTLlNDQUxFX0NPTlRSQUNUSU9OLFxuICAgIH0sIDEwLCBwYXJhbVZhbHVlcyk7XG5cbiAgICBtaW5JZHggPSAwO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgb3B0aW1pemF0aW9uLmV4dHJlbXVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9wdGltaXphdGlvbi5leHRyZW11bXNbaV0uY29zdCA8IG9wdGltaXphdGlvbi5leHRyZW11bXNbbWluSWR4XS5jb3N0KVxuICAgICAgICBtaW5JZHggPSBpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRpc3RpY3MgPSBnZXRDb25zaXN0ZW5jeShvcHRpbWl6YXRpb24uZXh0cmVtdW1zW21pbklkeF0pO1xuICAgIGlmIChzdGF0aXN0aWNzID09PSBudWxsKVxuICAgICAgc3RhdGlzdGljcyA9IG5ld1N0YXRpc3RpY3M7XG4gICAgZWxzZSBpZiAobmV3U3RhdGlzdGljcyA8IHN0YXRpc3RpY3MpIHtcbiAgICAgIHN0YXRpc3RpY3MgPSBuZXdTdGF0aXN0aWNzO1xuICAgICAgY29udGludWVPcHRpbWl6YXRpb24gPSAwO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICBjb250aW51ZU9wdGltaXphdGlvbisrO1xuXG4gICAgcGFyYW1WYWx1ZXMgPSBvcHRpbWl6YXRpb24uZXh0cmVtdW1zW21pbklkeF0ucG9pbnQ7XG5cbiAgICBpZiAoaXRlciA+IDQwIHx8IGNvbnRpbnVlT3B0aW1pemF0aW9uID09PSAzKVxuICAgICAgYnJlYWs7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXBhcmFtZXRlckJvdW5kc0JpdHNldC5nZXQoaSAqIDIpKVxuICAgICAgICBib3R0b21QYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldIC0gTWF0aC5hYnMocGFyYW1WYWx1ZXNbaV0gKiAoY29udGludWVPcHRpbWl6YXRpb24gKyAwLjUpKTtcbiAgICAgIGlmICghcGFyYW1ldGVyQm91bmRzQml0c2V0LmdldChpICogMiArIDEpKVxuICAgICAgICB0b3BQYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldICsgTWF0aC5hYnMocGFyYW1WYWx1ZXNbaV0gKiAoY29udGludWVPcHRpbWl6YXRpb24gKyAwLjUpKTtcbiAgICB9XG5cbiAgICBpdGVyKys7XG4gIH0gd2hpbGUgKHRydWUpO1xuXG4gIGNvbnN0IGZpdHRlZEN1cnZlID0gZ2V0Rml0dGVkQ3VydmUoY3VydmVGdW5jdGlvbiwgcGFyYW1WYWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgZml0dGVkQ3VydmU6IGZpdHRlZEN1cnZlLFxuICAgIHBhcmFtZXRlcnM6IHBhcmFtVmFsdWVzLFxuICB9O1xufVxuXG5cbmZ1bmN0aW9uIG9iamVjdGl2ZUZhY3RvcnkodGFyZ2V0RnVuYzogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgZGF0YToge3k6IG51bWJlcltdLCB4OiBudW1iZXJbXX0sIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWxUeXBlKTpcbiAgICAocGFyYW1zOiBGbG9hdDMyQXJyYXkpID0+IHtsaWtlbGlob29kOiBudW1iZXIsIHJlc2lkdWFsczogbnVtYmVyW119IHtcbiAgcmV0dXJuIChwYXJhbXM6IEZsb2F0MzJBcnJheSkgPT4ge1xuICAgIGxldCBsaWtlbGlob29kID0gMDtcbiAgICBsZXQgc2lnbWFBID0gMDtcbiAgICBsZXQgc2lnbWFCID0gMDtcblxuICAgIGNvbnN0IG9icyA9IGRhdGEueTtcbiAgICBjb25zdCBwcmVkID0gZGF0YS54Lm1hcCgoeCkgPT4gdGFyZ2V0RnVuYyhwYXJhbXMsIHgpKTtcbiAgICBjb25zdCByZXNpZHVhbHMgPSBvYnMubWFwKChvYnMsIGkpID0+IG9icyAtIHByZWRbaV0pO1xuICAgIGNvbnN0IHJlc2lkdWVzU3F1YXJlcyA9IHJlc2lkdWFscy5tYXAoKHJlcykgPT4gTWF0aC5wb3cocmVzLCAyKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFtGaXRFcnJvck1vZGVsLkNPTlNUQU5ULCBGaXRFcnJvck1vZGVsLkNPTUJJTkVEXS5pbmNsdWRlcyhlcnJvck1vZGVsKSlcbiAgICAgICAgc2lnbWFBICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcbiAgICAgIGVsc2UgaWYgKGVycm9yTW9kZWwgPT09IEZpdEVycm9yTW9kZWwuUFJPUE9SVElPTkFMKVxuICAgICAgICBzaWdtYUIgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldIC8gKHByZWRbaV0gKiBwcmVkW2ldKTtcbiAgICB9XG4gICAgc2lnbWFBID0gTWF0aC5zcXJ0KHNpZ21hQSAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuICAgIHNpZ21hQiA9IE1hdGguc3FydChzaWdtYUIgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcblxuICAgIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLkNPTUJJTkVEKVxuICAgICAgKHtzaWdtYUEsIHNpZ21hQn0gPSBnZXRTaWdtYXNGb3JDb21iaW5lZEVycm9yTW9kZWwoc2lnbWFBLCBzaWdtYUIsIHJlc2lkdWVzU3F1YXJlcywgcHJlZCkpO1xuXG4gICAgY29uc3Qgc2lnbWFTcUk6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNpZ21hU3FJW2ldID0gTWF0aC5wb3coc2lnbWFBICsgc2lnbWFCICogcHJlZFtpXSwgMik7XG4gICAgICBsaWtlbGlob29kICs9IHJlc2lkdWVzU3F1YXJlc1tpXSAvIHNpZ21hU3FJW2ldICsgTWF0aC5sb2coMiAqIE1hdGguUEkgKiBzaWdtYVNxSVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtsaWtlbGlob29kLCByZXNpZHVhbHN9O1xuICB9O1xufVxuXG5cbmZ1bmN0aW9uIGdldFNpZ21hKHRhcmdldEZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt5OiBudW1iZXJbXSwgeDogbnVtYmVyW119LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSwgcGFyYW1zOiBGbG9hdDMyQXJyYXkpOiB7c2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyfSB7XG4gIGxldCBzaWdtYUEgPSAwO1xuICBsZXQgc2lnbWFCID0gMDtcblxuICBjb25zdCBvYnMgPSBkYXRhLnk7XG4gIGNvbnN0IHByZWQgPSBkYXRhLngubWFwKCh4KSA9PiB0YXJnZXRGdW5jKHBhcmFtcywgeCkpO1xuICBjb25zdCByZXNpZHVhbHMgPSBvYnMubWFwKChvYnMsIGkpID0+IG9icyAtIHByZWRbaV0pO1xuICBjb25zdCByZXNpZHVlc1NxdWFyZXMgPSByZXNpZHVhbHMubWFwKChyZXMpID0+IE1hdGgucG93KHJlcywgMikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKFtGaXRFcnJvck1vZGVsLkNPTlNUQU5ULCBGaXRFcnJvck1vZGVsLkNPTUJJTkVEXS5pbmNsdWRlcyhlcnJvck1vZGVsKSlcbiAgICAgIHNpZ21hQSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gICAgZWxzZSBpZiAoZXJyb3JNb2RlbCA9PT0gRml0RXJyb3JNb2RlbC5QUk9QT1JUSU9OQUwpXG4gICAgICBzaWdtYUIgKz0gTWF0aC5wb3cocmVzaWR1YWxzW2ldIC8gTWF0aC5hYnMocHJlZFtpXSksIDIpO1xuICB9XG4gIHNpZ21hQSA9IE1hdGguc3FydChzaWdtYUEgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcbiAgc2lnbWFCID0gTWF0aC5zcXJ0KHNpZ21hQiAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuXG4gIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLkNPTUJJTkVEKVxuICAgICh7c2lnbWFBLCBzaWdtYUJ9ID0gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQSwgc2lnbWFCLCByZXNpZHVlc1NxdWFyZXMsIHByZWQpKTtcblxuICByZXR1cm4ge3NpZ21hQSwgc2lnbWFCfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQTogbnVtYmVyLCBzaWdtYUI6IG51bWJlciwgcmVzaWR1ZXNTcXVhcmVzOiBudW1iZXJbXSwgcHJlZDogbnVtYmVyW10pOlxuICB7c2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyfSB7XG4gIGxldCBsaWtlbGlob29kQ29tYmluZWQgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICBsZXQgZmluYWxQcm9wb3J0aW9uID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMTA7IGkrKykge1xuICAgIGxldCBsaWtlbGlob29kQ29tYmluZWRMb2NhbCA9IDA7XG4gICAgY29uc3QgcHJvcG9ydGlvbiA9IGkgLyAxMDtcbiAgICBjb25zdCBzaWdtYUFDb21iaW5lZCA9IHNpZ21hQSAqIHByb3BvcnRpb247XG4gICAgY29uc3Qgc2lnbWFCQ29tYmluZWQgPSBzaWdtYUEgKiAoMSAtIHByb3BvcnRpb24pO1xuICAgIGNvbnN0IHNpZ21hU3FJQ29tYmluZWQ6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHNpZ21hU3FJQ29tYmluZWRbal0gPSBNYXRoLnBvdyhzaWdtYUFDb21iaW5lZCArIHNpZ21hQkNvbWJpbmVkICogcHJlZFtqXSwgMik7XG4gICAgICBsaWtlbGlob29kQ29tYmluZWRMb2NhbCArPSByZXNpZHVlc1NxdWFyZXNbal0gLyBzaWdtYVNxSUNvbWJpbmVkW2pdICsgTWF0aC5sb2coMiAqIE1hdGguUEkgKiBzaWdtYVNxSUNvbWJpbmVkW2pdKTtcbiAgICB9XG4gICAgaWYgKGxpa2VsaWhvb2RDb21iaW5lZExvY2FsIDwgbGlrZWxpaG9vZENvbWJpbmVkKSB7XG4gICAgICBsaWtlbGlob29kQ29tYmluZWQgPSBsaWtlbGlob29kQ29tYmluZWRMb2NhbDtcbiAgICAgIGZpbmFsUHJvcG9ydGlvbiA9IHByb3BvcnRpb247XG4gICAgfVxuICB9XG4gIHNpZ21hQiA9IHNpZ21hQSAqICgxIC0gZmluYWxQcm9wb3J0aW9uKTtcbiAgc2lnbWFBID0gc2lnbWFBICogZmluYWxQcm9wb3J0aW9uO1xuXG4gIHJldHVybiB7c2lnbWFBLCBzaWdtYUJ9O1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sIHBhcmFtVmFsdWVzOiBGbG9hdDMyQXJyYXksXG4gIGN1cnZlRnVuY3Rpb246IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsIGNvbmZpZGVuY2VMZXZlbDogbnVtYmVyID0gMC4wNSwgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbFR5cGUpOlxuICBGaXRDb25maWRlbmNlSW50ZXJ2YWxzIHtcbiAgY29uc3QgZXJyb3IgPSBnZXRTaWdtYShjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBlcnJvck1vZGVsLCBwYXJhbVZhbHVlcyk7XG4gIGNvbnN0IHF1YW50aWxlID0galN0YXQubm9ybWFsLmludigxIC0gY29uZmlkZW5jZUxldmVsLzIsIDAsIDEpO1xuXG4gIGNvbnN0IHRvcCA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICAgIHJldHVybiB2YWx1ZSArIHF1YW50aWxlICogKGVycm9yLnNpZ21hQSArIE1hdGguYWJzKHZhbHVlKSAqIGVycm9yLnNpZ21hQik7XG4gIH07XG5cbiAgY29uc3QgYm90dG9tID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gICAgcmV0dXJuIHZhbHVlIC0gcXVhbnRpbGUgKiAoZXJyb3Iuc2lnbWFBICsgTWF0aC5hYnModmFsdWUpICogZXJyb3Iuc2lnbWFCKTtcbiAgfTtcblxuICByZXR1cm4ge2NvbmZpZGVuY2VUb3A6IHRvcCwgY29uZmlkZW5jZUJvdHRvbTogYm90dG9tfTtcbn1cblxuXG4vLyBjb25zdCBzZXJpZXM6IEZpdFNlcmllcyA9IG5ldyBGaXRTZXJpZXMoW1xuLy8gICB7J3gnOiAwLCAneSc6IDB9LFxuLy8gICB7J3gnOiAxLCAneSc6IDAuNX0sXG4vLyAgIHsneCc6IDIsICd5JzogMX0sXG4vLyAgIHsneCc6IDMsICd5JzogMTAsICdvdXRsaWVyJzogdHJ1ZX0sXG4vLyAgIHsneCc6IDQsICd5JzogMH0sXG4vLyBdKTtcblxuIl19
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==