@datagrok-libraries/statistics 1.12.1 → 1.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # statistics changelog
2
2
 
3
+ ## 1.12.2 (2026-03-26)
4
+
5
+ * MPO: Add profile versioning
6
+
3
7
  ## 1.12.1 (2026-03-19)
4
8
 
5
9
  * MPO: Added resize support for the line editor
package/css/styles.css CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
  .statistics-mpo-weight-toggle {
140
140
  cursor: pointer;
141
- color: var(--grey-3);
141
+ color: var(--grey-4);
142
142
  font-size: 12px;
143
143
  }
144
144
 
@@ -147,11 +147,11 @@
147
147
  }
148
148
 
149
149
  .statistics-mpo-weight-toggle-active {
150
- color: var(--blue-1);
150
+ color: var(--grey-4);
151
151
  }
152
152
 
153
153
  .statistics-mpo-weight-toggle-active:hover {
154
- color: var(--blue-2);
154
+ color: var(--grey-5);
155
155
  }
156
156
 
157
157
  .statistics-mpo-hidden {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "friendlyName": "statistics",
7
- "version": "1.12.1",
7
+ "version": "1.12.3",
8
8
  "description": "Statistics utilities",
9
9
  "author": {
10
10
  "name": "Dmytro Kovalyov",
@@ -2,6 +2,7 @@ import { IFitSeries } from './fit-curve';
2
2
  export declare class FitConstants {
3
3
  static TAG_FIT_CHART_FORMAT: string;
4
4
  static TAG_FIT_CHART_FORMAT_3DX: string;
5
+ static TAG_CURVE_FORMAT: string;
5
6
  static FIT_SEM_TYPE: string;
6
7
  static FIT_CELL_TYPE: string;
7
8
  static TAG_FIT: string;
@@ -1 +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"}
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,gBAAgB,SAAoB;IAC3C,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,aAAa,SAAS;IAC7B,MAAM,CAAC,OAAO,SAAU;IAExB,MAAM,CAAC,kBAAkB,SAAO;IAChC,MAAM,CAAC,mBAAmB,SAAO;IACjC,MAAM,CAAC,0BAA0B,SAAM;IACvC,MAAM,CAAC,2BAA2B,SAAK;IACvC,MAAM,CAAC,wCAAwC,SAAM;IACrD,MAAM,CAAC,yCAAyC,SAAM;IACtD,MAAM,CAAC,sBAAsB,SAAO;IACpC,MAAM,CAAC,uBAAuB,SAAM;IACpC,MAAM,CAAC,kBAAkB,SAAO;IAChC,MAAM,CAAC,mBAAmB,SAAO;IACjC,MAAM,CAAC,mCAAmC,SAAO;IACjD,MAAM,CAAC,oCAAoC,SAAO;IAClD,MAAM,CAAC,mBAAmB,SAAO;IACjC,MAAM,CAAC,oBAAoB,SAAO;IAClC,MAAM,CAAC,iCAAiC,SAAO;IAC/C,MAAM,CAAC,kCAAkC,SAAO;IAChD,MAAM,CAAC,mBAAmB,SAAM;IAChC,MAAM,CAAC,oCAAoC,SAAM;IACjD,MAAM,CAAC,kBAAkB,SAAK;IAC9B,MAAM,CAAC,6BAA6B,SAAM;IAC1C,MAAM,CAAC,oBAAoB,SAAM;IACjC,MAAM,CAAC,qBAAqB,SAAM;IAClC,MAAM,CAAC,sCAAsC,SAAM;IACnD,MAAM,CAAC,6BAA6B,SAAK;IACzC,MAAM,CAAC,oBAAoB,SAAM;IAEjC,MAAM,CAAC,eAAe,SAAM;IAC5B,MAAM,CAAC,aAAa,SAAK;IACzB,MAAM,CAAC,qBAAqB,SAAK;IACjC,MAAM,CAAC,0BAA0B,SAAK;IACtC,MAAM,CAAC,0BAA0B,SAAO;IACxC,MAAM,CAAC,2BAA2B,SAAK;IACvC,MAAM,CAAC,YAAY,SAAW;IAC9B,MAAM,CAAC,gBAAgB,SAAU;IACjC,MAAM,CAAC,uBAAuB,SAAM;IACpC,MAAM,CAAC,2BAA2B,SAAM;IACxC,MAAM,CAAC,kCAAkC,SAAK;IAC9C,MAAM,CAAC,mCAAmC,SAAK;IAE/C,MAAM,CAAC,WAAW,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAC,CAK3C;IAEF,MAAM,CAAC,gCAAgC;;;MAGrC;IAEF,MAAM,CAAC,gCAAgC,SAA0B;IACjE,MAAM,CAAC,8BAA8B,SAA2B;IAEhE,MAAM,CAAC,aAAa,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,CAAA;KAAC,CAQzE;CACH"}
package/src/fit/const.js CHANGED
@@ -2,6 +2,7 @@ export class FitConstants {
2
2
  }
3
3
  FitConstants.TAG_FIT_CHART_FORMAT = '.fitChartFormat';
4
4
  FitConstants.TAG_FIT_CHART_FORMAT_3DX = '3dx';
5
+ FitConstants.TAG_CURVE_FORMAT = '.%curve-format';
5
6
  FitConstants.FIT_SEM_TYPE = 'fit';
6
7
  FitConstants.FIT_CELL_TYPE = 'fit';
7
8
  FitConstants.TAG_FIT = '.fit';
@@ -60,4 +61,4 @@ FitConstants.CONDITION_MAP = {
60
61
  '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
62
  '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
  };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sWUFBWTs7QUFDaEIsaUNBQW9CLEdBQUcsaUJBQWlCLENBQUM7QUFDekMscUNBQXdCLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLHlCQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLDBCQUFhLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLG9CQUFPLEdBQUcsTUFBTSxDQUFDO0FBRWpCLCtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUN6QixnQ0FBbUIsR0FBRyxHQUFHLENBQUM7QUFDMUIsdUNBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLHdDQUEyQixHQUFHLENBQUMsQ0FBQztBQUNoQyxxREFBd0MsR0FBRyxFQUFFLENBQUM7QUFDOUMsc0RBQXlDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLG1DQUFzQixHQUFHLEdBQUcsQ0FBQztBQUM3QixvQ0FBdUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsK0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLGdDQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixnREFBbUMsR0FBRyxHQUFHLENBQUM7QUFDMUMsaURBQW9DLEdBQUcsR0FBRyxDQUFDO0FBQzNDLGdDQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixpQ0FBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsOENBQWlDLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLCtDQUFrQyxHQUFHLEdBQUcsQ0FBQztBQUN6QyxnQ0FBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsaURBQW9DLEdBQUcsRUFBRSxDQUFDO0FBQzFDLCtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QiwwQ0FBNkIsR0FBRyxFQUFFLENBQUM7QUFDbkMsaUNBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQzFCLGtDQUFxQixHQUFHLEVBQUUsQ0FBQztBQUMzQixtREFBc0MsR0FBRyxFQUFFLENBQUM7QUFDNUMsMENBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLGlDQUFvQixHQUFHLEVBQUUsQ0FBQztBQUUxQiw0QkFBZSxHQUFHLEVBQUUsQ0FBQztBQUNyQiwwQkFBYSxHQUFHLENBQUMsQ0FBQztBQUNsQixrQ0FBcUIsR0FBRyxDQUFDLENBQUM7QUFDMUIsdUNBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLHVDQUEwQixHQUFHLEdBQUcsQ0FBQztBQUNqQyx3Q0FBMkIsR0FBRyxDQUFDLENBQUM7QUFDaEMseUJBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsNkJBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLG9DQUF1QixHQUFHLEVBQUUsQ0FBQztBQUM3Qix3Q0FBMkIsR0FBRyxFQUFFLENBQUM7QUFDakMsK0NBQWtDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGdEQUFtQyxHQUFHLENBQUMsQ0FBQztBQUV4Qyx3QkFBVyxHQUE4QjtJQUM5QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDM0IsQ0FBQztBQUVLLDZDQUFnQyxHQUFHO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUVLLDZDQUFnQyxHQUFHLHNCQUFzQixDQUFDO0FBQzFELDJDQUE4QixHQUFHLHVCQUF1QixDQUFDO0FBRXpELDBCQUFhLEdBQTBEO0lBQzVFLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sTUFBSyxDQUFDO0lBQzdFLGtDQUFrQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDekMsTUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsTUFBTSxNQUFLLENBQUMsQ0FBQSxFQUFBLENBQUM7SUFDM0QscUNBQXFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUM1QyxNQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQztJQUM5RSxxQ0FBcUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzVDLE1BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsRUFBQSxDQUFDO0NBQy9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lGaXRTZXJpZXN9IGZyb20gJy4vZml0LWN1cnZlJztcblxuZXhwb3J0IGNsYXNzIEZpdENvbnN0YW50cyB7XG4gIHN0YXRpYyBUQUdfRklUX0NIQVJUX0ZPUk1BVCA9ICcuZml0Q2hhcnRGb3JtYXQnO1xuICBzdGF0aWMgVEFHX0ZJVF9DSEFSVF9GT1JNQVRfM0RYID0gJzNkeCc7XG4gIHN0YXRpYyBGSVRfU0VNX1RZUEUgPSAnZml0JztcbiAgc3RhdGljIEZJVF9DRUxMX1RZUEUgPSAnZml0JztcbiAgc3RhdGljIFRBR19GSVQgPSAnLmZpdCc7XG5cbiAgc3RhdGljIENFTExfREVGQVVMVF9XSURUSCA9IDIzMDtcbiAgc3RhdGljIENFTExfREVGQVVMVF9IRUlHSFQgPSAxNjA7XG4gIHN0YXRpYyBNSU5fQ0VMTF9SRU5ERVJFUl9QWF9XSURUSCA9IDEwO1xuICBzdGF0aWMgTUlOX0NFTExfUkVOREVSRVJfUFhfSEVJR0hUID0gNTtcbiAgc3RhdGljIE1JTl9QT0lOVFNfQU5EX1NUQVRTX1ZJU0lCSUxJVFlfUFhfV0lEVEggPSA3MDtcbiAgc3RhdGljIE1JTl9QT0lOVFNfQU5EX1NUQVRTX1ZJU0lCSUxJVFlfUFhfSEVJR0hUID0gNDU7XG4gIHN0YXRpYyBNSU5fQVhFU19DRUxMX1BYX1dJRFRIID0gMTAwO1xuICBzdGF0aWMgTUlOX0FYRVNfQ0VMTF9QWF9IRUlHSFQgPSA1NTtcbiAgc3RhdGljIE1JTl9USVRMRV9QWF9XSURUSCA9IDI3NTtcbiAgc3RhdGljIE1JTl9USVRMRV9QWF9IRUlHSFQgPSAyMjU7XG4gIHN0YXRpYyBNSU5fWF9BWElTX05BTUVfVklTSUJJTElUWV9QWF9XSURUSCA9IDE4MDtcbiAgc3RhdGljIE1JTl9ZX0FYSVNfTkFNRV9WSVNJQklMSVRZX1BYX0hFSUdIVCA9IDE0MDtcbiAgc3RhdGljIE1JTl9MRUdFTkRfUFhfV0lEVEggPSAzMjU7XG4gIHN0YXRpYyBNSU5fTEVHRU5EX1BYX0hFSUdIVCA9IDI3NTtcbiAgc3RhdGljIE1JTl9EUk9QTElORVNfVklTSUJJTElUWV9QWF9XSURUSCA9IDEyMDtcbiAgc3RhdGljIE1JTl9EUk9QTElORVNfVklTSUJJTElUWV9QWF9IRUlHSFQgPSAxMTA7XG4gIHN0YXRpYyBBWEVTX0xFRlRfUFhfTUFSR0lOID0gMzg7XG4gIHN0YXRpYyBBWEVTX0xFRlRfUFhfTUFSR0lOX1dJVEhfQVhFU19MQUJFTFMgPSA0NTtcbiAgc3RhdGljIEFYRVNfVE9QX1BYX01BUkdJTiA9IDU7XG4gIHN0YXRpYyBBWEVTX1RPUF9QWF9NQVJHSU5fV0lUSF9USVRMRSA9IDI1O1xuICBzdGF0aWMgQVhFU19SSUdIVF9QWF9NQVJHSU4gPSAxODtcbiAgc3RhdGljIEFYRVNfQk9UVE9NX1BYX01BUkdJTiA9IDE1O1xuICBzdGF0aWMgQVhFU19CT1RUT01fUFhfTUFSR0lOX1dJVEhfQVhFU19MQUJFTFMgPSAzMDtcbiAgc3RhdGljIFhfQVhJU19MQUJFTF9CT1RUT01fUFhfTUFSR0lOID0gNDtcbiAgc3RhdGljIExFR0VORF9UT1BfUFhfTUFSR0lOID0gMTA7XG5cbiAgc3RhdGljIE9VVExJRVJfUFhfU0laRSA9IDEyO1xuICBzdGF0aWMgUE9JTlRfUFhfU0laRSA9IDQ7XG4gIHN0YXRpYyBPVVRMSUVSX0hJVEJPWF9SQURJVVMgPSAyO1xuICBzdGF0aWMgQ0FORExFU1RJQ0tfQk9SREVSX1BYX1NJWkUgPSA0O1xuICBzdGF0aWMgQ0FORExFU1RJQ0tfTUVESUFOX1BYX1NJWkUgPSAzLjU7XG4gIHN0YXRpYyBDQU5ETEVTVElDS19PVVRMSUVSX1BYX1NJWkUgPSA2O1xuICBzdGF0aWMgSU5GTEFURV9TSVpFID0gLTEyIC8gMjtcbiAgc3RhdGljIE1JTl9JTkZMQVRFX1NJWkUgPSAtNCAvIDI7XG4gIHN0YXRpYyBMRUdFTkRfUkVDT1JEX1BYX0hFSUdIVCA9IDE4O1xuICBzdGF0aWMgTEVHRU5EX1JFQ09SRF9MSU5FX1BYX1dJRFRIID0gMjA7XG4gIHN0YXRpYyBMRUdFTkRfUkVDT1JEX0xJTkVfUklHSFRfUFhfTUFSR0lOID0gNTtcbiAgc3RhdGljIExFR0VORF9SRUNPUkRfTElORV9CT1RUT01fUFhfTUFSR0lOID0gNDtcblxuICBzdGF0aWMgTElORV9TVFlMRVM6IHtba2V5OiBzdHJpbmddOiBudW1iZXJbXX0gPSB7XG4gICAgJ3NvbGlkJzogW10sXG4gICAgJ2RvdHRlZCc6IFsxLCAxXSxcbiAgICAnZGFzaGVkJzogWzUsIDVdLFxuICAgICdkYXNoZG90dGVkJzogWzUsIDUsIDIsIDVdLFxuICB9O1xuXG4gIHN0YXRpYyBDVVJWRV9DT05GSURFTkNFX0lOVEVSVkFMX0JPVU5EUyA9IHtcbiAgICBUT1A6ICd0b3AnLFxuICAgIEJPVFRPTTogJ2JvdHRvbScsXG4gIH07XG5cbiAgc3RhdGljIENPTkZJREVOQ0VfSU5URVJWQUxfU1RST0tFX0NPTE9SID0gJ3JnYmEoMjU1LDE5MSw2MywwLjQpJztcbiAgc3RhdGljIENPTkZJREVOQ0VfSU5URVJWQUxfRklMTF9DT0xPUiA9ICdyZ2JhKDI1NSwyMzgsMjA0LDAuMyknO1xuXG4gIHN0YXRpYyBDT05ESVRJT05fTUFQOiB7W2tleTogc3RyaW5nXTogKChzZXJpZXM/OiBJRml0U2VyaWVzW10pID0+IGJvb2xlYW4pfSA9IHtcbiAgICAnTm8gc2VyaWVzIHRvIHNob3cnOiAoc2VyaWVzKSA9PiBzZXJpZXMgPT09IHVuZGVmaW5lZCB8fCBzZXJpZXM/Lmxlbmd0aCA9PT0gMCxcbiAgICAnVGhlcmUgd2VyZSBzZXJpZXMgd2l0aCBubyBwb2ludHMnOiAoc2VyaWVzKSA9PlxuICAgICAgICAgIHNlcmllcyEuc29tZSgoc2VyaWVzKSA9PiBzZXJpZXMucG9pbnRzPy5sZW5ndGggPT09IDApLFxuICAgICdUaGVyZSB3ZXJlIHNlcmllcyB3aXRoIGFsbCB4IHplcm9lcyc6IChzZXJpZXMpID0+XG4gICAgICAgICAgc2VyaWVzIS5zb21lKChzZXJpZXMpID0+IHNlcmllcy5wb2ludHM/LmV2ZXJ5KChwb2ludCkgPT4gcG9pbnQueCA9PT0gMCkpLFxuICAgICdUaGVyZSB3ZXJlIHNlcmllcyB3aXRoIGFsbCB5IHplcm9lcyc6IChzZXJpZXMpID0+XG4gICAgICAgICAgc2VyaWVzIS5zb21lKChzZXJpZXMpID0+IHNlcmllcy5wb2ludHM/LmV2ZXJ5KChwb2ludCkgPT4gcG9pbnQueSA9PT0gMCkpLFxuICB9O1xufVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sWUFBWTs7QUFDaEIsaUNBQW9CLEdBQUcsaUJBQWlCLENBQUM7QUFDekMscUNBQXdCLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLDZCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ3BDLHlCQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLDBCQUFhLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLG9CQUFPLEdBQUcsTUFBTSxDQUFDO0FBRWpCLCtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUN6QixnQ0FBbUIsR0FBRyxHQUFHLENBQUM7QUFDMUIsdUNBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLHdDQUEyQixHQUFHLENBQUMsQ0FBQztBQUNoQyxxREFBd0MsR0FBRyxFQUFFLENBQUM7QUFDOUMsc0RBQXlDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLG1DQUFzQixHQUFHLEdBQUcsQ0FBQztBQUM3QixvQ0FBdUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsK0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLGdDQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixnREFBbUMsR0FBRyxHQUFHLENBQUM7QUFDMUMsaURBQW9DLEdBQUcsR0FBRyxDQUFDO0FBQzNDLGdDQUFtQixHQUFHLEdBQUcsQ0FBQztBQUMxQixpQ0FBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsOENBQWlDLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLCtDQUFrQyxHQUFHLEdBQUcsQ0FBQztBQUN6QyxnQ0FBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsaURBQW9DLEdBQUcsRUFBRSxDQUFDO0FBQzFDLCtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QiwwQ0FBNkIsR0FBRyxFQUFFLENBQUM7QUFDbkMsaUNBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQzFCLGtDQUFxQixHQUFHLEVBQUUsQ0FBQztBQUMzQixtREFBc0MsR0FBRyxFQUFFLENBQUM7QUFDNUMsMENBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLGlDQUFvQixHQUFHLEVBQUUsQ0FBQztBQUUxQiw0QkFBZSxHQUFHLEVBQUUsQ0FBQztBQUNyQiwwQkFBYSxHQUFHLENBQUMsQ0FBQztBQUNsQixrQ0FBcUIsR0FBRyxDQUFDLENBQUM7QUFDMUIsdUNBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLHVDQUEwQixHQUFHLEdBQUcsQ0FBQztBQUNqQyx3Q0FBMkIsR0FBRyxDQUFDLENBQUM7QUFDaEMseUJBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsNkJBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLG9DQUF1QixHQUFHLEVBQUUsQ0FBQztBQUM3Qix3Q0FBMkIsR0FBRyxFQUFFLENBQUM7QUFDakMsK0NBQWtDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGdEQUFtQyxHQUFHLENBQUMsQ0FBQztBQUV4Qyx3QkFBVyxHQUE4QjtJQUM5QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDM0IsQ0FBQztBQUVLLDZDQUFnQyxHQUFHO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUVLLDZDQUFnQyxHQUFHLHNCQUFzQixDQUFDO0FBQzFELDJDQUE4QixHQUFHLHVCQUF1QixDQUFDO0FBRXpELDBCQUFhLEdBQTBEO0lBQzVFLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sTUFBSyxDQUFDO0lBQzdFLGtDQUFrQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDekMsTUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsTUFBTSxNQUFLLENBQUMsQ0FBQSxFQUFBLENBQUM7SUFDM0QscUNBQXFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUM1QyxNQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQztJQUM5RSxxQ0FBcUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzVDLE1BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsRUFBQSxDQUFDO0NBQy9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lGaXRTZXJpZXN9IGZyb20gJy4vZml0LWN1cnZlJztcblxuZXhwb3J0IGNsYXNzIEZpdENvbnN0YW50cyB7XG4gIHN0YXRpYyBUQUdfRklUX0NIQVJUX0ZPUk1BVCA9ICcuZml0Q2hhcnRGb3JtYXQnO1xuICBzdGF0aWMgVEFHX0ZJVF9DSEFSVF9GT1JNQVRfM0RYID0gJzNkeCc7XG4gIHN0YXRpYyBUQUdfQ1VSVkVfRk9STUFUID0gJy4lY3VydmUtZm9ybWF0JztcbiAgc3RhdGljIEZJVF9TRU1fVFlQRSA9ICdmaXQnO1xuICBzdGF0aWMgRklUX0NFTExfVFlQRSA9ICdmaXQnO1xuICBzdGF0aWMgVEFHX0ZJVCA9ICcuZml0JztcblxuICBzdGF0aWMgQ0VMTF9ERUZBVUxUX1dJRFRIID0gMjMwO1xuICBzdGF0aWMgQ0VMTF9ERUZBVUxUX0hFSUdIVCA9IDE2MDtcbiAgc3RhdGljIE1JTl9DRUxMX1JFTkRFUkVSX1BYX1dJRFRIID0gMTA7XG4gIHN0YXRpYyBNSU5fQ0VMTF9SRU5ERVJFUl9QWF9IRUlHSFQgPSA1O1xuICBzdGF0aWMgTUlOX1BPSU5UU19BTkRfU1RBVFNfVklTSUJJTElUWV9QWF9XSURUSCA9IDcwO1xuICBzdGF0aWMgTUlOX1BPSU5UU19BTkRfU1RBVFNfVklTSUJJTElUWV9QWF9IRUlHSFQgPSA0NTtcbiAgc3RhdGljIE1JTl9BWEVTX0NFTExfUFhfV0lEVEggPSAxMDA7XG4gIHN0YXRpYyBNSU5fQVhFU19DRUxMX1BYX0hFSUdIVCA9IDU1O1xuICBzdGF0aWMgTUlOX1RJVExFX1BYX1dJRFRIID0gMjc1O1xuICBzdGF0aWMgTUlOX1RJVExFX1BYX0hFSUdIVCA9IDIyNTtcbiAgc3RhdGljIE1JTl9YX0FYSVNfTkFNRV9WSVNJQklMSVRZX1BYX1dJRFRIID0gMTgwO1xuICBzdGF0aWMgTUlOX1lfQVhJU19OQU1FX1ZJU0lCSUxJVFlfUFhfSEVJR0hUID0gMTQwO1xuICBzdGF0aWMgTUlOX0xFR0VORF9QWF9XSURUSCA9IDMyNTtcbiAgc3RhdGljIE1JTl9MRUdFTkRfUFhfSEVJR0hUID0gMjc1O1xuICBzdGF0aWMgTUlOX0RST1BMSU5FU19WSVNJQklMSVRZX1BYX1dJRFRIID0gMTIwO1xuICBzdGF0aWMgTUlOX0RST1BMSU5FU19WSVNJQklMSVRZX1BYX0hFSUdIVCA9IDExMDtcbiAgc3RhdGljIEFYRVNfTEVGVF9QWF9NQVJHSU4gPSAzODtcbiAgc3RhdGljIEFYRVNfTEVGVF9QWF9NQVJHSU5fV0lUSF9BWEVTX0xBQkVMUyA9IDQ1O1xuICBzdGF0aWMgQVhFU19UT1BfUFhfTUFSR0lOID0gNTtcbiAgc3RhdGljIEFYRVNfVE9QX1BYX01BUkdJTl9XSVRIX1RJVExFID0gMjU7XG4gIHN0YXRpYyBBWEVTX1JJR0hUX1BYX01BUkdJTiA9IDE4O1xuICBzdGF0aWMgQVhFU19CT1RUT01fUFhfTUFSR0lOID0gMTU7XG4gIHN0YXRpYyBBWEVTX0JPVFRPTV9QWF9NQVJHSU5fV0lUSF9BWEVTX0xBQkVMUyA9IDMwO1xuICBzdGF0aWMgWF9BWElTX0xBQkVMX0JPVFRPTV9QWF9NQVJHSU4gPSA0O1xuICBzdGF0aWMgTEVHRU5EX1RPUF9QWF9NQVJHSU4gPSAxMDtcblxuICBzdGF0aWMgT1VUTElFUl9QWF9TSVpFID0gMTI7XG4gIHN0YXRpYyBQT0lOVF9QWF9TSVpFID0gNDtcbiAgc3RhdGljIE9VVExJRVJfSElUQk9YX1JBRElVUyA9IDI7XG4gIHN0YXRpYyBDQU5ETEVTVElDS19CT1JERVJfUFhfU0laRSA9IDQ7XG4gIHN0YXRpYyBDQU5ETEVTVElDS19NRURJQU5fUFhfU0laRSA9IDMuNTtcbiAgc3RhdGljIENBTkRMRVNUSUNLX09VVExJRVJfUFhfU0laRSA9IDY7XG4gIHN0YXRpYyBJTkZMQVRFX1NJWkUgPSAtMTIgLyAyO1xuICBzdGF0aWMgTUlOX0lORkxBVEVfU0laRSA9IC00IC8gMjtcbiAgc3RhdGljIExFR0VORF9SRUNPUkRfUFhfSEVJR0hUID0gMTg7XG4gIHN0YXRpYyBMRUdFTkRfUkVDT1JEX0xJTkVfUFhfV0lEVEggPSAyMDtcbiAgc3RhdGljIExFR0VORF9SRUNPUkRfTElORV9SSUdIVF9QWF9NQVJHSU4gPSA1O1xuICBzdGF0aWMgTEVHRU5EX1JFQ09SRF9MSU5FX0JPVFRPTV9QWF9NQVJHSU4gPSA0O1xuXG4gIHN0YXRpYyBMSU5FX1NUWUxFUzoge1trZXk6IHN0cmluZ106IG51bWJlcltdfSA9IHtcbiAgICAnc29saWQnOiBbXSxcbiAgICAnZG90dGVkJzogWzEsIDFdLFxuICAgICdkYXNoZWQnOiBbNSwgNV0sXG4gICAgJ2Rhc2hkb3R0ZWQnOiBbNSwgNSwgMiwgNV0sXG4gIH07XG5cbiAgc3RhdGljIENVUlZFX0NPTkZJREVOQ0VfSU5URVJWQUxfQk9VTkRTID0ge1xuICAgIFRPUDogJ3RvcCcsXG4gICAgQk9UVE9NOiAnYm90dG9tJyxcbiAgfTtcblxuICBzdGF0aWMgQ09ORklERU5DRV9JTlRFUlZBTF9TVFJPS0VfQ09MT1IgPSAncmdiYSgyNTUsMTkxLDYzLDAuNCknO1xuICBzdGF0aWMgQ09ORklERU5DRV9JTlRFUlZBTF9GSUxMX0NPTE9SID0gJ3JnYmEoMjU1LDIzOCwyMDQsMC4zKSc7XG5cbiAgc3RhdGljIENPTkRJVElPTl9NQVA6IHtba2V5OiBzdHJpbmddOiAoKHNlcmllcz86IElGaXRTZXJpZXNbXSkgPT4gYm9vbGVhbil9ID0ge1xuICAgICdObyBzZXJpZXMgdG8gc2hvdyc6IChzZXJpZXMpID0+IHNlcmllcyA9PT0gdW5kZWZpbmVkIHx8IHNlcmllcz8ubGVuZ3RoID09PSAwLFxuICAgICdUaGVyZSB3ZXJlIHNlcmllcyB3aXRoIG5vIHBvaW50cyc6IChzZXJpZXMpID0+XG4gICAgICAgICAgc2VyaWVzIS5zb21lKChzZXJpZXMpID0+IHNlcmllcy5wb2ludHM/Lmxlbmd0aCA9PT0gMCksXG4gICAgJ1RoZXJlIHdlcmUgc2VyaWVzIHdpdGggYWxsIHggemVyb2VzJzogKHNlcmllcykgPT5cbiAgICAgICAgICBzZXJpZXMhLnNvbWUoKHNlcmllcykgPT4gc2VyaWVzLnBvaW50cz8uZXZlcnkoKHBvaW50KSA9PiBwb2ludC54ID09PSAwKSksXG4gICAgJ1RoZXJlIHdlcmUgc2VyaWVzIHdpdGggYWxsIHkgemVyb2VzJzogKHNlcmllcykgPT5cbiAgICAgICAgICBzZXJpZXMhLnNvbWUoKHNlcmllcykgPT4gc2VyaWVzLnBvaW50cz8uZXZlcnkoKHBvaW50KSA9PiBwb2ludC55ID09PSAwKSksXG4gIH07XG59XG4iXX0=
@@ -196,7 +196,7 @@ export class MpoProfileEditor {
196
196
  colInput.root.classList.toggle('statistics-mpo-hidden', !isColumn);
197
197
  toggle.classList.toggle('statistics-mpo-weight-toggle-active', isColumn);
198
198
  };
199
- const toggle = ui.iconFA('columns', () => {
199
+ const toggle = ui.iconFA('exchange-alt', () => {
200
200
  isColumn = !isColumn;
201
201
  syncToggle();
202
202
  if (!isColumn && name)
@@ -386,4 +386,4 @@ export class MpoProfileEditor {
386
386
  grok.events.fireCustomEvent(MPO_SCORE_CHANGED_EVENT, {});
387
387
  }
388
388
  }
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBvLXByb2ZpbGUtZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibXBvLXByb2ZpbGUtZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxtQkFBbUIsRUFBRSwwQkFBMEIsRUFFL0Msd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixHQUNuRixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBcUIseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxPQUFPLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVoRCxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUV0QyxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUFZLFNBQXdCLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxPQUFPLEdBQUcsS0FBSztRQWhCNUQsU0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFLekMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFUixTQUFJLEdBQWdDLEVBQUUsQ0FBQztRQUN2QyxXQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFFMUMsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDckMsa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBR2hELElB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LE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRTdCLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsMENBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sY0FBYyxDQUNwQixJQUFZLEVBQ1osT0FBMEM7O1FBRTFDLE1BQU0sSUFBSSxHQUFHLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFJO1lBQ1AsT0FBTztRQUVULE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5cbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfQUdHUkVHQVRJT04sIFdFSUdIVEVEX0FHR1JFR0FUSU9OU19MSVNULFxuICBEZXNpcmFiaWxpdHlQcm9maWxlLCBQcm9wZXJ0eURlc2lyYWJpbGl0eSwgV2VpZ2h0ZWRBZ2dyZWdhdGlvbixcbiAgY3JlYXRlRGVmYXVsdENhdGVnb3JpY2FsLCBjcmVhdGVEZWZhdWx0TnVtZXJpY2FsLCBpc051bWVyaWNhbCwgbWlncmF0ZURlc2lyYWJpbGl0eSxcbn0gZnJvbSAnLi9tcG8nO1xuaW1wb3J0IHtEZXNpcmFiaWxpdHlFZGl0b3IsIERlc2lyYWJpbGl0eUVkaXRvckZhY3Rvcnl9IGZyb20gJy4vZWRpdG9ycy9kZXNpcmFiaWxpdHktZWRpdG9yLWZhY3RvcnknO1xuaW1wb3J0IHtEZXNpcmFiaWxpdHlNb2RlRGlhbG9nfSBmcm9tICcuL2RpYWxvZ3MvZGVzaXJhYmlsaXR5LW1vZGUtZGlhbG9nJztcblxuaW1wb3J0ICcuLi8uLi9jc3Mvc3R5bGVzLmNzcyc7XG5cbmltcG9ydCB7TVBPX1NDT1JFX0NIQU5HRURfRVZFTlR9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBNQVhfQ0FURUdPUklDQUxfQ0FURUdPUklFUyA9IDIwO1xuXG5leHBvcnQgY2xhc3MgTXBvUHJvZmlsZUVkaXRvciB7XG4gIHJlYWRvbmx5IHJvb3QgPSB1aS5kaXYoW10pO1xuICByZWFkb25seSBvbkNoYW5nZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBhZ2dyZWdhdGlvbklucHV0OiBERy5DaG9pY2VJbnB1dDxXZWlnaHRlZEFnZ3JlZ2F0aW9uIHwgbnVsbD47XG5cbiAgcHJvZmlsZT86IERlc2lyYWJpbGl0eVByb2ZpbGU7XG4gIGRhdGFGcmFtZT86IERHLkRhdGFGcmFtZTtcbiAgZGVzaWduID0gZmFsc2U7XG4gIHByZXZpZXcgPSBmYWxzZTtcblxuICBwcml2YXRlIHJvd3M6IFJlY29yZDxzdHJpbmcsIEhUTUxFbGVtZW50PiA9IHt9O1xuICBwcml2YXRlIHJvd0lkczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBwcml2YXRlIHJvd1N1YnMgPSBuZXcgTWFwPHN0cmluZywgU3Vic2NyaXB0aW9uPigpO1xuXG4gIHByaXZhdGUgcHJvcGVydHlPcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgY29sdW1uTWFwcGluZzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihkYXRhRnJhbWU/OiBERy5EYXRhRnJhbWUsIGRlc2lnbiA9IGZhbHNlLCBwcmV2aWV3ID0gZmFsc2UpIHtcbiAgICB0aGlzLmRhdGFGcmFtZSA9IGRhdGFGcmFtZTtcbiAgICB0aGlzLmRlc2lnbiA9IGRlc2lnbjtcbiAgICB0aGlzLnByZXZpZXcgPSBwcmV2aWV3O1xuICAgIHRoaXMuYWdncmVnYXRpb25JbnB1dCA9IHVpLmlucHV0LmNob2ljZSgnQWdncmVnYXRpb24nLCB7XG4gICAgICBpdGVtczogV0VJR0hURURfQUdHUkVHQVRJT05TX0xJU1QsXG4gICAgICB2YWx1ZTogREVGQVVMVF9BR0dSRUdBVElPTixcbiAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcm9maWxlKVxuICAgICAgICAgIHRoaXMucHJvZmlsZS5hZ2dyZWdhdGlvbiA9IHY7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uSW5wdXQuc2V0VG9vbHRpcCgnU2NvcmUgYWdncmVnYXRpb24gbWV0aG9kJyk7XG4gIH1cblxuICBwcml2YXRlIG5ld1Jvd0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7XG4gIH1cblxuICBzZXRQcm9maWxlKHByb2ZpbGU/OiBEZXNpcmFiaWxpdHlQcm9maWxlKTogdm9pZCB7XG4gICAgaWYgKHByb2ZpbGUpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHByb2ZpbGUucHJvcGVydGllcykpIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IG1pZ3JhdGVEZXNpcmFiaWxpdHkocHJvZmlsZS5wcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgICBpZiAoaXNOdW1lcmljYWwocHJvcCkpXG4gICAgICAgICAgcHJvcC5tb2RlID8/PSAnZnJlZWZvcm0nO1xuICAgICAgICBwcm9maWxlLnByb3BlcnRpZXNba2V5XSA9IHByb3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdWIgb2YgdGhpcy5yb3dTdWJzLnZhbHVlcygpKVxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3dTdWJzLmNsZWFyKCk7XG5cbiAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlO1xuICAgIHRoaXMuYWdncmVnYXRpb25JbnB1dC52YWx1ZSA9IHByb2ZpbGU/LmFnZ3JlZ2F0aW9uID8/IERFRkFVTFRfQUdHUkVHQVRJT047XG4gICAgdGhpcy5jb2x1bW5NYXBwaW5nID0ge307XG4gICAgdGhpcy5yb3dzID0ge307XG4gICAgdGhpcy5yb3dJZHMgPSB7fTtcbiAgICB0aGlzLnByb3BlcnR5T3JkZXIgPSBwcm9maWxlID8gT2JqZWN0LmtleXMocHJvZmlsZS5wcm9wZXJ0aWVzKSA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMucHJvcGVydHlPcmRlcilcbiAgICAgIHRoaXMucm93SWRzW25hbWVdID0gdGhpcy5uZXdSb3dJZCgpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldFByb2ZpbGUoKTogRGVzaXJhYmlsaXR5UHJvZmlsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZTtcbiAgfVxuXG4gIHNldERlc2lnbk1vZGUob246IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZXNpZ24gPT09IG9uKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMuZGVzaWduID0gb247XG4gICAgdGhpcy5yb3dzID0ge307XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldFByZXZpZXdNb2RlKG9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJldmlldyA9PT0gb24pXG4gICAgICByZXR1cm47XG4gICAgdGhpcy5wcmV2aWV3ID0gb247XG4gICAgdGhpcy5yb3dzID0ge307XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIHVpLmVtcHR5KHRoaXMucm9vdCk7XG5cbiAgICBpZiAoIXRoaXMucHJvZmlsZSlcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckVtcHR5KCdObyBwcm9maWxlIHNwZWNpZmllZC4nKTtcblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnByb3BlcnR5T3JkZXIubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCByb3dJZCA9IHRoaXMucm93SWRzW25hbWVdO1xuICAgICAgaWYgKCF0aGlzLnJvd3Nbcm93SWRdKVxuICAgICAgICB0aGlzLnJvd3Nbcm93SWRdID0gdGhpcy5idWlsZFJvdyhuYW1lLCByb3dJZCwgdGhpcy5wcm9maWxlIS5wcm9wZXJ0aWVzW25hbWVdKTtcbiAgICAgIHJldHVybiB0aGlzLnJvd3Nbcm93SWRdO1xuICAgIH0pO1xuXG4gICAgaWYgKCFyb3dzLmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLnByZXZpZXcpXG4gICAgICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5idWlsZEhlYWRlcigpKTtcbiAgICAgIGlmICh0aGlzLmRlc2lnbilcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRGVzaWduRW1wdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckVtcHR5KCdObyBwcm9wZXJ0aWVzIGRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByZXZpZXcpXG4gICAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuYnVpbGRIZWFkZXIoKSk7XG4gICAgdGhpcy5yb290LmFwcGVuZCh1aS5kaXZWKHJvd3MpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRW1wdHkodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yb290LmFwcGVuZCh1aS5kaXZUZXh0KHRleHQpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRGVzaWduRW1wdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaWNvbiA9IHVpLmljb25GQSgnY2hhcnQtbGluZScpO1xuICAgIGNvbnN0IGhlYWRpbmcgPSB1aS5oMygnTm8gcHJvcGVydGllcyB5ZXQnKTtcbiAgICBjb25zdCBtc2cgPSB1aS5wKCdTZWxlY3QgYSBkYXRhc2V0IHRvIGF1dG8tcG9wdWxhdGUgcHJvcGVydGllcyBmcm9tIGl0cyBudW1lcmljYWwgY29sdW1ucywgb3IgYWRkIHRoZW0gbWFudWFsbHkuJyk7XG4gICAgY29uc3QgYWRkQnRuID0gdWkubGluaygnKyBBZGQgUHJvcGVydHknLCAoKSA9PiB0aGlzLmFkZFByb3BlcnR5KCkpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHVpLmRpdlYoW2ljb24sIGhlYWRpbmcsIG1zZywgYWRkQnRuXSwgJ3N0YXRpc3RpY3MtbXBvLWVtcHR5LXN0YXRlJyk7XG4gICAgdGhpcy5yb290LmFwcGVuZChjb250YWluZXIpO1xuICB9XG5cbiAgYWRkUHJvcGVydHkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb2ZpbGUpXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBuZXdOYW1lID0gYE5ld1Byb3BlcnR5JHtPYmplY3Qua2V5cyh0aGlzLnByb2ZpbGUucHJvcGVydGllcykubGVuZ3RoICsgMX1gO1xuICAgIGNvbnN0IG5ld1Jvd0lkID0gdGhpcy5uZXdSb3dJZCgpO1xuXG4gICAgdGhpcy5wcm9maWxlLnByb3BlcnRpZXNbbmV3TmFtZV0gPSBjcmVhdGVEZWZhdWx0TnVtZXJpY2FsKCk7XG4gICAgdGhpcy5yb3dJZHNbbmV3TmFtZV0gPSBuZXdSb3dJZDtcbiAgICB0aGlzLnByb3BlcnR5T3JkZXIucHVzaChuZXdOYW1lKTtcblxuICAgIHRoaXMucm93cyA9IHt9O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSGVhZGVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdWkuZGl2SChbXG4gICAgICB1aS5kaXZUZXh0KCdQcm9wZXJ0eScsICdzdGF0aXN0aWNzLW1wby1oZWFkZXItcHJvcGVydHknKSxcbiAgICAgIHVpLmRpdlRleHQoJ1dlaWdodCcsICdzdGF0aXN0aWNzLW1wby1oZWFkZXItd2VpZ2h0JyksXG4gICAgICB1aS5kaXZUZXh0KCdEZXNpcmFiaWxpdHknLCAnc3RhdGlzdGljcy1tcG8taGVhZGVyLWRlc2lyYWJpbGl0eScpLFxuICAgIF0sICdzdGF0aXN0aWNzLW1wby1oZWFkZXInKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSb3coXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJvd0lkOiBzdHJpbmcsXG4gICAgcHJvcDogUHJvcGVydHlEZXNpcmFiaWxpdHksXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCByb3cgPSB1aS5kaXZIKFtdLCAnc3RhdGlzdGljcy1tcG8tcm93Jyk7XG4gICAgcm93LmRhdGFzZXQucm93SWQgPSByb3dJZDtcblxuICAgIGNvbnN0IGNvbCA9IHRoaXMucmVzb2x2ZUNvbHVtbihuYW1lKTtcbiAgICBpZiAoY29sKSB7XG4gICAgICBjb25zdCBjb3JyZWN0ZWQgPSB0aGlzLmNvcnJlY3RQcm9wZXJ0eVR5cGUocHJvcCwgY29sKTtcbiAgICAgIGlmIChjb3JyZWN0ZWQpIHtcbiAgICAgICAgcHJvcCA9IGNvcnJlY3RlZDtcbiAgICAgICAgdGhpcy5wcm9maWxlIS5wcm9wZXJ0aWVzW25hbWVdID0gcHJvcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBEZXNpcmFiaWxpdHlFZGl0b3JGYWN0b3J5LmNyZWF0ZShwcm9wLCAzMDAsIDgwLCB0aGlzLmRlc2lnbik7XG4gICAgZWRpdG9yLnJvb3QuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8tZWRpdG9yLWZpbGwnKTtcbiAgICB0aGlzLnJvd1N1YnMuZ2V0KHJvd0lkKT8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJvd1N1YnMuc2V0KHJvd0lkLCBlZGl0b3Iub25DaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmVtaXRDaGFuZ2UoKSkpO1xuXG4gICAgY29uc3QgcHJvcGVydHlDZWxsID0gdGhpcy5idWlsZFByb3BlcnR5Q2VsbChyb3dJZCwgbmFtZSk7XG4gICAgY29uc3Qgd2VpZ2h0Q2VsbCA9IHRoaXMuYnVpbGRXZWlnaHRDZWxsKHJvd0lkLCBwcm9wKTtcbiAgICBjb25zdCBjb2x1bW5DZWxsID0gdGhpcy5idWlsZENvbHVtblNlbGVjdG9yKHJvd0lkLCBuYW1lLCBlZGl0b3IpO1xuXG4gICAgY29uc3QgbW9kZUdlYXIgPSB0aGlzLmRlc2lnbiA/XG4gICAgICB0aGlzLmJ1aWxkTW9kZUdlYXIocm93SWQsIHByb3AsIGVkaXRvcikgOlxuICAgICAgbnVsbDtcblxuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5kZXNpZ24gPyB0aGlzLmJ1aWxkUm93Q29udHJvbHMocm93SWQpIDogbnVsbDtcblxuICAgIHJvdy5hcHBlbmQoXG4gICAgICB1aS5kaXZWKFtwcm9wZXJ0eUNlbGwsIGNvbHVtbkNlbGxdLmZpbHRlcihCb29sZWFuKSwgJ3N0YXRpc3RpY3MtbXBvLXByb3BlcnR5LWNlbGwnKSxcbiAgICAgIHdlaWdodENlbGwsXG4gICAgICB1aS5kaXZIKFtlZGl0b3Iucm9vdCwgbW9kZUdlYXJdLmZpbHRlcihCb29sZWFuKSksXG4gICAgKTtcblxuICAgIGlmIChjb250cm9scylcbiAgICAgIHJvdy5hcHBlbmQoY29udHJvbHMpO1xuXG4gICAgcmV0dXJuIHJvdztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQcm9wZXJ0eUNlbGwocm93SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgIGNvbnN0IGVsID0gdWkuZGl2VGV4dChuYW1lKTtcbiAgICAgIHVpLnRvb2x0aXAuYmluZChlbCwgKCkgPT4gbmFtZSk7XG4gICAgICByZXR1cm4gZWw7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnROYW1lID0gbmFtZTtcblxuICAgIGNvbnN0IHByb3BOYW1lSW5wID0gdWkuaW5wdXQuc3RyaW5nKCcnLCB7dmFsdWU6IG5hbWUsIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgaWYgKCF2IHx8IHYgPT09IGN1cnJlbnROYW1lKVxuICAgICAgICByZXR1cm47XG4gICAgICB0aGlzLnJlbmFtZVByb3BlcnR5KGN1cnJlbnROYW1lLCB2KTtcbiAgICAgIGN1cnJlbnROYW1lID0gdjtcbiAgICB9fSk7XG5cbiAgICB1aS50b29sdGlwLmJpbmQocHJvcE5hbWVJbnAuaW5wdXQsICgpID0+IGN1cnJlbnROYW1lKTtcbiAgICByZXR1cm4gcHJvcE5hbWVJbnAucm9vdDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRXZWlnaHRDZWxsKFxuICAgIHJvd0lkOiBzdHJpbmcsXG4gICAgcHJvcDogUHJvcGVydHlEZXNpcmFiaWxpdHksXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRQcm9wZXJ0eU5hbWVCeVJvd0lkKHJvd0lkKTtcbiAgICBjb25zdCBjaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3Qgd2VpZ2h0SW5wdXQgPSB1aS5pbnB1dC5mbG9hdCgnJywge3ZhbHVlOiBwcm9wLndlaWdodCwgbWluOiAwLCBtYXg6IDEsIGZvcm1hdDogJyMwLjAwMCcsXG4gICAgICBvblZhbHVlQ2hhbmdlZDogKHYpID0+IHtcbiAgICAgICAgaWYgKG5hbWUpXG4gICAgICAgICAgdGhpcy5tdXRhdGVQcm9wZXJ0eShuYW1lLCAocCkgPT4gcC53ZWlnaHQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB2ID8/IDApKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHdlaWdodElucHV0LnJvb3QuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8td2VpZ2h0LWlucHV0Jyk7XG4gICAgY2hpbGRyZW4ucHVzaCh3ZWlnaHRJbnB1dC5yb290KTtcblxuICAgIGlmICh0aGlzLmRhdGFGcmFtZSkge1xuICAgICAgY29uc3QgbnVtQ29scyA9IHRoaXMuZ2V0TnVtZXJpY2FsQ29sdW1uTmFtZXMoKTtcbiAgICAgIGxldCBpc0NvbHVtbiA9ICEhcHJvcC53ZWlnaHRDb2x1bW4gJiYgbnVtQ29scy5pbmNsdWRlcyhwcm9wLndlaWdodENvbHVtbik7XG5cbiAgICAgIGNvbnN0IGNvbElucHV0ID0gdWkuaW5wdXQuY2hvaWNlKCcnLCB7aXRlbXM6IG51bUNvbHMsIG51bGxhYmxlOiB0cnVlLCB2YWx1ZTogcHJvcC53ZWlnaHRDb2x1bW4gPz8gJycsXG4gICAgICAgIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgICAgIGlmIChuYW1lKVxuICAgICAgICAgICAgdGhpcy5tdXRhdGVQcm9wZXJ0eShuYW1lLCAocCkgPT4gcC53ZWlnaHRDb2x1bW4gPSB2IHx8IHVuZGVmaW5lZCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3luY1RvZ2dsZSA9ICgpID0+IHtcbiAgICAgICAgd2VpZ2h0SW5wdXQucm9vdC5jbGFzc0xpc3QudG9nZ2xlKCdzdGF0aXN0aWNzLW1wby1oaWRkZW4nLCBpc0NvbHVtbik7XG4gICAgICAgIGNvbElucHV0LnJvb3QuY2xhc3NMaXN0LnRvZ2dsZSgnc3RhdGlzdGljcy1tcG8taGlkZGVuJywgIWlzQ29sdW1uKTtcbiAgICAgICAgdG9nZ2xlLmNsYXNzTGlzdC50b2dnbGUoJ3N0YXRpc3RpY3MtbXBvLXdlaWdodC10b2dnbGUtYWN0aXZlJywgaXNDb2x1bW4pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgdG9nZ2xlID0gdWkuaWNvbkZBKCdjb2x1bW5zJywgKCkgPT4ge1xuICAgICAgICBpc0NvbHVtbiA9ICFpc0NvbHVtbjtcbiAgICAgICAgc3luY1RvZ2dsZSgpO1xuICAgICAgICBpZiAoIWlzQ29sdW1uICYmIG5hbWUpXG4gICAgICAgICAgdGhpcy5tdXRhdGVQcm9wZXJ0eShuYW1lLCAocCkgPT4geyBkZWxldGUgcC53ZWlnaHRDb2x1bW47IH0pO1xuICAgICAgICBlbHNlIGlmIChpc0NvbHVtbiAmJiBuYW1lICYmIGNvbElucHV0LnZhbHVlKVxuICAgICAgICAgIHRoaXMubXV0YXRlUHJvcGVydHkobmFtZSwgKHApID0+IHAud2VpZ2h0Q29sdW1uID0gY29sSW5wdXQudmFsdWUgfHwgdW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuICAgICAgdG9nZ2xlLmNsYXNzTGlzdC5hZGQoJ3N0YXRpc3RpY3MtbXBvLXdlaWdodC10b2dnbGUnKTtcbiAgICAgIHVpLnRvb2x0aXAuYmluZCh0b2dnbGUsICgpID0+IGlzQ29sdW1uID8gJ1N3aXRjaCB0byBtYW51YWwgd2VpZ2h0JyA6ICdVc2Ugd2VpZ2h0IGZyb20gY29sdW1uJyk7XG4gICAgICBzeW5jVG9nZ2xlKCk7XG5cbiAgICAgIGNoaWxkcmVuLnB1c2goY29sSW5wdXQucm9vdCwgdG9nZ2xlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdWkuZGl2SChjaGlsZHJlbiwgJ3N0YXRpc3RpY3MtbXBvLXdlaWdodC1jZWxsJyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29sdW1uU2VsZWN0b3IoXG4gICAgcm93SWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZWRpdG9yOiBEZXNpcmFiaWxpdHlFZGl0b3IsXG4gICk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmRhdGFGcmFtZSlcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEVsaWdpYmxlQ29sdW1uTmFtZXMoKTtcbiAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5jb2x1bW5NYXBwaW5nW25hbWVdID8/IG51bGw7XG5cbiAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgY29uc3QgY29sID0gdGhpcy5kYXRhRnJhbWUuY29sKG1hdGNoZWQpO1xuICAgICAgZWRpdG9yLnNldENvbHVtbj8uKGNvbCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQgPSB1aS5pbnB1dC5jaG9pY2UoJycsIHtpdGVtcywgbnVsbGFibGU6IHRydWUsIHZhbHVlOiBtYXRjaGVkID8/ICcnLCBvblZhbHVlQ2hhbmdlZDogKHYpID0+IHtcbiAgICAgIHRoaXMuY29sdW1uTWFwcGluZ1tuYW1lXSA9IHYgPz8gbnVsbDtcbiAgICAgIGNvbnN0IGNvbCA9IHYgPyB0aGlzLmRhdGFGcmFtZSEuY29sKHYpIDogbnVsbDtcbiAgICAgIGlmIChjb2wgJiYgdGhpcy5zd2l0Y2hQcm9wZXJ0eVR5cGUobmFtZSwgcm93SWQsIGNvbCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGVkaXRvci5zZXRDb2x1bW4/Lihjb2wpO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfX0pO1xuICAgIHJldHVybiBpbnB1dC5yb290O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbGlnaWJsZUNvbHVtbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGF0YUZyYW1lKVxuICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMpXG4gICAgICAuZmlsdGVyKChjKSA9PiAhYy5pc0NhdGVnb3JpY2FsIHx8IGMuY2F0ZWdvcmllcy5sZW5ndGggPD0gTUFYX0NBVEVHT1JJQ0FMX0NBVEVHT1JJRVMpXG4gICAgICAubWFwKChjKSA9PiBjLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROdW1lcmljYWxDb2x1bW5OYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmRhdGFGcmFtZSlcbiAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmRhdGFGcmFtZS5jb2x1bW5zLm51bWVyaWNhbCkubWFwKChjKSA9PiBjLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ29sdW1uKG5hbWU6IHN0cmluZyk6IERHLkNvbHVtbiB8IG51bGwge1xuICAgIGlmICghdGhpcy5kYXRhRnJhbWUpXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBlbGlnaWJsZSA9IHRoaXMuZ2V0RWxpZ2libGVDb2x1bW5OYW1lcygpO1xuICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLmNvbHVtbk1hcHBpbmdbbmFtZV0gPz8gZWxpZ2libGUuZmluZCgoYykgPT4gYy50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpID8/IG51bGw7XG4gICAgaWYgKGNvbE5hbWUpXG4gICAgICB0aGlzLmNvbHVtbk1hcHBpbmdbbmFtZV0gPSBjb2xOYW1lO1xuICAgIHJldHVybiBjb2xOYW1lID8gdGhpcy5kYXRhRnJhbWUuY29sKGNvbE5hbWUpID8/IG51bGwgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3JyZWN0UHJvcGVydHlUeXBlKHByb3A6IFByb3BlcnR5RGVzaXJhYmlsaXR5LCBjb2w6IERHLkNvbHVtbik6IFByb3BlcnR5RGVzaXJhYmlsaXR5IHwgbnVsbCB7XG4gICAgaWYgKGlzTnVtZXJpY2FsKHByb3ApICYmIGNvbC5pc0NhdGVnb3JpY2FsKSB7XG4gICAgICBjb25zdCBjYXRlZ29yaWVzID0gY29sLmNhdGVnb3JpZXMubWFwKChjOiBzdHJpbmcpID0+ICh7bmFtZTogYywgZGVzaXJhYmlsaXR5OiAxfSkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZURlZmF1bHRDYXRlZ29yaWNhbChwcm9wLndlaWdodCwgY2F0ZWdvcmllcyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc051bWVyaWNhbChwcm9wKSAmJiBjb2wuaXNOdW1lcmljYWwpXG4gICAgICByZXR1cm4gY3JlYXRlRGVmYXVsdE51bWVyaWNhbChwcm9wLndlaWdodCwgY29sLm1pbiwgY29sLm1heCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3dpdGNoUHJvcGVydHlUeXBlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByb3dJZDogc3RyaW5nLFxuICAgIGNvbDogREcuQ29sdW1uLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucHJvZmlsZSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGNvcnJlY3RlZCA9IHRoaXMuY29ycmVjdFByb3BlcnR5VHlwZSh0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuYW1lXSwgY29sKTtcbiAgICBpZiAoIWNvcnJlY3RlZClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25hbWVdID0gY29ycmVjdGVkO1xuICAgIHRoaXMucmVidWlsZFJvdyhuYW1lLCByb3dJZCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHJlYnVpbGRSb3cobmFtZTogc3RyaW5nLCByb3dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkUm93ID0gdGhpcy5yb3dzW3Jvd0lkXTtcbiAgICBjb25zdCBuZXdSb3cgPSB0aGlzLmJ1aWxkUm93KG5hbWUsIHJvd0lkLCB0aGlzLnByb2ZpbGUhLnByb3BlcnRpZXNbbmFtZV0pO1xuICAgIHRoaXMucm93c1tyb3dJZF0gPSBuZXdSb3c7XG5cbiAgICBpZiAob2xkUm93Py5wYXJlbnROb2RlKVxuICAgICAgb2xkUm93LnJlcGxhY2VXaXRoKG5ld1Jvdyk7XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRNb2RlR2VhcihcbiAgICByb3dJZDogc3RyaW5nLFxuICAgIHByb3A6IFByb3BlcnR5RGVzaXJhYmlsaXR5LFxuICAgIGVkaXRvcjogRGVzaXJhYmlsaXR5RWRpdG9yLFxuICApOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZ2VhciA9IHVpLmljb25zLnNldHRpbmdzKCgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFByb3BlcnR5TmFtZUJ5Um93SWQocm93SWQpO1xuICAgICAgaWYgKCFuYW1lKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBjb2xOYW1lID0gdGhpcy5jb2x1bW5NYXBwaW5nW25hbWVdO1xuICAgICAgY29uc3QgY29sID0gY29sTmFtZSA/IHRoaXMuZGF0YUZyYW1lPy5jb2woY29sTmFtZSkgPz8gbnVsbCA6IG51bGw7XG4gICAgICB0aGlzLm9wZW5Nb2RlRGlhbG9nKG5hbWUsIHJvd0lkLCBwcm9wLCBlZGl0b3IsIGNvbCk7XG4gICAgfSk7XG5cbiAgICBnZWFyLmNsYXNzTGlzdC5hZGQoJ3N0YXRpc3RpY3MtbXBvLWdlYXInKTtcbiAgICByZXR1cm4gZ2VhcjtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSb3dDb250cm9scyhyb3dJZDogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGFkZCA9IHVpLmljb25zLmFkZCgoKSA9PiB0aGlzLmluc2VydFJvd0FmdGVyUm93KHJvd0lkKSk7XG4gICAgY29uc3QgZGVsID0gdWkuaWNvbnMuZGVsZXRlKCgpID0+IHRoaXMuZGVsZXRlUm93KHJvd0lkKSk7XG4gICAgcmV0dXJuIHVpLmRpdkgoW2FkZCwgZGVsXSwgJ3N0YXRpc3RpY3MtbXBvLWNvbnRyb2wtYnV0dG9ucycpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuTW9kZURpYWxvZyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcm93SWQ6IHN0cmluZyxcbiAgICBwcm9wOiBQcm9wZXJ0eURlc2lyYWJpbGl0eSxcbiAgICBlZGl0b3I6IERlc2lyYWJpbGl0eUVkaXRvcixcbiAgICBtYXBwZWRDb2w6IERHLkNvbHVtbiB8IG51bGwgPSBudWxsLFxuICApOiB2b2lkIHtcbiAgICBuZXcgRGVzaXJhYmlsaXR5TW9kZURpYWxvZyhcbiAgICAgIG5hbWUsXG4gICAgICBwcm9wLFxuICAgICAgKHBhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHAgPSB0aGlzLnByb2ZpbGU/LnByb3BlcnRpZXNbbmFtZV07XG4gICAgICAgIGlmIChwKVxuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocCwgcGF0Y2gpO1xuICAgICAgICBlZGl0b3IucmVkcmF3QWxsKCk7XG4gICAgICB9LFxuICAgICAgKG5ld1Byb3ApID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuYW1lXSA9IG5ld1Byb3A7XG4gICAgICAgIHRoaXMucmVidWlsZFJvdyhuYW1lLCByb3dJZCk7XG4gICAgICB9LFxuICAgICAgbWFwcGVkQ29sLFxuICAgICkuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm9wZXJ0eU5hbWVCeVJvd0lkKHJvd0lkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnJvd0lkcylcbiAgICAgIC5maW5kKChbLCBpZF0pID0+IGlkID09PSByb3dJZCk/LlswXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lUHJvcGVydHkob2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvZmlsZSB8fCB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuZXdOYW1lXSlcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IHJvd0lkID0gdGhpcy5yb3dJZHNbb2xkTmFtZV07XG4gICAgdGhpcy5wcm9maWxlLnByb3BlcnRpZXNbbmV3TmFtZV0gPSB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tvbGROYW1lXTtcbiAgICBkZWxldGUgdGhpcy5wcm9maWxlLnByb3BlcnRpZXNbb2xkTmFtZV07XG5cbiAgICB0aGlzLmNvbHVtbk1hcHBpbmdbbmV3TmFtZV0gPSB0aGlzLmNvbHVtbk1hcHBpbmdbb2xkTmFtZV0gPz8gbnVsbDtcbiAgICBkZWxldGUgdGhpcy5jb2x1bW5NYXBwaW5nW29sZE5hbWVdO1xuXG4gICAgY29uc3QgaWR4ID0gdGhpcy5wcm9wZXJ0eU9yZGVyLmluZGV4T2Yob2xkTmFtZSk7XG4gICAgaWYgKGlkeCA+PSAwKVxuICAgICAgdGhpcy5wcm9wZXJ0eU9yZGVyW2lkeF0gPSBuZXdOYW1lO1xuXG4gICAgZGVsZXRlIHRoaXMucm93SWRzW29sZE5hbWVdO1xuICAgIHRoaXMucm93SWRzW25ld05hbWVdID0gcm93SWQ7XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlUm93KHJvd0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRQcm9wZXJ0eU5hbWVCeVJvd0lkKHJvd0lkKTtcbiAgICBpZiAoIW5hbWUgfHwgIXRoaXMucHJvZmlsZSlcbiAgICAgIHJldHVybjtcblxuICAgIGRlbGV0ZSB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuYW1lXTtcbiAgICBkZWxldGUgdGhpcy5jb2x1bW5NYXBwaW5nW25hbWVdO1xuICAgIGRlbGV0ZSB0aGlzLnJvd0lkc1tuYW1lXTtcbiAgICB0aGlzLnJvd1N1YnMuZ2V0KHJvd0lkKT8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJvd1N1YnMuZGVsZXRlKHJvd0lkKTtcblxuICAgIGNvbnN0IGlkeCA9IHRoaXMucHJvcGVydHlPcmRlci5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpZHggPj0gMClcbiAgICAgIHRoaXMucHJvcGVydHlPcmRlci5zcGxpY2UoaWR4LCAxKTtcblxuICAgIGNvbnN0IHJvd0VsID0gdGhpcy5yb3dzW3Jvd0lkXTtcbiAgICBkZWxldGUgdGhpcy5yb3dzW3Jvd0lkXTtcblxuICAgIGlmICh0aGlzLnByb3BlcnR5T3JkZXIubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICBlbHNlXG4gICAgICByb3dFbD8ucmVtb3ZlKCk7XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zZXJ0Um93QWZ0ZXJSb3cocm93SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9maWxlKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgYWZ0ZXJOYW1lID0gdGhpcy5nZXRQcm9wZXJ0eU5hbWVCeVJvd0lkKHJvd0lkKTtcbiAgICBpZiAoIWFmdGVyTmFtZSlcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IG5ld05hbWUgPSBgTmV3UHJvcGVydHkke09iamVjdC5rZXlzKHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzKS5sZW5ndGggKyAxfWA7XG4gICAgY29uc3QgbmV3Um93SWQgPSB0aGlzLm5ld1Jvd0lkKCk7XG5cbiAgICB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuZXdOYW1lXSA9IGNyZWF0ZURlZmF1bHROdW1lcmljYWwoKTtcblxuICAgIHRoaXMucm93SWRzW25ld05hbWVdID0gbmV3Um93SWQ7XG5cbiAgICBjb25zdCBpZHggPSB0aGlzLnByb3BlcnR5T3JkZXIuaW5kZXhPZihhZnRlck5hbWUpO1xuICAgIHRoaXMucHJvcGVydHlPcmRlci5zcGxpY2UoaWR4ICsgMSwgMCwgbmV3TmFtZSk7XG5cbiAgICBjb25zdCBuZXdSb3cgPSB0aGlzLmJ1aWxkUm93KG5ld05hbWUsIG5ld1Jvd0lkLCB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuZXdOYW1lXSk7XG4gICAgdGhpcy5yb3dzW25ld1Jvd0lkXSA9IG5ld1JvdztcblxuICAgIHRoaXMucm93c1tyb3dJZF0/LmFmdGVyKG5ld1Jvdyk7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIG11dGF0ZVByb3BlcnR5KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB1cGRhdGVyOiAocDogUHJvcGVydHlEZXNpcmFiaWxpdHkpID0+IHZvaWQsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnByb2ZpbGU/LnByb3BlcnRpZXNbbmFtZV07XG4gICAgaWYgKCFwcm9wKVxuICAgICAgcmV0dXJuO1xuXG4gICAgdXBkYXRlcihwcm9wKTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KCk7XG4gICAgZ3Jvay5ldmVudHMuZmlyZUN1c3RvbUV2ZW50KE1QT19TQ09SRV9DSEFOR0VEX0VWRU5ULCB7fSk7XG4gIH1cbn1cbiJdfQ==
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBvLXByb2ZpbGUtZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibXBvLXByb2ZpbGUtZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxtQkFBbUIsRUFBRSwwQkFBMEIsRUFFL0Msd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixHQUNuRixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBcUIseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxPQUFPLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVoRCxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUV0QyxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUFZLFNBQXdCLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxPQUFPLEdBQUcsS0FBSztRQWhCNUQsU0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFLekMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFUixTQUFJLEdBQWdDLEVBQUUsQ0FBQztRQUN2QyxXQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFFMUMsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDckMsa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBR2hELElB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LE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRTdCLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsMENBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sY0FBYyxDQUNwQixJQUFZLEVBQ1osT0FBMEM7O1FBRTFDLE1BQU0sSUFBSSxHQUFHLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFJO1lBQ1AsT0FBTztRQUVULE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5cbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfQUdHUkVHQVRJT04sIFdFSUdIVEVEX0FHR1JFR0FUSU9OU19MSVNULFxuICBEZXNpcmFiaWxpdHlQcm9maWxlLCBQcm9wZXJ0eURlc2lyYWJpbGl0eSwgV2VpZ2h0ZWRBZ2dyZWdhdGlvbixcbiAgY3JlYXRlRGVmYXVsdENhdGVnb3JpY2FsLCBjcmVhdGVEZWZhdWx0TnVtZXJpY2FsLCBpc051bWVyaWNhbCwgbWlncmF0ZURlc2lyYWJpbGl0eSxcbn0gZnJvbSAnLi9tcG8nO1xuaW1wb3J0IHtEZXNpcmFiaWxpdHlFZGl0b3IsIERlc2lyYWJpbGl0eUVkaXRvckZhY3Rvcnl9IGZyb20gJy4vZWRpdG9ycy9kZXNpcmFiaWxpdHktZWRpdG9yLWZhY3RvcnknO1xuaW1wb3J0IHtEZXNpcmFiaWxpdHlNb2RlRGlhbG9nfSBmcm9tICcuL2RpYWxvZ3MvZGVzaXJhYmlsaXR5LW1vZGUtZGlhbG9nJztcblxuaW1wb3J0ICcuLi8uLi9jc3Mvc3R5bGVzLmNzcyc7XG5cbmltcG9ydCB7TVBPX1NDT1JFX0NIQU5HRURfRVZFTlR9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBNQVhfQ0FURUdPUklDQUxfQ0FURUdPUklFUyA9IDIwO1xuXG5leHBvcnQgY2xhc3MgTXBvUHJvZmlsZUVkaXRvciB7XG4gIHJlYWRvbmx5IHJvb3QgPSB1aS5kaXYoW10pO1xuICByZWFkb25seSBvbkNoYW5nZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBhZ2dyZWdhdGlvbklucHV0OiBERy5DaG9pY2VJbnB1dDxXZWlnaHRlZEFnZ3JlZ2F0aW9uIHwgbnVsbD47XG5cbiAgcHJvZmlsZT86IERlc2lyYWJpbGl0eVByb2ZpbGU7XG4gIGRhdGFGcmFtZT86IERHLkRhdGFGcmFtZTtcbiAgZGVzaWduID0gZmFsc2U7XG4gIHByZXZpZXcgPSBmYWxzZTtcblxuICBwcml2YXRlIHJvd3M6IFJlY29yZDxzdHJpbmcsIEhUTUxFbGVtZW50PiA9IHt9O1xuICBwcml2YXRlIHJvd0lkczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBwcml2YXRlIHJvd1N1YnMgPSBuZXcgTWFwPHN0cmluZywgU3Vic2NyaXB0aW9uPigpO1xuXG4gIHByaXZhdGUgcHJvcGVydHlPcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgY29sdW1uTWFwcGluZzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihkYXRhRnJhbWU/OiBERy5EYXRhRnJhbWUsIGRlc2lnbiA9IGZhbHNlLCBwcmV2aWV3ID0gZmFsc2UpIHtcbiAgICB0aGlzLmRhdGFGcmFtZSA9IGRhdGFGcmFtZTtcbiAgICB0aGlzLmRlc2lnbiA9IGRlc2lnbjtcbiAgICB0aGlzLnByZXZpZXcgPSBwcmV2aWV3O1xuICAgIHRoaXMuYWdncmVnYXRpb25JbnB1dCA9IHVpLmlucHV0LmNob2ljZSgnQWdncmVnYXRpb24nLCB7XG4gICAgICBpdGVtczogV0VJR0hURURfQUdHUkVHQVRJT05TX0xJU1QsXG4gICAgICB2YWx1ZTogREVGQVVMVF9BR0dSRUdBVElPTixcbiAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcm9maWxlKVxuICAgICAgICAgIHRoaXMucHJvZmlsZS5hZ2dyZWdhdGlvbiA9IHY7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uSW5wdXQuc2V0VG9vbHRpcCgnU2NvcmUgYWdncmVnYXRpb24gbWV0aG9kJyk7XG4gIH1cblxuICBwcml2YXRlIG5ld1Jvd0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7XG4gIH1cblxuICBzZXRQcm9maWxlKHByb2ZpbGU/OiBEZXNpcmFiaWxpdHlQcm9maWxlKTogdm9pZCB7XG4gICAgaWYgKHByb2ZpbGUpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHByb2ZpbGUucHJvcGVydGllcykpIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IG1pZ3JhdGVEZXNpcmFiaWxpdHkocHJvZmlsZS5wcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgICBpZiAoaXNOdW1lcmljYWwocHJvcCkpXG4gICAgICAgICAgcHJvcC5tb2RlID8/PSAnZnJlZWZvcm0nO1xuICAgICAgICBwcm9maWxlLnByb3BlcnRpZXNba2V5XSA9IHByb3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdWIgb2YgdGhpcy5yb3dTdWJzLnZhbHVlcygpKVxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3dTdWJzLmNsZWFyKCk7XG5cbiAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlO1xuICAgIHRoaXMuYWdncmVnYXRpb25JbnB1dC52YWx1ZSA9IHByb2ZpbGU/LmFnZ3JlZ2F0aW9uID8/IERFRkFVTFRfQUdHUkVHQVRJT047XG4gICAgdGhpcy5jb2x1bW5NYXBwaW5nID0ge307XG4gICAgdGhpcy5yb3dzID0ge307XG4gICAgdGhpcy5yb3dJZHMgPSB7fTtcbiAgICB0aGlzLnByb3BlcnR5T3JkZXIgPSBwcm9maWxlID8gT2JqZWN0LmtleXMocHJvZmlsZS5wcm9wZXJ0aWVzKSA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMucHJvcGVydHlPcmRlcilcbiAgICAgIHRoaXMucm93SWRzW25hbWVdID0gdGhpcy5uZXdSb3dJZCgpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldFByb2ZpbGUoKTogRGVzaXJhYmlsaXR5UHJvZmlsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZTtcbiAgfVxuXG4gIHNldERlc2lnbk1vZGUob246IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZXNpZ24gPT09IG9uKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMuZGVzaWduID0gb247XG4gICAgdGhpcy5yb3dzID0ge307XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldFByZXZpZXdNb2RlKG9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJldmlldyA9PT0gb24pXG4gICAgICByZXR1cm47XG4gICAgdGhpcy5wcmV2aWV3ID0gb247XG4gICAgdGhpcy5yb3dzID0ge307XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIHVpLmVtcHR5KHRoaXMucm9vdCk7XG5cbiAgICBpZiAoIXRoaXMucHJvZmlsZSlcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckVtcHR5KCdObyBwcm9maWxlIHNwZWNpZmllZC4nKTtcblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnByb3BlcnR5T3JkZXIubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCByb3dJZCA9IHRoaXMucm93SWRzW25hbWVdO1xuICAgICAgaWYgKCF0aGlzLnJvd3Nbcm93SWRdKVxuICAgICAgICB0aGlzLnJvd3Nbcm93SWRdID0gdGhpcy5idWlsZFJvdyhuYW1lLCByb3dJZCwgdGhpcy5wcm9maWxlIS5wcm9wZXJ0aWVzW25hbWVdKTtcbiAgICAgIHJldHVybiB0aGlzLnJvd3Nbcm93SWRdO1xuICAgIH0pO1xuXG4gICAgaWYgKCFyb3dzLmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLnByZXZpZXcpXG4gICAgICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5idWlsZEhlYWRlcigpKTtcbiAgICAgIGlmICh0aGlzLmRlc2lnbilcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRGVzaWduRW1wdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckVtcHR5KCdObyBwcm9wZXJ0aWVzIGRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByZXZpZXcpXG4gICAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuYnVpbGRIZWFkZXIoKSk7XG4gICAgdGhpcy5yb290LmFwcGVuZCh1aS5kaXZWKHJvd3MpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRW1wdHkodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yb290LmFwcGVuZCh1aS5kaXZUZXh0KHRleHQpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRGVzaWduRW1wdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaWNvbiA9IHVpLmljb25GQSgnY2hhcnQtbGluZScpO1xuICAgIGNvbnN0IGhlYWRpbmcgPSB1aS5oMygnTm8gcHJvcGVydGllcyB5ZXQnKTtcbiAgICBjb25zdCBtc2cgPSB1aS5wKCdTZWxlY3QgYSBkYXRhc2V0IHRvIGF1dG8tcG9wdWxhdGUgcHJvcGVydGllcyBmcm9tIGl0cyBudW1lcmljYWwgY29sdW1ucywgb3IgYWRkIHRoZW0gbWFudWFsbHkuJyk7XG4gICAgY29uc3QgYWRkQnRuID0gdWkubGluaygnKyBBZGQgUHJvcGVydHknLCAoKSA9PiB0aGlzLmFkZFByb3BlcnR5KCkpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHVpLmRpdlYoW2ljb24sIGhlYWRpbmcsIG1zZywgYWRkQnRuXSwgJ3N0YXRpc3RpY3MtbXBvLWVtcHR5LXN0YXRlJyk7XG4gICAgdGhpcy5yb290LmFwcGVuZChjb250YWluZXIpO1xuICB9XG5cbiAgYWRkUHJvcGVydHkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb2ZpbGUpXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBuZXdOYW1lID0gYE5ld1Byb3BlcnR5JHtPYmplY3Qua2V5cyh0aGlzLnByb2ZpbGUucHJvcGVydGllcykubGVuZ3RoICsgMX1gO1xuICAgIGNvbnN0IG5ld1Jvd0lkID0gdGhpcy5uZXdSb3dJZCgpO1xuXG4gICAgdGhpcy5wcm9maWxlLnByb3BlcnRpZXNbbmV3TmFtZV0gPSBjcmVhdGVEZWZhdWx0TnVtZXJpY2FsKCk7XG4gICAgdGhpcy5yb3dJZHNbbmV3TmFtZV0gPSBuZXdSb3dJZDtcbiAgICB0aGlzLnByb3BlcnR5T3JkZXIucHVzaChuZXdOYW1lKTtcblxuICAgIHRoaXMucm93cyA9IHt9O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSGVhZGVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdWkuZGl2SChbXG4gICAgICB1aS5kaXZUZXh0KCdQcm9wZXJ0eScsICdzdGF0aXN0aWNzLW1wby1oZWFkZXItcHJvcGVydHknKSxcbiAgICAgIHVpLmRpdlRleHQoJ1dlaWdodCcsICdzdGF0aXN0aWNzLW1wby1oZWFkZXItd2VpZ2h0JyksXG4gICAgICB1aS5kaXZUZXh0KCdEZXNpcmFiaWxpdHknLCAnc3RhdGlzdGljcy1tcG8taGVhZGVyLWRlc2lyYWJpbGl0eScpLFxuICAgIF0sICdzdGF0aXN0aWNzLW1wby1oZWFkZXInKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSb3coXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJvd0lkOiBzdHJpbmcsXG4gICAgcHJvcDogUHJvcGVydHlEZXNpcmFiaWxpdHksXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCByb3cgPSB1aS5kaXZIKFtdLCAnc3RhdGlzdGljcy1tcG8tcm93Jyk7XG4gICAgcm93LmRhdGFzZXQucm93SWQgPSByb3dJZDtcblxuICAgIGNvbnN0IGNvbCA9IHRoaXMucmVzb2x2ZUNvbHVtbihuYW1lKTtcbiAgICBpZiAoY29sKSB7XG4gICAgICBjb25zdCBjb3JyZWN0ZWQgPSB0aGlzLmNvcnJlY3RQcm9wZXJ0eVR5cGUocHJvcCwgY29sKTtcbiAgICAgIGlmIChjb3JyZWN0ZWQpIHtcbiAgICAgICAgcHJvcCA9IGNvcnJlY3RlZDtcbiAgICAgICAgdGhpcy5wcm9maWxlIS5wcm9wZXJ0aWVzW25hbWVdID0gcHJvcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBEZXNpcmFiaWxpdHlFZGl0b3JGYWN0b3J5LmNyZWF0ZShwcm9wLCAzMDAsIDgwLCB0aGlzLmRlc2lnbik7XG4gICAgZWRpdG9yLnJvb3QuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8tZWRpdG9yLWZpbGwnKTtcbiAgICB0aGlzLnJvd1N1YnMuZ2V0KHJvd0lkKT8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJvd1N1YnMuc2V0KHJvd0lkLCBlZGl0b3Iub25DaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmVtaXRDaGFuZ2UoKSkpO1xuXG4gICAgY29uc3QgcHJvcGVydHlDZWxsID0gdGhpcy5idWlsZFByb3BlcnR5Q2VsbChyb3dJZCwgbmFtZSk7XG4gICAgY29uc3Qgd2VpZ2h0Q2VsbCA9IHRoaXMuYnVpbGRXZWlnaHRDZWxsKHJvd0lkLCBwcm9wKTtcbiAgICBjb25zdCBjb2x1bW5DZWxsID0gdGhpcy5idWlsZENvbHVtblNlbGVjdG9yKHJvd0lkLCBuYW1lLCBlZGl0b3IpO1xuXG4gICAgY29uc3QgbW9kZUdlYXIgPSB0aGlzLmRlc2lnbiA/XG4gICAgICB0aGlzLmJ1aWxkTW9kZUdlYXIocm93SWQsIHByb3AsIGVkaXRvcikgOlxuICAgICAgbnVsbDtcblxuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5kZXNpZ24gPyB0aGlzLmJ1aWxkUm93Q29udHJvbHMocm93SWQpIDogbnVsbDtcblxuICAgIHJvdy5hcHBlbmQoXG4gICAgICB1aS5kaXZWKFtwcm9wZXJ0eUNlbGwsIGNvbHVtbkNlbGxdLmZpbHRlcihCb29sZWFuKSwgJ3N0YXRpc3RpY3MtbXBvLXByb3BlcnR5LWNlbGwnKSxcbiAgICAgIHdlaWdodENlbGwsXG4gICAgICB1aS5kaXZIKFtlZGl0b3Iucm9vdCwgbW9kZUdlYXJdLmZpbHRlcihCb29sZWFuKSksXG4gICAgKTtcblxuICAgIGlmIChjb250cm9scylcbiAgICAgIHJvdy5hcHBlbmQoY29udHJvbHMpO1xuXG4gICAgcmV0dXJuIHJvdztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQcm9wZXJ0eUNlbGwocm93SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgIGNvbnN0IGVsID0gdWkuZGl2VGV4dChuYW1lKTtcbiAgICAgIHVpLnRvb2x0aXAuYmluZChlbCwgKCkgPT4gbmFtZSk7XG4gICAgICByZXR1cm4gZWw7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnROYW1lID0gbmFtZTtcblxuICAgIGNvbnN0IHByb3BOYW1lSW5wID0gdWkuaW5wdXQuc3RyaW5nKCcnLCB7dmFsdWU6IG5hbWUsIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgaWYgKCF2IHx8IHYgPT09IGN1cnJlbnROYW1lKVxuICAgICAgICByZXR1cm47XG4gICAgICB0aGlzLnJlbmFtZVByb3BlcnR5KGN1cnJlbnROYW1lLCB2KTtcbiAgICAgIGN1cnJlbnROYW1lID0gdjtcbiAgICB9fSk7XG5cbiAgICB1aS50b29sdGlwLmJpbmQocHJvcE5hbWVJbnAuaW5wdXQsICgpID0+IGN1cnJlbnROYW1lKTtcbiAgICByZXR1cm4gcHJvcE5hbWVJbnAucm9vdDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRXZWlnaHRDZWxsKFxuICAgIHJvd0lkOiBzdHJpbmcsXG4gICAgcHJvcDogUHJvcGVydHlEZXNpcmFiaWxpdHksXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRQcm9wZXJ0eU5hbWVCeVJvd0lkKHJvd0lkKTtcbiAgICBjb25zdCBjaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3Qgd2VpZ2h0SW5wdXQgPSB1aS5pbnB1dC5mbG9hdCgnJywge3ZhbHVlOiBwcm9wLndlaWdodCwgbWluOiAwLCBtYXg6IDEsIGZvcm1hdDogJyMwLjAwMCcsXG4gICAgICBvblZhbHVlQ2hhbmdlZDogKHYpID0+IHtcbiAgICAgICAgaWYgKG5hbWUpXG4gICAgICAgICAgdGhpcy5tdXRhdGVQcm9wZXJ0eShuYW1lLCAocCkgPT4gcC53ZWlnaHQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB2ID8/IDApKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHdlaWdodElucHV0LnJvb3QuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8td2VpZ2h0LWlucHV0Jyk7XG4gICAgY2hpbGRyZW4ucHVzaCh3ZWlnaHRJbnB1dC5yb290KTtcblxuICAgIGlmICh0aGlzLmRhdGFGcmFtZSkge1xuICAgICAgY29uc3QgbnVtQ29scyA9IHRoaXMuZ2V0TnVtZXJpY2FsQ29sdW1uTmFtZXMoKTtcbiAgICAgIGxldCBpc0NvbHVtbiA9ICEhcHJvcC53ZWlnaHRDb2x1bW4gJiYgbnVtQ29scy5pbmNsdWRlcyhwcm9wLndlaWdodENvbHVtbik7XG5cbiAgICAgIGNvbnN0IGNvbElucHV0ID0gdWkuaW5wdXQuY2hvaWNlKCcnLCB7aXRlbXM6IG51bUNvbHMsIG51bGxhYmxlOiB0cnVlLCB2YWx1ZTogcHJvcC53ZWlnaHRDb2x1bW4gPz8gJycsXG4gICAgICAgIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgICAgIGlmIChuYW1lKVxuICAgICAgICAgICAgdGhpcy5tdXRhdGVQcm9wZXJ0eShuYW1lLCAocCkgPT4gcC53ZWlnaHRDb2x1bW4gPSB2IHx8IHVuZGVmaW5lZCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3luY1RvZ2dsZSA9ICgpID0+IHtcbiAgICAgICAgd2VpZ2h0SW5wdXQucm9vdC5jbGFzc0xpc3QudG9nZ2xlKCdzdGF0aXN0aWNzLW1wby1oaWRkZW4nLCBpc0NvbHVtbik7XG4gICAgICAgIGNvbElucHV0LnJvb3QuY2xhc3NMaXN0LnRvZ2dsZSgnc3RhdGlzdGljcy1tcG8taGlkZGVuJywgIWlzQ29sdW1uKTtcbiAgICAgICAgdG9nZ2xlLmNsYXNzTGlzdC50b2dnbGUoJ3N0YXRpc3RpY3MtbXBvLXdlaWdodC10b2dnbGUtYWN0aXZlJywgaXNDb2x1bW4pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgdG9nZ2xlID0gdWkuaWNvbkZBKCdleGNoYW5nZS1hbHQnLCAoKSA9PiB7XG4gICAgICAgIGlzQ29sdW1uID0gIWlzQ29sdW1uO1xuICAgICAgICBzeW5jVG9nZ2xlKCk7XG4gICAgICAgIGlmICghaXNDb2x1bW4gJiYgbmFtZSlcbiAgICAgICAgICB0aGlzLm11dGF0ZVByb3BlcnR5KG5hbWUsIChwKSA9PiB7IGRlbGV0ZSBwLndlaWdodENvbHVtbjsgfSk7XG4gICAgICAgIGVsc2UgaWYgKGlzQ29sdW1uICYmIG5hbWUgJiYgY29sSW5wdXQudmFsdWUpXG4gICAgICAgICAgdGhpcy5tdXRhdGVQcm9wZXJ0eShuYW1lLCAocCkgPT4gcC53ZWlnaHRDb2x1bW4gPSBjb2xJbnB1dC52YWx1ZSB8fCB1bmRlZmluZWQpO1xuICAgICAgfSk7XG4gICAgICB0b2dnbGUuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8td2VpZ2h0LXRvZ2dsZScpO1xuICAgICAgdWkudG9vbHRpcC5iaW5kKHRvZ2dsZSwgKCkgPT4gaXNDb2x1bW4gPyAnU3dpdGNoIHRvIG1hbnVhbCB3ZWlnaHQnIDogJ1VzZSB3ZWlnaHQgZnJvbSBjb2x1bW4nKTtcbiAgICAgIHN5bmNUb2dnbGUoKTtcblxuICAgICAgY2hpbGRyZW4ucHVzaChjb2xJbnB1dC5yb290LCB0b2dnbGUpO1xuICAgIH1cblxuICAgIHJldHVybiB1aS5kaXZIKGNoaWxkcmVuLCAnc3RhdGlzdGljcy1tcG8td2VpZ2h0LWNlbGwnKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb2x1bW5TZWxlY3RvcihcbiAgICByb3dJZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IERlc2lyYWJpbGl0eUVkaXRvcixcbiAgKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZGF0YUZyYW1lKVxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0RWxpZ2libGVDb2x1bW5OYW1lcygpO1xuICAgIGNvbnN0IG1hdGNoZWQgPSB0aGlzLmNvbHVtbk1hcHBpbmdbbmFtZV0gPz8gbnVsbDtcblxuICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICBjb25zdCBjb2wgPSB0aGlzLmRhdGFGcmFtZS5jb2wobWF0Y2hlZCk7XG4gICAgICBlZGl0b3Iuc2V0Q29sdW1uPy4oY29sKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dCA9IHVpLmlucHV0LmNob2ljZSgnJywge2l0ZW1zLCBudWxsYWJsZTogdHJ1ZSwgdmFsdWU6IG1hdGNoZWQgPz8gJycsIG9uVmFsdWVDaGFuZ2VkOiAodikgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5NYXBwaW5nW25hbWVdID0gdiA/PyBudWxsO1xuICAgICAgY29uc3QgY29sID0gdiA/IHRoaXMuZGF0YUZyYW1lIS5jb2wodikgOiBudWxsO1xuICAgICAgaWYgKGNvbCAmJiB0aGlzLnN3aXRjaFByb3BlcnR5VHlwZShuYW1lLCByb3dJZCwgY29sKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZWRpdG9yLnNldENvbHVtbj8uKGNvbCk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9fSk7XG4gICAgcmV0dXJuIGlucHV0LnJvb3Q7XG4gIH1cblxuICBwcml2YXRlIGdldEVsaWdpYmxlQ29sdW1uTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kYXRhRnJhbWUpXG4gICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5kYXRhRnJhbWUuY29sdW1ucylcbiAgICAgIC5maWx0ZXIoKGMpID0+ICFjLmlzQ2F0ZWdvcmljYWwgfHwgYy5jYXRlZ29yaWVzLmxlbmd0aCA8PSBNQVhfQ0FURUdPUklDQUxfQ0FURUdPUklFUylcbiAgICAgIC5tYXAoKGMpID0+IGMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGdldE51bWVyaWNhbENvbHVtbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGF0YUZyYW1lKVxuICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubnVtZXJpY2FsKS5tYXAoKGMpID0+IGMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDb2x1bW4obmFtZTogc3RyaW5nKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmRhdGFGcmFtZSlcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGVsaWdpYmxlID0gdGhpcy5nZXRFbGlnaWJsZUNvbHVtbk5hbWVzKCk7XG4gICAgY29uc3QgY29sTmFtZSA9IHRoaXMuY29sdW1uTWFwcGluZ1tuYW1lXSA/PyBlbGlnaWJsZS5maW5kKChjKSA9PiBjLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSkgPz8gbnVsbDtcbiAgICBpZiAoY29sTmFtZSlcbiAgICAgIHRoaXMuY29sdW1uTWFwcGluZ1tuYW1lXSA9IGNvbE5hbWU7XG4gICAgcmV0dXJuIGNvbE5hbWUgPyB0aGlzLmRhdGFGcmFtZS5jb2woY29sTmFtZSkgPz8gbnVsbCA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNvcnJlY3RQcm9wZXJ0eVR5cGUocHJvcDogUHJvcGVydHlEZXNpcmFiaWxpdHksIGNvbDogREcuQ29sdW1uKTogUHJvcGVydHlEZXNpcmFiaWxpdHkgfCBudWxsIHtcbiAgICBpZiAoaXNOdW1lcmljYWwocHJvcCkgJiYgY29sLmlzQ2F0ZWdvcmljYWwpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBjb2wuY2F0ZWdvcmllcy5tYXAoKGM6IHN0cmluZykgPT4gKHtuYW1lOiBjLCBkZXNpcmFiaWxpdHk6IDF9KSk7XG4gICAgICByZXR1cm4gY3JlYXRlRGVmYXVsdENhdGVnb3JpY2FsKHByb3Aud2VpZ2h0LCBjYXRlZ29yaWVzKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTnVtZXJpY2FsKHByb3ApICYmIGNvbC5pc051bWVyaWNhbClcbiAgICAgIHJldHVybiBjcmVhdGVEZWZhdWx0TnVtZXJpY2FsKHByb3Aud2VpZ2h0LCBjb2wubWluLCBjb2wubWF4KTtcblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzd2l0Y2hQcm9wZXJ0eVR5cGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJvd0lkOiBzdHJpbmcsXG4gICAgY29sOiBERy5Db2x1bW4sXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5wcm9maWxlKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgY29ycmVjdGVkID0gdGhpcy5jb3JyZWN0UHJvcGVydHlUeXBlKHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25hbWVdLCBjb2wpO1xuICAgIGlmICghY29ycmVjdGVkKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgdGhpcy5wcm9maWxlLnByb3BlcnRpZXNbbmFtZV0gPSBjb3JyZWN0ZWQ7XG4gICAgdGhpcy5yZWJ1aWxkUm93KG5hbWUsIHJvd0lkKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVidWlsZFJvdyhuYW1lOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRSb3cgPSB0aGlzLnJvd3Nbcm93SWRdO1xuICAgIGNvbnN0IG5ld1JvdyA9IHRoaXMuYnVpbGRSb3cobmFtZSwgcm93SWQsIHRoaXMucHJvZmlsZSEucHJvcGVydGllc1tuYW1lXSk7XG4gICAgdGhpcy5yb3dzW3Jvd0lkXSA9IG5ld1JvdztcblxuICAgIGlmIChvbGRSb3c/LnBhcmVudE5vZGUpXG4gICAgICBvbGRSb3cucmVwbGFjZVdpdGgobmV3Um93KTtcblxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE1vZGVHZWFyKFxuICAgIHJvd0lkOiBzdHJpbmcsXG4gICAgcHJvcDogUHJvcGVydHlEZXNpcmFiaWxpdHksXG4gICAgZWRpdG9yOiBEZXNpcmFiaWxpdHlFZGl0b3IsXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBnZWFyID0gdWkuaWNvbnMuc2V0dGluZ3MoKCkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0UHJvcGVydHlOYW1lQnlSb3dJZChyb3dJZCk7XG4gICAgICBpZiAoIW5hbWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLmNvbHVtbk1hcHBpbmdbbmFtZV07XG4gICAgICBjb25zdCBjb2wgPSBjb2xOYW1lID8gdGhpcy5kYXRhRnJhbWU/LmNvbChjb2xOYW1lKSA/PyBudWxsIDogbnVsbDtcbiAgICAgIHRoaXMub3Blbk1vZGVEaWFsb2cobmFtZSwgcm93SWQsIHByb3AsIGVkaXRvciwgY29sKTtcbiAgICB9KTtcblxuICAgIGdlYXIuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8tZ2VhcicpO1xuICAgIHJldHVybiBnZWFyO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJvd0NvbnRyb2xzKHJvd0lkOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYWRkID0gdWkuaWNvbnMuYWRkKCgpID0+IHRoaXMuaW5zZXJ0Um93QWZ0ZXJSb3cocm93SWQpKTtcbiAgICBjb25zdCBkZWwgPSB1aS5pY29ucy5kZWxldGUoKCkgPT4gdGhpcy5kZWxldGVSb3cocm93SWQpKTtcbiAgICByZXR1cm4gdWkuZGl2SChbYWRkLCBkZWxdLCAnc3RhdGlzdGljcy1tcG8tY29udHJvbC1idXR0b25zJyk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Nb2RlRGlhbG9nKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByb3dJZDogc3RyaW5nLFxuICAgIHByb3A6IFByb3BlcnR5RGVzaXJhYmlsaXR5LFxuICAgIGVkaXRvcjogRGVzaXJhYmlsaXR5RWRpdG9yLFxuICAgIG1hcHBlZENvbDogREcuQ29sdW1uIHwgbnVsbCA9IG51bGwsXG4gICk6IHZvaWQge1xuICAgIG5ldyBEZXNpcmFiaWxpdHlNb2RlRGlhbG9nKFxuICAgICAgbmFtZSxcbiAgICAgIHByb3AsXG4gICAgICAocGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgcCA9IHRoaXMucHJvZmlsZT8ucHJvcGVydGllc1tuYW1lXTtcbiAgICAgICAgaWYgKHApXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwLCBwYXRjaCk7XG4gICAgICAgIGVkaXRvci5yZWRyYXdBbGwoKTtcbiAgICAgIH0sXG4gICAgICAobmV3UHJvcCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvZmlsZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25hbWVdID0gbmV3UHJvcDtcbiAgICAgICAgdGhpcy5yZWJ1aWxkUm93KG5hbWUsIHJvd0lkKTtcbiAgICAgIH0sXG4gICAgICBtYXBwZWRDb2wsXG4gICAgKS5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5TmFtZUJ5Um93SWQocm93SWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMucm93SWRzKVxuICAgICAgLmZpbmQoKFssIGlkXSkgPT4gaWQgPT09IHJvd0lkKT8uWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5hbWVQcm9wZXJ0eShvbGROYW1lOiBzdHJpbmcsIG5ld05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9maWxlIHx8IHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25ld05hbWVdKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3Qgcm93SWQgPSB0aGlzLnJvd0lkc1tvbGROYW1lXTtcbiAgICB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tuZXdOYW1lXSA9IHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW29sZE5hbWVdO1xuICAgIGRlbGV0ZSB0aGlzLnByb2ZpbGUucHJvcGVydGllc1tvbGROYW1lXTtcblxuICAgIHRoaXMuY29sdW1uTWFwcGluZ1tuZXdOYW1lXSA9IHRoaXMuY29sdW1uTWFwcGluZ1tvbGROYW1lXSA/PyBudWxsO1xuICAgIGRlbGV0ZSB0aGlzLmNvbHVtbk1hcHBpbmdbb2xkTmFtZV07XG5cbiAgICBjb25zdCBpZHggPSB0aGlzLnByb3BlcnR5T3JkZXIuaW5kZXhPZihvbGROYW1lKTtcbiAgICBpZiAoaWR4ID49IDApXG4gICAgICB0aGlzLnByb3BlcnR5T3JkZXJbaWR4XSA9IG5ld05hbWU7XG5cbiAgICBkZWxldGUgdGhpcy5yb3dJZHNbb2xkTmFtZV07XG4gICAgdGhpcy5yb3dJZHNbbmV3TmFtZV0gPSByb3dJZDtcblxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVSb3cocm93SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFByb3BlcnR5TmFtZUJ5Um93SWQocm93SWQpO1xuICAgIGlmICghbmFtZSB8fCAhdGhpcy5wcm9maWxlKVxuICAgICAgcmV0dXJuO1xuXG4gICAgZGVsZXRlIHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25hbWVdO1xuICAgIGRlbGV0ZSB0aGlzLmNvbHVtbk1hcHBpbmdbbmFtZV07XG4gICAgZGVsZXRlIHRoaXMucm93SWRzW25hbWVdO1xuICAgIHRoaXMucm93U3Vicy5nZXQocm93SWQpPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucm93U3Vicy5kZWxldGUocm93SWQpO1xuXG4gICAgY29uc3QgaWR4ID0gdGhpcy5wcm9wZXJ0eU9yZGVyLmluZGV4T2YobmFtZSk7XG4gICAgaWYgKGlkeCA+PSAwKVxuICAgICAgdGhpcy5wcm9wZXJ0eU9yZGVyLnNwbGljZShpZHgsIDEpO1xuXG4gICAgY29uc3Qgcm93RWwgPSB0aGlzLnJvd3Nbcm93SWRdO1xuICAgIGRlbGV0ZSB0aGlzLnJvd3Nbcm93SWRdO1xuXG4gICAgaWYgKHRoaXMucHJvcGVydHlPcmRlci5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIGVsc2VcbiAgICAgIHJvd0VsPy5yZW1vdmUoKTtcblxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRSb3dBZnRlclJvdyhyb3dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb2ZpbGUpXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBhZnRlck5hbWUgPSB0aGlzLmdldFByb3BlcnR5TmFtZUJ5Um93SWQocm93SWQpO1xuICAgIGlmICghYWZ0ZXJOYW1lKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3TmFtZSA9IGBOZXdQcm9wZXJ0eSR7T2JqZWN0LmtleXModGhpcy5wcm9maWxlLnByb3BlcnRpZXMpLmxlbmd0aCArIDF9YDtcbiAgICBjb25zdCBuZXdSb3dJZCA9IHRoaXMubmV3Um93SWQoKTtcblxuICAgIHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25ld05hbWVdID0gY3JlYXRlRGVmYXVsdE51bWVyaWNhbCgpO1xuXG4gICAgdGhpcy5yb3dJZHNbbmV3TmFtZV0gPSBuZXdSb3dJZDtcblxuICAgIGNvbnN0IGlkeCA9IHRoaXMucHJvcGVydHlPcmRlci5pbmRleE9mKGFmdGVyTmFtZSk7XG4gICAgdGhpcy5wcm9wZXJ0eU9yZGVyLnNwbGljZShpZHggKyAxLCAwLCBuZXdOYW1lKTtcblxuICAgIGNvbnN0IG5ld1JvdyA9IHRoaXMuYnVpbGRSb3cobmV3TmFtZSwgbmV3Um93SWQsIHRoaXMucHJvZmlsZS5wcm9wZXJ0aWVzW25ld05hbWVdKTtcbiAgICB0aGlzLnJvd3NbbmV3Um93SWRdID0gbmV3Um93O1xuXG4gICAgdGhpcy5yb3dzW3Jvd0lkXT8uYWZ0ZXIobmV3Um93KTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbXV0YXRlUHJvcGVydHkoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHVwZGF0ZXI6IChwOiBQcm9wZXJ0eURlc2lyYWJpbGl0eSkgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcHJvcCA9IHRoaXMucHJvZmlsZT8ucHJvcGVydGllc1tuYW1lXTtcbiAgICBpZiAoIXByb3ApXG4gICAgICByZXR1cm47XG5cbiAgICB1cGRhdGVyKHByb3ApO1xuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VkLm5leHQoKTtcbiAgICBncm9rLmV2ZW50cy5maXJlQ3VzdG9tRXZlbnQoTVBPX1NDT1JFX0NIQU5HRURfRVZFTlQsIHt9KTtcbiAgfVxufVxuIl19
package/src/mpo/mpo.d.ts CHANGED
@@ -42,8 +42,10 @@ export declare function createDefaultCategorical(weight?: number, categories?: {
42
42
  }[]): CategoricalDesirability;
43
43
  export declare function migrateDesirability(raw: any): PropertyDesirability;
44
44
  export declare const DESIRABILITY_PROFILE_TYPE = "MPO Desirability Profile";
45
+ export declare const CURRENT_MPO_VERSION = 1;
45
46
  export type DesirabilityProfile = {
46
47
  type: typeof DESIRABILITY_PROFILE_TYPE;
48
+ version?: number;
47
49
  name: string;
48
50
  description: string;
49
51
  aggregation?: WeightedAggregation;
@@ -52,6 +54,7 @@ export type DesirabilityProfile = {
52
54
  };
53
55
  };
54
56
  export declare function isDesirabilityProfile(x: any): x is DesirabilityProfile;
57
+ export declare function migrateProfile(raw: DesirabilityProfile): DesirabilityProfile;
55
58
  export declare const WEIGHTED_AGGREGATIONS: readonly ["Average", "Sum", "Product", "Geomean", "Min", "Max"];
56
59
  export declare const WEIGHTED_AGGREGATIONS_LIST: WeightedAggregation[];
57
60
  export type WeightedAggregation = typeof WEIGHTED_AGGREGATIONS[number];
@@ -1 +1 @@
1
- {"version":3,"file":"mpo.d.ts","sourceRoot":"","sources":["mpo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mpo.d.ts","sourceRoot":"","sources":["mpo.ts"],"names":[],"mappings":"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"}
package/src/mpo/mpo.js CHANGED
@@ -18,9 +18,23 @@ export function migrateDesirability(raw) {
18
18
  return { ...raw, functionType: 'numerical' };
19
19
  }
20
20
  export const DESIRABILITY_PROFILE_TYPE = 'MPO Desirability Profile';
21
+ export const CURRENT_MPO_VERSION = 1;
21
22
  export function isDesirabilityProfile(x) {
22
23
  return x != null && typeof x === 'object' && x.type === DESIRABILITY_PROFILE_TYPE;
23
24
  }
25
+ export function migrateProfile(raw) {
26
+ var _a;
27
+ const version = (_a = raw.version) !== null && _a !== void 0 ? _a : 0;
28
+ if (version >= CURRENT_MPO_VERSION)
29
+ return raw;
30
+ // v0 → v1: backfill functionType on properties
31
+ if (version < 1) {
32
+ for (const key in raw.properties)
33
+ raw.properties[key] = migrateDesirability(raw.properties[key]);
34
+ raw.version = CURRENT_MPO_VERSION;
35
+ }
36
+ return raw;
37
+ }
24
38
  export const WEIGHTED_AGGREGATIONS = ['Average', 'Sum', 'Product', 'Geomean', 'Min', 'Max'];
25
39
  export const WEIGHTED_AGGREGATIONS_LIST = [...WEIGHTED_AGGREGATIONS];
26
40
  export const DEFAULT_AGGREGATION = 'Average';
@@ -125,4 +139,4 @@ export function aggregate(scores, weights, aggregation) {
125
139
  throw new Error(`Unknown aggregation type: ${aggregation}`);
126
140
  }
127
141
  }
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQTZDdEMsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUF1QjtJQUNqRCxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssV0FBVyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLE1BQU0sR0FBRyxDQUFDLEVBQ1YsVUFBbUQ7SUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDO0FBQ2xILENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBUTtJQUMxQyxJQUFJLEdBQUcsQ0FBQyxZQUFZO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsSUFBSSxHQUFHLENBQUMsVUFBVTtRQUNoQixPQUFPLEVBQUMsR0FBRyxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBQyxDQUFDO0lBQy9DLE9BQU8sRUFBQyxHQUFHLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sQ0FBQyxN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Q29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbi8vLyBBbiBhcnJheSBvZiBbeCwgeV0gcG9pbnRzIHJlcHJlc2VudGluZyB0aGUgZGVzaXJhYmlsaXR5IGxpbmVcbi8vLyBbeCwgeV0gcGFpcnMgYXJlIHNvcnRlZCBieSB4IGluIGFzY2VuZGluZyBvcmRlclxuZXhwb3J0IHR5cGUgRGVzaXJhYmlsaXR5TGluZSA9IG51bWJlcltdW107XG5cbmV4cG9ydCB0eXBlIERlc2lyYWJpbGl0eU1vZGUgPSAnZnJlZWZvcm0nIHwgJ2dhdXNzaWFuJyB8ICdzaWdtb2lkJztcblxuZXhwb3J0IHR5cGUgTWlzc2luZ1ZhbHVlQ29uZmlnID1cbiAgfCB7IHN0cmF0ZWd5OiAnZXhjbHVkZScgfVxuICB8IHsgc3RyYXRlZ3k6ICdkZWZhdWx0Jzsgc2NvcmU6IG51bWJlciB9XG4gIHwgeyBzdHJhdGVneTogJ3NraXAnIH07XG5cbnR5cGUgQmFzZVByb3BlcnR5RGVzaXJhYmlsaXR5ID0ge1xuICB3ZWlnaHQ6IG51bWJlcjsgLy8vIDAtMVxuICB3ZWlnaHRDb2x1bW4/OiBzdHJpbmc7IC8vLyBvcHRpb25hbCBjb2x1bW4gbmFtZSB0byByZWFkIHBlci1yb3cgd2VpZ2h0cyBmcm9tICgwLTEpXG4gIG1pc3NpbmdWYWx1ZXM/OiBNaXNzaW5nVmFsdWVDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIE51bWVyaWNhbERlc2lyYWJpbGl0eSA9IEJhc2VQcm9wZXJ0eURlc2lyYWJpbGl0eSAmIHtcbiAgZnVuY3Rpb25UeXBlOiAnbnVtZXJpY2FsJztcbiAgbGluZTogRGVzaXJhYmlsaXR5TGluZTtcbiAgbWluPzogbnVtYmVyOyAvLy8gbWluIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSAob3B0aW9uYWw7IHVzZWQgZm9yIGVkaXRpbmcgdGhlIGxpbmUpXG4gIG1heD86IG51bWJlcjsgLy8vIG1heCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgKG9wdGlvbmFsOyB1c2VkIGZvciBlZGl0aW5nIHRoZSBsaW5lKVxuXG4gIG1vZGU/OiBEZXNpcmFiaWxpdHlNb2RlO1xuXG4gIC8vLyBHYXVzc2lhbiBtb2RlIHBhcmFtZXRlcnNcbiAgbWVhbj86IG51bWJlcjtcbiAgc2lnbWE/OiBudW1iZXI7XG5cbiAgLy8vIFNpZ21vaWQgbW9kZSBwYXJhbWV0ZXJzXG4gIHgwPzogbnVtYmVyO1xuICBrPzogbnVtYmVyO1xuXG4gIGZyZWVmb3JtTGluZT86IERlc2lyYWJpbGl0eUxpbmU7XG59XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsRGVzaXJhYmlsaXR5ID0gQmFzZVByb3BlcnR5RGVzaXJhYmlsaXR5ICYge1xuICBmdW5jdGlvblR5cGU6ICdjYXRlZ29yaWNhbCc7XG4gIGNhdGVnb3JpZXM6IHsgbmFtZTogc3RyaW5nOyBkZXNpcmFiaWxpdHk6IG51bWJlciB9W107XG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5RGVzaXJhYmlsaXR5ID0gTnVtZXJpY2FsRGVzaXJhYmlsaXR5IHwgQ2F0ZWdvcmljYWxEZXNpcmFiaWxpdHk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNhbChwOiBQcm9wZXJ0eURlc2lyYWJpbGl0eSk6IHAgaXMgTnVtZXJpY2FsRGVzaXJhYmlsaXR5IHtcbiAgcmV0dXJuIHAuZnVuY3Rpb25UeXBlID09PSAnbnVtZXJpY2FsJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHROdW1lcmljYWwod2VpZ2h0ID0gMSwgbWluID0gMCwgbWF4ID0gMSk6IE51bWVyaWNhbERlc2lyYWJpbGl0eSB7XG4gIHJldHVybiB7ZnVuY3Rpb25UeXBlOiAnbnVtZXJpY2FsJywgd2VpZ2h0LCBtb2RlOiAnZnJlZWZvcm0nLCBtaW4sIG1heCwgbGluZTogW119O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdENhdGVnb3JpY2FsKFxuICB3ZWlnaHQgPSAxLFxuICBjYXRlZ29yaWVzPzoge25hbWU6IHN0cmluZzsgZGVzaXJhYmlsaXR5OiBudW1iZXJ9W10sXG4pOiBDYXRlZ29yaWNhbERlc2lyYWJpbGl0eSB7XG4gIHJldHVybiB7ZnVuY3Rpb25UeXBlOiAnY2F0ZWdvcmljYWwnLCB3ZWlnaHQsIGNhdGVnb3JpZXM6IGNhdGVnb3JpZXMgPz8gW3tuYW1lOiAnQ2F0ZWdvcnkgMScsIGRlc2lyYWJpbGl0eTogMX1dfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVEZXNpcmFiaWxpdHkocmF3OiBhbnkpOiBQcm9wZXJ0eURlc2lyYWJpbGl0eSB7XG4gIGlmIChyYXcuZnVuY3Rpb25UeXBlKVxuICAgIHJldHVybiByYXc7XG4gIGlmIChyYXcuY2F0ZWdvcmllcylcbiAgICByZXR1cm4gey4uLnJhdywgZnVuY3Rpb25UeXBlOiAnY2F0ZWdvcmljYWwnfTtcbiAgcmV0dXJuIHsuLi5yYXcsIGZ1bmN0aW9uVHlwZTogJ251bWVyaWNhbCd9O1xufVxuXG5leHBvcnQgY29uc3QgREVTSVJBQklMSVRZX1BST0ZJTEVfVFlQRSA9ICdNUE8gRGVzaXJhYmlsaXR5IFByb2ZpbGUnO1xuXG4vLy8gQSBtYXAgb2YgZGVzaXJhYmlsaXR5IGxpbmVzIHdpdGggdGhlaXIgd2VpZ2h0c1xuZXhwb3J0IHR5cGUgRGVzaXJhYmlsaXR5UHJvZmlsZSA9IHtcbiAgdHlwZTogdHlwZW9mIERFU0lSQUJJTElUWV9QUk9GSUxFX1RZUEU7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiBXZWlnaHRlZEFnZ3JlZ2F0aW9uO1xuICBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IFByb3BlcnR5RGVzaXJhYmlsaXR5IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Rlc2lyYWJpbGl0eVByb2ZpbGUoeDogYW55KTogeCBpcyBEZXNpcmFiaWxpdHlQcm9maWxlIHtcbiAgcmV0dXJuIHggIT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeC50eXBlID09PSBERVNJUkFCSUxJVFlfUFJPRklMRV9UWVBFO1xufVxuXG5leHBvcnQgY29uc3QgV0VJR0hURURfQUdHUkVHQVRJT05TID0gWydBdmVyYWdlJywgJ1N1bScsICdQcm9kdWN0JywgJ0dlb21lYW4nLCAnTWluJywgJ01heCddIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFdFSUdIVEVEX0FHR1JFR0FUSU9OU19MSVNUOiBXZWlnaHRlZEFnZ3JlZ2F0aW9uW10gPSBbLi4uV0VJR0hURURfQUdHUkVHQVRJT05TXTtcbmV4cG9ydCB0eXBlIFdlaWdodGVkQWdncmVnYXRpb24gPSB0eXBlb2YgV0VJR0hURURfQUdHUkVHQVRJT05TW251bWJlcl07XG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTjogV2VpZ2h0ZWRBZ2dyZWdhdGlvbiA9ICdBdmVyYWdlJztcblxuLy8vIENhbGN1bGF0ZXMgdGhlIGRlc2lyYWJpbGl0eSBzY29yZSBmb3IgYSBnaXZlbiB4IHZhbHVlXG4vLy8gUmV0dXJucyAwIGlmIHggaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgdGhlIGRlc2lyYWJpbGl0eSBsaW5lXG4vLy8gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSB5IHZhbHVlIG9mIHRoZSBkZXNpcmFiaWxpdHkgbGluZSBhdCB4XG5leHBvcnQgZnVuY3Rpb24gZGVzaXJhYmlsaXR5U2NvcmUoeDogbnVtYmVyLCBkZXNpcmFiaWxpdHlMaW5lOiBEZXNpcmFiaWxpdHlMaW5lKTogbnVtYmVyIHtcbiAgLy8gSWYgdGhlIGxpbmUgaXMgZW1wdHkgb3IgeCBpcyBvdXRzaWRlIHRoZSByYW5nZSwgcmV0dXJuIDBcbiAgaWYgKGRlc2lyYWJpbGl0eUxpbmUubGVuZ3RoID09PSAwIHx8IHggPCBkZXNpcmFiaWxpdHlMaW5lWzBdWzBdIHx8IHggPiBkZXNpcmFiaWxpdHlMaW5lW2Rlc2lyYWJpbGl0eUxpbmUubGVuZ3RoIC0gMV1bMF0pXG4gICAgcmV0dXJuIDA7XG5cbiAgLy8gRmluZCB0aGUgdHdvIHBvaW50cyB0aGF0IHggbGllcyBiZXR3ZWVuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzaXJhYmlsaXR5TGluZS5sZW5ndGggLSAxOyBpKyspIHtcbiAgICBjb25zdCBbeDEsIHkxXSA9IGRlc2lyYWJpbGl0eUxpbmVbaV07XG4gICAgY29uc3QgW3gyLCB5Ml0gPSBkZXNpcmFiaWxpdHlMaW5lW2kgKyAxXTtcblxuICAgIGlmICh4ID49IHgxICYmIHggPD0geDIpIHtcbiAgICAgIC8vIExpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdGhlIHR3byBwb2ludHNcbiAgICAgIGlmICh4MSA9PT0geDIpIHJldHVybiB5MTtcbiAgICAgIGNvbnN0IHNsb3BlID0gKHkyIC0geTEpIC8gKHgyIC0geDEpO1xuICAgICAgcmV0dXJuIHkxICsgc2xvcGUgKiAoeCAtIHgxKTtcbiAgICB9XG4gIH1cblxuICAvLyBTaG91bGQgbm90IGhhcHBlbiBpZiB4IGlzIHdpdGhpbiBib3VuZHMsIGJ1dCByZXR1cm4gMCBhcyBmYWxsYmFja1xuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhdGVnb3JpY2FsRGVzaXJhYmlsaXR5U2NvcmUoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHByb3A6IENhdGVnb3JpY2FsRGVzaXJhYmlsaXR5LFxuKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IGZvdW5kID0gcHJvcC5jYXRlZ29yaWVzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gdmFsdWUpO1xuICByZXR1cm4gZm91bmQ/LmRlc2lyYWJpbGl0eSA/PyBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBNcG9SZXN1bHQgPSB7XG4gIHNjb3JlQ29sdW1uOiBERy5Db2x1bW47XG4gIGRlc2lyYWJpbGl0eUNvbHVtbnM/OiBERy5Db2x1bW5bXTtcbn1cblxuLyoqIENhbGN1bGF0ZXMgdGhlIG11bHRpIHBhcmFtZXRlciBvcHRpbWl6YXRpb24gc2NvcmUsIDAtMTAwLCAxMDAgaXMgdGhlIG1heGltdW0gKi9cbmV4cG9ydCBmdW5jdGlvbiBtcG8oXG4gIGRhdGFGcmFtZTogREcuRGF0YUZyYW1lLFxuICBjb2x1bW5zOiBERy5Db2x1bW5bXSxcbiAgcHJvZmlsZU5hbWU6IHN0cmluZyxcbiAgYWdncmVnYXRpb246IFdlaWdodGVkQWdncmVnYXRpb24sXG4gIGlzRGlmZmVyZW50OiBib29sZWFuID0gZmFsc2UsXG4gIGNyZWF0ZURlc2lyYWJpbGl0eUNvbHVtbnM6IGJvb2xlYW4gPSBmYWxzZSxcbik6IE1wb1Jlc3VsdCB7XG4gIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvbHVtbnMgcHJvdmlkZWQgZm9yIE1QTyBjYWxjdWxhdGlvbi4nKTtcblxuICBjb25zdCByb3dDb3VudCA9IGNvbHVtbnNbMF0ubGVuZ3RoO1xuICBjb25zdCByZXN1bHRDb2x1bW4gPSBpc0RpZmZlcmVudCA/XG4gICAgREcuQ29sdW1uLmZsb2F0KHByb2ZpbGVOYW1lLCByb3dDb3VudCkgOlxuICAgIChkYXRhRnJhbWUuY29sKHByb2ZpbGVOYW1lKSA/PyBERy5Db2x1bW4uZmxvYXQocHJvZmlsZU5hbWUsIHJvd0NvdW50KSk7XG5cbiAgY29uc3QgZGVzaXJhYmlsaXR5VGVtcGxhdGVzOiBQcm9wZXJ0eURlc2lyYWJpbGl0eVtdID0gW107XG4gIGNvbnN0IHdlaWdodENvbHVtbnM6IChERy5Db2x1bW4gfCBudWxsKVtdID0gW107XG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICBjb25zdCB0YWcgPSBjb2x1bW4uZ2V0VGFnKCdkZXNpcmFiaWxpdHlUZW1wbGF0ZScpO1xuICAgIGNvbnN0IGQgPSBtaWdyYXRlRGVzaXJhYmlsaXR5KEpTT04ucGFyc2UodGFnKSk7XG4gICAgZGVzaXJhYmlsaXR5VGVtcGxhdGVzLnB1c2goZCk7XG4gICAgd2VpZ2h0Q29sdW1ucy5wdXNoKGQud2VpZ2h0Q29sdW1uID8gZGF0YUZyYW1lLmNvbChkLndlaWdodENvbHVtbikgPz8gbnVsbCA6IG51bGwpO1xuICB9XG5cbiAgY29uc3QgZGVzaXJhYmlsaXR5Q29sdW1ucyA9IGNyZWF0ZURlc2lyYWJpbGl0eUNvbHVtbnMgP1xuICAgIGNvbHVtbnMubWFwKChjb2wpID0+IERHLkNvbHVtbi5mbG9hdChgJHtjb2wubmFtZX0gKCR7cHJvZmlsZU5hbWV9IGRlc2lyYWJpbGl0eSlgLCByb3dDb3VudCkpIDogdW5kZWZpbmVkO1xuXG4gIHJlc3VsdENvbHVtbi5pbml0KChpKSA9PiB7XG4gICAgY29uc3Qgc2NvcmVzOiBudW1iZXJbXSA9IFtdO1xuICAgIGNvbnN0IHdlaWdodHM6IG51bWJlcltdID0gW107XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IGRlc2lyYWJpbGl0eSA9IGRlc2lyYWJpbGl0eVRlbXBsYXRlc1tqXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gY29sdW1uc1tqXS5nZXQoaSk7XG5cbiAgICAgIGxldCBzY29yZTogbnVtYmVyIHwgbnVsbDtcblxuICAgICAgaWYgKGNvbHVtbnNbal0uaXNOb25lKGkpKSB7XG4gICAgICAgIGNvbnN0IG12ID0gZGVzaXJhYmlsaXR5Lm1pc3NpbmdWYWx1ZXM7XG4gICAgICAgIGlmICghbXYgfHwgbXYuc3RyYXRlZ3kgPT09ICdleGNsdWRlJylcbiAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICBpZiAobXYuc3RyYXRlZ3kgPT09ICdza2lwJylcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgc2NvcmUgPSBtdi5zY29yZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzY29yZSA9IGlzTnVtZXJpY2FsKGRlc2lyYWJpbGl0eSkgP1xuICAgICAgICAgIGRlc2lyYWJpbGl0eVNjb3JlKHZhbHVlLCBkZXNpcmFiaWxpdHkubGluZSkgOlxuICAgICAgICAgIGNhdGVnb3JpY2FsRGVzaXJhYmlsaXR5U2NvcmUoU3RyaW5nKHZhbHVlKSwgZGVzaXJhYmlsaXR5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjb3JlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gTmFOO1xuXG4gICAgICBpZiAoY3JlYXRlRGVzaXJhYmlsaXR5Q29sdW1ucylcbiAgICAgICAgZGVzaXJhYmlsaXR5Q29sdW1ucyFbal0uc2V0KGksIHNjb3JlLCBmYWxzZSk7XG5cbiAgICAgIHNjb3Jlcy5wdXNoKHNjb3JlKTtcbiAgICAgIGNvbnN0IHdDb2wgPSB3ZWlnaHRDb2x1bW5zW2pdO1xuICAgICAgY29uc3QgdyA9IHdDb2wgJiYgIXdDb2wuaXNOb25lKGkpID8gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgd0NvbC5nZXQoaSkpKSA6IGRlc2lyYWJpbGl0eS53ZWlnaHQ7XG4gICAgICB3ZWlnaHRzLnB1c2godyk7XG4gICAgfVxuXG4gICAgaWYgKHNjb3Jlcy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gTmFOO1xuXG4gICAgcmV0dXJuIGFnZ3JlZ2F0ZShzY29yZXMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtzY29yZUNvbHVtbjogcmVzdWx0Q29sdW1uLCBkZXNpcmFiaWxpdHlDb2x1bW5zfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZShzY29yZXM6IG51bWJlcltdLCB3ZWlnaHRzOiBudW1iZXJbXSwgYWdncmVnYXRpb246IFdlaWdodGVkQWdncmVnYXRpb24pOiBudW1iZXIge1xuICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uKSB7XG4gIGNhc2UgJ1N1bSc6XG4gICAgcmV0dXJuIHNjb3Jlcy5yZWR1Y2UoKHN1bSwgcywgaWR4KSA9PiBzdW0gKyBzICogd2VpZ2h0c1tpZHhdLCAwKTtcblxuICBjYXNlICdBdmVyYWdlJzpcbiAgICBjb25zdCB0b3RhbFdlaWdodCA9IHdlaWdodHMucmVkdWNlKChzdW0sIHcpID0+IHN1bSArIHcsIDApO1xuICAgIHJldHVybiBzY29yZXMucmVkdWNlKChzdW0sIHMsIGlkeCkgPT4gc3VtICsgcyAqIHdlaWdodHNbaWR4XSwgMCkgLyB0b3RhbFdlaWdodDtcblxuICBjYXNlICdQcm9kdWN0JzpcbiAgICByZXR1cm4gc2NvcmVzLnJlZHVjZSgocHJvZCwgcywgaWR4KSA9PiBwcm9kICogTWF0aC5wb3cocywgd2VpZ2h0c1tpZHhdKSwgMSk7XG5cbiAgY2FzZSAnR2VvbWVhbic6XG4gICAgY29uc3QgdG90YWxXID0gd2VpZ2h0cy5yZWR1Y2UoKHN1bSwgdykgPT4gc3VtICsgdywgMCk7XG4gICAgcmV0dXJuIHNjb3Jlcy5yZWR1Y2UoKHByb2QsIHMsIGlkeCkgPT4gcHJvZCAqIE1hdGgucG93KHMsIHdlaWdodHNbaWR4XSAvIHRvdGFsVyksIDEpO1xuXG4gIGNhc2UgJ01pbic6XG4gICAgcmV0dXJuIE1hdGgubWluKC4uLnNjb3Jlcy5tYXAoKHMsIGlkeCkgPT4gTWF0aC5wb3cocywgd2VpZ2h0c1tpZHhdKSkpO1xuXG4gIGNhc2UgJ01heCc6XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnNjb3Jlcy5tYXAoKHMsIGlkeCkgPT4gTWF0aC5wb3cocywgd2VpZ2h0c1tpZHhdKSkpO1xuXG4gIGRlZmF1bHQ6XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFnZ3JlZ2F0aW9uIHR5cGU6ICR7YWdncmVnYXRpb259YCk7XG4gIH1cbn1cbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQTZDdEMsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUF1QjtJQUNqRCxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssV0FBVyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLE1BQU0sR0FBRyxDQUFDLEVBQ1YsVUFBbUQ7SUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDO0FBQ2xILENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBUTtJQUMxQyxJQUFJLEdBQUcsQ0FBQyxZQUFZO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsSUFBSSxHQUFHLENBQUMsVUFBVTtRQUNoQixPQUFPLEVBQUMsR0FBRyxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBQyxDQUFDO0lBQy9DLE9BQU8sRUFBQyxHQUFHLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sQ0FBQyxN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RixLQUFLLEtBQUs7WUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhFLEtBQUssS0FBSztZQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEU7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQzdEO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGd1YXJkLWZvci1pbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuLy8vIEFuIGFycmF5IG9mIFt4LCB5XSBwb2ludHMgcmVwcmVzZW50aW5nIHRoZSBkZXNpcmFiaWxpdHkgbGluZVxuLy8vIFt4LCB5XSBwYWlycyBhcmUgc29ydGVkIGJ5IHggaW4gYXNjZW5kaW5nIG9yZGVyXG5leHBvcnQgdHlwZSBEZXNpcmFiaWxpdHlMaW5lID0gbnVtYmVyW11bXTtcblxuZXhwb3J0IHR5cGUgRGVzaXJhYmlsaXR5TW9kZSA9ICdmcmVlZm9ybScgfCAnZ2F1c3NpYW4nIHwgJ3NpZ21vaWQnO1xuXG5leHBvcnQgdHlwZSBNaXNzaW5nVmFsdWVDb25maWcgPVxuICB8IHsgc3RyYXRlZ3k6ICdleGNsdWRlJyB9XG4gIHwgeyBzdHJhdGVneTogJ2RlZmF1bHQnOyBzY29yZTogbnVtYmVyIH1cbiAgfCB7IHN0cmF0ZWd5OiAnc2tpcCcgfTtcblxudHlwZSBCYXNlUHJvcGVydHlEZXNpcmFiaWxpdHkgPSB7XG4gIHdlaWdodDogbnVtYmVyOyAvLy8gMC0xXG4gIHdlaWdodENvbHVtbj86IHN0cmluZzsgLy8vIG9wdGlvbmFsIGNvbHVtbiBuYW1lIHRvIHJlYWQgcGVyLXJvdyB3ZWlnaHRzIGZyb20gKDAtMSlcbiAgbWlzc2luZ1ZhbHVlcz86IE1pc3NpbmdWYWx1ZUNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgTnVtZXJpY2FsRGVzaXJhYmlsaXR5ID0gQmFzZVByb3BlcnR5RGVzaXJhYmlsaXR5ICYge1xuICBmdW5jdGlvblR5cGU6ICdudW1lcmljYWwnO1xuICBsaW5lOiBEZXNpcmFiaWxpdHlMaW5lO1xuICBtaW4/OiBudW1iZXI7IC8vLyBtaW4gdmFsdWUgb2YgdGhlIHByb3BlcnR5IChvcHRpb25hbDsgdXNlZCBmb3IgZWRpdGluZyB0aGUgbGluZSlcbiAgbWF4PzogbnVtYmVyOyAvLy8gbWF4IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSAob3B0aW9uYWw7IHVzZWQgZm9yIGVkaXRpbmcgdGhlIGxpbmUpXG5cbiAgbW9kZT86IERlc2lyYWJpbGl0eU1vZGU7XG5cbiAgLy8vIEdhdXNzaWFuIG1vZGUgcGFyYW1ldGVyc1xuICBtZWFuPzogbnVtYmVyO1xuICBzaWdtYT86IG51bWJlcjtcblxuICAvLy8gU2lnbW9pZCBtb2RlIHBhcmFtZXRlcnNcbiAgeDA/OiBudW1iZXI7XG4gIGs/OiBudW1iZXI7XG5cbiAgZnJlZWZvcm1MaW5lPzogRGVzaXJhYmlsaXR5TGluZTtcbn1cblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcmljYWxEZXNpcmFiaWxpdHkgPSBCYXNlUHJvcGVydHlEZXNpcmFiaWxpdHkgJiB7XG4gIGZ1bmN0aW9uVHlwZTogJ2NhdGVnb3JpY2FsJztcbiAgY2F0ZWdvcmllczogeyBuYW1lOiBzdHJpbmc7IGRlc2lyYWJpbGl0eTogbnVtYmVyIH1bXTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvcGVydHlEZXNpcmFiaWxpdHkgPSBOdW1lcmljYWxEZXNpcmFiaWxpdHkgfCBDYXRlZ29yaWNhbERlc2lyYWJpbGl0eTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY2FsKHA6IFByb3BlcnR5RGVzaXJhYmlsaXR5KTogcCBpcyBOdW1lcmljYWxEZXNpcmFiaWxpdHkge1xuICByZXR1cm4gcC5mdW5jdGlvblR5cGUgPT09ICdudW1lcmljYWwnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdE51bWVyaWNhbCh3ZWlnaHQgPSAxLCBtaW4gPSAwLCBtYXggPSAxKTogTnVtZXJpY2FsRGVzaXJhYmlsaXR5IHtcbiAgcmV0dXJuIHtmdW5jdGlvblR5cGU6ICdudW1lcmljYWwnLCB3ZWlnaHQsIG1vZGU6ICdmcmVlZm9ybScsIG1pbiwgbWF4LCBsaW5lOiBbXX07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0Q2F0ZWdvcmljYWwoXG4gIHdlaWdodCA9IDEsXG4gIGNhdGVnb3JpZXM/OiB7bmFtZTogc3RyaW5nOyBkZXNpcmFiaWxpdHk6IG51bWJlcn1bXSxcbik6IENhdGVnb3JpY2FsRGVzaXJhYmlsaXR5IHtcbiAgcmV0dXJuIHtmdW5jdGlvblR5cGU6ICdjYXRlZ29yaWNhbCcsIHdlaWdodCwgY2F0ZWdvcmllczogY2F0ZWdvcmllcyA/PyBbe25hbWU6ICdDYXRlZ29yeSAxJywgZGVzaXJhYmlsaXR5OiAxfV19O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWlncmF0ZURlc2lyYWJpbGl0eShyYXc6IGFueSk6IFByb3BlcnR5RGVzaXJhYmlsaXR5IHtcbiAgaWYgKHJhdy5mdW5jdGlvblR5cGUpXG4gICAgcmV0dXJuIHJhdztcbiAgaWYgKHJhdy5jYXRlZ29yaWVzKVxuICAgIHJldHVybiB7Li4ucmF3LCBmdW5jdGlvblR5cGU6ICdjYXRlZ29yaWNhbCd9O1xuICByZXR1cm4gey4uLnJhdywgZnVuY3Rpb25UeXBlOiAnbnVtZXJpY2FsJ307XG59XG5cbmV4cG9ydCBjb25zdCBERVNJUkFCSUxJVFlfUFJPRklMRV9UWVBFID0gJ01QTyBEZXNpcmFiaWxpdHkgUHJvZmlsZSc7XG5leHBvcnQgY29uc3QgQ1VSUkVOVF9NUE9fVkVSU0lPTiA9IDE7XG5cbi8vLyBBIG1hcCBvZiBkZXNpcmFiaWxpdHkgbGluZXMgd2l0aCB0aGVpciB3ZWlnaHRzXG5leHBvcnQgdHlwZSBEZXNpcmFiaWxpdHlQcm9maWxlID0ge1xuICB0eXBlOiB0eXBlb2YgREVTSVJBQklMSVRZX1BST0ZJTEVfVFlQRTtcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhZ2dyZWdhdGlvbj86IFdlaWdodGVkQWdncmVnYXRpb247XG4gIHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEZXNpcmFiaWxpdHkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVzaXJhYmlsaXR5UHJvZmlsZSh4OiBhbnkpOiB4IGlzIERlc2lyYWJpbGl0eVByb2ZpbGUge1xuICByZXR1cm4geCAhPSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4LnR5cGUgPT09IERFU0lSQUJJTElUWV9QUk9GSUxFX1RZUEU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWdyYXRlUHJvZmlsZShyYXc6IERlc2lyYWJpbGl0eVByb2ZpbGUpOiBEZXNpcmFiaWxpdHlQcm9maWxlIHtcbiAgY29uc3QgdmVyc2lvbiA9IHJhdy52ZXJzaW9uID8/IDA7XG4gIGlmICh2ZXJzaW9uID49IENVUlJFTlRfTVBPX1ZFUlNJT04pXG4gICAgcmV0dXJuIHJhdztcblxuICAvLyB2MCDihpIgdjE6IGJhY2tmaWxsIGZ1bmN0aW9uVHlwZSBvbiBwcm9wZXJ0aWVzXG4gIGlmICh2ZXJzaW9uIDwgMSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHJhdy5wcm9wZXJ0aWVzKVxuICAgICAgcmF3LnByb3BlcnRpZXNba2V5XSA9IG1pZ3JhdGVEZXNpcmFiaWxpdHkocmF3LnByb3BlcnRpZXNba2V5XSk7XG4gICAgcmF3LnZlcnNpb24gPSBDVVJSRU5UX01QT19WRVJTSU9OO1xuICB9XG5cbiAgcmV0dXJuIHJhdztcbn1cblxuZXhwb3J0IGNvbnN0IFdFSUdIVEVEX0FHR1JFR0FUSU9OUyA9IFsnQXZlcmFnZScsICdTdW0nLCAnUHJvZHVjdCcsICdHZW9tZWFuJywgJ01pbicsICdNYXgnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBXRUlHSFRFRF9BR0dSRUdBVElPTlNfTElTVDogV2VpZ2h0ZWRBZ2dyZWdhdGlvbltdID0gWy4uLldFSUdIVEVEX0FHR1JFR0FUSU9OU107XG5leHBvcnQgdHlwZSBXZWlnaHRlZEFnZ3JlZ2F0aW9uID0gdHlwZW9mIFdFSUdIVEVEX0FHR1JFR0FUSU9OU1tudW1iZXJdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT046IFdlaWdodGVkQWdncmVnYXRpb24gPSAnQXZlcmFnZSc7XG5cbi8vLyBDYWxjdWxhdGVzIHRoZSBkZXNpcmFiaWxpdHkgc2NvcmUgZm9yIGEgZ2l2ZW4geCB2YWx1ZVxuLy8vIFJldHVybnMgMCBpZiB4IGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHRoZSBkZXNpcmFiaWxpdHkgbGluZVxuLy8vIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgeSB2YWx1ZSBvZiB0aGUgZGVzaXJhYmlsaXR5IGxpbmUgYXQgeFxuZXhwb3J0IGZ1bmN0aW9uIGRlc2lyYWJpbGl0eVNjb3JlKHg6IG51bWJlciwgZGVzaXJhYmlsaXR5TGluZTogRGVzaXJhYmlsaXR5TGluZSk6IG51bWJlciB7XG4gIC8vIElmIHRoZSBsaW5lIGlzIGVtcHR5IG9yIHggaXMgb3V0c2lkZSB0aGUgcmFuZ2UsIHJldHVybiAwXG4gIGlmIChkZXNpcmFiaWxpdHlMaW5lLmxlbmd0aCA9PT0gMCB8fCB4IDwgZGVzaXJhYmlsaXR5TGluZVswXVswXSB8fCB4ID4gZGVzaXJhYmlsaXR5TGluZVtkZXNpcmFiaWxpdHlMaW5lLmxlbmd0aCAtIDFdWzBdKVxuICAgIHJldHVybiAwO1xuXG4gIC8vIEZpbmQgdGhlIHR3byBwb2ludHMgdGhhdCB4IGxpZXMgYmV0d2VlblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc2lyYWJpbGl0eUxpbmUubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY29uc3QgW3gxLCB5MV0gPSBkZXNpcmFiaWxpdHlMaW5lW2ldO1xuICAgIGNvbnN0IFt4MiwgeTJdID0gZGVzaXJhYmlsaXR5TGluZVtpICsgMV07XG5cbiAgICBpZiAoeCA+PSB4MSAmJiB4IDw9IHgyKSB7XG4gICAgICAvLyBMaW5lYXIgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzXG4gICAgICBpZiAoeDEgPT09IHgyKSByZXR1cm4geTE7XG4gICAgICBjb25zdCBzbG9wZSA9ICh5MiAtIHkxKSAvICh4MiAtIHgxKTtcbiAgICAgIHJldHVybiB5MSArIHNsb3BlICogKHggLSB4MSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2hvdWxkIG5vdCBoYXBwZW4gaWYgeCBpcyB3aXRoaW4gYm91bmRzLCBidXQgcmV0dXJuIDAgYXMgZmFsbGJhY2tcbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXRlZ29yaWNhbERlc2lyYWJpbGl0eVNjb3JlKFxuICB2YWx1ZTogc3RyaW5nLFxuICBwcm9wOiBDYXRlZ29yaWNhbERlc2lyYWJpbGl0eSxcbik6IG51bWJlciB8IG51bGwge1xuICBjb25zdCBmb3VuZCA9IHByb3AuY2F0ZWdvcmllcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IHZhbHVlKTtcbiAgcmV0dXJuIGZvdW5kPy5kZXNpcmFiaWxpdHkgPz8gbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgTXBvUmVzdWx0ID0ge1xuICBzY29yZUNvbHVtbjogREcuQ29sdW1uO1xuICBkZXNpcmFiaWxpdHlDb2x1bW5zPzogREcuQ29sdW1uW107XG59XG5cbi8qKiBDYWxjdWxhdGVzIHRoZSBtdWx0aSBwYXJhbWV0ZXIgb3B0aW1pemF0aW9uIHNjb3JlLCAwLTEwMCwgMTAwIGlzIHRoZSBtYXhpbXVtICovXG5leHBvcnQgZnVuY3Rpb24gbXBvKFxuICBkYXRhRnJhbWU6IERHLkRhdGFGcmFtZSxcbiAgY29sdW1uczogREcuQ29sdW1uW10sXG4gIHByb2ZpbGVOYW1lOiBzdHJpbmcsXG4gIGFnZ3JlZ2F0aW9uOiBXZWlnaHRlZEFnZ3JlZ2F0aW9uLFxuICBpc0RpZmZlcmVudDogYm9vbGVhbiA9IGZhbHNlLFxuICBjcmVhdGVEZXNpcmFiaWxpdHlDb2x1bW5zOiBib29sZWFuID0gZmFsc2UsXG4pOiBNcG9SZXN1bHQge1xuICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2x1bW5zIHByb3ZpZGVkIGZvciBNUE8gY2FsY3VsYXRpb24uJyk7XG5cbiAgY29uc3Qgcm93Q291bnQgPSBjb2x1bW5zWzBdLmxlbmd0aDtcbiAgY29uc3QgcmVzdWx0Q29sdW1uID0gaXNEaWZmZXJlbnQgP1xuICAgIERHLkNvbHVtbi5mbG9hdChwcm9maWxlTmFtZSwgcm93Q291bnQpIDpcbiAgICAoZGF0YUZyYW1lLmNvbChwcm9maWxlTmFtZSkgPz8gREcuQ29sdW1uLmZsb2F0KHByb2ZpbGVOYW1lLCByb3dDb3VudCkpO1xuXG4gIGNvbnN0IGRlc2lyYWJpbGl0eVRlbXBsYXRlczogUHJvcGVydHlEZXNpcmFiaWxpdHlbXSA9IFtdO1xuICBjb25zdCB3ZWlnaHRDb2x1bW5zOiAoREcuQ29sdW1uIHwgbnVsbClbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgY29uc3QgdGFnID0gY29sdW1uLmdldFRhZygnZGVzaXJhYmlsaXR5VGVtcGxhdGUnKTtcbiAgICBjb25zdCBkID0gbWlncmF0ZURlc2lyYWJpbGl0eShKU09OLnBhcnNlKHRhZykpO1xuICAgIGRlc2lyYWJpbGl0eVRlbXBsYXRlcy5wdXNoKGQpO1xuICAgIHdlaWdodENvbHVtbnMucHVzaChkLndlaWdodENvbHVtbiA/IGRhdGFGcmFtZS5jb2woZC53ZWlnaHRDb2x1bW4pID8/IG51bGwgOiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IGRlc2lyYWJpbGl0eUNvbHVtbnMgPSBjcmVhdGVEZXNpcmFiaWxpdHlDb2x1bW5zID9cbiAgICBjb2x1bW5zLm1hcCgoY29sKSA9PiBERy5Db2x1bW4uZmxvYXQoYCR7Y29sLm5hbWV9ICgke3Byb2ZpbGVOYW1lfSBkZXNpcmFiaWxpdHkpYCwgcm93Q291bnQpKSA6IHVuZGVmaW5lZDtcblxuICByZXN1bHRDb2x1bW4uaW5pdCgoaSkgPT4ge1xuICAgIGNvbnN0IHNjb3JlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCB3ZWlnaHRzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zLmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBkZXNpcmFiaWxpdHkgPSBkZXNpcmFiaWxpdHlUZW1wbGF0ZXNbal07XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbHVtbnNbal0uZ2V0KGkpO1xuXG4gICAgICBsZXQgc2NvcmU6IG51bWJlciB8IG51bGw7XG5cbiAgICAgIGlmIChjb2x1bW5zW2pdLmlzTm9uZShpKSkge1xuICAgICAgICBjb25zdCBtdiA9IGRlc2lyYWJpbGl0eS5taXNzaW5nVmFsdWVzO1xuICAgICAgICBpZiAoIW12IHx8IG12LnN0cmF0ZWd5ID09PSAnZXhjbHVkZScpXG4gICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKG12LnN0cmF0ZWd5ID09PSAnc2tpcCcpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIHNjb3JlID0gbXYuc2NvcmU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2NvcmUgPSBpc051bWVyaWNhbChkZXNpcmFiaWxpdHkpID9cbiAgICAgICAgICBkZXNpcmFiaWxpdHlTY29yZSh2YWx1ZSwgZGVzaXJhYmlsaXR5LmxpbmUpIDpcbiAgICAgICAgICBjYXRlZ29yaWNhbERlc2lyYWJpbGl0eVNjb3JlKFN0cmluZyh2YWx1ZSksIGRlc2lyYWJpbGl0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzY29yZSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIE5hTjtcblxuICAgICAgaWYgKGNyZWF0ZURlc2lyYWJpbGl0eUNvbHVtbnMpXG4gICAgICAgIGRlc2lyYWJpbGl0eUNvbHVtbnMhW2pdLnNldChpLCBzY29yZSwgZmFsc2UpO1xuXG4gICAgICBzY29yZXMucHVzaChzY29yZSk7XG4gICAgICBjb25zdCB3Q29sID0gd2VpZ2h0Q29sdW1uc1tqXTtcbiAgICAgIGNvbnN0IHcgPSB3Q29sICYmICF3Q29sLmlzTm9uZShpKSA/IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHdDb2wuZ2V0KGkpKSkgOiBkZXNpcmFiaWxpdHkud2VpZ2h0O1xuICAgICAgd2VpZ2h0cy5wdXNoKHcpO1xuICAgIH1cblxuICAgIGlmIChzY29yZXMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIE5hTjtcblxuICAgIHJldHVybiBhZ2dyZWdhdGUoc2NvcmVzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbik7XG4gIH0pO1xuXG4gIHJldHVybiB7c2NvcmVDb2x1bW46IHJlc3VsdENvbHVtbiwgZGVzaXJhYmlsaXR5Q29sdW1uc307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZ2dyZWdhdGUoc2NvcmVzOiBudW1iZXJbXSwgd2VpZ2h0czogbnVtYmVyW10sIGFnZ3JlZ2F0aW9uOiBXZWlnaHRlZEFnZ3JlZ2F0aW9uKTogbnVtYmVyIHtcbiAgc3dpdGNoIChhZ2dyZWdhdGlvbikge1xuICBjYXNlICdTdW0nOlxuICAgIHJldHVybiBzY29yZXMucmVkdWNlKChzdW0sIHMsIGlkeCkgPT4gc3VtICsgcyAqIHdlaWdodHNbaWR4XSwgMCk7XG5cbiAgY2FzZSAnQXZlcmFnZSc6XG4gICAgY29uc3QgdG90YWxXZWlnaHQgPSB3ZWlnaHRzLnJlZHVjZSgoc3VtLCB3KSA9PiBzdW0gKyB3LCAwKTtcbiAgICByZXR1cm4gc2NvcmVzLnJlZHVjZSgoc3VtLCBzLCBpZHgpID0+IHN1bSArIHMgKiB3ZWlnaHRzW2lkeF0sIDApIC8gdG90YWxXZWlnaHQ7XG5cbiAgY2FzZSAnUHJvZHVjdCc6XG4gICAgcmV0dXJuIHNjb3Jlcy5yZWR1Y2UoKHByb2QsIHMsIGlkeCkgPT4gcHJvZCAqIE1hdGgucG93KHMsIHdlaWdodHNbaWR4XSksIDEpO1xuXG4gIGNhc2UgJ0dlb21lYW4nOlxuICAgIGNvbnN0IHRvdGFsVyA9IHdlaWdodHMucmVkdWNlKChzdW0sIHcpID0+IHN1bSArIHcsIDApO1xuICAgIHJldHVybiBzY29yZXMucmVkdWNlKChwcm9kLCBzLCBpZHgpID0+IHByb2QgKiBNYXRoLnBvdyhzLCB3ZWlnaHRzW2lkeF0gLyB0b3RhbFcpLCAxKTtcblxuICBjYXNlICdNaW4nOlxuICAgIHJldHVybiBNYXRoLm1pbiguLi5zY29yZXMubWFwKChzLCBpZHgpID0+IE1hdGgucG93KHMsIHdlaWdodHNbaWR4XSkpKTtcblxuICBjYXNlICdNYXgnOlxuICAgIHJldHVybiBNYXRoLm1heCguLi5zY29yZXMubWFwKChzLCBpZHgpID0+IE1hdGgucG93KHMsIHdlaWdodHNbaWR4XSkpKTtcblxuICBkZWZhdWx0OlxuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhZ2dyZWdhdGlvbiB0eXBlOiAke2FnZ3JlZ2F0aW9ufWApO1xuICB9XG59XG4iXX0=